你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn

医疗技术服务 FHIR 目标映射概述

本文概述了医疗技术服务 FHIR® 目标映射。

医疗技术服务需要两种类型的 JSON 映射,这些映射通过 Azure 门户或 Azure 资源管理器 API 添加到医疗技术服务。 设备映射是第一种类型,控制将发送到医疗技术服务的设备数据中的值映射到内部规范化数据对象的操作。 设备映射包含医疗技术服务用于提取类型、设备标识符、度量日期时间和度量值的表达式。 FHIR 目标映射是第二种类型,控制规范化数据如何映射到 FHIR Observation

注意

每次处理设备消息时,都会重新评估设备和 FHIR 目标映射。 对任一映射的任何更新都将立即生效。

FHIR 目标映射基础知识

FHIR 目标映射控制从设备消息中提取的规范化数据如何映射到 FHIR Observation。

  • 是创建一个观察点还是超过一个小时的时间段的观察值?
  • 应在观察结果中添加哪些代码?
  • 值应该表示为 SampledData 还是 Quantity

这些数据类型是 FHIR 目标映射配置控件的所有选项。

设备数据转换为规范化数据模型后,将收集规范化数据以转换为 FHIR Observation。 如果 Observation 类型是 SampledData,则根据设备标识符、度量类型和时间段(时间段可以是 1 小时或 24 小时)对数据进行分组。 此分组的输出将发送以转换为表示该数据类型的时间段的单个 FHIR Observation。 对于其他 Observation 类型(QuantityCodeableConceptString),数据不会分组,但每个度量值会转换为表示时间点的单个 Observation。

提示

若要详细了解医疗技术服务如何将设备消息数据处理为 FHIR 观察以在 FHIR 服务中持久保存,请参阅医疗技术服务设备消息处理阶段概述

此图说明了医疗技术服务转换阶段发生的情况。

Diagram example of the MedTech service device message transformation stage.

注意

此图中的 FHIR Observation 不是完整的资源。 要了解整个 FHIR Observation,请参阅本概述中的示例

CollectionFhir

CollectionFhir 是医疗技术服务 FHIR 目标映射使用的根模板类型。 CollectionFhir 是转换阶段使用的所有模板的列表。 可以在 CollectionFhir 中定义一个或多个模板,并针对所有模板评估每个规范化消息。

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

CodeValueFhir

CodeValueFhir 当前是 FHIR 目标映射中唯一支持的模板。 它支持定义代码、有效周期和观察值。 支持多个值类型:SampledDataCodeableConceptQuantityString。 除了这些可配置的值,观察结果资源的标识符以及与适当的设备和患者资源的链接也将被自动处理。

重要

“解决方案类型”指定医疗技术服务如何将设备数据与设备资源和患者资源相关联。 医疗技术服务使用设备标识符患者标识符从 FHIR 服务读取设备和患者资源。 如果指定了 encounter 标识符并从设备数据有效负载中提取它,则在 FHIR 服务上存在具有该标识符的 encounter 的情况下,该标识符会链接到观察。 如果 encounter 标识符已成功规范化,但不存在具有该 encounter 标识符的 FHIR Encounter,则会引发 FhirResourceNotFound 异常。 若要详细了解如何配置医疗技术服务解决方案类型,请参阅配置“目标”选项卡

元素 说明 必须
typeName 此模板应绑定到的度量类型。 注意:至少有一个具有此相同 typeName 的设备映射模板。 typeName 元素用于将 FHIR 目标映射模板链接到一个或多个设备映射模板。 具有相同 typeName 元素的设备映射模板生成使用具有相同 typeName 的 FHIR 目标映射模板进行评估的规范化数据。 True
periodInterval 创建的观察结果应表示的时间段。 支持的值为 0 (一个实例)、60(一个小时)、1440(一天)。 当 Observation 类型为 SampledData 时为 True;对于其他 Observation 类型,则忽略。
category 用于对创建的观察类型进行分类的任意数量的 CodeableConcepts False
codes 应用于创建的观察结果的一个或多个编码 True
codes[].code codes 元素中编码的代码。 True
codes[].system codes 元素中编码的系统。 False
codes[].display codes 元素中编码的显示。 False
value 要在观察结果中提取并表示的值。 有关 value 元素包含的元素的详细信息,请参阅值类型 如果未使用 components 元素,则为 True(除非 Observation 类型为 CodebleConcept,在这种情况下,此元素不仅“不是必需的”,而且会被忽略)。
components 要基于观察结果创建的一个或多个组件。 如果未改用 value 元素,则为 True。
components[].codes 应用于组件的一个或多个编码 False
components[].value 要在组件中提取并表示的值。 有关 components[].value 元素包含的元素的详细信息,请参阅值类型 如果使用 components 元素,则为 True(除非 Observation 类型为 CodebleConcept,在这种情况下,此元素不仅“不是必需的”,而且会被忽略)。

