Partilhar via


Copiar dados da API do Azure para FHIR para o Azure Synapse Analytics

Importante

A API do Azure para FHIR será desativada em 30 de setembro de 2026. Siga as estratégias de migração para fazer a transição para o serviço FHIR® dos Serviços de Dados de Saúde do Azure até essa data. Devido à desativação da API do Azure para FHIR, novas implantações não serão permitidas a partir de 1 de abril de 2025. O serviço FHIR dos Serviços de Dados de Saúde do Azure é a versão evoluída da API do Azure para FHIR que permite aos clientes gerir serviços FHIR, DICOM e MedTech com integrações noutros serviços do Azure.

Neste artigo, você aprenderá três maneiras de copiar dados da API do Azure para FHIR® para o Azure Synapse Analytics, que é um serviço de análise ilimitado que reúne integração de dados, armazenamento de dados corporativos e análise de big data. Estes são os seguintes.

Usando a ferramenta FHIR to Synapse Sync Agent OSS

Nota

FHIR to Synapse Sync Agent é uma ferramenta de código aberto lançada sob licença MIT e não é coberta pelo SLA da Microsoft para serviços do Azure.

O FHIR to Synapse Sync Agent é um projeto Microsoft OSS lançado sob licença MIT. É uma função do Azure que extrai dados de um servidor FHIR usando APIs de Recursos FHIR, converte-os em arquivos Parquet hierárquicos e os grava no Azure Data Lake quase em tempo real. Ele também contém um script para criar tabelas e exibições externas no pool SQL Synapse Serverless apontando para os arquivos Parquet.

Essa solução permite que você consulte todos os dados FHIR com ferramentas como Synapse Studio, SSMS e Power BI. Você também pode acessar os arquivos do Parquet diretamente de uma piscina Synapse Spark. Você deve considerar essa solução se quiser acessar todos os seus dados FHIR quase em tempo real e adiar a transformação personalizada para sistemas downstream.

Siga a documentação do OSS para obter instruções de instalação e uso.

Usando a ferramenta OSS do gerador de pipeline FHIR para CDM

Nota

FHIR to CDM pipeline generator é uma ferramenta de código aberto lançada sob licença MIT e não é coberta pelo SLA da Microsoft para serviços do Azure.

O gerador de pipeline FHIR para CDM é um projeto Microsoft OSS lançado sob licença MIT. É uma ferramenta para gerar um pipeline do ADF para copiar um instantâneo de dados de um servidor FHIR usando a API, transformando-o para o $export formato csv e gravando em uma pasta CDM no Azure Data Lake Storage Gen 2. A ferramenta requer um arquivo de configuração criado pelo usuário contendo instruções para projetar e nivelar recursos FHIR e campos em tabelas. Você também pode seguir as instruções para criar um pipeline downstream em um espaço de trabalho Synapse para mover dados da pasta CDM para um pool SQL dedicado Synapse.

Esta solução permite-lhe transformar os dados em formato tabular à medida que são gravados numa pasta CDM. Você deve considerar esta solução se quiser transformar dados FHIR em um esquema personalizado depois que eles forem extraídos do servidor FHIR.

Siga a documentação do OSS para obter instruções de instalação e uso.

Carregando dados exportados para Synapse usando T-SQL

Nessa abordagem, você usa a operação FHIR $export para copiar recursos FHIR em um armazenamento de blob do Azure Data Lake Gen 2 (ADL Gen 2) no NDJSON formato. Posteriormente, você carrega os dados do armazenamento em pools SQL dedicados ou sem servidor no Synapse usando T-SQL. Você pode converter essas etapas em um pipeline de movimentação de dados robusto usando pipelines Synapse.

Armazenamento do Azure para Synapse usando $export.

Usando $export para copiar dados

Configurando $export no servidor FHIR

A API do Azure para FHIR implementa a $export operação definida pela especificação FHIR para exportar todos ou um subconjunto filtrado de dados FHIR no NDJSON formato. Além disso, suporta exportação não identificada para anonimizar dados FHIR durante a exportação.

Para exportar dados FHIR para o armazenamento de blob do Azure, primeiro você precisa configurar seu servidor FHIR para exportar dados para a conta de armazenamento. Você precisa (1) habilitar a Identidade Gerenciada, (2) ir para Controle de Acesso na conta de armazenamento e adicionar uma atribuição de função, (3) selecionar sua conta de armazenamento para $export. Mais instruções passo a passo podem ser encontradas aqui.

Você pode configurar o servidor para exportar os dados para qualquer tipo de conta de armazenamento do Azure, mas recomendamos exportar para o ADL Gen 2 para melhor alinhamento com o Synapse.

Usando o $export comando

Depois de configurar seu servidor FHIR, você pode seguir a documentação para exportar seus recursos FHIR no nível de Sistema, Paciente ou Grupo. Por exemplo, você pode exportar todos os seus dados FHIR relacionados aos pacientes em um Group com o seguinte $export comando, no qual você especifica seu nome de armazenamento de blob ADL Gen 2 no campo {{BlobContainer}}:

