Skip to main content
Glama

🏥 Saúde em Dado

Inteligência epidemiológica aberta sobre os microdados do SUS

Mortalidade · Dengue · Internações · Natalidade · Vulnerabilidade social — do Brasil inteiro, a custo zero.

Site Licença Custo Dados Release DOI

Site · API · Análises · Metodologia


🎯 O que é

Os dados do SUS são públicos por lei, mas inacessíveis na prática: microdados em formato proprietário (DBC), fragmentados por estado e competência, somando dezenas de gigabytes. Pesquisadores, jornalistas e gestores gastam semanas em engenharia de dados antes de qualquer análise.

O Saúde em Dado elimina essa barreira. Ele transforma os microdados oficiais do DataSUS e do IBGE em indicadores agregados, validados e consultáveis por API pública gratuita, painéis navegáveis e downloads abertos — com pipeline 100% reproduzível e custo de manutenção zero.

Mais de 14,4 milhões de óbitos (2015–2024), 6,56 milhões de casos de dengue (recorde de 2024), 40,0 milhões de AIHs aprovadas (R$ 63,4 bi) e 5,2 milhões de nascimentos — em uma consulta.


Related MCP server: mcp-brasil

📊 Fontes de dados

Sistema

Conteúdo

Cobertura

Indicadores derivados

SIM

Mortalidade (óbitos)

2015–2024

Taxa bruta + IC95%, taxa padronizada por idade, excesso de mortalidade

SINAN

Dengue (notificações)

2015–2024

Incidência, gravidade, letalidade, canal endêmico

SIH

Internações hospitalares (AIH)

2022–2024

Permanência média e custo por episódio (AIH normal), mortalidade intra-hospitalar

SINASC

Nascidos vivos

2021–2022

Baixo peso, prematuridade, pré-natal, mortalidade infantil

IBGE

População (Censo 2022, Estimativas) e malhas

—

Denominadores, padronização, mapas

IPEA / IBGE

Vulnerabilidade social (proxy Censo 2022)

2022

Cruzamento desigualdade × saúde

Todas as fontes são de domínio público. Apenas agregados são publicados — nenhum microdado individual sai da máquina de processamento (privacidade por desenho).


🧮 Indicadores e métodos

  • Taxa padronizada por idade (método direto, padrão Brasil/Censo 2022) — comparação legítima entre municípios, corrigindo o efeito da estrutura etária.

  • Intervalo de confiança de 95% (método gama / Poisson exato) em toda taxa bruta; alerta para municípios < 10 mil hab.

  • Excesso de mortalidade — observado vs. esperado (baseline 2015–2019 ajustado por população), por UF e Brasil.

  • Canal endêmico de dengue (diagrama de controle) — faixa esperada P25–P75 de 2015–2023 vs. ano observado.

  • Taxa de Mortalidade Infantil — óbitos < 1 ano (SIM) ÷ nascidos vivos (SINASC).

  • Índice de vulnerabilidade social (proxy) — z-score de analfabetismo + falta de água (Censo 2022).

  • Tipo de AIH (SIH) — o arquivo do SIH mistura AIH normal com AIH de continuação, emitida quando a internação se prolonga: uma internação longa vira várias linhas. internacoes conta AIHs aprovadas (produção); permanência e custo médios são por episódio, sobre a AIH normal. Nos capítulos V (transtornos mentais) e VI (sistema nervoso) os dois números divergem muito — 25% e 10% das AIHs são de continuação. AIH não é internação nem paciente.

Documentação completa, fórmulas e limitações declaradas: saudeemdado.com/metodologia.


🏗️ Arquitetura (a custo zero)

   Microdados DataSUS (.dbc/.csv)        IBGE (SIDRA / localidades / malhas)
              │                                      │
              ▼                                      ▼
   ┌───────────────────────────────────────────────────────┐
   │  Pipelines Python (local) — streaming + DuckDB         │
   │  scripts/pipeline_*.py · agregação · validação         │
   └───────────────────────────────────────────────────────┘
              │  (sobem apenas marts agregados, ~400 MB)
              ▼
   ┌───────────────────────────────────────────────────────┐
   │  Supabase (Postgres free tier) — somente leitura (RLS) │
   │     ├── API REST automática (PostgREST)                │
   │     └── Storage (Parquet com SHA-256)                  │
   └───────────────────────────────────────────────────────┘
              │
              ▼
   ┌───────────────────────────────────────────────────────┐
   │  Next.js estático (GitHub Pages) → saudeemdado.com     │
   │  JSON estático no build = egress ~zero no banco        │
   └───────────────────────────────────────────────────────┘

   Automação (GitHub Actions): deploy · keep-alive (≤6 dias) · validação de dados

Onde cada fonte mora é declarado uma vez, em scripts/_fontes.py: diretório FTP, prefixo S3 ou endpoint, com o padrão do nome do arquivo e o motivo escrito quando não há o que observar. Pipelines e o observador semanal leem a mesma declaração — antes eram cópias, e elas divergiram: o /dissemin/publicos/SIHSUS/200801_/Dados estava digitado em 8 arquivos, e o preliminar do SIM era lido pelo pipeline sem ser vigiado por ninguém.

