# Spécification : Amélioration de l'interface d'affichage des résultats TIM

## 1. Vue d'ensemble

L'interface actuelle affiche les résultats d'analyse de manière très basique et textuelle. Cette spécification vise à transformer cette interface en un outil professionnel et ergonomique pour les codeurs médicaux, avec une visualisation claire des codes, des preuves et des documents sources.

## 2. Analyse de l'interface actuelle (basée sur l'image fournie)

### 2.1 Ce qui existe
- Affichage du type de document et temps de traitement (10.8s)
- Informations démographiques du séjour (sexe M, âge 58 ans, dates, poids 72kg, taille 178cm, IMC 22.724)
- Alertes de codage (CIM-10 DAS M62.64 absent du dictionnaire)
- Diagnostic principal K80.0 avec libellé et badge "Sévère"

### 2.2 Problèmes identifiés
- **Présentation textuelle** : Tout est affiché en texte brut, peu visuel
- **Pas de vue d'ensemble** : Impossible de voir tous les codes (DP, DR, DAS, CCAM) en un coup d'œil
- **Pas de preuves visibles** : Aucun lien vers les documents sources qui justifient les codes
- **Navigation inexistante** : Impossible de naviguer entre codes et documents
- **Pas de contexte clinique** : Les faits cliniques extraits ne sont pas affichés
- **Alertes peu visibles** : Les alertes de codage sont noyées dans le texte
- **Pas d'actions possibles** : Pas de boutons pour corriger, valider ou commenter

## 3. Exigences fonctionnelles

### 3.1 Vue d'ensemble du séjour

**User Story** : En tant que codeur médical, je veux voir toutes les informations essentielles du séjour en un coup d'œil pour comprendre rapidement le contexte.

**Critères d'acceptation :**
- Afficher une carte récapitulative en haut de page
- Inclure : identifiant séjour, âge, sexe, IMC, dates entrée/sortie, durée, mode d'entrée, spécialité, temps de traitement
- Utiliser des icônes pour rendre l'information plus visuelle
- Afficher un indicateur de complétude du codage
- Mettre en évidence les alertes critiques avec un badge rouge

### 3.2 Affichage structuré des codes proposés

**User Story** : En tant que codeur médical, je veux voir tous les codes proposés (DP, DR, DAS, CCAM) organisés de manière claire pour valider rapidement le codage.

**Critères d'acceptation :**
- Créer 4 sections distinctes : DP, DR, DAS, CCAM
- Pour chaque code afficher : code, libellé, badge de confiance coloré, nombre de preuves, badge de sévérité, boutons d'action
- Utiliser des cartes visuelles avec bordure colorée selon le type
- Permettre de replier/déplier chaque section
- Afficher les alertes de codage directement sur les codes concernés


### 3.3 Visualisation des preuves et documents sources

**User Story** : En tant que codeur médical, je veux voir les preuves qui justifient chaque code pour valider la pertinence du codage.

**Critères d'acceptation :**
- Créer un panneau "Preuves" qui s'affiche au clic sur "Voir preuves"
- Pour chaque preuve afficher : type de document source, extrait de texte pertinent (±100 caractères), position, bouton "Voir dans le document"
- Mettre en évidence le texte extrait avec un fond jaune
- Permettre de naviguer entre les preuves avec des flèches ←/→
- Afficher un score de qualité de la preuve (directe, indirecte, inférée)

### 3.4 Affichage des documents sources

**User Story** : En tant que codeur médical, je veux consulter les documents sources complets pour vérifier le contexte des preuves.

**Critères d'acceptation :**
- Créer un panneau "Documents" qui liste tous les documents du séjour
- Pour chaque document afficher : type, date de création, auteur, badge avec nombre de preuves extraites
- Permettre d'ouvrir un document dans un panneau dédié
- Dans le document ouvert : mettre en évidence les zones citées comme preuves avec code couleur par type (DP=bleu, DR=vert, DAS=orange, CCAM=violet)
- Afficher des tooltips au survol des zones mises en évidence
- Permettre de faire défiler automatiquement vers une preuve spécifique

### 3.5 Affichage des faits cliniques extraits

**User Story** : En tant que codeur médical, je veux voir les faits cliniques extraits par le système pour comprendre son raisonnement.

**Critères d'acceptation :**
- Créer un endpoint API `/stays/{stay_id}/clinical-facts` qui retourne les faits cliniques extraits organisés par catégorie avec preuves et scores de confiance
- Créer une section "Faits cliniques" dans l'interface
- Afficher les faits organisés par catégorie avec : texte du fait, catégorie (avec icône), score de confiance, lien vers la preuve
- Permettre de filtrer par catégorie
- Mettre en évidence les faits utilisés pour le codage

### 3.6 Gestion des alertes de codage

**User Story** : En tant que codeur médical, je veux voir clairement les alertes de codage pour corriger les problèmes rapidement.

**Critères d'acceptation :**
- Créer une section "Alertes" en haut de page
- Pour chaque alerte afficher : type d'alerte, code concerné, description du problème, suggestion de correction, bouton "Corriger maintenant"
- Utiliser un code couleur : Rouge (alerte critique), Orange (avertissement), Jaune (information)
- Afficher un compteur d'alertes dans l'en-tête
- Permettre de masquer les alertes résolues

