
- Setor
- Saúde
- Ferramentas
- Python, Apache Spark, dbt, DuckDB, Docker, HTML, CSS e JavaScript
- Entregas
- Pipeline com camadas bronze, silver e gold
- Modelo dimensional com 25 testes
- Painel interativo publicado
- Documentação das decisões e dos limites
Desafio
Toda internação paga pelo SUS gera uma AIH, a autorização de internação hospitalar, e o DATASUS publica esses registros todo mês. Os dados são abertos, mas chegam em arquivos .dbc, um formato comprimido que só o próprio DATASUS usa, com códigos no lugar dos nomes e texto em Latin-1. Para saber quais doenças mais internam, quanto o SUS pagou ou de onde vêm os pacientes de um hospital, alguém precisa descomprimir os arquivos, cruzar com quatro tabelas de referência e tratar as contas que os hospitais reapresentam em outros meses.
Este projeto de estudo monta esse caminho completo para as internações de Pernambuco em 2024, com as ferramentas usadas em engenharia de dados hoje: Apache Spark para o processamento, dbt para o modelo e os testes, e Docker para que qualquer pessoa rode tudo com um comando.
Solução
O pipeline segue a arquitetura em camadas bronze, silver e gold:

- Raw. Um script em Python baixa os 12 arquivos mensais do SIH/SUS e as tabelas de referência: procedimentos do SIGTAP, CID-10, cadastro de estabelecimentos do CNES e municípios do IBGE.
- Bronze. Os
.dbcsão descomprimidos e gravados em Parquet, com todas as colunas como texto. As tabelas de referência passam de Latin-1 para UTF-8. - Silver. O Spark converte datas e valores, calcula a idade em anos e a faixa etária e fica só com a versão mais recente de cada AIH, o que remove 1.714 reapresentações.
- Gold. O dbt monta o modelo dimensional sobre o DuckDB: um fato de internações, cinco dimensões e um mart mensal por hospital. Os códigos do SIH viram nomes por meio de tabelas de tradução, e o resultado é gravado em Parquet.
- Painel. Um script agrega a gold e gera um único arquivo HTML com os dados embutidos, sem nenhuma biblioteca externa.
Os 25 testes do dbt rodam a cada execução. Além das chaves e dos relacionamentos, há testes de regra de negócio: a data de saída nunca é anterior à de internação, nenhum valor é negativo e o total da gold bate com o da silver.
A descompressão dos .dbc lê o arquivo em pedaços pequenos, e dentro do Docker, lendo da pasta do Windows, cada arquivo levava mais de 6 minutos. Copiando o arquivo antes para o disco do contêiner, leva menos de 1 segundo. A camada bronze caiu de mais de uma hora para 41 segundos, e o pipeline inteiro, com os arquivos já baixados, roda em cerca de um minuto.

Resultado
- 666.262 internações em 254 hospitais, que custaram R$ 1,12 bilhão ao SUS em 2024. A permanência média foi de 4,9 dias e 4,2% das internações terminaram em óbito.
- Gravidez, parto e puerpério é o capítulo da CID-10 que mais interna, com 16% dos casos, seguido de lesões e causas externas e de neoplasias.
- 59,4% dos pacientes foram internados fora da cidade onde moram, e 7 em cada 10 internações começaram pela urgência. O Recife recebe 337 mil internações, das quais dois terços são de moradores de outros municípios.
- O painel mostra os indicadores do estado e de cada um dos 40 hospitais com mais internações, mês a mês, por diagnóstico, procedimento, faixa etária e sexo. O botão Ver projeto abre o painel.
Projeto de estudo da Dome Analytics com dados públicos do DATASUS e do IBGE. Não tem relação com o Ministério da Saúde nem com os hospitais citados.
Projetos relacionados
Modernização da Engenharia de Dados de um Hospital
Diagnóstico medido e correção das cargas noturnas de um hospital de grande porte, com reconciliação a cada execução e alerta de perda silenciosa.
Causa Raiz de Quedas no Gateway do Power BI
Investigação com os logs do Windows e do gateway que explicou por que o serviço caía em horário comercial e derrubava a atualização de dezenas de painéis.