Использование шаблонов IotJsonPathContent с сопоставлением устройств службы MedTech

Примечание

Ресурсы быстрого взаимодействия в сфере здравоохранения (FHIR®) — это открытая спецификация для здравоохранения.

В этой статье представлен обзор использования шаблонов IotJsonPathContent в сопоставлении устройств службы MedTech.

Основы шаблона IotJsonPathContent

Шаблоны IotJsonPathContent можно использовать, когда служба MedTech использует сообщения устройства, маршрутизируемые из Центр Интернета вещей Azure. При использовании шаблонов IotJsonPathContent в сопоставлении устройств служба MedTech извлекает идентификатор устройства и метку времени измерения из метаданных, предоставляемых Центром Интернета вещей. DeviceIdExpression и TimestampExpression не должны включаться в шаблоны IotJsonPathContent.

Шаблоны службы MedTech IotJsonPathContent поддерживают язык выражений JSON JSONPath. Выражения используются для определения шаблона для использования с данным сообщением устройства JSON (например, TypeMatchExpression) и извлечения определенных значений, необходимых для создания нормализованного сообщения (например, PatientIdExpression, ValueExpression и т. д.). Шаблоны IotJsonPathContent похожи на шаблоны CalculatedContent , но DeviceIdExpression и TimestampExpression не поддерживаются.

Примечание

Шаблоны IotJsonPathContent не поддерживают JMESPath.

Выражение определяется следующим образом:

<name of expression> : <the expression>

В следующем примере typeMatchExpression определяется как :

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

Если служба MedTech настроена на прием сообщений устройств из Центра Интернета вещей, вам не нужно использовать шаблоны IotJsonPathContent. Шаблоны CalculatedContent можно использовать при условии, что вы правильно определяете DeviceIdExpression и TimestampExpression.

Шаблоны IotJsonPathContent позволяют сопоставлять и извлекать значения из сообщения устройства, считываемого из концентратора событий Центры событий Azure, с помощью следующих выражений:

Элемент Описание Пример выражения JSONPath
typeMatchExpression Выражение, которое служба MedTech вычисляет на основе полезных данных сообщения устройства. Если служба находит соответствующее значение маркера, она считает шаблон совпадением. $..[?(@heartRate)]
patientIdExpression Выражение для извлечения идентификатора пациента. Требуется , если для параметра Тип разрешения служб MedTech задано значение Создать, и необязательный, если для типа разрешения службы MedTech задано значение Уточняющий запрос. $.SystemProperties.iothub-connection-device-id
encounterIdExpression Необязательно. Выражение для извлечения идентификатора встречи. $.Body.encounterId
correlationIdExpression Необязательно. Выражение для извлечения идентификатора корреляции. Эти выходные данные можно использовать для группировки значений в одно наблюдение в сопоставлении назначения FHIR. $.Body.correlationId
values[].valueExpression Выражение для извлечения нужного значения. $.Body.heartRate

Важно!

Служба MedTech будет использовать идентификатор устройства, определенный в Центре Интернета вещей, в качестве идентификатора устройства ресурса FHIR. Если служба MedTech настроена на использование типа разрешения удостоверения Lookup, ресурс устройства с соответствующим идентификатором устройства должен существовать в службе FHIR, иначе при обработке сообщения устройства возникнет ошибка. Если для типа разрешения удостоверений службы MedTech задано значение Создать, patientIdExpression необходимо включить в сопоставление устройств, чтобы можно было создать новый ресурс Patient и ресурс Устройства, если они еще не существуют.

Примечание

Тип разрешения указывает, как служба MedTech связывает данные устройства с ресурсами устройства и ресурсами пациентов. Служба MedTech считывает ресурсы устройства и пациента из службы FHIR, используя идентификаторы устройств и идентификаторы пациентов. Если идентификатор встречи указан и извлечен из полезных данных устройства, он связывается с наблюдением, если встреча существует в службе FHIR с этим идентификатором. Если идентификатор встречи успешно нормализован, но с этим идентификатором не существует FHIR Encounter, создается исключение FhirResourceNotFound . Дополнительные сведения о настройке типа разрешения службы MedTech см. в разделе Настройка вкладки Назначение.

Языки выражений

JSONPath является языком выражений по умолчанию, и включение языка выражений в шаблон IotJsonPathContent не поддерживается. При попытке указать язык выражений в объекте expression шаблон IotJsonPathContent, содержащий объект выражения, завершается ошибкой.

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

Совет

