動作
Feature #317
進行中
SC
SC
檢傷單貼上自動填入 + ICD-10 快查強化(縮寫/typo 容忍、filter、對照表)+ 版本號機制
Feature #317:
檢傷單貼上自動填入 + ICD-10 快查強化(縮寫/typo 容忍、filter、對照表)+ 版本號機制
開始日期:
2026-07-03
完成日期:
2026-07-03 (逾期 29 天)
完成比例:
100%
預估工時:
1:00 小時
概述
目的¶
- 貼上檢傷單文字即自動填入病歷欄位並背景查詢 ICD-10,減少重複打字;全程不擷取病患姓名(隱私)。
- ICD-10 快查容忍縮寫、俗名與拼字錯誤,並提供 filter、Google 搜尋、縮寫對照表。
- 建立版本號 + changelog 機制,可區分開發中/已部署版本。
- 修正 6/21 以來回饋案例暴露的 RAG 問題(fx 縮寫、股骨頸誤碼、複製失效等)。
變更內容¶
A. 檢傷單匯入(新功能)¶
-
frontend/src/lib/triage-parser.ts(新增): 解析貼上的檢傷單(純文字/HTML 皆可),擷取病歷號、年齡、檢傷病史、過敏史、主要問題、受傷機轉關鍵字(跌倒→Fall、機車→Motorcycle Rider…)。容忍不完整貼上(缺段落只填有的欄位)。- 隱私:「姓名」「檢傷人員」欄位一律不擷取,並自 sanitizedText 移除,後續查詢/生成不含姓名。已用 6 份範例檔驗證無 PII 外洩。
-
frontend/src/components/TriageImport.tsx(新增): 病史頁頂端貼上區;貼上→填欄位→顯示已填/缺漏摘要→背景(AbortController)自動查 ICD-10,結果直入檢視頁籤;貼上後清空文字框(姓名不留畫面)。 -
病歷號(MRN): 基本資料新增欄位(
PatientHistoryForm.tsx、schemas.ts);儲存時優先使用使用者輸入,否則沿用 ER-timestamp(ReviewTab.tsx);側邊欄 entry 顯示#病歷號(HistorySidebar.tsx)。
B. ICD-10 快查強化¶
-
backend/medical_terms.py(新增): 醫療縮寫/俗名字典 + typo 修正引擎- 縮寫 77 條(任意大小寫:dka、uti、ich、sdh、edh、sah、cva、stemi…)+ 14 條僅全大寫(多義防護:PE、MI、OM、MS…)+ 15 條俗名片語(sore throat→pain in throat、nosebleed→epistaxis…)。
- Typo 修正:OSA 編輯距離(≤2,含相鄰對調)+ 黏字拆分(sorehtroat→sore throat),詞彙表自 ICD 描述建立;修正採「距離優先、再頻率」策略。
-
normalize_search_query():展開→typo 修正→再展開。實測:DKA→diabetic ketoacidosis、tonsilitis→tonsillitis、chest apin→chest pain。
-
「僅初次就診」filter(
backend/main.py+Icd10SearchPage.tsx): 預設開啟;以描述文字排除 subsequent encounter/sequela(佔全庫 47%),over-fetch 後過濾;前端 checkbox 可關。 - 代碼前綴命中防雜訊: 代碼查詢(如 S02.5)命中時不再以語意結果補滿(先前混入 G40.42 等無關碼)。
-
複製按鈕修正(BUG): 內網 HTTP 下
navigator.clipboard不存在導致複製失效 → 改用copyToClipboard(execCommand fallback)。 - Google 搜尋按鈕: 一鍵開新分頁搜尋「<輸入文字> ICD 10」。
-
縮寫對照表(
AbbrevGlossary.tsx新增 +GET /abbreviations): 快查頁 dialog 顯示全部對照(可過濾),附「建議新增/修改」表單,走既有 /search-feedback(分類 abbrev_synonym)。
C. RAG 修正(回饋案例 2026-07-02)¶
-
backend/rag_service.py:normalize_er_abbrev()fx/fxs→fracture(s);解剖同義詞 femoral neck→neck of femur;ER_CODING_RULES 新增 RULE 4(股骨頸=S72.0-,禁配髖臼 S32.4-)。 -
回饋 provider 歸因:
icd10_feedback資料表新增provider欄(models/schemas + DB migration),前端回報時附上當下 LLM provider(icd-feedback.ts),供日後歸因 openai/ollama 品質差異。 -
Stage-1 擷取保底: 軟組織/骨骼頁籤呼叫 predict_icd10 時附
fallback_injuries(逐行),LLM 擷取失手時不再整批查無結果(回饋 id-2)。
D. UX / 版本機制¶
-
新增病歷回頂部: 按「新增病歷」自動捲回頁面最上方(
page.tsxmainRef)。 -
版本號:
frontend/src/lib/version.ts(新增,APP_VERSION=0.3.0 + CHANGELOG);標頭版本徽章(dev 環境加註「dev」),點擊顯示各版本特色 dialog;package.json0.2.0→0.3.0。
測試¶
-
npx tsc --noEmit通過(exit 0)。 - 後端
medical_terms單元驗證:DKA/tonsilitis/sorehtroat/chest apin 均正確展開;「fracture of femur」、小寫 pe 不誤動。 -
GET /abbreviations回傳 77/14/15 筆。 - 檢傷單解析:6 份範例檔全數通過,無姓名外洩。
- S02.5 代碼查詢回傳乾淨 2 筆(不再混入 G40.42)。
已知未處理(後續 ticket)¶
- 快查排名偏差:超短描述碼(如 A46 Erysipelas)因未正規化向量 + L2 距離成為萬用近鄰 → 擬以「向量庫正規化重建(cosine)」處理,需 golden benchmark 前後對照,另開 ticket。
- HTTPS/內網部署事項(https_todo.md)。
沒有任何資料可供顯示
動作