Compartir a través de


Dataverse API de atención médica: use la plantilla de canalización de datos de Healthcare para implementar Azure Logic Apps

Este artículo proporciona guías paso a paso para usar una plantilla para implementar un grupo de Azure Logic Apps que ingieren datos FHIR en Dataverse Healthcare APIs, Azure Health Data Services, o ambos. Esta solución funciona como un flujo de aplicación lógica listo para la empresa que sirve como relevo entre Azure Health Data Services y Dataverse API de atención médica y también administra la lógica de reintento y el manejo de excepciones. El flujo se basa en un desencadenador de Azure Blob Storage en lugar del Activador HTTP utilizado en la configuración manual.

Esta flujo de trabajo está disponible para su implementación como una plantilla de Azure Resource Manager (ARM) titulada Plantilla de canalización de datos sanitarios. Puede implementar la plantilla desde Centro de soluciones de Microsoft Cloud. Esta oferta es una solución más resistente y compatible proporcionada por Microsoft Cloud for Healthcare. Solo tiene que realizar algunas configuraciones manuales básicas después de implementar la plantilla.

Nota

  • Este flujo de aplicación lógica se porporciona como un punto de entrada para los datos de registros sanitarios electrónicos (HME) entrantes, lo que garantiza que los datos de FHIR se publiquen en los servicios correctos. Está destinado a ser actualizado por los usuarios y no es una solución final en su estado actual.

  • No es necesario que estos servicios de aplicaciones lógicas publiquen datos de FHIR en los puntos finales de la Dataverse Healthcare API. Puede elegir crear su propia solución para transmitir datos de su EHR a las API y manejar las respuestas.

Los servicios de aplicación lógica dependen de un desencadenador de Azure Blob Storage que inicia el procesamiento asincrónico de los paquetes publicados en una ubicación de almacenamiento configurable. Esta opción gestiona cargas más pesadas para clientes empresariales e incluye pasos extra de manejo de excepciones. Sin embargo, debe realizar pruebas exhaustivas con las cargas diarias previstas.

Después de la implementación, la aplicación lógica se puede ampliar para adaptarse a las necesidades particulares de su sistema.

Importante

Esta plantilla ARM solo es compatible con Microsoft Cloud for Healthcare segunda ola de lanzamientos de 2022 y versiones posteriores. Para versiones anteriores, elimine la acción Establezca requestBody en respuesta FHIR en caso de éxito antes de iniciar una ejecución.

La configuración incluye los siguientes pasos:

Requisitos previos

Debe asegurarse de que su entorno cumple los siguientes requisitos antes de implementar la plantilla:

Diseño

El siguiente diagrama ilustra el diseño de la canalización que se implementa a través de la plantilla:

Una captura de pantalla que muestra el diseño y el flujo de la plantilla.

La plantilla ARM implementa varias Logic Apps modularizadas. Incluye las tres Logic Apps siguientes:

Aplicación lógica Descripción
Proceso de agrupación de FHIR La primera instancia de aplicación lógica que se activa cuando se carga un paquete en el almacenamiento de blobs. Esta aplicación lógica determina si se debe publicar el paquete en FHIR o directamente en Dataverse.
Enviar agrupación a FHIR La segunda aplicación lógica que se activa desde la aplicación lógica Procesar agrupación de FHIR, cuando elige publicar la agrupación en FHIR. Esta aplicación lógica procesa la agrupación de solicitud y la publica en el servidor FHIR. Después de publicar el paquete en el servidor FHIR, la aplicación lógica retransmite el paquete a la siguiente aplicación lógica Enviar agrupación a Dataverse para su posterior procesamiento.
Enviar agrupación a Dataverse La aplicación lógica final se activó desde la aplicación lógica Procesar agrupación de FHIR o Enviar agrupación a FHIR. Procesa el paquete de solicitudes y lo publica en Dataverse. Esta aplicación lógica también controla la limpieza del contenedor de paquetes moviendo el paquete de solicitudes al contenedor bundleserror o bundlesarchive.

Parámetros de plantilla

Parámetro Descripción
Ubicación del recurso La región de Azure donde se crearían los recursos. El valor predeterminado de este parámetro es la región que se usó al crear el grupo de recursos.
URL de Dataverse La URL del entorno de Dataverse de Microsoft Cloud for Healthcare. Por ejemplo, https://*orgname*.crm.dynamics.com
Publicar en el servidor FHIR Un valor booleano. Si se establece en verdadero, el paquete se publicará en el servidor FHIR.
URL del servidor FHIR La dirección URL de su servidor FHIR. Por ejemplo, https://*fhirserver*.azurewebsites.net
Este parámetro solo es necesario si está publicando en el servidor FHIR antes de publicar en el punto de conexión de la API de Dataverse de la operación upsert.
Valor único La cadena única utilizada para generar nombres de recursos. Este valor predeterminado es la función uniqueString. Puede invalidar este valor si es necesario.

