66 lines
2.8 KiB
Markdown
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 |
|