共用方式為


如何使用 CalculatedContent 範本搭配醫療技術服務裝置對應

本文提供如何在醫療技術服務裝置對應中使用 CalculatedContent 範本的概觀。

CalculatedContent 範本基礎

醫療技術服務 CalculatedContent 範本支援兩種 JSON 運算式語言:JSONPath 和 JMESPath。 運算式可用來識別要與指定 JSON 裝置訊息搭配使用的範本 (例如:TypeMatchExpression),以及擷取建立正規化訊息所需的特定值 (例如:TimestampExpression、DeviceIdExpression 等)。

注意

如果您未定義運算式語言,醫療技術服務裝置對應範本會使用針對範本設定的預設運算式語言。 預設值為 JSONPath,但您可以視需要將其覆寫。

運算式定義為:

<name of expression> : {
   "value" : <the expression>,
   "language": <the expression language>
}

在以下範例中,typeMatchExpression 定義為:

"templateType": "CalculatedContent",
"template": {
   "typeName": "heartrate",
   "typeMatchExpression": {
      "value" : "$..[?(@heartRate)]",
      "language": "JsonPath"
   },
...
}

CalculatedContent 範本允許透過下列運算式,從 Azure 事件中樞事件中樞讀取的裝置訊息中比對和擷取:

元素 描述 JSONPath 運算式範例 JMESPath 運算式範例
typeMatchExpression 醫療技術服務針對裝置訊息承載評估的運算式。 如果服務找到符合權杖值,它會將範本視為相符專案。 服務會根據在此符合的擷取權杖值評估所有後續運算式。 $..[?(@heartRate)] [Body][?contains(keys(@), `heartRate`)] \| @[0]
deviceIdExpression 用於擷取裝置識別碼的運算式。 $.matchedToken.deviceId @.matchedToken.deviceId
timestampExpression 用於擷取量測 OccurrenceTimeUtc 的時間戳記值運算式。 $.matchedToken.endDate @.matchedToken.endDate
patientIdExpression 用於擷取患者識別碼的運算式。 醫療技術服務的解析類型設定為建立時,則為必要;醫療技術服務的解析類型設定為查詢時,則為選用 $.matchedToken.patientId @.matchedToken.patientId
encounterIdExpression 選擇性:用於擷取就診事件識別碼的運算式。 $.matchedToken.encounterId @.matchedToken.encounterId
correlationIdExpression 選擇性:用於擷取相互關聯識別碼的運算式。 您可以使用此輸出將值分組為 FHIR® 目的地對應中的單一觀察。 $.matchedToken.correlationId @.matchedToken.correlationId
values[].valueExpression 用於擷取所需值的運算式。 $.matchedToken.heartRate @.matchedToken.heartRate

注意

解析類型指定醫療技術服務如何將裝置資料和裝置資源與患者資源產生關聯。 醫療技術服務會使用裝置識別碼患者識別碼,從 FHIR 服務讀取裝置和患者資源。 如果指定遇到標識碼並從裝置資料承載擷取,則如果具有該識別碼的 FHIR 服務上存在遇到,則會連結到觀察。 如果遇到識別碼成功正規化,但找不到遇到識別碼的 FHIR,則會擲回 FhirResourceNotFound 例外狀況。 如需設定醫療技術服務解析類型的詳細資訊,請參閱設定目的地索引標籤

運算式語言

當您指定運算式使用的語言時,下列值為有效:

運算式語言
JSONPath JsonPath
JMESPath JmesPath

因為 JSONPath 是預設運算式語言,所以不需要在 CalculatedContent 範本中包含運算式語言。

"templateType": "CalculatedContent",
   "template": {
      "typeName": "heartrate",
      "typeMatchExpression": "$..[?(@heartRate)]",
...
}

您可以使用 defaultExpressionLanguage 參數明確設定用於 CalculatedContent 範本的預設運算式語言:

"templateType": "CalculatedContent",
   "template": {
      "typeName": "heartrate",
      "defaultExpressionLanguage": "JmesPath",
      "typeMatchExpression": "[Body][?contains(keys(@), `heartRate`)] | @[0]",
...
}

提示

