Conversión de los datos en FHIR para Azure API for FHIR

El $convert-data punto de conexión personalizado del servicio FHIR está diseñado para la conversión de datos de diferentes tipos de datos a FHIR. Usa el motor de la plantilla Liquid y las plantillas del proyecto FHIR Converter como plantillas predeterminadas. Estas plantillas de conversión se pueden personalizar según sea necesario.

Actualmente, el $convert-data punto de conexión personalizado admite four tipos de conversión de datos:

Formato de datos de origen Formato de datos de destino
C-CDA FHIR
HL7v2 FHIR
JSON FHIR
FHIR STU3 FHIR R4

Nota

$convert-data el punto de conexión se puede usar como componente dentro de una canalización ETL para la conversión de datos sanitarios sin procesar de formatos heredados en formato FHIR. Sin embargo, no es una canalización ETL en sí misma. Se recomienda usar un motor ETL como Logic Apps o Azure Data Factory para un flujo de trabajo completo en la preparación de los datos de FHIR para que se conserven en el servidor FHIR. El flujo de trabajo puede incluir: lectura y ingesta de datos, validación de datos, realización de llamadas API de datos $convert, procesamiento previo y posterior al procesamiento de datos, enriquecimiento de datos y desduplicación de datos.

Uso del punto de conexión $convert-data

La $convert-data operación se integra en el servicio FHIR para que se ejecute como parte del servicio. Después de habilitar $convert-data en el servidor, puede realizar llamadas API al servidor para convertir los datos en FHIR: https://<<FHIR service base URL>>/$convert-data

Recurso de parámetro

$convert-data toma un recurso Parameter en el cuerpo de la solicitud como se describe en la tabla siguiente. En el cuerpo de la solicitud de llamada API, incluiría los parámetros siguientes:

Nombre de parámetro Descripción Valores aceptados
inputData Datos que se van a convertir. Para Hl7v2: cadena
Para Ccda: XML
Para Json: JSON
Para FHIR STU3: JSON
inputDataType Tipo de datos de entrada. HL7v2, Ccda, Json, Fhir
templateCollectionReference Referencia a una colección de plantillas de imagen de OCI en Azure Container Registry (ACR). Es la imagen que contiene plantillas liquid que se usarán para la conversión. Puede ser una referencia a las plantillas predeterminadas o a una imagen de plantilla personalizada registrada en el servicio FHIR. Consulte a continuación para obtener información sobre cómo personalizar las plantillas, hospedarlas en ACR y registrarse en el servicio FHIR. Para las plantillas predeterminadas o de ejemplo :
Plantillas de HL7v2 :
microsofthealth/fhirconverter:default
microsofthealth/hl7v2templates:default
Plantillas de C-CDA:
microsofthealth/ccdatemplates:default
Plantillas JSON:
microsofthealth/jsontemplates:default
Plantillas de FHIR STU3 :
microsofthealth/stu3tor4templates:default

Para plantillas personalizadas :
<RegistryServer>/<imageName>@<imageDigest>, <RegistryServer>/<imageName>:<imageTag>
rootTemplate La plantilla raíz que se usa al transformar los datos. Para HL7v2:
"ADT_A01", "ADT_A02", "ADT_A03", "ADT_A04", "ADT_A05", "ADT_A08", "ADT_A11", "ADT_A13", "ADT_A14", "ADT_A15", "ADT_A16", "ADT_A25", "ADT_A26", "ADT_A27", "ADT_A27", "ADT_A28 ADT_A27"", "ADT_A29", "ADT_A31", "ADT_A47", "ADT_A60", "OML_O21", "ORU_R01", "ORM_O01", "VXU_V04", "SIU_S12", "SIU_S13", "SIU_S14", "SIU_S15", "SIU_S16", "SIU_S17", "SIU_S26", "MDM_T01", "MDM_T02"

Para C-CDA:
"CCD", "ConsultationNote", "DischargeSummary", "HistoryandPhysical", "OperativeNote", "ProcedureNote", "ProgressNote", "ReferralNote", "TransferSummary"

Para JSON:
"ExamplePatient", "Stu3ChargeItem"

FHIR STU3":
Nombre del recurso STU3, por ejemplo, "Paciente", "Observación", "Organización".

Nota

Las plantillas de FHIR STU3 a R4 son plantillas Liquid "diff" que proporcionan asignaciones de diferencias de campo solo entre el recurso STU3 y su recurso equivalente en el estándar FHIR R4. Algunos de los recursos STU3 se cambian de nombre o se quitan de R4. Consulte Diferencias y restricciones de recursos para la conversión de STU3 a R4.

