Files
t2a_v2/config/completude_rules.yaml
dom 4e2b4bd946 refactor: réorganisation référentiels, nouveaux modules extraction, nettoyage code obsolète
- Réorganisation data/referentiels/ : pdfs/, dicts/, user/ (structure unifiée)
- Fix badges "Source absente" sur page admin référentiels
- Ré-indexation COCOA 2025 (555 → 1451 chunks, couverture 94%)
- Fix VRAM OOM : embeddings forcés CPU via T2A_EMBED_CPU
- Nouveaux modules : document_router, docx_extractor, image_extractor, ocr_engine
- Module complétude (quality/completude.py + config YAML)
- Template DIM (synthèse dimensionnelle)
- Gunicorn config + systemd service t2a-viewer
- Suppression t2a_install_rag_cleanup/ (copie obsolète)
- Suppression scripts/ et scripts_t2a_v2/ (anciens benchmarks)
- Suppression 81 fichiers _doc.txt de test
- Cache Ollama : TTL configurable, corrections loader YAML
- Dashboard : améliorations templates (base, index, detail, cpam, validation)

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-07 16:48:10 +01:00

438 lines
16 KiB
YAML
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# Règles de complétude documentaire DIM
# Pour chaque famille diagnostique : éléments obligatoires/recommandés
# qui doivent être présents dans le dossier pour justifier le code.
#
# Catégories : biologie | imagerie | document | acte | clinique
# Importance : obligatoire | recommande
# match_type : bio (biologie_cle.test), imagerie (imagerie.type), document (doc_types),
# clinique (sejour.imc/poids/taille), acte (actes_ccam)
#
# Seuils (optionnel) : confrontation valeur ↔ diagnostic
# type: below | above | range
# value / value_m / value_f / range_min / range_max
# message_ok / message_ko
version: 2
# --- Règles par préfixe CIM-10 ---
diagnostics:
denutrition:
prefixes: ["E43", "E44", "E46"]
libelle_famille: "Dénutrition"
items:
- categorie: biologie
element: Albumine
match_bio: ["albumine"]
importance: obligatoire
impact_cpam: "Albumine exigée par la CPAM pour valider une dénutrition (critère ATIH)"
seuil:
code_filter: "E43"
type: below
value: 30
message_ok: "Albumine < 30 g/L confirme la dénutrition sévère"
message_ko: "Albumine ≥ 30 g/L : dénutrition sévère non confirmée biologiquement"
- categorie: biologie
element: Albumine
match_bio: ["albumine"]
importance: obligatoire
impact_cpam: "Albumine exigée pour dénutrition modérée"
seuil:
code_filter: "E44"
type: range
range_min: 30
range_max: 35
message_ok: "Albumine entre 30-35 g/L confirme la dénutrition modérée"
message_ko: "Albumine hors plage 30-35 g/L pour dénutrition modérée"
- categorie: clinique
element: IMC
match_clinique: imc
importance: obligatoire
impact_cpam: "IMC nécessaire pour classifier le degré de dénutrition"
seuil:
code_filter: "E43"
type: below
value: 18.5
message_ok: "IMC < 18.5 confirme la dénutrition sévère"
message_ko: "IMC ≥ 18.5 : dénutrition sévère non confirmée"
- categorie: clinique
element: IMC
match_clinique: imc
importance: obligatoire
impact_cpam: "IMC nécessaire pour dénutrition modérée"
seuil:
code_filter: "E44"
type: range
range_min: 18.5
range_max: 21
message_ok: "IMC entre 18.5-21 confirme la dénutrition modérée"
message_ko: "IMC hors plage 18.5-21 pour dénutrition modérée"
- categorie: biologie
element: Préalbumine
match_bio: ["prealbumine", "préalbumine", "transthyretine", "transthyrétine"]
importance: recommande
impact_cpam: "Renforce la preuve de dénutrition si albumine limite"
anemie:
prefixes: ["D50", "D62", "D63", "D64"]
libelle_famille: "Anémie"
items:
- categorie: biologie
element: Hémoglobine
match_bio: ["hemoglobine", "hémoglobine", "hb"]
importance: obligatoire
impact_cpam: "Hémoglobine indispensable pour confirmer et qualifier une anémie"
seuil:
type: below
value_m: 13
value_f: 12
message_ok: "Hémoglobine basse confirme l'anémie"
message_ko: "Hémoglobine normale : anémie non confirmée biologiquement"
- categorie: biologie
element: Ferritine
match_bio: ["ferritine"]
importance: recommande
impact_cpam: "Permet de typer l'anémie (carentielle vs inflammatoire)"
- categorie: biologie
element: VGM
match_bio: ["vgm", "volume globulaire moyen"]
importance: recommande
impact_cpam: "Oriente l'étiologie (microcytaire/macrocytaire)"
insuffisance_renale:
prefixes: ["N17", "N18", "N19"]
libelle_famille: "Insuffisance rénale"
items:
- categorie: biologie
element: Créatinine
match_bio: ["creatinine", "créatinine", "creat"]
importance: obligatoire
impact_cpam: "Créatinine obligatoire pour confirmer une insuffisance rénale"
seuil:
type: above
value: 120
message_ok: "Créatinine > 120 µmol/L confirme l'insuffisance rénale"
message_ko: "Créatinine ≤ 120 µmol/L : IR non confirmée biologiquement"
- categorie: biologie
element: DFG
match_bio: ["dfg", "clairance", "dfge", "débit de filtration"]
importance: recommande
impact_cpam: "Permet de stadifier l'IR selon KDIGO"
- categorie: biologie
element: Urée
match_bio: ["uree", "urée"]
importance: recommande
impact_cpam: "Élément complémentaire de la fonction rénale"
sepsis:
prefixes: ["A40", "A41"]
libelle_famille: "Sepsis / Septicémie"
items:
- categorie: biologie
element: CRP
match_bio: ["crp", "proteine c reactive", "protéine c réactive"]
importance: obligatoire
impact_cpam: "Marqueur inflammatoire essentiel pour documenter un sepsis"
seuil:
type: above
value: 50
message_ok: "CRP > 50 mg/L confirme le syndrome inflammatoire"
message_ko: "CRP ≤ 50 mg/L : syndrome inflammatoire non significatif"
- categorie: biologie
element: Leucocytes
match_bio: ["leucocytes", "gb", "globules blancs"]
importance: obligatoire
impact_cpam: "Leucocytose ou leucopénie attendue dans le sepsis"
seuil:
type: outside_range
range_min: 4
range_max: 10
message_ok: "Leucocytes hors norme (< 4 ou > 10 G/L) : compatible avec sepsis"
message_ko: "Leucocytes normaux (4-10 G/L) : sepsis non confirmé biologiquement"
- categorie: biologie
element: Procalcitonine
match_bio: ["procalcitonine", "pct"]
importance: recommande
impact_cpam: "Marqueur spécifique d'infection bactérienne, renforce la preuve"
- categorie: biologie
element: Hémocultures
match_bio: ["hemoculture", "hémoculture", "hemocultures", "hémocultures"]
importance: recommande
impact_cpam: "Documentation bactériologique du sepsis"
troubles_electrolytiques:
prefixes: ["E87"]
libelle_famille: "Troubles électrolytiques"
items:
- categorie: biologie
element: Sodium
match_bio: ["sodium", "natremie", "natrémie", "na"]
importance: obligatoire
impact_cpam: "Ionogramme obligatoire pour justifier un trouble électrolytique"
seuil:
type: below
value: 135
message_ok: "Sodium < 135 mmol/L confirme l'hyponatrémie"
message_ko: "Sodium ≥ 135 mmol/L : hyponatrémie non confirmée"
- categorie: biologie
element: Potassium
match_bio: ["potassium", "kaliemie", "kaliémie", "k"]
importance: obligatoire
impact_cpam: "Ionogramme obligatoire pour justifier un trouble électrolytique"
seuil:
type: outside_range
range_min: 3.5
range_max: 5.0
message_ok: "Potassium hors norme : trouble confirmé"
message_ko: "Potassium normal (3.5-5.0) : trouble non confirmé"
diabete:
prefixes: ["E10", "E11"]
libelle_famille: "Diabète"
items:
- categorie: biologie
element: HbA1c
match_bio: ["hba1c", "hemoglobine glyquee", "hémoglobine glyquée"]
importance: recommande
impact_cpam: "HbA1c attendue pour documenter l'équilibre glycémique"
- categorie: biologie
element: Glycémie
match_bio: ["glycemie", "glycémie", "glucose"]
importance: recommande
impact_cpam: "Glycémie de base pour confirmer le diagnostic"
pancreatite:
prefixes: ["K85"]
libelle_famille: "Pancréatite aiguë"
items:
- categorie: biologie
element: Lipasémie
match_bio: ["lipase", "lipasemie", "lipasémie"]
importance: obligatoire
impact_cpam: "Lipase > 3N est le critère diagnostique de référence"
seuil:
type: above
value: 180
message_ok: "Lipase > 180 UI/L (3× la normale) confirme la pancréatite"
message_ko: "Lipase ≤ 180 UI/L : critère diagnostique non atteint"
- categorie: imagerie
element: Scanner abdominal
match_imagerie: ["scanner", "tdm", "tomodensitometrie"]
importance: recommande
impact_cpam: "Scanner recommandé pour évaluer la sévérité (Balthazar)"
embolie_pulmonaire:
prefixes: ["I26"]
libelle_famille: "Embolie pulmonaire"
items:
- categorie: imagerie
element: Angioscanner thoracique
match_imagerie: ["angioscanner", "scanner", "tdm", "angiotdm"]
importance: obligatoire
impact_cpam: "Imagerie indispensable pour confirmer une EP"
- categorie: biologie
element: D-dimères
match_bio: ["d-dimeres", "d-dimères", "ddimeres", "d dimeres"]
importance: recommande
impact_cpam: "D-dimères utiles si négatifs pour exclure, non suffisants seuls"
tumeurs_malignes:
prefixes: ["C"]
libelle_famille: "Tumeur maligne"
items:
- categorie: document
element: ANAPATH
match_document: ["anapath", "anatomopathologie", "biopsie"]
importance: obligatoire
impact_cpam: "Compte-rendu anatomopathologique exigé pour tout code C (tumeur maligne)"
pathologies_hepatiques:
prefixes: ["K70", "K71", "K72", "K73", "K74", "K75", "K76", "K77"]
libelle_famille: "Pathologie hépatique"
items:
- categorie: biologie
element: ASAT
match_bio: ["asat", "got", "aspartate aminotransferase"]
importance: obligatoire
impact_cpam: "Bilan hépatique obligatoire pour documenter une atteinte hépatique"
seuil:
type: above
value: 40
message_ok: "ASAT > 40 UI/L confirme la cytolyse hépatique"
message_ko: "ASAT ≤ 40 UI/L : cytolyse non confirmée"
- categorie: biologie
element: ALAT
match_bio: ["alat", "gpt", "alanine aminotransferase"]
importance: obligatoire
impact_cpam: "Bilan hépatique obligatoire"
seuil:
type: above
value: 40
message_ok: "ALAT > 40 UI/L confirme la cytolyse hépatique"
message_ko: "ALAT ≤ 40 UI/L : cytolyse non confirmée"
- categorie: biologie
element: Bilirubine
match_bio: ["bilirubine", "bili"]
importance: recommande
impact_cpam: "Bilirubine renforce la documentation d'une atteinte hépatique"
obesite:
prefixes: ["E66"]
libelle_famille: "Obésité"
items:
- categorie: clinique
element: IMC
match_clinique: imc
importance: obligatoire
impact_cpam: "IMC ≥ 30 indispensable pour coder une obésité"
seuil:
type: above
value: 30
message_ok: "IMC ≥ 30 confirme l'obésité"
message_ko: "IMC < 30 : obésité non confirmée"
- categorie: clinique
element: Poids
match_clinique: poids
importance: obligatoire
impact_cpam: "Poids nécessaire pour calculer l'IMC"
insuffisance_cardiaque:
prefixes: ["I50"]
libelle_famille: "Insuffisance cardiaque"
items:
- categorie: biologie
element: BNP / NT-proBNP
match_bio: ["bnp", "nt-probnp", "ntprobnp", "pro-bnp"]
importance: obligatoire
impact_cpam: "BNP/NT-proBNP attendu pour confirmer une insuffisance cardiaque"
seuil:
type: above
value: 100
message_ok: "BNP > 100 pg/mL (ou NT-proBNP > 300) confirme l'IC"
message_ko: "BNP ≤ 100 pg/mL : IC non confirmée biologiquement"
- categorie: imagerie
element: Échographie cardiaque
match_imagerie: ["echographie cardiaque", "échocardiographie", "echo coeur", "ett", "eto"]
importance: recommande
impact_cpam: "ETT recommandée pour documenter la FEVG"
# --- 8 NOUVELLES FAMILLES ---
avc_ait:
prefixes: ["I60", "I61", "I62", "I63", "I64", "G45"]
libelle_famille: "AVC / AIT"
items:
- categorie: imagerie
element: Scanner/IRM cérébral
match_imagerie: ["scanner cerebral", "irm cerebral", "irm cérébral", "scanner cérébral", "tdm cerebral", "tdm cérébral", "irm encephalique", "irm encéphalique"]
importance: obligatoire
impact_cpam: "Imagerie cérébrale indispensable pour confirmer un AVC/AIT"
- categorie: biologie
element: ECG
match_bio: ["ecg", "electrocardiogramme", "électrocardiogramme"]
importance: recommande
impact_cpam: "ECG recommandé pour rechercher une cause cardioembolique"
idm:
prefixes: ["I21", "I22"]
libelle_famille: "Infarctus du myocarde"
items:
- categorie: biologie
element: Troponine
match_bio: ["troponine", "tnc", "tni", "tnt", "troponine i", "troponine t", "troponine us"]
importance: obligatoire
impact_cpam: "Troponine obligatoire pour confirmer un IDM"
seuil:
type: above
value: 0.04
message_ok: "Troponine > 0.04 confirme la nécrose myocardique"
message_ko: "Troponine ≤ 0.04 : IDM non confirmé biologiquement"
- categorie: biologie
element: ECG
match_bio: ["ecg", "electrocardiogramme", "électrocardiogramme"]
importance: recommande
impact_cpam: "ECG recommandé pour caractériser l'IDM (ST+/ST-)"
- categorie: imagerie
element: Coronarographie
match_imagerie: ["coronarographie", "coronaro", "coro"]
importance: recommande
impact_cpam: "Coronarographie recommandée pour documenter les lésions"
pneumopathie:
prefixes: ["J12", "J13", "J14", "J15", "J16", "J17", "J18"]
libelle_famille: "Pneumopathie"
items:
- categorie: imagerie
element: Radio/Scanner thoracique
match_imagerie: ["radio thorax", "radiographie thoracique", "scanner thoracique", "tdm thoracique", "rx thorax", "radio pulmonaire"]
importance: obligatoire
impact_cpam: "Imagerie thoracique indispensable pour confirmer une pneumopathie"
- categorie: biologie
element: CRP
match_bio: ["crp", "proteine c reactive", "protéine c réactive"]
importance: recommande
impact_cpam: "CRP recommandée pour documenter le syndrome inflammatoire"
tvp:
prefixes: ["I80"]
libelle_famille: "Thrombose veineuse profonde"
items:
- categorie: imagerie
element: Écho-doppler veineux
match_imagerie: ["echo-doppler", "écho-doppler", "echo doppler", "écho doppler", "doppler veineux", "echodoppler"]
importance: obligatoire
impact_cpam: "Écho-doppler veineux indispensable pour confirmer une TVP"
insuffisance_respiratoire:
prefixes: ["J96"]
libelle_famille: "Insuffisance respiratoire"
items:
- categorie: biologie
element: Gaz du sang
match_bio: ["gaz du sang", "gazometrie", "gazométrie", "gds", "pao2", "paco2"]
importance: obligatoire
impact_cpam: "Gazométrie artérielle obligatoire pour confirmer une insuffisance respiratoire"
fractures:
prefixes: ["S02", "S12", "S22", "S32", "S42", "S52", "S62", "S72", "S82", "S92"]
libelle_famille: "Fracture"
items:
- categorie: imagerie
element: Imagerie osseuse
match_imagerie: ["radio", "radiographie", "scanner", "tdm", "irm", "rx"]
importance: obligatoire
impact_cpam: "Imagerie indispensable pour confirmer une fracture"
infection_urinaire:
prefixes: ["N39.0"]
libelle_famille: "Infection urinaire"
items:
- categorie: biologie
element: ECBU
match_bio: ["ecbu", "examen cytobacteriologique", "examen cytobactériologique"]
importance: obligatoire
impact_cpam: "ECBU obligatoire pour documenter une infection urinaire"
fa_flutter:
prefixes: ["I48"]
libelle_famille: "Fibrillation auriculaire / Flutter"
items:
- categorie: biologie
element: ECG
match_bio: ["ecg", "electrocardiogramme", "électrocardiogramme"]
importance: obligatoire
impact_cpam: "ECG obligatoire pour documenter une FA/flutter"
# --- Règles par préfixe CCAM (actes) ---
actes:
chirurgie:
description: "Acte chirurgical nécessitant un CRO"
prefixes: ["H", "J", "K", "L"]
items:
- categorie: document
element: CRO
match_document: ["cro", "compte rendu operatoire", "compte-rendu opératoire"]
importance: obligatoire
impact_cpam: "Compte-rendu opératoire obligatoire pour tout acte chirurgical"