CPAM — Méthode TIM (mémoire en défense) : - Réécriture CPAM_ARGUMENTATION avec raisonnement 5 passes TIM (contexte admin → motif réel → confrontation bio → hiérarchie → validation défensive) - _BIO_THRESHOLDS (19 entrées) + _build_bio_confrontation() pour confrontation biologie/diagnostic avec seuils chiffrés et verdicts - _format_response() dual format : nouveau TIM (moyens numérotés, tableau bio, codes non défendables, conclusion dispositive) + rétrocompat legacy - CPAM_ADVERSARIAL mis à jour pour vérifier honnêteté intellectuelle - Tests adaptés + 12 nouveaux tests (bio confrontation, format TIM) Moteur de règles : - Nouvelles règles YAML : demographic, diagnostic_conflicts, procedure_diagnosis, temporal, parcours - Bio extraction FAISS (synonymes vectoriels) - Veto engine enrichi (citations, Trackare skip, règles démographiques) - Decision engine : _apply_bio_rules_gen() + matchers analytiques Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
91 lines
2.4 KiB
YAML
91 lines
2.4 KiB
YAML
version: 2
|
|
|
|
# Règles biologiques (contradiction bio ⇒ ruled_out)
|
|
# ------------------------------------------------
|
|
# Ces règles permettent d'écarter un diagnostic (status: ruled_out)
|
|
# si les preuves biologiques extraites le contredisent formellement.
|
|
# Elles génèrent aussi des alertes VETO-17 si la preuve est manquante.
|
|
|
|
missing_evidence:
|
|
enabled: true
|
|
veto: VETO-17
|
|
severity: LOW
|
|
score_penalty: 2
|
|
|
|
rules:
|
|
# --- IONOGRAMME ---
|
|
hyponatremia:
|
|
enabled: true
|
|
codes: ["E87.1"]
|
|
analyte: sodium
|
|
threshold_type: low
|
|
message: "natrémie normale"
|
|
|
|
hyperkalemia:
|
|
enabled: true
|
|
codes: ["E87.5"]
|
|
analyte: potassium
|
|
threshold_type: high
|
|
message: "kaliémie normale"
|
|
|
|
hypokalemia:
|
|
enabled: true
|
|
codes: ["E87.6"]
|
|
analyte: potassium
|
|
threshold_type: low
|
|
message: "kaliémie normale"
|
|
|
|
# --- HÉMATOLOGIE ---
|
|
anemia:
|
|
enabled: true
|
|
codes: ["D50", "D50.0", "D50.1", "D50.8", "D50.9", "D51", "D52", "D53", "D55", "D56", "D57", "D58", "D59", "D60", "D61", "D62", "D63", "D64"]
|
|
analyte: hemoglobin
|
|
threshold_type: low
|
|
message: "taux d'hémoglobine normal"
|
|
|
|
thrombopenia:
|
|
enabled: true
|
|
codes: ["D69.4", "D69.5", "D69.6"]
|
|
analyte: platelets
|
|
threshold_type: low
|
|
message: "taux de plaquettes normal"
|
|
|
|
# --- RÉNAL ---
|
|
acute_kidney_injury:
|
|
enabled: true
|
|
codes: ["N17", "N17.0", "N17.1", "N17.2", "N17.8", "N17.9", "N19"]
|
|
analyte: creatinine
|
|
threshold_type: high
|
|
message: "créatininémie normale"
|
|
|
|
# --- MÉTABOLISME ---
|
|
hypoglycemia:
|
|
enabled: true
|
|
codes: ["E16.0", "E16.1", "E16.2"]
|
|
analyte: glucose
|
|
threshold_type: low
|
|
message: "glycémie normale"
|
|
|
|
diabetes_uncontrolled:
|
|
enabled: true
|
|
codes: ["E10.1", "E11.1"] # Avec complications aiguës (acidocétose, etc.)
|
|
analyte: hba1c
|
|
threshold_type: high
|
|
threshold_value: 9.0
|
|
message: "HbA1c < 9% (diabète non considéré comme déséquilibré selon HbA1c)"
|
|
|
|
# --- THYROÏDE ---
|
|
hypothyroidism:
|
|
enabled: true
|
|
codes: ["E02", "E03", "E03.0", "E03.1", "E03.2", "E03.8", "E03.9"]
|
|
analyte: tsh
|
|
threshold_type: high # TSH élevée = Hypo
|
|
message: "TSH normale ou basse"
|
|
|
|
hyperthyroidism:
|
|
enabled: true
|
|
codes: ["E05", "E05.0", "E05.1", "E05.2", "E05.8", "E05.9"]
|
|
analyte: tsh
|
|
threshold_type: low # TSH basse = Hyper
|
|
message: "TSH normale ou élevée"
|