Nota

Las plantillas JSON son plantillas de ejemplo para su uso, no plantillas "predeterminadas" que cumplen los tipos de mensajes JSON predefinidos. JSON no tiene ningún tipo de mensaje estandarizado, a diferencia de los mensajes HL7v2 o documentos C-CDA. Por lo tanto, en lugar de las plantillas predeterminadas, le proporcionamos algunas plantillas de ejemplo que puede usar como guía de inicio para sus propias plantillas personalizadas.

Advertencia

Las plantillas predeterminadas se publican en licencia MIT y no son compatibles con Soporte técnico de Microsoft.

Las plantillas predeterminadas solo se proporcionan para ayudarle a empezar a trabajar rápidamente. Es posible que se actualicen al actualizar las versiones de Azure API for FHIR. Por lo tanto, debe comprobar el comportamiento de conversión y hospedar su propia copia de plantillas en una Azure Container Registry, registrarlas en Azure API for FHIR y usarlas en las llamadas API para tener un comportamiento de conversión de datos coherente en las distintas versiones de Azure API for FHIR.

Solicitud de ejemplo

{
    "resourceType": "Parameters",
    "parameter": [
        {
            "name": "inputData",
            "valueString": "MSH|^~\\&|SIMHOSP|SFAC|RAPP|RFAC|20200508131015||ADT^A01|517|T|2.3|||AL||44|ASCII\nEVN|A01|20200508131015|||C005^Whittingham^Sylvia^^^Dr^^^DRNBR^D^^^ORGDR|\nPID|1|3735064194^^^SIMULATOR MRN^MRN|3735064194^^^SIMULATOR MRN^MRN~2021051528^^^NHSNBR^NHSNMBR||Kinmonth^Joanna^Chelsea^^Ms^^D||19870624000000|F|||89 Transaction House^Handmaiden Street^Wembley^^FV75 4GJ^GBR^HOME||020 3614 5541^PRN|||||||||C^White - Other^^^||||||||\nPD1|||FAMILY PRACTICE^^12345|\nPV1|1|I|OtherWard^MainRoom^Bed 183^Simulated Hospital^^BED^Main Building^4|28b|||C005^Whittingham^Sylvia^^^Dr^^^DRNBR^D^^^ORGDR|||CAR|||||||||16094728916771313876^^^^visitid||||||||||||||||||||||ARRIVED|||20200508131015||"
        },
        {
            "name": "inputDataType",
            "valueString": "Hl7v2"
        },
        {
            "name": "templateCollectionReference",
            "valueString": "microsofthealth/fhirconverter:default"
        },
        {
            "name": "rootTemplate",
            "valueString": "ADT_A01"
        }
    ]
}

Respuesta de ejemplo

