feat: fix extraction DP Trackare + 5 règles ATIH (veto engine)
- Fix DP : les diagnostics Trackare marqués "principal" ne sont plus filtrés par is_valid_diagnostic_text() (3 dossiers récupérés) - VETO-20 : Z code interdit en DP (sauf whitelist Z09/Z51/Z54/Z75...) - VETO-21 : Code R (symptôme) en DP → alerte CMD 23 - VETO-22 : Même catégorie 3 chars en DP+DAS (redondance) - VETO-23 : Exclusions mutuelles (E10↔E11, I10↔I11-I13) - VETO-24 : Lésion traumatique (S/T) sans cause externe (V/W/X/Y) - 24 tests unitaires, 699 tests passent sans régression Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
@@ -315,14 +315,17 @@ def _extract_diagnostics(
|
||||
# Diagnostics codés depuis Trackare (prioritaires)
|
||||
for diag in parsed.get("diagnostics", []):
|
||||
texte = clean_diagnostic_text(diag.get("libelle", ""))
|
||||
if not is_valid_diagnostic_text(texte):
|
||||
is_principal = diag.get("type", "").lower() == "principal"
|
||||
# Le DP Trackare est toujours accepté (pré-codé avec CIM-10 validé).
|
||||
# Seuls les DAS passent le filtre anti-bruit.
|
||||
if not is_principal and not is_valid_diagnostic_text(texte):
|
||||
continue
|
||||
d = Diagnostic(
|
||||
texte=texte,
|
||||
cim10_suggestion=diag.get("code_cim10"),
|
||||
source="trackare",
|
||||
)
|
||||
if diag.get("type", "").lower() == "principal":
|
||||
if is_principal:
|
||||
dossier.diagnostic_principal = d
|
||||
else:
|
||||
dossier.diagnostics_associes.append(d)
|
||||
|
||||
Reference in New Issue
Block a user