臺灣核心實作指引(TW Core IG)
0.3.2 - Ci-Build Trial Use

臺灣核心實作指引(TW Core IG), published by 衛生福利部. This guide is not an authorized publication; it is the continuous build for version 0.3.2 built by the FHIR (HL7® FHIR® Standard) CI Build. This version is based on the current content of https://github.com/cctwFHIRterm/MOHW_TWCoreIG_Build/ and changes regularly. See the Directory of published versions

Resource Profile: TW Core MessageHeader

Official URL: https://twcore.mohw.gov.tw/ig/twcore/StructureDefinition/MessageHeader-twcore Version: 0.3.2
Active as of 2025-02-04 Computable Name: TWCoreMessageHeader

此臺灣核心-訊息表頭(TW Core MessageHeader) Profile說明本IG如何進一步定義FHIR的MessageHeader Resource以呈現訊息表頭的詳細資料。

Resource MessageHeader - 內容

當我們在進行訊息交換,不論是發出請求還是回應某個請求時,都會用到一個特別的表頭,我們稱之為訊息標頭(MessageHeader)。這個表頭裡面會包含這次請求涉及的主要內容參照(比如是關於哪些資料的操作)以及其他一些相關資訊。這些資訊通常會被打包在一個 bundle 中發送出去,而MessageHeader resource 則是這個bundle裡的第一個 resource,就像是包裹的首頁或封面一樣,告訴接收者這個包裹的主要內容和目的。

範圍與使用

MessageHeader Resource 是為了支援利用 FHIR Resources 進行訊息傳遞而設計的。當進行訊息交換時,主要會使用到 MessageHeader Resource。

MessageHeader Resource 也可以在 RESTful 架構中使用,它有一個標準的 resource 端點([base-url]/MessageHeader),可以透過這個端點管理一組訊息 resources及建立過去訊息的儲存庫。就像是在電腦裡保存的一個資料夾,裡面存放著所有曾經發送和接收的郵件。但要注意,僅僅是保存這些訊息紀錄,並不意味著這些事件還在發生,或者可以透過保存的紀錄來觸發任何相關的操作或事件。 它只是一個方便我們回顧和管理過去訊息的方法。

Usage:

Formal Views of Profile Content

Description of Profiles, Differentials, Snapshots and how the different presentations work.

NameFlagsCard.TypeDescription & Constraintsdoco
.. MessageHeader 0..* MessageHeader 描述系統間交換的訊息的resources
dom-2: If the resource is contained in another resource, it SHALL NOT contain nested Resources
dom-3: If the resource is contained in another resource, it SHALL be referred to from elsewhere in the resource or SHALL refer to the containing resource
dom-4: If a resource is contained in another resource, it SHALL NOT have a meta.versionId or a meta.lastUpdated
dom-5: If a resource is contained in another resource, it SHALL NOT have a security label
dom-6: A resource should have narrative for robust management
... id Σ 0..1 id 不重複的ID用以識別儲存在特定FHIR Server中的DocumentReference紀錄,通常又稱為邏輯性ID。
... meta Σ 0..1 Meta 此DocumentReference Resource的metadata
ele-1: All FHIR elements must have a @value or children
... implicitRules ?!Σ 0..1 uri 創建此內容所依據的一組規則
ele-1: All FHIR elements must have a @value or children
... text 0..1 Narrative DocumentReference Resource之內容摘要以供人閱讀
ele-1: All FHIR elements must have a @value or children
... modifierExtension ?! 0..* Extension Extensions that cannot be ignored
ele-1: All FHIR elements must have a @value or children
ext-1: Must have either extensions or value[x], not both
... event[x] Σ 1..1 此訊息代表的事件的代碼或連結到事件定義
Binding: MessageEvent (example): 可參考所綁定值集,但此值集只是針對這個欄位的一個可能值的範例,不預期也不鼓勵使用者一定要使用此值集的代碼。


