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 :
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. SystemProperties
tambié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.