你的醫療資料,你的對話機器人:SMART on FHIR 如何讓第三方應用安全存取病歷
資料來源:HL7 SMART App Launch Framework v2.2.0 規格書,及火線超人(FHIRLineBot) 專案串接 SMART Launcher FHIR Server 的實作經驗。
為什麼你應該關心這件事
想像一個場景:你在 LINE 上跟一個聊天機器人對話,它能即時告訴你最近一次的血壓數值、用藥紀錄,甚至上次看診的摘要。這些資料不是你手動輸入的,而是直接從醫院的電子病歷系統裡,經過你本人授權後,安全地顯示在你的手機上。甚至不需要經過 LINE Server 轉送。
這就是我正在做的事。
我開發了一個叫火線超人(FHIRLineBot) 的 LINE 聊天機器人,它透過一套國際標準,安全地從 FHIR 伺服器取得病人的醫療資料。這套標準叫做 SMART on FHIR。
這篇文章,我想用最簡單的方式讓大家理解這套標準背後的邏輯。只要你用過 LINE,就能理解。
先搞懂兩個關鍵字
FHIR 是什麼?
FHIR(Fast Healthcare Interoperability Resources)是一套由國際組織 HL7 制定的醫療資料交換標準。你可以把它想成「醫療界的共通語言」。
過去,每間醫院的電子病歷系統都說不同的「方言」。A 醫院的血壓資料格式和 B 醫院完全不一樣,要交換資料得寫大量的轉換程式。FHIR 的出現,就像訂了一本「醫療資料字典」,大家都用同一套格式來描述病人、用藥、檢驗結果這些醫療資源。
SMART 是什麼?
光有共通語言還不夠。如果任何 App 都能隨便讀取你的病歷及個資,那就是資安的大災難。
SMART(Substitutable Medical Applications, Reusable Technologies)是建立在 FHIR 之上的一套「授權框架」。它定義了第三方應用程式要怎麼證明自己的身分、取得病人的同意,然後在限定的範圍內存取醫療資料。
簡單說:FHIR 決定了資料長什麼樣子,SMART 決定了誰能看、怎麼看。
用生活比喻理解整個流程
整個 SMART on FHIR 的授權流程,其實跟日常生活中一個常見的場景非常相似:使用 Google 帳號登入第三方網站。
你一定有過這種經驗:打開一個新的 App 或網站,畫面上出現「用 Google 帳號登入」的按鈕。點下去,跳到 Google 的登入頁面,輸入密碼,Google 問你「這個 App 想要存取你的 email 和個人資料,你同意嗎?」,按了同意,就被導回原本的 App,登入完成。
SMART on FHIR 的邏輯完全一樣,只是場景從 Google 換成了醫院的 FHIR 伺服器:
| Google 登入 | SMART on FHIR |
|---|---|
| 你的 Google 帳號 | 你在醫院的病歷資料 |
| 第三方 App(例如 GitHub、Notion) | 醫療應用程式(例如火線超人 FHIRLineBot) |
| Google 的登入畫面 | FHIR 伺服器的授權畫面 |
| 「允許存取 email」 | 「允許讀取血壓和用藥紀錄」 |
| 登入成功,可以使用 App | 授權成功,App 可以讀取你的病歷 |
背後用的技術協定也一樣,都叫做 OAuth2。這是一套在網路世界被廣泛使用的授權標準,不是醫療領域發明的,而是整個網路產業共同採用的做法。SMART on FHIR 把它應用在醫療場景,再加上一些醫療專屬的安全要求。
實際流程:火線超人(FHIRLineBot) 的授權流程
讓我用火線超人(FHIRLineBot) 來說明。這個 LINE 聊天機器人連接的是一個需要驗證的 FHIR 伺服器,以下是病人從頭到尾完成授權的完整流程。
一、病人發起連結請求
病人在 LINE 聊天室裡輸入指令,告訴機器人:「我想把我的病歷資料連結到這個聊天機器人。」
機器人會產生一個專屬的授權連結,傳送給病人。
二、頁面跳轉到 FHIR 伺服器的授權頁面
病人點開連結後,瀏覽器會跳轉到 FHIR 伺服器的授權頁面。這個頁面由醫院(或 FHIR 伺服器)控制,不是由聊天機器人控制。
關鍵在這裡:病人是在醫院的系統上輸入帳號密碼,不是在第三方 App 上。聊天機器人從頭到尾都不會碰到病人的密碼。
三、病人決定要授權哪些資料
登入後,授權頁面會清楚列出這個 App 想要存取的資料範圍。以火線超人(FHIRLineBot) 為例,它申請的權限包括:
- 讀取病人基本資料(Patient)
- 讀取生理量測(Observation),像血壓、血糖
- 讀取診斷紀錄(Condition)
- 讀取用藥紀錄(MedicationStatement)
- 讀取就診紀錄(Encounter)
病人可以選擇同意或拒絕。覺得某個 App 要的權限太多,可以不授權。
四、授權碼交換
病人按下同意後,FHIR 伺服器不會直接把病歷資料丟給聊天機器人。它先發出一個短暫的「授權碼」(Authorization Code),這個授權碼只有幾分鐘的效期。
接著,火線超人的後端伺服器拿著這個授權碼,加上自己的身分憑證,去跟 FHIR 伺服器「換」一張真正的通行證,叫做 Access Token。
為什麼要多這一步?因為授權碼是透過病人的瀏覽器傳遞的,瀏覽器端的安全性相對較低。真正重要的 Access Token 是在兩台伺服器之間直接傳遞,中間不經過病人的裝置,大幅降低被攔截的風險。
五、用 Access Token 存取醫療資料
拿到 Access Token 之後,聊天機器人就能在授權範圍內,向 FHIR 伺服器請求病人的醫療資料。每一次請求都要附上這張通行證,伺服器會驗證通行證是否有效、是否過期,以及這張通行證的存取範圍是否涵蓋了這次請求。
Access Token 有時效限制,通常是一個小時。過期之後,系統會用另一個叫 Refresh Token 的機制去換一張新的通行證,不需要病人重新登入授權。
六、資料呈現在 LINE 聊天室
機器人從 FHIR 伺服器取回結構化的醫療資料後,不只是原封不動地列出來。這些標準化的 FHIR 資料,正好是 AI 最擅長處理的素材。
機器人可以將資料送進地端部署的大型語言模型(LLM),或是串接 Claude、GPT 等雲端生成式 AI 服務,讓 AI 幫病人做進一步的分析和摘要。例如:把散落在不同日期的血壓數值整理成趨勢分析,用白話文解釋檢驗報告裡那些看不懂的醫學術語,或是根據多次就診紀錄歸納出一份簡明的健康摘要。
這裡有一個重要的資安考量:如果使用雲端 LLM 服務,醫療資料在送出之前必須經過去識別化或隱碼處理。病人的姓名、身分證字號、病歷號等可辨識個人身分的欄位,要先遮蔽或替換成代號,確保即使資料經過第三方雲端服務處理,也不會洩漏病人的真實身分。地端部署的 LLM 則沒有這個顧慮,資料全程不離開醫院的網路環境,這也是許多醫療機構優先選擇地端方案的原因。
對病人來說,整個過程就是點了一個連結、登入、按同意,之後就能在 LINE 裡查看自己的醫療紀錄,甚至得到 AI 輔助的個人化健康分析。FHIR 提供了標準化的資料,SMART 確保了安全的存取,AI 則讓這些資料真正變得「看得懂、用得上」。
幾個你可能會有的疑慮
這樣安全嗎?
SMART on FHIR 在安全性上做了多層防護:
- 密碼不經過第三方:你的醫院帳號密碼只會在醫院的授權頁面上輸入,聊天機器人完全接觸不到。
- 最小權限原則:App 只能存取你明確授權的資料類型,不能偷看其他東西。
- 通行證有時效:Access Token 會過期,不是拿到一次就永遠能用。
- PKCE 防護:這是防止授權碼在傳遞過程中被攔截冒用的機制。火線超人(FHIRLineBot) 在產生授權請求時會同時產生一組「驗證碼」,只有持有這組驗證碼的人才能完成後續的通行證交換。
- 加密儲存:取得的 Token 在火線超人機器人的資料庫中是加密儲存的,即使資料庫外洩也無法直接利用。
跟健保快易通有什麼不同?
健保快易通是衛福部開發的官方 App,它直接連接健保署的資料庫。SMART on FHIR 則是一套開放標準,任何開發者都能基於這套標準開發應用,連接任何支援 FHIR 的醫療系統。
差別在於:健保快易通是「一個 App 對一個系統」,SMART on FHIR 讓「無數個 App 對無數個系統」成為可能。就像是從只能用官方 App 查銀行帳戶,變成任何合格的記帳軟體都能在你授權後讀取你的銀行交易紀錄。
醫院為什麼要支援這個?
對醫院來說,支援 SMART on FHIR 意味著不再需要為每一個第三方應用寫客製化的介面。只要 FHIR 伺服器架好、授權機制設定好,任何符合標準的 App 都能安全地串接,大幅降低整合的成本和時間。
在美國,聯邦法規已經要求醫療機構必須支援 SMART on FHIR,讓病人能透過自己選擇的 App 存取自己的醫療紀錄。台灣雖然還沒有強制規定,但衛福部推動的 TW Core IG 已經在建立台灣版的 FHIR 標準,方向是一致的。
從技術標準看見醫療的未來
我在做火線超人(FHIRLineBot) 這個專案的過程中,最深的體會是:真正改變醫療資訊生態的不是某一個超級 App,而是一套大家都願意遵循的開放標準。
當醫療資料有了共通的格式(FHIR),當存取機制有了統一的規範(SMART),開發者就能專注在「怎麼把資料用得更好」這件事上,不用花八成的時間處理格式轉換和串接問題。
一個聊天機器人能讀取你的血壓紀錄,一個穿戴裝置 App 能上傳你的心率資料回醫院,一個 AI 助手能幫你整理散落在不同醫院的就診紀錄。這些應用的前提,都是有一套被信任的授權機制,讓病人自己決定誰能看到自己的資料。
SMART on FHIR 就是這套機制。
它不新,OAuth2 在網路世界已經運作了十幾年。它不難,核心邏輯跟你用 Google 帳號登入第三方網站一模一樣。但它在醫療領域的落地,意味著病人終於有機會成為自己醫療資料的真正主人。
這,才是智慧醫療最重要的一步。