MedTech サービスの FHIR 変換先マッピングの概要

この記事では、MedTech サービスの FHIR® 変換先マッピングの概要について説明します。

MedTech サービスでは、Azure portal または Azure Resource Manager API を通じて MedTech サービスに追加される、2 種類の JSON マッピングが必要です。 デバイス マッピングが 1 つ目の種類で、MedTech サービスに送信されたデバイス データの値の、内部の正規化されたデータ オブジェクトへのマッピングを制御します。 デバイス マッピングには、種類、デバイス識別子、測定日時、測定値を抽出するために MedTech サービスによって使われる式が含まれます。 FHIR 変換先マッピングが 2 つ目の種類であり、正規化されたデータを FHIR 観察記録にマップする方法を制御します。

Note

デバイスと FHIR 変換先マッピングは、デバイス メッセージが処理されるたびに再評価されます。 いずれのマッピングの更新もすべて即座に反映されます。

FHIR 変換先マッピングの基本

FHIR 変換先マッピングは、デバイス メッセージから抽出されて正規化されたデータを FHIR 観察記録にマップする方法を制御します。

  • 特定の時点または 1 時間という期間にわたって観察を作成する必要がありますか。
  • 観察にどのようなコードを追加する必要がありますか。
  • 値を SampledData または Quantity として表す必要があるか?

これらのデータの種類はすべて、FHIR 変換先マッピングの構成で制御するオプションです。

デバイス データが正規化されたデータ モデルに変換された後、正規化されたデータが FHIR 観察記録への変換のために収集されます。 観察記録の種類が SampledData の場合、データはデバイス識別子、測定の種類、期間 (期間は 1 時間または 24 時間) に従ってグループ化されます。 このグループ化の出力は、そのデータの種類に対する期間を表す単一の FHIR 観察記録に変換するために送信されます。 その他の観察記録の種類 (QuantityCodeableConceptString) のデータはグループ化されず、代わりに各測定値が特定の時点を表す単一の観察記録に変換されます。

ヒント

MedTech サービスが FHIR サービスに保存するためにデバイス メッセージ データを FHIR 観察記録に処理する方法について詳しくは、MedTech サービスでのデバイス メッセージの処理ステージの概要に関する記事をご覧ください。

次の図は、MedTech サービス内で変換ステージの間に行われることを示したものです。

Diagram example of the MedTech service device message transformation stage.

Note

この図の FHIR 観察記録は、完全なリソースではありません。 FHIR 観察記録全体については、この概要の「」をご覧ください。

CollectionFhir

CollectionFhir は、MedTech サービスの FHIR 変換先マッピングで使われるルート テンプレートの種類です。 CollectionFhir は、変換ステージで使われるすべてのテンプレートの一覧です。 CollectionFhir 内で 1 つ以上のテンプレートを定義し、正規化された各メッセージをすべてのテンプレートに対して評価できます。

Diagram showing MedTech service FHIR destination mapping template and code architecture.

CodeValueFhir

現在、FHIR 変換先マッピングでサポートされているテンプレートは CodeValueFhir だけです。 これを使用すると、コード、有効期間、観察の値を定義できます。 複数の値の種類 (SampledDataCodeableConceptQuantityString) がサポートされています。 これらの構成可能な値と共に、Observation リソースの識別子と、適切な Device および Patient リソースへのリンクが自動的に処理されます。

重要

[Resolution type] (解決の種類) は、MedTech サービスがデバイス データをデバイス リソースおよび患者リソースと関連付ける方法を指定します。 MedTech サービスは、デバイス識別子患者識別子を使用して、FHIR サービスからデバイスと患者リソースを読み込みます。 エンカウンター識別子が指定されており、デバイス データのペイロードから抽出された場合、その識別子を持つエンカウンターが FHIR サービスに存在すると、それは観察記録にリンクされます。 エンカウンター識別子は正常に正規化されたけれども、そのエンカウンター識別子を持つ FHIR エンカウンターが存在しない場合は、FhirResourceNotFound 例外がスローされます。 MedTech サービスの解決の種類の構成について詳しくは、「[宛先] タブを構成する」をご覧ください。

要素 説明 必須
typeName このテンプレートのバインド先となる測定の種類。 注: この同じ typeName を持つデバイス マッピング テンプレートが、少なくとも 1 つ存在する必要があります。 typeName 要素は、FHIR 変換先マッピング テンプレートを 1 つ以上のデバイス マッピング テンプレートにリンクするために使われます。 同じ typeName 要素があるデバイス マッピング テンプレートによって、同じ typeName を持つ FHIR 変換先マッピング テンプレートで評価される正規化されたデータが生成されます。 正しい
periodInterval 作成された観察が表す期間。 サポートされている値は、0 (1 インスタンス)、60 (1 時間)、1440 (1 日) です。 観察記録の種類が SampledData の場合は True。他の観察記録の種類では無視されます。
category 作成される観察の種類を分類する任意の数の CodeableConcepts いいえ
codes 作成された観察に適用する 1 つ以上の Codings 正しい
codes[].code codes 要素内の Coding に対するコード。 正しい
codes[].system codes 要素内の Coding に対するシステム。 いいえ
codes[].display codes 要素内の Coding に対する表示。 いいえ
value 観察で抽出して表す値。 value 要素に含まれる要素について詳しくは、「値の種類」をご覧ください。 components 要素が使われていない場合は true (観察記録の種類が CodebleConcept ではない場合。CodebleConcept である場合は、この要素は "必須ではない" だけでなく無視されます)。
components 観察に対して作成する 1 つ以上のコンポーネント。 value 要素が代わりに使われていない場合は true。
components[].codes コンポーネントに適用する 1 つ以上の Codings いいえ
components[].value コンポーネントで抽出して表す値。 components[].value 要素に含まれる要素について詳しくは、「値の種類」をご覧ください。 components 要素が使われている場合は true (観察記録の種類が CodebleConcept ではない場合。CodebleConcept である場合は、この要素は "必須ではない" だけでなく無視されます)。

