Compartir a través de


Asignaciones del kit de herramientas de integración de datos: ejemplos y casos de uso

El kit de herramientas de integración de datos ofrece una amplia colección de asignaciones predeterminadas creadas para cumplir con la especificación HL7 FHIR.

Las asignaciones de entidad predeterminadas y las asignaciones de atributos predeterminadas se implementan como registros de Dataverse y son altamente configurables para adaptarse a los requisitos de su solución. Este artículo incluye algunos ejemplos asociados con el uso de estas asignaciones.

Para obtener información sobre cómo configurar estas asignaciones, revise Configurar asignaciones de entidades y Configurar asignaciones de atributos. Las API de atención médica de Dataverse, el proceso de escritura diferida y las tablas de datos de salud virtuales utilizan las mismas asignaciones configuradas.

Ejemplos de asignaciones de entidades

Esta sección enumera algunos ejemplos del uso de asignaciones de entidades.

Ejemplo 1: encuentro con el paciente

Cuando agrega un encuentro con un paciente a su EHR (registros médicos electrónicos) del paciente, la asignación de entidades proporciona las reglas de transformación que las API de atención médica de Dataverse necesitan para transformar FHIR en registros de Dataverse .

  1. El mapa de la entidad msemr_encounter ↔ Encuentro conecta el Encuentro del recurso de Azure FHIR a la entidad de Dataverse msemr_encounter.

    Una captura de pantalla que muestra el ejemplo de mapa de entidad para el encuentro con el paciente.

  2. Los cambios de datos en el recurso Encounter en el sistema de registro de salud del cliente activan un nuevo mensaje para Dataverse Healthcare APIs. Por ejemplo, si Dataverse healthcare API Azure Logic App se implementa usando la plantilla de canalización de datos de atención médica, se publica un nuevo grupo de FHIR en el almacenamiento blob. Luego, la aplicación lógica procesa este paquete y lo publica en Dataverse a través de Dataverse Healthcare APIs.

  3. Dataverse Healthcare APIs usan la asignación de entidades msemr_encounter ↔ Encounter. Los mapas de atributos relacionados transforman los recursos FHIR entrantes en sus registros representativos en Dataverse.

Ejemplo 2: actualización del paciente en Dataverse y reescritura

Este ejemplo considera un escenario en el que actualiza el registro de un paciente en Dataverse y desea que ese cambio se vuelva a escribir en su sistema EMR (registros médicos electrónicos), a través de Azure Health Data Services.

  1. El contacto ↔ Paciente de la asignación de entidades del kit de herramientas de integración de datos relaciona el recurso Azure FHIR Paciente con la entidad de Dataverse Contacto.

    Una captura de pantalla que muestra el ejemplo de mapa de entidad para la actualización del paciente en Dataverse.

  2. Un cambio de datos en un registro de paciente en Dataverse desencadena el complemento de reescritura de Dataverse.

  3. Este complemento de Dataverse envía un mensaje sobre el registro modificado al FHIR de salida punto de conexión configurado en la sección de reescritura de la configuración de integración.

  4. En este ejemplo, el FHIR punto de conexión está configurado para publicar directamente en Azure Health Data Services.

  5. También puede configurar una aplicación de retransmisión, como una aplicación lógica de Azure o una función de Azure, que puede publicar el mensaje tanto en su servicio EMR como en Azure Health Data Services.

    Nota

    Recomendamos que mantenga sincronizados los datos de su paciente, médico, clínico administrado y clínico de referencia con Microsoft Cloud for Healthcare.

Para obtener más información sobre cómo configurar la escritura diferida, vaya a Descripción general de la escritura diferida para las Dataverse Healthcare APIs.

Ejemplos de asignación de atributos

Esta sección incluye ejemplos para configurar varios tipos de asignaciones de atributos que podría encontrar.

Ejemplo 1: Campo existente de cadena simple

El siguiente ejemplo obtendría el apellido de un paciente de FHIR para enviarlo a Dataverse o actualizar el valor de atributo lastname de Dataverse hacia el elemento family en FHIR.

`{"s": "$.name[?(@.use=='usual')].family"}`

Esta asignación supone que el valor name siempre existe y se puede ubicar a través de la JSONPath definida en el recurso FHIR.

Ejemplo 2: Campo existente o no existente

El siguiente ejemplo obtendría/actualizaría el campo city de address[0] si existiera. Si esto fuera una actualización de Dataverse y address[0] no existiera en FHIR, crearía un address[0] principal y establecería el valor city de Dataverse. También crea marcadores de posición o valores predeterminados para otros atributos de Dataverse que podría faltar en FHIR.

{
    "s": "$.address[0].city",
    "c": {
           "p": "address[0]",
           "a": [
                  {
                    "line": ["x"]
                  },
                  {
                    "city": "%"
                  },
                  {
                    "state": "x"
                  },
                  {
                    "postalCode": "x"
                  },
                  {
                    "country": "x"
                  }
                ]
         }
}

