Files
aivanov_CIM/README.md
2026-03-05 01:20:14 +01:00

9.1 KiB

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

git clone <repository-url>
cd pipeline-mco-pmsi-codage

2. Créer un environnement virtuel

python -m venv .venv
source .venv/bin/activate  # Linux/Mac
# ou
.venv\Scripts\activate  # Windows

3. Installer les dépendances

pip install -e .

🎯 Démarrage rapide

Exemple complet avec document fourni

Un exemple de séjour est fourni dans data/sejours/EXEMPLE001/ :

# 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

# 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

📁 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 :

pip install -e ".[dev]"

Pour le support GPU :

pip install -e ".[gpu]"

4. Télécharger les modèles spaCy

python -m spacy download fr_core_news_lg

🧪 Tests

Exécuter tous les tests

pytest

Exécuter les tests par catégorie

# 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

# 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

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 :

# 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