Princípios: (1) agregar localmente, publicar só o essencial; (2) nenhum servidor de aplicação para manter; (3) reprodutibilidade radical — todo número regenerável das fontes oficiais por um script aberto.


🚀 Como acessar

Site: saudeemdado.com — painéis de mortalidade, dengue, internações, nascimentos, mapa municipal, tendências e boletim por município.

API REST pública (sem cadastro; chave de leitura em .env.example):

URL="https://zekjhmxjamatlxpkykde.supabase.co/rest/v1"; KEY="<anon key>"

# Municípios de MG por taxa padronizada de mortalidade (2023)
curl "$URL/mart_mortalidade_municipio?uf_sigla=eq.MG&ano=eq.2023&capitulo_cid=eq.TOTAL&sexo=eq.TOTAL&order=taxa_padronizada_100k.desc&limit=10" -H "apikey: $KEY"

# Dengue por município/ano (incidência e letalidade)
curl "$URL/mart_dengue_municipio_ano?uf_sigla=eq.SP&ano_epi=eq.2024&order=incidencia_100k.desc&limit=10" -H "apikey: $KEY"

Pacote Python (clients/python):

import saudeemdado as sd
sd.municipios(uf="MG", ano=2023, as_df=True).nlargest(10, "taxa_padronizada_100k")
sd.dengue(uf="SP", ano=2024, as_df=True)

Servidor MCP — a saúde do Brasil consultável por IA (mcp_server/). Conecte o Claude Desktop/Code e pergunte em linguagem natural. Expõe 41 ferramentas: consulta (mortalidade, internações, dengue, ICSAP, fluxo de pacientes, visão hospitalar, excesso) e análise (comparar_com_pares — município vs. estrato de saúde com percentis; canal_endemico_dengue — diagrama de controle por UF; boletim_semanal — a edição vigente do boletim automático) — mais a camada de confiabilidade (avisa quando o registro do município é pouco confiável) e o detector de anomalias para briefing de gestor. Custo zero: roda no seu cliente e consome a API pública — cada usuário traz o próprio Claude. Regras anti-alucinação embutidas: todo número vem de uma ferramenta, com a fonte citada.

{ "mcpServers": { "saudeemdado": { "command": "uvx", "args": ["saudeemdado-mcp"] } } }

Publicado no PyPI e no registry oficial MCP como io.github.pedropaulofernandes88-stack/saudeemdado. Instalação e receitas: mcp_server/README.md.

Downloads — marts completos em Parquet com SHA-256 na página Dados & API.


🔁 Reprodutibilidade

# Python 3.10–3.12 (datasus-dbc não compila no 3.13+)
pip install duckdb pandas pyarrow requests scipy datasus-dbc dbfread

python scripts/pipeline_v2.py        # SIM 2015–2024 (padronização, IC95%, excesso)
python scripts/pipeline_sinan.py     # Dengue 2015–2024
python scripts/pipeline_sih.py       # Internações 2022–2024
python scripts/pipeline_sinasc.py    # Nascimentos + mortalidade infantil
python scripts/pipeline_ivs.py       # Vulnerabilidade social (proxy Censo 2022)
python scripts/validate_data.py      # validação contra âncoras oficiais

Os pipelines fazem download, agregam em streaming com checkpoint resumível e publicam via API. A rotina de validação (.github/workflows/validate-data.yml) confere mensalmente totais oficiais e conciliação entre marts.

Código de saída — três valores, não dois. "Rodou sem erro" e "veio dado novo" são perguntas diferentes, e todo pipeline responde as duas (scripts/_saida.py):

Código

Significado

0

rodou certo e o mart mudou

1

falhou

2

rodou certo, e nada mudou desde a última vez

A novidade é medida pelo sha256 do mart, antes e depois da gravação — não por tamanho de arquivo nem por contagem de linhas, que não distinguem duplicata de ausência. Reprocessar um ano já processado sai com 2.

Atenção ao encadear: 2 é diferente de zero, e set -e, && e o run: do GitHub Actions leem qualquer código != 0 como falha. Só o 1 é falha:

python scripts/pipeline_sinan.py; c=$?
[ $c -eq 1 ] && exit 1

📁 Estrutura

saude-publica-br/
│
├── site/               # Next.js 14, export estático → saudeemdado.com
│   ├── app/            # uma pasta por rota: painel, dengue, internacoes,
│   │                   #   nascimentos, mapa, tendencias, artigos, dados,
│   │                   #   metodologia, atencao-basica, boletim, hospitalar
│   ├── components/     # gráficos (Recharts), KPIs, navegação
│   ├── lib/            # regras puras e testáveis: municipios, completude,
│   │                   #   tokens de design, seções da metodologia
│   ├── content/        # artigos assinados (seção Análises)
│   └── scripts/        # gera o JSON estático durante o build
│
├── scripts/            # pipelines: SIM, SINAN, SIH, SINASC, CNES, IVS, SIOPS
├── ingestion/utils/    # bulk load (Parquet → COPY) e ledger de ingestão
├── dbt/                # modelos intermediate → marts
├── migrations/         # SQL versionado do Supabase, incluindo as políticas RLS
├── validation/         # suítes Great Expectations sobre os marts
├── ml/                 # detector de anomalias e scoring em lote
├── data/refs/          # tabelas de referência (CID-10, municípios, população)
│
├── mcp_server/         # servidor MCP → PyPI: saudeemdado-mcp
├── clients/python/     # cliente da API → pacote saudeemdado
├── supabase/functions/ # Edge Functions do boletim por assinatura
│
├── .github/workflows/  # CI, deploy do site, boletim, publicação do MCP
├── docs/               # ADRs e notas de arquitetura
└── archive/            # a primeira arquitetura, aposentada — ver archive/README.md

