動作
Feature #386
進行中
SC
醫令外掛 Phase 3:帶回醫令 UI — 診斷碼勾選(主診斷)+ 病歷一鍵帶回(v0.5.0)
Feature #386:
醫令外掛 Phase 3:帶回醫令 UI — 診斷碼勾選(主診斷)+ 病歷一鍵帶回(v0.5.0)
狀態:
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.ts — v0.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 對接
沒有任何資料可供顯示
動作