{
  "resourceType": "Bundle",
  "type": "transaction",
  "entry": [
    {
      "fullUrl": "urn:uuid:9d697ec3-48c3-3e17-db6a-29a1765e22c6",
      "resource": {
        "resourceType": "Patient",
        "id": "9d697ec3-48c3-3e17-db6a-29a1765e22c6",
        ...
        ...
      "request": {
        "method": "PUT",
        "url": "Location/50becdb5-ff56-56c6-40a1-6d554dca80f0"
      }
    }
  ]
}

Personalización de plantillas

Puede usar la extensión FHIR Converter para Visual Studio Code para personalizar las plantillas según sus necesidades. La extensión proporciona una experiencia de edición interactiva y facilita la descarga de plantillas publicadas por Microsoft y datos de ejemplo. Consulte la documentación de la extensión para obtener más detalles.

Nota

La extensión FHIR Converter para Visual Studio Code está disponible para las plantillas HL7v2, C-CDA y JSON Liquid. Las plantillas de FHIR STU3 a R4 Liquid no se admiten actualmente.

Hospedaje y uso de plantillas

Se recomienda hospedar su propia copia de plantillas en ACR. Para hospedar su propia copia de las plantillas y usarlas en la operación $convert-data es preciso seguir estos cuatro pasos:

  1. Inserte la imagen en un una instancia de Azure Container Registry.
  2. Habilite Identidad administrada en la instancia de Azure API for FHIR.
  3. Proporcione acceso del ACR a Identidad administrada de Azure API for FHIR.
  4. Registre los servidores de ACR en Azure API for FHIR.
  5. Opcionalmente, configure el firewall de ACR para el acceso seguro.

Inserción de plantillas en Azure Container Registry

Después de crear una instancia de Azure Container Registry, puede usar el comando FHIR Converter: Push Templates en la extensión FHIR Converter para insertar las plantillas personalizadas en ACR. Como alternativa, puede usar la herramienta CLI de administración de plantillas para tal fin.

Habilitación de Identidad administrada en Azure API for FHIR

Vaya a la instancia del servicio Azure API for FHIR en el Azure Portal y seleccione la hoja Identidad. Cambie el estado a Activado para habilitar Identidad administrada en Azure API for FHIR.

Imagen de pantalla de Habilitar identidad administrada.

Proporcione acceso del ACR a Azure API for FHIR

  1. Vaya a la hoja Control de acceso (IAM).

  2. Seleccione Agregar y, después, agregar asignación de roles para abrir la página Agregar asignación de roles.

  3. Asigne el rol AcrPull .

    Imagen de pantalla de la página Agregar asignación de roles.

Para más información sobre la asignación de roles en Azure Portal, consulte Roles integrados de Azure.

Registro de los servidores de ACR en Azure API for FHIR

Puede registrar el servidor de ACR mediante el Azure Portal o mediante la CLI.

Registro del servidor de ACR mediante Azure Portal

Vaya a la hoja Artefactos en Transformación de datos en la instancia de Azure API for FHIR. Verá la lista de servidores ACR registrados actualmente. Seleccione Agregar y, a continuación, seleccione el servidor del Registro en el menú desplegable. Deberá seleccionar Guardar para que el registro surta efecto. El cambio puede tardar unos minutos en aplicarse y reiniciar la instancia.

Registro del servidor de ACR mediante la CLI

Puede registrar hasta 20 servidores ACR en Azure API for FHIR.

Instale la CLI de Azure Health Data Services desde Azure PowerShell si es necesario:

az extension add -n healthcareapis

Para registrar los servidores de ACR en Azure API for FHIR siga estos ejemplos:

Registro de un servidor de ACR individual
az healthcareapis acr add --login-servers "fhiracr2021.azurecr.io" --resource-group fhir-test --resource-name fhirtest2021
Registro de varios servidores de ACR
az healthcareapis acr add --login-servers "fhiracr2021.azurecr.io fhiracr2020.azurecr.io" --resource-group fhir-test --resource-name fhirtest2021

Configuración del firewall de ACR

Seleccione Redes de la cuenta de almacenamiento de Azure en el portal.

 Imagen de pantalla del registro de contenedor.

Seleccione Redes seleccionadas.

En la sección Firewall , especifique la dirección IP en el cuadro Intervalo de direcciones . Agregue intervalos IP para permitir el acceso desde Internet o redes locales.

En la tabla siguiente, encontrará la dirección IP de la región de Azure donde se aprovisiona el servicio Azure API for FHIR.

Región de Azure Dirección IP pública
Este de Australia 20.53.47.210
Sur de Brasil 191.238.72.227
Centro de Canadá 20.48.197.161
Centro de la India 20.192.47.66
Este de EE. UU. 20.62.134.242, 20.62.134.244, 20.62.134.245
Este de EE. UU. 2 20.62.60.115, 20.62.60.116, 20.62.60.117
Centro de Francia 51.138.211.19
Norte de Alemania 51.116.60.240
Centro-oeste de Alemania 20.52.88.224
Japón Oriental 20.191.167.146
Japón Occidental 20.189.228.225
Centro de Corea del Sur 20.194.75.193
Centro-Norte de EE. UU 52.162.111.130, 20.51.0.209
Norte de Europa 52.146.137.179
Centro de Catar 20.21.36.225
Norte de Sudáfrica 102.133.220.199
Centro-sur de EE. UU. 20.65.134.83
Sudeste de Asia 20.195.67.208
Centro de Suecia 51.12.28.100
Norte de Suiza 51.107.247.97
Sur de Reino Unido 2 51.143.213.211
Oeste de Reino Unido 51.140.210.86
Centro-Oeste de EE. UU. 13.71.199.119
Oeste de Europa 20.61.103.243, 20.61.103.244
Oeste de EE. UU. 2 20.51.13.80, 20.51.13.84, 20.51.13.85
Oeste de EE. UU. 3 20.150.245.165

Nota

Los pasos anteriores son similares a los pasos de configuración descritos en el documento Cómo exportar datos de FHIR. Para más información, consulte Exportación segura a Azure Storage.

Comprobación

Realice una llamada a la API de $convert-data, en la que especifique la referencia de la plantilla en el parámetro templateCollectionReference.

<RegistryServer>/<imageName>@<imageDigest>

Pasos siguientes

En este artículo, ha obtenido información sobre la conversión de datos para Azure API for FHIR. Para más información sobre los proyectos de GitHub relacionados para Azure API for FHIR, consulte

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