What it does

  1. Reads
  2. Writes
  3. High impact

At most: only reads or looks up information.

What it costs

Free

Odel charges nothing per call. The publisher may charge for its own service.

Runs locally over stdio

This server isn't hosted — your MCP client launches it from a package registry. Use one of the commands below, or drop the config into your client (e.g. Claude Desktop).

PyPIsaudeemdado-mcpv0.5.0

Run

uvx saudeemdado-mcp

MCP client config

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

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


📊 Fontes de dados

SistemaConteúdoCoberturaIndicadores derivados
SIMMortalidade (óbitos)2015–2024Taxa bruta + IC95%, taxa padronizada por idade, excesso de mortalidade
SINANDengue (notificações)2015–2024Incidência, gravidade, letalidade, canal endêmico
SIHInternações hospitalares (AIH)2022–2024Permanência média e custo por episódio (AIH normal), mortalidade intra-hospitalar
SINASCNascidos vivos2021–2022Baixo peso, prematuridade, pré-natal, mortalidade infantil
IBGEPopulação (Censo 2022, Estimativas) e malhas—Denominadores, padronização, mapas
IPEA / IBGEVulnerabilidade social (proxy Censo 2022)2022Cruzamento 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):

bash
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):

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.

json
{ "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

bash
# 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ódigoSignificado
0rodou certo e o mart mudou
1falhou
2rodou 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:

bash
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

Similar modules

Browse Public health