333 lines
9.1 KiB
Markdown
333 lines
9.1 KiB
Markdown
# Pipeline MCO PMSI - Automatisation du Codage Médical
|
|
|
|
Système d'automatisation du codage médical PMSI (Programme de Médicalisation des Systèmes d'Information) basé sur une architecture RAG (Retrieval-Augmented Generation) avec approche conservatrice basée sur les preuves.
|
|
|
|
## 🎯 Objectifs
|
|
|
|
- **Codage basé sur les preuves** : Chaque code proposé est justifié par 1 à 3 extraits de texte
|
|
- **Approche conservative** : En cas d'incertitude, génération de questions plutôt que suppositions
|
|
- **Vérification indépendante** : Architecture à deux passes (Codeur + Vérificateur)
|
|
- **Auditabilité complète** : Traçabilité totale des décisions, preuves et versions
|
|
- **On-premises** : Aucune dépendance externe, inférence LLM locale
|
|
- **Reproductibilité** : Versionnement strict de tous les composants
|
|
|
|
## 🏗️ Architecture
|
|
|
|
```
|
|
Documents Cliniques → Structuration → Extraction de Faits → Recherche RAG →
|
|
Codage Initial → Vérification Indépendante → Validation & Export
|
|
```
|
|
|
|
### Composants Principaux
|
|
|
|
- **Document Processor** : Segmentation et structuration du texte clinique
|
|
- **Clinical Facts Extractor** : Extraction de faits structurés avec qualificateurs
|
|
- **RAG Engine** : Recherche hybride dans les référentiels versionnés
|
|
- **Codeur** : Proposition de codes CIM-10/CCAM avec justifications
|
|
- **Vérificateur** : Validation indépendante et détection d'erreurs sensibles DIM
|
|
- **Référentiels Manager** : Gestion versionnée des référentiels ATIH
|
|
- **Audit Logger** : Enregistrement complet des décisions et preuves
|
|
- **PII Protector** : Détection et anonymisation des données identifiantes
|
|
|
|
## 📋 Prérequis
|
|
|
|
- Python 3.10+
|
|
- PostgreSQL 14+ (ou SQLite pour développement)
|
|
- 16 GB RAM minimum (32 GB recommandé)
|
|
- GPU optionnel (améliore les performances)
|
|
|
|
## 🚀 Installation
|
|
|
|
### 1. Cloner le dépôt
|
|
|
|
```bash
|
|
git clone <repository-url>
|
|
cd pipeline-mco-pmsi-codage
|
|
```
|
|
|
|
### 2. Créer un environnement virtuel
|
|
|
|
```bash
|
|
python -m venv .venv
|
|
source .venv/bin/activate # Linux/Mac
|
|
# ou
|
|
.venv\Scripts\activate # Windows
|
|
```
|
|
|
|
### 3. Installer les dépendances
|
|
|
|
```bash
|
|
pip install -e .
|
|
```
|
|
|
|
## 🎯 Démarrage rapide
|
|
|
|
### Exemple complet avec document fourni
|
|
|
|
Un exemple de séjour est fourni dans `data/sejours/EXEMPLE001/` :
|
|
|
|
```bash
|
|
# 1. Traiter le séjour d'exemple
|
|
python scripts/process_stay.py \
|
|
--stay-id EXEMPLE001 \
|
|
--documents-dir data/sejours/EXEMPLE001 \
|
|
--specialty chirurgie \
|
|
--admission-date 2024-01-15 \
|
|
--discharge-date 2024-01-17
|
|
|
|
# 2. Lancer l'interface web
|
|
python scripts/start_api.py
|
|
|
|
# 3. Ouvrir http://localhost:8001 et rechercher "EXEMPLE001"
|
|
```
|
|
|
|
### Traiter vos propres documents
|
|
|
|
```bash
|
|
# 1. Créer un répertoire pour votre séjour
|
|
mkdir -p data/sejours/MON_SEJOUR
|
|
|
|
# 2. Placer vos documents .txt dans ce répertoire
|
|
cp mes_documents/*.txt data/sejours/MON_SEJOUR/
|
|
|
|
# 3. Traiter le séjour
|
|
python scripts/process_stay.py \
|
|
--stay-id MON_SEJOUR \
|
|
--documents-dir data/sejours/MON_SEJOUR \
|
|
--specialty chirurgie
|
|
|
|
# 4. Consulter les résultats sur l'interface web
|
|
python scripts/start_api.py
|
|
```
|
|
|
|
## 📖 Documentation
|
|
|
|
- **[Guide d'Utilisation Complet](GUIDE_UTILISATION.md)** - Instructions détaillées
|
|
- **[Documentation API](src/pipeline_mco_pmsi/api/README.md)** - Référence API REST
|
|
- **[Spécifications](~/.kiro/specs/pipeline-mco-pmsi-codage/)** - Requirements et design
|
|
|
|
## 📁 Organisation des données
|
|
|
|
```
|
|
data/
|
|
├── sejours/ # Documents cliniques par séjour
|
|
│ ├── EXEMPLE001/ # Exemple fourni
|
|
│ │ └── cr_operatoire.txt
|
|
│ └── MON_SEJOUR/ # Vos séjours
|
|
│ ├── cr_operatoire.txt
|
|
│ ├── cr_medical.txt
|
|
│ └── imagerie.txt
|
|
├── referentiels/ # Référentiels ATIH
|
|
│ └── CCAM_V81.xls
|
|
└── exports/ # Exports d'audit
|
|
```
|
|
|
|
## 🔧 Scripts disponibles
|
|
|
|
- `scripts/process_stay.py` - Traiter un séjour avec ses documents
|
|
- `scripts/start_api.py` - Lancer l'interface web TIM
|
|
- `scripts/import_ccam.py` - Importer le référentiel CCAM
|
|
|
|
## 🚀 Installation
|
|
python -m venv .venv
|
|
source .venv/bin/activate # Linux/Mac
|
|
# ou
|
|
.venv\Scripts\activate # Windows
|
|
```
|
|
|
|
### 3. Installer les dépendances
|
|
|
|
```bash
|
|
pip install -e .
|
|
```
|
|
|
|
Pour le développement :
|
|
|
|
```bash
|
|
pip install -e ".[dev]"
|
|
```
|
|
|
|
Pour le support GPU :
|
|
|
|
```bash
|
|
pip install -e ".[gpu]"
|
|
```
|
|
|
|
### 4. Télécharger les modèles spaCy
|
|
|
|
```bash
|
|
python -m spacy download fr_core_news_lg
|
|
```
|
|
|
|
## 🧪 Tests
|
|
|
|
### Exécuter tous les tests
|
|
|
|
```bash
|
|
pytest
|
|
```
|
|
|
|
### Exécuter les tests par catégorie
|
|
|
|
```bash
|
|
# Tests unitaires uniquement
|
|
pytest -m unit
|
|
|
|
# Tests de propriétés (Hypothesis)
|
|
pytest -m property
|
|
|
|
# Tests d'intégration
|
|
pytest -m integration
|
|
|
|
# Tests lents
|
|
pytest -m slow --run-slow
|
|
```
|
|
|
|
### Profils Hypothesis
|
|
|
|
```bash
|
|
# Profil par défaut (100 exemples)
|
|
pytest
|
|
|
|
# Profil développement (20 exemples, rapide)
|
|
HYPOTHESIS_PROFILE=dev pytest
|
|
|
|
# Profil CI (200 exemples)
|
|
HYPOTHESIS_PROFILE=ci pytest
|
|
|
|
# Profil exhaustif (1000 exemples)
|
|
HYPOTHESIS_PROFILE=exhaustive pytest
|
|
```
|
|
|
|
### Couverture de code
|
|
|
|
```bash
|
|
pytest --cov=pipeline_mco_pmsi --cov-report=html
|
|
# Ouvrir htmlcov/index.html dans un navigateur
|
|
```
|
|
|
|
## 📁 Structure du Projet
|
|
|
|
```
|
|
pipeline-mco-pmsi-codage/
|
|
├── src/
|
|
│ └── pipeline_mco_pmsi/
|
|
│ ├── models/ # Modèles de données Pydantic
|
|
│ │ ├── clinical.py # Documents, faits, preuves
|
|
│ │ ├── coding.py # Codes, propositions
|
|
│ │ ├── metadata.py # Versions, audit
|
|
│ │ └── validation.py # Validation, questions
|
|
│ ├── processors/ # Traitement des documents
|
|
│ ├── rag/ # Moteur RAG et référentiels
|
|
│ ├── validators/ # Validation PMSI
|
|
│ └── utils/ # Utilitaires
|
|
├── tests/ # Tests (unit, property, integration)
|
|
├── data/
|
|
│ ├── referentiels/ # Référentiels ATIH (CIM-10, CCAM, Guide MCO)
|
|
│ ├── gold_set/ # Jeu gold pour validation
|
|
│ └── exports/ # Exports d'audit
|
|
├── config/ # Fichiers de configuration
|
|
├── logs/ # Logs système
|
|
├── pyproject.toml # Configuration du projet
|
|
├── pytest.ini # Configuration pytest
|
|
└── README.md
|
|
```
|
|
|
|
## 🔧 Configuration
|
|
|
|
### Variables d'environnement
|
|
|
|
Créer un fichier `.env` à la racine :
|
|
|
|
```env
|
|
# Base de données
|
|
DATABASE_URL=postgresql://user:password@localhost:5432/pmsi_db
|
|
|
|
# Modèle LLM
|
|
LLM_MODEL_NAME=mistral
|
|
LLM_MODEL_TAG=7b-instruct-v0.2
|
|
LLM_BASE_URL=http://localhost:11434 # Ollama
|
|
|
|
# Embeddings
|
|
EMBEDDING_MODEL=sentence-transformers/paraphrase-multilingual-mpnet-base-v2
|
|
|
|
# Logging
|
|
LOG_LEVEL=INFO
|
|
LOG_FILE=logs/pipeline.log
|
|
|
|
# Sécurité
|
|
ENCRYPTION_KEY=<your-encryption-key>
|
|
```
|
|
|
|
## 📚 Documentation
|
|
|
|
La documentation complète est disponible dans :
|
|
|
|
- `~/.kiro/specs/pipeline-mco-pmsi-codage/requirements.md` : Exigences détaillées
|
|
- `~/.kiro/specs/pipeline-mco-pmsi-codage/design.md` : Document de design
|
|
- `~/.kiro/specs/pipeline-mco-pmsi-codage/tasks.md` : Plan d'implémentation
|
|
|
|
## 🎓 Référentiels ATIH
|
|
|
|
Le système utilise les référentiels officiels ATIH :
|
|
|
|
- **CIM-10 FR 2026** : Classification Internationale des Maladies
|
|
- **CCAM Descriptive 2025** : Classification Commune des Actes Médicaux
|
|
- **Guide Méthodologique MCO 2026** : Règles de codage PMSI
|
|
|
|
Les fichiers PDF doivent être placés dans `data/referentiels/`.
|
|
|
|
## 🔒 Sécurité et Conformité
|
|
|
|
- **Protection des DIP** : Détection et anonymisation automatique
|
|
- **Chiffrement** : Exports d'audit chiffrés
|
|
- **Contrôle d'accès** : RBAC pour TIM, responsables DIM, administrateurs
|
|
- **Logs d'audit** : Traçabilité complète sans DIP
|
|
- **On-premises** : Aucune donnée ne quitte l'hôpital
|
|
|
|
## 📊 Métriques de Qualité
|
|
|
|
Le système calcule automatiquement :
|
|
|
|
- Pourcentage de codes sans preuve
|
|
- Pourcentage de diagnostics niés codés comme affirmés
|
|
- Pourcentage de DP corrects (vs gold standard)
|
|
- Pourcentage de DAS fantômes
|
|
- Pourcentage d'actes CCAM sans preuve
|
|
- Pourcentage de dossiers validés en un clic
|
|
- Pourcentage de pertinence des questions
|
|
|
|
## 🎯 Critères de Succès POC
|
|
|
|
- ✅ Traiter minimum 200 séjours MCO anonymisés
|
|
- ✅ Support de 1-2 spécialités médicales
|
|
- ✅ ≥50% de taux d'acceptation TIM
|
|
- ✅ ≤2 minutes de temps de validation pour dossiers acceptés
|
|
- ✅ ≤1% d'erreurs sensibles DIM
|
|
- ✅ 100% de traçabilité (tous les codes ont preuves et versions)
|
|
- ✅ ≥80% de questions pertinentes
|
|
|
|
## 🤝 Contribution
|
|
|
|
Ce projet suit les principes de Property-Based Testing avec Hypothesis.
|
|
Tous les nouveaux composants doivent inclure :
|
|
|
|
1. Tests unitaires pour cas spécifiques
|
|
2. Property tests pour propriétés universelles
|
|
3. Documentation des propriétés de correctness
|
|
|
|
## 📝 Licence
|
|
|
|
MIT License
|
|
|
|
## 👥 Auteurs
|
|
|
|
DIM Team - Département d'Information Médicale
|
|
|
|
## 🔗 Liens Utiles
|
|
|
|
- [ATIH - Agence Technique de l'Information sur l'Hospitalisation](https://www.atih.sante.fr/)
|
|
- [Hypothesis Documentation](https://hypothesis.readthedocs.io/)
|
|
- [Pydantic Documentation](https://docs.pydantic.dev/)
|
|
- [SQLAlchemy Documentation](https://docs.sqlalchemy.org/)
|