324 lines
8.4 KiB
Markdown
324 lines
8.4 KiB
Markdown
# Interface TIM - Documentation Technique
|
|
|
|
## Vue d'ensemble
|
|
|
|
L'interface TIM (Traitement Interactif Médical) est une interface web moderne multi-panneaux pour la révision et la validation du codage PMSI. Elle permet aux codeurs médicaux de visualiser les codes proposés, leurs justifications, et les documents sources dans une interface intuitive et efficace.
|
|
|
|
## Architecture
|
|
|
|
### Structure des fichiers
|
|
|
|
```
|
|
src/pipeline_mco_pmsi/api/static/
|
|
├── index.html # Page principale
|
|
├── css/
|
|
│ ├── main.css # Styles principaux
|
|
│ ├── details.css # Styles du panneau détails
|
|
│ ├── documents.css # Styles du panneau documents
|
|
│ ├── keyboard.css # Styles des raccourcis clavier
|
|
│ └── accessibility.css # Améliorations d'accessibilité
|
|
├── js/
|
|
│ ├── utils/
|
|
│ │ ├── state-manager.js # Gestion d'état centralisée
|
|
│ │ ├── api-client.js # Client API
|
|
│ │ ├── event-emitter.js # Système d'événements
|
|
│ │ ├── error-handler.js # Gestion d'erreurs
|
|
│ │ ├── browser-detector.js # Détection navigateur
|
|
│ │ └── performance-optimizer.js # Optimisations
|
|
│ └── components/
|
|
│ ├── panel-manager.js # Gestionnaire de panneaux
|
|
│ ├── patient-header.js # En-tête patient
|
|
│ ├── codes-panel.js # Panneau des codes
|
|
│ ├── documents-panel.js # Panneau des documents
|
|
│ ├── details-panel.js # Panneau des détails
|
|
│ ├── highlight-manager.js # Mise en évidence
|
|
│ ├── comparison-mode.js # Mode comparaison
|
|
│ ├── keyboard-manager.js # Raccourcis clavier
|
|
│ └── pdf-exporter.js # Export PDF
|
|
```
|
|
|
|
### Composants principaux
|
|
|
|
#### StateManager
|
|
Gestion d'état centralisée avec persistance dans localStorage.
|
|
|
|
**Responsabilités:**
|
|
- Stocker l'état global (séjour, code sélectionné, document actif, filtres)
|
|
- Notifier les composants des changements via EventEmitter
|
|
- Persister l'état dans localStorage
|
|
- Maintenir la synchronisation entre panneaux
|
|
|
|
#### APIClient
|
|
Client API pour les communications avec le backend FastAPI.
|
|
|
|
**Responsabilités:**
|
|
- Encapsuler toutes les communications avec l'API
|
|
- Gérer les erreurs réseau avec retry et backoff exponentiel
|
|
- Gérer le cache des documents dans localStorage
|
|
- Fournir des méthodes pour tous les endpoints
|
|
|
|
#### PanelManager
|
|
Gestionnaire du layout multi-panneaux avec redimensionnement.
|
|
|
|
**Responsabilités:**
|
|
- Gérer le layout CSS Grid 3 colonnes
|
|
- Implémenter le redimensionnement par glisser-déposer
|
|
- Sauvegarder/restaurer les dimensions dans localStorage
|
|
- Gérer le mode responsive
|
|
|
|
#### CodesPanel
|
|
Panneau d'affichage des codes proposés.
|
|
|
|
**Responsabilités:**
|
|
- Afficher les codes (DP, DR, DAS, CCAM)
|
|
- Afficher les badges de confiance avec couleurs
|
|
- Gérer la sélection de code
|
|
- Implémenter les filtres
|
|
|
|
#### DocumentsPanel
|
|
Panneau d'affichage des documents sources.
|
|
|
|
**Responsabilités:**
|
|
- Système d'onglets pour les documents
|
|
- Affichage du contenu avec mise en évidence
|
|
- Recherche textuelle
|
|
- Navigation entre occurrences
|
|
|
|
#### DetailsPanel
|
|
Panneau d'affichage des détails d'un code.
|
|
|
|
**Responsabilités:**
|
|
- Afficher les informations du code sélectionné
|
|
- Afficher toutes les preuves avec liens vers documents
|
|
- Afficher les faits cliniques liés
|
|
- Afficher le raisonnement du système
|
|
- Gérer les boutons d'action
|
|
|
|
## Fonctionnalités
|
|
|
|
### Layout multi-panneaux
|
|
- 3 panneaux: codes, documents, détails
|
|
- Redimensionnement par glisser-déposer
|
|
- Persistance des dimensions
|
|
- Mode responsive (< 768px)
|
|
|
|
### Navigation et synchronisation
|
|
- Cliquer sur un code affiche ses détails et met en évidence ses preuves
|
|
- Cliquer sur une preuve ouvre le document et scroll vers la zone
|
|
- Cliquer sur une zone mise en évidence sélectionne le code
|
|
- Synchronisation maintenue lors de toute navigation
|
|
|
|
### Filtres et recherche
|
|
- Filtres par type de code, niveau de confiance, sans preuves
|
|
- Recherche textuelle dans les documents
|
|
- Navigation entre occurrences
|
|
- Persistance des filtres
|
|
|
|
### Mode comparaison
|
|
- Affichage côte à côte des codes proposés et corrigés
|
|
- Coloration (rouge pour différences, vert pour identiques)
|
|
- Affichage des commentaires de correction
|
|
|
|
### Raccourcis clavier
|
|
- ↑/↓: Navigation entre codes
|
|
- ←/→: Navigation entre preuves
|
|
- Ctrl+Enter: Valider le séjour
|
|
- Ctrl+E: Ouvrir le modal de correction
|
|
- Ctrl+F: Activer la recherche
|
|
- ?: Afficher l'aide des raccourcis
|
|
|
|
### Export PDF
|
|
- Génération PDF avec jsPDF
|
|
- Inclut codes, preuves, documents, corrections
|
|
- Nommage: `codage_{stay_id}_{date}.pdf`
|
|
- Téléchargement automatique
|
|
|
|
### Accessibilité
|
|
- Contraste WCAG 2.1 AA
|
|
- Focus visible pour tous les éléments
|
|
- Labels ARIA
|
|
- Navigation clavier complète
|
|
- Taille de police minimale 14px
|
|
|
|
### Sécurité
|
|
- Validation entrées utilisateur
|
|
- Échappement HTML
|
|
- CSP headers
|
|
- Rate limiting (10 req/min)
|
|
- Chiffrement données sensibles
|
|
|
|
### Performance
|
|
- Lazy loading des documents
|
|
- Debounce sur recherche (300ms)
|
|
- Virtual scrolling pour grandes listes
|
|
- Cache des documents
|
|
- Minification CSS/JS
|
|
|
|
## API Endpoints
|
|
|
|
### GET /stays/{stay_id}/coding-proposal
|
|
Récupère la proposition de codage d'un séjour.
|
|
|
|
**Réponse:**
|
|
```json
|
|
{
|
|
"stay_id": "string",
|
|
"dp": { "code": "string", "label": "string", "confidence": 0.95, "evidence": [...] },
|
|
"dr": { "code": "string", "label": "string", "confidence": 0.90, "evidence": [...] },
|
|
"das": [...],
|
|
"ccam": [...],
|
|
"reasoning": "string",
|
|
"confidence_scores": {}
|
|
}
|
|
```
|
|
|
|
### GET /stays/{stay_id}/clinical-facts
|
|
Récupère les faits cliniques d'un séjour.
|
|
|
|
**Réponse:**
|
|
```json
|
|
{
|
|
"stay_id": "string",
|
|
"facts": [
|
|
{
|
|
"text": "string",
|
|
"category": "symptoms|diagnoses|treatments|procedures|history|allergies|medications|lab_results",
|
|
"document_id": "string",
|
|
"span": [start, end],
|
|
"confidence": 0.85,
|
|
"linked_codes": ["code1", "code2"]
|
|
}
|
|
]
|
|
}
|
|
```
|
|
|
|
### POST /stays/{stay_id}/correct-code
|
|
Enregistre une correction de code.
|
|
|
|
**Requête:**
|
|
```json
|
|
{
|
|
"stay_id": "string",
|
|
"original_code": "string",
|
|
"corrected_code": "string",
|
|
"corrected_label": "string",
|
|
"comment": "string"
|
|
}
|
|
```
|
|
|
|
### POST /stays/{stay_id}/validate
|
|
Valide un séjour.
|
|
|
|
**Requête:**
|
|
```json
|
|
{
|
|
"stay_id": "string",
|
|
"validation_status": "accepted|rejected|needs_review",
|
|
"comment": "string"
|
|
}
|
|
```
|
|
|
|
### POST /stays/{stay_id}/export-pdf
|
|
Exporte le codage en PDF.
|
|
|
|
**Requête:**
|
|
```json
|
|
{
|
|
"include_documents": true,
|
|
"include_evidence": true,
|
|
"include_corrections": true
|
|
}
|
|
```
|
|
|
|
## Installation
|
|
|
|
### Prérequis
|
|
- Python 3.9+
|
|
- FastAPI
|
|
- SQLAlchemy
|
|
- Navigateur moderne (Chrome 90+, Firefox 88+, Safari 14+, Edge 90+)
|
|
|
|
### Démarrage
|
|
```bash
|
|
# Installer les dépendances
|
|
pip install -r requirements.txt
|
|
|
|
# Démarrer le serveur
|
|
uvicorn pipeline_mco_pmsi.api.tim_api:app --reload
|
|
|
|
# Accéder à l'interface
|
|
http://localhost:8000
|
|
```
|
|
|
|
## Configuration
|
|
|
|
### Variables d'environnement
|
|
```bash
|
|
DATABASE_URL=postgresql://user:pass@localhost/db
|
|
ENCRYPTION_KEY=your-encryption-key
|
|
LOG_LEVEL=INFO
|
|
```
|
|
|
|
### Configuration CORS
|
|
Modifier `allow_origins` dans `tim_api.py` pour spécifier les origines autorisées en production.
|
|
|
|
## Tests
|
|
|
|
### Tests unitaires
|
|
```bash
|
|
pytest tests/test_tim_api.py
|
|
```
|
|
|
|
### Tests d'intégration
|
|
```bash
|
|
pytest tests/test_tim_integration.py
|
|
```
|
|
|
|
### Couverture de code
|
|
```bash
|
|
pytest --cov=pipeline_mco_pmsi.api --cov-report=html
|
|
```
|
|
|
|
## Déploiement
|
|
|
|
### Production
|
|
1. Configurer les variables d'environnement
|
|
2. Spécifier les origines CORS autorisées
|
|
3. Activer HTTPS
|
|
4. Configurer le rate limiting
|
|
5. Activer les logs d'audit
|
|
|
|
### Docker
|
|
```bash
|
|
docker build -t tim-interface .
|
|
docker run -p 8000:8000 tim-interface
|
|
```
|
|
|
|
## Maintenance
|
|
|
|
### Logs
|
|
Les logs sont stockés dans `logs/tim_api.log`.
|
|
|
|
### Monitoring
|
|
- Utiliser les endpoints de health check
|
|
- Surveiller les erreurs dans les logs
|
|
- Vérifier les performances avec les métriques
|
|
|
|
### Mises à jour
|
|
1. Tester en environnement de développement
|
|
2. Vérifier la compatibilité des navigateurs
|
|
3. Exécuter les tests
|
|
4. Déployer en production
|
|
5. Vérifier les logs
|
|
|
|
## Support
|
|
|
|
Pour toute question ou problème:
|
|
- Consulter la documentation utilisateur (INTERFACE_TIM_USER_GUIDE.md)
|
|
- Consulter le changelog (INTERFACE_TIM_CHANGELOG.md)
|
|
- Contacter l'équipe de développement
|
|
|
|
## Licence
|
|
|
|
Copyright © 2025 - Tous droits réservés
|