如需 JSONPath 詳細資訊,請參閱 JSONPath - XPath for JSON。 CalculatedContent 範本會使用 JSON .NET 實作以解析 JSON Path 運算式。

如需 JMESPath 的詳細資訊,請參閱 JMESPath 規格。 CalculatedContent 範本會使用 JMESPath .NET 實作解析 JMESPath 運算式。

自訂函式

您也可以使用一組醫療技術服務自訂函式。 醫療技術服務自訂函式不在 JMESPath 規格所提供的函式當中。 如需醫療技術服務自訂函式的詳細資訊,請參閱如何使用自訂函式搭配醫療技術服務裝置對應

範例

醫療技術服務處理裝置訊息時,CollectionContent 中的範本會用於評估訊息。 typeMatchExpression 用於判斷範本是否應該用於從裝置訊息建立正規化訊息。 如果 typeMatchExpression 評估為 true,則會使用 deviceIdExpressiontimestampExpressionvalueExpression 值,從裝置訊息中尋找和擷取 JSON 值,並建立正規化訊息。 在此範例中,所有運算式都以 JSONPath 寫入,但在 JMESPath 中寫入所有運算式亦是有效的。 由範本建立者決定哪種運算式語言最合適。

提示

您可以使用醫療技術服務對應偵錯工具,協助建立、更新及疑難排解醫療技術服務裝置和 FHIR 目的地對應。 對應偵錯工具可讓您輕鬆即時檢視和進行內嵌調整,無需離開 Azure 入口網站。 對應偵錯工具也可用於上傳測試裝置訊息,以查看處理為正規化訊息並轉換成 FHIR 觀察後的樣子。

在此範例中,我們使用擷取 heartRate 資料的裝置訊息:

{
    "heartRate": "78",
    "endDate": "2023-03-13T22:46:01.8750000",
    "deviceId": "device01"
}

事件中樞會在醫療技術服務從事件中樞讀取裝置訊息之前擴充裝置訊息:

{
    "Body": {
        "heartRate": "78",
        "endDate": "2023-03-13T22:46:01.8750000",
        "deviceId": "device01"
    }
}

我們在正規化階段使用此裝置對應:

{
    "templateType": "CollectionContent",
    "template": [
        {
            "templateType": "CalculatedContent",
            "template": {
                "typeName": "heartrate",
                "typeMatchExpression": "$..[?(@heartRate)]",
                "deviceIdExpression": "$.matchedToken.deviceId",
                "timestampExpression": "$.matchedToken.endDate",
                "values": [
                    {
                        "required": true,
                        "valueExpression": "$.matchedToken.heartRate",
                        "valueName": "hr"
                    }
                ]
            }
        }
    ]
}

重要

醫療技術服務針對傳入裝置資料承載評估 typeMatchExpression。 如果服務找到符合權杖值,它會將範本視為相符專案。

醫療技術服務會根據新的權杖值評估所有較新的運算式。 此新的權杖值包含原始裝置資料承載和相符的擷取權杖值。

如此一來,每個後續運算式都可以使用原始承載和相符的物件。 擷取的權杖值將作為 matchedToken 屬性。

{
    "Body": {
        "heartRate": "78",
        "endDate": "2023-03-13T22:46:01.8750000",
        "deviceId": "device01"
    },
    "matchedToken": {
        "heartRate": "78",
        "endDate": "2023-03-13T22:46:01.8750000",
        "deviceId": "device01"
    }
}

產生的正規化訊息在正規化階段之後,會變成這樣:

[
    {
        "type": "heartrate",
        "occurrenceTimeUtc": "2023-03-13T22:46:01.875Z",
        "deviceId": "device01",
        "properties": [
            {
                "name": "hr",
                "value": "78"
            }
        ]
    }
]

提示

如需疑難排解醫療技術服務部署錯誤的協助,請參閱醫療技術服務部署錯誤疑難排解

如需疑難排解醫療技術服務錯誤的協助,請參閱使用醫療技術服務記錄錯誤疑難排解

下一步

如何使用自訂函數搭配醫療技術服務裝置對應

FHIR 目的地對應概觀

案例型醫療技術服務對應範例概觀

注意

FHIR® 是 HL7 的註冊商標,可與 HL7 的權限搭配使用。