動作
Fix #291
進行中
SC
SC
ICD-10 脊椎部位歸類修正 + M 章節骨折污染清除
Fix #291:
ICD-10 脊椎部位歸類修正 + M 章節骨折污染清除
開始日期:
2026-06-19
完成日期:
2026-06-19 (逾期 43 天)
完成比例:
100%
預估工時:
1:00 小時
概述
摘要¶
修正 faceted pipeline 兩個 facet 資料瑕疵(來源 docs/icd10_feedback_2026-06-19.json id 8/9):脊椎椎節部位標註錯誤、M 章節非外傷骨折污染外傷候選。修正後頸椎骨折不再回疲勞性骨折碼。屬資料層修正,向量庫需重建;線上邏輯僅 Stage1 prompt 增 1 條映射。
背景 / 問題¶
-
id 8(C2 頸椎閉鎖性骨折):AI 只回
M48.42XA(疲勞性骨折,非外傷),正解應為S12.1xx。 - id 9(T1/T12 胸椎骨折):歸類偏差(wrong_body_part)。
根因(兩個耦合的 facet 資料 bug):
-
脊椎部位標註錯誤且不一致:頸椎 S12 有 64/71 被標
back(應為neck);胸椎 S22.0 在 thorax/back 之間分裂;薦椎 S32.1 在 pelvis/back 之間分裂。→ 「Cervical Spine」查詢(region=neck)撈不到被標 back 的 S12。 -
M 章節非外傷骨折污染:228 條(encounter A)M48/M80/M84(疲勞/骨質疏鬆/病理性骨折)被標
injury_type=fracture,混進外傷候選;neck 區唯一的「fracture」剩M48.42,故 C2 錯配它。
變更內容¶
資料修補 backend/scripts/patch_facets_spine.py(新增,一次性,idempotent)¶
就地修補 data/icd10_facets_validated.json:
-
Part 1:
code開頭 M 且injury_type=fracture→ 改pathological_fracture(不再匹配外傷 fracture;仍保留於庫可被一般查詢)。實改 1314 筆。 -
Part 2:脊椎部位確定性重新歸類,實改 689 筆:
- S12/S13/S14 頸椎 →
neck(back→neck 447) - S22.0/S22.1/S23/S24 胸椎 →
thorax - S32.0/S33 腰椎 →
back - S32.1/S32.2/S34 薦/尾椎 →
pelvis
- S12/S13/S14 頸椎 →
線上 backend/rag_service.py
¶
-
STAGE1_FACETED_PROMPTbody_region 映射增 1 條:cervical spine→neck, thoracic spine→thorax, lumbar spine→back, sacrum/coccyx→pelvis。
向量庫¶
- 由修補後 facets 重跑
build_faceted_collection.py重建icd10_codes_faceted(73681 碼)。
測試 backend/scripts/test_spine_fix.py(新增)¶
頸/胸/腰/薦椎骨折各一題,綁碼段(非綁 LLM 命名):驗 top5 出現該椎節外傷碼段(S12/S22.0/S32.0/S32.1)且無疲勞/病理/骨質疏鬆污染。
驗證結果(live, OpenAI)¶
-
脊椎專項:C2→
S12.11x、T1→S22.018A、L1→S32.0xx、薦椎→S32.1xx,皆無 M 污染 — 全 PASS。 - 回歸無打壞:離線檢索 21/21、原始 24/24、新反例 14/14。
- 反向生題 v3:desc 骨折 7/9→9/9、subcat 94%→100%(femur→M84、脊椎漏接皆修復)。
- 回饋對照:id 8、9 由錯誤轉正確。
部署注意¶
-
data/、chroma_db/為 gitignored 生成物。部署機須依序重跑:
scripts/patch_facets_spine.py→scripts/build_faceted_collection.py。
風險 / 回滾¶
- 仍在
ICD_PIPELINE=faceted旗標下,legacy 不受影響。 - 已備份
data/icd10_facets_validated.bak.json;舊向量庫icd10_codes未動。
已知後續(本 ticket 不含)¶
依 06-19 回饋,尚有 dental 牙折、外因碼(貓抓/咬)、徵象/疼痛誤編、腹部挫傷過度配內臟等新類別待處理。
擬納入此 commit 的檔案¶
- M backend/rag_service.py
- A backend/scripts/patch_facets_spine.py
- A backend/scripts/test_spine_fix.py
(排除既有 scratch:scripts/test_faceted_query.py、scripts/validate_facets_sample.py、debug_icd10_output.md)
沒有任何資料可供顯示
動作