Couche 2 (revue humaine sur documents complets) : ajout de 6 cas
synthétiques pour atteindre la cible cadrage produit (10 cas).
Cas ajoutés :
- 005_bacterio_complete : layout BACTERIO N° venue rejeté avant IPP
+ RPPS prescripteur (pattern qualifié non détecté).
- 006_trackare_soignants : export Trackare avec activités HH:MM NOM,
Note IDE/médicale, Signé — médicament greedy.
- 007_lettre_sortie_complete : courrier médecin→médecin, multi-villes,
email institutionnel @chcb.fr (cassé par le force_term CHCB).
- 008_anesthesie_complete : protocole anesthésique avec molécules
BDPM, prénoms basques rares (Maddi, Pantxoa).
- 009_multi_etablissements : 3 établissements distincts (CHCB, CHU
Bordeaux, Clinique Aguilera), prénoms basques avec ñ (Beñat).
- 010_fiche_admission_minimale : fiche administrative dense, labels
variés (Nom de jeune fille :, Prénom :, Ville :, Mutuelle :).
Gate pytest (tests/unit/test_synthetic_review.py) :
- vérifie l'inventaire (10 cas) et fait passer chaque cas via run_case.
- 3 cas marqués xfail(strict=True) pour révéler 9 fuites de PII et
2 patterns partiels que le moteur ne couvre pas aujourd'hui :
* 005 — RPPS avec qualificateur (RPPS prescripteur :)
* 009 — Bordeaux résiduel après [ETAB], CHCB en fin de phrase,
Biarritz sur ligne Ville :, ñ qui casse Beñat → [NOM]ñat
* 010 — Nom de jeune fille / Prénom / Ville sans label "Patient :",
NIR au format espacé partiellement consommé en TEL,
numéro de mutuelle MGEN non couvert
- xfail strict force pytest à signaler un xpass quand un fix passe :
rappel automatique de retirer l'entrée de KNOWN_FAILURES.
Le runner tools/run_synthetic_review_corpus.py reste utilisable en
direct (sortie diff/audit/summary) pour la revue humaine. Les sorties
actual/ sont gitignorées (régénérées à chaque exécution).
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2.4 KiB
2.4 KiB
Revue 006 — dossier de soins Trackare
Famille documentaire : export Trackare/TrakCare avec activités de soins
horodatées et noms de soignants en formats variés. Regroupe les patterns
historiquement les plus piégeux du moteur (cf. mémoire soignants-trackare).
Le document doit contenir au moins deux marqueurs Trackare reconnus
(Détails des patients, Nom de naissance, Dossier Patient) pour que
_extract_trackare_identity se déclenche. Sans ces marqueurs, les patterns
spécifiques (HH:MM NOM, Note IDE NOM, Signé NOM, etc.) ne tournent pas.
Patterns testés et confirmés masqués :
Patient :\n<PRENOM>\n<NOM>(PIERRE / HARRIET) sur trois lignes ;- soignants
HH:MM <NOM>dans les activités de soins (ETCHEBARNE, ALVARADO, LACLAU-, NARZABAL, LACROUTS) — kind NOM_GLOBAL ; - soignants
Note IDE <NOM>(DUPONT) — kind NOM_FORCE ; - soignant
Note médicale Dr <NOM> <Prénom-composé>(MARTIN Jean-Paul) — capturé en bloc puis Jean-Paul re-confirmé en NOM_FORCE ; - soignant après médicament greedy
Signé — PARACETAMOL BBM 1000 MG INJ DURAND Sophie— DURAND et Sophie sont masqués via NOM_GLOBAL ; - nom tronqué
Signé LARRIEU-— masqué (kind NOM_FORCE).
Vérification métier (préservation) :
PARACETAMOL BBM 1000 MG INJreste lisible (gazetteer BDPM) ;cholécystectomie,EVA 2/10,Service de chirurgie viscéralerestent intacts ;Détails des patientsdoit rester pour conserver la trace de la source documentaire.
Écarts détectés au runner (à fixer ultérieurement) :
Saint-Jean-de-Luzpartiellement masqué en[ETABLISSEMENT]-de-Luzvia un hitETAB_FINESSsurSaint-Jean. La ville composée doit être prise comme un bloc avant que le matcher FINESS ne morde. Laisser le résiduel-de-Luzest un FP visuel mais pas une fuite directe.- classification
NDA→DOSSIER: la valeur2300784512derrièreNDA :est masquée mais le kind utilisé estDOSSIER, pasNDA. Le texte est masqué correctement, c'est la cohérence d'audit qui souffre. - horodatages
07:00deviennent07 : 00: une normalisation cosmétique ajoute des espaces autour du:. Sans impact sur la sécurité mais altère la lisibilité du document final. - bloc
Dr MARTIN Jean-Paulmasqué en un seul[NOM]: MARTIN et Jean-Paul sont bien dans l'audit, mais le renduNote médicale Dr [NOM]efface la structure préfixe+nom+prénom.