ele-1: All FHIR elements must have a @value or children
.... eventCoding Coding
.... eventUri uri
... destination Σ 0..* BackboneElement 訊息目的地應用程式
ele-1: All FHIR elements must have a @value or children
.... modifierExtension ?!Σ 0..* Extension Extensions that cannot be ignored even if unrecognized
ele-1: All FHIR elements must have a @value or children
ext-1: Must have either extensions or value[x], not both
.... name Σ 0..1 string 系統的名稱
ele-1: All FHIR elements must have a @value or children
.... target Σ 0..1 Reference(Device) 在訊息或資料發送的目的地中,指定一個具體的接收點。
ele-1: All FHIR elements must have a @value or children
.... endpoint Σ 1..1 url 實際目的地地址或id
ele-1: All FHIR elements must have a @value or children
.... receiver Σ 0..1 Reference(TW Core Practitioner | TW Core PractitionerRole | TW Core Organization) 資料應該被發送給在現實生活中真正需要這些資訊的個人或機構
ele-1: All FHIR elements must have a @value or children
... sender SΣ 0..1 Reference(TW Core Practitioner | TW Core PractitionerRole | TW Core Organization) 訊息的實際發送端
ele-1: All FHIR elements must have a @value or children
... enterer Σ 0..1 Reference(TW Core Practitioner | TW Core PractitionerRole) 資料輸入的來源
ele-1: All FHIR elements must have a @value or children
... author Σ 0..1 Reference(TW Core Practitioner | TW Core PractitionerRole) 決策的來源
ele-1: All FHIR elements must have a @value or children
... source Σ 1..1 BackboneElement 訊息來源應用程式
ele-1: All FHIR elements must have a @value or children
.... modifierExtension ?!Σ 0..* Extension Extensions that cannot be ignored even if unrecognized
ele-1: All FHIR elements must have a @value or children
ext-1: Must have either extensions or value[x], not both
.... name Σ 0..1 string 系統的名稱
ele-1: All FHIR elements must have a @value or children
.... software Σ 0..1 string 運行系統的軟體名稱
ele-1: All FHIR elements must have a @value or children
.... version Σ 0..1 string 軟體運行的版本
ele-1: All FHIR elements must have a @value or children
.... contact Σ 0..1 ContactPoint 提供人工聯絡途徑以處理問題
ele-1: All FHIR elements must have a @value or children
.... endpoint Σ 1..1 url 實際訊息來源地址或ID
ele-1: All FHIR elements must have a @value or children
... responsible Σ 0..1 Reference(TW Core Practitioner | TW Core PractitionerRole | TW Core Organization) 事件的最終責任
ele-1: All FHIR elements must have a @value or children
... reason Σ 0..1 CodeableConcept 事件的原因
Binding: ExampleMessageReasonCodes (example): 可參考所綁定值集,但此值集只是針對這個欄位的一個可能值的範例,不預期也不鼓勵使用者一定要使用此值集的代碼。


ele-1: All FHIR elements must have a @value or children
... response Σ 0..1 BackboneElement 這是對先前訊息的回應
ele-1: All FHIR elements must have a @value or children
.... modifierExtension ?!Σ 0..* Extension Extensions that cannot be ignored even if unrecognized
ele-1: All FHIR elements must have a @value or children
ext-1: Must have either extensions or value[x], not both
.... identifier Σ 1..1 id 原始訊息的Id
ele-1: All FHIR elements must have a @value or children
.... code Σ 1..1 code ok | transient-error | fatal-error
Binding: ResponseType (required): 訊息回應類型;應填入所綁定值集中的其中一個代碼。


ele-1: All FHIR elements must have a @value or children
.... details Σ 0..1 Reference(OperationOutcome) 特定的提示/警告/錯誤清單
ele-1: All FHIR elements must have a @value or children
... focus SΣ 0..* Reference(Resource) 訊息的實際內容
ele-1: All FHIR elements must have a @value or children
... definition Σ 0..1 canonical(MessageDefinition) 這個訊息的定義連結
ele-1: All FHIR elements must have a @value or children

doco Documentation for this format

Terminology Bindings

PathConformanceValueSetURI
MessageHeader.languagepreferredCommonLanguages
http://hl7.org/fhir/ValueSet/languages
from the FHIR Standard
Additional Bindings Purpose
AllLanguages Max Binding
MessageHeader.event[x]exampleMessageEvent
http://hl7.org/fhir/ValueSet/message-events
from the FHIR Standard
MessageHeader.reasonexampleExampleMessageReasonCodes
http://hl7.org/fhir/ValueSet/message-reason-encounter
from the FHIR Standard
MessageHeader.response.coderequiredResponseType
http://hl7.org/fhir/ValueSet/response-code|4.0.1
from the FHIR Standard

Constraints

