test(review): étendre couche 2 à 10 cas et brancher gate pytest avec xfail strict
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>
This commit is contained in:
@@ -0,0 +1,44 @@
|
||||
{
|
||||
"required_kinds": [
|
||||
"ADRESSE",
|
||||
"CODE_POSTAL",
|
||||
"DATE_NAISSANCE",
|
||||
"DOSSIER",
|
||||
"ETAB",
|
||||
"IPP",
|
||||
"NOM_FORCE",
|
||||
"NOM_GLOBAL",
|
||||
"TEL",
|
||||
"VILLE"
|
||||
],
|
||||
"must_contain": [
|
||||
"Service de chirurgie viscérale",
|
||||
"Détails des patients",
|
||||
"prise en charge",
|
||||
"cholécystectomie",
|
||||
"EVA 2/10",
|
||||
"PARACETAMOL"
|
||||
],
|
||||
"must_not_contain": [
|
||||
"PIERRE",
|
||||
"HARRIET",
|
||||
"ETCHEBARNE",
|
||||
"ALVARADO",
|
||||
"LACLAU ",
|
||||
"NARZABAL",
|
||||
"LACROUTS",
|
||||
"LARRIEU ",
|
||||
"DUPONT",
|
||||
"MARTIN",
|
||||
"DURAND",
|
||||
"Jean-Paul",
|
||||
"Sophie",
|
||||
"GHI11223",
|
||||
"2300784512",
|
||||
"23145678",
|
||||
"04/09/1956",
|
||||
"06 87 65 43 21",
|
||||
"05 59 44 35 35",
|
||||
"CHCB"
|
||||
]
|
||||
}
|
||||
@@ -0,0 +1,39 @@
|
||||
[ETABLISSEMENT]
|
||||
Service de chirurgie viscérale
|
||||
|
||||
Dossier Patient — Détails des patients
|
||||
[VILLE], le 22/05/2024
|
||||
|
||||
Patient :
|
||||
[NOM]
|
||||
[NOM]
|
||||
Nom de naissance : [NOM]
|
||||
[DATE_NAISSANCE]
|
||||
N° dossier : [DOSSIER]
|
||||
NDA : [DOSSIER]
|
||||
IPP : [IPP]
|
||||
|
||||
Adresse : [ADRESSE]
|
||||
Code postal : [CODE_POSTAL]
|
||||
Ville : [ETABLISSEMENT]-de-Luz
|
||||
Téléphone : [TEL]
|
||||
|
||||
Activités de soins :
|
||||
07 : 00 [NOM] Pose voie veineuse périphérique.
|
||||
07 : 15 [NOM] Surveillance constantes.
|
||||
08 : 00 [NOM]- Bilan d'entrée terminé.
|
||||
12 : 30 [NOM] Distribution médicamenteuse.
|
||||
19 : 00 [NOM] Sortie de bloc, surveillance post-op.
|
||||
|
||||
Note IDE [NOM]
|
||||
Patient calme, douleur EVA 2/10. Pansement propre.
|
||||
|
||||
Note médicale Dr [NOM]
|
||||
Suites simples post cholécystectomie. La prise en charge anti-douleur
|
||||
est efficace. Reprise alimentaire progressive. Service de chirurgie
|
||||
viscérale : rendez-vous de contrôle à J+15.
|
||||
|
||||
Signé — PARACETAMOL BBM 1000 MG INJ [NOM] [NOM]
|
||||
Signé [NOM]-
|
||||
|
||||
Tel service : [TEL]
|
||||
@@ -0,0 +1,43 @@
|
||||
# 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 INJ` reste lisible (gazetteer BDPM) ;
|
||||
- `cholécystectomie`, `EVA 2/10`, `Service de chirurgie viscérale`
|
||||
restent intacts ;
|
||||
- `Détails des patients` doit rester pour conserver la trace de la
|
||||
source documentaire.
|
||||
|
||||
Écarts détectés au runner (à fixer ultérieurement) :
|
||||
- **`Saint-Jean-de-Luz` partiellement masqué en `[ETABLISSEMENT]-de-Luz`**
|
||||
via un hit `ETAB_FINESS` sur `Saint-Jean`. La ville composée doit être
|
||||
prise comme un bloc avant que le matcher FINESS ne morde. Laisser le
|
||||
résiduel `-de-Luz` est un FP visuel mais pas une fuite directe.
|
||||
- **classification `NDA` → `DOSSIER`** : la valeur `2300784512` derrière
|
||||
`NDA :` est masquée mais le kind utilisé est `DOSSIER`, pas `NDA`. Le
|
||||
texte est masqué correctement, c'est la cohérence d'audit qui souffre.
|
||||
- **horodatages `07:00` deviennent `07 : 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-Paul` masqué en un seul `[NOM]`** : MARTIN et
|
||||
Jean-Paul sont bien dans l'audit, mais le rendu `Note médicale Dr [NOM]`
|
||||
efface la structure préfixe+nom+prénom.
|
||||
39
tests/synthetic_review/cases/006_trackare_soignants/test.txt
Normal file
39
tests/synthetic_review/cases/006_trackare_soignants/test.txt
Normal file
@@ -0,0 +1,39 @@
|
||||
CENTRE HOSPITALIER DE LA COTE BASQUE
|
||||
Service de chirurgie viscérale
|
||||
|
||||
Dossier Patient — Détails des patients
|
||||
Bayonne, le 22/05/2024
|
||||
|
||||
Patient :
|
||||
PIERRE
|
||||
HARRIET
|
||||
Nom de naissance : HARRIET
|
||||
Né le 04/09/1956
|
||||
N° dossier : 23145678
|
||||
NDA : 2300784512
|
||||
IPP : GHI11223
|
||||
|
||||
Adresse : 3 chemin du Moulin
|
||||
Code postal : 64500
|
||||
Ville : Saint-Jean-de-Luz
|
||||
Téléphone : 06 87 65 43 21
|
||||
|
||||
Activités de soins :
|
||||
07:00 ETCHEBARNE Pose voie veineuse périphérique.
|
||||
07:15 ALVARADO Surveillance constantes.
|
||||
08:00 LACLAU- Bilan d'entrée terminé.
|
||||
12:30 NARZABAL Distribution médicamenteuse.
|
||||
19:00 LACROUTS Sortie de bloc, surveillance post-op.
|
||||
|
||||
Note IDE DUPONT
|
||||
Patient calme, douleur EVA 2/10. Pansement propre.
|
||||
|
||||
Note médicale Dr MARTIN Jean-Paul
|
||||
Suites simples post cholécystectomie. La prise en charge anti-douleur
|
||||
est efficace. Reprise alimentaire progressive. Service de chirurgie
|
||||
viscérale : rendez-vous de contrôle à J+15.
|
||||
|
||||
Signé — PARACETAMOL BBM 1000 MG INJ DURAND Sophie
|
||||
Signé LARRIEU-
|
||||
|
||||
Tel service : 05 59 44 35 35
|
||||
Reference in New Issue
Block a user