iT邦幫忙

2026 iThome 鐵人賽

DAY 2
0
Software Development

《醫資生的 FHIR 30日入門:用 Postman 讀懂醫療資料交換》系列 第 26

Day 26|Profile 與 Extension:FHIR 為什麼還需要在地規則?

  • 分享至 

  • xImage
  •  

前幾天介紹了 Patient、Observation、Encounter、Condition、MedicationRequest 與 DiagnosticReport 等常見的 FHIR Resource。

看到這裡,可能會產生一個疑問:

既然 FHIR 已經定義好資料格式,為什麼不同國家、醫院或專案還需要制定自己的規則?

原因是 FHIR 是一套提供全球使用的標準,必須保留足夠的彈性,才能因應不同地區的醫療制度。然而,彈性太大也可能造成另一個問題:即使大家都使用 FHIR,實際建立出來的資料仍然可能不一致。

因此,FHIR 提供了 Profile 與 Extension,讓各地能在共同標準上制定更明確的使用規則。


FHIR 標準為什麼不能把所有規則都定死?

世界各國的醫療環境並不相同,例如:

  • 身分證明方式不同
  • 地址格式不同
  • 醫療代碼系統不同
  • 保險制度不同
  • 法規要求不同
  • 醫療作業流程不同

以 Patient Resource 為例,FHIR 提供了病歷號、姓名、性別、生日、地址及聯絡方式等欄位。

但是,FHIR 不可能直接規定全世界都必須使用同一種身分證號碼,也無法要求每個國家的地址都使用相同格式。

所以,FHIR 的基本規格比較像是一套共同語言,先定義大家都能理解的資料架構,再由不同地區根據實際需求補充規則。


彈性太大可能造成什麼問題?

假設兩間醫院都使用 Patient Resource 記錄病人資料。

甲醫院可能只填寫:

  • 病歷號
  • 姓名
  • 出生日期

乙醫院可能填寫:

  • 身分證字號
  • 姓名
  • 性別
  • 出生日期
  • 地址
  • 電話

兩邊的資料都可能符合基本的 FHIR 規格,但當系統需要交換資料時,仍然會遇到問題。

例如,接收端可能需要使用身分證字號確認病人身分,但傳送端沒有提供這項資料。又或者兩邊雖然都有填寫識別碼,卻使用不同的代碼或表示方式。

這表示:

使用同一套 FHIR Resource,不一定代表資料可以直接互通。

FHIR 解決了基本結構的問題,而 Profile 則進一步解決「這個情境應該如何使用該結構」的問題。


什麼是 Profile?

Profile 可以翻譯成「規範設定」或「實作規範中的資料限制」。

它是在原本的 FHIR Resource 上增加更明確的使用規則,例如:

  • 哪些欄位一定要提供
  • 哪些欄位可以不提供
  • 一個欄位最多可以出現幾次
  • 應使用哪一套代碼系統
  • Reference 可以連結到哪一種 Resource
  • 特定欄位應該使用什麼格式

Profile 並不是創造一種全新的 Resource,而是針對既有的 Resource 加上限制或說明。

可以把它想像成填寫表單。

FHIR Resource 是一張通用表單,上面準備了許多可能使用的欄位;Profile 則是某個單位針對特定用途制定的填寫規則,告訴使用者哪些欄位必填、應該填什麼,以及資料要用什麼格式呈現。


Profile 如何限制 Resource?

FHIR Resource 中的欄位通常會標示基數,也就是一個欄位最少與最多可以出現幾次。

常見的表示方式如下:

基數 意義
0..1 可以不出現,最多出現一次
1..1 必須出現,而且只能出現一次
0..* 可以不出現,也可以出現多次
1..* 至少出現一次,也可以出現多次

假設原始的 Patient Resource 規定某個欄位是 0..*,代表它不是必填,而且可以重複出現。

某個 Profile 可以根據實際需求,將它限制成 1..1,表示在這項應用中,該欄位必須填寫,而且只能提供一筆。

