Configuración de asignaciones de dispositivos

En este artículo se proporciona información general y se describe cómo configurar las asignaciones de dispositivos del servicio MedTech.

El servicio MedTech requiere dos tipos de asignaciones basadas en JSON. El primer tipo, las asignaciones de dispositivos, es responsable de asignar las cargas de dispositivo enviadas al punto de conexión del centro de eventos del dispositivo del servicio MedTech. La asignación de dispositivos extrae tipos, identificadores de dispositivo, fecha y hora de medición y los valores de medida.

El segundo tipo, asignaciones de destino fast Healthcare Interoperability Resources (FHIR®), controla la asignación del recurso FHIR. Las asignaciones de destino de FHIR permiten la configuración de la longitud del período de observación, el tipo de datos FHIR usado para almacenar los valores y los códigos de terminología.

Nota

Las asignaciones de destino de dispositivo y FHIR se almacenan en un almacenamiento de blobs subyacente y se cargan desde blobs por ejecución de proceso. Al actualizarse, se aplican inmediatamente.

Los dos tipos de asignaciones se componen en un documento JSON en función de su tipo. A continuación, estos documentos JSON se agregan al servicio MedTech a través del Azure Portal. La asignación de dispositivos se agrega a través de la página Asignación de dispositivos y la asignación de destino de FHIR a través de la página Destino .

Introducción a las asignaciones de dispositivos

Las asignaciones de dispositivos proporcionan funcionalidad para extraer el contenido del mensaje del dispositivo en un formato común para su posterior evaluación. Cada mensaje de dispositivo recibido se evalúa con todas las plantillas de asignación de dispositivos. Un único mensaje de dispositivo entrante se puede separar en varios mensajes salientes que se asignan posteriormente a diferentes observaciones en el servicio FHIR. El resultado es un objeto de datos normalizado que representa el valor o los valores analizados por las plantillas de asignación de dispositivos.

Es necesario buscar y extraer algunas propiedades obligatorias en el modelo de datos normalizado:

Propiedad Descripción
Type Nombre/tipo para clasificar la medida. Este valor se usa para enlazar a la asignación de destino de FHIR necesaria. Varias asignaciones pueden generarse en el mismo tipo, lo que le permite asignar representaciones diferentes entre varios dispositivos a una única salida común.
OccurenceTimeUtc Hora a la que se realizó la medida.
DeviceId Identificador del dispositivo. Este valor debe coincidir con un identificador en el recurso de dispositivo que existe en el servicio FHIR de destino.
Propiedades Extraiga al menos una propiedad para que el valor se pueda guardar en el recurso de observación creado. Las propiedades son una colección de pares clave-valor que se extraen durante la normalización.

Importante

El modelo normalizado completo se define mediante la interfaz IMeasurement .

A continuación se muestra un ejemplo de lo que sucede durante el proceso de normalización y transformación dentro del servicio MedTech. Para los fines de la asignación de dispositivos, nos centraremos en el proceso de datos normalizado :

Diagrama del ejemplo de flujo de normalización de datos de IoT acercado.

La carga de contenido en sí es un mensaje Azure Event Hubs, que se compone de tres partes: Body, Properties y SystemProperties. Body es una matriz de bytes que representa una cadena con codificación UTF-8. Durante la evaluación de la plantilla, la matriz de bytes se convierte automáticamente en el valor de cadena. Properties es una colección de valores clave que usa el creador del mensaje. SystemPropertiestambién es una colección de valores de clave reservada por el marco de Azure Event Hubs con entradas rellenadas automáticamente por ella.

{
    "Body": {
        "content": "value"
    },
    "Properties": {
        "key1": "value1",
        "key2": "value2"
    },
    "SystemProperties": {
        "x-opt-sequence-number": 1,
        "x-opt-enqueued-time": "2021-02-01T22:46:01.8750000Z",
        "x-opt-offset": 1,
        "x-opt-partition-key": "1"
    }
}

Validaciones de asignaciones de dispositivos

El proceso de validación valida las asignaciones de dispositivos antes de permitirles guardarlas para su uso. Estos elementos son necesarios en las plantillas de asignación de dispositivos.

Asignaciones de dispositivos

Elemento Obligatorio
TypeName True
TypeMatchExpression True
DeviceIdExpression True
TimestampExpression True
Values[].ValueName True
Values[].ValueExpression True

Nota