### 3.7 Actions de correction et validation

**User Story** : En tant que codeur médical, je veux pouvoir corriger, commenter et valider les codes directement depuis l'interface.

**Critères d'acceptation :**
- Pour chaque code, afficher des boutons d'action : "Corriger", "Commenter", "Valider"
- Le formulaire de correction doit permettre de : saisir un nouveau code, saisir un nouveau libellé (auto-complété), ajouter un commentaire, enregistrer avec horodatage
- Afficher les corrections précédentes avec : code original → code corrigé, utilisateur et date, commentaire
- Ajouter des boutons de validation globale : "Valider le dossier" (vert), "Rejeter le dossier" (rouge), "Marquer à revoir" (orange)

### 3.8 Vue multi-panneaux (layout amélioré)

**User Story** : En tant que codeur médical, je veux voir simultanément les codes, les preuves et les documents pour travailler efficacement.

**Critères d'acceptation :**
- Créer une disposition en 3 colonnes : gauche (30% - codes et alertes), centrale (40% - documents sources), droite (30% - détails code, preuves, faits cliniques)
- Rendre les colonnes redimensionnables avec des séparateurs draggables
- Permettre de masquer/afficher chaque colonne
- Sauvegarder la disposition dans le localStorage
- Sur mobile/tablette, passer en mode onglets

### 3.9 Recherche et filtres

**User Story** : En tant que codeur médical, je veux pouvoir rechercher et filtrer les informations pour trouver rapidement ce que je cherche.

**Critères d'acceptation :**
- Ajouter une barre de recherche globale en haut de page
- Permettre de rechercher dans : codes (code ou libellé), documents sources, faits cliniques
- Mettre en évidence les résultats de recherche
- Ajouter des filtres pour : type de code, niveau de confiance, présence d'alertes, type de document
- Afficher le nombre de résultats trouvés

### 3.10 Export et impression

**User Story** : En tant que codeur médical, je veux pouvoir exporter et imprimer les résultats pour archivage ou partage.

**Critères d'acceptation :**
- Ajouter un bouton "Exporter" avec options : PDF (vue complète), JSON (données brutes), Excel (tableau des codes)
- Optimiser la mise en page pour l'impression : masquer éléments interactifs, ajuster couleurs pour N&B, ajouter sauts de page
- Inclure dans l'export : en-tête avec infos séjour, tous les codes avec preuves, alertes, corrections, pied de page avec date et utilisateur

## 4. Exigences non fonctionnelles

### 4.1 Performance
- Temps de chargement initial < 2 secondes
- Navigation entre codes instantanée (<100ms)
- Rendu fluide même avec 50+ documents
- Lazy loading des documents (chargement à la demande)

### 4.2 Ergonomie
- Interface intuitive, pas de formation nécessaire
- Raccourcis clavier pour les actions fréquentes
- Feedback visuel immédiat sur toutes les actions
- Messages d'erreur clairs et constructifs

### 4.3 Accessibilité
- Navigation au clavier complète
- Support des lecteurs d'écran (ARIA labels)
- Contraste suffisant (WCAG AA minimum)
- Taille de police ajustable

### 4.4 Compatibilité
- Support des navigateurs modernes (Chrome, Firefox, Safari, Edge)
- Interface responsive (desktop, tablette, mobile)
- Pas de dépendances externes lourdes

### 4.5 Maintenabilité
- Code JavaScript modulaire et documenté
- Séparation claire HTML/CSS/JS
- Composants réutilisables
- Tests unitaires pour les fonctions critiques

## 5. Contraintes techniques

### 5.1 Technologies imposées
- HTML5, CSS3, JavaScript vanilla (pas de framework lourd type React/Vue)
- API REST FastAPI existante
- Base de données SQLite existante
- Pas de modification du pipeline de traitement

### 5.2 Compatibilité avec l'existant
- Réutiliser les endpoints API existants autant que possible
- Ne pas casser les fonctionnalités actuelles
- Maintenir la compatibilité avec les données existantes
- Respecter le schéma de base de données actuel

### 5.3 Sécurité
- Pas d'exposition de données sensibles dans le HTML
- Validation côté serveur de toutes les entrées
- Respect des règles RGPD pour les données médicales
- Chiffrement des exports si nécessaire

## 6. Hors périmètre

Les éléments suivants ne sont PAS inclus dans cette spécification :
- Modification du pipeline de traitement (segmentation, extraction, codage)
- Ajout de nouveaux algorithmes de codage
- Modification du schéma de base de données
- Authentification et gestion des utilisateurs
- Intégration avec des systèmes externes (DPI, T2A, etc.)
- Traitement de nouveaux types de documents

## 7. Critères de succès

Le projet sera considéré comme réussi si :
- Tous les critères d'acceptation sont satisfaits
- L'interface permet de visualiser un séjour complet en moins de 30 secondes
- Le temps de validation d'un code est réduit de 50% par rapport à l'interface actuelle
- Les codeurs peuvent naviguer entre codes et preuves sans ouvrir de modals
- Aucune régression sur les fonctionnalités existantes
- Les tests d'interface passent à 100%