值类型

所有 CodeValueFhir 模板的 value 元素都包含以下元素:

元素 说明 必须
valueType 值的类型。 此值将为“SampledData”、“Quantity”、“CodeableConcept”或“String”,具体取决于值类型。 True
valueName 值的名称。 除非 valueType 为 CodeableConcept,否则为 True。

医疗技术服务 FHIR 目标映射支持这些值类型:

SampledData

表示 SampledData FHIR 数据类型。 Observation 度量值将写入一个值流,此流始于某个时间点,并按定义的时间段向前递增。 如果不存在值,则 E 会写入数据流。 如果该时间段会导致两个或多个值在数据流中占据相同的位置,则会使用最新值。 当使用 SampledData 得到的观察结果被更新时,也会应用这一逻辑。 对于具有 SampledData 值类型的 CodeValueFhir 模板,模板的 value 元素包含以下元素:

元素 说明 必须
defaultPeriod 使用的默认周期(以毫秒为单位)。 True
单位 要设置在 SampledData 原点上的单元。 True

数量

表示 Quantity FHIR 数据类型。 此类型创建单个时间点 Observation。 如果新值到达时包含相同设备标识符、度量类型和时间戳,则上一个 Observation 会更新为新值。 对于具有 Quantity 值类型的 CodeValueFhir 模板,模板的 value 元素包含以下元素:

元素 说明 必须
单位 单位的表示形式。 False
code 单位的代码形式。 False
system 定义代码单位形式的系统。 False

CodeableConcept

表示 CodeableConcept FHIR 数据类型。 不会使用规范化数据模型中的值,在收到此类数据时,使用特定代码创建一个 Observation,表示在特定时间点记录了一个观察值。 对于具有 CodeableConcept 值类型的 CodeValueFhir 模板,模板的 value 元素包含以下元素:

元素 说明 必需
text 纯文本表示形式。 False
codes 应用于创建的观察结果的一个或多个编码 True
codes[].code codes 元素中编码的代码。 True
codes[].system codes 元素中编码的系统。 False
codes[].display codes 元素中编码的显示。 False

字符串

表示 String FHIR 数据类型。 此类型创建单个时间点 Observation。 如果新值到达时包含相同设备标识符、度量类型和时间戳,则上一个 Observation 会更新为新值。 未定义其他元素。

示例

提示

可以使用医疗技术服务映射调试程序帮助创建、更新和排查医疗技术服务设备和 FHIR 目标映射问题。 利用映射调试程序,可以轻松实时查看和进行内联调整,而无需离开 Azure 门户。 映射调试程序还可用于上传测试设备消息,以查看在处理成规范化消息并转换为 FHIR 观察后的外观。

注意

此示例和规范化消息是医疗技术服务设备映射概述的延续。

在此示例中,我们使用规范化的消息捕获 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 Observation 在转换阶段后将如下所示:

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

提示

如需修复常见医疗技术服务部署错误方面的帮助,请参阅排查医疗技术服务部署错误

如需修复医疗技术服务错误方面的帮助,请参阅使用医疗技术服务日志排查错误

后续步骤

医疗技术服务设备映射概述

如何将 CalculatedContent 模板与医疗技术服务设备映射配合使用

如何将 IotJsonPathContent 模板与医疗技术服务设备映射配合使用

如何将自定义函数与医疗技术服务设备映射配合使用

基于医疗技术服务方案的映射示例概述

注意

FHIR® 是 HL7 的注册商标,经 HL7 许可使用。