專案

一般

配置概況

動作

Bug #298

進行中
SC SC

軟組織損傷 PE 區段歸類錯誤 — 前臂被誤列在「Head」

Bug #298: 軟組織損傷 PE 區段歸類錯誤 — 前臂被誤列在「Head」

是由 Sashiba Chou約 1 個月 前加入.

狀態:
New
優先權:
Normal
被分派者:
開始日期:
2026-06-21
完成日期:
2026-06-21 (逾期 41 天)
完成比例:

100%

預估工時:
0:30 小時

概述

現象
在軟組織人體圖同時標註「臉部 (Forehead)」與「手部 (Left Forearm)」損傷後,按「產生病歷」,Physical Examination 區段的 Head: 行錯誤包含了前臂損傷。Left Forearm: Redness 同時出現在 Head: 與 Extremities: 兩處:

=== Physical Examination ===
Head: Forehead: Tenderness; Left Forearm: Redness ← 前臂不該出現在 Head
...
Extremities: Left Forearm: Redness
重現步驟
軟組織頁 → 臉部 → Forehead → 選任一損傷 (如 Tenderness)
手部 → Left Forearm → 選任一損傷 (如 Redness)
檢視頁 → 產生病歷
觀察 Physical Examination 的 Head: 行 → 含有 Left Forearm
根因
frontend/src/lib/region-map.ts 的 injuryBelongsToRegion() 使用裸字串比對 partId.includes(keyword)。HEAD 區段 keyword "ear" 會誤中 forearm_left_front("forearm" 內含 "ear"),導致前臂 partId 同時匹配到 HEAD。

修正
keyword 比對改為 token 邊界比對(keyword 必須是 _ 或字串頭尾界定的完整 token):

return region.keywords.some((kw) => new RegExp((^|_)${kw}(_|$)).test(partId));
partId 皆為小寫 snake_case,token-boundary 比對為精確匹配,且可預防未來同類子字串碰撞。

驗證
撰寫 34 個 partId 涵蓋全身區段的對應測試 → 全數 PASS
forearm_* → 只 EXTREMITIES;ear_* → 只 HEAD;其餘區段不受影響
Symptoms & Signs 區段不受影響(走另一條 pain-sync 邏輯,本就正確)
影響範圍
僅 frontend region-map.ts 單一函式;無後端 / DB / 向量庫變更。

沒有任何資料可供顯示

動作

匯出至 PDF Atom