動作
Feature #430
進行中
SC
TraumaFill 對接合約 v1.1 落地(E1-E5+E2b):exit 0/14 分級+帶回預檢 validateDiags+20 筆防呆(v0.8.5)
Feature #430:
TraumaFill 對接合約 v1.1 落地(E1-E5+E2b):exit 0/14 分級+帶回預檢 validateDiags+20 筆防呆(v0.8.5)
狀態:
New
優先權:
Normal
被分派者:
-
開始日期:
2026-08-08
完成日期:
完成比例:
0%
預估工時:
概述
TraumaFill 對接合約 v1.1 落地:E1-E5+E2b(exit 0/14 分級、帶回預檢、20 筆防呆)(v0.8.5)¶
背景¶
跨專案協調公告第 8–11 號定版「TraumaFill 對接合約 v1.1」(帶回鏈第 3 步),
我方工作票 E1–E6 + E2b。核心風險:院內 HIS 主檔查無/DiagEngDesc 空的診斷碼
會在存檔瞬間被 HIS 靜默丟棄(醫師看不到任何異狀),而我方無法取得院內
主檔做預檢 —— 防線改為「帶回前 validateDiags 即時查 + exit 14 事後顯性回報」。
另兩個關鍵事實由使用者確認:HIS 病歷框為單一 free-typing 區塊(soap = 整篇
字串不分段)、院內診斷上限 20 筆(超過靜默截斷)。
變更內容¶
E2/E2b 成功行解析(traumafill_client.py)¶
- 新增
parse_fill_summary():解析最終定版成功行
OK|DRYRUN <摘要> | skippedCodes=[…] warnCodes=[…] skippedOrders=[…] errorCount=N - 三列表欄恆常;
errorCount優先讀機器欄位(公告 11 E2b),無欄位時退回
摘要「錯N」加總兜底(向後相容);欄位 JSON 壞掉不擋流程 -
DRYRUN前綴偵測(乾跑模式);SUCCESS_EXIT_CODES = (0, 14)判斷式寫死
E1 exit code 表 v1.1(plugin-session.tsx + ReviewTab.tsx + ernote_plugin.py)¶
-
TRAUMAFILL_EXIT_MESSAGES:0/1/2/10(管道不通)/11(病人或就診序號不符)/
12(唯讀)/13(JSON 無效)/14(部分成功)/15(未開醫令畫面)逐碼專屬文案 -
exit 14 不是失敗(條款 7):琥珀色「已帶回,惟下列項目請醫師確認」——
院內查無未填入(skippedCodes)、存檔時將不被保存(warnCodes)、
「有 N 筆填入異常」計數;絕不顯示為失敗(防重複帶回 → soap 累加/醫令重複列) - DRYRUN 顯示蓋過 0/14 文案:「乾跑模式:已驗證,未實際填入」(裁決 6),
且乾跑成功不清 draft -
ERROR[nn]:前綴不解析內容,只依 exit code 對文案(裁決 4) - Bridge 本地預核對同義改碼:無作用中畫面 → 15、畫面病人不符 → 11
(原皆為 1;與 SyncHUD 啟動碼 0–5 責任分碼不重疊);
未設 TraumaFill 路徑/逾時/起不來 → 10
E3 validateDiags 帶回前預檢(條款 10 + 裁決 5)¶
-
TraumaFillClient.validate_diags():--validate-diags <json路徑>唯讀呼叫 - Bridge
validateDiags(codes):JS 可呼叫;優雅降級鐵律 —— 通道不可用/
exit 15/patientNoMatch:false(結果是用別人的就診日期算的,必須丟棄)
一律回{available:false},絕不因預檢失敗阻擋帶回 - 前端帶回前呼叫:發現
resolved:false(院內查無)或engDescEmpty
(存檔會被丟)→ confirm「仍要帶回/返回改碼」,把防線提前到醫師還能改碼的時刻;
open_screen 提示不阻擋
E4 UI 防呆(條款 2/4 修訂)¶
- 診斷勾選上限 20 筆:第 21 筆勾選擋下+提示;自動勾選溢出時紅色警示
且「全部帶回/僅帶回 ICD-10」停用;send 前再守最後防線 - 同病人再次帶回病歷文字前 confirm(修訂條款 2 文案):附加不取代/
醫令將新增重複列/診斷不重複(HIS 內建去重)
E5 diagNames 選填欄位(條款 5)¶
- payload 增列
diagNames(description_en,與 diagCodes 逐項對齊;掃檢視頁
全部結果來源建碼→描述對照);純顯示用途,對方未實作前靜默忽略
mock 與文件¶
-
mock_traumafill.py升 v1.1:成功行最終定版、Z99*→skipped、Z98*→warn、
MOCK_EXIT(模擬 10–15)、MOCK_ERRN(模擬填入異常)、TRAUMA_DRYRUN、
--validate-diags;仍為自製仿品,E6 需以官方 mock(T4)複驗 -
DESIGN.md§5.2/§6.1 更新為合約 v1.1 定稿 + 新增 §6.1a 預檢節 -
version.ts→ v0.8.5 + CHANGELOG
驗收標準¶
-
新增
test_contract_v11.py32 項全 PASS(成功行三欄+errorCount 優先序、
0/14 分流、DRYRUN、ERROR[nn] 透傳、10/13/15 責任分碼、validateDiags 三降級路徑、
diagNames 對齊與缺勾選不送);帶回介面/exit 語意變更需同票維護 -
test_startup.py69 項回歸全 PASS(SyncHUD 啟動碼 0–5 未動) -
ESLint 全綠;
npm run build過 -
smoke test 58 項全 PASS(backend 零改動,無新增 HTTP endpoint;
帶回為 pywebview 橋流程,由 test_contract_v11.py 覆蓋) - E6:收到 TraumaPrefill 官方 mock(T4)後複驗一輪 → 通過後重打包 exe
- 實機日:DryRun 全鏈關卡 → 醫師手動真填測項(依公告 11 前置清單)
沒有任何資料可供顯示
動作