Los elementos Values[].ValueName and Values[].ValueExpression solo son necesarios si tiene una entrada de valor en la matriz. Es válido no tener ningún valor asignado. Se usa cuando la telemetría que se envía es un evento.

Por ejemplo:

Algunos escenarios de IoMT pueden requerir la creación de un recurso de observación en el servicio FHIR que no contiene un valor.

CollectionContentTemplate

CollectionContentTemplate es el tipo de plantilla raíz que usa la plantilla de asignaciones de dispositivos del servicio MedTech y representa una lista de todas las plantillas que se usarán durante el proceso de normalización.

Ejemplo

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

Asignación con JSONPath

Los tipos de contenido de asignación de dispositivos admitidos por el servicio MedTech se basan en JSONPath para que coincidan con los valores de asignación y extraídos necesarios. Puede encontrar más información sobre JSONPath aquí. Todos los tipos de plantilla usan la implementación de .NET json para resolver expresiones JSONPath.

Ejemplo

Frecuencia cardíaca

Un mensaje de dispositivo del centro de eventos de Azure Event Hubs recibido por el servicio MedTech

{
    "Body": {
        "heartRate": "78",
        "endDate": "2021-02-01T22:46:01.8750000Z",
        "deviceId": "device123"
    },
    "Properties": {},
    "SystemProperties": {}
}

Plantilla de asignación de dispositivos del servicio MedTech que se podría usar durante el proceso de normalización con el mensaje de dispositivo de ejemplo

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

JSONPath permite buscar coincidencias y extraer valores de un mensaje de dispositivo.

Propiedad Descripción Ejemplo
TypeName Tipo que se va a asociar a las medidas que coinciden con la plantilla. heartrate
TypeMatchExpression Expresión JSONPath que se evalúa con la carga de EventData. Si se encuentra un JToken coincidente, la plantilla se considera una coincidencia. Todas las expresiones posteriores se evalúan con respecto al JToken extraído que coincide aquí. $..[?(@heartRate)]
DeviceIdExpression Expresión JSONPath para extraer el identificador del dispositivo. $.matchedToken.deviceId
TimestampExpression Expresión JSONPath que se va a extraer el valor de marca de tiempo para la propiedad OccurrenceTimeUtc de la medida. $.matchedToken.endDate
PatientIdExpression Obligatorio cuando IdentityResolution está en modo Crear y Opcional cuando IdentityResolution está en modo búsqueda . Expresión que se va a extraer el identificador del paciente. $.matchedToken.patientId
EncounterIdExpression Opcional: expresión para extraer el identificador de encuentro. $.matchedToken.encounterId
CorrelationIdExpression Opcional: expresión para extraer el identificador de correlación. Esta salida se puede usar para agrupar valores en una sola observación en las asignaciones de destino de FHIR. $.matchedToken.correlationId
Values[].ValueName Nombre que se va a asociar al valor extraído por la expresión siguiente. Se usa para enlazar el valor o componente deseado en la plantilla de asignación de destino de FHIR. hr
Values[].ValueExpression Expresión JSONPath para extraer el valor deseado. $.matchedToken.heartRate
Values[].Required Requerirá que el valor esté presente en la carga; Si no se encuentra, no se generará una medida y se creará una excepción InvalidOperationException. true

Otros tipos de plantilla admitidos

Puede definir una o varias plantillas dentro de la asignación de dispositivos del servicio MedTech. Cada mensaje de dispositivo recibido se evalúa con todas las plantillas de asignación de dispositivos.

Tipo de plantilla Descripción
CalculatedContentTemplate Plantilla que admite la escritura de expresiones mediante uno de varios lenguajes de expresión. Admite la transformación de datos mediante el uso de funciones JMESPath.
IotJsonPathContentTemplate Plantilla que admite mensajes enviados desde Azure IoT Hub o la característica De exportación heredada de datos de Azure Iot Central.

Sugerencia

Consulte el artículo del servicio MedTech Solución de errores del servicio MedTech para obtener ayuda para corregir errores comunes del servicio MedTech.

Pasos siguientes

En este artículo, ha aprendido a configurar asignaciones de dispositivos.

Para obtener información sobre cómo configurar las asignaciones de destino de FHIR, consulte

FHIR® es una marca comercial registrada de Health Level Seven International, registrada en la Oficina de Marcas comerciales de LOS EE. UU. y se utiliza con su permiso.