Pular para o conteúdo
Lucas Lessa
Voltar para projetos

Estudo de caso · Engenharia de dados · Saúde

Ingestão de API FHIR com Databricks

Desenvolvimento de um pipeline de engenharia de dados para integrar uma API de saúde baseada no padrão HL7 FHIR ao Databricks, utilizando a Google Cloud Healthcare API como fonte dos dados e autenticação via OAuth 2.0.

O objetivo era automatizar a ingestão de dados clínicos, transformar os recursos FHIR em estruturas tabulares e prepará-los para consultas, análises e consumo por outras camadas da plataforma de dados.

  • Databricks
  • PySpark
  • HL7 FHIR
  • OAuth 2.0
  • Delta Lake
  • Unity Catalog
  • Google Cloud

Arquitetura e fluxo de dados

  1. Autenticação OAuth 2.0

    Token via API de autenticação da Amil, com credenciais armazenadas em Secrets.

  2. Google Cloud Healthcare API

    Consulta de recursos FHIR, paginação e recuperação dos dados via Bearer Token.

  3. Bronze — dados brutos

    Persistência do JSON original, preservando a estrutura recebida da API.

  4. Silver — transformação FHIR

    Explosão de recursos, tratamento de estruturas aninhadas e criação de tabelas Delta por entidade.

  5. Dados estruturados para consumo

    Informações organizadas para consultas SQL, integração e análises posteriores.

Principais tecnologias utilizadas

  • Databricks e PySpark

    Processamento, transformação e estruturação dos dados.

  • Google Cloud Healthcare API

    Origem dos dados clínicos no padrão FHIR.

  • OAuth 2.0 Client Credentials

    Autenticação e obtenção do token de acesso por meio da API da Amil.

  • Python e REST API

    Execução das requisições HTTP, gerenciamento de headers e tratamento das respostas.

  • Apache Spark e Delta Lake

    Leitura de JSON, criação de DataFrames e persistência em tabelas Delta.

  • Unity Catalog e Volumes

    Organização e armazenamento dos dados na plataforma Databricks.

Principais recursos FHIR trabalhados

O pipeline precisava lidar com diferentes tipos de recursos, cada um com estruturas e atributos próprios.

RecursoFinalidade
PatientDados dos pacientes
ConsentRegistros de consentimento
ObservationObservações e resultados clínicos
DiagnosticReportRelatórios de exames diagnósticos
EncounterAtendimentos
CoverageInformações de cobertura
PractitionerProfissionais de saúde
SpecimenAmostras biológicas

Um dos principais desafios era transformar um retorno heterogêneo do tipo Bundle, que reúne múltiplos recursos FHIR, em estruturas tabulares adequadas ao Spark.

Desafios técnicos enfrentados

  • Autenticação e integração

    Obtenção e utilização correta do Bearer Token nas chamadas à API.

  • Paginação

    Processamento de todas as páginas retornadas pela API por meio dos links next do Bundle FHIR.

  • Ingestão incremental

    Utilização do parâmetro _lastUpdated para recuperar registros atualizados a partir de um watermark.

  • JSON complexo

    Tratamento de estruturas aninhadas, objetos opcionais e arrays sem assumir que todos os recursos possuem o mesmo esquema.

  • Modelagem de dados

    Separação dos recursos em tabelas específicas e extração de atributos relevantes.

  • Persistência e performance

    Organização dos dados em arquivos e tabelas Delta, com avaliação de estratégias como Liquid Clustering, estatísticas e otimização de consultas.