Files
t2a_v2/docs/GOLD_CRH_GUIDE.md
2026-03-05 00:37:41 +01:00

66 lines
2.8 KiB
Markdown

# Gold Standard CRH — Guide d'annotation
## Principe
Le gold CRH permet d'évaluer la qualité de la sélection DP (NUKE-3) sur des dossiers CRH réels. Chaque cas annoté définit le DP attendu avec des marges de tolérance DIM.
## Règles d'annotation (DP)
- **DP** = diagnostic qui motive l'essentiel de la prise en charge et la consommation de ressources
- Si étiologie connue : coder l'étiologie, pas le symptôme (ex: I26.9, pas R06.0)
- Si ambigu : remplir `dp_expected` + `dp_acceptable_codes` + `dp_acceptable_family3`
- Si seul un symptôme est défendable : mettre `allow_symptom_dp=true` + expliquer dans `notes`
- `confidence` : certain (1 seul DP possible), probable (fort mais alternatives), ambiguous (vraie ambiguïté)
- `evidence` : 1-3 extraits courts (max 240 chars), section + texte
## Schéma JSON
```json
{
"case_id": "106_23056475",
"document_type": "crh",
"dp_expected": {"code": "I26.9", "label": "Embolie pulmonaire"},
"dp_acceptable_codes": ["I26.0"],
"dp_acceptable_family3": ["I26"],
"allow_symptom_dp": false,
"confidence": "certain",
"evidence": [{"section": "Conclusion", "excerpt": "EP confirmée au scanner"}],
"notes": ""
}
```
## Procédure en 10 étapes
1. `python tools/gold_crh_annotator.py --bootstrap --out data/gold_crh/gold_template.csv`
2. Ouvrir le CSV dans un tableur (LibreOffice, Excel)
3. Filtrer les cas CRH (ignorer les trackare bypass)
4. Pour chaque CRH : lire le JSON pipeline, vérifier le DP proposé
5. Remplir `dp_expected_code` et `dp_expected_label` (code correct selon les règles DIM)
6. Ajouter les alternatives dans `dp_acceptable_codes` (séparés par `|`)
7. Ajouter les familles dans `dp_acceptable_family3` (séparés par `|`)
8. Remplir `confidence`, `allow_symptom_dp`, `evidence` et `notes`
9. `python tools/gold_crh_annotator.py --import-csv data/gold_crh/gold_template.csv`
10. `python tools/gold_crh_annotator.py --check data/gold_crh/gold_crh.jsonl`
## Métriques d'évaluation
| Métrique | Description |
|----------|-------------|
| `exact_match_strict` | Code choisi == `dp_expected.code` |
| `exact_match_tolerant_codes` | Code choisi dans `dp_acceptable_codes` |
| `family3_match_tolerant` | Famille 3 chars du code dans `dp_acceptable_family3` |
| `acceptable_match` | tolerant_codes OU family3_match |
| `confirmed_accuracy_tolerant` | acceptable_match sur les CONFIRMED uniquement |
| `symptom_not_allowed` | R* choisi alors que `allow_symptom_dp=false` |
## Fichiers
| Fichier | Rôle |
|---------|------|
| `data/gold_crh/gold_template.csv` | Template CSV pré-rempli |
| `data/gold_crh/gold_crh.jsonl` | Gold validé (1 JSON/ligne) |
| `data/gold_crh/gold_crh_index.json` | Index case_id → offset |
| `src/eval/gold_models.py` | Modèles Pydantic + évaluation |
| `tools/gold_crh_annotator.py` | CLI annotation |
| `docs/NUKE3_GOLD_EVAL.csv` | Résultats évaluation |