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:
@@ -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,
|
||||
})
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user