fix(detect): RPPS avec qualificateur (RPPS prescripteur :, RPPS de garde :…) (#1)
Étend `RE_RPPS` pour tolérer 0 à 3 mots qualificateurs entre `RPPS` et le séparateur `:` ou `-`. Couvre les variantes observées : - RPPS prescripteur : - RPPS du médecin signataire : - RPPS de garde - - N° RPPS : Si un qualificateur est présent, le séparateur (`:` ou `-`) devient obligatoire pour éviter d'aspirer du narratif (faux positif type "Le RPPS est consulté pour vérifier 12345678901 dans la base"). La lambda `_repl_rpps` reconstruit `RPPS : [RPPS]` en sortie : le qualificateur est consommé mais perdu (pas de fuite, choix cosmétique). Cas 005_bacterio_complete passe désormais (retiré de KNOWN_FAILURES). La fuite `10101010101` derrière `RPPS prescripteur :` est masquée. Cohérent avec le cadrage section 10.1 (règle cœur générique applicable à tout établissement de santé français — pas de spécificité locale). Tests : 72 passed, 1 xfailed (avant : 71 passed, 2 xfailed). Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -391,7 +391,19 @@ RE_IPP = re.compile(r"\b(?:I\.?P\.?P\.?|IPP|N°\s*Ipp)\s*[:\-]?\s*([A-Za-z0-9]{6
|
||||
RE_CSULT = re.compile(r"\b(?:N°\s*Csult|N°\s*Interv)\s*[:\-]?\s*(\d{6,})\b", re.IGNORECASE)
|
||||
RE_FINESS = re.compile(r"\b(?:N°\s*)?FINESS?\s*[:\-]?\s*(\d{9})\b", re.IGNORECASE)
|
||||
RE_OGC = re.compile(r"\b(?:N°\s*)?OGC\s*[:\-]?\s*([A-Za-z0-9\-]{1,})\b", re.IGNORECASE)
|
||||
RE_RPPS = re.compile(r"\b(?:N°\s*)?RPPS\s*[:\-]?\s*(\d{8,11})\b", re.IGNORECASE)
|
||||
RE_RPPS = re.compile(
|
||||
r"\b(?:N°\s*)?RPPS"
|
||||
# 0 à 3 mots qualificateurs entre RPPS et la valeur :
|
||||
# "RPPS prescripteur :", "RPPS du médecin signataire :",
|
||||
# "RPPS de garde :", etc. Si qualificateur présent, le séparateur
|
||||
# est obligatoire pour éviter d'aspirer du narratif.
|
||||
r"(?:"
|
||||
r"(?:\s+[A-Za-zéèàùÉÈÀÙ'-]+){1,3}\s*[:\-]\s*"
|
||||
r"|\s*[:\-]?\s*"
|
||||
r")"
|
||||
r"(\d{8,11})\b",
|
||||
re.IGNORECASE,
|
||||
)
|
||||
RE_NUM_ADHERENT = re.compile(
|
||||
r"\b(?:n[°o]?\s*|num[ée]ro\s+(?:d['’]\s*)?)adh[ée]rent[e]?\s*[:\-]?\s*([A-Z0-9]{6,15})\b",
|
||||
re.IGNORECASE,
|
||||
|
||||
Reference in New Issue
Block a user