Copia de datos de Azure API for FHIR a Azure Synapse Analytics
Importante
Azure API for FHIR se retirará el 30 de septiembre de 2026. Siga las estrategias de migración para realizar la transición a servicio FHIR® de Azure Health Data Services en esa fecha. Debido a la retirada de Azure API for FHIR, no se permitirán nuevas implementaciones a partir del 1 de abril de 2025. El servicio FHIR de Azure Health Data Services es la versión evolucionada de la API de Azure para FHIR que permite a los clientes administrar FHIR, DICOM y los servicios de tecnologías médicas con integraciones en otros servicios de Azure.
En este artículo, aprenderá tres maneras de copiar datos de Azure API for FHIR® a Azure Synapse Analytics, que es un servicio de análisis ilimitado que reúne la integración de datos, el almacenamiento de datos empresariales y el análisis de macrodatos. Estos son los siguientes.
- Uso de FHIR para la herramienta del sistema operativo del agente de sincronización de Synapse
- Uso de FHIR para la herramienta del generador de canalizaciones de CDM
- Uso
$export
y carga de datos en Synapse mediante T-SQL
Uso de FHIR a la herramienta del sistema operativo del agente de sincronización de Synapse
Nota:
FHIR al agente de sincronización de Synapse es una herramienta de código abierto publicada en la licencia MIT y no está cubierta por el Acuerdo de Nivel de Servicio de Microsoft para los servicios de Azure.
FHIR to Synapse Sync Agent es un proyecto de Microsoft OSS publicado bajo la licencia MIT. Es una función de Azure que extrae datos de un servidor FHIR mediante las API de recursos de FHIR, la convierte en archivos Jerárquicos de Parquet y la escribe en Azure Data Lake casi en tiempo real. También contiene un script para crear tablas y vistas externas en el grupo de SQL sin servidor de Synapse que apunta a los archivos Parquet.
Esta solución le permite consultar datos completos de FHIR con herramientas como Synapse Studio, SSMS y Power BI. También puede acceder a los archivos Parquet directamente desde un grupo de Synapse Spark. Debe considerar esta solución si desea acceder a todos los datos de FHIR casi en tiempo real y desea aplazar la transformación personalizada a los sistemas de bajada.
Siga la documentación del sistema operativo para obtener instrucciones de instalación y uso.
Uso de FHIR a la herramienta del generador de canalizaciones de CDM
Nota:
FHIR al generador de canalizaciones de CDM es una herramienta de código abierto publicada bajo licencia MIT y no está cubierta por el Acuerdo de Nivel de Servicio de Microsoft para los servicios de Azure.
El generador de canalizaciones FHIR a CDM es un proyecto de OSS de Microsoft publicado bajo la licencia MIT. Es una herramienta para generar una canalización de ADF para copiar una instantánea de datos desde un servidor FHIR mediante la $export
API, transformarla en formato CSV y escribir en una carpeta de CDM en Azure Data Lake Storage Gen 2. La herramienta requiere un archivo de configuración creado por el usuario que contenga instrucciones para proyectar y aplanar los campos y recursos de FHIR en tablas. También puede seguir las instrucciones para crear una canalización de bajada en un área de trabajo de Synapse para mover datos de la carpeta CDM a un grupo de SQL dedicado de Synapse.
Esta solución le permite transformar los datos en formato tabular, ya que se escribe en una carpeta CDM. Debe considerar esta solución si desea transformar los datos de FHIR en un esquema personalizado después de extraerlos del servidor FHIR.
Siga la documentación del sistema operativo para obtener instrucciones de instalación y uso.
Carga de datos exportados a Synapse mediante T-SQL
En este enfoque, usará la operación FHIR $export
para copiar recursos de FHIR en un almacenamiento de blobs de Azure Data Lake Gen 2 (ADL Gen 2) en NDJSON
formato. Posteriormente, cargará los datos del almacenamiento en grupos de SQL sin servidor o dedicados en Synapse mediante T-SQL. Puede convertir estos pasos en una canalización de movimiento de datos sólida mediante canalizaciones de Synapse.
Uso $export
de para copiar datos
$export
Configuración en el servidor FHIR
La API de Azure para FHIR implementa la operación $export
definida por la especificación de FHIR para exportar todos o un subconjunto filtrado de datos de FHIR en formato NDJSON
. Además, admite la exportación desidentificada para anonimizar los datos de FHIR durante la exportación.
Para exportar datos de FHIR a Azure Blob Storage, primero debe configurar el servidor FHIR para exportar datos a la cuenta de almacenamiento. Debe (1) habilitar la identidad administrada( 2) ir a Access Control en la cuenta de almacenamiento y agregar una asignación de roles( 3) seleccione la cuenta de almacenamiento para $export
. Puede encontrar más instrucciones paso a paso aquí.
Puede configurar el servidor para exportar los datos a cualquier tipo de cuenta de almacenamiento de Azure, pero se recomienda exportar a ADL Gen 2 para obtener la mejor alineación con Synapse.
Uso del comando $export
Después de configurar el servidor de FHIR, puede seguir la documentación para exportar los recursos de FHIR en el nivel de sistema, paciente o grupo. Por ejemplo, puede exportar todos los datos de FHIR relacionados con los pacientes de Group
con el comando $export
siguiente, en el que especifica el nombre del almacenamiento de blobs de ADL Gen 2 en el campo {{BlobContainer}}
:
https://{{FHIR service base URL}}/Group/{{GroupId}}/$export?_container={{BlobContainer}}
También puede usar el _type
parámetro en la llamada anterior $export
para restringir los recursos que desea exportar. Por ejemplo, la siguiente llamada exporta solo Patient
los recursos , MedicationRequest
y Observation
:
https://{{FHIR service base URL}}/Group/{{GroupId}}/$export?_container={{BlobContainer}}&
_type=Patient,MedicationRequest,Condition
Para obtener más información sobre los distintos parámetros admitidos, consulte nuestra sección de página $export
sobre los parámetros de consulta.
Uso de Synapse for Analytics
Creación de un área de trabajo de Synapse
Antes de usar Synapse, necesita un área de trabajo de Synapse. Debe crear un servicio de Azure Synapse Analytics en Azure Portal. Puede encontrar más instrucciones paso a paso aquí. Necesita una cuenta de ADLSGEN2
para crear un área de trabajo. El área de trabajo de Azure Synapse usa esta cuenta de almacenamiento para almacenar los datos del área de trabajo de Synapse.
Después de crear un área de trabajo, puede ver el área de trabajo en Synapse Studio iniciando sesión en el área de trabajo en https://web.azuresynapse.neto iniciando Synapse Studio en Azure Portal.
Creación de un servicio vinculado entre Azure Storage y Synapse
Para copiar los datos en Synapse, debe crear un servicio vinculado que se conecte a la cuenta de Azure Storage, donde ha exportado los datos con Synapse. Puede encontrar más instrucciones paso a paso aquí.
- En Synapse Studio, vaya a la pestaña Administrar . En Conexiones externas, seleccione Servicios vinculados.
- Seleccione Nuevo para agregar un servicio vinculado.
- Seleccione Azure Data Lake Storage Gen2 en la lista y seleccione Continuar.
- Especifique las credenciales de autenticación. Cuando haya terminado, seleccione Crear.
Ahora que tiene un servicio vinculado entre el almacenamiento de ADL Gen 2 y Synapse, está listo para usar grupos de Synapse SQL para cargar y analizar los datos de FHIR.
Decidir entre un grupo SQL dedicado y sin servidor
Azure Synapse Analytics ofrece dos grupos de SQL diferentes: grupo de SQL sin servidor y grupo de SQL dedicado. El grupo de SQL sin servidor ofrece la flexibilidad de consultar datos directamente en el almacenamiento de blobs mediante el punto de conexión de SQL sin servidor sin ningún aprovisionamiento de recursos. El grupo SQL dedicado tiene la capacidad de procesamiento para un alto rendimiento y simultaneidad, y se recomienda para las funcionalidades de almacenamiento de datos a escala empresarial. Para obtener más información sobre los dos grupos de SQL, consulte la página de documentación de Synapse sobre arquitectura SQL.
Uso del grupo de SQL sin servidor
Puesto que es sin servidor, no hay ninguna infraestructura para configurar o clústeres para mantener. Puede empezar a consultar datos desde Synapse Studio en cuanto se crea el área de trabajo.
Por ejemplo, la consulta siguiente se puede usar para transformar campos seleccionados de Patient.ndjson
en una estructura tabular.
SELECT * FROM
OPENROWSET(bulk 'https://{{youraccount}}.blob.core.windows.net/{{yourcontainer}}/Patient.ndjson',
FORMAT = 'csv',
FIELDTERMINATOR ='0x0b',
FIELDQUOTE = '0x0b')
WITH (doc NVARCHAR(MAX)) AS rows
CROSS APPLY OPENJSON(doc)
WITH (
ResourceId VARCHAR(64) '$.id',
Active VARCHAR(10) '$.active',
FullName VARCHAR(100) '$.name[0].text',
Gender VARCHAR(20) '$.gender',
...
)
En la consulta anterior, la OPENROWSET
función accede a los archivos de Azure Storage y OPENJSON
analiza el texto JSON y devuelve las propiedades de entrada JSON como filas y columnas. Cada vez que se ejecuta esta consulta, el grupo de SQL sin servidor lee el archivo del almacenamiento de blobs, analiza el código JSON y extrae los campos.
También puede materializar los resultados en formato Parquet en una tabla externa para obtener un mejor rendimiento de las consultas, como se indica a continuación.
-- Create External data source where the parquet file will be written
CREATE EXTERNAL DATA SOURCE [MyDataSource] WITH (
LOCATION = 'https://{{youraccount}}.blob.core.windows.net/{{exttblcontainer}}'
);
GO
-- Create External File Format
CREATE EXTERNAL FILE FORMAT [ParquetFF] WITH (
FORMAT_TYPE = PARQUET,
DATA_COMPRESSION = 'org.apache.hadoop.io.compress.SnappyCodec'
);
GO
CREATE EXTERNAL TABLE [dbo].[Patient] WITH (
LOCATION = 'PatientParquet/',
DATA_SOURCE = [MyDataSource],
FILE_FORMAT = [ParquetFF]
) AS
SELECT * FROM
OPENROWSET(bulk 'https://{{youraccount}}.blob.core.windows.net/{{yourcontainer}}/Patient.ndjson'
-- Use rest of the SQL statement from the previous example --
Uso del grupo de SQL dedicado
El grupo SQL dedicado admite tablas administradas y una memoria caché jerárquica para rendimiento en memoria. Puede importar macrodatos con consultas T-SQL simples y, después, use la potencia del motor de consultas distribuidas para realizar un análisis de alto rendimiento.
La manera más sencilla y rápida de cargar datos desde el almacenamiento en un grupo de SQL dedicado es usar el comandoCOPY
en T-SQL, que puede leer archivos CSV, Parquet y ORC. Como en la consulta de ejemplo siguiente. Use el COPY
comando para cargar las NDJSON
filas en una estructura tabular.
-- Create table with HEAP, which is not indexed and does not have a column width limitation of NVARCHAR(4000)
CREATE TABLE StagingPatient (
Resource NVARCHAR(MAX)
) WITH (HEAP)
COPY INTO StagingPatient
FROM 'https://{{yourblobaccount}}.blob.core.windows.net/{{yourcontainer}}/Patient.ndjson'
WITH (
FILE_TYPE = 'CSV',
ROWTERMINATOR='0x0a',
FIELDQUOTE = '',
FIELDTERMINATOR = '0x00'
)
GO
Una vez que tenga las filas JSON en la StagingPatient
tabla generada, puede crear diferentes formatos tabulares de los datos mediante la OPENJSON
función y almacenar los resultados en tablas. A continuación se muestra una consulta SQL de ejemplo para crear una Patient
tabla mediante la extracción de algunos campos del Patient
recurso.
SELECT RES.*
INTO Patient
FROM StagingPatient
CROSS APPLY OPENJSON(Resource)
WITH (
ResourceId VARCHAR(64) '$.id',
FullName VARCHAR(100) '$.name[0].text',
FamilyName VARCHAR(50) '$.name[0].family',
GivenName VARCHAR(50) '$.name[0].given[0]',
Gender VARCHAR(20) '$.gender',
DOB DATETIME2 '$.birthDate',
MaritalStatus VARCHAR(20) '$.maritalStatus.coding[0].display',
LanguageOfCommunication VARCHAR(20) '$.communication[0].language.text'
) AS RES
GO
Pasos siguientes
En este artículo, ha aprendido tres maneras diferentes de copiar los datos de FHIR en Synapse.
A continuación, puede obtener información sobre cómo puede desidentificar los datos de FHIR al exportarlos a Synapse para proteger la información de salud personal (PHI).
Nota:
FHIR® es una marca registrada de HL7 y se usa con su permiso.