- 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>
438 lines
16 KiB
YAML
438 lines
16 KiB
YAML
# 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"
|