IdGradePath(s)DetailsRequirements
dom-2errorMessageHeaderIf the resource is contained in another resource, it SHALL NOT contain nested Resources
: contained.contained.empty()
dom-3errorMessageHeaderIf the resource is contained in another resource, it SHALL be referred to from elsewhere in the resource or SHALL refer to the containing resource
: contained.where((('#'+id in (%resource.descendants().reference | %resource.descendants().as(canonical) | %resource.descendants().as(uri) | %resource.descendants().as(url))) or descendants().where(reference = '#').exists() or descendants().where(as(canonical) = '#').exists() or descendants().where(as(canonical) = '#').exists()).not()).trace('unmatched', id).empty()
dom-4errorMessageHeaderIf a resource is contained in another resource, it SHALL NOT have a meta.versionId or a meta.lastUpdated
: contained.meta.versionId.empty() and contained.meta.lastUpdated.empty()
dom-5errorMessageHeaderIf a resource is contained in another resource, it SHALL NOT have a security label
: contained.meta.security.empty()
dom-6best practiceMessageHeaderA resource should have narrative for robust management
: text.`div`.exists()
ele-1error**ALL** elementsAll FHIR elements must have a @value or children
: hasValue() or (children().count() > id.count())
ext-1error**ALL** extensionsMust have either extensions or value[x], not both
: extension.exists() != value.exists()

 

Other representations of profile: CSV, Excel, Schematron

Notes:

以下概述了此Profile所需的RESTful FHIR互動功能。有關TW Core IG支援的RESTful互動功能的完整清單,請參閱TW Core Server能力聲明

建議應該支援以下查詢參數:

  1. 建議應該(SHOULD) 支援透過查詢參數 _id 查詢所有MessageHeader:
    (如何透過token查詢)
    GET [base]/MessageHeader?_id=[id]
    GET [base]/MessageHeader/[id]

    例子:
    (1) GET [base]/MessageHeader?_id=mes-example

  2. 建議應該(SHOULD) 支援透過查詢參數 author 查詢所有MessageHeader:
    (如何透過reference查詢)
    GET [base]/MessageHeader?author={Type/}[id]

    例子:
    (1) GET [base]/MessageHeader?author= https://twcore.mohw.gov.tw/ig/twcore/Practitioner-pra-example

  3. 建議應該(SHOULD) 支援透過查詢參數 sender 查詢所有MessageHeader:
    (如何透過reference查詢)
    GET [base]/MessageHeader?sender={Type/}[id]

    例子:
    (1) GET [base]/MessageHeader?sender= https://twcore.mohw.gov.tw/ig/twcore/org-hosp-example

實作注意事項

  • 當我們發送一個訊息 bundle 時,我們可以選擇是否要把跟訊息有關的資訊(比如由誰輸入的、誰是作者、誰是負責這項工作的人的訊息)一起打包發送,但如果接收者(或其他中介軟體)能夠定位或解析這些參照的resources資訊,我們就可以選擇不把它們包含在訊息裡。把所有訊息都打包發送比較適合那些系統間連接不那麼緊密的情況;而對於那些系統間連接很緊密的情況,可以不用這麼做。傳送訊息的規格及系統存取能力都定義在結構定義(Structure Definition),我們可以透過它了解如何進行選擇。
  • 訊息中特別關注的部分(例如:是關於哪一件事的訊息,我們稱之為 focus resources - 焦點 resources)和它具體包含哪些訊息,是根據每次發送的訊息事件所決定的(可以參考傳送訊息事件說明),這部分訊息總是會被包含在訊息的bundle中。
  • 如果MessageHeader裡面的source.endpointdestination.endpoint是實際可存取的網址,那麼它們應該指向訊息可以被送達的地方。如果這些地址是邏輯上的(也就是說你不能直接用網路存取),那麼負責傳遞訊息的中介軟體必須知道怎麼把訊息正確送到目的地。
  • 訊息發生的具體時間會記錄在 focus resource 裡,而訊息發送的時間則會記錄在Bundle.timestamp
  • 訊息的作者和接收者並不是指實際操作系統的技術設備,而是使用這些技術設備的人或機構。
  • 即使一條訊息沒有明確指出接收者是誰,接收方也沒有義務拒絕這條訊息。例如:一個追蹤系統可能會收到本來發給別的系統的訊息。
  • MessageEvent 值集是由那些定義事件的 resources 的作者所填寫的。