Дополнительные сведения о JSONPath см. в статье JSONPath — XPath для JSON. Шаблоны IotJsonPathContent используют реализацию JSON .NET для разрешения выражений JSONPath.

Пример

Когда служба MedTech обрабатывает сообщение устройства, для оценки сообщения используются шаблоны в CollectionContent. Используется typeMatchExpression для определения того, следует ли использовать шаблон для создания нормализованного сообщения из сообщения устройства. typeMatchExpression Если значение принимает значение true, значение valueExpression используется для поиска и извлечения значений JSON из сообщения устройства и создания нормализованного сообщения.

Совет

Visual Studio Code с расширением Центр Интернета вещей Azure рекомендуется отправлять сообщения устройств Интернета вещей в Центр Интернета вещей для тестирования и устранения неполадок.

Отладчик сопоставления службы MedTech можно использовать для создания, обновления и устранения неполадок устройства службы MedTech и сопоставлений назначения FHIR. Отладчик сопоставления позволяет легко просматривать и вносить встроенные корректировки в режиме реального времени без необходимости покидать портал Azure. Отладчик сопоставления также можно использовать для отправки сообщений тестовых устройств, чтобы увидеть, как они будут выглядеть после обработки в нормализованные сообщения и преобразования в наблюдения FHIR.

В этом примере мы используем сообщение устройства, которое собирает heartRate данные:

{
    "PatientId": "patient1",
    "HeartRate" : "78"
}

Примечание

Чтобы избежать спуфинга устройств в сообщениях, передаваемых с устройства в облако (D2C), Центр Интернета вещей Azure дополнить все сообщения устройства дополнительными свойствами перед их маршрутизацией в концентратор событий. Например: Свойства: iothub-creation-time-utc и SystemProperties: iothub-connection-device-id. Дополнительные сведения см. в разделе Свойства защиты от спуфингов.

patientIdExpression требуется только для служб MedTech в режиме создания ; Однако если используется поиск , в целевой службе FHIR должен существовать ресурс Устройства с соответствующим идентификатором устройства. В этих примерах предполагается, что служба MedTech находится в режиме создания . Дополнительные сведения о свойствах создания и поиска назначения см. в разделе Настройка вкладки Назначение.

Центр Интернета вещей дополняет и направляет сообщение устройства в концентратор событий, прежде чем служба MedTech считывает сообщение устройства из концентратора событий:

{
    "Body": {
        "PatientId": "patient1",
        "HeartRate": "78"
    },
    "SystemProperties": {
        "iothub-enqueuedtime": "2023-07-25T20:41:26.046Z",
        "iothub-connection-device-id": "sampleDeviceId"
    },
    "Properties": {
        "iothub-creation-time-utc": "2023-07-25T20:41:26.046Z"
    }
}   

Мы используем это сопоставление устройств для этапа нормализации:

{
    "templateType": "CollectionContent",
    "template": [
        {
            "templateType": "IotJsonPathContent",
            "template": {
                "typeName": "HeartRate",
                "typeMatchExpression": "$..[?(@Body.HeartRate)]",
                "patientIdExpression": "$.Body.PatientId",
                "values": [
                    {
                        "required": true,
                        "valueExpression": "$.Body.HeartRate",
                        "valueName": "HeartRate"
                    }
                ]
            }
        }
    ]    
}

Полученное нормализованное сообщение будет выглядеть следующим образом после этапа нормализации:

{
    "type": "HeartRate",
    "occurrenceTimeUtc": "2023-07-25T20:41:26.046Z",
    "deviceId": "sampleDeviceId",
    "patientId": "patient1",
    "properties": [
        {
            "name": "HeartRate",
            "value": "78"
        }
    ]
}

Совет

Сведения об устранении распространенных ошибок развертывания службы MedTech см. в статье Устранение ошибок развертывания службы MedTech.

Сведения об устранении ошибок службы MedTech см. в статье Устранение ошибок с помощью журналов службы MedTech.

Дальнейшие действия

Из этой статьи вы узнали, как использовать шаблоны IotJsonPathContent с сопоставлением устройств службы MedTech.

Сведения о развертывании службы MedTech с включенной маршрутизацией сообщений устройства через Центр Интернета вещей Azure см. в разделе

Общие сведения о сопоставлении назначения FHIR службы MedTech см. в разделе

Общие сведения о примерах сопоставлений на основе сценариев службы MedTech см. в разделе

FHIR® является зарегистрированным товарным знаком Health Level Seven International, зарегистрированным в Управлении товарных знаков США и используется с их разрешения.