1.FHIR總體架構
FHIR 被設計為一個 平台。平台 — 不只是一個資料標準,而是一個完整的健康資訊交換生態系統。 FHIR架構包含以下層:
大樓地板
┌─────────────────────────────────────────┐
│ Implementation Guides (IGs) │ ← Tùy chỉnh cho ngữ cảnh
├─────────────────────────────────────────┤
│ Profiles / Extensions / Terminologies │ ← Ràng buộc & mở rộng
├─────────────────────────────────────────┤
│ Exchange (REST / Messaging / Docs) │ ← Cách trao đổi dữ liệu
├─────────────────────────────────────────┤
│ Resources (~157 loại) │ ← Đơn vị dữ liệu
├─────────────────────────────────────────┤
│ Data Types (Primitive/Complex) │ ← Kiểu dữ liệu
├─────────────────────────────────────────┤
│ Foundation (Infrastructure) │ ← Nền tảng chung
└─────────────────────────────────────────┘
2.資源-FHIR的基本單位
在 FHIR 中,一切都表示為 資源。資源是基本構建塊——就像關係資料庫中的“表”,但更加靈活。
所有資源的共同特徵
所有資源都有:
編號 — 邏輯標識符,伺服器內唯一
元。元 — 元資料(versionId、lastUpdated、設定檔、安全性、標籤)
隱含規則 — 參考特殊處理規則(很少使用)
語言。語言 — 資源的語言
大多數資源是 域資源 (繼承自Resource),新增:
文本。文字 — 敘述(人類可讀的 HTML 部分)
包含。包含 — 嵌入的資源
延伸 — 擴充數據
修飾符副檔名 — 擴充改變了 Resource 的語意
範例:患者資源 (JSON)
{
"resourceType": "Patient",
"id": "example-vn",
"meta": {
"versionId": "1",
"lastUpdated": "2026-03-30T10:00:00Z"
},
"text": {
"status": "generated",
"div": "<div xmlns=\"http://www.w3.org/1999/xhtml\">Nguyễn Văn A, Nam, 15/03/1985</div>"
},
"identifier": [
{
"system": "urn:oid:2.16.840.1.113883.4.56.10",
"value": "001085012345"
}
],
"active": true,
"name": [
{
"use": "official",
"family": "Nguyễn",
"given": ["Văn", "A"]
}
],
"gender": "male",
"birthDate": "1985-03-15",
"address": [
{
"use": "home",
"line": ["123 Lê Lợi"],
"city": "Thành phố Hồ Chí Minh",
"country": "VN"
}
]
}
157 資源依模組分類
FHIR R5 有 157 種資源類型,組織成模組:
| 模組 | 描述 | 典型資源 |
|---|---|---|
| 基金會 | 基礎設施 | 捆綁包、操作結果、二進位、參數 |
| 一致性 | 一致性規範 | 能力聲明、結構定義、搜尋參數 |
| 術語 | 術語 | 程式碼系統、值集、概念圖 |
| 安全性 | 安全性 | 出處、審核事件、同意、許可 |
| 行政管理 | 行政管理 | 患者、從業人員、組織、地點、遭遇 |
| 臨床 | 臨床 | 病情、觀察、過敏不耐症、程序 |
| 診斷 | 診斷 | 診斷報告、標本、影像研究 |
| 藥物 | 醫學 | 藥物、藥物請求、免疫接種 |
| 工作流程 | 流程 | 任務、預約、時間表、服務請求 |
| 金融 | 金融 | 索賠、承保範圍、利益解釋 |
3. 80/20設計原則
FHIR 應用以下理念: 解決基本標準中 80% 的常見用例,透過擴充和設定檔允許剩餘 20%。
這意味著:
基本資源夠簡單 ——不要試圖在每一個特殊情況下都死記硬背
擴充機制 - 當您需要更多數據時,使用擴充功能而不是標準更改
公司簡介 — 當需要更嚴格的限制時,使用 StructureDefinition
例如,基本資源患者沒有「CCCD號碼」欄位(僅在越南使用),但您可以透過擴充功能添加它或使用 識別符 與適當的系統。
4. 三種資料交換範式
FHIR支援3種資料交換方式,適合不同的情況:
4.1. RESTful API
最常見的方式,基於 HTTP 方法:
# Đọc thông tin bệnh nhân
GET /Patient/123
# Tạo bệnh nhân mới
POST /Patient
Content-Type: application/fhir+json
{...}
# Cập nhật
PUT /Patient/123
{...}
# Tìm kiếm
GET /Patient?family=Nguyen&birthdate=1985-03-15
# Xóa
DELETE /Patient/123
使用時: Web/行動應用程式、患者入口網站、資料查詢、SMART 應用程式。
4.2.訊息傳遞
在系統之間傳送訊息(類似 HL7 v2 但使用 FHIR 資源):
{
"resourceType": "Bundle",
"type": "message",
"entry": [
{
"resource": {
"resourceType": "MessageHeader",
"eventCoding": {
"system": "http://example.org/events",
"code": "admit-notification"
},
"source": { "endpoint": "http://hospital-a.vn/fhir" }
}
},
{
"resource": {
"resourceType": "Patient",
"id": "123"
}
}
]
}
使用時: 事件驅動的交換(入院、出院、檢查結果),與遺留系統整合。
4.3.文件
建立結構化醫療文件(類似 CDA 但使用 FHIR):
{
"resourceType": "Bundle",
"type": "document",
"entry": [
{
"resource": {
"resourceType": "Composition",
"title": "Tóm tắt xuất viện",
"type": {
"coding": [{
"system": "http://loinc.org",
"code": "18842-5",
"display": "Discharge summary"
}]
},
"section": [...]
}
}
]
}
使用時: 出院文件、病史摘要、轉診文件、國際病患摘要。
5.FHIR成熟度模型(FMM)
FHIR 中的每個資源都有一個從 0 到正常 (N) 的成熟度等級 (FMM):
| FMM | 等級 | 意義 |
|---|---|---|
| 0 | 吃水 | 剛剛提出,尚未實施 |
| 1 | 草稿(已測試) | 至少有 1 個實現 |
| 2 | 試用 | 在 Connectathon 上測試 |
| 3 | 試用(已驗證) | 已經有很多實際的實現 |
| 4 | 試試(同意) | 符合品質標準,標準準備 |
| 5 | 試用(已發布) | 在 2 個以上投票週期中發布 |
| 氮 | 規範性 | 穩定、向後相容 — 無需更改 |
部分資源已到達 規範性 在 R5 中:
病人 (N), 觀察 (N), 捆綁包 (N), 能力聲明 (N)
結構定義 (N), 值集 (N), 編碼系統 (N)
經營成果 (N), 二進位 (N), 參數 (N)
為專案選擇資源時,應優先選擇FMM≥3或Normal的資源,以確保穩定性。
6. FHIR R4 與 R5 — 重要變化
R4 仍然是最常用的版本(因為美國的許多法規都是基於 R4)。 R5帶來了很多改進:
| 特點 | R4 | R5 |
|---|---|---|
| 訂閱 | 基於標準的訂閱 | 基於主題的訂閱 (訂閱主題) |
| 工作流程 | 任務基本 | 新的運輸資源,改進的工作流程模式 |
| 實證醫學 | 限制 | 新證據、證據變數、ArtifactAssessment |
| 新資源 | — | 權限、庫存項目、庫存報告、營養攝取量 |
| 觀察 | 基於組件的 | 改進觸發方式、實例化Canonical |
| 搜尋 | 標準型 | _filter、_sort 增強功能 |
| 類型 | — | CodeableReference(新),integer64 |
推薦:
美國新項目:使用 R4 (因為美國核心授權)
新的非約束性項目:注意事項 R5 (更新,更多功能)
越南項目: R4 或 R5 都適合(尚無具體要求)
7. FHIR 規格中的模組
FHIR 規格分為主要模組:
基礎模組
技術基礎:資源定義、資料類型、擴充功能、REST API、訊息傳遞、文件、敘述、分隔。
實施者支援模組
部署支援:下載、測試工具、實施指南註冊、驗證。
安全和隱私模組
安全性:授權、身分驗證、安全標籤、審核、同意、出處。
一致性模組
一致性規格:CapabilityStatement、StructureDefinition、OperationDefinition、SearchParameter、實作指南。
術語模組
術語:CodeSystem、ValueSet、ConceptMap、NamingSystem、術語操作($validate-code、$expand、$lookup、$translate)。
管理模組
行政管理:病患、從業人員、組織、地點、醫療保健服務、端點、設備。
臨床模組
臨床模組包括:臨床摘要(病情、過敏不耐症、手術)、診斷(觀察、診斷報告)、藥物、護理提供(護理計劃、目標)、工作流程(任務、預約)。
金融模組
醫療財務:承保範圍、索賠、福利說明、帳戶、發票。
8. 資源引用-資源之間的連結
FHIR 中的資源連結在一起 參考文獻。這是創建醫療數據網路最重要的機制。
{
"resourceType": "Observation",
"id": "blood-pressure",
"status": "final",
"code": {
"coding": [{
"system": "http://loinc.org",
"code": "85354-9",
"display": "Blood pressure panel"
}]
},
"subject": {
"reference": "Patient/example-vn",
"display": "Nguyễn Văn A"
},
"encounter": {
"reference": "Encounter/visit-2026-03-30"
},
"performer": [{
"reference": "Practitioner/dr-tran"
}],
"effectiveDateTime": "2026-03-30T09:00:00+07:00",
"component": [
{
"code": {
"coding": [{
"system": "http://loinc.org",
"code": "8480-6",
"display": "Systolic blood pressure"
}]
},
"valueQuantity": {
"value": 120,
"unit": "mmHg",
"system": "http://unitsofmeasure.org",
"code": "mm[Hg]"
}
},
{
"code": {
"coding": [{
"system": "http://loinc.org",
"code": "8462-4",
"display": "Diastolic blood pressure"
}]
},
"valueQuantity": {
"value": 80,
"unit": "mmHg",
"system": "http://unitsofmeasure.org",
"code": "mm[Hg]"
}
}
]
}
在上面的例子中:
主題。主題→ 連結到 病人相遇。遭遇→ 連結到 相遇 (參觀)表演者→ 連結到 從業者 (醫生措施)
9. 敘述-人類可讀的部分
每個 DomainResource 可以包含部分 敘事 — HTML 代表人類可以閱讀的資源內容。這是一個重要的功能 臨床安全性:
{
"text": {
"status": "generated",
"div": "<div xmlns='http://www.w3.org/1999/xhtml'><p>Huyết áp: 120/80 mmHg</p><p>Bệnh nhân: Nguyễn Văn A</p><p>Ngày đo: 30/03/2026</p></div>"
}
}
敘述狀態可以是:
產生的— 根據結構化資料創建擴充— 包含來自擴充功能的訊息額外的。額外的— 具有未包含在結構化資料中的附加信息空的— 沒有內容(包含的資源中)
10. 擴展性-FHIR的擴展機制
這是 FHIR 最強大的功能之一。當您需要標準中未包含的其他數據時,可以使用它 擴充:
{
"resourceType": "Patient",
"id": "vn-patient",
"extension": [
{
"url": "http://fhir.vn/StructureDefinition/patient-ethnicity",
"valueCodeableConcept": {
"coding": [{
"system": "http://fhir.vn/CodeSystem/vn-ethnicity",
"code": "01",
"display": "Kinh"
}]
}
},
{
"url": "http://fhir.vn/StructureDefinition/patient-cccd",
"valueString": "001085012345"
}
],
"name": [{"family": "Nguyễn", "given": ["Văn", "A"]}]
}
兩條重要規則:
接收系統必須能夠讀取資源 即使你不理解擴展(優雅的處理)
擴展不得改變語義 基本元素的數量(modifierExtension 除外)
11. 總結
在這篇文章中,我們了解到:
FHIR架構 包括許多層:基礎→資料類型→資源→交換→設定檔→IG
資源 FHIR R5作為基本單元,擁有157種資源類型
80/20 規則:基本標準解決 80%,擴充解決 20%
3個範式:REST(最受歡迎)、訊息傳遞、文檔
FMM:評估成熟度水平,優先考慮資源規範
R4 與 R5:R4比較穩定,R5有許多新功能
參考文獻:如何將資源連結到數據網路中
敘事:人類可讀的 HTML 部分,用於臨床安全
可擴展性:不違反標準的靈活擴展機制
下節課我們將 練習設定環境:HAPI FHIR 伺服器、Postman、FHIR 工具 — 並測試您的第一個 CRUD 操作。