Initial commit

This commit is contained in:
Dom
2026-03-05 01:20:14 +01:00
commit 2163e574c1
184 changed files with 354881 additions and 0 deletions

332
README.md Normal file
View 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/)