不過,Profile 通常只能讓規則變得更嚴格,不能違反原始 Resource 的基本定義。例如,原始規格最多只允許一筆資料,Profile 就不能把它改成可以出現多筆。


用 Patient Profile 理解在地規則

假設某個地區要制定一套病人基本資料交換規範,可能會在 Patient Profile 中要求:

  • 必須提供病人的識別碼
  • 識別碼必須註明所屬系統
  • 必須提供姓名
  • 必須提供出生日期
  • 性別必須使用指定代碼
  • 地址必須符合當地格式
  • 某些欄位不允許使用

原本的 Patient Resource 提供通用架構,Profile 則把這些欄位縮小到特定地區真正需要的範圍。

因此,當不同醫療機構都遵循同一個 Profile 時,接收資料的一方會更容易預測資料內容,也能降低雙方各自解讀的情況。


Profile 不只是規定必填欄位

Profile 的功能不只有決定欄位是否必填,也可以限制資料所使用的代碼。

例如 Observation Resource 的 code 用來表示觀察或檢驗項目。原始 FHIR 規格允許使用不同代碼系統,但某個 Profile 可以進一步規定:

  • 優先使用 LOINC
  • 只能使用指定的代碼集合
  • 特定檢驗項目必須使用特定代碼
  • 單位必須使用統一的表示方式

這類規則可以減少「名稱看起來相同,但系統無法確定是不是同一件事」的問題。

Profile 也能限制 Reference 的連結對象。例如,某個欄位雖然原本可以連結多種 Resource,但在特定 Profile 中,可以規定只能連結到符合指定 Profile 的 Patient 或 Organization。


什麼是 Extension?

即使 FHIR 已經提供許多欄位,仍然不可能預先涵蓋所有國家、醫院及專案的特殊需求。

當標準 Resource 沒有適合的欄位時,就可能使用 Extension,也就是「擴充欄位」。

Extension 的目的,是在不直接修改 FHIR 核心規格的情況下,補充特定情境需要的資料。

例如,某個地區可能需要記錄一項具有在地制度特色的資訊,但 Patient Resource 中沒有對應欄位。這時就可以透過 Extension 表達,而不需要另外發明一種與 FHIR 不相容的資料格式。


Extension 並不是隨便增加欄位

Extension 雖然代表擴充,卻不是讓使用者任意放入資料。

一個正式的 Extension 通常需要清楚定義:

  • Extension 的用途
  • 唯一識別網址
  • 可以使用在哪些 Resource
  • 資料的型別
  • 出現次數
  • 使用限制
  • 資料代表的意義

其中,Extension 的網址非常重要。它不只是一般的網頁連結,也扮演識別這項定義的角色。

接收端看到這個網址後,才能知道該 Extension 代表什麼概念,而不是只看到一個無法理解的自訂欄位名稱。


Profile 與 Extension 有什麼不同?

兩者經常一起出現,但用途並不相同。

項目 Profile Extension
主要用途 限制既有 Resource 的使用方式 補充原始 Resource 沒有的資料
是否建立新欄位 通常不會 會增加擴充內容
可以做什麼 規定必填欄位、出現次數、代碼與 Reference 表達特殊或在地化資訊
使用目的 提高資料一致性 保留 FHIR 的擴充能力
兩者關係 可以規定應使用哪些 Extension Extension 可被納入 Profile

簡單來說:

Profile 是替既有格式制定更明確的規則;Extension 是在既有格式不足時補充新的資料內容。


什麼情況應該使用 Extension?

並不是遇到任何新需求都要立刻建立 Extension。

在考慮擴充之前,通常應該先確認:

  1. 原始 Resource 是否已經有適合的欄位。
  2. 其他 Resource 是否已經能表達這項資訊。
  3. 是否有官方或既有實作指南定義過相同的 Extension。
  4. 這項資料是否真的需要在系統之間交換。
  5. 自訂 Extension 是否會影響其他系統理解資料。

