MedTech サービス デバイス マッピングで CalculatedContent テンプレートを使用する方法

注意

Fast Healthcare Interoperability Resources (FHIR®) は、オープンな医療仕様です。

この記事では、MedTech サービス デバイス マッピング内で CalculatedContent テンプレートを使用する方法の概要について説明します。

CalculatedContent テンプレートの基本

MedTech サービス CalculatedContent テンプレートでは、JSONPath と JMESPath の 2 つの JSON 式言語がサポートされています。 式は、特定の JSON デバイス メッセージで使用するテンプレート (TypeMatchExpression など) を識別し、正規化されたメッセージを作成するために必要な特定の値 (TimestampExpression、DeviceIdExpression など) を抽出するために使用されます。

注意

式言語を定義しない場合、MedTech サービス デバイス マッピング テンプレートでは、テンプレート用に構成されている既定の式言語が使用されます。 既定値は JSONPath ですが、必要に応じて上書きできます。

式は次のように定義されます。

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

次の例では、 typeMatchExpression は として定義されています。

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

CalculatedContent テンプレートを使用すると、次の式を使用して、Azure Event Hubs イベント ハブから読み取られたデバイス メッセージに対して値を照合したり、デバイス メッセージから値を抽出したりできます。

要素 説明 JSONPath 式の例 JMESPath 式の例
typeMatchExpression MedTech サービスがデバイス メッセージ ペイロードに対して評価する式。 サービスが一致するトークン値を見つけた場合、テンプレートは一致と見なされます。 このサービスは、後のすべての式を、ここで一致する抽出されたトークン値に対して評価します。 $..[?(@heartRate)] [Body][?contains(keys(@), `heartRate`)] \| @[0]
deviceIdExpression デバイス識別子を抽出する式。 $.matchedToken.deviceId @.matchedToken.deviceId
timestampExpression 測定値 OccurrenceTimeUtc のタイムスタンプ値を抽出する式。 $.matchedToken.endDate @.matchedToken.endDate
patientIdExpression 患者識別子を抽出する式。 MedTech サービスの解像度の種類[作成] に設定されている場合は必須、MedTech サービスの解決の種類Lookup に設定されている場合は省略可能です。 $.matchedToken.patientId @.matchedToken.patientId
encounterIdExpression 省略可能: 検出識別子を抽出する式。 $.matchedToken.encounterId @.matchedToken.encounterId
correlationIdExpression 省略可能: 関連付け識別子を抽出する式。 この出力を使用して、FHIR 変換先マッピングで値を 1 つの観測値にグループ化できます。 $.matchedToken.correlationId @.matchedToken.correlationId
values[].valueExpression 必要な値を抽出する式。 $.matchedToken.heartRate @.matchedToken.heartRate

注意

解決策の種類は、MedTech サービスがデバイス データをデバイス リソースと Patient リソースに関連付ける方法を指定します。 MedTech サービスは、デバイス識別子と患者識別子を使用して、FHIR サービスから Device リソースと Patient リソースを読み取ります。 検出識別子が指定され、デバイス データ ペイロードから抽出された場合、その識別子を持つ FHIR サービスに遭遇が存在する場合、その識別子は監視にリンクされます。 検出識別子が正常に正規化されていても、その検出識別子と共に FHIR 検出が存在しない場合は、FhirResourceNotFound 例外がスローされます。 MedTech サービス の解決の種類の構成の詳細については、「 宛先タブを構成する」を参照してください。

式の言語

式に使用する言語を指定する場合、次の値が有効です。

式言語
JSONPath JsonPath
JMESPath JmesPath

JSONPath は既定の式言語であるため、CalculatedContent テンプレート内に式言語を含める必要はありません。

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

また、 パラメーターを使用して CalculatedContent テンプレートの既定の式言語を明示的に defaultExpressionLanguage 設定することもできます。

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

ヒント

JSONPath の詳細については、「 JSONPath - JSON 用 XPath」を参照してください。 CalculatedContent テンプレートでは、JSONPath 式を解決するために JSON .NET 実装 が使用されます。

JMESPath の詳細については、「 JMESPath の仕様」を参照してください。 CalculatedContent テンプレートは、JMESPath 式を解決するために JMESPath .NET 実装 を使用します。

カスタム関数

MedTech サービス用のカスタム関数のセットも使用できます。 MedTech サービスのカスタム関数は、JMESPath 仕様の一部として提供される関数の外部にあります。 MedTech サービスのカスタム関数の詳細については、「 MedTech サービス デバイス マッピングでカスタム関数を使用する方法」を参照してください。

MedTech サービスがデバイス メッセージを処理している場合、CollectionContent 内のテンプレートを使用してメッセージを評価します。 typeMatchExpressionは、デバイス メッセージから正規化されたメッセージを作成するためにテンプレートを使用する必要があるかどうかを判断するために使用されます。 が typeMatchExpression true に評価された場合、deviceIdExpressiontimestampExpression、、および valueExpression の値を使用して、デバイス メッセージから JSON 値を検索して抽出し、正規化されたメッセージを作成します。 この例では、すべての式が JSONPath で記述されますが、JMESPath ですべての式を書き込むのは有効です。 どの式言語が最も適切かを判断するのは、テンプレート作成者次第です。

ヒント

MedTech サービス マッピング デバッガー を使用して、MedTech サービス デバイスと FHIR 宛先マッピングの作成、更新、トラブルシューティングを支援できます。 マッピング デバッガーを使用すると、Azure portalを離れることなく、リアルタイムで簡単にインライン調整を表示および行うことができます。 マッピング デバッガーは、テスト デバイス メッセージをアップロードするためにも使用して、正規化されたメッセージに処理され、FHIR Observations に変換された後にどのように見えるかを確認できます。

この例では、データをキャプチャしているデバイス メッセージを heartRate 使用しています。

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

イベント ハブは、MedTech サービスがイベント ハブからデバイス メッセージを読み取る前に、デバイス メッセージをエンリッチします。

{
    "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"
                    }
                ]
            }
        }
    ]
}

重要

MedTech サービスは、受信デバイス のデータ ペイロードに対して評価されます typeMatchExpression 。 サービスが一致するトークン値を見つけた場合、テンプレートは一致と見なされます。

MedTech サービスは、それ以降のすべての式を新しいトークン値に対して評価します。 この新しいトークン値には、元のデバイス データ ペイロードと、ここで一致した抽出されたトークン値の両方が含まれます。

この方法では、元のデバイス データ ペイロードと一致するオブジェクトを、それぞれの後の式で使用できます。 抽出されたトークン値は、 プロパティ 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"
            }
        ]
    }
]

ヒント

MedTech サービスのデプロイ エラーのトラブルシューティングについては、「 MedTech サービスのデプロイ エラーのトラブルシューティング」を参照してください。

MedTech サービス エラーのトラブルシューティングについては、「 MedTech サービス ログを使用したエラーのトラブルシューティング」を参照してください。

次のステップ

この記事では、MedTech サービス デバイス マッピングで CalculatedContent テンプレートを使用する方法について説明しました。

MedTech サービスのカスタム関数を使用する方法については、次を参照してください。

MedTech サービス FHIR 変換先マッピングの概要については、次を参照してください。

MedTech サービスのシナリオ ベースのマッピングのサンプルの概要については、次を参照してください。

FHIR®は、米国商標局に登録されているヘルスレベルセブンインターナショナルの登録商標であり、許可を得て使用されています。