TL;DR
醫療系統警示功能的常見問題不是「警示太少」,是「警示太多」。當醫師被誤報轟炸到習慣按 dismiss,下次真有問題時也會 dismiss 掉 ── 這就是 alert fatigue(警示疲勞)。我在 ExClinCalc 的處方藥物交互檢查只實作 12 組關鍵組合,這是設計,不是窮盡。
背景:CDSS 警示的雙刃劍
臨床決策支援系統(CDSS)的核心功能之一就是主動警示:醫師開錯藥、漏看過敏史、處方對腎功能不良的劑量 ── 系統跳警告。
直觀想:警示越完整越安全。但實證研究說的不是這樣。
Ancker et al. (2017) 在 BMC Medical Informatics and Decision Making 發表的研究做了量化測量:
醫師被警示打斷越多次,警示的「忽略率(override rate)」越高。當忽略率超過 90%,警示系統等同沒裝。
這個發現顛覆了「警示越多越安全」的直覺。一個系統如果丟給醫師 50 個警示,其中 48 個是誤報、2 個是真問題 ── 真問題很可能跟誤報一起被 dismiss 掉。
真實數據:alert override rates
Ancker 的研究跟 follow-up 研究發現:
- 一般醫院 CDSS 警示的 override rate:85–95%
- 即使是「重要」警示(紅色)也常見 60–80% override
- 醫師被警示打斷的時間 average:每天 30+ 分鐘,多數是看一眼就 dismiss
這代表 ── 大多數 CDSS 警示功能在實務上是噪音。
我的設計取捨
知道這個前提後,我做 ExClinCalc 處方檢查時的核心問題不是「能撈多少組藥物交互?」,是「怎麼讓醫師看到警示就停下來,而不是反射 dismiss?」
三個設計原則
原則 1:稀少 + 重大
只警示最常見、最致命的組合。例如:
- NSAIDs + ACEI/ARB(腎傷害 + 高血鉀)
- Warfarin + Aspirin(出血風險倍增)
- ACEI + 高血鉀利尿劑(致命高血鉀)
- 部分 CYP3A4 強抑制 / 誘導劑組合
12 組不是窮盡 ── 是「醫師看到絕不會 dismiss 的那一組」。
原則 2:分級警示
不是所有警示都同等緊急。我用兩層:
🔴 紅色高優先:12 組關鍵組合,必須點確認才能繼續
🟡 黃色提示:劑量 / 給藥時機提醒,可帶過
紅色警示稀少 + 強,醫師看到 = 停下來。強訊號不能稀釋。
原則 3:脈絡感知
同一組藥物在不同病人脈絡下的風險不同。例如 NSAIDs + ACEI:
- 對 30 歲健康人 + 短期使用 → 風險低
- 對 70 歲 CKD G3a 病人 → 高風險
我的系統會看病人現有 eGFR 跟年齡,分級警示的緊急程度。情境化警示比一刀切警示誤報率低很多。
為什麼不接 FDA OpenFDA API 撈所有交互?
這個問題我自己問過自己。台灣食藥署、FDA OpenFDA、UpToDate 都有完整藥物交互清單,少則幾百組、多則上千組。接進去不是技術問題。
不接的理由很現實:
- 沒分級數據:FDA OpenFDA 的清單沒區分「嚴重組合」vs「理論可能交互但臨床罕見」。一律警示等同 alert fatigue。
- 缺脈絡判斷:FDA 的清單是藥物層級,不看病人。要做情境化警示得自己再過一層規則引擎。
- 更新節奏不可控:FDA 清單一更新可能新增上百組。我的系統如果直接 sync,可能某天醫師突然多了 50 個新警示,然後習慣全部 dismiss。
我的選擇:寧願覆蓋率低,但每個警示都值得停下來。
開放問題:怎麼擴充而不破壞
我的 12 組設計目前夠用,但顯然不能永遠停在 12 組。怎麼擴充?
我正在思考的方向:
方向 1:分層警示庫
Layer 1(紅色):12–20 組「絕對嚴重」── 醫師必看
Layer 2(黃色):100+ 組「需注意」── 預設關閉、醫師可開
Layer 3(資訊):上千組「理論交互」── 預設關閉、可查閱不警示
讓醫師自己選敏感度。關鍵是 default 不要過度。
方向 2:機構自訂
不同診所的病人組成不同。心臟科診所可能想開更多心血管藥物警示。讓管理員調整警示組合比中央決定更務實。
方向 3:實證學習
長期記錄每位醫師對每類警示的 override rate。如果某類警示某醫師 override > 90%,自動降級。讓系統學會「對這個醫師、這類警示是噪音」。
這個方向有 ML 介入空間,但要小心:自動降級不能涵蓋「絕對嚴重」這層 ── 只能降級可調的部分。
跟業界對比
我把 ExClinCalc 的警示策略跟現有商業 CDSS 比過:
| 系統 | 藥物交互組合數 | Override rate(業界估計) |
|---|---|---|
| Epic CDSS(美國大醫院) | 1000+ | 80–90% |
| Cerner | 1000+ | 80–90% |
| 台灣健保 IC 卡警示 | 數百 | 95%+ |
| ExClinCalc(我做的) | 12(紅色)+ 50(規劃黃色) | 目標 < 50% |
我故意走「少而強」路線。比較有沒有警示之外,還要看警示有沒有真的影響行為。
一個提醒
寫這篇不是要黑大型 CDSS。Epic / Cerner 都是業界頂尖團隊做的、有他們的需求脈絡(多醫院、多科、多保險方案)。我做的是中小型診所,目標客群、需求都不一樣。
但我希望這篇能讓更多人意識到:「裝越多警示」≠ 「越安全」。
醫療系統的設計應該以真實行為改變為目標,不是 feature checklist。Ancker 2017 跟後續研究說得很清楚 ── 少而強的警示,比多而吵的警示,更可能真的救人。
延伸閱讀
- Ancker et al. (2017). Effects of workload, work complexity, and repeated alerts on alert fatigue in a clinical decision support system. BMC Medical Informatics and Decision Making 17:36
- ExClinCalc Case Study ── 看 12 組警示在系統中的實作
- Kawamoto et al. (2005). BMJ — features critical to CDSS success ── 為什麼有些 CDSS 真的改變行為,多數沒有