chore: add .gitignore
This commit is contained in:
21
docs/DEPENDENCIES.md
Normal file
21
docs/DEPENDENCIES.md
Normal file
@@ -0,0 +1,21 @@
|
||||
# Dépendances T2A v2
|
||||
|
||||
## Versions validées (pytest OK, 2026-02-24)
|
||||
|
||||
| Package | Installée | Contrainte requirements.txt |
|
||||
|----------------|-------------|----------------------------|
|
||||
| protobuf | 3.20.3 | >=3.20.0,<7.0.0 |
|
||||
| transformers | 4.57.6 | >=4.35.0,<6.0.0 |
|
||||
| torch | 2.7.1 | >=2.1.0 |
|
||||
| pydantic | 2.11.5 | >=2.5.0 |
|
||||
| sentencepiece | 0.1.99 | >=0.1.99,<0.3.0 |
|
||||
|
||||
## Recommandation
|
||||
|
||||
Pour figer l'environnement exact :
|
||||
|
||||
```bash
|
||||
pip freeze > requirements.lock
|
||||
```
|
||||
|
||||
Utiliser `requirements.lock` pour les déploiements, `requirements.txt` pour le développement.
|
||||
65
docs/GOLD_CRH_GUIDE.md
Normal file
65
docs/GOLD_CRH_GUIDE.md
Normal file
@@ -0,0 +1,65 @@
|
||||
# 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 |
|
||||
310
docs/NUKE3_BENCHMARK_REPORT.md
Normal file
310
docs/NUKE3_BENCHMARK_REPORT.md
Normal file
@@ -0,0 +1,310 @@
|
||||
# NUKE-3 — Benchmark Report
|
||||
|
||||
**Date** : 2026-02-24 17:44
|
||||
**Commit** : `cad0dd2`
|
||||
**Dossiers analysés** : 249
|
||||
**Mode** : analyse offline (JSON existants)
|
||||
|
||||
## Métriques DIM-like
|
||||
|
||||
| Métrique | Valeur |
|
||||
|----------|--------|
|
||||
| CONFIRMED rate | 77.9% |
|
||||
| REVIEW rate | 22.1% |
|
||||
| CONFIRMED + evidence | 100.0% |
|
||||
| DP symptôme (R*) | 0.4% |
|
||||
| DP comorbidité | 0.4% |
|
||||
| DP acte-seul | 0.0% |
|
||||
| DP R-code | 9.2% |
|
||||
| Confidence high | 77.9% |
|
||||
|
||||
## Volumes
|
||||
|
||||
- Dossiers avec dp_selection : 249/249
|
||||
- CONFIRMED : 194
|
||||
- REVIEW : 55
|
||||
- Confidence — high: 194, medium: 54, low: 0
|
||||
|
||||
## Détail par dossier
|
||||
|
||||
| Dossier | Verdict | Code | Confidence | Evidence | Candidats | Reason |
|
||||
|---------|---------|------|------------|----------|-----------|--------|
|
||||
| 100_23054899 | CONFIRMED | H70.0 | high | 1 | 0 | DP Trackare — source d'autorité |
|
||||
| 101_23041413 | CONFIRMED | Y83.8 | high | 1 | 0 | DP Trackare — source d'autorité |
|
||||
| 102_23056463 | CONFIRMED | M45 | high | 1 | 0 | DP Trackare — source d'autorité |
|
||||
| 103_23056749 | CONFIRMED | F06.0 | high | 1 | 0 | DP Trackare — source d'autorité |
|
||||
| 104_23001083 | CONFIRMED | F41.00 | high | 1 | 0 | DP Trackare — source d'autorité |
|
||||
| 105_23052612 | CONFIRMED | M35.2 | high | 1 | 0 | DP Trackare — source d'autorité |
|
||||
| 106_23056475 | REVIEW | I26.9 | medium | 1 | 7 | Écart 1.0 < seuil 3.0, LLM désactivé |
|
||||
| 107_23030611 | CONFIRMED | N76 | high | 1 | 0 | DP Trackare — source d'autorité |
|
||||
| 108_23061103 | CONFIRMED | S72.0 | high | 1 | 0 | DP Trackare — source d'autorité |
|
||||
| 109_23028431 | CONFIRMED | K83.5 | high | 1 | 0 | DP Trackare — source d'autorité |
|
||||
| 10_23079252 | CONFIRMED | K81.0 | high | 1 | 0 | DP Trackare — source d'autorité |
|
||||
| 110_23061319 | REVIEW | T83.5 | medium | 1 | 2 | Écart 2.0 < seuil 3.0, LLM désactivé |
|
||||
| 111_23061304 | REVIEW | N19 | medium | 1 | 3 | Écart 1.0 < seuil 3.0, LLM désactivé |
|
||||
| 112_23065936 | REVIEW | I25.5 | medium | 1 | 7 | Écart 0.0 < seuil 3.0, LLM désactivé |
|
||||
| 113_23065949 | CONFIRMED | K57.5 | high | 1 | 0 | DP Trackare — source d'autorité |
|
||||
| 114_23060661 | CONFIRMED | N23 | high | 1 | 0 | DP Trackare — source d'autorité |
|
||||
| 115_23066188 | CONFIRMED | A87.0 | high | 1 | 0 | DP Trackare — source d'autorité |
|
||||
| 116_23065570 | CONFIRMED | N17.9 | high | 1 | 0 | DP Trackare — source d'autorité |
|
||||
| 117_23067053 | CONFIRMED | K28 | high | 1 | 0 | DP Trackare — source d'autorité |
|
||||
| 118_23042633 | CONFIRMED | X20.13 | high | 1 | 0 | DP Trackare — source d'autorité |
|
||||
| 119_23062819 | CONFIRMED | R48.10 | high | 1 | 0 | DP Trackare — source d'autorité |
|
||||
| 11_23082513 | CONFIRMED | K80.0 | high | 1 | 0 | DP Trackare — source d'autorité |
|
||||
| 120_23033508 | REVIEW | N85.7 | medium | 1 | 7 | Écart 1.0 < seuil 3.0, LLM désactivé |
|
||||
| 121_23044152 | CONFIRMED | M17.9 | high | 1 | 0 | DP Trackare — source d'autorité |
|
||||
| 122_23070126 | CONFIRMED | I67.4 | high | 1 | 0 | DP Trackare — source d'autorité |
|
||||
| 123_23071970 | CONFIRMED | R06.0 | high | 1 | 0 | DP Trackare — source d'autorité |
|
||||
| 124_23074376 | CONFIRMED | Q91.0 | high | 1 | 0 | DP Trackare — source d'autorité |
|
||||
| 125_23074494 | CONFIRMED | S72.1 | high | 1 | 0 | DP Trackare — source d'autorité |
|
||||
| 126_23075530 | REVIEW | E03.9 | medium | 1 | 7 | Écart 0.0 < seuil 3.0, LLM indisponible |
|
||||
| 127_23048705 | CONFIRMED | M17.9 | high | 1 | 0 | DP Trackare — source d'autorité |
|
||||
| 128_23076141 | CONFIRMED | E11.0 | high | 1 | 0 | DP Trackare — source d'autorité |
|
||||
| 129_23076325 | CONFIRMED | I11.0 | high | 1 | 0 | DP Trackare — source d'autorité |
|
||||
| 12_23084754 | CONFIRMED | K81.9 | high | 1 | 0 | DP Trackare — source d'autorité |
|
||||
| 130_23077240 | CONFIRMED | J90 | high | 1 | 0 | DP Trackare — source d'autorité |
|
||||
| 131_23079402 | CONFIRMED | R06.0 | high | 1 | 0 | DP Trackare — source d'autorité |
|
||||
| 132_23080179 | REVIEW | R59.0 | medium | 2 | 0 | Trackare symptôme vs CRH diagnostic — vérification DIM requi |
|
||||
| 133_23056022 | CONFIRMED | H33.2 | high | 1 | 0 | DP Trackare — source d'autorité |
|
||||
| 134_23050890 | CONFIRMED | Q64.0 | high | 1 | 0 | DP Trackare — source d'autorité |
|
||||
| 135_23036651 | CONFIRMED | R04.0 | high | 1 | 0 | DP Trackare — source d'autorité |
|
||||
| 136_23083065 | CONFIRMED | Z99.1 | high | 1 | 0 | DP Trackare — source d'autorité |
|
||||
| 137_23083269 | CONFIRMED | G40.9 | high | 1 | 0 | DP Trackare — source d'autorité |
|
||||
| 138_23051225 | CONFIRMED | Y90.4 | high | 1 | 0 | DP Trackare — source d'autorité |
|
||||
| 139_23087691 | REVIEW | M16.7 | medium | 1 | 7 | Écart 0.0 < seuil 3.0, LLM désactivé |
|
||||
| 13_23085314 | CONFIRMED | K81.0 | high | 1 | 0 | DP Trackare — source d'autorité |
|
||||
| 140_23090475 | REVIEW | Z54.8 | medium | 1 | 7 | Écart 0.0 < seuil 3.0, LLM désactivé |
|
||||
| 141_23090597 | CONFIRMED | K85.9 | high | 1 | 0 | DP Trackare — source d'autorité |
|
||||
| 142_23093202 | CONFIRMED | K83.0 | high | 1 | 0 | DP Trackare — source d'autorité |
|
||||
| 143_23096917 | CONFIRMED | K35.8 | high | 1 | 0 | DP Trackare — source d'autorité |
|
||||
| 144_23097531 | CONFIRMED | D86 | high | 1 | 0 | DP Trackare — source d'autorité |
|
||||
| 145_23057452 | REVIEW | Z00.8 | medium | 2 | 0 | R5 — Z-code non whitelisté en DP |
|
||||
| 146_23099769 | REVIEW | T83.5 | medium | 1 | 7 | Écart 2.0 < seuil 3.0, LLM désactivé |
|
||||
| 147_23067572 | CONFIRMED | K40.9 | high | 1 | 0 | DP Trackare — source d'autorité |
|
||||
| 148_23018396 | REVIEW | A41.9 | medium | 1 | 4 | Écart 2.0 < seuil 3.0, LLM désactivé |
|
||||
| 149_23089771 | REVIEW | H16.0 | medium | 1 | 7 | Écart 0.0 < seuil 3.0, LLM désactivé |
|
||||
| 14_23089947 | CONFIRMED | K85.1 | high | 1 | 0 | DP Trackare — source d'autorité |
|
||||
| 150_23101667 | CONFIRMED | R06.0 | high | 1 | 0 | DP Trackare — source d'autorité |
|
||||
| 151_23102469 | CONFIRMED | N17.9 | high | 1 | 0 | DP Trackare — source d'autorité |
|
||||
| 152_23103061 | CONFIRMED | I74.2 | high | 1 | 0 | DP Trackare — source d'autorité |
|
||||
| 153_23102610 | REVIEW | T83.5 | medium | 1 | 7 | Écart 1.0 < seuil 3.0, LLM désactivé |
|
||||
| 154_23096269 | CONFIRMED | E11.8 | high | 1 | 0 | DP Trackare — source d'autorité |
|
||||
| 155_23096278 | CONFIRMED | J45.9 | high | 1 | 0 | DP Trackare — source d'autorité |
|
||||
| 156_23104564 | CONFIRMED | Z51.1 | high | 1 | 0 | DP Trackare — source d'autorité |
|
||||
| 157_23106204 | CONFIRMED | Z99.1 | high | 1 | 0 | DP Trackare — source d'autorité |
|
||||
| 158_23105874 | CONFIRMED | A41.3 | high | 1 | 0 | DP Trackare — source d'autorité |
|
||||
| 159_23107113 | REVIEW | I26.9 | medium | 1 | 7 | Écart 0.0 < seuil 3.0, LLM désactivé |
|
||||
| 15_23096332 | CONFIRMED | K81.9 | high | 1 | 0 | DP Trackare — source d'autorité |
|
||||
| 160_23099448 | REVIEW | E88.1 | medium | 1 | 7 | Écart 1.0 < seuil 3.0, LLM désactivé |
|
||||
| 161_23098838 | CONFIRMED | I11.0 | high | 1 | 0 | DP Trackare — source d'autorité |
|
||||
| 162_23109279 | CONFIRMED | C81.9 | high | 1 | 0 | DP Trackare — source d'autorité |
|
||||
| 163_23109304 | CONFIRMED | Z99.1 | high | 1 | 0 | DP Trackare — source d'autorité |
|
||||
| 164_23100745 | CONFIRMED | R06.0 | high | 1 | 0 | DP Trackare — source d'autorité |
|
||||
| 165_23104930 | CONFIRMED | K85.0 | high | 1 | 0 | DP Trackare — source d'autorité |
|
||||
| 166_23113695 | CONFIRMED | N17.9 | high | 1 | 0 | DP Trackare — source d'autorité |
|
||||
| 167_23104446 | CONFIRMED | I10 | high | 1 | 0 | DP Trackare — source d'autorité |
|
||||
| 168_23113717 | CONFIRMED | R06.0 | high | 1 | 0 | DP Trackare — source d'autorité |
|
||||
| 169_23115483 | CONFIRMED | E87.2 | high | 1 | 0 | DP Trackare — source d'autorité |
|
||||
| 16_23098082 | CONFIRMED | K85.9 | high | 1 | 0 | DP Trackare — source d'autorité |
|
||||
| 170_23077016 | REVIEW | K59.0 | medium | 1 | 7 | Écart 0.0 < seuil 3.0, LLM désactivé |
|
||||
| 171_23108560 | CONFIRMED | N17.9 | high | 1 | 0 | DP Trackare — source d'autorité |
|
||||
| 172_23119469 | CONFIRMED | J90 | high | 1 | 0 | DP Trackare — source d'autorité |
|
||||
| 173_23069373 | CONFIRMED | E04.2 | high | 1 | 0 | DP Trackare — source d'autorité |
|
||||
| 174_23080042 | REVIEW | Q40.1 | medium | 1 | 7 | Écart 1.0 < seuil 3.0, LLM désactivé |
|
||||
| 175_23116191 | CONFIRMED | J45.9 | high | 1 | 0 | DP Trackare — source d'autorité |
|
||||
| 176_23124187 | CONFIRMED | I10 | high | 1 | 0 | DP Trackare — source d'autorité |
|
||||
| 177_23110276 | CONFIRMED | N82.9 | high | 1 | 0 | DP Trackare — source d'autorité |
|
||||
| 178_23124458 | CONFIRMED | J01.2 | high | 1 | 0 | DP Trackare — source d'autorité |
|
||||
| 179_23126805 | REVIEW | Z00.0 | medium | 2 | 0 | R5 — Z-code non whitelisté en DP |
|
||||
| 17_23100690 | CONFIRMED | K85.9 | high | 1 | 0 | DP Trackare — source d'autorité |
|
||||
| 180_23127321 | CONFIRMED | T41.4 | high | 1 | 0 | DP Trackare — source d'autorité |
|
||||
| 181_23127286 | CONFIRMED | R30.0 | high | 1 | 0 | DP Trackare — source d'autorité |
|
||||
| 182_23118076 | CONFIRMED | Z99.1 | high | 1 | 0 | DP Trackare — source d'autorité |
|
||||
| 183_23087212 | REVIEW | T83.5 | medium | 1 | 7 | Écart 0.0 < seuil 3.0, LLM désactivé |
|
||||
| 184_23119008 | CONFIRMED | F43.1 | high | 1 | 0 | DP Trackare — source d'autorité |
|
||||
| 185_23128579 | CONFIRMED | R06.0 | high | 1 | 0 | DP Trackare — source d'autorité |
|
||||
| 186_23105969 | REVIEW | Z00.8 | medium | 2 | 0 | R5 — Z-code non whitelisté en DP |
|
||||
| 187_23133268 | REVIEW | Z00.8 | medium | 2 | 0 | R5 — Z-code non whitelisté en DP |
|
||||
| 188_23092887 | CONFIRMED | R57.2 | high | 1 | 0 | DP Trackare — source d'autorité |
|
||||
| 189_23138778 | CONFIRMED | I10 | high | 1 | 0 | DP Trackare — source d'autorité |
|
||||
| 18_23103327 | CONFIRMED | K80.0 | high | 1 | 0 | DP Trackare — source d'autorité |
|
||||
| 190_23139234 | CONFIRMED | J18.0 | high | 1 | 0 | DP Trackare — source d'autorité |
|
||||
| 191_23140698 | CONFIRMED | R06.0 | high | 1 | 0 | DP Trackare — source d'autorité |
|
||||
| 192_23132490 | REVIEW | D50 | medium | 1 | 7 | Écart 1.0 < seuil 3.0, LLM désactivé |
|
||||
| 193_23123388 | CONFIRMED | G35 | high | 1 | 0 | DP Trackare — source d'autorité |
|
||||
| 194_23142891 | CONFIRMED | R93.1 | high | 1 | 0 | DP Trackare — source d'autorité |
|
||||
| 195_23144210 | CONFIRMED | K85.9 | high | 1 | 0 | DP Trackare — source d'autorité |
|
||||
| 196_ 23140080 | CONFIRMED | K85.9 | high | 1 | 0 | DP Trackare — source d'autorité |
|
||||
| 197_23149133 | CONFIRMED | M25.5 | high | 1 | 0 | DP Trackare — source d'autorité |
|
||||
| 198_23130006 | CONFIRMED | E04.2 | high | 1 | 0 | DP Trackare — source d'autorité |
|
||||
| 199_23149905 | CONFIRMED | I25.1 | high | 1 | 0 | DP Trackare — source d'autorité |
|
||||
| 19_23103383 | CONFIRMED | K80.1 | high | 1 | 0 | DP Trackare — source d'autorité |
|
||||
| 200_23149959 | REVIEW | I80.2 | medium | 1 | 7 | Écart 1.0 < seuil 3.0, LLM désactivé |
|
||||
| 201_23149994 | CONFIRMED | G82.4 | high | 1 | 0 | DP Trackare — source d'autorité |
|
||||
| 202_23151035 | REVIEW | N19 | medium | 1 | 3 | Écart 2.0 < seuil 3.0, LLM désactivé |
|
||||
| 203_23151182 | CONFIRMED | M60.9 | high | 1 | 0 | DP Trackare — source d'autorité |
|
||||
| 204_23142660 | REVIEW | N40 | medium | 1 | 3 | Écart 2.0 < seuil 3.0, LLM désactivé |
|
||||
| 205_23151283 | CONFIRMED | J18.0 | high | 1 | 0 | DP Trackare — source d'autorité |
|
||||
| 206_23152027 | CONFIRMED | Z99.1 | high | 1 | 0 | DP Trackare — source d'autorité |
|
||||
| 207_23119040 | CONFIRMED | K60.3 | high | 1 | 0 | DP Trackare — source d'autorité |
|
||||
| 208_23151988 | CONFIRMED | K81.0 | high | 1 | 0 | DP Trackare — source d'autorité |
|
||||
| 209_23154576 | CONFIRMED | S72.3 | high | 1 | 0 | DP Trackare — source d'autorité |
|
||||
| 20_23108737 | CONFIRMED | K81.0 | high | 1 | 0 | DP Trackare — source d'autorité |
|
||||
| 210_23155084 | CONFIRMED | K35.8 | high | 1 | 0 | DP Trackare — source d'autorité |
|
||||
| 211_23155556 | CONFIRMED | M10.9 | high | 1 | 0 | DP Trackare — source d'autorité |
|
||||
| 212_23155836 | CONFIRMED | K85.9 | high | 1 | 0 | DP Trackare — source d'autorité |
|
||||
| 213_23156193 | CONFIRMED | N23 | high | 1 | 0 | DP Trackare — source d'autorité |
|
||||
| 214_23148798 | CONFIRMED | Z03.8 | high | 1 | 0 | DP Trackare — source d'autorité |
|
||||
| 215_23158603 | REVIEW | Z31.5 | medium | 2 | 0 | R5 — Z-code non whitelisté en DP |
|
||||
| 216_23159905 | CONFIRMED | G82.4 | high | 1 | 0 | DP Trackare — source d'autorité |
|
||||
| 217_23159786 | CONFIRMED | G44.2 | high | 1 | 0 | DP Trackare — source d'autorité |
|
||||
| 218_23164383 | CONFIRMED | H81.2 | high | 1 | 0 | DP Trackare — source d'autorité |
|
||||
| 219_23164660 | CONFIRMED | R06.0 | high | 1 | 0 | DP Trackare — source d'autorité |
|
||||
| 21_23111304 | CONFIRMED | K85.1 | high | 1 | 0 | DP Trackare — source d'autorité |
|
||||
| 220_23159566 | REVIEW | Z01.4 | medium | 2 | 0 | R5 — Z-code non whitelisté en DP |
|
||||
| 221_23167859 | CONFIRMED | I62.0 | high | 1 | 0 | DP Trackare — source d'autorité |
|
||||
| 222_23139653 | CONFIRMED | Z43.3 | high | 1 | 0 | DP Trackare — source d'autorité |
|
||||
| 223_23169043 | CONFIRMED | K85.9 | high | 1 | 0 | DP Trackare — source d'autorité |
|
||||
| 224_23134304 | CONFIRMED | E66.0 | high | 1 | 0 | DP Trackare — source d'autorité |
|
||||
| 225_23160703 | REVIEW | N85.7 | medium | 1 | 6 | Écart 1.0 < seuil 3.0, LLM désactivé |
|
||||
| 226_23175167 | CONFIRMED | I74.3 | high | 1 | 0 | DP Trackare — source d'autorité |
|
||||
| 227_23173599 | CONFIRMED | Z51.1 | high | 1 | 0 | DP Trackare — source d'autorité |
|
||||
| 228_23176885 | CONFIRMED | E11.0 | high | 1 | 0 | DP Trackare — source d'autorité |
|
||||
| 229_23177975 | CONFIRMED | Z99.1 | high | 1 | 0 | DP Trackare — source d'autorité |
|
||||
| 22_23117170 | CONFIRMED | K81.0 | high | 1 | 0 | DP Trackare — source d'autorité |
|
||||
| 230_23167769 | CONFIRMED | R06.0 | high | 1 | 0 | DP Trackare — source d'autorité |
|
||||
| 231_23159944 | CONFIRMED | N85.7 | high | 1 | 0 | DP Trackare — source d'autorité |
|
||||
| 232_23183311 | CONFIRMED | S22.31 | high | 1 | 0 | DP Trackare — source d'autorité |
|
||||
| 233_23166628 | REVIEW | Z29.0 | medium | 2 | 0 | R5 — Z-code non whitelisté en DP |
|
||||
| 234_23174515 | CONFIRMED | G40.9 | high | 1 | 0 | DP Trackare — source d'autorité |
|
||||
| 235_23143706 | CONFIRMED | N76 | high | 1 | 0 | DP Trackare — source d'autorité |
|
||||
| 236_23116794 | CONFIRMED | N82.3 | high | 1 | 0 | DP Trackare — source d'autorité |
|
||||
| 237_23159792 | CONFIRMED | Z99.1 | high | 1 | 0 | DP Trackare — source d'autorité |
|
||||
| 238_23188172 | CONFIRMED | T88.7 | high | 1 | 0 | DP Trackare — source d'autorité |
|
||||
| 239_23188240 | CONFIRMED | T81.38 | high | 1 | 0 | DP Trackare — source d'autorité |
|
||||
| 23_23122825 | CONFIRMED | K81.1 | high | 1 | 0 | DP Trackare — source d'autorité |
|
||||
| 240_23171519 | CONFIRMED | Z51.1 | high | 1 | 0 | DP Trackare — source d'autorité |
|
||||
| 241_23188038 | CONFIRMED | Z51.5 | high | 1 | 0 | DP Trackare — source d'autorité |
|
||||
| 242_23192524 | CONFIRMED | S32.3 | high | 1 | 0 | DP Trackare — source d'autorité |
|
||||
| 243_23193247 | CONFIRMED | R23.0 | high | 1 | 0 | DP Trackare — source d'autorité |
|
||||
| 244_23193317 | CONFIRMED | E78.0 | high | 1 | 0 | DP Trackare — source d'autorité |
|
||||
| 245_23193113 | CONFIRMED | N41.0 | high | 1 | 0 | DP Trackare — source d'autorité |
|
||||
| 246_23193699 | CONFIRMED | S22.31 | high | 1 | 0 | DP Trackare — source d'autorité |
|
||||
| 247_23194838 | CONFIRMED | Z99.1 | high | 1 | 0 | DP Trackare — source d'autorité |
|
||||
| 248_23194278 | CONFIRMED | J41.0 | high | 1 | 0 | DP Trackare — source d'autorité |
|
||||
| 249_23196688 | CONFIRMED | R06.0 | high | 1 | 0 | DP Trackare — source d'autorité |
|
||||
| 24_23127065 | CONFIRMED | K81.0 | high | 1 | 0 | DP Trackare — source d'autorité |
|
||||
| 250_23196454 | CONFIRMED | M30.3 | high | 1 | 0 | DP Trackare — source d'autorité |
|
||||
| 25_23127187 | REVIEW | N19 | medium | 1 | 7 | Écart 1.0 < seuil 3.0, LLM désactivé |
|
||||
| 26_23127395 | CONFIRMED | K85.1 | high | 1 | 0 | DP Trackare — source d'autorité |
|
||||
| 27_23134370 | CONFIRMED | K85.9 | high | 1 | 0 | DP Trackare — source d'autorité |
|
||||
| 28_23135549 | CONFIRMED | K85.9 | high | 1 | 0 | DP Trackare — source d'autorité |
|
||||
| 29_23137897 | REVIEW | K80.0 | medium | 1 | 7 | Écart 0.0 < seuil 3.0, LLM désactivé |
|
||||
| 2_23044104 | CONFIRMED | K80.0 | high | 1 | 0 | DP Trackare — source d'autorité |
|
||||
| 30_23141147 | CONFIRMED | Z99.1 | high | 1 | 0 | DP Trackare — source d'autorité |
|
||||
| 31_23142976 | CONFIRMED | K81.0 | high | 1 | 0 | DP Trackare — source d'autorité |
|
||||
| 32_23143161 | CONFIRMED | K81.9 | high | 1 | 0 | DP Trackare — source d'autorité |
|
||||
| 33_23150352 | CONFIRMED | K81.0 | high | 1 | 0 | DP Trackare — source d'autorité |
|
||||
| 34_23153510 | CONFIRMED | K81.9 | high | 1 | 0 | DP Trackare — source d'autorité |
|
||||
| 35_23154808 | CONFIRMED | K42.9 | high | 1 | 0 | DP Trackare — source d'autorité |
|
||||
| 36_23156051 | CONFIRMED | Z99.1 | high | 1 | 0 | DP Trackare — source d'autorité |
|
||||
| 37_23158940 | CONFIRMED | K81.0 | high | 1 | 0 | DP Trackare — source d'autorité |
|
||||
| 38_23162619 | CONFIRMED | K81.9 | high | 1 | 0 | DP Trackare — source d'autorité |
|
||||
| 39_23167029 | REVIEW | Z29.2 | medium | 2 | 0 | R5 — Z-code non whitelisté en DP |
|
||||
| 3_23044882 | CONFIRMED | K81.0 | high | 1 | 0 | DP Trackare — source d'autorité |
|
||||
| 40_23168633 | CONFIRMED | K81.0 | high | 1 | 0 | DP Trackare — source d'autorité |
|
||||
| 41_23170176 | REVIEW | N19 | medium | 1 | 7 | Écart 0.0 < seuil 3.0, LLM désactivé |
|
||||
| 42_23172367 | CONFIRMED | K81.0 | high | 1 | 0 | DP Trackare — source d'autorité |
|
||||
| 43_23177057 | CONFIRMED | K81.0 | high | 1 | 0 | DP Trackare — source d'autorité |
|
||||
| 44_23096703 | REVIEW | K80.2 | medium | 1 | 4 | Écart 2.0 < seuil 3.0, LLM désactivé |
|
||||
| 45_23183041 | CONFIRMED | K81.0 | high | 1 | 0 | DP Trackare — source d'autorité |
|
||||
| 46_23187081 | CONFIRMED | K85.9 | high | 1 | 0 | DP Trackare — source d'autorité |
|
||||
| 47_23201117 | CONFIRMED | K81.1 | high | 1 | 0 | DP Trackare — source d'autorité |
|
||||
| 49_23217289 | CONFIRMED | K81.9 | high | 1 | 0 | DP Trackare — source d'autorité |
|
||||
| 4_23047260 | CONFIRMED | Z99.1 | high | 1 | 0 | DP Trackare — source d'autorité |
|
||||
| 50_23219173 | REVIEW | N19 | medium | 1 | 7 | Écart 2.0 < seuil 3.0, LLM désactivé |
|
||||
| 51_23222062 | CONFIRMED | K85.9 | high | 1 | 0 | DP Trackare — source d'autorité |
|
||||
| 52_23223407 | REVIEW | Z35.9 | medium | 2 | 0 | R5 — Z-code non whitelisté en DP |
|
||||
| 53_23224186 | CONFIRMED | K81.0 | high | 1 | 0 | DP Trackare — source d'autorité |
|
||||
| 54_23230165 | CONFIRMED | K81.1 | high | 1 | 0 | DP Trackare — source d'autorité |
|
||||
| 55_23246490 | CONFIRMED | K81.0 | high | 1 | 0 | DP Trackare — source d'autorité |
|
||||
| 56_23248174 | CONFIRMED | K81.0 | high | 1 | 0 | DP Trackare — source d'autorité |
|
||||
| 57_23003949 | CONFIRMED | I10 | high | 1 | 0 | DP Trackare — source d'autorité |
|
||||
| 58_23084901 | CONFIRMED | R06.0 | high | 1 | 0 | DP Trackare — source d'autorité |
|
||||
| 59_23088959 | CONFIRMED | R27.0 | high | 1 | 0 | DP Trackare — source d'autorité |
|
||||
| 5_23047860 | CONFIRMED | E03.9 | high | 1 | 0 | DP Trackare — source d'autorité |
|
||||
| 60_23106634 | REVIEW | Z31.5 | medium | 2 | 0 | R5 — Z-code non whitelisté en DP |
|
||||
| 61_23001636 | CONFIRMED | Z99.1 | high | 1 | 0 | DP Trackare — source d'autorité |
|
||||
| 62_23001636 | REVIEW | A41.9 | medium | 1 | 7 | Écart 2.0 < seuil 3.0, LLM désactivé |
|
||||
| 63_23001636 | REVIEW | A41.9 | medium | 1 | 7 | Écart 2.0 < seuil 3.0, LLM désactivé |
|
||||
| 64_23001636 | REVIEW | A41.9 | medium | 1 | 7 | Écart 2.0 < seuil 3.0, LLM désactivé |
|
||||
| 65_23001636 | REVIEW | A41.9 | medium | 1 | 7 | Écart 2.0 < seuil 3.0, LLM désactivé |
|
||||
| 66_23001636 | REVIEW | A41.9 | medium | 1 | 7 | Écart 2.0 < seuil 3.0, LLM désactivé |
|
||||
| 67_23001636 | CONFIRMED | F43.28 | high | 1 | 0 | DP Trackare — source d'autorité |
|
||||
| 68_23046068 | CONFIRMED | M71.9 | high | 1 | 0 | DP Trackare — source d'autorité |
|
||||
| 69_23046068 | CONFIRMED | B96.80 | high | 1 | 0 | DP Trackare — source d'autorité |
|
||||
| 6_23066847 | CONFIRMED | K81.0 | high | 1 | 0 | DP Trackare — source d'autorité |
|
||||
| 70_23122843 | CONFIRMED | K57.4 | high | 1 | 0 | DP Trackare — source d'autorité |
|
||||
| 71_23135194 | REVIEW | None | None | 1 | 0 | Aucun candidat DP identifié |
|
||||
| 72_23068111 | REVIEW | K59.0 | medium | 1 | 2 | Écart 2.0 < seuil 3.0, LLM désactivé |
|
||||
| 73_23139637 | REVIEW | R06.0 | medium | 1 | 1 | Pool mono-candidat fragile (symptôme) |
|
||||
| 74_23141536 | REVIEW | D50 | medium | 1 | 3 | Écart 0.0 < seuil 3.0, LLM désactivé |
|
||||
| 75_23181227 | CONFIRMED | R21 | high | 1 | 0 | DP Trackare — source d'autorité |
|
||||
| 76_23165648 | REVIEW | S74.0 | medium | 1 | 6 | Écart 0.0 < seuil 3.0, LLM désactivé |
|
||||
| 77_23194611 | REVIEW | N02 | medium | 1 | 7 | Écart 0.0 < seuil 3.0, LLM désactivé |
|
||||
| 78_23187785 | CONFIRMED | B96.80 | high | 1 | 0 | DP Trackare — source d'autorité |
|
||||
| 79_23187785 | CONFIRMED | M71.9 | high | 1 | 0 | DP Trackare — source d'autorité |
|
||||
| 7_23066992 | CONFIRMED | K81.0 | high | 1 | 0 | DP Trackare — source d'autorité |
|
||||
| 80_23202435 | CONFIRMED | M71.9 | high | 1 | 0 | DP Trackare — source d'autorité |
|
||||
| 81_23202678 | REVIEW | I80.2 | medium | 1 | 7 | Écart 1.0 < seuil 3.0, LLM désactivé |
|
||||
| 82_23206765 | CONFIRMED | S50.1 | high | 1 | 0 | DP Trackare — source d'autorité |
|
||||
| 83_23187785 | CONFIRMED | B96.80 | high | 1 | 0 | DP Trackare — source d'autorité |
|
||||
| 84_23215994 | CONFIRMED | L50 | high | 1 | 0 | DP Trackare — source d'autorité |
|
||||
| 85_23215994 | CONFIRMED | L50.1 | high | 1 | 0 | DP Trackare — source d'autorité |
|
||||
| 86_23221334 | CONFIRMED | Z51.30 | high | 1 | 0 | DP Trackare — source d'autorité |
|
||||
| 87_23236926 | CONFIRMED | R06.0 | high | 1 | 0 | DP Trackare — source d'autorité |
|
||||
| 88_23034958 | CONFIRMED | M25.2 | high | 1 | 0 | DP Trackare — source d'autorité |
|
||||
| 89_23016863 | CONFIRMED | R06.4 | high | 1 | 0 | DP Trackare — source d'autorité |
|
||||
| 8_23074520 | CONFIRMED | K80.5 | high | 1 | 0 | DP Trackare — source d'autorité |
|
||||
| 90_23011562 | REVIEW | N19 | medium | 1 | 5 | Écart 1.0 < seuil 3.0, LLM désactivé |
|
||||
| 91_23029879 | REVIEW | E21 | medium | 1 | 7 | Écart 1.0 < seuil 3.0, LLM désactivé |
|
||||
| 92_23049455 | CONFIRMED | S52 | high | 1 | 0 | DP Trackare — source d'autorité |
|
||||
| 93_23050151 | REVIEW | N04 | medium | 1 | 7 | Écart 2.0 < seuil 3.0, LLM désactivé |
|
||||
| 94_23000519 | REVIEW | N85.7 | medium | 1 | 4 | Écart 2.0 < seuil 3.0, LLM désactivé |
|
||||
| 95_23022137 | CONFIRMED | Z99.1 | high | 1 | 0 | DP Trackare — source d'autorité |
|
||||
| 96_23044463 | CONFIRMED | K85.1 | high | 1 | 0 | DP Trackare — source d'autorité |
|
||||
| 97_23053061 | CONFIRMED | K85.0 | high | 1 | 0 | DP Trackare — source d'autorité |
|
||||
| 98_23054001 | CONFIRMED | M54.2 | high | 1 | 0 | DP Trackare — source d'autorité |
|
||||
| 99_23033146 | REVIEW | E66.83 | medium | 1 | 4 | Écart 0.0 < seuil 3.0, LLM désactivé |
|
||||
| 9_23077394 | CONFIRMED | K81.8 | high | 1 | 0 | DP Trackare — source d'autorité |
|
||||
| pseudonymise | CONFIRMED | K85.1 | high | 1 | 0 | DP Trackare — source d'autorité |
|
||||
|
||||
## Évaluation Gold CRH
|
||||
|
||||
**Cas gold évalués** : 5
|
||||
|
||||
| Métrique | Valeur |
|
||||
|----------|--------|
|
||||
| Exact match (strict) | 60.0% (3/5) |
|
||||
| Exact match (codes tolérants) | 60.0% (3/5) |
|
||||
| Family3 match (tolérant) | 60.0% (3/5) |
|
||||
| Acceptable match (codes OU family3) | 60.0% (3/5) |
|
||||
| Confirmed accuracy (tolérant) | 100.0% (1 CONFIRMED) |
|
||||
| Symptôme non autorisé | 1/5 |
|
||||
|
||||
### Détail par cas gold
|
||||
|
||||
| Case ID | Choisi | Attendu | Strict | Acceptable | Symptôme interdit | Verdict |
|
||||
|---------|--------|---------|--------|------------|-------------------|---------|
|
||||
| 106_23056475 | I26.9 | I26.9 | OK | OK | - | REVIEW |
|
||||
| 115_23066188 | A87.0 | A87.0 | OK | OK | - | CONFIRMED |
|
||||
| 132_23080179 | R59.0 | C83.3 | FAIL | FAIL | OUI | REVIEW |
|
||||
| 73_23139637 | R06.0 | R06.0 | OK | OK | - | REVIEW |
|
||||
| 74_23141536 | D50 | I25.1 | FAIL | FAIL | - | REVIEW |
|
||||
|
||||
|
||||
---
|
||||
*Généré par `scripts/benchmark_nuke3_compare.py` — 2026-02-24 17:44*
|
||||
|
||||
> **Règle DIM** : `CONFIRMED` ⇒ `evidence` obligatoirement non vide.
|
||||
> Un DP sans preuve exploitable est automatiquement `REVIEW`.
|
||||
171
docs/NUKE3_NEXT_STEPS.md
Normal file
171
docs/NUKE3_NEXT_STEPS.md
Normal file
@@ -0,0 +1,171 @@
|
||||
# NUKE-3 — Plan de sprint court
|
||||
|
||||
## 3 Objectifs
|
||||
|
||||
1. **Réduire le taux REVIEW sur les dossiers sans DP** : 43/43 → cible < 50% REVIEW
|
||||
2. **Améliorer la qualité du pool** : éliminer le bruit OCR et fusionner les doublons
|
||||
3. **Activer le signal synthèse** : rendre motif_align opérant même sur les dossiers trackare
|
||||
|
||||
## 5 Patchs proposés (ordre d'impact)
|
||||
|
||||
### Patch 1 — Dedup par code dans `build_candidates()` ⭐⭐⭐
|
||||
|
||||
**Symptôme** : Même code CIM-10 apparaît 2× (edsnlp + regex) → le candidat se bat contre lui-même, delta artificiellement réduit.
|
||||
|
||||
**Patch minimal** : `src/medical/dp_selector.py`, fonction `build_candidates()`
|
||||
```python
|
||||
# Après la boucle de construction des candidats :
|
||||
# Dedup par code : garder le meilleur section_strength, ajouter bonus multi-source
|
||||
seen: dict[str, DPCandidate] = {}
|
||||
for c in candidates:
|
||||
if not c.code:
|
||||
continue
|
||||
if c.code in seen:
|
||||
existing = seen[c.code]
|
||||
existing.num_occurrences += 1
|
||||
if c.section_strength > existing.section_strength:
|
||||
existing.section_strength = c.section_strength
|
||||
existing.source = c.source
|
||||
else:
|
||||
seen[c.code] = c
|
||||
candidates = list(seen.values())
|
||||
# Réindexer
|
||||
for i, c in enumerate(candidates):
|
||||
c.index = i
|
||||
```
|
||||
|
||||
**Pourquoi ça aide** : Les 4 dossiers avec doublons (I26.9, K81.0, D69.6, J18.9) gagnent un candidat fusionné plus fort. Le bonus `occurrences` existant (+1 ou +2) s'active déjà sur `num_occurrences`.
|
||||
|
||||
**Test** : `test_dedup_same_code_merged()` — 2 candidats avec même code, sources différentes → 1 seul candidat avec meilleur section_strength.
|
||||
|
||||
**Effort** : 1h
|
||||
|
||||
---
|
||||
|
||||
### Patch 2 — Filtre bruit OCR dans `build_candidates()` ⭐⭐⭐
|
||||
|
||||
**Symptôme** : Candidats avec texte OCR corrompu ("C : 9.4", "C omprend décollement de la (d") polluent le pool et consomment des places dans top_k=7.
|
||||
|
||||
**Patch minimal** : `src/medical/dp_selector.py`, dans `build_candidates()`
|
||||
```python
|
||||
MIN_TERM_WORDS = 2
|
||||
|
||||
def _is_ocr_noise(text: str) -> bool:
|
||||
"""Rejette les candidats dont le texte est du bruit OCR."""
|
||||
clean = text.strip()
|
||||
if len(clean) < 4:
|
||||
return True
|
||||
words = clean.split()
|
||||
if len(words) < MIN_TERM_WORDS:
|
||||
return True
|
||||
# Ratio de caractères non-alpha suspect
|
||||
alpha = sum(1 for ch in clean if ch.isalpha())
|
||||
if alpha / max(len(clean), 1) < 0.5:
|
||||
return True
|
||||
return False
|
||||
```
|
||||
|
||||
**Pourquoi ça aide** : Réduit le pool de 7 à ~4-5 candidats pertinents, améliore le delta.
|
||||
|
||||
**Test** : `test_ocr_noise_excluded()` — candidat "C : 9.4" exclu du pool.
|
||||
|
||||
**Effort** : 1h
|
||||
|
||||
---
|
||||
|
||||
### Patch 3 — Synthèse depuis top-level JSON + sections trackare ⭐⭐
|
||||
|
||||
**Symptôme** : 100% des REVIEW ont synthèse vide → `motif_align` ne fonctionne jamais. Le JSON a `sejour.motif` mais `build_synthese()` ne lit que `sections.motif_hospitalisation`.
|
||||
|
||||
**Patch minimal** : `src/medical/dp_selector.py`, fonction `build_synthese()`
|
||||
```python
|
||||
def build_synthese(dossier, parsed_data):
|
||||
sections = parsed_data.get("sections", {})
|
||||
motif = sections.get("motif_hospitalisation", "")
|
||||
conclusion = sections.get("conclusion", "")
|
||||
# Fallback : motif depuis le séjour (trackare)
|
||||
if not motif and dossier.sejour.motif:
|
||||
motif = dossier.sejour.motif
|
||||
return {"motif": motif, "conclusion": conclusion, ...}
|
||||
```
|
||||
|
||||
**Pourquoi ça aide** : Active le bonus `motif_align` (+2) sur les trackare qui stockent le motif dans `sejour.motif`, discriminant les candidats.
|
||||
|
||||
**Test** : `test_synthese_fallback_sejour_motif()` — synthèse avec motif depuis séjour.
|
||||
|
||||
**Effort** : 30min
|
||||
|
||||
---
|
||||
|
||||
### Patch 4 — Abaisser DELTA_CONFIRMED de 3.0 à 2.0 ⭐⭐
|
||||
|
||||
**Symptôme** : 13/43 REVIEW ont delta 2.0-2.9 — cas où le pré-ranker a une préférence nette mais pas assez pour le seuil actuel. Exemple : T83.5 (4.0) vs R50.9 (2.0) = delta 2.0 → REVIEW, alors que le symptôme (R50.9) est clairement un mauvais DP.
|
||||
|
||||
**Patch minimal** : `src/medical/dp_selector.py`
|
||||
```python
|
||||
DELTA_CONFIRMED = 2.0 # Était 3.0
|
||||
```
|
||||
|
||||
**Pourquoi ça aide** : +13 CONFIRMED (30% des REVIEW), mais uniquement si les gardes A1/A2/A3 valident. Le hardening empêche les faux positifs.
|
||||
|
||||
**Test** : Adapter les fixtures existantes (dp_acute_vs_comorbidity.json utilise un delta attendu).
|
||||
|
||||
**Effort** : 30min (+ vérification non-régression)
|
||||
|
||||
---
|
||||
|
||||
### Patch 5 — DAS order bonus (premier listé = plus saillant) ⭐
|
||||
|
||||
**Symptôme** : En cas d'ex-aequo total (15 cas), il n'y a aucun signal pour départager. Or l'ordre des DAS dans le document médical n'est pas aléatoire — les premiers listés sont souvent les plus pertinents.
|
||||
|
||||
**Patch minimal** : `src/medical/dp_selector.py`, dans `score_candidates()`
|
||||
```python
|
||||
# 9. Bonus d'ordre (premier DAS listé = +1)
|
||||
if c.index == 0:
|
||||
score += 1
|
||||
details["first_listed"] = 1
|
||||
elif c.index == 1:
|
||||
score += 0.5
|
||||
details["second_listed"] = 0.5
|
||||
```
|
||||
|
||||
**Pourquoi ça aide** : Brise les ex-aequo dans 15 cas (36% des REVIEW) avec un signal faible mais non-arbitraire. Le premier DAS listé reflète l'ordre du document source.
|
||||
|
||||
**Test** : `test_first_listed_bonus()` — 2 candidats identiques, le premier listé gagne.
|
||||
|
||||
**Effort** : 30min
|
||||
|
||||
---
|
||||
|
||||
## Ordre d'exécution
|
||||
|
||||
| # | Patch | Effort | Impact estimé | Pré-requis |
|
||||
|---|-------|--------|---------------|------------|
|
||||
| 1 | Dedup par code | 1h | 4 dossiers améliorés | Aucun |
|
||||
| 2 | Filtre bruit OCR | 1h | ~5 dossiers pool nettoyé | Aucun |
|
||||
| 3 | Synthèse fallback | 30min | Jusqu'à 43 dossiers (si motif trackare dispo) | Vérifier séjour.motif |
|
||||
| 4 | DELTA 3.0 → 2.0 | 30min | +13 CONFIRMED | Patches 1+2 (pool propre) |
|
||||
| 5 | DAS order bonus | 30min | Brise 15 ex-aequo | Après patch 4 |
|
||||
|
||||
**Total estimé** : 3h30
|
||||
|
||||
## Critères d'acceptation (KPI)
|
||||
|
||||
| KPI | Avant | Cible |
|
||||
|-----|-------|-------|
|
||||
| REVIEW rate (sans-DP) | 100% (43/43) | < 50% |
|
||||
| CONFIRMED + evidence | 100% | 100% (maintenu) |
|
||||
| DP symptôme R* (CONFIRMED) | 0% | < 5% |
|
||||
| DP comorbidité (CONFIRMED) | 0% | < 3% |
|
||||
| Candidats bruit OCR dans pool | ~5% | 0% |
|
||||
| Ex-aequo (delta=0) | 36% (15/43) | < 15% |
|
||||
|
||||
## Prochaines étapes hors sprint
|
||||
|
||||
- **Gold standard CRH** : sélectionner 20 CRH avec DP expert pour mesurer `confirmed_accuracy`
|
||||
- **Benchmark LLM ON** : relancer le pipeline avec `T2A_DP_RANKER_LLM=1` sur les 43 REVIEW
|
||||
- **Extraction synthèse trackare** : parser le motif d'hospitalisation depuis les PDF trackare
|
||||
|
||||
---
|
||||
|
||||
*Plan rédigé le 2026-02-24 — benchmark offline sur 249 dossiers*
|
||||
365
docs/analyse_t2a_v2.md
Normal file
365
docs/analyse_t2a_v2.md
Normal file
@@ -0,0 +1,365 @@
|
||||
# Rapport d'analyse — t2a_v2
|
||||
|
||||
**Date** : 2026-02-19
|
||||
**Codebase** : `/home/dom/ai/t2a_v2/`
|
||||
**Branche** : `master` (HEAD: `5c8c281`)
|
||||
|
||||
---
|
||||
|
||||
## 1. Vue d'ensemble
|
||||
|
||||
| Indicateur | Valeur |
|
||||
|-----------|--------|
|
||||
| Fichiers source (.py) | 46 |
|
||||
| Lignes de code (src/) | 12 596 |
|
||||
| Fichiers tests | 24 |
|
||||
| Lignes de tests | 7 095 |
|
||||
| Fonctions test | 685 |
|
||||
| Ratio tests/code | 0.56 |
|
||||
| Monolithes (>500L) | 10 fichiers |
|
||||
| Modules (sous-packages) | 7 |
|
||||
|
||||
### Comparaison t2a v1 -> v2
|
||||
|
||||
| Aspect | t2a (v1) | t2a_v2 | Delta |
|
||||
|--------|----------|--------|-------|
|
||||
| Lignes source | 10 508 | 12 596 | +2 088 (+20%) |
|
||||
| Fichiers source | 44 | 46 | +2 |
|
||||
| Ratio tests/code | 0.68 | 0.56 | -0.12 |
|
||||
| Monolithe max | 1 227L | 1 352L | +125L |
|
||||
| Config YAML | Aucun | 6 fichiers | +Flexibilite |
|
||||
| Module quality/ | - | 1 226L | NOUVEAU |
|
||||
|
||||
---
|
||||
|
||||
## 2. Structure des modules
|
||||
|
||||
```
|
||||
src/ 12 596L total
|
||||
|
|
||||
+-- config.py (746L) -- Config unifiee + modeles Pydantic + chargement YAML
|
||||
+-- main.py (640L) -- Orchestrateur CLI principal
|
||||
|
|
||||
+-- anonymization/ (904L) -- Anonymisation NER + regex
|
||||
| +-- anonymizer.py (529L)
|
||||
| +-- entity_registry.py (86L)
|
||||
| +-- ner_anonymizer.py (95L)
|
||||
| +-- regex_patterns.py (194L)
|
||||
|
|
||||
+-- control/ (1161L) -- Controles CPAM
|
||||
| +-- cpam_parser.py (115L) -- Parsing Excel CPAM
|
||||
| +-- cpam_response.py (1046L) -- Contre-argumentation multi-pass
|
||||
|
|
||||
+-- export/ (190L) -- Export RUM
|
||||
| +-- rum_export.py (190L)
|
||||
|
|
||||
+-- extraction/ (928L) -- Extraction documents PDF
|
||||
| +-- trackare_parser.py (424L)
|
||||
| +-- crh_parser.py (129L)
|
||||
| +-- document_splitter.py (124L)
|
||||
| +-- document_classifier.py (94L)
|
||||
| +-- page_tracker.py (91L)
|
||||
| +-- pdf_extractor.py (66L)
|
||||
|
|
||||
+-- medical/ (5323L) -- Coeur metier CIM-10/CCAM/RAG
|
||||
| +-- cim10_extractor.py (1352L) -- Extraction codes CIM-10 (MONOLITHE)
|
||||
| +-- rag_search.py (849L) -- RAG FAISS + embedding + reranking
|
||||
| +-- rag_index.py (803L) -- Index FAISS dual (ref + proc)
|
||||
| +-- clinical_context.py (315L) -- Enrichissement contexte clinique
|
||||
| +-- fusion.py (294L) -- Merge multi-PDFs
|
||||
| +-- cim10_dict.py (243L) -- Dictionnaire CIM-10
|
||||
| +-- severity.py (242L) -- Calcul severite + niveaux CMA
|
||||
| +-- ghm.py (231L) -- Estimation GHM
|
||||
| +-- ccam_dict.py (191L) -- Dictionnaire CCAM
|
||||
| +-- exclusion_rules.py (169L) -- Filtrage codes impossibles
|
||||
| +-- das_filter.py (152L) -- 11 regles filtrage DAS bruit
|
||||
| +-- edsnlp_pipeline.py (140L) -- Wrapper edsnlp (optionnel)
|
||||
| +-- ollama_client.py (135L) -- Client Ollama + retry + JSON
|
||||
| +-- ccam_noncumul.py (122L) -- Non-cumulativite CCAM
|
||||
| +-- ollama_cache.py (85L) -- Cache JSON persistant
|
||||
|
|
||||
+-- quality/ (1226L) -- NOUVEAU : qualite deterministe post-LLM
|
||||
| +-- decision_engine.py (609L) -- Decisions KEEP/DOWNGRADE/REMOVE
|
||||
| +-- veto_engine.py (411L) -- Vetos + contestabilite
|
||||
| +-- rules_router.py (205L) -- Routage dynamique packs regles
|
||||
|
|
||||
+-- viewer/ (1478L) -- Interface web Flask
|
||||
+-- app.py (872L) -- Routes + dashboard
|
||||
+-- validation.py (272L) -- Validation manager (mode DIM)
|
||||
+-- referentiels.py (160L) -- Upload/indexation referentiels
|
||||
+-- pdf_redactor.py (154L) -- Redaction source PDF
|
||||
+-- __main__.py (20L)
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 3. Pipeline d'execution
|
||||
|
||||
### 3.1 CLI (`python -m src.main`)
|
||||
|
||||
```
|
||||
main()
|
||||
+-- Pour chaque PDF :
|
||||
| +-- extract_text_with_pages() [extraction/pdf_extractor.py]
|
||||
| +-- classify() [extraction/document_classifier.py]
|
||||
| +-- split_documents() [extraction/document_splitter.py]
|
||||
| +-- parse_trackare() ou parse_crh() [extraction/]
|
||||
| +-- Anonymizer.anonymize() [anonymization/anonymizer.py]
|
||||
| +-- _run_edsnlp() [medical/edsnlp_pipeline.py] (optionnel)
|
||||
| +-- extract_medical_info() [medical/cim10_extractor.py] << MONOLITHE
|
||||
| | +-- RAG FAISS + Ollama (si --rag)
|
||||
| | +-- Validation CIM-10 dict + supplements
|
||||
| | +-- Extraction actes CCAM
|
||||
| | +-- Scoring confiance biologie
|
||||
| +-- build_rules_runtime_context() [quality/rules_router.py]
|
||||
| +-- apply_vetos() [quality/veto_engine.py]
|
||||
| +-- apply_decisions() [quality/decision_engine.py]
|
||||
| +-- _compute_metrics() [main.py]
|
||||
| +-- estimate_ghm() [medical/ghm.py]
|
||||
| +-- write_outputs() [main.py]
|
||||
|
|
||||
+-- FUSION (si multi-PDFs meme groupe)
|
||||
| +-- merge_dossiers() [medical/fusion.py]
|
||||
| +-- Re-application vetos/decisions
|
||||
| +-- Re-estimation GHM
|
||||
|
|
||||
+-- CONTROLE CPAM (si Excel detecte)
|
||||
+-- match_dossier_ogc() [control/cpam_parser.py]
|
||||
+-- generate_cpam_response() [control/cpam_response.py] << MONOLITHE
|
||||
+-- Passe 1 : extraction structuree
|
||||
+-- 5 requetes RAG ciblees
|
||||
+-- Passe 2 : argumentation 3 axes
|
||||
+-- Passe 3 : validation adversariale
|
||||
```
|
||||
|
||||
### 3.2 Viewer (`python -m src.viewer --debug`)
|
||||
|
||||
- Dashboard : `/` -- liste dossiers + stats
|
||||
- Detail : `/dossier/<nom>` -- codes CIM-10, DAS, CPAM, GHM
|
||||
- Admin : `/admin/models` -- gestion modeles Ollama
|
||||
- Referentiels : `/referentiels` -- upload/indexation PDFs
|
||||
- Validation : mode DIM pour valider/corriger les codes
|
||||
|
||||
### 3.3 Flags CLI
|
||||
|
||||
```bash
|
||||
--no-ner # Desactiver anonymisation NER
|
||||
--no-edsnlp # Desactiver pipeline edsnlp
|
||||
--no-rag # Desactiver RAG (LLM seul)
|
||||
--build-dict # Reconstruire dictionnaire CIM-10
|
||||
--build-ccam-dict # Reconstruire dictionnaire CCAM
|
||||
--rebuild-index # Reconstruire index FAISS
|
||||
--export-rum # Export RUM V016
|
||||
--control-cpam # Excel CPAM pour contre-argumentation
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 4. Nouveau module : quality/
|
||||
|
||||
Le module `src/quality/` est l'ajout architectural majeur de la v2. Il implementa la couche de validation deterministe post-LLM.
|
||||
|
||||
### decision_engine.py (609L)
|
||||
|
||||
Post-traitement des codes proposes par le LLM. Chaque code recoit une decision :
|
||||
- **KEEP** : code valide, maintenu
|
||||
- **DOWNGRADE** : confiance reduite (ex: symptome R00-R99 avec diagnostic precis)
|
||||
- **REMOVE** : code rejete (invalide, redondant, non pertinent)
|
||||
|
||||
### veto_engine.py (411L)
|
||||
|
||||
Detection de vetos deterministes :
|
||||
- Negation dans le texte source
|
||||
- Conditionnel (diagnostics non confirmes)
|
||||
- Antecedents non pertinents pour le sejour
|
||||
- Conflits entre codes
|
||||
|
||||
### rules_router.py (205L)
|
||||
|
||||
Routage dynamique des packs de regles selon les signaux du dossier :
|
||||
- Pack biologie active si valeurs bio presentes
|
||||
- Pack CPAM active si controle CPAM detecte
|
||||
- Configuration via `config/rules/router.yaml`
|
||||
|
||||
### Configuration YAML associee
|
||||
|
||||
```
|
||||
config/
|
||||
+-- reference_ranges.yaml -- Valeurs normales biologiques (adulte/enfant)
|
||||
+-- bio_rules.yaml -- Regles hyponatremie, hyperkaliemie, etc.
|
||||
+-- lab_value_sanity.yaml -- Garde-fous OCR (K, Na, Plaquettes, Hb, etc.)
|
||||
+-- rules/
|
||||
+-- base.yaml -- Catalogue complet des regles
|
||||
+-- enabled.yaml -- Overlay d'activation
|
||||
+-- router.yaml -- Routage packs par signaux
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 5. Croissance par module (v1 -> v2)
|
||||
|
||||
| Module | t2a (v1) | t2a_v2 | Delta | % |
|
||||
|--------|----------|--------|-------|---|
|
||||
| anonymization | 904 | 904 | 0 | 0% |
|
||||
| control | 1 062 | 1 161 | +99 | +9% |
|
||||
| extraction | 928 | 928 | 0 | 0% |
|
||||
| medical | 4 912 | 5 323 | +411 | +8% |
|
||||
| viewer | 1 486 | 1 478 | -8 | -0.5% |
|
||||
| **quality** | **0** | **1 226** | **+1 226** | **NOUVEAU** |
|
||||
| root (config+main) | 669 | 1 386 | +717 | +107% |
|
||||
| **TOTAL** | **10 508** | **12 596** | **+2 088** | **+20%** |
|
||||
|
||||
La croissance vient principalement de :
|
||||
1. **quality/** (+1 226L) : nouveau module deterministe
|
||||
2. **config.py** (+484L) : chargement YAML, rules context, modeles Pydantic supplementaires
|
||||
3. **main.py** (+233L) : fusion multi-PDFs, vetos/decisions, metriques
|
||||
|
||||
---
|
||||
|
||||
## 6. Monolithes identifies (>500L)
|
||||
|
||||
| # | Fichier | Lignes | Responsabilites |
|
||||
|---|---------|--------|----------------|
|
||||
| 1 | cim10_extractor.py | 1 352 | Extraction LLM + validation + filtering + RAG |
|
||||
| 2 | cpam_response.py | 1 046 | RAG CPAM multi-requete + prompt engineering |
|
||||
| 3 | app.py | 872 | Routes Flask + dashboard + admin |
|
||||
| 4 | rag_search.py | 849 | Embedding + reranker + FAISS + generation |
|
||||
| 5 | rag_index.py | 803 | Dual indexing + chunking CIM-10 |
|
||||
| 6 | config.py | 746 | Config + Pydantic + chargement YAML |
|
||||
| 7 | main.py | 640 | Orchestration pipeline complet |
|
||||
| 8 | decision_engine.py | 609 | Decisions KEEP/DOWNGRADE/REMOVE |
|
||||
| 9 | anonymizer.py | 529 | 3 phases anonymisation |
|
||||
| 10 | veto_engine.py | 411 | Vetos + contestabilite |
|
||||
|
||||
---
|
||||
|
||||
## 7. Tests
|
||||
|
||||
### Couverture par fichier (top 10)
|
||||
|
||||
| Fichier test | Lignes | Fonctions |
|
||||
|-------------|--------|-----------|
|
||||
| test_cpam_response.py | 1 289 | 75 |
|
||||
| test_rag.py | 1 089 | 72 |
|
||||
| test_medical.py | 686 | 94 |
|
||||
| test_fusion.py | 493 | 33 |
|
||||
| test_viewer.py | 299 | 31 |
|
||||
| test_das_llm.py | 272 | 13 |
|
||||
| test_clinical_context.py | 264 | 36 |
|
||||
| test_das_filter.py | 260 | 67 |
|
||||
| test_justification.py | 245 | 13 |
|
||||
| test_rum_export.py | 212 | 29 |
|
||||
|
||||
### Zones sous-testees
|
||||
|
||||
- **quality/** : nouveau module, pas de fichier test dedie visible
|
||||
- **rag_index.py** : 803L sans test specifique (teste via test_rag.py)
|
||||
- **Ratio global** : 0.56 (en baisse vs 0.68 en v1) -- le code a grandi plus vite que les tests
|
||||
|
||||
---
|
||||
|
||||
## 8. Dependencies externes
|
||||
|
||||
| Package | Role | Criticite |
|
||||
|---------|------|----------|
|
||||
| pdfplumber | Extraction PDF | Haute |
|
||||
| PyMuPDF | PDF alternatif + redaction | Haute |
|
||||
| torch + transformers | Modeles HF | Haute |
|
||||
| sentence-transformers | Embeddings RAG | Haute |
|
||||
| faiss-cpu | Index semantique | Haute |
|
||||
| edsnlp | NLP medical francais | Moyenne (optionnel) |
|
||||
| flask | Viewer web | Moyenne |
|
||||
| pydantic | Validation donnees | Haute |
|
||||
| requests | Client HTTP (Ollama) | Haute |
|
||||
| openpyxl + pandas | Parsing Excel CPAM | Moyenne |
|
||||
| PyYAML | Configuration YAML | Haute (v2) |
|
||||
|
||||
---
|
||||
|
||||
## 9. Variables globales et thread-safety
|
||||
|
||||
### Thread-safe
|
||||
|
||||
| Module | Variable | Technique |
|
||||
|--------|----------|-----------|
|
||||
| config.py | `_RULES_RUNTIME_CTX` | contextvars.ContextVar |
|
||||
| rag_search.py | `_embed_model` | Lock + double-check + sentinel |
|
||||
| rag_search.py | `_reranker_model` | Lazy singleton |
|
||||
| cim10_dict.py | `_dict_cache` | @lru_cache(maxsize=1) |
|
||||
| ccam_dict.py | `_dict_cache` | @lru_cache(maxsize=1) |
|
||||
| ollama_cache.py | JSON | File-based lock (fcntl) |
|
||||
|
||||
### Non thread-safe (risque)
|
||||
|
||||
| Module | Variable | Risque |
|
||||
|--------|----------|--------|
|
||||
| main.py:139 | `_use_edsnlp` | Race condition en batch multi-thread |
|
||||
| main.py:141 | `_use_rag` | Race condition en batch multi-thread |
|
||||
|
||||
---
|
||||
|
||||
## 10. Dettes techniques
|
||||
|
||||
### Haute priorite
|
||||
|
||||
| # | Description | Fichier | Impact |
|
||||
|---|------------|---------|--------|
|
||||
| T1 | Flags `_use_edsnlp`, `_use_rag` non thread-safe | main.py | Comportement imprevisible en batch |
|
||||
| T2 | cim10_extractor.py (1352L) melange 4+ responsabilites | medical/ | Testabilite, maintenance |
|
||||
| T3 | cpam_response.py (1046L) -- prompts en dur, pas de templates | control/ | Versioning, A/B testing |
|
||||
| T4 | Docstrings manquantes sur extract_medical_info() | cim10_extractor.py | Documentation API |
|
||||
| T5 | `except Exception:` sans re-raise dans main.py | main.py | Bugs silencieux |
|
||||
|
||||
### Moyenne priorite
|
||||
|
||||
| # | Description | Fichier | Impact |
|
||||
|---|------------|---------|--------|
|
||||
| T6 | Prompts LLM en dur (~50 lignes) | cim10_extractor.py | Versioning |
|
||||
| T7 | Pas de pytest-cov -> couverture inconnue | tests/ | Risque regressions |
|
||||
| T8 | Cache Ollama sans TTL, grandit indefiniment | ollama_cache.py | Disque |
|
||||
| T9 | GHM estime sur 28% des dossiers seulement | ghm.py | Reporting incomplet |
|
||||
| T10 | quality/ sans tests dedies | tests/ | Couverture insuffisante |
|
||||
|
||||
### Basse priorite
|
||||
|
||||
| # | Description | Fichier | Impact |
|
||||
|---|------------|---------|--------|
|
||||
| T11 | Pagination viewer (500+ dossiers) | viewer/app.py | UX |
|
||||
| T12 | Extraction CCAM eparses (~1/dossier) | cim10_extractor.py | Completude |
|
||||
| T13 | Vetos/decisions appliques 2x (PDF + fusion) -- code duplique | main.py | Maintenance |
|
||||
|
||||
---
|
||||
|
||||
## 11. Points forts architecturaux
|
||||
|
||||
1. **Couche quality/ deterministe** : le LLM propose, le moteur de regles dispose -- conforme au principe de l'IA medicale
|
||||
2. **Pipeline CPAM multi-pass** : extraction -> argumentation -> validation adversariale avec modeles potentiellement differents
|
||||
3. **Configuration YAML editable** : regles, seuils bio, routage dynamique sans toucher au code
|
||||
4. **Fallbacks gracieux** : CUDA->CPU (embedding), Ollama->Anthropic (LLM), edsnlp optionnel
|
||||
5. **RAG dual-index** : separation referentiels / procedures pour meilleure precision
|
||||
6. **Fusion multi-PDFs** : gestion native des dossiers en plusieurs parties
|
||||
7. **Tracabilite** : tags [BIO-1], [IMG-2] etc. dans les arguments CPAM
|
||||
|
||||
---
|
||||
|
||||
## 12. Recommandations
|
||||
|
||||
### Court terme (stabilite)
|
||||
|
||||
1. Remplacer `_use_edsnlp` / `_use_rag` par contextvars (thread-safety)
|
||||
2. Ajouter docstrings sur les fonctions principales des monolithes
|
||||
3. Remplacer `except Exception:` par logging `exc_info=True` + re-raise fatales
|
||||
4. Ajouter tests dedies pour quality/ (decision_engine, veto_engine, rules_router)
|
||||
|
||||
### Moyen terme (maintenance)
|
||||
|
||||
1. Externaliser les prompts LLM dans `src/prompts/` (templates versionnables)
|
||||
2. Refactorer cim10_extractor.py : separer extraction LLM / validation / enrichissement RAG
|
||||
3. Ajouter pytest-cov et viser 70%+ de couverture
|
||||
4. Extraire la logique vetos+decisions dupliquee dans un helper `_apply_quality_checks()`
|
||||
|
||||
### Long terme (architecture pro)
|
||||
|
||||
1. Architecture en couches : Domain / Use Cases / Adapters
|
||||
2. Event bus pour vetos/decisions (permet A/B testing regles sans code)
|
||||
3. Architecture multi-modeles LLM (role-based dispatch : coding, cpam, validation, qc)
|
||||
173
docs/gold_debug/DIM_PACK_20260224_cases/106_23056475.json
Normal file
173
docs/gold_debug/DIM_PACK_20260224_cases/106_23056475.json
Normal file
@@ -0,0 +1,173 @@
|
||||
{
|
||||
"case_id": "106_23056475",
|
||||
"document_type": "trackare",
|
||||
"gold": {
|
||||
"dp_expected": {
|
||||
"code": "I26.9",
|
||||
"label": "Embolie pulmonaire"
|
||||
},
|
||||
"dp_acceptable_codes": [
|
||||
"I26.0",
|
||||
"I26.9"
|
||||
],
|
||||
"dp_acceptable_family3": [
|
||||
"I26"
|
||||
],
|
||||
"allow_symptom_dp": false,
|
||||
"confidence": "certain"
|
||||
},
|
||||
"prediction": {
|
||||
"chosen_code": "I26.9",
|
||||
"chosen_term": "Embolie pulmonaire",
|
||||
"verdict": "REVIEW",
|
||||
"confidence": "medium",
|
||||
"reason": "Écart 1.0 < seuil 3.0, LLM désactivé",
|
||||
"review_reason_tag": "low_delta",
|
||||
"evidence": [
|
||||
"Scores proches : 6.0 vs 5.0"
|
||||
],
|
||||
"evidence_count": 1
|
||||
},
|
||||
"pool_stats": {
|
||||
"raw_pool_size": 10,
|
||||
"filtered_pool_size": 7,
|
||||
"topk_size": 7
|
||||
},
|
||||
"top_candidates": [
|
||||
{
|
||||
"rank": 1,
|
||||
"index": 5,
|
||||
"code": "I26.9",
|
||||
"term": "Embolie pulmonaire",
|
||||
"score": 6.0,
|
||||
"flags": {
|
||||
"is_symptom_like": false,
|
||||
"is_comorbidity_like": false,
|
||||
"is_act_only": false
|
||||
},
|
||||
"section_strength": 2,
|
||||
"score_details": {
|
||||
"section": 2,
|
||||
"confidence": 3,
|
||||
"occurrences": 1
|
||||
},
|
||||
"evidence_snippets": []
|
||||
},
|
||||
{
|
||||
"rank": 2,
|
||||
"index": 0,
|
||||
"code": "I26.9",
|
||||
"term": "Embolie pulmonaire",
|
||||
"score": 5.0,
|
||||
"flags": {
|
||||
"is_symptom_like": false,
|
||||
"is_comorbidity_like": false,
|
||||
"is_act_only": false
|
||||
},
|
||||
"section_strength": 3,
|
||||
"score_details": {
|
||||
"section": 3,
|
||||
"confidence": 1,
|
||||
"occurrences": 1
|
||||
},
|
||||
"evidence_snippets": []
|
||||
},
|
||||
{
|
||||
"rank": 3,
|
||||
"index": 2,
|
||||
"code": "Q53.9",
|
||||
"term": "Cryptorchidie",
|
||||
"score": 5.0,
|
||||
"flags": {
|
||||
"is_symptom_like": false,
|
||||
"is_comorbidity_like": false,
|
||||
"is_act_only": false
|
||||
},
|
||||
"section_strength": 2,
|
||||
"score_details": {
|
||||
"section": 2,
|
||||
"confidence": 3
|
||||
},
|
||||
"evidence_snippets": []
|
||||
},
|
||||
{
|
||||
"rank": 4,
|
||||
"index": 3,
|
||||
"code": "J34.2",
|
||||
"term": "Déviation de la cloison",
|
||||
"score": 5.0,
|
||||
"flags": {
|
||||
"is_symptom_like": false,
|
||||
"is_comorbidity_like": false,
|
||||
"is_act_only": false
|
||||
},
|
||||
"section_strength": 2,
|
||||
"score_details": {
|
||||
"section": 2,
|
||||
"confidence": 3
|
||||
},
|
||||
"evidence_snippets": []
|
||||
},
|
||||
{
|
||||
"rank": 5,
|
||||
"index": 8,
|
||||
"code": "D50",
|
||||
"term": "Anémie",
|
||||
"score": 2.0,
|
||||
"flags": {
|
||||
"is_symptom_like": false,
|
||||
"is_comorbidity_like": false,
|
||||
"is_act_only": false
|
||||
},
|
||||
"section_strength": 1,
|
||||
"score_details": {
|
||||
"section": 1,
|
||||
"confidence": 1
|
||||
},
|
||||
"evidence_snippets": []
|
||||
},
|
||||
{
|
||||
"rank": 6,
|
||||
"index": 9,
|
||||
"code": "D72.1",
|
||||
"term": "Thrombocytose",
|
||||
"score": 2.0,
|
||||
"flags": {
|
||||
"is_symptom_like": false,
|
||||
"is_comorbidity_like": false,
|
||||
"is_act_only": false
|
||||
},
|
||||
"section_strength": 1,
|
||||
"score_details": {
|
||||
"section": 1,
|
||||
"confidence": 1
|
||||
},
|
||||
"evidence_snippets": []
|
||||
},
|
||||
{
|
||||
"rank": 7,
|
||||
"index": 1,
|
||||
"code": "Z51.1",
|
||||
"term": "Chimiothérapie",
|
||||
"score": 1.0,
|
||||
"flags": {
|
||||
"is_symptom_like": false,
|
||||
"is_comorbidity_like": false,
|
||||
"is_act_only": true
|
||||
},
|
||||
"section_strength": 2,
|
||||
"score_details": {
|
||||
"section": 2,
|
||||
"confidence": 3,
|
||||
"act_only_malus": -4
|
||||
},
|
||||
"evidence_snippets": []
|
||||
}
|
||||
],
|
||||
"match_eval": {
|
||||
"strict_match": true,
|
||||
"acceptable_match": true,
|
||||
"family3_match": true,
|
||||
"symptom_not_allowed": false
|
||||
}
|
||||
}
|
||||
81
docs/gold_debug/DIM_PACK_20260224_cases/111_23061304.json
Normal file
81
docs/gold_debug/DIM_PACK_20260224_cases/111_23061304.json
Normal file
@@ -0,0 +1,81 @@
|
||||
{
|
||||
"case_id": "111_23061304",
|
||||
"document_type": "trackare",
|
||||
"gold": null,
|
||||
"prediction": {
|
||||
"chosen_code": "N19",
|
||||
"chosen_term": "Insuffisance rénale",
|
||||
"verdict": "REVIEW",
|
||||
"confidence": "medium",
|
||||
"reason": "Écart 1.0 < seuil 3.0, LLM désactivé",
|
||||
"review_reason_tag": "low_delta",
|
||||
"evidence": [
|
||||
"Scores proches : 4.0 vs 3.0"
|
||||
],
|
||||
"evidence_count": 1
|
||||
},
|
||||
"pool_stats": {
|
||||
"raw_pool_size": 3,
|
||||
"filtered_pool_size": 3,
|
||||
"topk_size": 3
|
||||
},
|
||||
"top_candidates": [
|
||||
{
|
||||
"rank": 1,
|
||||
"index": 0,
|
||||
"code": "N19",
|
||||
"term": "Insuffisance rénale",
|
||||
"score": 4.0,
|
||||
"flags": {
|
||||
"is_symptom_like": false,
|
||||
"is_comorbidity_like": false,
|
||||
"is_act_only": false
|
||||
},
|
||||
"section_strength": 3,
|
||||
"score_details": {
|
||||
"section": 3,
|
||||
"confidence": 1
|
||||
},
|
||||
"evidence_snippets": []
|
||||
},
|
||||
{
|
||||
"rank": 2,
|
||||
"index": 1,
|
||||
"code": "Z99.9",
|
||||
"term": "Anesthésie + paresthésie",
|
||||
"score": 3.0,
|
||||
"flags": {
|
||||
"is_symptom_like": false,
|
||||
"is_comorbidity_like": false,
|
||||
"is_act_only": false
|
||||
},
|
||||
"section_strength": 2,
|
||||
"score_details": {
|
||||
"section": 2,
|
||||
"confidence": 3,
|
||||
"z_code_malus": -2
|
||||
},
|
||||
"evidence_snippets": []
|
||||
},
|
||||
{
|
||||
"rank": 3,
|
||||
"index": 2,
|
||||
"code": "R50.9",
|
||||
"term": "Fièvre",
|
||||
"score": 2.0,
|
||||
"flags": {
|
||||
"is_symptom_like": true,
|
||||
"is_comorbidity_like": false,
|
||||
"is_act_only": false
|
||||
},
|
||||
"section_strength": 1,
|
||||
"score_details": {
|
||||
"section": 1,
|
||||
"confidence": 3,
|
||||
"symptom_malus": -2
|
||||
},
|
||||
"evidence_snippets": []
|
||||
}
|
||||
],
|
||||
"match_eval": null
|
||||
}
|
||||
153
docs/gold_debug/DIM_PACK_20260224_cases/112_23065936.json
Normal file
153
docs/gold_debug/DIM_PACK_20260224_cases/112_23065936.json
Normal file
@@ -0,0 +1,153 @@
|
||||
{
|
||||
"case_id": "112_23065936",
|
||||
"document_type": "trackare",
|
||||
"gold": null,
|
||||
"prediction": {
|
||||
"chosen_code": "I25.5",
|
||||
"chosen_term": "Cardiopathie ischémique",
|
||||
"verdict": "REVIEW",
|
||||
"confidence": "medium",
|
||||
"reason": "Écart 0.0 < seuil 3.0, LLM désactivé",
|
||||
"review_reason_tag": "low_delta",
|
||||
"evidence": [
|
||||
"Scores proches : 5.0 vs 5.0"
|
||||
],
|
||||
"evidence_count": 1
|
||||
},
|
||||
"pool_stats": {
|
||||
"raw_pool_size": 8,
|
||||
"filtered_pool_size": 7,
|
||||
"topk_size": 7
|
||||
},
|
||||
"top_candidates": [
|
||||
{
|
||||
"rank": 1,
|
||||
"index": 2,
|
||||
"code": "I25.5",
|
||||
"term": "Cardiopathie ischémique",
|
||||
"score": 5.0,
|
||||
"flags": {
|
||||
"is_symptom_like": false,
|
||||
"is_comorbidity_like": false,
|
||||
"is_act_only": false
|
||||
},
|
||||
"section_strength": 2,
|
||||
"score_details": {
|
||||
"section": 2,
|
||||
"confidence": 3
|
||||
},
|
||||
"evidence_snippets": []
|
||||
},
|
||||
{
|
||||
"rank": 2,
|
||||
"index": 4,
|
||||
"code": "K60.5",
|
||||
"term": "Fistule",
|
||||
"score": 5.0,
|
||||
"flags": {
|
||||
"is_symptom_like": false,
|
||||
"is_comorbidity_like": false,
|
||||
"is_act_only": false
|
||||
},
|
||||
"section_strength": 2,
|
||||
"score_details": {
|
||||
"section": 2,
|
||||
"confidence": 3
|
||||
},
|
||||
"evidence_snippets": []
|
||||
},
|
||||
{
|
||||
"rank": 3,
|
||||
"index": 5,
|
||||
"code": "T37.0",
|
||||
"term": "+ sulfamides + sulfamides",
|
||||
"score": 5.0,
|
||||
"flags": {
|
||||
"is_symptom_like": false,
|
||||
"is_comorbidity_like": false,
|
||||
"is_act_only": false
|
||||
},
|
||||
"section_strength": 2,
|
||||
"score_details": {
|
||||
"section": 2,
|
||||
"confidence": 3
|
||||
},
|
||||
"evidence_snippets": []
|
||||
},
|
||||
{
|
||||
"rank": 4,
|
||||
"index": 6,
|
||||
"code": "N39.0",
|
||||
"term": "Infection urinaire due à Escherichia coli",
|
||||
"score": 4.0,
|
||||
"flags": {
|
||||
"is_symptom_like": false,
|
||||
"is_comorbidity_like": false,
|
||||
"is_act_only": false
|
||||
},
|
||||
"section_strength": 1,
|
||||
"score_details": {
|
||||
"section": 1,
|
||||
"confidence": 3
|
||||
},
|
||||
"evidence_snippets": []
|
||||
},
|
||||
{
|
||||
"rank": 5,
|
||||
"index": 0,
|
||||
"code": "I10",
|
||||
"term": "Hypertension artérielle",
|
||||
"score": 3.0,
|
||||
"flags": {
|
||||
"is_symptom_like": false,
|
||||
"is_comorbidity_like": true,
|
||||
"is_act_only": false
|
||||
},
|
||||
"section_strength": 3,
|
||||
"score_details": {
|
||||
"section": 3,
|
||||
"confidence": 3,
|
||||
"comorbidity_malus": -3
|
||||
},
|
||||
"evidence_snippets": []
|
||||
},
|
||||
{
|
||||
"rank": 6,
|
||||
"index": 3,
|
||||
"code": "R30.0",
|
||||
"term": "Dysurie",
|
||||
"score": 3.0,
|
||||
"flags": {
|
||||
"is_symptom_like": true,
|
||||
"is_comorbidity_like": false,
|
||||
"is_act_only": false
|
||||
},
|
||||
"section_strength": 2,
|
||||
"score_details": {
|
||||
"section": 2,
|
||||
"confidence": 3,
|
||||
"symptom_malus": -2
|
||||
},
|
||||
"evidence_snippets": []
|
||||
},
|
||||
{
|
||||
"rank": 7,
|
||||
"index": 7,
|
||||
"code": "D50",
|
||||
"term": "Anémie",
|
||||
"score": 2.0,
|
||||
"flags": {
|
||||
"is_symptom_like": false,
|
||||
"is_comorbidity_like": false,
|
||||
"is_act_only": false
|
||||
},
|
||||
"section_strength": 1,
|
||||
"score_details": {
|
||||
"section": 1,
|
||||
"confidence": 1
|
||||
},
|
||||
"evidence_snippets": []
|
||||
}
|
||||
],
|
||||
"match_eval": null
|
||||
}
|
||||
152
docs/gold_debug/DIM_PACK_20260224_cases/120_23033508.json
Normal file
152
docs/gold_debug/DIM_PACK_20260224_cases/120_23033508.json
Normal file
@@ -0,0 +1,152 @@
|
||||
{
|
||||
"case_id": "120_23033508",
|
||||
"document_type": "trackare",
|
||||
"gold": null,
|
||||
"prediction": {
|
||||
"chosen_code": "N85.7",
|
||||
"chosen_term": "Hématome",
|
||||
"verdict": "REVIEW",
|
||||
"confidence": "medium",
|
||||
"reason": "Écart 1.0 < seuil 3.0, LLM désactivé",
|
||||
"review_reason_tag": "low_delta",
|
||||
"evidence": [
|
||||
"Scores proches : 5.0 vs 4.0"
|
||||
],
|
||||
"evidence_count": 1
|
||||
},
|
||||
"pool_stats": {
|
||||
"raw_pool_size": 8,
|
||||
"filtered_pool_size": 7,
|
||||
"topk_size": 7
|
||||
},
|
||||
"top_candidates": [
|
||||
{
|
||||
"rank": 1,
|
||||
"index": 2,
|
||||
"code": "N85.7",
|
||||
"term": "Hématome",
|
||||
"score": 5.0,
|
||||
"flags": {
|
||||
"is_symptom_like": false,
|
||||
"is_comorbidity_like": false,
|
||||
"is_act_only": false
|
||||
},
|
||||
"section_strength": 2,
|
||||
"score_details": {
|
||||
"section": 2,
|
||||
"confidence": 3
|
||||
},
|
||||
"evidence_snippets": []
|
||||
},
|
||||
{
|
||||
"rank": 2,
|
||||
"index": 0,
|
||||
"code": "N19",
|
||||
"term": "Insuffisance rénale",
|
||||
"score": 4.0,
|
||||
"flags": {
|
||||
"is_symptom_like": false,
|
||||
"is_comorbidity_like": false,
|
||||
"is_act_only": false
|
||||
},
|
||||
"section_strength": 3,
|
||||
"score_details": {
|
||||
"section": 3,
|
||||
"confidence": 1
|
||||
},
|
||||
"evidence_snippets": []
|
||||
},
|
||||
{
|
||||
"rank": 3,
|
||||
"index": 5,
|
||||
"code": "C68.9",
|
||||
"term": "Porteur de mutation BRCA 2",
|
||||
"score": 4.0,
|
||||
"flags": {
|
||||
"is_symptom_like": false,
|
||||
"is_comorbidity_like": false,
|
||||
"is_act_only": false
|
||||
},
|
||||
"section_strength": 1,
|
||||
"score_details": {
|
||||
"section": 1,
|
||||
"confidence": 3
|
||||
},
|
||||
"evidence_snippets": []
|
||||
},
|
||||
{
|
||||
"rank": 4,
|
||||
"index": 6,
|
||||
"code": "D50",
|
||||
"term": "Anémie légère",
|
||||
"score": 4.0,
|
||||
"flags": {
|
||||
"is_symptom_like": false,
|
||||
"is_comorbidity_like": false,
|
||||
"is_act_only": false
|
||||
},
|
||||
"section_strength": 1,
|
||||
"score_details": {
|
||||
"section": 1,
|
||||
"confidence": 3
|
||||
},
|
||||
"evidence_snippets": []
|
||||
},
|
||||
{
|
||||
"rank": 5,
|
||||
"index": 3,
|
||||
"code": "K64",
|
||||
"term": "Hémorroïdes",
|
||||
"score": 3.0,
|
||||
"flags": {
|
||||
"is_symptom_like": false,
|
||||
"is_comorbidity_like": false,
|
||||
"is_act_only": false
|
||||
},
|
||||
"section_strength": 2,
|
||||
"score_details": {
|
||||
"section": 2,
|
||||
"confidence": 1
|
||||
},
|
||||
"evidence_snippets": []
|
||||
},
|
||||
{
|
||||
"rank": 6,
|
||||
"index": 4,
|
||||
"code": "Z01.7",
|
||||
"term": "Laboratoire contacter le laboratoire",
|
||||
"score": 3.0,
|
||||
"flags": {
|
||||
"is_symptom_like": false,
|
||||
"is_comorbidity_like": false,
|
||||
"is_act_only": false
|
||||
},
|
||||
"section_strength": 2,
|
||||
"score_details": {
|
||||
"section": 2,
|
||||
"confidence": 3,
|
||||
"z_code_malus": -2
|
||||
},
|
||||
"evidence_snippets": []
|
||||
},
|
||||
{
|
||||
"rank": 7,
|
||||
"index": 7,
|
||||
"code": "Z54.0",
|
||||
"term": "Douleur postopératoire",
|
||||
"score": 2.0,
|
||||
"flags": {
|
||||
"is_symptom_like": false,
|
||||
"is_comorbidity_like": false,
|
||||
"is_act_only": false
|
||||
},
|
||||
"section_strength": 1,
|
||||
"score_details": {
|
||||
"section": 1,
|
||||
"confidence": 1
|
||||
},
|
||||
"evidence_snippets": []
|
||||
}
|
||||
],
|
||||
"match_eval": null
|
||||
}
|
||||
41
docs/gold_debug/DIM_PACK_20260224_cases/132_23080179.json
Normal file
41
docs/gold_debug/DIM_PACK_20260224_cases/132_23080179.json
Normal file
@@ -0,0 +1,41 @@
|
||||
{
|
||||
"case_id": "132_23080179",
|
||||
"document_type": "trackare",
|
||||
"gold": {
|
||||
"dp_expected": {
|
||||
"code": "C83.3",
|
||||
"label": "Lymphome diffus à grandes cellules B"
|
||||
},
|
||||
"dp_acceptable_codes": [],
|
||||
"dp_acceptable_family3": [
|
||||
"C83"
|
||||
],
|
||||
"allow_symptom_dp": false,
|
||||
"confidence": "probable"
|
||||
},
|
||||
"prediction": {
|
||||
"chosen_code": "R59.0",
|
||||
"chosen_term": "Adénopathie",
|
||||
"verdict": "REVIEW",
|
||||
"confidence": "medium",
|
||||
"reason": "Trackare symptôme vs CRH diagnostic — vérification DIM requise",
|
||||
"review_reason_tag": "other",
|
||||
"evidence": [
|
||||
"Source: Trackare (codage établissement)",
|
||||
"Alerte: Trackare code un symptôme (R*) mais le CRH mentionne un diagnostic étiologique"
|
||||
],
|
||||
"evidence_count": 2
|
||||
},
|
||||
"pool_stats": {
|
||||
"raw_pool_size": 23,
|
||||
"filtered_pool_size": 0,
|
||||
"topk_size": 0
|
||||
},
|
||||
"top_candidates": [],
|
||||
"match_eval": {
|
||||
"strict_match": false,
|
||||
"acceptable_match": false,
|
||||
"family3_match": false,
|
||||
"symptom_not_allowed": true
|
||||
}
|
||||
}
|
||||
152
docs/gold_debug/DIM_PACK_20260224_cases/139_23087691.json
Normal file
152
docs/gold_debug/DIM_PACK_20260224_cases/139_23087691.json
Normal file
@@ -0,0 +1,152 @@
|
||||
{
|
||||
"case_id": "139_23087691",
|
||||
"document_type": "trackare",
|
||||
"gold": null,
|
||||
"prediction": {
|
||||
"chosen_code": "M16.7",
|
||||
"chosen_term": "Coxarthrose",
|
||||
"verdict": "REVIEW",
|
||||
"confidence": "medium",
|
||||
"reason": "Écart 0.0 < seuil 3.0, LLM désactivé",
|
||||
"review_reason_tag": "low_delta",
|
||||
"evidence": [
|
||||
"Scores proches : 5.0 vs 5.0"
|
||||
],
|
||||
"evidence_count": 1
|
||||
},
|
||||
"pool_stats": {
|
||||
"raw_pool_size": 17,
|
||||
"filtered_pool_size": 7,
|
||||
"topk_size": 7
|
||||
},
|
||||
"top_candidates": [
|
||||
{
|
||||
"rank": 1,
|
||||
"index": 0,
|
||||
"code": "M16.7",
|
||||
"term": "Coxarthrose",
|
||||
"score": 5.0,
|
||||
"flags": {
|
||||
"is_symptom_like": false,
|
||||
"is_comorbidity_like": false,
|
||||
"is_act_only": false
|
||||
},
|
||||
"section_strength": 2,
|
||||
"score_details": {
|
||||
"section": 2,
|
||||
"confidence": 3
|
||||
},
|
||||
"evidence_snippets": []
|
||||
},
|
||||
{
|
||||
"rank": 2,
|
||||
"index": 1,
|
||||
"code": "G25.0",
|
||||
"term": "Tremblements essentiels",
|
||||
"score": 5.0,
|
||||
"flags": {
|
||||
"is_symptom_like": false,
|
||||
"is_comorbidity_like": false,
|
||||
"is_act_only": false
|
||||
},
|
||||
"section_strength": 2,
|
||||
"score_details": {
|
||||
"section": 2,
|
||||
"confidence": 3
|
||||
},
|
||||
"evidence_snippets": []
|
||||
},
|
||||
{
|
||||
"rank": 3,
|
||||
"index": 3,
|
||||
"code": "G56.0",
|
||||
"term": "Syndrome du canal carpien",
|
||||
"score": 5.0,
|
||||
"flags": {
|
||||
"is_symptom_like": false,
|
||||
"is_comorbidity_like": false,
|
||||
"is_act_only": false
|
||||
},
|
||||
"section_strength": 2,
|
||||
"score_details": {
|
||||
"section": 2,
|
||||
"confidence": 3
|
||||
},
|
||||
"evidence_snippets": []
|
||||
},
|
||||
{
|
||||
"rank": 4,
|
||||
"index": 4,
|
||||
"code": "K59.0",
|
||||
"term": "Constipation",
|
||||
"score": 5.0,
|
||||
"flags": {
|
||||
"is_symptom_like": false,
|
||||
"is_comorbidity_like": false,
|
||||
"is_act_only": false
|
||||
},
|
||||
"section_strength": 2,
|
||||
"score_details": {
|
||||
"section": 2,
|
||||
"confidence": 3
|
||||
},
|
||||
"evidence_snippets": []
|
||||
},
|
||||
{
|
||||
"rank": 5,
|
||||
"index": 6,
|
||||
"code": "F43.28",
|
||||
"term": "Troubles de la",
|
||||
"score": 5.0,
|
||||
"flags": {
|
||||
"is_symptom_like": false,
|
||||
"is_comorbidity_like": false,
|
||||
"is_act_only": false
|
||||
},
|
||||
"section_strength": 2,
|
||||
"score_details": {
|
||||
"section": 2,
|
||||
"confidence": 3
|
||||
},
|
||||
"evidence_snippets": []
|
||||
},
|
||||
{
|
||||
"rank": 6,
|
||||
"index": 7,
|
||||
"code": "G70.0",
|
||||
"term": "Myasthénie auto-immune",
|
||||
"score": 5.0,
|
||||
"flags": {
|
||||
"is_symptom_like": false,
|
||||
"is_comorbidity_like": false,
|
||||
"is_act_only": false
|
||||
},
|
||||
"section_strength": 1,
|
||||
"score_details": {
|
||||
"section": 1,
|
||||
"confidence": 3,
|
||||
"occurrences": 1
|
||||
},
|
||||
"evidence_snippets": []
|
||||
},
|
||||
{
|
||||
"rank": 7,
|
||||
"index": 13,
|
||||
"code": "Z50.5",
|
||||
"term": "Orthophoniste",
|
||||
"score": 5.0,
|
||||
"flags": {
|
||||
"is_symptom_like": false,
|
||||
"is_comorbidity_like": false,
|
||||
"is_act_only": false
|
||||
},
|
||||
"section_strength": 2,
|
||||
"score_details": {
|
||||
"section": 2,
|
||||
"confidence": 3
|
||||
},
|
||||
"evidence_snippets": []
|
||||
}
|
||||
],
|
||||
"match_eval": null
|
||||
}
|
||||
155
docs/gold_debug/DIM_PACK_20260224_cases/140_23090475.json
Normal file
155
docs/gold_debug/DIM_PACK_20260224_cases/140_23090475.json
Normal file
@@ -0,0 +1,155 @@
|
||||
{
|
||||
"case_id": "140_23090475",
|
||||
"document_type": "trackare",
|
||||
"gold": null,
|
||||
"prediction": {
|
||||
"chosen_code": "Z54.8",
|
||||
"chosen_term": "Convalescence",
|
||||
"verdict": "REVIEW",
|
||||
"confidence": "medium",
|
||||
"reason": "Écart 0.0 < seuil 3.0, LLM désactivé",
|
||||
"review_reason_tag": "low_delta",
|
||||
"evidence": [
|
||||
"Scores proches : 5.0 vs 5.0"
|
||||
],
|
||||
"evidence_count": 1
|
||||
},
|
||||
"pool_stats": {
|
||||
"raw_pool_size": 7,
|
||||
"filtered_pool_size": 7,
|
||||
"topk_size": 7
|
||||
},
|
||||
"top_candidates": [
|
||||
{
|
||||
"rank": 1,
|
||||
"index": 3,
|
||||
"code": "Z54.8",
|
||||
"term": "Convalescence",
|
||||
"score": 5.0,
|
||||
"flags": {
|
||||
"is_symptom_like": false,
|
||||
"is_comorbidity_like": false,
|
||||
"is_act_only": false
|
||||
},
|
||||
"section_strength": 2,
|
||||
"score_details": {
|
||||
"section": 2,
|
||||
"confidence": 3
|
||||
},
|
||||
"evidence_snippets": []
|
||||
},
|
||||
{
|
||||
"rank": 2,
|
||||
"index": 4,
|
||||
"code": "E03.9",
|
||||
"term": "Hypothyroïdie",
|
||||
"score": 5.0,
|
||||
"flags": {
|
||||
"is_symptom_like": false,
|
||||
"is_comorbidity_like": false,
|
||||
"is_act_only": false
|
||||
},
|
||||
"section_strength": 2,
|
||||
"score_details": {
|
||||
"section": 2,
|
||||
"confidence": 3
|
||||
},
|
||||
"evidence_snippets": []
|
||||
},
|
||||
{
|
||||
"rank": 3,
|
||||
"index": 0,
|
||||
"code": "M54.5",
|
||||
"term": "Douleur lombaire post-opératoire",
|
||||
"score": 4.0,
|
||||
"flags": {
|
||||
"is_symptom_like": false,
|
||||
"is_comorbidity_like": false,
|
||||
"is_act_only": false
|
||||
},
|
||||
"section_strength": 1,
|
||||
"score_details": {
|
||||
"section": 1,
|
||||
"confidence": 3
|
||||
},
|
||||
"evidence_snippets": []
|
||||
},
|
||||
{
|
||||
"rank": 4,
|
||||
"index": 1,
|
||||
"code": "E78.5",
|
||||
"term": "Dyslipidémie",
|
||||
"score": 4.0,
|
||||
"flags": {
|
||||
"is_symptom_like": false,
|
||||
"is_comorbidity_like": true,
|
||||
"is_act_only": false
|
||||
},
|
||||
"section_strength": 3,
|
||||
"score_details": {
|
||||
"section": 3,
|
||||
"confidence": 3,
|
||||
"occurrences": 1,
|
||||
"comorbidity_malus": -3
|
||||
},
|
||||
"evidence_snippets": []
|
||||
},
|
||||
{
|
||||
"rank": 5,
|
||||
"index": 2,
|
||||
"code": "N19",
|
||||
"term": "Insuffisance rénale",
|
||||
"score": 4.0,
|
||||
"flags": {
|
||||
"is_symptom_like": false,
|
||||
"is_comorbidity_like": false,
|
||||
"is_act_only": false
|
||||
},
|
||||
"section_strength": 3,
|
||||
"score_details": {
|
||||
"section": 3,
|
||||
"confidence": 1
|
||||
},
|
||||
"evidence_snippets": []
|
||||
},
|
||||
{
|
||||
"rank": 6,
|
||||
"index": 6,
|
||||
"code": "O86.0",
|
||||
"term": "Infection post-opératoire",
|
||||
"score": 2.0,
|
||||
"flags": {
|
||||
"is_symptom_like": false,
|
||||
"is_comorbidity_like": false,
|
||||
"is_act_only": false
|
||||
},
|
||||
"section_strength": 1,
|
||||
"score_details": {
|
||||
"section": 1,
|
||||
"confidence": 1
|
||||
},
|
||||
"evidence_snippets": []
|
||||
},
|
||||
{
|
||||
"rank": 7,
|
||||
"index": 5,
|
||||
"code": "E78.0",
|
||||
"term": "Hypercholestérolémie",
|
||||
"score": 1.0,
|
||||
"flags": {
|
||||
"is_symptom_like": false,
|
||||
"is_comorbidity_like": true,
|
||||
"is_act_only": false
|
||||
},
|
||||
"section_strength": 2,
|
||||
"score_details": {
|
||||
"section": 2,
|
||||
"confidence": 1,
|
||||
"occurrences": 1,
|
||||
"comorbidity_malus": -3
|
||||
},
|
||||
"evidence_snippets": []
|
||||
}
|
||||
],
|
||||
"match_eval": null
|
||||
}
|
||||
153
docs/gold_debug/DIM_PACK_20260224_cases/146_23099769.json
Normal file
153
docs/gold_debug/DIM_PACK_20260224_cases/146_23099769.json
Normal file
@@ -0,0 +1,153 @@
|
||||
{
|
||||
"case_id": "146_23099769",
|
||||
"document_type": "trackare",
|
||||
"gold": null,
|
||||
"prediction": {
|
||||
"chosen_code": "T83.5",
|
||||
"chosen_term": "Infection urinaire",
|
||||
"verdict": "REVIEW",
|
||||
"confidence": "medium",
|
||||
"reason": "Écart 0.0 < seuil 3.0, LLM désactivé",
|
||||
"review_reason_tag": "low_delta",
|
||||
"evidence": [
|
||||
"Scores proches : 6.0 vs 6.0"
|
||||
],
|
||||
"evidence_count": 1
|
||||
},
|
||||
"pool_stats": {
|
||||
"raw_pool_size": 9,
|
||||
"filtered_pool_size": 7,
|
||||
"topk_size": 7
|
||||
},
|
||||
"top_candidates": [
|
||||
{
|
||||
"rank": 1,
|
||||
"index": 0,
|
||||
"code": "T83.5",
|
||||
"term": "Infection urinaire",
|
||||
"score": 6.0,
|
||||
"flags": {
|
||||
"is_symptom_like": false,
|
||||
"is_comorbidity_like": false,
|
||||
"is_act_only": false
|
||||
},
|
||||
"section_strength": 3,
|
||||
"score_details": {
|
||||
"section": 3,
|
||||
"confidence": 3
|
||||
},
|
||||
"evidence_snippets": []
|
||||
},
|
||||
{
|
||||
"rank": 2,
|
||||
"index": 3,
|
||||
"code": "D50",
|
||||
"term": "Anémie",
|
||||
"score": 6.0,
|
||||
"flags": {
|
||||
"is_symptom_like": false,
|
||||
"is_comorbidity_like": false,
|
||||
"is_act_only": false
|
||||
},
|
||||
"section_strength": 3,
|
||||
"score_details": {
|
||||
"section": 3,
|
||||
"confidence": 3
|
||||
},
|
||||
"evidence_snippets": []
|
||||
},
|
||||
{
|
||||
"rank": 3,
|
||||
"index": 5,
|
||||
"code": "C92.0",
|
||||
"term": "Leucémie myeloblastique aigue",
|
||||
"score": 6.0,
|
||||
"flags": {
|
||||
"is_symptom_like": false,
|
||||
"is_comorbidity_like": false,
|
||||
"is_act_only": false
|
||||
},
|
||||
"section_strength": 2,
|
||||
"score_details": {
|
||||
"section": 2,
|
||||
"confidence": 3,
|
||||
"occurrences": 1
|
||||
},
|
||||
"evidence_snippets": []
|
||||
},
|
||||
{
|
||||
"rank": 4,
|
||||
"index": 7,
|
||||
"code": "C92.6",
|
||||
"term": "Leucémie aigue myeloide",
|
||||
"score": 6.0,
|
||||
"flags": {
|
||||
"is_symptom_like": false,
|
||||
"is_comorbidity_like": false,
|
||||
"is_act_only": false
|
||||
},
|
||||
"section_strength": 2,
|
||||
"score_details": {
|
||||
"section": 2,
|
||||
"confidence": 3,
|
||||
"occurrences": 1
|
||||
},
|
||||
"evidence_snippets": []
|
||||
},
|
||||
{
|
||||
"rank": 5,
|
||||
"index": 4,
|
||||
"code": "B40.9",
|
||||
"term": "Blastose",
|
||||
"score": 5.0,
|
||||
"flags": {
|
||||
"is_symptom_like": false,
|
||||
"is_comorbidity_like": false,
|
||||
"is_act_only": false
|
||||
},
|
||||
"section_strength": 2,
|
||||
"score_details": {
|
||||
"section": 2,
|
||||
"confidence": 3
|
||||
},
|
||||
"evidence_snippets": []
|
||||
},
|
||||
{
|
||||
"rank": 6,
|
||||
"index": 1,
|
||||
"code": "Z03.8",
|
||||
"term": "Infection à Proteus vulgaris",
|
||||
"score": 4.0,
|
||||
"flags": {
|
||||
"is_symptom_like": false,
|
||||
"is_comorbidity_like": false,
|
||||
"is_act_only": false
|
||||
},
|
||||
"section_strength": 1,
|
||||
"score_details": {
|
||||
"section": 1,
|
||||
"confidence": 3
|
||||
},
|
||||
"evidence_snippets": []
|
||||
},
|
||||
{
|
||||
"rank": 7,
|
||||
"index": 2,
|
||||
"code": "A41.9",
|
||||
"term": "Sepsis",
|
||||
"score": 4.0,
|
||||
"flags": {
|
||||
"is_symptom_like": false,
|
||||
"is_comorbidity_like": false,
|
||||
"is_act_only": false
|
||||
},
|
||||
"section_strength": 3,
|
||||
"score_details": {
|
||||
"section": 3,
|
||||
"confidence": 1
|
||||
},
|
||||
"evidence_snippets": []
|
||||
}
|
||||
],
|
||||
"match_eval": null
|
||||
}
|
||||
157
docs/gold_debug/DIM_PACK_20260224_cases/149_23089771.json
Normal file
157
docs/gold_debug/DIM_PACK_20260224_cases/149_23089771.json
Normal file
@@ -0,0 +1,157 @@
|
||||
{
|
||||
"case_id": "149_23089771",
|
||||
"document_type": "trackare",
|
||||
"gold": null,
|
||||
"prediction": {
|
||||
"chosen_code": "H16.0",
|
||||
"chosen_term": "C omprend décollement de la (de la) : • conjonctive",
|
||||
"verdict": "REVIEW",
|
||||
"confidence": "medium",
|
||||
"reason": "Écart 0.0 < seuil 3.0, LLM désactivé",
|
||||
"review_reason_tag": "low_delta",
|
||||
"evidence": [
|
||||
"Scores proches : 6.0 vs 6.0"
|
||||
],
|
||||
"evidence_count": 1
|
||||
},
|
||||
"pool_stats": {
|
||||
"raw_pool_size": 9,
|
||||
"filtered_pool_size": 7,
|
||||
"topk_size": 7
|
||||
},
|
||||
"top_candidates": [
|
||||
{
|
||||
"rank": 1,
|
||||
"index": 1,
|
||||
"code": "H16.0",
|
||||
"term": "C omprend décollement de la (de la) : • conjonctive",
|
||||
"score": 6.0,
|
||||
"flags": {
|
||||
"is_symptom_like": false,
|
||||
"is_comorbidity_like": false,
|
||||
"is_act_only": false
|
||||
},
|
||||
"section_strength": 1,
|
||||
"score_details": {
|
||||
"section": 1,
|
||||
"confidence": 3,
|
||||
"occurrences": 2
|
||||
},
|
||||
"evidence_snippets": []
|
||||
},
|
||||
{
|
||||
"rank": 2,
|
||||
"index": 2,
|
||||
"code": "H16.1",
|
||||
"term": "C omprend décollement de la (de la) : • cornée",
|
||||
"score": 6.0,
|
||||
"flags": {
|
||||
"is_symptom_like": false,
|
||||
"is_comorbidity_like": false,
|
||||
"is_act_only": false
|
||||
},
|
||||
"section_strength": 1,
|
||||
"score_details": {
|
||||
"section": 1,
|
||||
"confidence": 3,
|
||||
"occurrences": 2
|
||||
},
|
||||
"evidence_snippets": []
|
||||
},
|
||||
{
|
||||
"rank": 3,
|
||||
"index": 3,
|
||||
"code": "H16.2",
|
||||
"term": "C omprend décollement de la (de la) : • membrane de Descemet",
|
||||
"score": 6.0,
|
||||
"flags": {
|
||||
"is_symptom_like": false,
|
||||
"is_comorbidity_like": false,
|
||||
"is_act_only": false
|
||||
},
|
||||
"section_strength": 1,
|
||||
"score_details": {
|
||||
"section": 1,
|
||||
"confidence": 3,
|
||||
"occurrences": 2
|
||||
},
|
||||
"evidence_snippets": []
|
||||
},
|
||||
{
|
||||
"rank": 4,
|
||||
"index": 4,
|
||||
"code": "N19",
|
||||
"term": "Insuffisance rénale",
|
||||
"score": 6.0,
|
||||
"flags": {
|
||||
"is_symptom_like": false,
|
||||
"is_comorbidity_like": false,
|
||||
"is_act_only": false
|
||||
},
|
||||
"section_strength": 3,
|
||||
"score_details": {
|
||||
"section": 3,
|
||||
"confidence": 3
|
||||
},
|
||||
"evidence_snippets": []
|
||||
},
|
||||
{
|
||||
"rank": 5,
|
||||
"index": 6,
|
||||
"code": "G82.11",
|
||||
"term": "Tétraparésie spastique",
|
||||
"score": 6.0,
|
||||
"flags": {
|
||||
"is_symptom_like": false,
|
||||
"is_comorbidity_like": false,
|
||||
"is_act_only": false
|
||||
},
|
||||
"section_strength": 1,
|
||||
"score_details": {
|
||||
"section": 1,
|
||||
"confidence": 3,
|
||||
"occurrences": 2
|
||||
},
|
||||
"evidence_snippets": []
|
||||
},
|
||||
{
|
||||
"rank": 6,
|
||||
"index": 7,
|
||||
"code": "G82.10",
|
||||
"term": "Tétraplégie spastique",
|
||||
"score": 6.0,
|
||||
"flags": {
|
||||
"is_symptom_like": false,
|
||||
"is_comorbidity_like": false,
|
||||
"is_act_only": false
|
||||
},
|
||||
"section_strength": 1,
|
||||
"score_details": {
|
||||
"section": 1,
|
||||
"confidence": 3,
|
||||
"occurrences": 2
|
||||
},
|
||||
"evidence_snippets": []
|
||||
},
|
||||
{
|
||||
"rank": 7,
|
||||
"index": 8,
|
||||
"code": "G82.19",
|
||||
"term": "Tétraplégie spastique, sans précision",
|
||||
"score": 6.0,
|
||||
"flags": {
|
||||
"is_symptom_like": false,
|
||||
"is_comorbidity_like": false,
|
||||
"is_act_only": false
|
||||
},
|
||||
"section_strength": 1,
|
||||
"score_details": {
|
||||
"section": 1,
|
||||
"confidence": 3,
|
||||
"occurrences": 2
|
||||
},
|
||||
"evidence_snippets": []
|
||||
}
|
||||
],
|
||||
"match_eval": null
|
||||
}
|
||||
153
docs/gold_debug/DIM_PACK_20260224_cases/153_23102610.json
Normal file
153
docs/gold_debug/DIM_PACK_20260224_cases/153_23102610.json
Normal file
@@ -0,0 +1,153 @@
|
||||
{
|
||||
"case_id": "153_23102610",
|
||||
"document_type": "trackare",
|
||||
"gold": null,
|
||||
"prediction": {
|
||||
"chosen_code": "T83.5",
|
||||
"chosen_term": "Infection urinaire",
|
||||
"verdict": "REVIEW",
|
||||
"confidence": "medium",
|
||||
"reason": "Écart 1.0 < seuil 3.0, LLM désactivé",
|
||||
"review_reason_tag": "low_delta",
|
||||
"evidence": [
|
||||
"Scores proches : 6.0 vs 5.0"
|
||||
],
|
||||
"evidence_count": 1
|
||||
},
|
||||
"pool_stats": {
|
||||
"raw_pool_size": 15,
|
||||
"filtered_pool_size": 7,
|
||||
"topk_size": 7
|
||||
},
|
||||
"top_candidates": [
|
||||
{
|
||||
"rank": 1,
|
||||
"index": 0,
|
||||
"code": "T83.5",
|
||||
"term": "Infection urinaire",
|
||||
"score": 6.0,
|
||||
"flags": {
|
||||
"is_symptom_like": false,
|
||||
"is_comorbidity_like": false,
|
||||
"is_act_only": false
|
||||
},
|
||||
"section_strength": 3,
|
||||
"score_details": {
|
||||
"section": 3,
|
||||
"confidence": 1,
|
||||
"diag_section_bonus": 2
|
||||
},
|
||||
"evidence_snippets": []
|
||||
},
|
||||
{
|
||||
"rank": 2,
|
||||
"index": 3,
|
||||
"code": "C49",
|
||||
"term": "C : 9.4",
|
||||
"score": 5.0,
|
||||
"flags": {
|
||||
"is_symptom_like": false,
|
||||
"is_comorbidity_like": false,
|
||||
"is_act_only": false
|
||||
},
|
||||
"section_strength": 2,
|
||||
"score_details": {
|
||||
"section": 2,
|
||||
"confidence": 3
|
||||
},
|
||||
"evidence_snippets": []
|
||||
},
|
||||
{
|
||||
"rank": 3,
|
||||
"index": 4,
|
||||
"code": "F06.4",
|
||||
"term": "Pathologique",
|
||||
"score": 5.0,
|
||||
"flags": {
|
||||
"is_symptom_like": false,
|
||||
"is_comorbidity_like": false,
|
||||
"is_act_only": false
|
||||
},
|
||||
"section_strength": 2,
|
||||
"score_details": {
|
||||
"section": 2,
|
||||
"confidence": 3
|
||||
},
|
||||
"evidence_snippets": []
|
||||
},
|
||||
{
|
||||
"rank": 4,
|
||||
"index": 9,
|
||||
"code": "T88.7",
|
||||
"term": "Effets indésirables",
|
||||
"score": 5.0,
|
||||
"flags": {
|
||||
"is_symptom_like": false,
|
||||
"is_comorbidity_like": false,
|
||||
"is_act_only": false
|
||||
},
|
||||
"section_strength": 2,
|
||||
"score_details": {
|
||||
"section": 2,
|
||||
"confidence": 3
|
||||
},
|
||||
"evidence_snippets": []
|
||||
},
|
||||
{
|
||||
"rank": 5,
|
||||
"index": 14,
|
||||
"code": "K71",
|
||||
"term": "Hépatopathie induite par médicaments",
|
||||
"score": 4.0,
|
||||
"flags": {
|
||||
"is_symptom_like": false,
|
||||
"is_comorbidity_like": false,
|
||||
"is_act_only": false
|
||||
},
|
||||
"section_strength": 1,
|
||||
"score_details": {
|
||||
"section": 1,
|
||||
"confidence": 3
|
||||
},
|
||||
"evidence_snippets": []
|
||||
},
|
||||
{
|
||||
"rank": 6,
|
||||
"index": 1,
|
||||
"code": "E11.9",
|
||||
"term": "Diabète de type 2",
|
||||
"score": 3.0,
|
||||
"flags": {
|
||||
"is_symptom_like": false,
|
||||
"is_comorbidity_like": true,
|
||||
"is_act_only": false
|
||||
},
|
||||
"section_strength": 3,
|
||||
"score_details": {
|
||||
"section": 3,
|
||||
"confidence": 3,
|
||||
"comorbidity_malus": -3
|
||||
},
|
||||
"evidence_snippets": []
|
||||
},
|
||||
{
|
||||
"rank": 7,
|
||||
"index": 8,
|
||||
"code": "N19",
|
||||
"term": "Insuffisance rénale",
|
||||
"score": 3.0,
|
||||
"flags": {
|
||||
"is_symptom_like": false,
|
||||
"is_comorbidity_like": false,
|
||||
"is_act_only": false
|
||||
},
|
||||
"section_strength": 3,
|
||||
"score_details": {
|
||||
"section": 3,
|
||||
"confidence": 0
|
||||
},
|
||||
"evidence_snippets": []
|
||||
}
|
||||
],
|
||||
"match_eval": null
|
||||
}
|
||||
156
docs/gold_debug/DIM_PACK_20260224_cases/159_23107113.json
Normal file
156
docs/gold_debug/DIM_PACK_20260224_cases/159_23107113.json
Normal file
@@ -0,0 +1,156 @@
|
||||
{
|
||||
"case_id": "159_23107113",
|
||||
"document_type": "trackare",
|
||||
"gold": null,
|
||||
"prediction": {
|
||||
"chosen_code": "I26.9",
|
||||
"chosen_term": "Embolie pulmonaire",
|
||||
"verdict": "REVIEW",
|
||||
"confidence": "medium",
|
||||
"reason": "Écart 0.0 < seuil 3.0, LLM désactivé",
|
||||
"review_reason_tag": "low_delta",
|
||||
"evidence": [
|
||||
"Scores proches : 6.0 vs 6.0"
|
||||
],
|
||||
"evidence_count": 1
|
||||
},
|
||||
"pool_stats": {
|
||||
"raw_pool_size": 21,
|
||||
"filtered_pool_size": 7,
|
||||
"topk_size": 7
|
||||
},
|
||||
"top_candidates": [
|
||||
{
|
||||
"rank": 1,
|
||||
"index": 1,
|
||||
"code": "I26.9",
|
||||
"term": "Embolie pulmonaire",
|
||||
"score": 6.0,
|
||||
"flags": {
|
||||
"is_symptom_like": false,
|
||||
"is_comorbidity_like": false,
|
||||
"is_act_only": false
|
||||
},
|
||||
"section_strength": 3,
|
||||
"score_details": {
|
||||
"section": 3,
|
||||
"confidence": 3
|
||||
},
|
||||
"evidence_snippets": []
|
||||
},
|
||||
{
|
||||
"rank": 2,
|
||||
"index": 3,
|
||||
"code": "J18.9",
|
||||
"term": "Pneumopathie",
|
||||
"score": 6.0,
|
||||
"flags": {
|
||||
"is_symptom_like": false,
|
||||
"is_comorbidity_like": false,
|
||||
"is_act_only": false
|
||||
},
|
||||
"section_strength": 3,
|
||||
"score_details": {
|
||||
"section": 3,
|
||||
"confidence": 1,
|
||||
"diag_section_bonus": 2
|
||||
},
|
||||
"evidence_snippets": []
|
||||
},
|
||||
{
|
||||
"rank": 3,
|
||||
"index": 4,
|
||||
"code": "N19",
|
||||
"term": "Insuffisance rénale",
|
||||
"score": 6.0,
|
||||
"flags": {
|
||||
"is_symptom_like": false,
|
||||
"is_comorbidity_like": false,
|
||||
"is_act_only": false
|
||||
},
|
||||
"section_strength": 3,
|
||||
"score_details": {
|
||||
"section": 3,
|
||||
"confidence": 3
|
||||
},
|
||||
"evidence_snippets": []
|
||||
},
|
||||
{
|
||||
"rank": 4,
|
||||
"index": 15,
|
||||
"code": "B01.8",
|
||||
"term": "Varicelle",
|
||||
"score": 6.0,
|
||||
"flags": {
|
||||
"is_symptom_like": false,
|
||||
"is_comorbidity_like": false,
|
||||
"is_act_only": false
|
||||
},
|
||||
"section_strength": 2,
|
||||
"score_details": {
|
||||
"section": 2,
|
||||
"confidence": 1,
|
||||
"occurrences": 1,
|
||||
"diag_section_bonus": 2
|
||||
},
|
||||
"evidence_snippets": []
|
||||
},
|
||||
{
|
||||
"rank": 5,
|
||||
"index": 16,
|
||||
"code": "B01",
|
||||
"term": "Pneumopathie varicelleuse",
|
||||
"score": 6.0,
|
||||
"flags": {
|
||||
"is_symptom_like": false,
|
||||
"is_comorbidity_like": false,
|
||||
"is_act_only": false
|
||||
},
|
||||
"section_strength": 2,
|
||||
"score_details": {
|
||||
"section": 2,
|
||||
"confidence": 1,
|
||||
"occurrences": 1,
|
||||
"diag_section_bonus": 2
|
||||
},
|
||||
"evidence_snippets": []
|
||||
},
|
||||
{
|
||||
"rank": 6,
|
||||
"index": 6,
|
||||
"code": "P37.1",
|
||||
"term": "Toxoplasmose congénitale",
|
||||
"score": 5.0,
|
||||
"flags": {
|
||||
"is_symptom_like": false,
|
||||
"is_comorbidity_like": false,
|
||||
"is_act_only": false
|
||||
},
|
||||
"section_strength": 2,
|
||||
"score_details": {
|
||||
"section": 2,
|
||||
"confidence": 3
|
||||
},
|
||||
"evidence_snippets": []
|
||||
},
|
||||
{
|
||||
"rank": 7,
|
||||
"index": 9,
|
||||
"code": "B06.9",
|
||||
"term": "Rubéole",
|
||||
"score": 5.0,
|
||||
"flags": {
|
||||
"is_symptom_like": false,
|
||||
"is_comorbidity_like": false,
|
||||
"is_act_only": false
|
||||
},
|
||||
"section_strength": 2,
|
||||
"score_details": {
|
||||
"section": 2,
|
||||
"confidence": 3
|
||||
},
|
||||
"evidence_snippets": []
|
||||
}
|
||||
],
|
||||
"match_eval": null
|
||||
}
|
||||
151
docs/gold_debug/DIM_PACK_20260224_cases/160_23099448.json
Normal file
151
docs/gold_debug/DIM_PACK_20260224_cases/160_23099448.json
Normal file
@@ -0,0 +1,151 @@
|
||||
{
|
||||
"case_id": "160_23099448",
|
||||
"document_type": "trackare",
|
||||
"gold": null,
|
||||
"prediction": {
|
||||
"chosen_code": "E88.1",
|
||||
"chosen_term": "Lipodystrophie",
|
||||
"verdict": "REVIEW",
|
||||
"confidence": "medium",
|
||||
"reason": "Écart 1.0 < seuil 3.0, LLM désactivé",
|
||||
"review_reason_tag": "low_delta",
|
||||
"evidence": [
|
||||
"Scores proches : 5.0 vs 4.0"
|
||||
],
|
||||
"evidence_count": 1
|
||||
},
|
||||
"pool_stats": {
|
||||
"raw_pool_size": 11,
|
||||
"filtered_pool_size": 7,
|
||||
"topk_size": 7
|
||||
},
|
||||
"top_candidates": [
|
||||
{
|
||||
"rank": 1,
|
||||
"index": 1,
|
||||
"code": "E88.1",
|
||||
"term": "Lipodystrophie",
|
||||
"score": 5.0,
|
||||
"flags": {
|
||||
"is_symptom_like": false,
|
||||
"is_comorbidity_like": false,
|
||||
"is_act_only": false
|
||||
},
|
||||
"section_strength": 2,
|
||||
"score_details": {
|
||||
"section": 2,
|
||||
"confidence": 3
|
||||
},
|
||||
"evidence_snippets": []
|
||||
},
|
||||
{
|
||||
"rank": 2,
|
||||
"index": 0,
|
||||
"code": "D50",
|
||||
"term": "Anémie",
|
||||
"score": 4.0,
|
||||
"flags": {
|
||||
"is_symptom_like": false,
|
||||
"is_comorbidity_like": false,
|
||||
"is_act_only": false
|
||||
},
|
||||
"section_strength": 3,
|
||||
"score_details": {
|
||||
"section": 3,
|
||||
"confidence": 1
|
||||
},
|
||||
"evidence_snippets": []
|
||||
},
|
||||
{
|
||||
"rank": 3,
|
||||
"index": 4,
|
||||
"code": "N19",
|
||||
"term": "Insuffisance rénale",
|
||||
"score": 3.0,
|
||||
"flags": {
|
||||
"is_symptom_like": false,
|
||||
"is_comorbidity_like": false,
|
||||
"is_act_only": false
|
||||
},
|
||||
"section_strength": 3,
|
||||
"score_details": {
|
||||
"section": 3,
|
||||
"confidence": 0
|
||||
},
|
||||
"evidence_snippets": []
|
||||
},
|
||||
{
|
||||
"rank": 4,
|
||||
"index": 3,
|
||||
"code": "E16.2",
|
||||
"term": "Hypoglycémie",
|
||||
"score": 2.0,
|
||||
"flags": {
|
||||
"is_symptom_like": false,
|
||||
"is_comorbidity_like": false,
|
||||
"is_act_only": false
|
||||
},
|
||||
"section_strength": 1,
|
||||
"score_details": {
|
||||
"section": 1,
|
||||
"confidence": 1
|
||||
},
|
||||
"evidence_snippets": []
|
||||
},
|
||||
{
|
||||
"rank": 5,
|
||||
"index": 5,
|
||||
"code": "L50.9",
|
||||
"term": "Urticaire",
|
||||
"score": 2.0,
|
||||
"flags": {
|
||||
"is_symptom_like": false,
|
||||
"is_comorbidity_like": false,
|
||||
"is_act_only": false
|
||||
},
|
||||
"section_strength": 2,
|
||||
"score_details": {
|
||||
"section": 2,
|
||||
"confidence": 0
|
||||
},
|
||||
"evidence_snippets": []
|
||||
},
|
||||
{
|
||||
"rank": 6,
|
||||
"index": 6,
|
||||
"code": "K74.0",
|
||||
"term": "Fibrose hépatique",
|
||||
"score": 2.0,
|
||||
"flags": {
|
||||
"is_symptom_like": false,
|
||||
"is_comorbidity_like": false,
|
||||
"is_act_only": false
|
||||
},
|
||||
"section_strength": 2,
|
||||
"score_details": {
|
||||
"section": 2,
|
||||
"confidence": 0
|
||||
},
|
||||
"evidence_snippets": []
|
||||
},
|
||||
{
|
||||
"rank": 7,
|
||||
"index": 7,
|
||||
"code": "V09.9",
|
||||
"term": "Polytraumatisme suite à accident de la voie publique",
|
||||
"score": 2.0,
|
||||
"flags": {
|
||||
"is_symptom_like": false,
|
||||
"is_comorbidity_like": false,
|
||||
"is_act_only": false
|
||||
},
|
||||
"section_strength": 1,
|
||||
"score_details": {
|
||||
"section": 1,
|
||||
"confidence": 1
|
||||
},
|
||||
"evidence_snippets": []
|
||||
}
|
||||
],
|
||||
"match_eval": null
|
||||
}
|
||||
152
docs/gold_debug/DIM_PACK_20260224_cases/170_23077016.json
Normal file
152
docs/gold_debug/DIM_PACK_20260224_cases/170_23077016.json
Normal file
@@ -0,0 +1,152 @@
|
||||
{
|
||||
"case_id": "170_23077016",
|
||||
"document_type": "trackare",
|
||||
"gold": null,
|
||||
"prediction": {
|
||||
"chosen_code": "K59.0",
|
||||
"chosen_term": "Constipation",
|
||||
"verdict": "REVIEW",
|
||||
"confidence": "medium",
|
||||
"reason": "Écart 0.0 < seuil 3.0, LLM désactivé",
|
||||
"review_reason_tag": "low_delta",
|
||||
"evidence": [
|
||||
"Scores proches : 5.0 vs 5.0"
|
||||
],
|
||||
"evidence_count": 1
|
||||
},
|
||||
"pool_stats": {
|
||||
"raw_pool_size": 11,
|
||||
"filtered_pool_size": 7,
|
||||
"topk_size": 7
|
||||
},
|
||||
"top_candidates": [
|
||||
{
|
||||
"rank": 1,
|
||||
"index": 4,
|
||||
"code": "K59.0",
|
||||
"term": "Constipation",
|
||||
"score": 5.0,
|
||||
"flags": {
|
||||
"is_symptom_like": false,
|
||||
"is_comorbidity_like": false,
|
||||
"is_act_only": false
|
||||
},
|
||||
"section_strength": 2,
|
||||
"score_details": {
|
||||
"section": 2,
|
||||
"confidence": 3
|
||||
},
|
||||
"evidence_snippets": []
|
||||
},
|
||||
{
|
||||
"rank": 2,
|
||||
"index": 7,
|
||||
"code": "M05.9",
|
||||
"term": "Polyarthrite rhumatoïde",
|
||||
"score": 5.0,
|
||||
"flags": {
|
||||
"is_symptom_like": false,
|
||||
"is_comorbidity_like": false,
|
||||
"is_act_only": false
|
||||
},
|
||||
"section_strength": 2,
|
||||
"score_details": {
|
||||
"section": 2,
|
||||
"confidence": 3
|
||||
},
|
||||
"evidence_snippets": []
|
||||
},
|
||||
{
|
||||
"rank": 3,
|
||||
"index": 2,
|
||||
"code": "I97.8",
|
||||
"term": "Hémorragie postopératoire (sans complication)",
|
||||
"score": 4.0,
|
||||
"flags": {
|
||||
"is_symptom_like": false,
|
||||
"is_comorbidity_like": false,
|
||||
"is_act_only": false
|
||||
},
|
||||
"section_strength": 1,
|
||||
"score_details": {
|
||||
"section": 1,
|
||||
"confidence": 3
|
||||
},
|
||||
"evidence_snippets": []
|
||||
},
|
||||
{
|
||||
"rank": 4,
|
||||
"index": 3,
|
||||
"code": "N19",
|
||||
"term": "Insuffisance rénale",
|
||||
"score": 3.0,
|
||||
"flags": {
|
||||
"is_symptom_like": false,
|
||||
"is_comorbidity_like": false,
|
||||
"is_act_only": false
|
||||
},
|
||||
"section_strength": 3,
|
||||
"score_details": {
|
||||
"section": 3,
|
||||
"confidence": 0
|
||||
},
|
||||
"evidence_snippets": []
|
||||
},
|
||||
{
|
||||
"rank": 5,
|
||||
"index": 0,
|
||||
"code": "R50.9",
|
||||
"term": "Fébricule postopératoire",
|
||||
"score": 2.0,
|
||||
"flags": {
|
||||
"is_symptom_like": true,
|
||||
"is_comorbidity_like": false,
|
||||
"is_act_only": false
|
||||
},
|
||||
"section_strength": 1,
|
||||
"score_details": {
|
||||
"section": 1,
|
||||
"confidence": 3,
|
||||
"symptom_malus": -2
|
||||
},
|
||||
"evidence_snippets": []
|
||||
},
|
||||
{
|
||||
"rank": 6,
|
||||
"index": 8,
|
||||
"code": "J18.9",
|
||||
"term": "Infection",
|
||||
"score": 2.0,
|
||||
"flags": {
|
||||
"is_symptom_like": false,
|
||||
"is_comorbidity_like": false,
|
||||
"is_act_only": false
|
||||
},
|
||||
"section_strength": 1,
|
||||
"score_details": {
|
||||
"section": 1,
|
||||
"confidence": 1
|
||||
},
|
||||
"evidence_snippets": []
|
||||
},
|
||||
{
|
||||
"rank": 7,
|
||||
"index": 9,
|
||||
"code": "D72.8",
|
||||
"term": "Leucocytose",
|
||||
"score": 2.0,
|
||||
"flags": {
|
||||
"is_symptom_like": false,
|
||||
"is_comorbidity_like": false,
|
||||
"is_act_only": false
|
||||
},
|
||||
"section_strength": 1,
|
||||
"score_details": {
|
||||
"section": 1,
|
||||
"confidence": 1
|
||||
},
|
||||
"evidence_snippets": []
|
||||
}
|
||||
],
|
||||
"match_eval": null
|
||||
}
|
||||
153
docs/gold_debug/DIM_PACK_20260224_cases/174_23080042.json
Normal file
153
docs/gold_debug/DIM_PACK_20260224_cases/174_23080042.json
Normal file
@@ -0,0 +1,153 @@
|
||||
{
|
||||
"case_id": "174_23080042",
|
||||
"document_type": "trackare",
|
||||
"gold": null,
|
||||
"prediction": {
|
||||
"chosen_code": "Q40.1",
|
||||
"chosen_term": "Hernie hiatale ce",
|
||||
"verdict": "REVIEW",
|
||||
"confidence": "medium",
|
||||
"reason": "Écart 1.0 < seuil 3.0, LLM désactivé",
|
||||
"review_reason_tag": "low_delta",
|
||||
"evidence": [
|
||||
"Scores proches : 5.0 vs 4.0"
|
||||
],
|
||||
"evidence_count": 1
|
||||
},
|
||||
"pool_stats": {
|
||||
"raw_pool_size": 7,
|
||||
"filtered_pool_size": 7,
|
||||
"topk_size": 7
|
||||
},
|
||||
"top_candidates": [
|
||||
{
|
||||
"rank": 1,
|
||||
"index": 2,
|
||||
"code": "Q40.1",
|
||||
"term": "Hernie hiatale ce",
|
||||
"score": 5.0,
|
||||
"flags": {
|
||||
"is_symptom_like": false,
|
||||
"is_comorbidity_like": false,
|
||||
"is_act_only": false
|
||||
},
|
||||
"section_strength": 2,
|
||||
"score_details": {
|
||||
"section": 2,
|
||||
"confidence": 3
|
||||
},
|
||||
"evidence_snippets": []
|
||||
},
|
||||
{
|
||||
"rank": 2,
|
||||
"index": 0,
|
||||
"code": "N19",
|
||||
"term": "Insuffisance rénale",
|
||||
"score": 4.0,
|
||||
"flags": {
|
||||
"is_symptom_like": false,
|
||||
"is_comorbidity_like": false,
|
||||
"is_act_only": false
|
||||
},
|
||||
"section_strength": 3,
|
||||
"score_details": {
|
||||
"section": 3,
|
||||
"confidence": 1
|
||||
},
|
||||
"evidence_snippets": []
|
||||
},
|
||||
{
|
||||
"rank": 3,
|
||||
"index": 6,
|
||||
"code": "D72.8",
|
||||
"term": "Leucocytose",
|
||||
"score": 4.0,
|
||||
"flags": {
|
||||
"is_symptom_like": false,
|
||||
"is_comorbidity_like": false,
|
||||
"is_act_only": false
|
||||
},
|
||||
"section_strength": 1,
|
||||
"score_details": {
|
||||
"section": 1,
|
||||
"confidence": 3
|
||||
},
|
||||
"evidence_snippets": []
|
||||
},
|
||||
{
|
||||
"rank": 4,
|
||||
"index": 1,
|
||||
"code": "E66.05",
|
||||
"term": "Obésité (IMC 37.806)",
|
||||
"score": 3.0,
|
||||
"flags": {
|
||||
"is_symptom_like": false,
|
||||
"is_comorbidity_like": true,
|
||||
"is_act_only": false
|
||||
},
|
||||
"section_strength": 3,
|
||||
"score_details": {
|
||||
"section": 3,
|
||||
"confidence": 3,
|
||||
"comorbidity_malus": -3
|
||||
},
|
||||
"evidence_snippets": []
|
||||
},
|
||||
{
|
||||
"rank": 5,
|
||||
"index": 4,
|
||||
"code": "A69.2",
|
||||
"term": "Maladie de lyme",
|
||||
"score": 3.0,
|
||||
"flags": {
|
||||
"is_symptom_like": false,
|
||||
"is_comorbidity_like": false,
|
||||
"is_act_only": false
|
||||
},
|
||||
"section_strength": 2,
|
||||
"score_details": {
|
||||
"section": 2,
|
||||
"confidence": 1
|
||||
},
|
||||
"evidence_snippets": []
|
||||
},
|
||||
{
|
||||
"rank": 6,
|
||||
"index": 3,
|
||||
"code": "M54.2",
|
||||
"term": "Cervicalgies",
|
||||
"score": 2.0,
|
||||
"flags": {
|
||||
"is_symptom_like": false,
|
||||
"is_comorbidity_like": false,
|
||||
"is_act_only": false
|
||||
},
|
||||
"section_strength": 2,
|
||||
"score_details": {
|
||||
"section": 2,
|
||||
"confidence": 0
|
||||
},
|
||||
"evidence_snippets": []
|
||||
},
|
||||
{
|
||||
"rank": 7,
|
||||
"index": 5,
|
||||
"code": "R73.9",
|
||||
"term": "Hématome postopératoire",
|
||||
"score": 0.0,
|
||||
"flags": {
|
||||
"is_symptom_like": true,
|
||||
"is_comorbidity_like": false,
|
||||
"is_act_only": false
|
||||
},
|
||||
"section_strength": 1,
|
||||
"score_details": {
|
||||
"section": 1,
|
||||
"confidence": 1,
|
||||
"symptom_malus": -2
|
||||
},
|
||||
"evidence_snippets": []
|
||||
}
|
||||
],
|
||||
"match_eval": null
|
||||
}
|
||||
154
docs/gold_debug/DIM_PACK_20260224_cases/183_23087212.json
Normal file
154
docs/gold_debug/DIM_PACK_20260224_cases/183_23087212.json
Normal file
@@ -0,0 +1,154 @@
|
||||
{
|
||||
"case_id": "183_23087212",
|
||||
"document_type": "trackare",
|
||||
"gold": null,
|
||||
"prediction": {
|
||||
"chosen_code": "T83.5",
|
||||
"chosen_term": "Infection urinaire",
|
||||
"verdict": "REVIEW",
|
||||
"confidence": "medium",
|
||||
"reason": "Écart 0.0 < seuil 3.0, LLM désactivé",
|
||||
"review_reason_tag": "low_delta",
|
||||
"evidence": [
|
||||
"Scores proches : 5.0 vs 5.0"
|
||||
],
|
||||
"evidence_count": 1
|
||||
},
|
||||
"pool_stats": {
|
||||
"raw_pool_size": 9,
|
||||
"filtered_pool_size": 7,
|
||||
"topk_size": 7
|
||||
},
|
||||
"top_candidates": [
|
||||
{
|
||||
"rank": 1,
|
||||
"index": 0,
|
||||
"code": "T83.5",
|
||||
"term": "Infection urinaire",
|
||||
"score": 5.0,
|
||||
"flags": {
|
||||
"is_symptom_like": false,
|
||||
"is_comorbidity_like": false,
|
||||
"is_act_only": false
|
||||
},
|
||||
"section_strength": 3,
|
||||
"score_details": {
|
||||
"section": 3,
|
||||
"confidence": 1,
|
||||
"occurrences": 1
|
||||
},
|
||||
"evidence_snippets": []
|
||||
},
|
||||
{
|
||||
"rank": 2,
|
||||
"index": 7,
|
||||
"code": "Z43.3",
|
||||
"term": "Colostomie",
|
||||
"score": 5.0,
|
||||
"flags": {
|
||||
"is_symptom_like": false,
|
||||
"is_comorbidity_like": false,
|
||||
"is_act_only": false
|
||||
},
|
||||
"section_strength": 2,
|
||||
"score_details": {
|
||||
"section": 2,
|
||||
"confidence": 3
|
||||
},
|
||||
"evidence_snippets": []
|
||||
},
|
||||
{
|
||||
"rank": 3,
|
||||
"index": 1,
|
||||
"code": "N10",
|
||||
"term": "Pyélonéphrite sévère",
|
||||
"score": 4.0,
|
||||
"flags": {
|
||||
"is_symptom_like": false,
|
||||
"is_comorbidity_like": false,
|
||||
"is_act_only": false
|
||||
},
|
||||
"section_strength": 1,
|
||||
"score_details": {
|
||||
"section": 1,
|
||||
"confidence": 3
|
||||
},
|
||||
"evidence_snippets": []
|
||||
},
|
||||
{
|
||||
"rank": 4,
|
||||
"index": 2,
|
||||
"code": "N20.0",
|
||||
"term": "Obstruction de l'uretère",
|
||||
"score": 4.0,
|
||||
"flags": {
|
||||
"is_symptom_like": false,
|
||||
"is_comorbidity_like": false,
|
||||
"is_act_only": false
|
||||
},
|
||||
"section_strength": 1,
|
||||
"score_details": {
|
||||
"section": 1,
|
||||
"confidence": 3
|
||||
},
|
||||
"evidence_snippets": []
|
||||
},
|
||||
{
|
||||
"rank": 5,
|
||||
"index": 4,
|
||||
"code": "T83.1",
|
||||
"term": "Lésion traumatique du Bricker",
|
||||
"score": 3.0,
|
||||
"flags": {
|
||||
"is_symptom_like": false,
|
||||
"is_comorbidity_like": false,
|
||||
"is_act_only": false
|
||||
},
|
||||
"section_strength": 1,
|
||||
"score_details": {
|
||||
"section": 1,
|
||||
"confidence": 1,
|
||||
"occurrences": 1
|
||||
},
|
||||
"evidence_snippets": []
|
||||
},
|
||||
{
|
||||
"rank": 6,
|
||||
"index": 6,
|
||||
"code": "E66.04",
|
||||
"term": "Obésité (IMC 31.231)",
|
||||
"score": 3.0,
|
||||
"flags": {
|
||||
"is_symptom_like": false,
|
||||
"is_comorbidity_like": true,
|
||||
"is_act_only": false
|
||||
},
|
||||
"section_strength": 3,
|
||||
"score_details": {
|
||||
"section": 3,
|
||||
"confidence": 3,
|
||||
"comorbidity_malus": -3
|
||||
},
|
||||
"evidence_snippets": []
|
||||
},
|
||||
{
|
||||
"rank": 7,
|
||||
"index": 3,
|
||||
"code": "N19",
|
||||
"term": "Insuffisance rénale, non spécifiée",
|
||||
"score": 2.0,
|
||||
"flags": {
|
||||
"is_symptom_like": false,
|
||||
"is_comorbidity_like": false,
|
||||
"is_act_only": false
|
||||
},
|
||||
"section_strength": 1,
|
||||
"score_details": {
|
||||
"section": 1,
|
||||
"confidence": 1
|
||||
},
|
||||
"evidence_snippets": []
|
||||
}
|
||||
],
|
||||
"match_eval": null
|
||||
}
|
||||
152
docs/gold_debug/DIM_PACK_20260224_cases/192_23132490.json
Normal file
152
docs/gold_debug/DIM_PACK_20260224_cases/192_23132490.json
Normal file
@@ -0,0 +1,152 @@
|
||||
{
|
||||
"case_id": "192_23132490",
|
||||
"document_type": "trackare",
|
||||
"gold": null,
|
||||
"prediction": {
|
||||
"chosen_code": "D50",
|
||||
"chosen_term": "Anémie",
|
||||
"verdict": "REVIEW",
|
||||
"confidence": "medium",
|
||||
"reason": "Écart 1.0 < seuil 3.0, LLM désactivé",
|
||||
"review_reason_tag": "low_delta",
|
||||
"evidence": [
|
||||
"Scores proches : 6.0 vs 5.0"
|
||||
],
|
||||
"evidence_count": 1
|
||||
},
|
||||
"pool_stats": {
|
||||
"raw_pool_size": 8,
|
||||
"filtered_pool_size": 7,
|
||||
"topk_size": 7
|
||||
},
|
||||
"top_candidates": [
|
||||
{
|
||||
"rank": 1,
|
||||
"index": 0,
|
||||
"code": "D50",
|
||||
"term": "Anémie",
|
||||
"score": 6.0,
|
||||
"flags": {
|
||||
"is_symptom_like": false,
|
||||
"is_comorbidity_like": false,
|
||||
"is_act_only": false
|
||||
},
|
||||
"section_strength": 3,
|
||||
"score_details": {
|
||||
"section": 3,
|
||||
"confidence": 3
|
||||
},
|
||||
"evidence_snippets": []
|
||||
},
|
||||
{
|
||||
"rank": 2,
|
||||
"index": 2,
|
||||
"code": "F06.4",
|
||||
"term": "Pathologique",
|
||||
"score": 5.0,
|
||||
"flags": {
|
||||
"is_symptom_like": false,
|
||||
"is_comorbidity_like": false,
|
||||
"is_act_only": false
|
||||
},
|
||||
"section_strength": 2,
|
||||
"score_details": {
|
||||
"section": 2,
|
||||
"confidence": 3
|
||||
},
|
||||
"evidence_snippets": []
|
||||
},
|
||||
{
|
||||
"rank": 3,
|
||||
"index": 5,
|
||||
"code": "M48.4",
|
||||
"term": "Fracture vertébrale de t",
|
||||
"score": 5.0,
|
||||
"flags": {
|
||||
"is_symptom_like": false,
|
||||
"is_comorbidity_like": false,
|
||||
"is_act_only": false
|
||||
},
|
||||
"section_strength": 2,
|
||||
"score_details": {
|
||||
"section": 2,
|
||||
"confidence": 3
|
||||
},
|
||||
"evidence_snippets": []
|
||||
},
|
||||
{
|
||||
"rank": 4,
|
||||
"index": 1,
|
||||
"code": "Z72.0",
|
||||
"term": "Tabagisme",
|
||||
"score": 4.0,
|
||||
"flags": {
|
||||
"is_symptom_like": false,
|
||||
"is_comorbidity_like": false,
|
||||
"is_act_only": false
|
||||
},
|
||||
"section_strength": 3,
|
||||
"score_details": {
|
||||
"section": 3,
|
||||
"confidence": 3,
|
||||
"z_code_malus": -2
|
||||
},
|
||||
"evidence_snippets": []
|
||||
},
|
||||
{
|
||||
"rank": 5,
|
||||
"index": 6,
|
||||
"code": "N19",
|
||||
"term": "Insuffisance rénale",
|
||||
"score": 4.0,
|
||||
"flags": {
|
||||
"is_symptom_like": false,
|
||||
"is_comorbidity_like": false,
|
||||
"is_act_only": false
|
||||
},
|
||||
"section_strength": 3,
|
||||
"score_details": {
|
||||
"section": 3,
|
||||
"confidence": 1
|
||||
},
|
||||
"evidence_snippets": []
|
||||
},
|
||||
{
|
||||
"rank": 6,
|
||||
"index": 7,
|
||||
"code": "S22.0",
|
||||
"term": "Fracture de",
|
||||
"score": 3.0,
|
||||
"flags": {
|
||||
"is_symptom_like": false,
|
||||
"is_comorbidity_like": false,
|
||||
"is_act_only": false
|
||||
},
|
||||
"section_strength": 2,
|
||||
"score_details": {
|
||||
"section": 2,
|
||||
"confidence": 1
|
||||
},
|
||||
"evidence_snippets": []
|
||||
},
|
||||
{
|
||||
"rank": 7,
|
||||
"index": 4,
|
||||
"code": "G44.8",
|
||||
"term": "Céphalées",
|
||||
"score": 2.0,
|
||||
"flags": {
|
||||
"is_symptom_like": false,
|
||||
"is_comorbidity_like": false,
|
||||
"is_act_only": false
|
||||
},
|
||||
"section_strength": 2,
|
||||
"score_details": {
|
||||
"section": 2,
|
||||
"confidence": 0
|
||||
},
|
||||
"evidence_snippets": []
|
||||
}
|
||||
],
|
||||
"match_eval": null
|
||||
}
|
||||
153
docs/gold_debug/DIM_PACK_20260224_cases/200_23149959.json
Normal file
153
docs/gold_debug/DIM_PACK_20260224_cases/200_23149959.json
Normal file
@@ -0,0 +1,153 @@
|
||||
{
|
||||
"case_id": "200_23149959",
|
||||
"document_type": "trackare",
|
||||
"gold": null,
|
||||
"prediction": {
|
||||
"chosen_code": "I80.2",
|
||||
"chosen_term": "Thrombose veineuse profonde",
|
||||
"verdict": "REVIEW",
|
||||
"confidence": "medium",
|
||||
"reason": "Écart 1.0 < seuil 3.0, LLM désactivé",
|
||||
"review_reason_tag": "low_delta",
|
||||
"evidence": [
|
||||
"Scores proches : 6.0 vs 5.0"
|
||||
],
|
||||
"evidence_count": 1
|
||||
},
|
||||
"pool_stats": {
|
||||
"raw_pool_size": 21,
|
||||
"filtered_pool_size": 7,
|
||||
"topk_size": 7
|
||||
},
|
||||
"top_candidates": [
|
||||
{
|
||||
"rank": 1,
|
||||
"index": 2,
|
||||
"code": "I80.2",
|
||||
"term": "Thrombose veineuse profonde",
|
||||
"score": 6.0,
|
||||
"flags": {
|
||||
"is_symptom_like": false,
|
||||
"is_comorbidity_like": false,
|
||||
"is_act_only": false
|
||||
},
|
||||
"section_strength": 3,
|
||||
"score_details": {
|
||||
"section": 3,
|
||||
"confidence": 3
|
||||
},
|
||||
"evidence_snippets": []
|
||||
},
|
||||
{
|
||||
"rank": 2,
|
||||
"index": 1,
|
||||
"code": "I26.9",
|
||||
"term": "Embolie pulmonaire",
|
||||
"score": 5.0,
|
||||
"flags": {
|
||||
"is_symptom_like": false,
|
||||
"is_comorbidity_like": false,
|
||||
"is_act_only": false
|
||||
},
|
||||
"section_strength": 3,
|
||||
"score_details": {
|
||||
"section": 3,
|
||||
"confidence": 1,
|
||||
"occurrences": 1
|
||||
},
|
||||
"evidence_snippets": []
|
||||
},
|
||||
{
|
||||
"rank": 3,
|
||||
"index": 4,
|
||||
"code": "J18.9",
|
||||
"term": "Pneumopathie",
|
||||
"score": 5.0,
|
||||
"flags": {
|
||||
"is_symptom_like": false,
|
||||
"is_comorbidity_like": false,
|
||||
"is_act_only": false
|
||||
},
|
||||
"section_strength": 3,
|
||||
"score_details": {
|
||||
"section": 3,
|
||||
"confidence": 1,
|
||||
"occurrences": 1
|
||||
},
|
||||
"evidence_snippets": []
|
||||
},
|
||||
{
|
||||
"rank": 4,
|
||||
"index": 8,
|
||||
"code": "B02.8",
|
||||
"term": "Zona",
|
||||
"score": 5.0,
|
||||
"flags": {
|
||||
"is_symptom_like": false,
|
||||
"is_comorbidity_like": false,
|
||||
"is_act_only": false
|
||||
},
|
||||
"section_strength": 2,
|
||||
"score_details": {
|
||||
"section": 2,
|
||||
"confidence": 3
|
||||
},
|
||||
"evidence_snippets": []
|
||||
},
|
||||
{
|
||||
"rank": 5,
|
||||
"index": 10,
|
||||
"code": "K62.1",
|
||||
"term": "Polype rectal",
|
||||
"score": 5.0,
|
||||
"flags": {
|
||||
"is_symptom_like": false,
|
||||
"is_comorbidity_like": false,
|
||||
"is_act_only": false
|
||||
},
|
||||
"section_strength": 2,
|
||||
"score_details": {
|
||||
"section": 2,
|
||||
"confidence": 3
|
||||
},
|
||||
"evidence_snippets": []
|
||||
},
|
||||
{
|
||||
"rank": 6,
|
||||
"index": 12,
|
||||
"code": "I77.0",
|
||||
"term": "Fistule artérioveineuse",
|
||||
"score": 5.0,
|
||||
"flags": {
|
||||
"is_symptom_like": false,
|
||||
"is_comorbidity_like": false,
|
||||
"is_act_only": false
|
||||
},
|
||||
"section_strength": 2,
|
||||
"score_details": {
|
||||
"section": 2,
|
||||
"confidence": 3
|
||||
},
|
||||
"evidence_snippets": []
|
||||
},
|
||||
{
|
||||
"rank": 7,
|
||||
"index": 15,
|
||||
"code": "Z03.8",
|
||||
"term": "Bmr",
|
||||
"score": 5.0,
|
||||
"flags": {
|
||||
"is_symptom_like": false,
|
||||
"is_comorbidity_like": false,
|
||||
"is_act_only": false
|
||||
},
|
||||
"section_strength": 2,
|
||||
"score_details": {
|
||||
"section": 2,
|
||||
"confidence": 3
|
||||
},
|
||||
"evidence_snippets": []
|
||||
}
|
||||
],
|
||||
"match_eval": null
|
||||
}
|
||||
133
docs/gold_debug/DIM_PACK_20260224_cases/225_23160703.json
Normal file
133
docs/gold_debug/DIM_PACK_20260224_cases/225_23160703.json
Normal file
@@ -0,0 +1,133 @@
|
||||
{
|
||||
"case_id": "225_23160703",
|
||||
"document_type": "trackare",
|
||||
"gold": null,
|
||||
"prediction": {
|
||||
"chosen_code": "N85.7",
|
||||
"chosen_term": "Hématome",
|
||||
"verdict": "REVIEW",
|
||||
"confidence": "medium",
|
||||
"reason": "Écart 1.0 < seuil 3.0, LLM désactivé",
|
||||
"review_reason_tag": "low_delta",
|
||||
"evidence": [
|
||||
"Scores proches : 5.0 vs 4.0"
|
||||
],
|
||||
"evidence_count": 1
|
||||
},
|
||||
"pool_stats": {
|
||||
"raw_pool_size": 6,
|
||||
"filtered_pool_size": 6,
|
||||
"topk_size": 6
|
||||
},
|
||||
"top_candidates": [
|
||||
{
|
||||
"rank": 1,
|
||||
"index": 4,
|
||||
"code": "N85.7",
|
||||
"term": "Hématome",
|
||||
"score": 5.0,
|
||||
"flags": {
|
||||
"is_symptom_like": false,
|
||||
"is_comorbidity_like": false,
|
||||
"is_act_only": false
|
||||
},
|
||||
"section_strength": 2,
|
||||
"score_details": {
|
||||
"section": 2,
|
||||
"confidence": 3
|
||||
},
|
||||
"evidence_snippets": []
|
||||
},
|
||||
{
|
||||
"rank": 2,
|
||||
"index": 0,
|
||||
"code": "C17.9",
|
||||
"term": "Tumeur neuroendocrine du grêle, grade 1",
|
||||
"score": 4.0,
|
||||
"flags": {
|
||||
"is_symptom_like": false,
|
||||
"is_comorbidity_like": false,
|
||||
"is_act_only": false
|
||||
},
|
||||
"section_strength": 1,
|
||||
"score_details": {
|
||||
"section": 1,
|
||||
"confidence": 3
|
||||
},
|
||||
"evidence_snippets": []
|
||||
},
|
||||
{
|
||||
"rank": 3,
|
||||
"index": 1,
|
||||
"code": "K56.2",
|
||||
"term": "Adhérences post-opératoires",
|
||||
"score": 4.0,
|
||||
"flags": {
|
||||
"is_symptom_like": false,
|
||||
"is_comorbidity_like": false,
|
||||
"is_act_only": false
|
||||
},
|
||||
"section_strength": 1,
|
||||
"score_details": {
|
||||
"section": 1,
|
||||
"confidence": 3
|
||||
},
|
||||
"evidence_snippets": []
|
||||
},
|
||||
{
|
||||
"rank": 4,
|
||||
"index": 3,
|
||||
"code": "N19",
|
||||
"term": "Insuffisance rénale",
|
||||
"score": 4.0,
|
||||
"flags": {
|
||||
"is_symptom_like": false,
|
||||
"is_comorbidity_like": false,
|
||||
"is_act_only": false
|
||||
},
|
||||
"section_strength": 3,
|
||||
"score_details": {
|
||||
"section": 3,
|
||||
"confidence": 1
|
||||
},
|
||||
"evidence_snippets": []
|
||||
},
|
||||
{
|
||||
"rank": 5,
|
||||
"index": 2,
|
||||
"code": "K59.9",
|
||||
"term": "Lésion du grêle",
|
||||
"score": 2.0,
|
||||
"flags": {
|
||||
"is_symptom_like": false,
|
||||
"is_comorbidity_like": false,
|
||||
"is_act_only": false
|
||||
},
|
||||
"section_strength": 1,
|
||||
"score_details": {
|
||||
"section": 1,
|
||||
"confidence": 1
|
||||
},
|
||||
"evidence_snippets": []
|
||||
},
|
||||
{
|
||||
"rank": 6,
|
||||
"index": 5,
|
||||
"code": "J18.9",
|
||||
"term": "Infection",
|
||||
"score": 2.0,
|
||||
"flags": {
|
||||
"is_symptom_like": false,
|
||||
"is_comorbidity_like": false,
|
||||
"is_act_only": false
|
||||
},
|
||||
"section_strength": 1,
|
||||
"score_details": {
|
||||
"section": 1,
|
||||
"confidence": 1
|
||||
},
|
||||
"evidence_snippets": []
|
||||
}
|
||||
],
|
||||
"match_eval": null
|
||||
}
|
||||
152
docs/gold_debug/DIM_PACK_20260224_cases/25_23127187.json
Normal file
152
docs/gold_debug/DIM_PACK_20260224_cases/25_23127187.json
Normal file
@@ -0,0 +1,152 @@
|
||||
{
|
||||
"case_id": "25_23127187",
|
||||
"document_type": "trackare",
|
||||
"gold": null,
|
||||
"prediction": {
|
||||
"chosen_code": "N19",
|
||||
"chosen_term": "Insuffisance rénale",
|
||||
"verdict": "REVIEW",
|
||||
"confidence": "medium",
|
||||
"reason": "Écart 1.0 < seuil 3.0, LLM désactivé",
|
||||
"review_reason_tag": "low_delta",
|
||||
"evidence": [
|
||||
"Scores proches : 6.0 vs 5.0"
|
||||
],
|
||||
"evidence_count": 1
|
||||
},
|
||||
"pool_stats": {
|
||||
"raw_pool_size": 8,
|
||||
"filtered_pool_size": 7,
|
||||
"topk_size": 7
|
||||
},
|
||||
"top_candidates": [
|
||||
{
|
||||
"rank": 1,
|
||||
"index": 1,
|
||||
"code": "N19",
|
||||
"term": "Insuffisance rénale",
|
||||
"score": 6.0,
|
||||
"flags": {
|
||||
"is_symptom_like": false,
|
||||
"is_comorbidity_like": false,
|
||||
"is_act_only": false
|
||||
},
|
||||
"section_strength": 3,
|
||||
"score_details": {
|
||||
"section": 3,
|
||||
"confidence": 3
|
||||
},
|
||||
"evidence_snippets": []
|
||||
},
|
||||
{
|
||||
"rank": 2,
|
||||
"index": 2,
|
||||
"code": "M96.0",
|
||||
"term": "Arthrodèse",
|
||||
"score": 5.0,
|
||||
"flags": {
|
||||
"is_symptom_like": false,
|
||||
"is_comorbidity_like": false,
|
||||
"is_act_only": false
|
||||
},
|
||||
"section_strength": 2,
|
||||
"score_details": {
|
||||
"section": 2,
|
||||
"confidence": 3
|
||||
},
|
||||
"evidence_snippets": []
|
||||
},
|
||||
{
|
||||
"rank": 3,
|
||||
"index": 3,
|
||||
"code": "K74.0",
|
||||
"term": "Fibrose hépatique",
|
||||
"score": 5.0,
|
||||
"flags": {
|
||||
"is_symptom_like": false,
|
||||
"is_comorbidity_like": false,
|
||||
"is_act_only": false
|
||||
},
|
||||
"section_strength": 2,
|
||||
"score_details": {
|
||||
"section": 2,
|
||||
"confidence": 3
|
||||
},
|
||||
"evidence_snippets": []
|
||||
},
|
||||
{
|
||||
"rank": 4,
|
||||
"index": 4,
|
||||
"code": "K66.0",
|
||||
"term": "Adhérences péri",
|
||||
"score": 5.0,
|
||||
"flags": {
|
||||
"is_symptom_like": false,
|
||||
"is_comorbidity_like": false,
|
||||
"is_act_only": false
|
||||
},
|
||||
"section_strength": 2,
|
||||
"score_details": {
|
||||
"section": 2,
|
||||
"confidence": 3
|
||||
},
|
||||
"evidence_snippets": []
|
||||
},
|
||||
{
|
||||
"rank": 5,
|
||||
"index": 0,
|
||||
"code": "K81.0",
|
||||
"term": "Cholécystite aiguë",
|
||||
"score": 4.0,
|
||||
"flags": {
|
||||
"is_symptom_like": false,
|
||||
"is_comorbidity_like": false,
|
||||
"is_act_only": false
|
||||
},
|
||||
"section_strength": 1,
|
||||
"score_details": {
|
||||
"section": 1,
|
||||
"confidence": 3
|
||||
},
|
||||
"evidence_snippets": []
|
||||
},
|
||||
{
|
||||
"rank": 6,
|
||||
"index": 5,
|
||||
"code": "A49.1",
|
||||
"term": "Infection streptococcique",
|
||||
"score": 2.0,
|
||||
"flags": {
|
||||
"is_symptom_like": false,
|
||||
"is_comorbidity_like": false,
|
||||
"is_act_only": false
|
||||
},
|
||||
"section_strength": 1,
|
||||
"score_details": {
|
||||
"section": 1,
|
||||
"confidence": 1
|
||||
},
|
||||
"evidence_snippets": []
|
||||
},
|
||||
{
|
||||
"rank": 7,
|
||||
"index": 6,
|
||||
"code": "Z00.0",
|
||||
"term": "Cholangite aiguë",
|
||||
"score": 2.0,
|
||||
"flags": {
|
||||
"is_symptom_like": false,
|
||||
"is_comorbidity_like": false,
|
||||
"is_act_only": false
|
||||
},
|
||||
"section_strength": 1,
|
||||
"score_details": {
|
||||
"section": 1,
|
||||
"confidence": 3,
|
||||
"z_code_malus": -2
|
||||
},
|
||||
"evidence_snippets": []
|
||||
}
|
||||
],
|
||||
"match_eval": null
|
||||
}
|
||||
99
docs/gold_debug/DIM_PACK_20260224_cases/74_23141536.json
Normal file
99
docs/gold_debug/DIM_PACK_20260224_cases/74_23141536.json
Normal file
@@ -0,0 +1,99 @@
|
||||
{
|
||||
"case_id": "74_23141536",
|
||||
"document_type": "crh",
|
||||
"gold": {
|
||||
"dp_expected": {
|
||||
"code": "I25.1",
|
||||
"label": "Syndrome coronarien aigu"
|
||||
},
|
||||
"dp_acceptable_codes": [
|
||||
"I25.1",
|
||||
"I25.5"
|
||||
],
|
||||
"dp_acceptable_family3": [
|
||||
"I25"
|
||||
],
|
||||
"allow_symptom_dp": false,
|
||||
"confidence": "probable"
|
||||
},
|
||||
"prediction": {
|
||||
"chosen_code": "D50",
|
||||
"chosen_term": "Anémie",
|
||||
"verdict": "REVIEW",
|
||||
"confidence": "medium",
|
||||
"reason": "Écart 0.0 < seuil 3.0, LLM désactivé",
|
||||
"review_reason_tag": "low_delta",
|
||||
"evidence": [
|
||||
"Scores proches : 4.0 vs 4.0"
|
||||
],
|
||||
"evidence_count": 1
|
||||
},
|
||||
"pool_stats": {
|
||||
"raw_pool_size": 3,
|
||||
"filtered_pool_size": 3,
|
||||
"topk_size": 3
|
||||
},
|
||||
"top_candidates": [
|
||||
{
|
||||
"rank": 1,
|
||||
"index": 0,
|
||||
"code": "D50",
|
||||
"term": "Anémie",
|
||||
"score": 4.0,
|
||||
"flags": {
|
||||
"is_symptom_like": false,
|
||||
"is_comorbidity_like": false,
|
||||
"is_act_only": false
|
||||
},
|
||||
"section_strength": 3,
|
||||
"score_details": {
|
||||
"section": 3,
|
||||
"confidence": 1
|
||||
},
|
||||
"evidence_snippets": []
|
||||
},
|
||||
{
|
||||
"rank": 2,
|
||||
"index": 2,
|
||||
"code": "I25.1",
|
||||
"term": "SCA (Syndrome Coronarien Aigu)",
|
||||
"score": 4.0,
|
||||
"flags": {
|
||||
"is_symptom_like": false,
|
||||
"is_comorbidity_like": false,
|
||||
"is_act_only": false
|
||||
},
|
||||
"section_strength": 1,
|
||||
"score_details": {
|
||||
"section": 1,
|
||||
"confidence": 3
|
||||
},
|
||||
"evidence_snippets": []
|
||||
},
|
||||
{
|
||||
"rank": 3,
|
||||
"index": 1,
|
||||
"code": "Z95.5",
|
||||
"term": "Stent vasculaire",
|
||||
"score": 2.0,
|
||||
"flags": {
|
||||
"is_symptom_like": false,
|
||||
"is_comorbidity_like": false,
|
||||
"is_act_only": false
|
||||
},
|
||||
"section_strength": 1,
|
||||
"score_details": {
|
||||
"section": 1,
|
||||
"confidence": 3,
|
||||
"z_code_malus": -2
|
||||
},
|
||||
"evidence_snippets": []
|
||||
}
|
||||
],
|
||||
"match_eval": {
|
||||
"strict_match": false,
|
||||
"acceptable_match": false,
|
||||
"family3_match": false,
|
||||
"symptom_not_allowed": false
|
||||
}
|
||||
}
|
||||
99
docs/gold_debug/DIM_PACK_20260224_cases/99_23033146.json
Normal file
99
docs/gold_debug/DIM_PACK_20260224_cases/99_23033146.json
Normal file
@@ -0,0 +1,99 @@
|
||||
{
|
||||
"case_id": "99_23033146",
|
||||
"document_type": "trackare",
|
||||
"gold": null,
|
||||
"prediction": {
|
||||
"chosen_code": "E66.83",
|
||||
"chosen_term": "Obésité (IMC 30.408)",
|
||||
"verdict": "REVIEW",
|
||||
"confidence": "medium",
|
||||
"reason": "Écart 0.0 < seuil 3.0, LLM désactivé",
|
||||
"review_reason_tag": "low_delta",
|
||||
"evidence": [
|
||||
"Scores proches : 3.0 vs 3.0"
|
||||
],
|
||||
"evidence_count": 1
|
||||
},
|
||||
"pool_stats": {
|
||||
"raw_pool_size": 4,
|
||||
"filtered_pool_size": 4,
|
||||
"topk_size": 4
|
||||
},
|
||||
"top_candidates": [
|
||||
{
|
||||
"rank": 1,
|
||||
"index": 0,
|
||||
"code": "E66.83",
|
||||
"term": "Obésité (IMC 30.408)",
|
||||
"score": 3.0,
|
||||
"flags": {
|
||||
"is_symptom_like": false,
|
||||
"is_comorbidity_like": true,
|
||||
"is_act_only": false
|
||||
},
|
||||
"section_strength": 3,
|
||||
"score_details": {
|
||||
"section": 3,
|
||||
"confidence": 3,
|
||||
"comorbidity_malus": -3
|
||||
},
|
||||
"evidence_snippets": []
|
||||
},
|
||||
{
|
||||
"rank": 2,
|
||||
"index": 1,
|
||||
"code": "N85.7",
|
||||
"term": "Hématome",
|
||||
"score": 3.0,
|
||||
"flags": {
|
||||
"is_symptom_like": false,
|
||||
"is_comorbidity_like": false,
|
||||
"is_act_only": false
|
||||
},
|
||||
"section_strength": 2,
|
||||
"score_details": {
|
||||
"section": 2,
|
||||
"confidence": 1
|
||||
},
|
||||
"evidence_snippets": []
|
||||
},
|
||||
{
|
||||
"rank": 3,
|
||||
"index": 3,
|
||||
"code": "J18.9",
|
||||
"term": "Infection",
|
||||
"score": 2.0,
|
||||
"flags": {
|
||||
"is_symptom_like": false,
|
||||
"is_comorbidity_like": false,
|
||||
"is_act_only": false
|
||||
},
|
||||
"section_strength": 1,
|
||||
"score_details": {
|
||||
"section": 1,
|
||||
"confidence": 1
|
||||
},
|
||||
"evidence_snippets": []
|
||||
},
|
||||
{
|
||||
"rank": 4,
|
||||
"index": 2,
|
||||
"code": "Z51.1",
|
||||
"term": "Chimiothérapie",
|
||||
"score": -2.0,
|
||||
"flags": {
|
||||
"is_symptom_like": false,
|
||||
"is_comorbidity_like": false,
|
||||
"is_act_only": true
|
||||
},
|
||||
"section_strength": 2,
|
||||
"score_details": {
|
||||
"section": 2,
|
||||
"confidence": 0,
|
||||
"act_only_malus": -4
|
||||
},
|
||||
"evidence_snippets": []
|
||||
}
|
||||
],
|
||||
"match_eval": null
|
||||
}
|
||||
99
docs/gold_debug/case_74_23141536.json
Normal file
99
docs/gold_debug/case_74_23141536.json
Normal file
@@ -0,0 +1,99 @@
|
||||
{
|
||||
"case_id": "74_23141536",
|
||||
"document_type": "crh",
|
||||
"gold": {
|
||||
"dp_expected": {
|
||||
"code": "I25.1",
|
||||
"label": "Syndrome coronarien aigu"
|
||||
},
|
||||
"dp_acceptable_codes": [
|
||||
"I25.1",
|
||||
"I25.5"
|
||||
],
|
||||
"dp_acceptable_family3": [
|
||||
"I25"
|
||||
],
|
||||
"allow_symptom_dp": false,
|
||||
"confidence": "probable"
|
||||
},
|
||||
"prediction": {
|
||||
"chosen_code": "D50",
|
||||
"chosen_term": "Anémie",
|
||||
"verdict": "REVIEW",
|
||||
"confidence": "medium",
|
||||
"reason": "Écart 0.0 < seuil 3.0, LLM désactivé",
|
||||
"review_reason_tag": "low_delta",
|
||||
"evidence": [
|
||||
"Scores proches : 4.0 vs 4.0"
|
||||
],
|
||||
"evidence_count": 1
|
||||
},
|
||||
"pool_stats": {
|
||||
"raw_pool_size": 3,
|
||||
"filtered_pool_size": 3,
|
||||
"topk_size": 3
|
||||
},
|
||||
"top_candidates": [
|
||||
{
|
||||
"rank": 1,
|
||||
"index": 0,
|
||||
"code": "D50",
|
||||
"term": "Anémie",
|
||||
"score": 4.0,
|
||||
"flags": {
|
||||
"is_symptom_like": false,
|
||||
"is_comorbidity_like": false,
|
||||
"is_act_only": false
|
||||
},
|
||||
"section_strength": 3,
|
||||
"score_details": {
|
||||
"section": 3,
|
||||
"confidence": 1
|
||||
},
|
||||
"evidence_snippets": []
|
||||
},
|
||||
{
|
||||
"rank": 2,
|
||||
"index": 2,
|
||||
"code": "I25.1",
|
||||
"term": "SCA (Syndrome Coronarien Aigu)",
|
||||
"score": 4.0,
|
||||
"flags": {
|
||||
"is_symptom_like": false,
|
||||
"is_comorbidity_like": false,
|
||||
"is_act_only": false
|
||||
},
|
||||
"section_strength": 1,
|
||||
"score_details": {
|
||||
"section": 1,
|
||||
"confidence": 3
|
||||
},
|
||||
"evidence_snippets": []
|
||||
},
|
||||
{
|
||||
"rank": 3,
|
||||
"index": 1,
|
||||
"code": "Z95.5",
|
||||
"term": "Stent vasculaire",
|
||||
"score": 2.0,
|
||||
"flags": {
|
||||
"is_symptom_like": false,
|
||||
"is_comorbidity_like": false,
|
||||
"is_act_only": false
|
||||
},
|
||||
"section_strength": 1,
|
||||
"score_details": {
|
||||
"section": 1,
|
||||
"confidence": 3,
|
||||
"z_code_malus": -2
|
||||
},
|
||||
"evidence_snippets": []
|
||||
}
|
||||
],
|
||||
"match_eval": {
|
||||
"strict_match": false,
|
||||
"acceptable_match": false,
|
||||
"family3_match": false,
|
||||
"symptom_not_allowed": false
|
||||
}
|
||||
}
|
||||
42
docs/gold_debug/case_74_23141536.md
Normal file
42
docs/gold_debug/case_74_23141536.md
Normal file
@@ -0,0 +1,42 @@
|
||||
# Case Debug — 74_23141536
|
||||
|
||||
**Type** : crh
|
||||
**Verdict** : REVIEW
|
||||
**Confidence** : medium
|
||||
**Code choisi** : D50
|
||||
**Reason** : Écart 0.0 < seuil 3.0, LLM désactivé
|
||||
**Evidence** : 1 extrait(s)
|
||||
**Pool** : 3 raw → 3 candidats
|
||||
**DP attendu** : I25.1 (Syndrome coronarien aigu)
|
||||
**Confiance gold** : probable
|
||||
**Match** : strict=FAIL, acceptable=FAIL, symptôme interdit=-
|
||||
|
||||
## Gold vs Prediction
|
||||
|
||||
| | Gold | NUKE-3 |
|
||||
|---|------|--------|
|
||||
| Code | I25.1 | D50 |
|
||||
| Label | Syndrome coronarien aigu | Anémie |
|
||||
| Codes acceptables | I25.1, I25.5 | - |
|
||||
| Family3 | I25 | - |
|
||||
| Confiance | probable | medium |
|
||||
| Symptôme autorisé | non | - |
|
||||
|
||||
## Top candidats
|
||||
|
||||
| Rank | Code | Score | Term | Flags | Section |
|
||||
|------|------|-------|------|-------|---------|
|
||||
| 1 | D50 | 4.0 | Anémie | - | 3 |
|
||||
| 2 | I25.1 | 4.0 | SCA (Syndrome Coronarien Aigu) | - | 1 |
|
||||
| 3 | Z95.5 | 2.0 | Stent vasculaire | - | 1 |
|
||||
|
||||
## Evidence
|
||||
|
||||
1. Scores proches : 4.0 vs 4.0
|
||||
|
||||
## Hypothèse bug
|
||||
|
||||
**Mauvais classement** — `I25.1` est dans le pool (rank 2) mais `D50` a été choisi. Problème de scoring (bonus/malus).
|
||||
|
||||
---
|
||||
*Généré le 2026-02-24 11:40*
|
||||
Reference in New Issue
Block a user