09|新舊 API 對照清單(以新的 FHIR 為全集,舊的 H13 有缺要補)

08_對照H13端點.md 是「舊的每一支 → 新的哪一支」。這一份反過來:新的 64 個 operation 全部列出(2026-09-19 是 43 支,2026-09-20 補了 21 支),每一支對回舊的 H13 REST(用戶需求/H_產品規格/_tools/openapi.yaml,/api/v1/icu);舊的沒有、或只做到一半的,就是要補進 H13 的。

新=openapi/openapi.yaml(FHIR R4,64 operation,2026-09-20);舊=H13(59 path/71 operation,2026-09-06)。

圖例:✅ 舊的有對應 ◐ 舊的只做到一部分 ❌ 舊的沒有,要補 ⊘ 不在 H13 範圍(屬 D1 HIS 介接)

1. 逐支對照

系統

# 新(FHIR) 舊(H13) 狀態 要補什麼
1 GET /metadata 能力宣告 — ❌ GET /capabilities:伺服器實際支援的資源/互動/錯誤碼清單,前端據此決定按鈕要不要出現。或直接沿用 FHIR 的 metadata
2 POST / Bundle transaction/batch POST /encounters/{id}/orders:batch ◐ 舊的只有醫囑整組;缺通用的「一個交易寫多筆」(例:一次建兩件 Task、開醫囑+建追蹤工作)與純讀取的 batch

病人與就醫

