# 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 |