專案

一般

配置概況

動作

Feature #386

進行中
SC

醫令外掛 Phase 3:帶回醫令 UI — 診斷碼勾選(主診斷)+ 病歷一鍵帶回(v0.5.0)

Feature #386: 醫令外掛 Phase 3:帶回醫令 UI — 診斷碼勾選(主診斷)+ 病歷一鍵帶回(v0.5.0)

是由 Sashiba Chou5 天 前加入.

狀態:
New
優先權:
Normal
被分派者:
-
開始日期:
2026-07-28
完成日期:
完成比例:

0%

預估工時:

概述

醫令外掛 Phase 3:帶回醫令 UI — 診斷碼勾選(主診斷)+ 病歷一鍵帶回(v0.5.0)

背景

接續 #384(backend)、#385(/plugin 前端)。本票完成外掛前端的最後一塊:
帶回醫令 UI——醫師在檢視頁勾選診斷碼、指定主診斷,單鈕把病歷文字 + 診斷碼
經薄殼 exe 的 pywebview 橋交給 TraumaFill.exe 預填回醫令(Clinic002)。
TraumaFill 對接規格與 UI 決策見 his_plugin/DESIGN.md §5.2/§6.1(本票同步更新)。

變更內容

1. frontend/src/components/ReviewTab.tsx — 外掛模式帶回 UI

  • ICD-10 結果表新增兩欄(僅外掛模式,網頁版零變):
  • 「帶回」checkbox:預設勾每項傷情的首選碼(AI top 1),可自由增減
  • 「主診斷」radio:僅勾選列可選,預設第一個勾選碼;payload 時排 diagCodes[0]
    (HIS 以第一筆為主診斷)
  • 單顆「帶回醫令」鈕 + 摘要列(已勾選 N 個/主診斷):
    sendPayload({patientNo, soap, diagCodes, orderCodes: []})
  • soap 可為空(只帶診斷)、勾選可為空(只帶病歷文字);兩者皆空鈕停用
  • orderCodes 此版固定
  • exit code 回饋(TraumaFill 規格):
  • 成功:鈕鎖成「已帶回」+ stdout 摘要 +「已預填至醫令畫面,請確認後自行存檔」
  • DELETE draft(評估完成);「再次帶回」需明確點擊(soap 為 append,防疊字)
  • 失敗:顯示 ERROR 原文,不標已帶回
  • ICD 結果變動時重設勾選(adjust-state-during-render,無 effect 內同步 setState)

2. frontend/src/lib/plugin-session.tsx — pywebview 橋接契約

  • BridgePayload(= TraumaFill 輸出 JSON 四欄位)、BridgeResult 型別
  • JS↔Python 契約(Phase 4 依此實作):
    sendPayload(payload) → Promise<{ok, exitCode?, message?}>;
    exit 0 → {ok: true, message: stdout 摘要},非 0 → {ok: false, message: ERROR 原文}
  • 橋接偵測:pywebviewready 事件 + 延遲補抓(pywebview 注入可能晚於頁面載入);
    一般瀏覽器 → 帶回鈕停用 + 提示改用複製鈕(勾選 UI 照常顯示,利於開發測試)

3. frontend/src/lib/version.tsv0.5.0 + CHANGELOG

外掛前端(Phase 2+3)完成,依 #384/#385 承諾一併調升:
外掛模式(/plugin)自動帶入、草稿暫存、診斷碼勾選帶回、免登入共用模板。

4. his_plugin/DESIGN.md — §5.2 定稿 + Phase 3 標記完成

驗收標準

  • Phase 3 e2e 18 項全 PASS(Playwright + 假 pywebview 橋模擬 exe 環境):
    預設勾選首選碼/次選不勾、主診斷預設、payload 四欄位逐一驗證
    (patientNo=451 整數/soap 全文/diagCodes 主診斷在前/orderCodes=[])、
    成功訊息含 stdout 摘要、已帶回鈕停用、帶回成功後 draft 被清(404)
    改主診斷→再次帶回→排序更新、失敗顯示 ERROR 原文且不標已帶回、
    無橋接時鈕停用+提示+複製鈕 fallback
  • Phase 2 e2e 18 項回歸全 PASS(自動帶入/暫存/還原不受影響)
  • 網頁版 / 回歸正常;一般模式 ICD 表格無新欄位(外掛 UI 完全隔離)
  • npm run build 通過;ESLint 本票修改檔案零新增問題(既有 3 error 為他檔舊債)
  • backend 零改動 → smoke test 50 項全 PASS 不變

備註

  • smoke_test.py 無需增修:未動任何 API endpoint;帶回為純瀏覽器端流程 +
    pywebview 橋(HTTP 煙霧測試無法覆蓋),以 Playwright e2e 18 項實測替代(同 #380/#385 前例)
  • 部署:純前端變更,部署機更新後重 build 即可;版本徽章應顯示 v0.5.0
  • 下一步 Phase 4(薄殼 exe):pywebview 視窗 + Python 端 sendPayload 實作
    (組 JSON → 呼叫 TraumaFill.exe <json路徑> → 依 exit code 回傳)+ PyInstaller 打包;
    JS 端契約本票已凍結,Python 端照 §5.2 實作即可與本 UI 對接

沒有任何資料可供顯示

動作

匯出至 PDF Atom