動作
Bug #293
進行中
SC
SC
ICD-10 編碼校準:乳房/胸壁、指甲受損、牙齒外傷(最小 P3)
Bug #293:
ICD-10 編碼校準:乳房/胸壁、指甲受損、牙齒外傷(最小 P3)
開始日期:
2026-06-20
完成日期:
2026-06-20 (逾期 42 天)
完成比例:
100%
預估工時:
1:00 小時
概述
背景¶
接續 #292,處理 id-11 回饋中個別碼選錯的細項。逐條查證 ICD 庫後確認:
- (a) 乳房 vs 前胸壁、(b) 指甲受損:正確碼存在、只是排序挑錯 → 真問題,修。
-
(c) 下巴、(d) 眉毛:經查 ICD 對下巴無機械傷專碼(只有 burn/corrosion)、
眉毛歸「眼瞼及眼周」解剖上合理 → 非 bug,不修(討論後排除)。 - 修 (a)(b) 時,prompt 異動使既有「牙齒」flaky 案例穩定退步(門牙→臉部撕裂),
故加入最小 P3 牙齒修補止血並補強。
問題與修正¶
(a) 體表胸部傷過度配到「乳房」¶
現象:「左胸擦傷」(未提乳房)→ top1 S20.112A 乳房,應為 S20.312A 前胸壁。
根因:乳房碼與胸壁碼 facet 完全相同(abrasion/thorax),僅描述不同,無法用 facet 區分。
修正(rag_service.faceted_search + faceted_search_proto,ranking-time,免重建):
原文未提 breast/乳 時,將描述含 "breast" 的碼降權至胸壁之後(非硬切);
有提乳房時維持乳房 top1(不矯枉過正)。
(b) 手指撕裂「伴/未伴指甲受損」選反¶
現象:「左小指指甲斷裂」→ top1「未伴指甲受損」,應為「伴有指甲受損」S61.3xx;
且 Stage1 把指甲拆成獨立第二項傷。
根因:「指甲受損」資訊未被當成修飾擷取,且無對應 facet(僅存在於描述文字)。
修正:
- Stage1 新增
nail_damage修飾(比照foreign_body):指甲斷裂/受損/損傷/nail broken
→nail_damage=true,且指甲併入手指傷為單一項(不另開「nail」項)。 -
faceted_searchranking:nail_damage=true→ 偏好「with damage to nail」碼;
false→ 偏好「without」;未判定 → 中性。
(c) 最小 P3 — 牙齒外傷編碼¶
現象:牙齒外傷沿用擦傷/撕裂,配到臉/口腔錯碼;多種講法不穩
(門牙斷裂→空、門牙缺損→口腔撕裂、門牙脫落→口腔撕裂)。
根因:牙齒外傷在 ICD 走 S02.5 牙折 / S03.2 牙脫位(依機轉),非 abrasion/laceration。
修正:
- Stage1 規則:
牙/teeth/門牙+斷裂/折/缺損/崩→injury_type=fracture;-
脫落/鬆動/掉牙/脫位→injury_type=dislocation;一律body_region=mouth。
-
- 守門字表加
斷裂/缺損/崩(算骨折字)、脫落/掉牙/鬆動(算脫位字),
使牙折/牙脫位不被既有守門誤殺。 -
安全性已驗:加這些字不會讓「變形→骨折」復活——item-level evidence 守門
會獨立擋掉「右手食指變形」(不論病歷他處是否含「斷裂」)。
影響檔案¶
| 檔案 | 說明 |
|---|---|
backend/rag_service.py |
(a) 乳房降權、(b) nail_damage 修飾+排序、(c) 牙齒 prompt+守門字 |
backend/scripts/faceted_search_proto.py |
(a)(b) 排序同步 |
backend/benchmark/icd10_benchmark_faceted.json |
+3 離線案例(a / a2 反向 / b) |
backend/benchmark/icd10_benchmark_2026-06-19.json |
+4 live 案例(106 指甲 / 107 胸 / 108 牙折 / 109 牙脫位) |
backend/benchmark/fixtures_2026-06-19.json |
+4 合成病歷(106–109) |
驗證(全綠)¶
| 測試 | 結果 |
|---|---|
| 離線 faceted 檢索 | 30/30 |
| 06-19 live(含 a/b/牙齒) | 15/15 |
| 06-12 回歸(牙齒退步已修回) | 24/24 |
| 06-16 回歸 | 14/14 |
| 真 id-11 全管線 | 變形仍不漏編、門牙斷裂→S02.5、右下腹→S30.1、流鼻血→S00.33 |
| 牙齒講法 | 斷裂/缺損/上排牙齒斷裂→S02.5;脫落/鬆動→S03.2 |
不在本案範圍¶
- 完整 P3 牙齒:前端「損傷類型」改為 Fracture/Loosening/Avulsion(依部位顯示選項)— 另案。
- (c) 下巴 / (d) 眉毛:查證後判定非 bug,不修。
- P4 外因碼:醫師決定先不做。
- 牙齒抽取仍有 LLM 抖動,但碼家族(S02.5/S03.2)已綁 benchmark 守住。
備註¶
- 全程 query-time / prompt 層修正,無 facet 資料變更,部署機免重建向量庫。
- 修法均複用既有家族:(a)=「特定構造降權」(同 P2)、(b)=「修飾旗標」(同 foreign_body)、
(c) 牙齒=Stage1 映射+守門字。
沒有任何資料可供顯示
動作