feat: optimisations pipeline médical (bio_normals, GHM, DP selector, CIM-10)
- bio_normals: table de normes biologiques étendue (+200 analytes) - bio_extraction: amélioration parsing valeurs biologiques - cim10_extractor: règles supplémentaires extraction codes - dp_selector: affinement sélection diagnostic principal - ghm: estimation sévérité GHM enrichie - validation_pipeline: correctifs mineurs Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
@@ -147,7 +147,7 @@ def _extract_biologie_faiss(text: str, dossier: DossierMedical) -> None:
|
||||
sanitized = _sanitize_bio_value(concept_name, raw_value, sanity_cfg)
|
||||
if sanitized:
|
||||
token, val_num, quality, reason = sanitized
|
||||
anomalie = _is_abnormal(concept_name, token)
|
||||
anomalie = _is_abnormal(concept_name, token, dossier.sejour.age if dossier.sejour else None, dossier.sejour.sexe if dossier.sejour else None)
|
||||
|
||||
is_dup = any(b.test == concept_name and b.valeur == raw_value for b in dossier.biologie_cle)
|
||||
if is_dup:
|
||||
@@ -208,6 +208,10 @@ def _extract_biologie(text: str, dossier: DossierMedical) -> None:
|
||||
]
|
||||
|
||||
|
||||
# Contexte patient pour normes adaptées (âge/sexe)
|
||||
_patient_age = dossier.sejour.age if dossier.sejour else None
|
||||
_patient_sexe = dossier.sejour.sexe if dossier.sejour else None
|
||||
|
||||
# Anti-doublons + limite par test (évite d'exploser le JSON)
|
||||
max_per_test = 6
|
||||
counts: dict[str, int] = {}
|
||||
@@ -234,7 +238,7 @@ def _extract_biologie(text: str, dossier: DossierMedical) -> None:
|
||||
counts[test_name] = counts.get(test_name, 0) + 1
|
||||
if counts[test_name] > max_per_test:
|
||||
break
|
||||
anomalie = _is_abnormal(test_name, raw_value)
|
||||
anomalie = _is_abnormal(test_name, raw_value, _patient_age, _patient_sexe)
|
||||
dossier.biologie_cle.append(
|
||||
BiologieCle(
|
||||
test=test_name,
|
||||
@@ -280,7 +284,7 @@ def _extract_biologie(text: str, dossier: DossierMedical) -> None:
|
||||
if drop_out_of_range:
|
||||
continue
|
||||
|
||||
anomalie = _is_abnormal(test_name, token)
|
||||
anomalie = _is_abnormal(test_name, token, _patient_age, _patient_sexe)
|
||||
dossier.biologie_cle.append(
|
||||
BiologieCle(
|
||||
test=test_name,
|
||||
|
||||
Reference in New Issue
Block a user