# 新(FHIR) 舊(H13) 狀態 要補什麼
3 GET /Patient?identifier=&name= 搜尋病人 — ❌ GET /patients?q=:手圈掃碼、病歷查詢(S21)都要按病歷號/姓名找人;舊的只有 /worklist(本班清單)與 /patients/{id}(已知 id)
4 GET /Patient/{id} GET /patients/{id} ✅ 舊的要補監護人與健保身分欄(新的放 contact/extension[insuranceText])
5 GET /Patient/$roster 本班名單 GET /assignments、GET /worklist ✅ —
6 GET /Encounter?status=in-progress 搜尋就醫 GET /encounters/{id}(單一) ◐ GET /encounters?status=&ward=:全科病人清單(09-10 決議「全院內醫護可查閱」)舊的只能經 /worklist 拿本班的
7 GET /CareTeam?patient= GET /assignments(只有自己的) ◐ 看別人的照護關係(誰是 p1 的主治、哪位護理師):24 項 #1「同人多關係、每病人單一有效主治」要查得到
8 POST /CareTeam 建立照護關係 — ❌ POST /assignments:管理者維護照護關係/指定主治(24 項 #1、#12 維護設定);目前舊的假設分派全由 HIS 推入
9 GET /Flag?patient=&category= 特殊註記 — ❌ GET /encounters/{id}/flags:過敏、隔離、管路天數、嚴重度。舊的 /worklist 沒有這一欄;設計稿清單與病人抽屜都要
10 GET /Flag/{id} — ❌ 同上;嚴重度要能獨立更新、留歷史(F2 回問 #5)

醫囑

# 新(FHIR) 舊(H13) 狀態 要補什麼
11 GET /MedicationRequest?patient=&status=&_revinclude=… GET /encounters/{id}/orders ◐ 舊的只能按就醫事件查;跨病人的「全科待簽佇列」(設計稿「醫囑與處方」頁:?status=draft)沒有
12 POST /MedicationRequest 開立(草稿) POST /encounters/{id}/orders、/order-cart/items ✅ —
13 GET /MedicationRequest/{id} GET /orders/{id} ✅ —
14 PUT /MedicationRequest/{id} 更新(草稿全改/簽後只能改狀態) — ❌ PUT /orders/{id}:改劑量、指定病程來源、停藥(status=stopped)、取消。舊的只有 DELETE /order-cart/items/{key},簽署後就沒有任何修改路徑,但設計稿治療病程有「停藥」
15 PATCH /MedicationRequest/{id} 標記誤建(entered-in-error) — ❌ POST /orders/{id}/void(或 PATCH):誤建不刪、留紀錄;舊的完全沒有
16 POST /MedicationRequest/{id}/$sign POST /orders/{id}/sign ✅ —
17 POST /MedicationRequest/{id}/$submit POST /orders/{id}/send ✅ —
18 GET /ServiceRequest?category= 檢驗/檢查/照護/照會 GET /encounters/{id}/orders、GET /encounters/{id}/consultations ✅ —
19 POST /ServiceRequest POST /encounters/{id}/orders、POST …/consultations ✅ —
20 GET /ServiceRequest/{id} GET /orders/{id} ✅ —
21 PUT /ServiceRequest/{id} — ❌ 同 #14:檢驗檢查醫令的異動/取消(H8 §4.4 S12「異動取消與部分回應對帳」)

實際執行

# 新(FHIR) 舊(H13) 狀態 要補什麼
22 GET /MedicationAdministration?patient=&effective-time= GET /orders/{id}/executions ◐ 舊的只能按一張醫囑查;eMAR 工作表要「這位病人今天全部劑次」、交班要「本班已執行」——缺按病人/時間窗查
23 POST /MedicationAdministration(If-None-Exist) POST /orders/{id}/executions ✅ 舊的要補劑次唯一(同一劑重送回 200 不建第二筆)的說明
24 GET /Procedure?patient= GET /encounters/{id}/procedures ◐ 舊的只有手術/麻醉唯讀;照護/處置的執行紀錄查詢沒有
25 POST /Procedure 記錄照護/處置執行 POST /orders/{id}/executions ✅ —

檢驗與量測

# 新(FHIR) 舊(H13) 狀態 要補什麼
26 GET /DiagnosticReport?patient=&_include=result GET /encounters/{id}/reports、/lab-results ✅ —
27 GET /DiagnosticReport/{id} GET /reports/{id} ✅ —
28 PUT /DiagnosticReport/{id}(僅整合服務) — ⊘ HIS 推入報告走 D1 §3 事件(/his-events/*),本來就不在 H13 的 L1 範圍
29 GET /Observation?category=&date=&code= GET /encounters/{id}/observations、/observations/series、/lab-results ✅ —
30 POST /Observation 量測/輸注速率 POST /encounters/{id}/observations、POST /orders/{id}/infusion-checks ✅ —

病歷文件

# 新(FHIR) 舊(H13) 狀態 要補什麼
31 GET /Composition?patient=&type=&status= GET /encounters/{id}/compositions、GET /handovers ◐ 跨病人的「待簽表單佇列」(設計稿「表單與電子簽章」頁:?status=preliminary)沒有
32 POST /Composition 建立草稿(病程/交班/表單) POST /encounters/{id}/compositions、/notes、/handovers ✅ —
33 GET /Composition/{id} GET /compositions/{id} ✅ —
34 PUT /Composition/{id} 改草稿(If-Match) PUT /drafts/{kind} ◐ 舊的草稿是前端暫存格,不是文件本身;缺 PUT /compositions/{id}(草稿可改、簽後不可改)
35 POST /Composition/{id}/$sign POST /compositions/{id}/sign ✅ 更正:新的是「建新文件+relatesTo.replaces」,舊的是 /amend,語意一致
36 POST /Composition/{id}/$receive 接收交班 POST /handovers/{id}/receipts ✅ —

工作與交班

# 新(FHIR) 舊(H13) 狀態 要補什麼
37 GET /Task?owner=&status=&focus= GET /tasks ✅ —
38 POST /Task POST /tasks ✅ —
39 PUT /Task/{id}(結案要證據、來源報告要已判讀) PATCH /tasks/{id} ✅ —

溯源與稽核

# 新(FHIR) 舊(H13) 狀態 要補什麼
40 GET /Provenance?target=&activity=&agent= — ❌ 舊的能「寫」已閱/判讀/簽署/確認名單,但沒有任何一支能「查」:誰簽的、何時判讀的、名單誰確認過。建議 GET /reports/{id}/reviews、GET /compositions/{id}/signatures 或通用 GET /provenance?target=
41 POST /Provenance(roster-confirm/clinical-review) POST /assignments/confirm、/reports/{id}/seen、/reports/{id}/processed、/executions/{id}/review ✅ 舊的拆成四支,新的一支——對照即可
42 GET /AuditEvent GET /audit-events ✅ —

目錄

# 新(FHIR) 舊(H13) 狀態 要補什麼
43 GET /ValueSet/{id}/$expand?filter= GET /catalog/items、/catalog/routes、/catalog/icd10、/catalog/frequencies、/catalog/taxonomy ✅ —

人員(2026-09-20 補)

# 新(FHIR) 舊(H13) 狀態 要補什麼
44 GET /Practitioner/$me 我是誰(人+職稱+科別+班別) GET /me、GET /shifts/current ◐ 舊的 /me 只有帳號與角色,要補職稱/科別,或把 /shifts/current 併進來
45 GET /Practitioner?name=&identifier= 找人員 — ❌ GET /staff?q=:指定接班者、照會對象、收件人都要找人;舊的假設前端已知 id
46 GET /Practitioner/{id} — ❌ GET /staff/{id}
47 GET /PractitionerRole/{id} 職稱/科別/班別 — ❌ 併入 /staff/{id} 回職稱/科別/班別即可

診斷與溝通(2026-09-20 補)

# 新(FHIR) 舊(H13) 狀態 要補什麼
48 GET /Condition?patient=&encounter=&category=&verification-status= 診斷清單 — ❌ GET /encounters/{id}/diagnoses?category=:設計稿 ws3「診斷」與總覽問題清單;舊的只有 goals
49 POST /Condition 新增診斷(ICD-10 自目錄) — ❌ POST /encounters/{id}/diagnoses:代碼必在 ICD-10 目錄、限醫師
50 GET /Condition/{id}(+ /_history/{n} 演變) — ❌ GET /diagnoses/{id}、GET /diagnoses/{id}/history:診斷演變時間軸要讀得到舊版本
51 PUT /Condition/{id} 暫定→確立/排除(代碼不可換) — ❌ PUT /diagnoses/{id}:只能改狀態與依據;換代碼=另建一筆
52 GET /Goal?patient=&encounter=&lifecycle-status= 本日目標 GET /encounters/{id}/goals ✅ —
53 POST /Goal POST /encounters/{id}/goals ✅ 舊的要補「限醫師」與「描述必填」
54 GET /Goal/{id} — ❌ GET /goals/{id}
55 PUT /Goal/{id} 完成/取消 — ❌ PUT /goals/{id}:舊的目標建了就不能結案
56 GET /Communication?patient=&encounter=&category=&based-on= 照會回覆+必要溝通 GET /encounters/{id}/communications ◐ 舊的只能按就醫查必要溝通;缺按病人跨就醫、按類別、按照會單查
57 POST /Communication(consult-reply 或 essential) POST /consultations/{id}/response、POST /encounters/{id}/communications ✅ 舊的要補規則:照會回覆必指向照會單、照會醫師不能寫必要溝通
58 GET /Communication/{id} — ❌ GET /communications/{id}

常用與套組(2026-09-20 補)

# 新(FHIR) 舊(H13) 狀態 要補什麼
59 GET /List?code=favorites-personal|favorites-dept&source= GET /favorites ◐ 舊的只有自己的個人常用;缺科常用
60 POST /List 建立常用清單 — ❌ 舊的假設 /favorites 永遠存在;建科常用要有入口
61 GET /List/{id} GET /favorites ✅ —
62 PUT /List/{id} 整份送回(If-Match) PUT /favorites/{key}(單筆加入/移除) ◐ 舊的沒有版本鎖,兩個裝置同時改會互蓋;品項要驗目錄
63 GET /PlanDefinition?type=order-set|education-set 套組、衛教組套 GET /order-sets、GET /education-sets ✅ —
64 GET /PlanDefinition/{id} — ❌ GET /order-sets/{id}:舊的只回清單,展開套組內容要單筆

ValueSet/icd10、frequency、order-category 走 #43 的 $expand,對應舊的 /catalog/icd10、/catalog/frequencies、/catalog/taxonomy,都 ✅。

另外,新的伺服器還有 GET /{type}/{id}/_history/{n}(讀舊版本) 與 Last-Modified/If-None-Match 304——沒列成 OpenAPI 的 operation,但舊的也沒有版本讀取,補 PUT /orders/{id} 之後就會需要。

2. 統計

狀態 支數 編號
✅ 舊的有對應 31 4 5 12 13 16 17 18 19 20 23 25 26 27 29 30 32 33 35 36 37 38 39 41 42 43 + 52 53 57 61 63
◐ 只做到一部分 13 2 6 7 11 22 24 31 34 + 44 56 59 62
❌ 舊的沒有,要補 19 1 3 8 9 10 14 15 21 40 + 45 46 47 48 49 50 51 54 55 58 60 64
⊘ 屬 D1,不在 H13 範圍 1 28

合計 64 支(#1–43 是 2026-09-19 的原表,#44–64 是 2026-09-20 補的)。

(#1 metadata 若決定直接沿用 FHIR 的,就從 ❌ 移到 ✅;上表先算 ❌。)

3. 要補進 H13 的清單(依急迫排序)

順位 補什麼 為什麼現在就要 對應新的
1 PUT /orders/{id}(草稿全改/簽後改狀態:stopped、cancelled) 設計稿治療病程有「停藥」「取消」,主線已可操作;舊的簽署後零修改路徑 #14 #21
2 GET /encounters/{id}/flags(過敏/隔離/管路天數/嚴重度) 病人清單每一列都在用;嚴重度規則待院方,但欄位得先有 #9 #10
3 跨病人佇列:GET /orders?status=draft、GET /compositions?status=preliminary、GET /executions?patient=&from=&to= 「醫囑與處方」「表單與電子簽章」「eMAR 今日劑次」三個畫面都是跨病人或跨醫囑的 #11 #31 #22
4 GET /provenance?target=(或分散的 reviews/signatures) 畫面要顯示「誰簽的」「已判讀」章;舊的只能寫不能讀 #40
5 GET /patients?q=、GET /encounters?status= 手圈掃碼、病歷查詢、全科清單 #3 #6
6 POST /assignments、GET /assignments?patient= 管理者維護照護關係/主治唯一(24 項 #1、#12) #7 #8
7 POST /orders/{id}/void、POST /compositions/{id}/void 誤建不刪、留紀錄(稽核上等同刪除) #15
8 通用 POST /batch(交易)與 GET /capabilities 多筆同交易、前端依能力表顯示按鈕 #1 #2
9 GET/POST /encounters/{id}/diagnoses、GET/PUT /diagnoses/{id}、GET /diagnoses/{id}/history 設計稿「診斷」頁與診斷演變時間軸;舊的完全沒有診斷 #48–#51
10 GET /staff?q=、GET /staff/{id}(含職稱/科別/班別) 指定接班者、照會對象、登入後顯示職稱;舊的 /me 資訊不夠 #44–#47
11 GET /communications?patient=&category=&consultation=、GET /communications/{id} 共同照護頁要看某病人所有照會回覆;舊的只能按就醫查 #56 #58
12 PUT /goals/{id}、GET /goals/{id};科常用與 PUT /favorites 版本鎖;GET /order-sets/{id} 目標要能結案;兩台裝置改常用會互蓋;套組要能展開 #54 #55 #59 #60 #62 #64

4. 怎麼用這份