草案,未經院方核定。病人、角色與臨床數值皆為虛構;品項與代碼取自 B 目錄快照。
本文件不構成臨床建議,也不可用於真實病歷。
04 · 業務規則與狀態機
本章的規則全部來自 icu-vue 原型 src/domain/store.js 的單一 mutation 邊界,以及 29 份 S/N 規格的欄位註記。這些規則必須在伺服器強制,不能只靠前端。
每條規則有唯一編號,可直接作為測試案例編號。錯誤碼對應 05。
4.1 三軸狀態
藥物醫囑同時有三個彼此獨立的狀態。FHIR 的單一 status 裝不下,強行合併會產生臨床安全風險。
| 軸 |
內容 |
FHIR 表達 |
| 臨床狀態 |
這張醫囑目前是否有效 |
MedicationRequest.status:draft → active → stopped / cancelled |
| 本地簽署 |
醫師是否已簽 |
存在 Provenance.signature(targetReference 指向該版本) |
| HIS 傳輸 |
是否送出、HIS 是否接受 |
extension[hisTransmissionStatus]:notSent / sent / accepted / rejected / unknown |
合法組合
| 臨床 |
簽署 |
HIS 傳輸 |
意義 |
護理端可執行? |
draft |
無 |
notSent |
草稿 |
✗ |
draft |
有 |
notSent |
已簽未送 |
✗ |
draft |
有 |
sent |
已送出,等回應 |
✗ |
draft |
有 |
unknown |
回應未知 |
✗ |
draft |
有 |
rejected |
HIS 拒絕 |
✗ |
active |
有 |
accepted |
生效中 |
✓ |
stopped |
有 |
accepted |
已停止 |
✗ |
只有 active + accepted 才是可執行狀態(BR-MED-002)。任何其他組合,護理端建立 MedicationAdministration 一律拒絕。
HIS 狀態不是給藥狀態
規格 S11 對 MedicationChangeStatus 的原文警告:
D1 §3.10:1 新開立、2 審核、3 匯總領取、4 發放、5 急救車補充;均不是 eMAR 已給藥
因此 MedicationChangeStatus 的回推只能寫入 extension[hisTransmissionEvent],永遠不得建立或修改 MedicationAdministration。這是 BR-INT-004。
unknown 狀態(模擬 HIS 逾時)有特殊約束:禁止重送。必須先查明原請求結果,否則可能重複開立(BR-ORD-007)。
4.2 規則表
BR-AUTH · 角色與授權
| 編號 |
規則 |
HTTP |
錯誤碼 |
| BR-AUTH-001 |
操作者必須是已知的 PractitionerRole |
401 |
UNKNOWN-ACTOR |
| BR-AUTH-002 |
開立醫囑、判讀結果、核對執行、撰寫病歷限主責醫師(doctor 且非照會身分) |
403 |
ROLE-DOCTOR-ONLY |
| BR-AUTH-003 |
照會醫師可查閱指派病人的資料與回覆照會,不可開立醫囑或修改主治病歷 |
403 |
CONSULT-READ-ONLY |
| BR-AUTH-004 |
生理量測、給藥執行、輸注觀察限護理師 |
403 |
ROLE-NURSE-ONLY |
| BR-AUTH-005 |
必要溝通(Communication)醫師與護理師皆可新增 |
— |
— |
| BR-AUTH-006 |
作者身分不可指定。author/performer/requester 一律取自存取權杖,客戶端送的值被忽略 |
422 |
ACTOR-NOT-ASSIGNABLE |
BR-AUTH-006 對應規格原文「當次開立醫師帳號;不得任填其他醫師」。
BR-CTX · 病人與就醫情境
| 編號 |
規則 |
HTTP |
錯誤碼 |
| BR-CTX-001 |
除名單確認、情境切換等系統操作外,所有寫入必須帶有效 subject(Patient) |
422 |
PATIENT-REQUIRED |
| BR-CTX-002 |
目標病人必須在操作者的 CareTeam 內(照會醫師:必須有指派給他的照會) |
403 |
PATIENT-OUT-OF-SCOPE |
| BR-CTX-003 |
encounter 必須與 subject 一致;不一致時拒絕且不帶入任何草稿 |
422 |
ENCOUNTER-MISMATCH |
| BR-CTX-004 |
除名單確認本身外,寫入前必須已確認本班照護名單(存在該班別的 CareTeam 確認 Provenance) |
409 |
ROSTER-NOT-CONFIRMED |
| BR-CTX-005 |
引用來源(focus/basedOn/request)必須屬於同一病人 |
422 |
SOURCE-PATIENT-MISMATCH |
BR-ORD · 醫囑生命週期
| 編號 |
規則 |
HTTP |
錯誤碼 |
| BR-ORD-001 |
建立醫囑必須指定病程來源:同病人、同作者、已存在的 Composition |
422 |
PROGRESS-NOTE-REQUIRED |
| BR-ORD-002 |
$sign 只能簽自己建立且尚未簽署的醫囑 |
403 |
SIGN-OWN-DRAFT-ONLY |
| BR-ORD-003 |
$sign 時把病程來源的當下版本快照寫入 supportingInformation(帶版本 Reference) |
— |
— |
| BR-ORD-004 |
$submit 僅接受「已簽署且 hisTransmissionStatus=notSent」 |
409 |
SUBMIT-STATE-INVALID |
| BR-ORD-005 |
HIS 回應僅接受 accepted / rejected;accepted 時臨床狀態轉 active |
422 |
HIS-RESPONSE-INVALID |
| BR-ORD-006 |
已送出的醫囑不可就地修改內容;須取消後重新開立 |
409 |
ORDER-IMMUTABLE-AFTER-SUBMIT |
| BR-ORD-007 |
hisTransmissionStatus=unknown 時禁止重送,必須先查明原請求 |
409 |
RESEND-BLOCKED-UNKNOWN |
| BR-ORD-008 |
檢驗/檢查醫囑被 HIS 接受時,自動建立待回 DiagnosticReport(status=registered)與追蹤 Task |
— |
— |
| BR-ORD-009 |
一次批次建立的醫囑共用 orderSet 標記,但各自獨立簽署、送出、執行、回報 |
— |
— |
BR-MED · 給藥執行
| 編號 |
規則 |
HTTP |
錯誤碼 |
| BR-MED-001 |
藥品碼、給藥途徑必須帶 coding.system+code,且來自已同步目錄;只給 text 拒絕 |
422 |
CODE-REQUIRED |
| BR-MED-002 |
建立 MedicationAdministration 前,來源醫囑必須為 active + accepted |
409 |
ORDER-NOT-EXECUTABLE |
| BR-MED-003 |
status=completed 的藥物執行,verificationChecklist 五項必須全部為 true;不可由單次掃碼推定 |
422 |
FIVE-RIGHTS-INCOMPLETE |
| BR-MED-004 |
實際劑量或途徑與醫囑不同、或狀態非 completed 時,note(原因)必填 |
422 |
VARIANCE-REASON-REQUIRED |
| BR-MED-005 |
同一劑次(occurrence-id)至多一筆 completed。以 If-None-Exist 強制 |
200 |
DOSE-ALREADY-ADMINISTERED |
| BR-MED-006 |
實際執行時間必須落在該醫囑版本的有效期間 [period.start, period.end) |
422 |
TIME-OUT-OF-ORDER-PERIOD |
| BR-MED-007 |
status=completed 時 dosage.dose 與 dosage.route 必填;不得以醫囑預定值當作事實 |
422 |
ACTUAL-VALUE-REQUIRED |
| BR-MED-008 |
醫師核對(Provenance activity=clinical-review)的 reviewNote 必填;前次核對結論全部保留 |
422 |
REVIEW-NOTE-REQUIRED |
BR-OBS · 生理量測
| 編號 |
規則 |
HTTP |
錯誤碼 |
| BR-OBS-001 |
量測項目必須在支援清單內,數值必須為非負有限數 |
422 |
VALUE-INVALID |
| BR-OBS-002 |
血壓必須以單一 Observation 的兩個 component 表達,且兩子項同時提供 |
422 |
BP-COMPONENTS-REQUIRED |
| BR-OBS-003 |
缺值一律 dataAbsentReason,禁止送 0 代替 |
422 |
ZERO-AS-MISSING |
| BR-OBS-004 |
輸注速率觀察必須 partOf 一筆 accepted 醫囑的執行,且 notCountedAsIntake=true |
422 |
INFUSION-SOURCE-REQUIRED |
| BR-OBS-005 |
出入量平衡只在入量與出量都有紀錄時計算;缺一不計 |
— |
— |
BR-RPT · 檢驗結果
| 編號 |
規則 |
HTTP |
錯誤碼 |
| BR-RPT-001 |
DiagnosticReport 與其 Observation 一律由 HIS 同步;EMR 端不可建立或修改 |
422 |
READ-ONLY-SOURCE |
| BR-RPT-002 |
記錄已閱/判讀時,報告必須已回報(status=final 以上)且來源未缺漏 |
409 |
REPORT-NOT-AVAILABLE |
| BR-RPT-003 |
判讀(clinical-review)限主責醫師,reviewNote 必填 |
403 / 422 |
ROLE-DOCTOR-ONLY / REVIEW-NOTE-REQUIRED |
| BR-RPT-004 |
已閱、判讀、工作結案彼此獨立;任一項完成不影響其他待回項目 |
— |
— |
| BR-RPT-005 |
無 interpretation 的結果不得歸類為正常 |
— |
— |
BR-DOC · 病歷文件
| 編號 |
規則 |
HTTP |
錯誤碼 |
| BR-DOC-001 |
Progress Note 的 S/O/A/P 四段皆必填 |
422 |
SECTION-REQUIRED |
| BR-DOC-002 |
Admission Note 必填 CC/PI/PH/入院生命徵象/初步評估 |
422 |
SECTION-REQUIRED |
| BR-DOC-003 |
Discharge Summary 必填入出院日期與診斷、檢驗檢查、手術處置、已執行醫囑、住院經過、追蹤計畫、轉診建議 |
422 |
SECTION-REQUIRED |
| BR-DOC-004 |
$sign 只能簽自己的 preliminary 文件 |
403 |
SIGN-OWN-DRAFT-ONLY |
| BR-DOC-005 |
已簽文件不可修改;更正一律新建 Composition + relatesTo[replaces] + 更正原因必填 |
409 / 422 |
SIGNED-IMMUTABLE / AMEND-REASON-REQUIRED |
| BR-DOC-006 |
複製前一日病程時,來源必須是已簽且具完整 SOAP 的前一日病程 |
409 |
NO-COPYABLE-PROGRESS |
| BR-DOC-007 |
複製產生的草稿必須帶 copyTrace,保存時記錄哪些段落被修改。複製不視為已核對 |
— |
— |
| BR-DOC-008 |
自動帶入的內容一律保留來源編號(section.entry 帶版本 Reference) |
— |
— |
| BR-DOC-009 |
診斷碼必須是 active 的 ICD-10 目錄項 |
422 |
CATALOG-INACTIVE |
| BR-DOC-010 |
草稿依作者、病人、文件類型分開儲存,彼此不覆寫 |
— |
— |
BR-TASK · 臨床工作
| 編號 |
規則 |
HTTP |
錯誤碼 |
| BR-TASK-001 |
只有目前 owner 可更新工作狀態 |
403 |
TASK-NOT-OWNER |
| BR-TASK-002 |
結案(completed)必填 output(完成證據);若 focus 是檢驗報告,該報告必須已回報且已有判讀紀錄 |
422 / 409 |
EVIDENCE-REQUIRED / SOURCE-NOT-PROCESSED |
| BR-TASK-003 |
狀態異動一律追加歷程,不覆寫 |
— |
— |
BR-HO · 交班
| 編號 |
規則 |
HTTP |
錯誤碼 |
| BR-HO-001 |
交班摘要必填 |
422 |
SUMMARY-REQUIRED |
| BR-HO-002 |
只能更正自己且尚未被更正的最新交出版本;更正原因必填 |
409 / 422 |
HANDOVER-SUPERSEDED / AMEND-REASON-REQUIRED |
| BR-HO-003 |
接收者角色必須與交班角色相符(醫師交醫師、護理交護理) |
403 |
HANDOVER-ROLE-MISMATCH |
| BR-HO-004 |
接收後,交出者名下未完成的工作 owner 轉移給接收者;已完成的不動 |
— |
— |
| BR-HO-005 |
已被更正的版本不可接收;必須接收最新版本 |
409 |
HANDOVER-SUPERSEDED |
| BR-HO-006 |
同一版本不可重複接收 |
409 |
HANDOVER-ALREADY-RECEIVED |
| BR-HO-007 |
交班內容包含交出當下未結工作的快照;快照不隨後續變動而改 |
— |
— |
BR-CONS · 照會
| 編號 |
規則 |
HTTP |
錯誤碼 |
| BR-CONS-001 |
建立照會限主責醫師;受照會者必須是具科別的照會身分 |
403 / 422 |
ROLE-DOCTOR-ONLY / ASSIGNEE-INVALID |
| BR-CONS-002 |
只有被指派的照會醫師可回覆 |
403 |
CONSULT-NOT-ASSIGNEE |
| BR-CONS-003 |
已回覆的照會不可重複回覆 |
409 |
CONSULT-ALREADY-ANSWERED |
| BR-CONS-004 |
照會回覆內容必填 |
422 |
RECOMMENDATION-REQUIRED |
BR-CAT · 目錄
| 編號 |
規則 |
HTTP |
錯誤碼 |
| BR-CAT-001 |
active=false 的品項不可用於新開立;既有醫囑仍可讀回 |
422 |
CATALOG-INACTIVE |
| BR-CAT-002 |
開立時寫入 catalogSnapshot(含目錄版本與來源 SHA256) |
— |
— |
| BR-CAT-003 |
簽署前重新驗證品項仍有效;已停用則阻擋並要求重選 |
409 |
CATALOG-CHANGED |
| BR-CAT-004 |
中文譯名未核定,不得作為送 HIS 的識別依據 |
— |
— |
BR-TIME · 時間
| 編號 |
規則 |
HTTP |
錯誤碼 |
| BR-TIME-001 |
所有臨床時間必須帶時區位移 |
422 |
TIMEZONE-REQUIRED |
| BR-TIME-002 |
時間格式必須可解析為有效時點 |
422 |
TIME-INVALID |
| BR-TIME-003 |
記錄時間(recorded)由伺服器產生,與臨床時間(effective)分開儲存 |
— |
— |
BR-TIME-003 很重要:原型的執行紀錄同時存 at(實際執行時間,護理師填)與 recorded(記錄時間,系統產生)。兩者混用會讓補登紀錄看起來像即時紀錄。
4.3 狀態機
藥物醫囑
$sign $submit HIS accepted
[draft] ─────────────────► [signed] ──────► [sent] ──────────► [active]
│ │ │ │
│ cancel │ cancel │ HIS rejected │ stop
▼ ▼ ▼ ▼
[cancelled] [cancelled] [rejected] [stopped]
│
HIS timeout │
▼
[unknown] ──╳ 禁止重送
必須先查明原請求
給藥執行
醫囑 active+accepted
│
├─ 五對全核對 + 實際劑量/途徑 ──► [completed] (每劑次至多一筆)
├─ 原因必填 ─────────────────────► [on-hold](延遲)
└─ 原因必填 ─────────────────────► [not-done](未執行)
無任何紀錄 ≠ not-done。沒建立資源就是「尚未記錄」。
執行紀錄建立後不可修改(03 §3.2.2)。醫師核對以 Provenance 追加:
[completed] ──► Provenance(clinical-review, outcome=reviewed)
└─► Provenance(clinical-review, outcome=difference) → 產生追蹤 Task
檢驗醫囑 → 報告
ServiceRequest DiagnosticReport
[draft]
│ $sign / $submit
[active] ── HIS accepted ──► 自動建立 [registered](待回)
│ HIS 回報
▼
[final]
│
┌─────────────┼─────────────┐
▼ ▼ ▼
Provenance(READ) Provenance(review) Task[completed]
已閱 判讀/處理 結案(需證據)
三者獨立,不互相觸發。
病歷文件
[preliminary] ── $sign ──► [final] ── 更正 ──► 新 Composition [preliminary]
│ │ relatesTo[replaces]
└──────────────────────┘
舊版轉 [amended],內容保留
交班
交出 v1 [final] ──► Provenance(接收) ──► Task.owner 轉移
│
│ 更正(限自己、限未被更正)
▼
交出 v2 [final] relatesTo[replaces]→v1
│
└─► v1 不可再接收(BR-HO-005);v2 需重新接收
4.4 規則來源追溯
| 規則群 |
原型來源 |
規格畫面 |
| BR-AUTH |
store.js requireRole / requirePrimaryDoctor |
S01, S02 |
| BR-CTX |
store.js dispatch 前置檢查、confirmed |
S02, S03, N01 |
| BR-ORD |
order, catalogOrder, signOrder, sendOrder, hisResponse |
S11, S12 |
| BR-MED |
execute, reviewExecution |
N02, N07, S11 |
| BR-OBS |
measure, measureBP, infusion |
N03, N04, N05, N08 |
| BR-RPT |
reportReturn, readReport, processReport |
S13 |
| BR-DOC |
note, recordNote, signNote, amendNote, copyPreviousProgress |
S07, S08, S20, N09 |
| BR-TASK |
task, taskStatus |
S03, N01, S18 |
| BR-HO |
handover, receive |
N06 |
| BR-CONS |
consultRequest, consultRespond |
S15 |
| BR-CAT |
clinical.js search, snapshot |
S11, S12 |