Initial commit
This commit is contained in:
332
README.md
Normal file
332
README.md
Normal file
@@ -0,0 +1,332 @@
|
||||
# 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/)
|
||||
Reference in New Issue
Block a user