https://{{FHIR service base URL}}/Group/{{GroupId}}/$export?_container={{BlobContainer}}  

Você também pode usar o _type parâmetro na chamada anterior $export para restringir os recursos que deseja exportar. Por exemplo, a chamada a seguir exporta somente Patient, MedicationRequeste Observation recursos:

https://{{FHIR service base URL}}/Group/{{GroupId}}/$export?_container={{BlobContainer}}&
_type=Patient,MedicationRequest,Condition

Para obter mais informações sobre os diferentes parâmetros suportados, consulte a nossa $export secção de página sobre os parâmetros de consulta.

Usando o Synapse for Analytics

Criando um espaço de trabalho Synapse

Antes de usar o Synapse, você precisa de um espaço de trabalho Synapse. Você precisa criar um serviço do Azure Synapse Analytics no portal do Azure. Mais orientações passo a passo podem ser encontradas aqui. Você precisa de uma ADLSGEN2 conta para criar um espaço de trabalho. Seu espaço de trabalho do Azure Synapse usa essa conta de armazenamento para armazenar seus dados do espaço de trabalho Synapse.

Depois de criar um espaço de trabalho, você pode exibir seu espaço de trabalho no Synapse Studio entrando em seu espaço de trabalho no https://web.azuresynapse.net, ou iniciando o Synapse Studio no portal do Azure.

Criando um serviço vinculado entre o armazenamento do Azure e o Synapse

Para copiar seus dados para a Synapse, você precisa criar um serviço vinculado que se conecte à conta de Armazenamento do Azure, para onde você exportou seus dados com a Synapse. Mais instruções passo a passo podem ser encontradas aqui.

  1. No Synapse Studio, navegue até a guia Gerenciar . Em Conexões externas, selecione Serviços vinculados.
  2. Selecione Novo para adicionar um novo serviço vinculado.
  3. Selecione Azure Data Lake Storage Gen2 na lista e selecione Continuar.
  4. Insira suas credenciais de autenticação. Quando terminar, selecione Criar.

Agora que você tem um serviço vinculado entre o armazenamento do ADL Gen 2 e o Synapse, está pronto para usar os pools SQL do Synapse para carregar e analisar seus dados FHIR.

Decida entre pool SQL dedicado e sem servidor

O Azure Synapse Analytics oferece dois pools SQL diferentes: pool SQL sem servidor e pool SQL dedicado. O pool SQL sem servidor oferece a flexibilidade de consultar dados diretamente no armazenamento de blob usando o ponto de extremidade SQL sem servidor sem qualquer provisionamento de recursos. O pool SQL dedicado tem o poder de processamento para alto desempenho e simultaneidade e é recomendado para recursos de armazenamento de dados em escala empresarial. Para obter mais detalhes sobre os dois pools SQL, consulte a página de documentação do Synapse sobre arquitetura SQL.

Usando o pool SQL sem servidor

Como não tem servidor, não há infraestrutura para configurar ou clusters para manter. Você pode começar a consultar dados do Synapse Studio assim que o espaço de trabalho for criado.

Por exemplo, a consulta a seguir pode ser usada para transformar campos selecionados em Patient.ndjson uma estrutura 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', 
       ...
) 

Na consulta anterior, a OPENROWSET função acessa arquivos no Armazenamento do Azure e OPENJSON analisa o texto JSON e retorna as propriedades de entrada JSON como linhas e colunas. Sempre que essa consulta é executada, o pool SQL sem servidor lê o arquivo do armazenamento de blob, analisa o JSON e extrai os campos.

Você também pode materializar os resultados no formato Parquet em uma Tabela Externa para obter um melhor desempenho de consulta, da seguinte forma.

-- 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 --

Usando pool SQL dedicado

O pool SQL dedicado oferece suporte a tabelas gerenciadas e um cache hierárquico para desempenho na memória. Você pode importar big data com consultas T-SQL simples e, em seguida, usar o poder do mecanismo de consulta distribuído para executar análises de alto desempenho.

A maneira mais simples e rápida de carregar dados do seu armazenamento para um pool SQL dedicado é usar o COPY comando em T-SQL, que pode ler arquivos CSV, Parquet e ORC. Como no exemplo de consulta a seguir. Use o COPY comando para carregar as NDJSON linhas em uma estrutura 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

Depois de gerar as linhas JSON na StagingPatient tabela, você pode criar diferentes formatos tabulares dos dados usando a OPENJSON função e armazenando os resultados em tabelas. A seguir está um exemplo de consulta SQL para criar uma Patient tabela extraindo alguns campos do 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

Próximos passos

Neste artigo, você aprendeu três maneiras diferentes de copiar seus dados FHIR para o Synapse.

Em seguida, você pode aprender sobre como você pode desidentificar seus dados FHIR ao exportá-los para Synapse, a fim de proteger as informações pessoais de saúde (PHI).

Nota

FHIR® é uma marca registada da HL7 e é utilizada com a permissão da HL7.