Introducción a la asignación de destinos de FHIR del servicio de tecnologías médicas

En este artículo se proporciona información general sobre la asignación de destinos de FHIR® del servicio de tecnologías médicas.

El servicio de tecnologías médicas requiere dos tipos de asignaciones de JSON que se agregan a este servicio mediante Azure Portal o la API de Azure Resource Manager. La asignación de dispositivos es el primer tipo y controla los valores de asignación de los datos del dispositivo enviados al servicio de tecnologías médicas, a un objeto de datos normalizado interno. La asignación de dispositivos contiene expresiones que el servicio de tecnologías médicas usa para extraer tipos, identificadores de dispositivo, fecha y hora de medición y valores de medida. La asignación de destinos0 de FHIR es el segundo tipo y controla cómo se asignan los datos normalizados a observaciones de FHIR.

Nota:

Las asignaciones de dispositivos y de destinos de FHIR se vuelven a evaluar cada vez que se procesa un mensaje de dispositivo. Las actualizaciones de cualquiera de las asignaciones surtirán efecto inmediatamente.

Aspectos básicos de la asignación de destinos de FHIR

La asignación de destinos de FHIR controla cómo se asignan los datos normalizados extraídos de un mensaje de dispositivo a una observación de FHIR.

  • ¿Debe crearse un recurso de observación para un momento o para un período de una hora?
  • ¿Qué códigos se deben agregar al recurso de observación?
  • ¿Se debe representar el valor como SampledData o como Quantity?

Estos tipos de datos son todas las opciones que controla la configuración de asignación de destinos de FHIR.

Una vez que los datos del dispositivo se transforman en un modelo de datos normalizado, los datos normalizados se recopilan para su transformación en una observación de FHIR. Si el tipo de observación es SampledData, los datos se agrupan según el identificador del dispositivo, el tipo de medida y el período de tiempo (el período de tiempo puede ser 1 hora o 24 horas). La salida de esta agrupación se envía para la conversión en una única observación de FHIR que representa el período de tiempo de ese tipo de datos. Para otros tipos de observación (Quantity, CodeableConcept y String) los datos no se agrupan, sino que cada medida se transforma en una única observación que representa un momento dado.

Sugerencia

Para más información sobre cómo el servicio de tecnologías médicas procesa los datos de mensajes de dispositivos en observaciones de FHIR para la conservación en el servicio FHIR, consulte Introducción a las fases de procesamiento de los mensajes de dispositivos del servicio de tecnologías médicas.

En este diagrama se proporciona una ilustración de lo que sucede durante la fase de transformación dentro del servicio de tecnologías médicas.

Diagram example of the MedTech service device message transformation stage.

Nota:

La observación de FHIR en este diagrama no es el recurso completo. Consulte Ejemplo en esta introducción para ver toda la observación de FHIR.

CollectionFhir

CollectionFhir es el tipo de plantilla raíz que usa la asignación de destinos de FHIR del servicio de tecnologías médicas. CollectionFhir es una lista de todas las plantillas que se usan durante la fase de transformación. Puede definir una o varias plantillas dentro de CollectionFhir, con cada mensaje normalizado evaluado en todas las plantillas.

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

CodeValueFhir

CodeValueFhir es actualmente la única plantilla admitida en la asignación de destinos de FHIR. Permite definir los códigos, el período efectivo y el valor del recurso de observación. Se admiten varios tipos de valor: SampledData, CodeableConcept, Quantity y String. Junto con estos valores configurables, el identificador del recurso Observation (Observación) y la vinculación a los recursos de dispositivo y paciente adecuados se administran automáticamente.

Importante

El tipo de resolución especifica cómo el servicio de tecnologías médicas asocia los datos del dispositivo a los recursos del dispositivo y a los recursos del paciente. El servicio de tecnologías médicas lee los recursos de dispositivo y paciente del servicio FHIR mediante identificadores de dispositivo e identificadores de paciente. Si se especifica un identificador de encuentro y se extrae de la carga de datos del dispositivo, se vinculará a la observación si existe un encuentro en el servicio FHIR con ese identificador. Si el identificador de encuentro se normaliza correctamente, pero no existe ningún encuentro de FHIR con ese identificador, se produce una excepción FhirResourceNotFound. Para más información sobre la configuración del tipo de resolución del servicio de tecnologías médicas, consulte Configuración de la pestaña Destino.

Elemento Descripción Obligatorio
typeName Tipo de medida a la que se debe enlazar esta plantilla. Nota: Debe haber al menos una plantilla de asignación de dispositivos que tenga este mismo elemento typeName. typeName se usa para vincular una plantilla de asignación de destinos de FHIR a una o varias plantillas de asignación de dispositivos. Las plantillas de asignación de dispositivos con el mismo elemento typeName generan datos normalizados que se evalúan con una plantilla de asignación de destinos de FHIR que tiene el mismo elemento typeName. True
periodInterval Tiempo que debe representar el recurso de observación creado. Los valores admitidos son 0 (una instancia), 60 (una hora), 1440 (un día). Es True cuando el tipo de observación es SampledData; se omite en otros tipos de observación.
category Cualquier número de CodeableConcepts para clasificar el tipo de recurso de observación que se ha creado. False
codes Uno o varios valores de Coding que aplicar al recurso de observación creado. True
codes[].code El código de una codificación del elemento codes. True
codes[].system El sistema de una codificación del elemento codes. False
codes[].display La presentación de una codificación del elemento codes. False
value Valor que se va a extraer y representar en el recurso de observación. Para más información sobre los elementos que contiene el elemento value, consulte Tipos de valor. Es True cuando no se usa el elemento components (a menos que el tipo de observación sea CodebleConcept, en cuyo caso este elemento no solo no es "obligatorio", sino que también se omite).
de alarma uno o más componentes que se van a crear en el recurso de observación. True cuando el elemento value no se usa en su lugar.
components[].codes Uno o varios valores de Coding que aplicar al componente. False
components[].value Valor que se va a extraer y representar en el componente. Para más información sobre los elementos que contiene el elemento components[].value, consulte Tipos de valor. Es True cuando se usa el elemento components (a menos que el tipo de observación sea CodebleConcept, en cuyo caso este elemento no solo no es "obligatorio", sino que también se omite).