Nota

Para los valores de cadena, el conjunto de valores es la cadena literal definida en la matriz de atributos, a menos que sea una de las secuencias de caracteres especiales. Estas secuencias de caracteres especiales se reemplazarán con valores de la siguiente manera:

  • % - Copia el valor del atributo de Dataverse.
  • %% - Copia el tipo del recurso de referencia FHIR (ejemplo, Paciente).
  • %%% - Copia el tipo e id. de recurso del recurso de referencia FHIR (ejemplo, Paciente/1234).

Ejemplo 3: Nombre del paciente

Aplique las reglas del apartado anterior y use el siguiente ejemplo para actualizar el nombre del paciente.

{"s": "$.name[?(@use=='official')].given[0]", "c": {"p": "name[0]", "a": [{"use": "official"}, {"family": "x"}, {"given": ["%"]}]} }
  • "s" = extraer el given name de un paciente FHIR para cargarlo en Dataverse
  • "c" = crear el given name de un paciente cuando no existe en FHIR
  • "p" = objeto primario de la entrada a crear
  • "a" = matriz de parámetros a usar al crear "c"

Nota

Los paréntesis {} contienen la expresión, mientras que las comas "," separan los segmentos de la expresión. Sin embargo, los corchetes de matriz [] significan que la expresión contiene dos o más segmentos completos.

