Trois fixes qui font passer 009_multi_etablissements en vert et ferment la liste des fuites identifiées par la couche 2. #3 — `Centre Hospitalier Universitaire de Bordeaux` coupé sur deux lignes Nouveau pattern `RE_ETAB_LINEBREAK` (strict) en pré-passe sur la page entière, juste avant le découpage en lignes. Match `<TYPE>\n<suite>` avec : - TYPE limité (Centre Hospitalier, Hôpital, Clinique, Polyclinique, CHU, CHRU, CHS) ; - un seul `\n` autorisé entre TYPE et suite ; - la suite démarre obligatoirement par un connecteur typique (Universitaire, de, d', du, des, la, le, les) puis UN nom propre. Évite le FP `CENTRE HOSPITALIER COTE BASQUE\nService d'anesthésie` (le `\n` n'est pas immédiat après le type, donc pas de match). #4 — `CHCB` en fin de phrase suivi de ` ;` `_kv_value_only_mask` splittait `transféré au CHCB pour la rééducation ;` sur le `;` du `SPLITTER` (`\s*[:|;\t]\s*`), produisant une value vide. La key contenait CHCB mais n'était passée qu'à `_mask_critical_in_key` qui ne couvre pas les force_terms admin_rules. Fix : fallback sur `_mask_line_by_regex(line)` (qui appelle `_apply_overrides` → force_terms) si la value est vide ou la key dépasse 5 mots (heuristique narrative). #5 — `Biarritz` non masqué après `[ETABLISSEMENT] à Biarritz` `_mask_ville_gazetteers` skippait par sécurité toute ville détectée juste après un placeholder établissement précédé de `de/du/d'/à`. Le `à` était inclus pour éviter les FP, mais c'est la préposition de LOCALISATION par excellence : `Clinique Aguilera à Biarritz` perd Biarritz à tort. Restreint le skip à `de/du/d'` (qui sont des parties de nom d'établissement type `CHU de Bordeaux`). `à` reste actif. Couche 2 entièrement verte : 73 passed, 0 xfailed (avant : 72 + 1 xfailed). KNOWN_FAILURES vidé. La gate pytest est désormais le contrat de non-régression sur 10 documents complets. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
3.0 KiB
3.0 KiB
Revue 009 — compte rendu multi-établissements
Famille documentaire : consultation neurologique impliquant trois établissements distincts cités dans le narratif (CHCB, CHU de Bordeaux, Clinique Aguilera). Document typique du parcours de soin patient passant d'un établissement à l'autre.
Patterns testés :
- établissement principal en entête (CHCB) ;
- établissement secondaire en narratif (
Centre Hospitalier Universitaire de Bordeaux,CHU de Bordeaux) — variantes longue et courte du même établissement ; - établissement privé en narratif (
Clinique Aguilera) — pas dans les gazetteers FINESS publics par défaut, doit être détecté contextuellement via le mot-cléClinique; - prénoms basques rares (Iban, Xabi, Maïté, Beñat) sur trois noms de médecins différents — risque de FN si gazetteer prénoms incomplet ;
- nom composé avec accent (
Maïté) ; - code CIM
G56.8cité littéralement — préservation obligatoire.
Points critiques :
- aucun token nominal de patient (SALABERRY Iban) ni des trois médecins (ELISSALDE Xabi, LARRALDE Maïté, ITHURRIAGUE Beñat) ne doit fuiter ;
- les villes Bordeaux, Biarritz, Bayonne et le nom d'établissement Aguilera doivent toutes disparaître ;
- le sigle
CHCBdoit être masqué (force_term) ; - le terme
CHU de Bordeauxdoit être masqué — y compris la version courte qui ne contient pas explicitementCentre Hospitalier; - terminologie médicale dense doit rester intacte :
neuropathie périphérique,réflexes ostéotendineux,rééducation fonctionnelle,EMG,IRM médullaire.
Écarts résolus dans la session 2026-04-28 :
Centre Hospitalier Universitaire de Bordeauxcoupé sur deux lignes : pré-passeRE_ETAB_LINEBREAKajoutée dans la phase 1 — fusionne strictement les coupures<TYPE>\n<connecteur+nom>(avec un seul nom propre maximum derrière) sans grignoter la ligne suivante non liée. Couvre aussiCHU\nde Bordeaux.CHCBnon masqué en fin de phrase suivi de;: leSPLITTER(\s*[:|;\t]\s*) splittait la ligne narrative sur le;final, produisant une "value" vide. La key (qui contenait CHCB) n'était pas passée à_mask_line_by_regex(donc pas aux force_terms). Fix dans_kv_value_only_mask: si la value est vide ou la key dépasse 5 mots, fallback sur_mask_line_by_regex(line)complet.Biarritznon masqué après[ETABLISSEMENT] à Biarritz: le garde-fou_mask_ville_gazetteersskippait toute ville après un placeholder établissement précédé dede/du/d'/à. Restreint àde/du/d'(parties de nom d'établissement) —àreste actif pour les vraies localisations.Beñatpartiellement masqué : déjà résolu via l'extension Ñ/ñ dans les classes de caractères (commitc24b7f6).
Variantes établissement gérées :
- forme longue
Centre Hospitalier Universitaire de Bordeaux; - forme sigle
CHU de Bordeaux; - coupures de ligne sur les deux ;
- établissement privé
Clinique Aguileradétecté viaRE_HOPITAL_VILLE.