feat: filtrage des DAS parasites (artefacts OCR trackare)

Nouveau module das_filter.py avec 7 règles de rejet (trop court, chiffres,
lettre+chiffres OCR, mots concaténés/répétés, fragments non-médicaux) +
nettoyage newlines/ponctuation. Filtrage appliqué aux 3 sources de DAS :
trackare, regex et edsnlp. 31 tests unitaires.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
dom
2026-02-11 17:48:25 +01:00
parent 96ccb4850f
commit 31c29078a1
4 changed files with 172 additions and 3 deletions

View File

@@ -4,6 +4,8 @@ from __future__ import annotations
import re
from src.medical.das_filter import clean_diagnostic_text, is_valid_diagnostic_text
def parse_trackare(text: str) -> dict:
"""Parse un export Trackare et retourne les sections structurées."""
@@ -358,11 +360,14 @@ def _extract_diagnostics(text: str, result: dict) -> None:
r"(Principal|Associé|Significatif)\s+(actif|inactif)\s+([A-Z]\d{2}(?:\.\d{1,2})?)\s+(.+?)(?:\s+\[.*?\])?\s+\d{2}/\d{2}/\d{4}",
text,
):
libelle = clean_diagnostic_text(m.group(4).strip())
if not is_valid_diagnostic_text(libelle):
continue
result["diagnostics"].append({
"type": m.group(1),
"statut": m.group(2),
"code_cim10": m.group(3),
"libelle": m.group(4).strip(),
"libelle": libelle,
})