"s": "$.name[?(@use=='official')].given[0]"
"c": {"p": "name[0]", "a": [{"use": "official"}, {"family": "x"}, {"given": ["%"]}]

Ejemplo 4: Codeable Concept

Coincidencia de codeable concepts de FHIR de FHIR a Dataverse es lo mismo que hacer coincidir elementos de cadena JSON. La única diferencia es que se necesita un nivel adicional para llegar al detalle.

  1. La URL de la extensión es http://hl7.org/fhir/StructureDefinition/patient-religion
  2. Queremos acceder al elemento valueCodeableConcept dentro de esta entrada de extensión.
  3. Queremos la primera entrada en la matriz de codificación.
  4. Queremos asignar la pantalla para mostrar la información en FHIR que está adjunta a un sistema de codificación.

Recurso de FHIR

Captura de pantalla que muestra los codeable concepts de FHIR

JSONPath

{"s": "$.extension[?(@.url=='http://hl7.org/fhir/StructureDefinition/patient-religion')].valueCodeableConcept.coding[0].display"}

Ejemplo 5: Información de texto de asignación

  1. La URL de la extensión es http://hl7.org/fhir/StructureDefinition/patient-religion
  2. Queremos acceder al elemento valueCodeableConcept dentro de esta entrada de extensión.
  3. Queremos asignar el texto para mostrar la información proporcionada a FHIR por Epic.

Recurso de FHIR

Captura de pantalla mostrando los codeable concepts FHIR para el texto de ejemplo

JSONPath

{"s": "$.extension[?(@.url=='http://hl7.org/fhir/StructureDefinition/patient-religion')].valueCodeableConcept.coding[0].text"}

Ejemplo 6: Valor asignado

Para otro ejemplo, puede crear una asignación de atributos para género. En Dataverse, el nombre del atributo es gendercode.

  1. En la asignación de entidades para Contacto, seleccione +Nueva asignación de atributos del servicio de actualización.

  2. Dado que el género es una lista de selección, Tipo de acción es Valor asignado.

    Género en Dataverse es una lista de selección. Debido a que también es una lista de selección en FHIR, asigna los valores de la lista de selección de FHIR a los valores de lista de selección de Dataverse.

  3. Seleccione Asignación del elemento de FHIR para agregar la asignación de elementos de FHIR para el género. En este ejemplo, es una cadena de búsqueda JSON que le permite acceder al elemento FHIR que es Género.

  4. Seleccione Guardar.

    En segundo plano, el sistema determina que el género es conjunto de opciones. Necesita asignar varios valores a este conjunto de opciones.

  5. En Asignaciones de valores, ingrese el valor FHIR en Azure para realizar asignaciones para el conjunto de opciones. Por ejemplo, especifique hombre para la opción Hombre (el valor de Dataverse es 1) y especifique mujer para la opción Mujer (el valor de Dataverse es 2).

    Seleccione Guardar.

    Una captura de pantalla que muestra las asignaciones de valores

Ejemplo 7: Establecer el valor predeterminado

En este ejemplo, establezca un valor predeterminado para las asignaciones de valores.

  1. En la asignación de entidades para Contacto, seleccione +Nueva asignación de atributos del servicio de actualización.

  2. Para Nombre de atributo, seleccione Tipo de contacto (msemr_contacttype).

    Tipo de contacto en Dataverse es un conjunto de opciones. Debido a que está trayendo pacientes, se recomienda que Tipo de contacto sea siempre el valor predeterminado.

  3. Para Tipo de acción, seleccione Establecer valor predeterminado.

    No se necesita un mapa de elementos FHIR porque solo está configurando el valor predeterminado. En este caso, FHIR no tiene el concepto de Tipo de contacto, pero Dataverse lo necesita.

  4. Seleccione Guardar.

  5. En Asignación de valores, seleccione la primera fila y seleccione Editar.

  6. En Asignación de valores de atributo, seleccione Paciente para el campo Etiqueta OptionSet.

    El campo Valor muestra el valor predeterminado para tipo de contacto. Dataverse Healthcare API completa automáticamente el valor de Dataverse.

    Una captura de pantalla que muestra un ejemplo para establecer el valor predeterminado para una asignación de atributos

  7. Seleccione Guardar y cerrar.

    En Asignación de valores, se establece el valor predeterminado de Dataverse. Cada vez que Dataverse Healthcare API entra y crea un paciente, establece el campo Tipo de contacto en Paciente.

Ejemplo 8: Búsqueda

Los siguientes pasos proporcionan un ejemplo de asignación de un atributo de Dataverse del tipo búsqueda.

  1. En la asignación de entidades para Contacto, seleccione +Nueva asignación de atributos del servicio de actualización.

  2. Para Nombre de atributo, seleccione Médico principal (msemr_generalpractitioner).

    El Tipo de atributo del atributo Médico principal es Búsqueda (una operación de búsqueda en la entidad Contacto).

  3. Para Tipo de acción, el único tipo de acción es Referencia de FK (referencia de clave externa). Debe indicar a Dataverse Healthcare API cómo configurar esta búsqueda.

  4. Añada el valor Mapa de elementos FHIR para el médico principal.

    Una captura de pantalla que muestra el valor del mapa del elemento FHIR.

  5. Para Referencia de recursos de FHIR, seleccione Médico.

    En Dataverse, la entidad de referencia para el médico principal es Contacto. La referencia del recurso de FHIR es Médico.

  6. Seleccione Guardar.

Si un atributo de Dataverse es del tipo búsqueda, solo puede crear una asignación que sea una referencia de clave externa (FK). Para configurar la referencia de FK, especifique el recurso de FHIR al que está asignado esa entidad de destino.

Ejemplo 9: Asignar Codeable Concept

El siguientes procedimiento es un ejemplo de asignación de un atributo de Dataverse que es del tipo codeable concept.

  1. En Configuración del mapa, seleccione Mapas de entidades.

  2. En Nombre de entidad, seleccione msemr_observation.

  3. En mapas de atributos relacionados, seleccione + Nueva asignación de atributos del servicio de actualización.

  4. Para Nombre de atributo, seleccione Código de denominador de relación (msemr_valueratiodenominatorcode).

    El Tipo de atributo de este atributo es Búqeuda. Es una operación búsqueda de la entidad msemr_codeableconcept, que es una entidad especial en el modelo de datos. Este tipo de entidad se gestiona de forma diferente a otras entidades.

  5. Para Tipo de acción, el único tipo de acción es Codeable Concept.

  6. Añada el valor Mapa de elementos FHIR para el atributo.

  7. Para Tipo de codeable concept, seleccione Código de unidad de cantidad.

    Un tipo codeable concept es similar a un conjunto de opciones grande, y cada valor en conjunto de opciones tiene un tipo. Le ofrece una forma de agrupar y filtrar conjuntos de opciones. Tenga en cuenta que el campo Valor tipo Codeable Concept se rellena automáticamente cuando selecciona Código de cantidad de unidad como el tipo codeable concept. No era necesario conocer el valor del conjunto de opciones para la cantidad del código unitario.

    Una captura de pantalla que muestra un ejemplo de tipo de codeable concept.

  8. Seleccione Guardar.

Ahora, cuando Dataverse crea una observación, necesita establecer el codeable concept. Dataverse encuentra ese codeable concept buscando en las tablas todos los codeable concepts con el tipo Código de unidad de cantidad que coincida con el valor del código. Un codeable concept se compone de un texto, un código y el tipo. FHIR conoce el código y el texto, pero no sabe de qué tipo de codeable concept extraer.

Limitaciones actuales

  • La inserción de matrices dinámicas o creación de posiciones no pueden ser absolutas. La selección es dinámica utilizando JSONPath.
  • Los datos de valor deben ser formateados correctamente en JSON para campos como el atributo de destino UTF-8 cadenas, fechas JSON UTC y valores booleanos.

Herramientas

Puede usar varias herramientas para probar cadenas de JSONPath, incluidas las siguientes aplicaciones:

Para obtener más información sobre el uso de estas herramientas, vaya a Guía de JSONPath.