13fe9fa666028943d81b09788323882ed19be076
Résultats de re-traitement pipeline v2 sur 261 dossiers. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
T2A — Pipeline de codage PMSI automatise
Pipeline d'extraction et de codage CIM-10/CCAM pour le PMSI hospitalier (MCO). Transforme les comptes rendus d'hospitalisation (CRH) et fiches Trackare en dossiers structures, codes et valorises.
Architecture
input/ PDFs bruts (CRH, Trackare, anapath, bacterio)
|
v
[Extraction] pdfplumber / OCR / DOCX / images
|
v
[Anonymisation] CamemBERT NER + regex (PHI -> pseudonymes)
|
v
[Codage CIM-10] LLM local (Ollama) + RAG FAISS + regles ATIH
| diagnostic_extraction -> validation_pipeline
v
[Arbitrage DP] dp_selector (LLM) -> dp_finalizer (deterministe)
| Trackare vs CRH-only, traçabilite audit
v
[Qualite] veto_engine (contestabilite) + decision_engine
| completude (checklist documents) + severity (CMA)
v
[CPAM] cpam_parser + cpam_response (contre-argumentation LLM)
| guardian deterministe + validation adversariale
v
output/ JSON structures, rapports, export RUM
|
v
[Viewer Flask] Dashboard, detail dossier, synthese DIM, CPAM, validation
Modules principaux
| Module | Role |
|---|---|
src/extraction/ |
Parsers PDF, DOCX, images, OCR, classification documents |
src/anonymization/ |
Anonymisation NER + regex, registre d'entites |
src/medical/ |
CIM-10, CCAM, biologie, RAG FAISS, LLM Ollama, fusion multi-documents |
src/quality/ |
Moteur de vetos deterministe, decisions, completude, routage regles |
src/control/ |
Controles CPAM, contre-argumentation, validation adversariale |
src/viewer/ |
Application Flask (dashboard, detail, DIM, admin, regles) |
config/ |
12 fichiers YAML de regles editables via l'interface web |
Moteur de regles
Le pipeline utilise un moteur de regles 100% deterministe (pas de LLM) pour :
- Vetos : bloquer les codes sans preuve, negatifs, doublons, contradictions bio
- Decisions : downgrade, ecartement, promotion DP
- Conflits : exclusions mutuelles CIM-10, incompatibilites
- Bio : contradiction labo vs diagnostic code
- Completude : checklist documents manquants
Toutes les regles sont dans config/*.yaml et editables via /admin/rules.
RAG (Retrieval-Augmented Generation)
Index FAISS avec ~23 000 vecteurs issus de :
- CIM-10 FR 2026, Guide Methodologique MCO 2026, CCAM V4
- 30 referentiels supplementaires (COCOA 2025, fascicules ATIH, etc.)
- Embeddings :
sentence-camembert-large(francais medical)
Separation en 3 index : ref (referentiels), proc (procedures), bio (biologie).
Installation
# Prerequis : Python 3.11+, Ollama avec gemma3:27b
git clone <repo> && cd t2a_v2
python -m venv .venv && source .venv/bin/activate
pip install -e ".[dev]"
# Variables d'environnement (.env)
OLLAMA_URL=http://localhost:11434
T2A_MODEL_CODING=gemma3:27b
T2A_MODEL_CPAM=mistral-small3.2:24b
# ANTHROPIC_API_KEY=sk-... (optionnel, fallback cloud)
Utilisation
# Pipeline CLI : traiter des PDFs
python -m src.main input/dossier/
# Reconstruire l'index RAG
python -m src.main --rebuild-index
# Viewer web (developpement)
python -m src.viewer
# Viewer web (production)
gunicorn -c gunicorn.conf.py 'src.viewer:create_app()'
Tests
pytest # 239+ tests, ~10s
pytest -k test_viewer # Tests viewer uniquement
pytest -k test_cpam # Tests CPAM
Structure des donnees
Chaque dossier produit un JSON structure (DossierMedical Pydantic) contenant :
diagnostic_principal: code CIM-10, confiance, justification, sourcediagnostics_associes: DAS avec decisions (KEEP/DOWNGRADE/REMOVE/RULED_OUT)actes_ccam: actes codesveto_report: score de contestabilite (0-10), issues detecteescompletude: checklist, score, verdictghm_estimation: GHM, severite, valorisation estimeecontroles_cpam: contre-argumentations generees
Deploiement
Service systemd inclus (t2a-viewer.service), config gunicorn (gunicorn.conf.py).
Auth HTTP Basic configurable via T2A_DEMO_USER / T2A_DEMO_PASS.
Description
Languages
Python
87.3%
HTML
12.3%
Shell
0.4%