Bench standalone qui exécute build_dpi_enriched + appel LLM sur les 11 dossiers POC GHT Sud 95 (docs/clients/ght_sud_95/mockup_easily_assure/data.js), sans passer par Demo_urgence_2 ni Léa/Windows. Permet de mesurer la convergence durée/décision Python ↔ LLM sur un panel représentatif AVANT d'écrire le garde-fou serveur du commit 2. core/llm/t2a_mappings.py : - Module partagé TERRAIN_VERS_T2A (4 entrées validées par Dom 12/05) - Importé par le bench, sera importé aussi par le garde-fou serveur commit 2 - Cas non mappés volontairement documentés (Retour structure d'origine, chaîne vide pour statut_attente) scripts/bench_t2a_dryrun.py : - Parsing data.js via node (vm.runInContext) → 11 dossiers en JSON - Reconstruction d'un dpi_raw plat simulant l'OCR scroll auto : bandeau Easily Assure répété 5x (1 par onglet) + sections motif / examens / imagerie / notes médicales / Synthèse Urgences au format LIBELLÉ VALEUR - NE bypasse PAS build_dpi_enriched : le dpi_raw est texte plat re-parsé par la fonction (test de robustesse réel du parser regex) - Appel LLM déterministe : temperature=0, seed=42, model=gemma4:31b-cloud - Vérification empirique du respect du seed (2 appels successifs sur 1er dossier, comparaison decision/durée/justif) → warning si bruit cloud - 4 traces structurées par dossier dans logs/t2a_dryrun/<IPP>_<ts>.log : [t2a_dryrun_metadata] / [t2a_dryrun_prompt] / [t2a_dryrun_response] ou [t2a_dryrun_error] en cas d'échec API - Filet data_quality_warning (incohérence âge déclaré vs date naissance, motif vs diagnostic principal, décision vide) — filet, pas analyse exhaustive ; signale sans corriger (anonymisation v1 incertaine) - Tableau récap stdout 9 colonnes + CSV scripts/bench_t2a_dryrun_<ts>.csv - Stats agrégées : convergence durée X/N, convergence décision X/N mappés, liste détaillée des divergences avec pointeurs vers logs - Recommandation auto : réécrire PROMPT 3 ou non selon convergence durée Activation : T2A_DRYRUN=1 python scripts/bench_t2a_dryrun.py Options : --ipp <IPP> (1 dossier), --skip-seed-check Smoke test pré-commit (sans LLM) : parsing + dpi_raw + build_dpi_enriched sur les 11 dossiers → 11/11 metadata complets, 0 parsing_warning, durées calculées de 2.0h à 12.02h, décompo décisions terrain conforme (7 Consultation + 1 Hosp + 1 UHCD + 1 Transfert + 1 Retour structure). Brief complet : docs/handoffs/2026-05-12_brief_S1_build_dpi_enriched.md Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
30 lines
1.2 KiB
Python
30 lines
1.2 KiB
Python
"""Mappings métier pour la décision T2A (libellé terrain → catégorie T2A).
|
|
|
|
Table validée par Dom le 12 mai 2026 sur les 11 dossiers POC GHT Sud 95.
|
|
Module partagé : importé par `_handle_t2a_decision_action` (garde-fou serveur,
|
|
commit 2) ET par `scripts/bench_t2a_dryrun.py` (mini-bench standalone).
|
|
|
|
Cas spéciaux non mappés volontairement :
|
|
- "Retour structure d'origine" : à arbitrer cliniquement (email DIM
|
|
Pauline/Amina en cours). Loguera `Libellé terrain non mappé` sans erreur.
|
|
- "" (chaîne vide) : dossier en attente. Skip en amont par l'appelant.
|
|
|
|
Si un nouveau libellé apparaît hors POC actuel (déploiement futur autre
|
|
établissement), le bench le logguera `Libellé terrain non mappé` et il sera
|
|
ajouté ici après validation Dom.
|
|
|
|
Voir docs/handoffs/2026-05-12_brief_S1_build_dpi_enriched.md.
|
|
"""
|
|
|
|
from __future__ import annotations
|
|
|
|
from typing import Dict
|
|
|
|
|
|
TERRAIN_VERS_T2A: Dict[str, str] = {
|
|
"Consultation externe": "FORFAIT_URGENCE",
|
|
"Hospitalisation": "REQUALIFICATION_HOSPITALISATION",
|
|
"Sortie après surveillance UHCD": "REQUALIFICATION_HOSPITALISATION",
|
|
"Transfert intra-hospitalier": "REQUALIFICATION_HOSPITALISATION",
|
|
}
|