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

第 14 課:FHIR 文件和訊息傳遞

FHIR 文件(組合資源、文件包、簽章)、FHIR 訊息傳遞(訊息標頭、訊息定義、訊息事件)、比較 REST 與訊息傳遞與文件、每個範例的使用案例。

🏗️ 建築 — 第 14 課 第 14 課:FHIR 文件和訊息傳遞

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

第 5 部分:整合、訊息傳遞與安全性

亞洲開發網

1. FHIR中三種範式交換數據

範式描述使用案例
RESTful API每個資源上的 CRUD 操作即時互動應用
文件資源集合構成了完整的「文件」。出院小結、轉院文件、病歷
訊息傳遞事件驅動,在系統之間發送訊息入院通知書、檢查結果、醫囑

2.FHIR 文件

FHIR 檔案是 捆綁類型“文檔”,第一個條目必須是 成分,後面跟著所有引用的資源。

作文資源

{
  "resourceType": "Composition",
  "id": "comp-discharge-001",
  "status": "final",
  "type": {
    "coding": [
      {
        "system": "http://loinc.org",
        "code": "18842-5",
        "display": "Discharge summary"
      }
    ],
    "text": "Tóm tắt xuất viện"
  },
  "subject": {
    "reference": "Patient/patient-001",
    "display": "Nguyễn Văn A"
  },
  "encounter": {
    "reference": "Encounter/encounter-inpatient-001"
  },
  "date": "2025-01-20T16:00:00+07:00",
  "author": [
    {
      "reference": "Practitioner/practitioner-001",
      "display": "BS. Trần Thị B"
    }
  ],
  "title": "Tóm tắt xuất viện - Nguyễn Văn A",
  "custodian": {
    "reference": "Organization/org-bvdk-001"
  },
  "section": [
    {
      "title": "Chẩn đoán",
      "code": {
        "coding": [
          {
            "system": "http://loinc.org",
            "code": "11535-2",
            "display": "Hospital discharge Dx Narrative"
          }
        ]
      },
      "text": {
        "status": "generated",
        "div": "

Tăng huyết áp độ 2, Đái tháo đường type 2

" }, "entry": [ {"reference": "Condition/cond-hypertension-001"}, {"reference": "Condition/cond-diabetes-001"} ] }, { "title": "Thuốc kê đơn khi xuất viện", "code": { "coding": [ { "system": "http://loinc.org", "code": "10183-2", "display": "Hospital discharge medications" } ] }, "entry": [ {"reference": "MedicationRequest/mr-amlodipine-001"}, {"reference": "MedicationRequest/mr-metformin-001"} ] }, { "title": "Kết quả xét nghiệm", "code": { "coding": [ { "system": "http://loinc.org", "code": "30954-2", "display": "Relevant diagnostic tests/lab data" } ] }, "entry": [ {"reference": "DiagnosticReport/dr-cbc-001"}, {"reference": "Observation/obs-hba1c-001"} ] } ] }

文件包

{
  "resourceType": "Bundle",
  "type": "document",
  "identifier": {
    "system": "http://hospital.vn/documents",
    "value": "DOC-20250120-001"
  },
  "timestamp": "2025-01-20T16:00:00+07:00",
  "entry": [
    {
      "fullUrl": "urn:uuid:comp-001",
      "resource": {
        "resourceType": "Composition"
      }
    },
    {
      "fullUrl": "urn:uuid:patient-001",
      "resource": {
        "resourceType": "Patient"
      }
    },
    {
      "fullUrl": "urn:uuid:cond-001",
      "resource": {
        "resourceType": "Condition"
      }
    }
  ]
}

文件規則

  1. Bundle.type = "文件"
  2. 第一個條目必須是作文
  3. 組合引用的所有資源必須位於捆綁包中
  4. 文件簽署後不可更改
  5. 可以進行數位簽章(捆綁包或來源中的簽名)

3.FHIR 訊息傳遞

訊息傳遞使用 捆綁類型“訊息” 與 訊息頭 進行第一個條目。

訊息頭資源

{
  "resourceType": "MessageHeader",
  "id": "msg-admission-001",
  "eventCoding": {
    "system": "http://terminology.hl7.org/CodeSystem/message-events",
    "code": "admin-notify"
  },
  "source": {
    "name": "HIS Bệnh viện ĐK TW",
    "endpoint": "https://his.bvdk.vn/fhir/$process-message"
  },
  "destination": [
    {
      "name": "Hệ thống BHXH",
      "endpoint": "https://api.bhxh.gov.vn/fhir/$process-message"
    }
  ],
  "focus": [
    {
      "reference": "Encounter/encounter-inpatient-001"
    },
    {
      "reference": "Patient/patient-001"
    }
  ],
  "reason": {
    "coding": [
      {
        "system": "http://terminology.hl7.org/CodeSystem/message-reasons-encounter",
        "code": "admit"
      }
    ],
    "text": "Thông báo nhập viện"
  }
}

訊息包

{
  "resourceType": "Bundle",
  "type": "message",
  "timestamp": "2025-01-15T14:30:00+07:00",
  "entry": [
    {
      "fullUrl": "urn:uuid:msg-001",
      "resource": {
        "resourceType": "MessageHeader"
      }
    },
    {
      "fullUrl": "urn:uuid:encounter-001",
      "resource": {
        "resourceType": "Encounter"
      }
    },
    {
      "fullUrl": "urn:uuid:patient-001",
      "resource": {
        "resourceType": "Patient"
      }
    }
  ]
}

發送訊息

POST /fhir/$process-message HTTP/1.1
Content-Type: application/fhir+json

{
  "resourceType": "Bundle",
  "type": "message",
  ...
}

4. 比較三種範式

標準休息文件訊息傳遞
型號請求/回應增刪改查不可變的包事件驅動
聯軸器鬆動無(獨立)鬆動
原子性交易捆綁整個文檔整個訊息
路由基於URL不適用基於端點
時機同步不適用非同步或同步
相容於HL7 v2型號不同類似 CDA類似 HL7 v2 訊息

5. 總結

  • 文件 — 組合+捆綁“文件”,獨立,不可變,可簽名

  • 訊息傳遞 — MessageHeader + Bundle“訊息”,事件驅動,$process-message

  • 休息 仍然是最受歡迎的範例,但文件和訊息對於許多傳統醫療用例至關重要