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
Autenticação OAuth 2.0
Token via API de autenticação da Amil, com credenciais armazenadas em Secrets.
Google Cloud Healthcare API
Consulta de recursos FHIR, paginação e recuperação dos dados via Bearer Token.
Bronze — dados brutos
Persistência do JSON original, preservando a estrutura recebida da API.
Silver — transformação FHIR
Explosão de recursos, tratamento de estruturas aninhadas e criação de tabelas Delta por entidade.
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.
| Recurso | Finalidade |
|---|---|
| Patient | Dados dos pacientes |
| Consent | Registros de consentimento |
| Observation | Observações e resultados clínicos |
| DiagnosticReport | Relatórios de exames diagnósticos |
| Encounter | Atendimentos |
| Coverage | Informações de cobertura |
| Practitioner | Profissionais de saúde |
| Specimen | Amostras 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.