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

レッスン 14: FHIR ドキュメントとメッセージング

FHIR ドキュメント (構成リソース、ドキュメント バンドル、署名)、FHIR メッセージング (メッセージ ヘッダー、メッセージ定義、メッセージ イベント)、REST 対メッセージング対ドキュメントの比較、各パラダイムのユースケース。

🏗️ アーキテクチャ — レッスン 14 レッスン 14: FHIR ドキュメントとメッセージング

HL7 FHIR - 基本から高度な医療データ標準

パート 5: 統合、メッセージング、セキュリティ

xdev.asia

1. 3 つのパラダイムが FHIR でデータを交換する

パラダイム説明ユースケース
RESTful API各リソースに対する CRUD 操作リアルタイム対話型アプリケーション
書類Resources コレクションは完全な「ドキュメント」を形成します。退院概要、転送書類、医療記録
メッセージングイベント駆動型、システム間でメッセージを送信入院通知、検査結果、指示書

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. 最初のエントリはCompositionである必要があります
  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. 3 つのパラダイムを比較する

基準休息書類メッセージング
モデルリクエスト/レスポンス CRUD不変パッケージイベント駆動型
カップリング緩いなし (自己完結型)緩い
原子性トランザクションバンドル文書全体メッセージ全体
ルーティングURLベース該当なしエンドポイントベース
タイミング同期該当なし非同期または同期
HL7 v2と互換性があります別のモデルCDAに似ているHL7 v2 メッセージに類似

5. まとめ

  • 書類 — 構成 + バンドル「ドキュメント」、自己完結型、不変、署名可能

  • メッセージング — MessageHeader + バンドル「メッセージ」、イベント駆動型、$process-message

  • 休息 は依然として最も人気のあるパラダイムですが、ドキュメントとメッセージングは多くの従来の医療ユースケースに不可欠です