feat: enrichissement CIM-10 sous-codes + normes biologiques dans prompt DAS
Piste 1 : ajout de cim10_supplements.json (40 sous-codes E10/E11/E13/F10) fusionné au chargement par load_dict() — E11.9 et autres ne sont plus rejetés. Piste 2 : export BIO_NORMALS depuis cim10_extractor, inclusion des plages de référence [N: min-max] dans le contexte LLM et règle explicite dans le prompt DAS pour éviter les hallucinations sur valeurs biologiques normales. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
@@ -873,6 +873,23 @@ def _lookup_cim10(text: str) -> str | None:
|
||||
return dict_lookup(text, domain_overrides=CIM10_MAP)
|
||||
|
||||
|
||||
# Plages de référence biologiques (min, max) — utilisées par _is_abnormal()
|
||||
# et exportées pour le formatage du contexte LLM dans rag_search.py
|
||||
BIO_NORMALS: dict[str, tuple[float, float]] = {
|
||||
"Lipasémie": (0, 60),
|
||||
"CRP": (0, 5),
|
||||
"ASAT": (0, 40),
|
||||
"ALAT": (0, 40),
|
||||
"GGT": (0, 60),
|
||||
"PAL": (0, 150),
|
||||
"Bilirubine totale": (0, 17),
|
||||
"Hémoglobine": (12, 17),
|
||||
"Plaquettes": (150, 400),
|
||||
"Leucocytes": (4, 10),
|
||||
"Créatinine": (50, 120),
|
||||
}
|
||||
|
||||
|
||||
def _is_abnormal(test: str, value: str) -> bool | None:
|
||||
"""Détermine si un résultat biologique est anormal."""
|
||||
try:
|
||||
@@ -884,21 +901,7 @@ def _is_abnormal(test: str, value: str) -> bool | None:
|
||||
return True
|
||||
return None
|
||||
|
||||
normals: dict[str, tuple[float, float]] = {
|
||||
"Lipasémie": (0, 60),
|
||||
"CRP": (0, 5),
|
||||
"ASAT": (0, 40),
|
||||
"ALAT": (0, 40),
|
||||
"GGT": (0, 60),
|
||||
"PAL": (0, 150),
|
||||
"Bilirubine totale": (0, 17),
|
||||
"Hémoglobine": (12, 17),
|
||||
"Plaquettes": (150, 400),
|
||||
"Leucocytes": (4, 10),
|
||||
"Créatinine": (50, 120),
|
||||
}
|
||||
|
||||
if test in normals:
|
||||
lo, hi = normals[test]
|
||||
if test in BIO_NORMALS:
|
||||
lo, hi = BIO_NORMALS[test]
|
||||
return val > hi or val < lo
|
||||
return None
|
||||
|
||||
Reference in New Issue
Block a user