# 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.8` cité 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 `CHCB` doit être masqué (force_term) ;
- le terme `CHU de Bordeaux` doit être masqué — y compris la version
  courte qui ne contient pas explicitement `Centre 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 Bordeaux` coupé sur deux lignes** :
  pré-passe `RE_ETAB_LINEBREAK` ajouté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 aussi `CHU\nde Bordeaux`.
- **`CHCB` non masqué en fin de phrase suivi de ` ;`** : le `SPLITTER`
  (`\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.
- **`Biarritz` non masqué après `[ETABLISSEMENT] à Biarritz`** : le
  garde-fou `_mask_ville_gazetteers` skippait toute ville après un
  placeholder établissement précédé de `de/du/d'/à`. Restreint à
  `de/du/d'` (parties de nom d'établissement) — `à` reste actif pour
  les vraies localisations.
- **`Beñat` partiellement masqué** : déjà résolu via l'extension Ñ/ñ
  dans les classes de caractères (commit c24b7f6).

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 Aguilera` détecté via `RE_HOPITAL_VILLE`.