📰 Análises

A seção Análises reúne artigos que cruzam os dados da plataforma com leitura epidemiológica e estatística — da anatomia da epidemia de dengue de 2024 ao paradoxo do sub-registro na relação vulnerabilidade × mortalidade.


🗺️ Roadmap

  • Mortalidade (SIM) 2015–2024 · taxa padronizada · IC95% · excesso

  • Dengue (SINAN) · Internações (SIH) · Nascimentos/Mortalidade infantil (SINASC)

  • Vulnerabilidade social (proxy Censo 2022) e cruzamento com mortalidade

  • Pacote Python · servidor MCP · boletim municipal · seção de Análises

  • SINAN outros agravos — 40 agravos, incluindo chikungunya e zika

  • CNES (leitos/estabelecimentos) · SINASC até 2024 · DOI via Zenodo (10.5281/zenodo.20706845)

  • Dezesseis fontes: SIM, SIH, SINAN, sífilis, SINASC, PNI, Painel de Oncologia, CNES, convênios federais, SISCAN, SIA/SUS, SISAGUA, APS, SIOPS, ANS e RHC/INCA

  • IVS oficial do IPEA — hoje dim_ivs é proxy do Censo 2022 (analfabetismo + sem água), e o nome não diz isso

  • SIH 2015–2021 — a série publicada começa em 2021

  • Imagens de capa próprias para a seção de Análises


🤝 Créditos e projetos relacionados

  • LabSUS (Lucas Amaral Dourado, Universidade Federal do Tocantins) — projeto acadêmico de inteligência em saúde pública que inspirou aqui o cruzamento saúde × vulnerabilidade, a detecção de surtos por canal endêmico e a nota de uso ético. Métodos de domínio público; nenhum código foi copiado.

  • Fontes primárias: DATASUS/Ministério da Saúde (SIM, SINAN, SIH, SINASC), IBGE (Censo 2022, Estimativas, malhas) e IPEA.


⚖️ Uso ético

Os indicadores são agregados e descritivos — não substituem julgamento técnico. Pede-se, de boa-fé, que a plataforma não seja usada para discriminação no acesso à saúde, vigilância em massa de indivíduos ou automação de decisões clínicas/de política pública sem supervisão profissional. Detalhes na LICENSE.

🔒 Segurança

Vulnerabilidades vão por canal privado — ver SECURITY.md. Leia antes a seção sobre o que não é vazamento aqui: a chave anon do Supabase é pública por desenho (é o que permite consultar a API sem cadastro), e os arquivos .env versionados são templates com placeholders.


📄 Licença

Código sob licença MIT. Dados originais em domínio público (DATASUS/MS, IBGE, IPEA) — cite as fontes primárias.

Como citar (DOI 10.5281/zenodo.20706845):

Fernandes, Pedro. Saúde em Dado: inteligência epidemiológica aberta sobre os microdados do SUS. Zenodo, 2026. https://doi.org/10.5281/zenodo.20706845

Metadados legíveis por gerenciadores de referência em CITATION.cff.


👤 Autor

Pedro Fernandes Mestrando em Saúde Coletiva (IAMSPE) · Pós-graduando em Inteligência Artificial e Ciência de Dados em Saúde (Hospital Sírio-Libanês) · Diretor de Tecnologia da Informação — Setor Público (SP)

ORCID Lattes LinkedIn

—

saudeemdado.com · dados públicos, abertos e a custo zero para a pesquisa em saúde no Brasil

Related MCP Connectors

Related MCP Servers

  • F
    license
    Not graded
    quality
    D
    maintenance
    A RAG-based MCP server for natural language querying of Brazilian healthcare manuals (SIH/SUS, SIA/SUS) and official ordinances. It provides 16 tools for semantic search, regulatory critique analysis, and retrieving data from SIGTAP and CNES.
    1
    -
  • A
    license
    Not graded
    quality
    Not graded
    maintenance
    Connects AI agents to 28 Brazilian public APIs, providing over 200 tools to access data on economy, legislation, transparency, and the judiciary. It enables complex queries and cross-referencing of government datasets like IBGE, the Central Bank, and the National Congress through natural language.
    MIT
  • A
    license
    Not graded
    quality
    B
    maintenance
    Enables agents to query 153 live Brazilian government data tools across federal and state sources, including economy, legislature, judiciary, elections, health, education, and more, reading directly from original APIs.
    MIT