Servidor MCP do DATASUS SIH/SUS: internações hospitalares do Brasil (AIH, 1992–2025) — causas CID-10 e CID-9, séries mensais, ICSAP e taxas por UF e município, sem baixar .dbc nem usar TabNet. Brazilian hospital admissions (SIH/SUS) MCP server.
Strong domain-specific tool set with comprehensive schemas and detailed descriptions. All 12 tools have explicit input schemas with typed parameters and descriptions. Tool names follow verb_noun convention (list_, get_, classify_, rank_, compare_). Descriptions are substantive (150-400 chars), explaining WHAT the tool does, WHEN to use it, and key caveats (e.g., CID-9 vs CID-10 eras, race data availability from 2008+, UF basis changes). Output schemas are documented in descriptions. However, some parameter descriptions could be more prescriptive about constraints (e.g., year ranges, valid UF codes), and error handling guidance is minimal. No explicit recovery hints for common failure modes.
Classifica códigos CID-10 como CSAP ou não-CSAP conforme Portaria MS/SAS 221/2008. Retorna a classificação e o grupo CSAP (se aplicável) para cada código.
Compara tendências de ICSAP entre UFs, regiões ou grupos CSAP ao longo do tempo. Retorna séries com indicadores (percentual, taxa, contagem) e linha de tendência opcional.
Compara internações entre UFs ou regiões do Brasil. Gera rankings e identifica variações regionais. Em 1992–1997 `uf` é a UF do arquivo (estabelecimento), não de residência — ver get_available_years.uf_basis e as `notes`.
Retorna os anos disponíveis nos dados do SIH-SUS carregados e o frescor dos cubos em relação ao espelho healthbr-data (`freshness.status`: current, stale, unknown, pending ou disabled; quando stale, lista por ano as partições reeditadas pelo MS, regeneradas, retiradas ou novas na janela). Por ano, o que muda entre as eras do SIH: `race_available` (raça/cor só de 2008), `cid_revision` (9 = CID-9 de 6 dígitos em 1992–1997, 10 = CID-10; 1997 tem as duas), `icsap_list_revision` (cid9-derivada, não oficial, em 1992–1997), `uf_basis` (arquivo em 1992–1997, residencia de 1998), `municipality_available`, `currency` e `records_date_imputed`.
Calcula taxas de internação por 100 mil habitantes (ou outro denominador). Permite filtros por UF, município, sexo, idade, raça, CID e CSAP. Requer dados de população (pop_uf.parquet, pop_uf_agregado.parquet, pop_municipios.parquet).
Parameter constraints not fully specified in descriptions. Year ranges (1992 - 2025), valid UF codes (27 states), and CID chapter bounds (1 - 22) are mentioned but not formalized as min/max or enum constraints in schema.
Error handling and recovery guidance absent. Tools do not document what happens on invalid year, missing data, or population file unavailability (e.g., get_hospitalization_rates depends on pop_*.parquet files). No actionable error messages or retry hints.
Output schemas not formally documented. Descriptions mention what fields are returned (e.g., 'freshness.status', 'cid_revision', 'notes') but no JSON Schema for response objects. LLMs cannot reliably extract or chain results without explicit output type definitions.
Inferred effective spec: 2026-07-28+.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | C | 66 | 2026-07-28+ | v2 |
Retorna séries temporais de internações (mensal ou anual). Útil para análise de tendências e sazonalidade. Série desde 1992; em 1992–1997 `uf` é a UF do arquivo (estabelecimento) e as internações sem data na fonte (1992-01..04 e 1993-01) entram no mês de faturamento — ver get_available_years e as `notes`.
Consulta dados de internações hospitalares do SUS com filtros flexíveis. Permite agregar por múltiplas dimensões (UF, CID, sexo, idade, raça, ano/mês). Raça/cor só existe de 2008 em diante: em 1998–2007 `race` é nulo (ver get_available_years.race_available). Série desde 1992: em 1992–1997 o diagnóstico é CID-9 decodificado por tabela (`cid_group` = categoria de 3 dígitos, `cid_chapter` = capítulo CID-10 equivalente; agrupar por `cid_revision` separa 9 e 10 — 1997 tem os dois), `uf` é a UF do ARQUIVO (estabelecimento), não de residência, e `value` é nominal na moeda da época — ver get_available_years (uf_basis, currency) e as `notes` da resposta. `exclusion` (agrupável) marca as internações fora do universo do % ICSAP do csapAIH (procedimento_obstetrico, parto, longa_permanencia; nula = dentro).
Consulta internações por Condições Sensíveis à Atenção Primária (ICSAP). Permite filtros por grupo CSAP, UF, município, sexo, idade e raça. Raça/cor só existe de 2008 em diante: em 1998–2007 `race` é nulo (ver get_available_years.race_available). Série desde 1992: em 1992–1997 a ICSAP vem de lista CID-9 DERIVADA e não oficial (g03 e g05 não comparáveis com 1998+), `uf` é a UF do arquivo e `value` é nominal na moeda da época — ver get_available_years (uf_basis, currency) e as `notes` da resposta.
Calcula indicadores de ICSAP: percentual de internações por CSAP, taxa por 10 mil habitantes, e proporção de óbitos. Permite filtros por UF, município, sexo, idade, raça e grupo CSAP.
Lista os 22 capítulos da CID-10 com seus códigos e faixas de diagnóstico. Os cubos de 1992–1997 (diagnóstico em CID-9) trazem `cid_chapter` como o capítulo CID-10 equivalente (mapa por categoria em src/data/cid9-chapters.json).
Lista os 19 grupos de Condições Sensíveis à Atenção Primária (CSAP) conforme Portaria MS/SAS 221/2008. Retorna código, nome e códigos CID-10 de cada grupo.
Ranking dos grupos CSAP por número de internações, óbitos ou valor. Permite filtros por UF, sexo, idade, raça e período.
Pagination and result limits not explicitly declared. Tools like get_hospitalizations and get_icsap accept 'limit' but do not specify default, maximum, or whether results are paginated. Large result sets risk context window exhaustion.
Data era and currency caveats are verbose in descriptions but not structured as tool annotations. CID-9 vs CID-10, race availability from 2008, UF basis changes, and nominal currency should be flagged via readOnlyHint or metadata fields for LLM clarity.