値型

すべての CodeValueFhir テンプレートの value 要素には、次の要素が含まれます。

要素 説明 必須
valueType 値の種類。 この値は、値の種類に応じて "SampledData"、"Quantity"、"CodeableConcept"、または "String" になります。 正しい
valueName 値の名前。 valueType が CodeableConcept でない場合は true。

MedTech サービスの FHIR 変換先マッピングでは、以下の値の種類がサポートされています。

SampledData

SampledData FHIR データの種類を表します。 観察記録の測定値は、ある時点から始まり、定義された期間を使って前方にインクリメントする値ストリームに書き込まれます。 値が存在しない場合は、E がデータ ストリームに書き込まれます。 2 つ以上の値がデータ ストリーム内の同じ位置を占めている期間の場合は、最新の値が使われます。 SampledData を使用した観察が更新されるときは、同じロジックが適用されます。 値の種類が SampledData である CodeValueFhir テンプレートの場合、テンプレートの value 要素には次の要素が含まれます。

要素 説明 必須
defaultPeriod 使用する既定の時間 (ミリ秒単位)。 正しい
ユニット SampledData の原点に設定する単位。 正しい

品質

FHIR データ型の Quantity を表します。 この種類では、単一の特定時点の観察記録が作成されます。 同じデバイス識別子、測定の種類、タイムスタンプを含む新しい値が到着すると、前の観察記録が新しい値に更新されます。 値の種類が Quantity である CodeValueFhir テンプレートの場合、テンプレートの value 要素には次の要素が含まれます。

要素 説明 必須
ユニット 単位の表記。 いいえ
code 単位のコード化された形式。 いいえ
system コード化された単位の形式を定義するシステム。 いいえ

CodeableConcept

FHIR データ型 CodeableConcept を表します。 正規化されたデータ モデルの値は使われず、この種類のデータを受け取ったときは代わりに、観察記録が特定の時点で記録されたことを表す特定のコードを使って観察記録が作成されます。 値の種類が CodeableConcept である CodeValueFhir テンプレートの場合、テンプレートの value 要素には次の要素が含まれます。

要素 説明 必須
text プレーンテキスト表現。 いいえ
codes 作成された観察に適用する 1 つ以上の Codings 正しい
codes[].code codes 要素内の Coding に対するコード。 正しい
codes[].system codes 要素内の Coding に対するシステム。 いいえ
codes[].display codes 要素内の Coding に対する表示。 いいえ

String

String FHIR データの種類を表します。 この種類では、単一の特定時点の観察記録が作成されます。 同じデバイス識別子、測定の種類、タイムスタンプを含む新しい値が到着すると、前の観察記録が新しい値に更新されます。 他の要素は定義されていません。

ヒント

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

Note

この例と正規化されたメッセージは、「MedTech サービスのデバイス マッピングの概要」のものを引き続き使っています。

この例では、heartRate データをキャプチャする正規化されたメッセージを使っています。

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

変換ステージには、次の FHIR 変換先マッピングを使っています。

{
  "templateType": "CollectionFhir",
  "template": [
    {
      "templateType": "CodeValueFhir",
      "template": {
        "codes": [
          {
            "code": "8867-4",
            "system": "http://loinc.org",
            "display": "Heart rate"
          }
        ],
        "typeName": "heartrate",
        "value": {
          "system": "http://unitsofmeasure.org",
          "code": "count/min",
          "unit": "count/min",
          "valueName": "hr",
          "valueType": "Quantity"
        }
      }
    }
  ]
}

変換ステージの後の結果の FHIR 観察記録は次のようになります。

[
  {
    "code": {
      "coding": [
        {
          "system": {
            "value": "http://loinc.org"
          },
          "code": {
            "value": "8867-4"
          },
          "display": {
            "value": "Heart rate"
          }
        }
      ],
      "text": {
        "value": "heartrate"
      }
    },
    "effective": {
      "start": {
        "value": "2023-03-13T22:46:01.8750000Z"
      },
      "end": {
        "value": "2023-03-13T22:46:01.8750000Z"
      }
    },
    "issued": {
      "value": "2023-04-05T21:02:59.1650841+00:00"
    },
    "value": {
      "value": {
        "value": 78
      },
      "unit": {
        "value": "count/min"
      },
      "system": {
        "value": "http://unitsofmeasure.org"
      },
      "code": {
        "value": "count/min"
      }
    }
  }
]

ヒント

MedTech サービスの一般的なデプロイ エラーの修正については、「MedTech サービスのデプロイ エラーのトラブルシューティング」をご覧ください。

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

次のステップ

MedTech サービスのデバイス マッピングの概要

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

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

カスタム関数を MedTech サービス デバイス マッピングで使用する方法

MedTech サービス シナリオベースのマッピング サンプルの概要

Note

FHIR® は HL7 の登録商標であり、HL7 の許可を得て使用しています。