Chuyển đến nội dung chính

第 2 課:FHIR R5 概述 - 架構與設計原則

FHIR 架構(資源、資料類型、可擴展性、RESTful API、訊息傳遞、文件)、80/20 設計原則、FHIR 成熟度模型 (FMM)、FHIR R4 與 R5 的比較、規格中的模組。

🏗️ 建築 — 第 2 課 第 2 課:FHIR R5 概述 - 架構和 設計原則

HL7 FHIR - 基礎到進階醫療資料標準

第 1 部分:HL7 和 FHIR 平台

亞洲開發網

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帶來了很多改進:

特點R4R5
訂閱基於標準的訂閱基於主題的訂閱 (訂閱主題)
工作流程任務基本新的運輸資源,改進的工作流程模式
實證醫學限制新證據、證據變數、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"]}]
}

兩條重要規則:

  1. 接收系統必須能夠讀取資源 即使你不理解擴展(優雅的處理)

  2. 擴展不得改變語義 基本元素的數量(modifierExtension 除外)

11. 總結

在這篇文章中,我們了解到:

  • FHIR架構 包括許多層:基礎→資料類型→資源→交換→設定檔→IG

  • 資源 FHIR R5作為基本單元,擁有157種資源類型

  • 80/20 規則:基本標準解決 80%,擴充解決 20%

  • 3個範式:REST(最受歡迎)、訊息傳遞、文檔

  • FMM:評估成熟度水平,優先考慮資源規範

  • R4 與 R5:R4比較穩定,R5有許多新功能

  • 參考文獻:如何將資源連結到數據網路中

  • 敘事:人類可讀的 HTML 部分,用於臨床安全

  • 可擴展性:不違反標準的靈活擴展機制

下節課我們將 練習設定環境:HAPI FHIR 伺服器、Postman、FHIR 工具 — 並測試您的第一個 CRUD 操作。