Recursos implementados

La plantilla implementa los siguientes recursos en su entorno:

Recurso Descripción
Identidad administrada El nombre de la identidad administrada tiene el formato mi_UniqueValue. A la aplicación lógica se le asignaría esta identidad administrada y la identidad administrada tendría acceso a la cuenta de almacenamiento, el servidor FHIR y el entorno de Dataverse.
Cuenta de Azure Storage El nombre de la cuenta de almacenamiento tiene el formato sa_UniqueValue. Junto con la cuenta de almacenamiento, la plantilla también implementa los siguientes tres contenedores: bundles, bundlesarchive y bundleserror.
Asignación de roles Asigna el rol Storage Blob Data Contributor en la cuenta de almacenamiento a la identidad administrada.
Azure Event Grid El nombre de Event Grid tiene el formato eg_UniqueValue. Todos los eventos de blob se publicarán en este Event Grid.
Azure Service Bus El nombre de Service Bus tiene el formato sb_UniqueValue. Event Grid publicaría eventos en este Service Bus. Nombre de la cola es bundleCreated.
Regla de autorización Crea una regla de autorización Escucha en el Service Bus con el nombre bundleauthlisten.
Aplicaciones lógicas de Azure Un conjunto de flujo de trabajo de aplicación lógica relacionado del tipo Consumo. El flujo de trabajo se desencadena a partir de los eventos de Service Bus. Estas aplicaciones lógicas procesan la agrupación FHIR entrante y la publica en los puntos de conexión configurados.

Cada aplicación lógica recibe un nombre mediante el valor único proporcionado durante la implementación:
1. laprocessfhirbundle_UniqueValue
2. lasendbundletodataverse_UniqueValue
3. lasendbundletofhir_UniqueValue
Conexión API Se requieren varias conexiones API para Logic Apps.

Salida

En función de si la ejecución finaliza con éxito o error, se crea un blob con el nombre originalblobname_response.json en el bundlesarchive o la carpeta bundleserror con el siguiente esquema:

{
  "dataverseResponse": "<The response from the Dataverse healthcare API post the call.>",
  "fhirServerResponse": "<The response from the FHIR server call if the "Post to FHIR server" parameter value was set to True.>",
  "statusMessage": "<Summary of the responses. In case of a failure, the message provides details about how many resources failed to post to the FHIR server and to Dataverse.>",
  "statusCode": "<Code value associated with the issue encountered.>"
}

Según la aplicación lógica que desencadenó el error, el error JSON contiene el nodo dataverseResponse o fhirServerResponse. Por ejemplo, si se encuentra un error con la aplicación lógica lasendbundletofhir_UniqueValue, la respuesta JSON solo contiene el nodo y el valor fhirServerResponse.

Pasos de posimplementación

La siguiente sección contiene los pasos que debe seguir después de la implementación de la plantilla.

Conceda acceso al servidor FHIR

Acceder al servidor FHIR desde la aplicación lógica requiere la asignación de roles colaborador de datos de FHIR, que permite publicar nuevos datos en el servicio. Esta asignación de roles de Azure debe agregarse a la identidad administrada que usa la aplicación lógica.

  1. Vaya a la instancia del servidor FHIR, seleccione Control de acceso (IAM) y luego seleccione Agregar asignación de roles.

    En la pestaña Rol, seleccione el rol Colaborador datos FHIR.

    Captura de pantalla que muestra la selección del rol de colaborador de datos de FHIR.

  2. Seleccione Miembros, seleccione Identidad administrada y luego seleccione + Seleccionar miembros.

  3. Agregue la identidad administrada creada durante la implementación de la plantilla de ARM. La identidad administrada recién implementada debe denominarse mi_UniqueValue.

  4. La asignación puede tardar unos minutos en reflejarse en la identidad administrada. Una vez aplicada, seleccione Asignaciones de roles de Azure para ver la asignación de roles en la identidad administrada.

Otorgar acceso a Dataverse Healthcare APIs