如果每間醫院都自行建立意思相近、定義不同的 Extension,反而會再次造成資料無法互通。

因此,能使用既有標準欄位時,通常應優先使用標準欄位;確實沒有合適方式時,再考慮採用已公開定義的 Extension。


什麼是 Implementation Guide?

Profile 與 Extension 通常不會單獨存在,而是被整理在 Implementation Guide,簡稱 IG,也就是「實作指南」中。

一份 FHIR Implementation Guide 可能包含:

  • 使用情境
  • 交換流程
  • Profile
  • Extension
  • ValueSet
  • CodeSystem
  • 範例資料
  • 欄位說明
  • 驗證規則

Profile 告訴我們單一 Resource 應該如何調整,Implementation Guide 則從整體應用情境說明一套 FHIR 規範應該如何使用。

因此,當一個專案表示自己「使用 FHIR」時,還需要繼續確認它使用的是哪個版本、遵循哪一份 Implementation Guide,以及套用了哪些 Profile。


為什麼在地化仍然很重要?

FHIR 希望建立跨系統、跨機構甚至跨國家的醫療資料交換基礎,但醫療制度本身具有高度在地性。

例如,台灣可能有自己的:

  • 病人識別方式
  • 行政區域與地址格式
  • 醫事機構代碼
  • 醫療人員識別資料
  • 健保相關制度
  • 中文姓名表示需求
  • 法規與資料交換要求

如果只使用原始 FHIR Resource,可能不足以清楚規定這些資料要如何呈現。

在地 Profile 的作用,就是在不脫離國際標準的前提下,讓 FHIR 能配合當地的醫療制度。

可以將三者的關係理解成:

  • FHIR Resource:國際通用的基本資料結構
  • Profile 與 Extension:特定用途或地區的調整方式
  • Implementation Guide:把相關規則整合成完整的使用指南

Profile 越多,互通性就越好嗎?

不一定。

Profile 能提升特定情境中的一致性,但如果不同單位各自制定大量彼此不相容的 Profile,仍然可能形成新的資料差異。

因此,制定 Profile 時需要在兩件事之間取得平衡:

  • 保留 FHIR 原有的通用性
  • 滿足實際情境的必要需求

一份好的 Profile,不是把所有欄位都設成必填,也不是加入大量自訂 Extension,而是清楚定義完成資料交換真正需要的內容。

同時,如果已經有國家級或產業共同採用的實作指南,優先使用共同規範通常比各醫院自行制定規則更有利於互通。


今日小結

FHIR 的基本規格需要適用於全球,因此保留了相當大的彈性。但不同系統若以不同方式使用這些欄位,即使都宣稱採用 FHIR,資料仍然可能無法順利交換。

Profile 可以限制既有 Resource 的使用方式,例如規定必填欄位、出現次數、代碼系統及 Reference 對象;Extension 則用來表達原始 Resource 沒有提供的特殊資訊。

這些定義通常會被整理在 Implementation Guide 中,形成特定國家、地區或應用情境共同遵循的規則。

了解 Profile 與 Extension 之後,就能發現 FHIR 的互通性不只來自共同的資料格式,也來自大家是否遵循同一套實作規範。

下一篇將介紹 Day 27|TW Core IG:台灣如何制定自己的 FHIR 規範?,進一步認識 FHIR 在台灣醫療環境中的在地化方式。


參考資料

  1. HL7 FHIR R4—Profiling FHIR
  2. HL7 FHIR R4—Extensibility
  3. HL7 FHIR R4—StructureDefinition
  4. HL7 FHIR R4—ImplementationGuide

上一篇
Day 25|DiagnosticReport:如何組成一份檢驗或檢查報告?
下一篇
Day 27|TW Core IG:台灣如何制定自己的 FHIR 規範?
系列文
《醫資生的 FHIR 30日入門:用 Postman 讀懂醫療資料交換》30
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言