警示疲勞 vs 安全:為什麼 ExClinCalc 只做 12 組藥物交互,不是上千組

藥物交互作用清單上千組,但我的系統只實作 12 組。這不是偷懶 ── 是基於 Ancker 2017 對警示疲勞的研究做的設計取捨。

#clinical-decision-support#alert-fatigue#drug-interaction#ux#patient-safety

重點摘要

醫療系統警示功能的常見問題不是「警示太少」,是「警示太多」。當醫師被誤報轟炸到習慣按 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 都有完整藥物交互清單,少則幾百組、多則上千組。接進去不是技術問題

不接的理由很現實:

  1. 沒分級數據:FDA OpenFDA 的清單沒區分「嚴重組合」vs「理論可能交互但臨床罕見」。一律警示等同 alert fatigue。
  2. 缺脈絡判斷:FDA 的清單是藥物層級,不看病人。要做情境化警示得自己再過一層規則引擎。
  3. 更新節奏不可控:FDA 清單一更新可能新增上百組。我的系統如果直接 sync,可能某天醫師突然多了 50 個新警示,然後習慣全部 dismiss。

我的選擇:寧願覆蓋率低,但每個警示都值得停下來


開放問題:怎麼擴充而不破壞

我的 12 組設計目前夠用,但顯然不能永遠停在 12 組。怎麼擴充?

我正在思考的方向:

方向 1:分層警示庫

Layer 1(紅色):12–20 組「絕對嚴重」── 醫師必看
Layer 2(黃色):100+ 組「需注意」── 預設關閉、醫師可開
Layer 3(資訊):上千組「理論交互」── 預設關閉、可查閱不警示

讓醫師自己選敏感度。關鍵是 default 不要過度。

方向 2:機構自訂

不同診所的病人組成不同。心臟科診所可能想開更多心血管藥物警示。讓管理員調整警示組合比中央決定更務實。

方向 3:實證學習

長期記錄每位醫師對每類警示的 override rate。如果某類警示某醫師 override > 90%,自動降級。讓系統學會「對這個醫師、這類警示是噪音」。

這個方向有 ML 介入空間,但要小心:自動降級不能涵蓋「絕對嚴重」這層 ── 只能降級可調的部分。


結論:警示策略的衡量單位

我希望讀完這篇的人記住一句話:「裝越多警示」≠ 「越安全」

警示系統的價值不在 feature checklist,而在真實改變了多少行為。Ancker 2017 跟後續研究都指向同一個結論:少而強的警示,比多而吵的警示,更可能真的救人。

我目前的 12 組設計絕對不是終點 ── 是對「警示疲勞」這個臨床現實做出來的、可以調整的起點。隨著實際導入回饋,警示組合會持續演化,但「以行為改變為目標」這條主軸不會變。


延伸閱讀