Tipos de valor

Todos los elementos value de las plantillas CodeValueFhir contienen estos elementos:

Elemento Descripción Obligatorio
valueType Tipo del valor. Este valor sería "SampledData", "Quantity", "CodeableConcept" o "String" en función del tipo de valor. True
valueName Nombre del valor. Es True a menos que valueType sea CodeableConcept.

Estos tipos de valor se admiten en la asignación de destino de FHIR del servicio de tecnologías médicas:

SampledData

Representa el tipo de datos SampledData de FHIR. Las medidas del recurso de observación se escriben en un flujo de valores a partir de un momento dado que se incrementa con el período definido. Si no hay ningún valor, se escribe E en el flujo de datos. Si en el período dos valores o más ocupan la misma posición en el flujo de datos, se usa el más reciente. La misma lógica se aplica cuando se actualiza un recurso de observación mediante SampledData. Para una plantilla CodeValueFhir con el tipo de valor SampledData, el elemento value de la plantilla contiene los siguientes elementos:

Elemento Descripción Obligatorio
defaultPeriod Período predeterminado, en milisegundos, que se va a usar. True
unidad Unidad que se va a establecer en el origen de SampledData. True

Cantidad

Representa el tipo de datos Quantity de FHIR. Este tipo crea un único momento dado, Observación. Si llega un nuevo valor que contiene el mismo identificador de dispositivo, tipo de medida y marca de tiempo, la observación anterior se actualiza al nuevo valor. Para una plantilla CodeValueFhir con el tipo de valor Quantity, el elemento value de la plantilla contiene los siguientes elementos:

Elemento Descripción Obligatorio
unidad Representación de la unidad. False
code Formato codificado de la unidad. False
fría Sistema que define el formato de unidad codificado. False

CodeableConcept

Representa el tipo de datos CodeableConcept de FHIR. El valor del modelo de datos normalizado no se usa y, en su lugar, cuando se recibe este tipo de datos, se crea una observación con un código específico que representa que se registró una observación en un momento dado concreto. Para una plantilla CodeValueFhir con el tipo de valor CodeableConcept, el elemento value de la plantilla contiene los siguientes elementos:

Elemento Descripción Obligatorio
texto Representación de texto sin formato. False
codes Uno o varios valores de Coding que aplicar al recurso de observación creado. True
codes[].code El código de una codificación del elemento codes. True
codes[].system El sistema de una codificación del elemento codes. False
codes[].display La presentación de una codificación del elemento codes. False

String

Representa el tipo de datos String de FHIR. Este tipo crea un único momento dado, Observación. Si llega un nuevo valor que contiene el mismo identificador de dispositivo, tipo de medida y marca de tiempo, la observación anterior se actualiza al nuevo valor. No se define ningún otro elemento.

Ejemplo

Sugerencia

Puede usar el depurador de asignaciones del servicio de tecnologías médicas para obtener ayuda para crear, actualizar y solucionar problemas de las asignaciones de destino de FHIR y del dispositivo del servicio de tecnologías médicas. El depurador de asignaciones le permite ver y realizar fácilmente ajustes insertados en tiempo real, sin tener que salir de Azure Portal. El depurador de asignaciones también se puede usar para cargar mensajes de dispositivo de prueba para ver su aspecto después de procesarse en mensajes normalizados y transformarse en observaciones de FHIR.

Nota:

Este ejemplo y mensaje normalizado es una continuación de Introducción a la asignación de dispositivos del servicio de tecnologías médicas.

En este ejemplo, se usa un mensaje normalizado que captura datos de tipo heartRate:

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

Vamos a usar esta asignación de destino de FHIR para la fase de transformación:

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

La observación de FHIR resultante tendrá este aspecto después de la fase de transformación:

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

Sugerencia

Para obtener ayuda para corregir errores comunes de implementación del servicio de tecnologías médicas, consulte Solución de errores de implementación del servicio de tecnologías médicas.

Para obtener ayuda para corregir los errores del servicio de tecnologías médicas, consulte Solución de errores mediante los registros del servicio de tecnologías médicas.

Pasos siguientes

Introducción a la asignación de dispositivos del servicio de tecnologías médicas

Uso de plantillas CalculatedContent con la asignación de dispositivos del servicio de tecnologías médicas

Uso de plantillas IotJsonPathContent con la asignación de dispositivos del servicio de tecnologías médicas

Uso de funciones personalizadas con la asignación de dispositivos del servicio de tecnologías médicas

Introducción a los ejemplos de asignaciones basadas en escenarios del servicio de tecnologías médicas

Nota:

FHIR® es una marca registrada de HL7 y se usa con su permiso.