專案

一般

配置概況

動作

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)

是由 Sashiba Chou 於 約 2 個月 前加入.

狀態:
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.py 32 項全 PASS(成功行三欄+errorCount 優先序、
    0/14 分流、DRYRUN、ERROR[nn] 透傳、10/13/15 責任分碼、validateDiags 三降級路徑、
    diagNames 對齊與缺勾選不送);帶回介面/exit 語意變更需同票維護
  • test_startup.py 69 項回歸全 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 前置清單)

沒有任何資料可供顯示

動作

匯出至 PDF Atom