La misma identidad administrada se usa en la aplicación lógica para acceder a las Dataverse Healthcare APIs al conectarlo a un usuario de la aplicación en la instancia de destino de Dataverse. Para obtener más información sobre los usuarios de la aplicación, vaya a ,Administración de usuarios de la aplicación en el centro de administración de Power Platform.

  1. Necesita el identificador de cliente de Azure para la identidad administrada para configurar el usuario de la aplicación. Para recuperar el ID de cliente, abra la identidad administrada creada durante la implementación de la plantilla ARM y copie el valor ID de cliente del área Descripción general.

  2. En el Centro de administración de Power Platform, abra el entorno de Microsoft Cloud for Healthcare de destino. En la sección Acceso, seleccione Aplicaciones S2S y luego seleccione Nuevo usuario de la aplicación.

  3. En el panel Crear un nuevo usuario de la aplicación, seleccione la Unidad de negocio adecuada y luego seleccione Agregar una aplicación.

  4. En el panel Agregar una aplicación desde Microsoft Entra ID, busque el id. de cliente que copió de la identidad administrada.

    Seleccione la identidad administrada de la lista, seleccione Agregar y, a continuación, edite los roles de seguridad.

  5. Seleccione el rol Usuario de registro de la aplicación Administración de sincronización para FHIR y seleccione Guardar.

  6. Seleccione Crear para crear el nuevo usuario de la aplicación.

Después de completar la configuración, puede probar el flujo de trabajo de la aplicación lógica publicando un paquete de muestra en el contenedor sa_UniqueValue para su procesamiento. Según los requisitos de su solución, también puede modificar cualquiera de estas aplicaciones lógicas para un procesamiento adicional.

Controlar los errores

Si la ejecución de una aplicación lógica produce un error, se crea un archivo con el nombre originalblobname_response.json en el contenedor bundleserror de la cuenta de almacenamiento. Puede analizar este archivo para identificar la causa raíz del error, solucionarlo y volver a enviar el paquete con los recursos fallidos.

Tipo de agrupación: lote

El servidor FHIR y las Dataverse Healthcare APIs procesan un paquete del tipo lote como un grupo de acciones independientes. Como resultado, las respuestas indican el éxito y el fracaso de cada recurso de forma independiente.

De acuerdo con la especificación FHIR, cualquier recurso que falle da como resultado un OperationOutcome con el valor de gravedad establecido en error, mientras que la Dataverse Healthcare API establece el msind_requeststatus a 935000002. Para obtener más información sobre los tipos de estado de solicitud, vaya a Tipos de estado de solicitud.

El flujo de trabajo de la aplicación lógica analiza las respuestas del servidor FHIR y las Dataverse Healthcare APIs y finaliza el flujo como Fallido si hay algún recurso que resultó en un error.

Nota

Dataverse Healthcare APIs solo admiten paquetes FHIR del tipo lote y respuesta por lotes.

Configuración de reintentos

Después de identificar y corregir el error, puede volver a colocar el paquete en el recipiente para reprocesamiento bundles.

Vuelva a intentar acelerar: servidor FHIR

La acción HTTP en el flujo de trabajo de la aplicación lógica que publica en el servidor FHIR usa las políticas de reintento de acción HTTP integradas. El valor predeterminado es una política de intervalo exponencial establecida para reintentar cuatro veces. Puede editar la directiva de reintento.

  1. Seleccione los puntos suspensivos en la esquina superior derecha de la tarjeta de acción y después Configuración.

  2. Debajo de Política de reintento, cambie el valor del campo Tipo.

    Una captura de pantalla que muestra cómo editar el tipo de directiva de reintentos.

Vuelva a intentar con la limitación: Dataverse Healthcare APIs

Los Límites de la API de protección del servicio afectan a las Dataverse Healthcare APIs. Si una solicitud a las Dataverse Healthcare APIs se limita, el flujo de trabajo de la aplicación lógica (de forma predeterminada) vuelve a intentarlo tres veces al mismo tiempo con el intervalo Retry-After especificado por la API en el encabezado de respuesta. Puede editar tanto el recuento de reintentos como el intervalo.

  1. Para cambiar el conteo de reintentos, edite el valor de Recuento en la acción Bucle hasta.

    Una captura de pantalla que muestra cómo editar el recuento de reintentos.

  2. Para cambiar el intervalo, edite el valor de Recuento en la acción Retraso.

    Una captura de pantalla que muestra cómo editar el recuento de retrasos.

Asegurar Logic Apps

Una vez que termine de configurar y probar la aplicación lógica, puede bloquear el seguimiento asegurando las acciones de entrada y salida. Para obtener más información, vaya a Asegurar Logic App.

Consulte también

¿Qué es Microsoft Cloud for Healthcare?
Descripción general de Dataverse API de atención médica
Configuración Dataverse API de atención médica
Dataverse API de atención médica: configurar Azure Logic App con un desencadenador HTTP
Usar las Dataverse API de atención médica