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 .
El mapa de la entidad msemr_encounter ↔ Encuentro conecta el Encuentro del recurso de Azure FHIR a la entidad de Dataverse msemr_encounter.
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.
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.
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.
Un cambio de datos en un registro de paciente en Dataverse desencadena el complemento de reescritura de Dataverse.
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.
En este ejemplo, el FHIR punto de conexión está configurado para publicar directamente en Azure Health Data Services.
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.
- La URL de la extensión es
http://hl7.org/fhir/StructureDefinition/patient-religion
- Queremos acceder al elemento
valueCodeableConcept
dentro de esta entrada de extensión. - Queremos la primera entrada en la matriz de codificación.
- Queremos asignar la pantalla para mostrar la información en FHIR que está adjunta a un sistema de codificación.
Recurso 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
- La URL de la extensión es
http://hl7.org/fhir/StructureDefinition/patient-religion
- Queremos acceder al elemento
valueCodeableConcept
dentro de esta entrada de extensión. - Queremos asignar el texto para mostrar la información proporcionada a FHIR por Epic.
Recurso de FHIR
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.
En la asignación de entidades para Contacto, seleccione +Nueva asignación de atributos del servicio de actualización.
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.
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.
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.
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.
Ejemplo 7: Establecer el valor predeterminado
En este ejemplo, establezca un valor predeterminado para las asignaciones de valores.
En la asignación de entidades para Contacto, seleccione +Nueva asignación de atributos del servicio de actualización.
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.
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.
Seleccione Guardar.
En Asignación de valores, seleccione la primera fila y seleccione Editar.
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.
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.
En la asignación de entidades para Contacto, seleccione +Nueva asignación de atributos del servicio de actualización.
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).
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.
Añada el valor Mapa de elementos FHIR para el médico principal.
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.
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.
En Configuración del mapa, seleccione Mapas de entidades.
En Nombre de entidad, seleccione msemr_observation.
En mapas de atributos relacionados, seleccione + Nueva asignación de atributos del servicio de actualización.
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.Para Tipo de acción, el único tipo de acción es Codeable Concept.
Añada el valor Mapa de elementos FHIR para el atributo.
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.
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.