# 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 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= ``` ## 📚 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/)