8.4 KiB
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:
{
"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:
{
"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:
{
"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:
{
"stay_id": "string",
"validation_status": "accepted|rejected|needs_review",
"comment": "string"
}
POST /stays/{stay_id}/export-pdf
Exporte le codage en PDF.
Requête:
{
"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
# 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
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
pytest tests/test_tim_api.py
Tests d'intégration
pytest tests/test_tim_integration.py
Couverture de code
pytest --cov=pipeline_mco_pmsi.api --cov-report=html
Déploiement
Production
- Configurer les variables d'environnement
- Spécifier les origines CORS autorisées
- Activer HTTPS
- Configurer le rate limiting
- Activer les logs d'audit
Docker
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
- Tester en environnement de développement
- Vérifier la compatibilité des navigateurs
- Exécuter les tests
- Déployer en production
- 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