動作
Feature #453
進行中
SC
醫令推薦面板全套(規則查表+互動骨架圖+管理後台+orderCodes帶回啟用)+外掛UI改版收斂 v0.10.0
Feature #453:
醫令推薦面板全套(規則查表+互動骨架圖+管理後台+orderCodes帶回啟用)+外掛UI改版收斂 v0.10.0
狀態:
New
優先權:
Normal
被分派者:
-
開始日期:
2026-08-19
完成日期:
完成比例:
0%
預估工時:
概述
醫令推薦面板全套 + 外掛 UI 改版收斂(v0.10.0)¶
背景¶
- 醫令推薦面板為下一波三件套之一(2026-08-17 狀態報告 §五):醫師勾選 ICD 確定碼後,系統即時查表給出放射/藥令/處置建議,勾選走既有
orderCodes帶回鏈路 —— 8/18 與臨床逐條定案規則(51 筆主檔+29 條規則),同日開工,8/18-8/19 於本機 exe 實測迭代多輪後定型。 - 同票收斂 8/12-8/17 的 UI 改版試作十項(原僅存工作樹,協調者已點名單點風險)——檢視頁雙欄佈局為面板前置,無法分票。
- 設計單一事實來源:
docs/order-panel-design.md(主檔/規則/決策/實作對照全記錄)。
變更內容¶
Backend(醫令面板)¶
-
models:
order_master(碼/名稱/類別/側別/配對鍵/短名/小骨架部位/排序)、order_rule(名稱/ICD 前綴/關鍵字/主要建議/鄰近段/啟用/排序);lifespan 空表自動 seed(order_seed.py,admin 改過不覆蓋)+ 舊表補欄 migration。 -
查表:
POST /plugin/orders/suggest(X-API-Key)、POST /orders/suggest(JWT)——比對 =(前綴任一命中)且(英文名稱含關鍵字),多規則命中取聯集、以醫令碼聚合、主要/鄰近分層、保留規則內陣列順序(= 管理者排的顯示序);GET /plugin/orders/master。 -
admin CRUD:
/admin/orders/master(重複 409、被規則引用拒刪 409、{code:path}支援 U/A 含斜線)、/admin/orders/rules(前綴/關鍵字至少一、主檔查無 400)、GET /admin/orders/icd-info(前綴/碼 → 意義,重用 directmap 73k 索引,前綴回代表碼描述並洗掉側別/照護期字尾)。 - 規則 seed(臨床 8/18-8/19 定案):軀幹 7+四肢 12+藥令處置 10;頭/四肢/胸壁淺層傷觸發放射、S01.8→LATYO、S01.9/S00.8 兩者都給、S11→72CTAC、T20→LATYO、撕裂傷/擦傷走關鍵字、T 碼不觸發;頸規則順序=頸椎影像優先。
-
工具:
tests/sync_order_rules.py—— 規則設計改版後以名稱為 key 同步已部署機器(admin 自訂規則保留)。 -
既有 bug 修:
predict_icd10為 async def 卻同步呼叫 LLM,AI 補充 30-60s 期間整個 event loop 卡死(草稿暫存/查表全 pending)→run_in_threadpool。
前端(外掛面板)¶
- OrderPanel.tsx(檢視頁雙欄下方全寬):影像/藥品/處置分區+類別快篩;一列一部位膠囊(碼+短名恆顯示);鄰近段接列尾淡一階;左右成對片一顆膠囊分 L|R;側別連動(主要/鄰近皆依觸發 ICD 碼側別只列同側,未明則並列);建議預設不勾、已勾不因來源消失取消;「 已勾選醫令」總覽欄(=帶回送出清單,含「非目前建議」標籤);「其他醫令」搜尋加開。
-
OrderBodyMap.tsx 小骨架熱區圖:底圖
skeleton_body.png(骨骼頁原圖去手足插圖版,畫布同尺寸座標不變);琥珀=有建議/淡黃=僅鄰近/綠=已勾;自動聚焦傷處(X/Y 包絡+鎖定全身長寬比 → 渲染尺寸恆定不擠版面)+「全身」切換;點區塊單片直勾/多片小選單;關節比照骨骼頁外移圓圈+虛線引線;與清單 hover 雙向連動。 -
帶回:
orderCodes隨「全部帶回」/「僅帶回醫令 (N)」送出;帶回列顯示醫令筆數。 -
勾選入草稿(
lib/plugin-selection.ts):診斷/醫令勾選隨 draft 暫存與還原,誤關視窗不再歸零;已勾醫令存在時面板恆顯示(不會「看不見但會送出」)。
前端(管理後台「醫令面板」tab,OrderAdmin.tsx)¶
- 規則試算盒(貼 ICD 碼 → 命中規則+面板將顯示結果)、ICD 前綴 chips 自動標註意義(查無=紅 chip)、醫令選取器(搜尋+類別分組點選,免手打碼)、就地展開編輯、規則分組收合(軀幹放射/四肢放射/藥令處置)、主要/鄰近醫令拖曳排序(=面板顯示序)、主檔管理(含短名/小骨架部位欄)。
夾帶收斂(UI 改版試作十項+殼)¶
- 左側直排 Nav、檢視頁左右雙欄(病歷 sticky+ICD)、帶回列 sticky 貼底、檢傷建議卡移右欄、容器 1500px、前/後視圖鈕移圖右上、軟組織圖縮放拖曳、兩圖高度 clamp 自適應、ICD 整列可點勾選(快查+檢視頁)、殼開窗最大化(
AppConfig.cs/MainForm.cs,configwindow.maximized選用制;exe 重打包併 0.10.2 殼批次)。 - 兩真 bug 修:關節傷型 id 中英混雜進英文病歷(取英文段)、骨骼圖預設超高需圖內捲動。
- 外掛視窗右上角 / 暗色切換(localStorage 記住,預設跟隨系統)。
驗收標準¶
- smoke test 全站 71 項全 PASS(新增第 10 區段 12 項:seed/分層/聯集/不觸發/側別順序/淺層傷觸發/admin CRUD/引用拒刪/icd-info/規則順序)
- Playwright 實機驗證:外掛面板 14 項、管理後台 8 項、聚焦版面恆定、誤關還原勾選 4 項 —— 全 PASS
- 帶回鏈路:mock TraumaFill 成功行「醫令 填N」確認 orderCodes 送達
-
tsc --noEmit、eslint、next build全乾淨;網頁版(登入)回歸正常(面板不顯示、admin tab 僅 admin 可見) -
規則行為與
docs/order-panel-design.md定案逐條一致(含 8/19 exe 實測修訂)
部署注意¶
- 無新 env;DB schema 全自動(create_all 建兩表+補欄 migration+空表 seed)。
- 面板為純前端+backend,現有 exe 不需重打包即生效;殼 maximized 需重打包,併入 0.10.2 殼批次。
- 之後規則設計改版 →
python backend/tests/sync_order_rules.py --base-url <server>同步(以名稱為 key,admin 自訂/改過的規則保留;seed 規則勿改名,改名會在同步時重複)。 - 醫令建議屬輔助性質,預設不勾、醫師逐項確認;主檔/規則後台可即時增刪改,免部署。
沒有任何資料可供顯示
動作