Server definition
- Hash
- sha256:040ef12abda39b17dc7d4e9cb8def275415203aeb4d4dd6b4c0272c0ac70f70b
- What it is
- What a remote MCP server returned when asked what it offers: 12 tools
The blob, as servednamed by its sha256
{
"instructions": "Brazilian hospital admissions from DATASUS SIH/SUS (AIH records, 1992-2025), read from pre-aggregated public cubes of the healthbr-data Parquet mirror, never from the FTP or TabNet: causes by ICD-10 chapter and group (ICD-9 before 1998), monthly series, ambulatory care sensitive conditions (ICSAP, the Brazilian list) and crude, age-specific or age-standardized rates per 100,000 by state and municipality. Every stratum carries admissions, length of stay, amount paid by SUS and deaths; every response carries a provenance block with the data vintage and the citation. Typical flow: get_available_years first (which years each cube covers), then get_hospitalizations for counts by cause, place, age, sex and race, get_hospitalization_trends for monthly or annual series, get_hospitalization_rates and compare_regions for rates; get_icsap, get_icsap_indicators, rank_csap_groups and compare_icsap_trends for ICSAP; list_cid_chapters, list_csap_groups and classify_as_csap resolve codes and groups before querying. Do not use this server for individual AIH records, for variables the cubes do not carry (procedure performed, facility CNES, secondary diagnosis) or for other DATASUS systems (SIM, SINASC, SIA, SINAN): use microdatasus, PySUS or the healthbr-data mirror for those.",
"tools": [
{
"description": "Classifica um ou mais códigos CID-10 como CSAP ou não. Retorna o grupo CSAP correspondente se aplicável. Aceita as duas notações do mesmo código — `J18.1` (OMS) e `J181` (SIH) — com a mesma resposta. Código que NÃO é CID-10 não é classificado: volta com `is_csap: null` e `error` próprio, nunca `false` (que afirmaria que a condição existe e não é sensÃvel). Só CID-10: os códigos CID-9 de 6 dÃgitos do SIH de 1992–1997 são classificados no build pela lista derivada (src/data/csap-groups-cid9.json), não por esta ferramenta.",
"inputSchema": {
"additionalProperties": false,
"properties": {
"cid_codes": {
"description": "Códigos CID-10 para classificar (ex: ['J18', 'A09', 'K35'])",
"items": {
"type": "string"
},
"type": "array"
}
},
"required": [
"cid_codes"
],
"type": "object"
},
"name": "classify_as_csap",
"outputSchema": {
"additionalProperties": false,
"anyOf": [
{
"required": [
"classifications",
"summary"
]
}
],
"description": "Cada código CID-10 informado classificado como sensÃvel (com o grupo) ou não; `is_csap` é null no código que não é CID-10, que não recebe classificação",
"properties": {
"attribution": {
"description": "URLs canônicas das fontes desta resposta (lista de atribuição)",
"items": {
"type": "string"
},
"type": "array"
},
"classifications": {
"description": "Uma entrada por código, na ordem informada",
"items": {
"additionalProperties": false,
"properties": {
"cid": {
"description": "Código como foi informado",
"type": "string"
},
"csap_group": {
"description": "Grupo CSAP g01–g19; null quando não é sensÃvel ou não foi classificado",
"type": [
"string",
"null"
]
},
"csap_name": {
"description": "Nome do grupo; null quando não é sensÃvel ou não foi classificado",
"type": [
"string",
"null"
]
},
"error": {
"description": "Só nas entradas não classificadas: por que o código não é CID-10",
"type": "string"
},
"is_csap": {
"description": "true quando o código cai em algum grupo CSAP; false quando é CID-10 e não cai; null quando não é um código CID-10 (não classificado — veja `error` da entrada)",
"type": [
"boolean",
"null"
]
}
},
"required": [
"cid",
"is_csap",
"csap_group",
"csap_name"
],
"type": "object"
},
"type": "array"
},
"error": {
"description": "Só quando houver código não classificado: quantos foram e para onde olhar",
"type": "string"
},
"provenance": {
"additionalProperties": false,
"description": "Bloco de proveniência (contrato v1.1): fonte, URL, competência, extração, diagnóstico de origem, citação e licença",
"properties": {
"citation": {
"description": "Citação pronta para uso",
"type": "string"
},
"data_vintage": {
"description": "Competência ou safra do dado segundo a fonte; null quando a fonte não expõe",
"type": [
"string",
"null"
]
},
"license": {
"description": "Regime legal do dado (id SPDX quando há)",
"type": [
"string",
"null"
]
},
"retrieval": {
"description": "Diagnóstico de origem desta chamada (contrato v1.1): idas ao canal sih/cubos/ do healthbr-data (manifesto e arquivos que faltavam no disco), tentativas somadas e anomalias contornadas; unstable=true quando houve anomalia. null = a resposta veio do DISCO (cache aquecido) ou o bloco não é do canal (listas de referência)",
"oneOf": [
{
"additionalProperties": false,
"description": "Diagnóstico de origem da chamada: como o dado foi obtido. Medição real do servidor; unstable=true pede ao agente que trate o dado como obtido com dificuldade",
"properties": {
"anomalies": {
"description": "Anomalias superadas até o sucesso, somadas por classe, em ordem fixa; [] se nenhuma",
"items": {
"additionalProperties": false,
"properties": {
"count": {
"description": "Ocorrências desta classe na chamada",
"minimum": 1,
"type": "integer"
},
"kind": {
"description": "Classe da anomalia (vocabulário fechado do contrato)",
"enum": [
"timeout",
"network",
"http_4xx",
"http_5xx",
"rate_limited",
"malformed_body"
],
"type": "string"
}
},
"required": [
"kind",
"count"
],
"type": "object"
},
"type": "array"
},
"attempts": {
"description": "Tentativas somadas, incluindo as repetidas (>= requests)",
"minimum": 1,
"type": "integer"
},
"requests": {
"description": "Idas distintas à origem que compõem esta resposta (fatias, páginas)",
"minimum": 1,
"type": "integer"
},
"unstable": {
"description": "true se houve repetição (attempts > requests) ou alguma anomalia",
"type": "boolean"
}
},
"required": [
"requests",
"attempts",
"anomalies",
"unstable"
],
"type": "object"
},
{
"type": "null"
}
]
},
"retrieved_at": {
"description": "Instante REAL da extração na origem (ISO-8601) — para os cubos SIH, a safra do sidecar (extração no FTP do DATASUS), nunca o instante do download",
"type": "string"
},
"source": {
"description": "Fonte oficial do dado",
"type": "string"
},
"source_url": {
"description": "URL canônica que reproduz a consulta ou localiza a fonte",
"type": "string"
}
},
"required": [
"source",
"source_url",
"data_vintage",
"retrieved_at",
"retrieval",
"citation",
"license"
],
"type": "object"
},
"summary": {
"additionalProperties": false,
"properties": {
"csap": {
"description": "Quantos são sensÃveis",
"type": "number"
},
"non_csap": {
"description": "Quantos são CID-10 e não são sensÃveis (não inclui os não classificados)",
"type": "number"
},
"not_classified": {
"description": "Só quando houver: quantos não são CID-10",
"type": "number"
},
"total": {
"description": "Códigos informados",
"type": "number"
}
},
"required": [
"total",
"csap",
"non_csap"
],
"type": "object"
}
},
"required": [
"provenance",
"attribution"
],
"type": "object"
}
},
{
"description": "Análise temporal comparativa de ICSAP entre UFs ou grupos CSAP. Calcula tendências, variação anual e identifica melhores/piores desempenhos. Para `percentage` e `count` valem todos os anos do SIH (desde 1992); `rate_per_10k` exige população e aceita só os anos de get_available_years.population_years. Em 1992–1997 a ICSAP vem de lista CID-9 DERIVADA e não oficial (g03 e g05 não comparáveis com 1998+) e `uf` é a UF do arquivo — ver as `notes`. Percentual no universo do pacote R csapAIH por padrão (`universe`): fora do numerador e do denominador as internações por procedimento obstétrico, parto e longa permanência.",
"inputSchema": {
"additionalProperties": false,
"properties": {
"compare_by": {
"description": "Comparar por UF ou grupo CSAP",
"enum": [
"uf",
"csap_group"
],
"type": "string"
},
"compare_values": {
"description": "Valores especÃficos para comparar (UFs ou grupos CSAP)",
"items": {
"type": "string"
},
"type": "array"
},
"end_year": {
"description": "Ano final",
"type": "integer"
},
"include_trend_line": {
"description": "Incluir análise de tendência linear (default: true)",
"type": "boolean"
},
"indicator": {
"description": "Indicador: percentage (% ICSAP), count (número), rate_per_10k (taxa)",
"enum": [
"percentage",
"count",
"rate_per_10k"
],
"type": "string"
},
"start_year": {
"description": "Ano inicial",
"type": "integer"
},
"universe": {
"description": "Universo do % ICSAP: 'csapaih' (padrão) tira do numerador e do denominador as internações por procedimento obstétrico, com diagnóstico de parto (O80-O84) e as AIH de longa permanência, como o pacote R csapAIH (Nedel); 'all' conta todas as internações.",
"enum": [
"csapaih",
"all"
],
"type": "string"
}
},
"required": [
"start_year",
"end_year"
],
"type": "object"
},
"name": "compare_icsap_trends",
"outputSchema": {
"additionalProperties": false,
"anyOf": [
{
"required": [
"indicator",
"period",
"compare_by",
"series",
"notes",
"summary"
]
},
{
"required": [
"error"
]
}
],
"description": "Séries anuais do indicador ICSAP por UF ou grupo CSAP, com tendência linear e melhor/pior desempenho; `error` quando o intervalo está fora da cobertura",
"properties": {
"attribution": {
"description": "URLs canônicas das fontes desta resposta (lista de atribuição)",
"items": {
"type": "string"
},
"type": "array"
},
"available_sih_years": {
"description": "Anos com dados SIH atendÃveis por este servidor",
"items": {
"type": "number"
},
"type": "array"
},
"compare_by": {
"description": "Eixo comparado: uf, csap_group ou total (sem eixo)",
"type": "string"
},
"data": {
"description": "Sempre vazio: só aparece no caminho de erro-mole do funil",
"items": {},
"type": "array"
},
"error": {
"description": "Motivo pelo qual não há dados nesta resposta (ano sem dado, cobertura populacional, falha na consulta)",
"type": "string"
},
"indicator": {
"description": "Indicador das séries",
"enum": [
"percentage",
"count",
"rate_per_10k"
]
},
"note": {
"description": "Como obter o dado (por exemplo, consultar get_available_years)",
"type": "string"
},
"notes": {
"description": "Avisos que qualificam os números: era CID-9, raça/cor ausente, universo do % ICSAP, denominador populacional, truncamento",
"items": {
"type": "string"
},
"type": "array"
},
"period": {
"additionalProperties": false,
"properties": {
"end": {
"description": "Ano final pedido",
"type": "number"
},
"start": {
"description": "Ano inicial pedido",
"type": "number"
}
},
"required": [
"start",
"end"
],
"type": "object"
},
"population_years": {
"additionalProperties": false,
"description": "Cobertura populacional; só no erro-mole de `rate_per_10k` fora do intervalo",
"properties": {
"first_year": {
"description": "Primeiro ano com população",
"type": "number"
},
"last_year": {
"description": "Último ano com população",
"type": "number"
}
},
"required": [
"first_year",
"last_year"
],
"type": "object"
},
"provenance": {
"description": "Um bloco por procedência que contribuiu com esta resposta (SIH, lista CSAP, csapAIH, população…); licenças nunca se fundem",
"items": {
"additionalProperties": false,
"description": "Bloco de proveniência (contrato v1.1): fonte, URL, competência, extração, diagnóstico de origem, citação e licença",
"properties": {
"citation": {
"description": "Citação pronta para uso",
"type": "string"
},
"data_vintage": {
"description": "Competência ou safra do dado segundo a fonte; null quando a fonte não expõe",
"type": [
"string",
"null"
]
},
"license": {
"description": "Regime legal do dado (id SPDX quando há)",
"type": [
"string",
"null"
]
},
"retrieval": {
"description": "Diagnóstico de origem desta chamada (contrato v1.1): idas ao canal sih/cubos/ do healthbr-data (manifesto e arquivos que faltavam no disco), tentativas somadas e anomalias contornadas; unstable=true quando houve anomalia. null = a resposta veio do DISCO (cache aquecido) ou o bloco não é do canal (listas de referência)",
"oneOf": [
{
"additionalProperties": false,
"description": "Diagnóstico de origem da chamada: como o dado foi obtido. Medição real do servidor; unstable=true pede ao agente que trate o dado como obtido com dificuldade",
"properties": {
"anomalies": {
"description": "Anomalias superadas até o sucesso, somadas por classe, em ordem fixa; [] se nenhuma",
"items": {
"additionalProperties": false,
"properties": {
"count": {
"description": "Ocorrências desta classe na chamada",
"minimum": 1,
"type": "integer"
},
"kind": {
"description": "Classe da anomalia (vocabulário fechado do contrato)",
"enum": [
"timeout",
"network",
"http_4xx",
"http_5xx",
"rate_limited",
"malformed_body"
],
"type": "string"
}
},
"required": [
"kind",
"count"
],
"type": "object"
},
"type": "array"
},
"attempts": {
"description": "Tentativas somadas, incluindo as repetidas (>= requests)",
"minimum": 1,
"type": "integer"
},
"requests": {
"description": "Idas distintas à origem que compõem esta resposta (fatias, páginas)",
"minimum": 1,
"type": "integer"
},
"unstable": {
"description": "true se houve repetição (attempts > requests) ou alguma anomalia",
"type": "boolean"
}
},
"required": [
"requests",
"attempts",
"anomalies",
"unstable"
],
"type": "object"
},
{
"type": "null"
}
]
},
"retrieved_at": {
"description": "Instante REAL da extração na origem (ISO-8601) — para os cubos SIH, a safra do sidecar (extração no FTP do DATASUS), nunca o instante do download",
"type": "string"
},
"source": {
"description": "Fonte oficial do dado",
"type": "string"
},
"source_url": {
"description": "URL canônica que reproduz a consulta ou localiza a fonte",
"type": "string"
}
},
"required": [
"source",
"source_url",
"data_vintage",
"retrieved_at",
"retrieval",
"citation",
"license"
],
"type": "object"
},
"type": "array"
},
"published_years": {
"description": "Anos que o canal de cubos publica — a verdade do canal, distinta do que esta instância tem em disco; só com o cache de cubos ligado",
"items": {
"type": "number"
},
"type": "array"
},
"series": {
"description": "Pontos em ordem cronológica",
"items": {
"additionalProperties": {
"description": "Valor do indicador para esta UF, grupo ou `total`",
"type": "number"
},
"description": "Um ponto por ano: `year` mais uma chave por valor comparado (UF, grupo ou `total`) com o indicador",
"properties": {
"year": {
"description": "Ano",
"type": "number"
}
},
"required": [
"year"
],
"type": "object"
},
"type": "array"
},
"summary": {
"additionalProperties": false,
"properties": {
"best_performer": {
"description": "Valor comparado com a melhor evolução; só com mais de uma tendência",
"type": "string"
},
"note": {
"description": "Como ler o indicador; só para `percentage`",
"type": "string"
},
"worst_performer": {
"description": "Valor comparado com a pior evolução; só com mais de uma tendência",
"type": "string"
}
},
"required": [],
"type": "object"
},
"trends": {
"additionalProperties": {
"additionalProperties": false,
"properties": {
"avg_annual_change": {
"description": "Variação média anual",
"type": "number"
},
"change_pct": {
"description": "Variação relativa entre as pontas, %",
"type": "number"
},
"direction": {
"description": "Sentido da tendência",
"enum": [
"increasing",
"decreasing",
"stable"
]
},
"end_value": {
"description": "Valor no último ano",
"type": "number"
},
"slope": {
"description": "Inclinação da regressão linear (indicador por ano)",
"type": "number"
},
"start_value": {
"description": "Valor no primeiro ano",
"type": "number"
}
},
"required": [
"slope",
"direction",
"avg_annual_change",
"start_value",
"end_value",
"change_pct"
],
"type": "object"
},
"description": "Tendência por valor comparado; só com `include_trend_line` e ao menos dois anos — ausente quando desligada",
"type": "object"
},
"years_not_available": {
"additionalProperties": false,
"description": "Presente só quando parte dos anos pedidos não tem dado: os números cobrem apenas os anos atendidos",
"properties": {
"note": {
"description": "Quais anos ficaram fora e quais os números cobrem",
"type": "string"
},
"years": {
"description": "Anos pedidos que não têm dados SIH e ficaram fora do resultado",
"items": {
"type": "number"
},
"type": "array"
}
},
"required": [
"years",
"note"
],
"type": "object"
}
},
"required": [
"provenance",
"attribution"
],
"type": "object"
}
},
{
"description": "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`.",
"inputSchema": {
"additionalProperties": false,
"properties": {
"cid_chapter": {
"description": "CapÃtulo CID-10 especÃfico",
"type": "integer"
},
"compare_by": {
"description": "Comparar por UF ou região (default: uf)",
"enum": [
"uf",
"region"
],
"type": "string"
},
"is_csap": {
"description": "Filtrar apenas CSAP",
"type": "boolean"
},
"limit": {
"description": "Número de resultados (default: 10)",
"type": "integer"
},
"metric": {
"description": "Métrica para ranking (default: n)",
"enum": [
"n",
"deaths"
],
"type": "string"
},
"year": {
"description": "Anos para consultar",
"items": {
"type": "integer"
},
"type": "array"
}
},
"type": "object"
},
"name": "compare_regions",
"outputSchema": {
"additionalProperties": false,
"anyOf": [
{
"required": [
"compare_by",
"metric",
"ranking",
"total_locations"
]
},
{
"required": [
"error"
]
}
],
"description": "Ranking de UFs por internações ou óbitos; `error` quando nenhum ano pedido tem dado",
"properties": {
"attribution": {
"description": "URLs canônicas das fontes desta resposta (lista de atribuição)",
"items": {
"type": "string"
},
"type": "array"
},
"available_sih_years": {
"description": "Anos com dados SIH atendÃveis por este servidor",
"items": {
"type": "number"
},
"type": "array"
},
"compare_by": {
"description": "Eixo da comparação (hoje ambos agrupam por UF)",
"enum": [
"uf",
"region"
]
},
"data": {
"description": "Sempre vazio: só aparece no caminho de erro-mole do funil",
"items": {},
"type": "array"
},
"error": {
"description": "Motivo pelo qual não há dados nesta resposta (ano sem dado, cobertura populacional, falha na consulta)",
"type": "string"
},
"metric": {
"description": "Métrica que ordena o ranking",
"enum": [
"n",
"deaths"
]
},
"note": {
"description": "Como obter o dado (por exemplo, consultar get_available_years)",
"type": "string"
},
"notes": {
"description": "Avisos que qualificam os números: era CID-9, raça/cor ausente, universo do % ICSAP, denominador populacional, truncamento",
"items": {
"type": "string"
},
"type": "array"
},
"provenance": {
"additionalProperties": false,
"description": "Bloco de proveniência (contrato v1.1): fonte, URL, competência, extração, diagnóstico de origem, citação e licença",
"properties": {
"citation": {
"description": "Citação pronta para uso",
"type": "string"
},
"data_vintage": {
"description": "Competência ou safra do dado segundo a fonte; null quando a fonte não expõe",
"type": [
"string",
"null"
]
},
"license": {
"description": "Regime legal do dado (id SPDX quando há)",
"type": [
"string",
"null"
]
},
"retrieval": {
"description": "Diagnóstico de origem desta chamada (contrato v1.1): idas ao canal sih/cubos/ do healthbr-data (manifesto e arquivos que faltavam no disco), tentativas somadas e anomalias contornadas; unstable=true quando houve anomalia. null = a resposta veio do DISCO (cache aquecido) ou o bloco não é do canal (listas de referência)",
"oneOf": [
{
"additionalProperties": false,
"description": "Diagnóstico de origem da chamada: como o dado foi obtido. Medição real do servidor; unstable=true pede ao agente que trate o dado como obtido com dificuldade",
"properties": {
"anomalies": {
"description": "Anomalias superadas até o sucesso, somadas por classe, em ordem fixa; [] se nenhuma",
"items": {
"additionalProperties": false,
"properties": {
"count": {
"description": "Ocorrências desta classe na chamada",
"minimum": 1,
"type": "integer"
},
"kind": {
"description": "Classe da anomalia (vocabulário fechado do contrato)",
"enum": [
"timeout",
"network",
"http_4xx",
"http_5xx",
"rate_limited",
"malformed_body"
],
"type": "string"
}
},
"required": [
"kind",
"count"
],
"type": "object"
},
"type": "array"
},
"attempts": {
"description": "Tentativas somadas, incluindo as repetidas (>= requests)",
"minimum": 1,
"type": "integer"
},
"requests": {
"description": "Idas distintas à origem que compõem esta resposta (fatias, páginas)",
"minimum": 1,
"type": "integer"
},
"unstable": {
"description": "true se houve repetição (attempts > requests) ou alguma anomalia",
"type": "boolean"
}
},
"required": [
"requests",
"attempts",
"anomalies",
"unstable"
],
"type": "object"
},
{
"type": "null"
}
]
},
"retrieved_at": {
"description": "Instante REAL da extração na origem (ISO-8601) — para os cubos SIH, a safra do sidecar (extração no FTP do DATASUS), nunca o instante do download",
"type": "string"
},
"source": {
"description": "Fonte oficial do dado",
"type": "string"
},
"source_url": {
"description": "URL canônica que reproduz a consulta ou localiza a fonte",
"type": "string"
}
},
"required": [
"source",
"source_url",
"data_vintage",
"retrieved_at",
"retrieval",
"citation",
"license"
],
"type": "object"
},
"published_years": {
"description": "Anos que o canal de cubos publica — a verdade do canal, distinta do que esta instância tem em disco; só com o cache de cubos ligado",
"items": {
"type": "number"
},
"type": "array"
},
"ranking": {
"description": "Ranking em ordem decrescente da métrica",
"items": {
"additionalProperties": false,
"properties": {
"deaths": {
"description": "Óbitos",
"type": "number"
},
"mortality_rate": {
"description": "Óbitos / internações × 100, duas casas",
"type": "number"
},
"n_hospitalizations": {
"description": "Internações",
"type": "number"
},
"rank": {
"description": "Posição, 1 = maior",
"type": "number"
},
"uf": {
"description": "UF",
"type": "string"
}
},
"required": [
"rank",
"uf",
"n_hospitalizations",
"deaths",
"mortality_rate"
],
"type": "object"
},
"type": "array"
},
"total_locations": {
"description": "Quantas localidades no ranking",
"type": "number"
},
"years_not_available": {
"additionalProperties": false,
"description": "Presente só quando parte dos anos pedidos não tem dado: os números cobrem apenas os anos atendidos",
"properties": {
"note": {
"description": "Quais anos ficaram fora e quais os números cobrem",
"type": "string"
},
"years": {
"description": "Anos pedidos que não têm dados SIH e ficaram fora do resultado",
"items": {
"type": "number"
},
"type": "array"
}
},
"required": [
"years",
"note"
],
"type": "object"
}
},
"required": [
"provenance",
"attribution"
],
"type": "object"
}
},
{
"description": "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`.",
"inputSchema": {
"additionalProperties": false,
"properties": {},
"type": "object"
},
"name": "get_available_years",
"outputSchema": {
"additionalProperties": false,
"anyOf": [
{
"required": [
"years",
"data_range",
"note",
"race_available",
"years_without_race",
"cid_revision",
"years_cid9",
"icsap_available",
"icsap_list_revision",
"uf_basis",
"years_uf_arquivo",
"municipality_available",
"currency",
"records_date_imputed",
"csap_universe",
"population_years",
"cubes_channel",
"freshness"
]
},
{
"required": [
"error",
"years"
]
}
],
"description": "Anos com cubo local, o que cada ano carrega (revisão da CID, raça/cor, municÃpio, moeda, universo ICSAP), cobertura da população, canal de cubos e frescor",
"properties": {
"attribution": {
"description": "URLs canônicas das fontes desta resposta (lista de atribuição)",
"items": {
"type": "string"
},
"type": "array"
},
"cid_revision": {
"additionalProperties": {
"additionalProperties": {
"description": "Internações naquela revisão; null quando o sidecar não traz o total",
"type": [
"number",
"null"
]
},
"description": "Revisão da CID (\"9\" ou \"10\") → internações",
"type": "object"
},
"description": "Internações por revisão da CID — chave é o ano (string)",
"type": "object"
},
"csap_universe": {
"additionalProperties": {
"additionalProperties": false,
"description": "Universo do % ICSAP como o csapAIH; null em cubo anterior ao builder 2.6.0",
"properties": {
"excluded": {
"additionalProperties": {
"description": "Internações fora do universo por este motivo",
"type": "number"
},
"description": "Motivo de exclusão → internações",
"type": "object"
},
"method": {
"description": "Método (csapAIH)",
"type": "string"
},
"records_in_universe": {
"description": "Internações dentro do universo",
"type": [
"number",
"null"
]
}
},
"required": [
"method",
"records_in_universe",
"excluded"
],
"type": [
"object",
"null"
]
},
"description": "Universo do % ICSAP — chave é o ano (string)",
"type": "object"
},
"cubes_channel": {
"additionalProperties": false,
"description": "Canal público dos cubos e cache local",
"properties": {
"base_url": {
"description": "URL do canal público de cubos",
"type": "string"
},
"cache_dir": {
"description": "Pasta do cache local; null quando desligado",
"type": [
"string",
"null"
]
},
"enabled": {
"description": "false quando o cache de cubos está desligado",
"type": "boolean"
},
"manifest_generated_at": {
"description": "Quando o manifesto foi gerado; null sem manifesto",
"type": [
"string",
"null"
]
},
"manifest_source": {
"description": "De onde veio o manifesto",
"enum": [
"remote",
"disk",
"none",
"disabled"
]
},
"note": {
"description": "Como o cache baixa os anos pedidos",
"type": "string"
},
"published_years": {
"description": "Anos publicados no manifesto do canal",
"items": {
"type": "number"
},
"type": "array"
}
},
"required": [
"enabled",
"base_url",
"published_years",
"cache_dir",
"manifest_source"
],
"type": "object"
},
"currency": {
"additionalProperties": {
"description": "Moeda de `value` por competência; null quando o sidecar não informa",
"items": {
"additionalProperties": false,
"properties": {
"code": {
"description": "Código ISO 4217 (BRE, BRR, BRL)",
"type": "string"
},
"from": {
"description": "Primeira competência (AAAA-MM)",
"type": "string"
},
"name": {
"description": "Nome da moeda",
"type": "string"
},
"symbol": {
"description": "SÃmbolo (Cr$, CR$, R$)",
"type": "string"
},
"to": {
"description": "Última competência (AAAA-MM)",
"type": "string"
}
},
"required": [
"from",
"to",
"code",
"symbol",
"name"
],
"type": "object"
},
"type": [
"array",
"null"
]
},
"description": "Moeda de `value` — chave é o ano (string)",
"type": "object"
},
"data_range": {
"additionalProperties": false,
"description": "Intervalo dos anos locais",
"properties": {
"first_year": {
"description": "Primeiro ano local; ausente quando não há cubo",
"type": "number"
},
"last_year": {
"description": "Último ano local; ausente quando não há cubo",
"type": "number"
},
"total_years": {
"description": "Quantos anos",
"type": "number"
}
},
"required": [
"total_years"
],
"type": "object"
},
"error": {
"description": "Falha ao listar os anos",
"type": "string"
},
"freshness": {
"additionalProperties": false,
"description": "Frescor dos cubos locais frente ao espelho healthbr-data",
"properties": {
"checked_at": {
"description": "Instante (UTC) da última checagem; null se nunca terminou",
"type": [
"string",
"null"
]
},
"cubes": {
"description": "Cubos atrasados frente ao espelho",
"items": {
"additionalProperties": false,
"properties": {
"behind": {
"description": "true quando alguma lista acima tem item",
"type": "boolean"
},
"cube_year": {
"description": "Ano do cubo",
"type": "number"
},
"new_in_window": {
"description": "Competências publicadas depois do build",
"items": {
"type": "string"
},
"type": "array"
},
"reedited": {
"description": "Partições cujo .dbc de origem mudou (reedição do MS)",
"items": {
"type": "string"
},
"type": "array"
},
"removed": {
"description": "Partições que saÃram do manifesto",
"items": {
"type": "string"
},
"type": "array"
},
"reprocessed": {
"description": "Partições regeneradas pelo espelho",
"items": {
"type": "string"
},
"type": "array"
}
},
"required": [
"cube_year",
"reedited",
"reprocessed",
"removed",
"new_in_window",
"behind"
],
"type": "object"
},
"type": "array"
},
"error": {
"description": "Erro da checagem; null quando não houve",
"type": [
"string",
"null"
]
},
"manifest_last_updated_local": {
"description": "Manifesto com que os cubos foram gerados",
"type": [
"string",
"null"
]
},
"manifest_last_updated_remote": {
"description": "Manifesto público lido agora",
"type": [
"string",
"null"
]
},
"manifest_url": {
"description": "URL do manifesto do espelho",
"type": [
"string",
"null"
]
},
"method": {
"description": "Como checou: sonda parcial ou manifesto inteiro",
"enum": [
"range",
"full",
null
]
},
"status": {
"description": "Frescor dos cubos frente ao espelho",
"enum": [
"disabled",
"pending",
"current",
"stale",
"unknown"
]
}
},
"required": [
"status",
"checked_at",
"method",
"manifest_url",
"manifest_last_updated_local",
"manifest_last_updated_remote",
"cubes",
"error"
],
"type": "object"
},
"icsap_available": {
"additionalProperties": {
"description": "true quando o cubo tem a marcação ICSAP",
"type": "boolean"
},
"description": "ICSAP disponÃvel — chave é o ano (string)",
"type": "object"
},
"icsap_list_revision": {
"additionalProperties": {
"additionalProperties": {
"description": "Lista usada (portaria-221-2008 ou cid9-derivada)",
"type": "string"
},
"description": "Revisão → lista",
"type": "object"
},
"description": "Lista ICSAP por revisão da CID — chave é o ano (string)",
"type": "object"
},
"municipality_available": {
"additionalProperties": {
"description": "false quando `municipality_code` é nulo em todas as linhas",
"type": "boolean"
},
"description": "MunicÃpio disponÃvel — chave é o ano (string)",
"type": "object"
},
"note": {
"description": "Aviso sobre o que `years` significa",
"type": "string"
},
"population_years": {
"additionalProperties": false,
"description": "Cobertura dos arquivos de população por UF: o que as ferramentas de taxa aceitam",
"properties": {
"aggregated": {
"additionalProperties": false,
"description": "pop_uf_agregado.parquet — faixa etária quinquenal por UF e sexo (1991–1999)",
"properties": {
"age": {
"description": "Grão etário do arquivo",
"type": "string"
},
"age_groups": {
"description": "Faixas etárias quinquenais (só no arquivo agregado)",
"items": {
"type": "string"
},
"type": "array"
},
"first_year": {
"description": "Primeiro ano coberto",
"type": "number"
},
"last_year": {
"description": "Último ano coberto",
"type": "number"
},
"source": {
"description": "Arquivo parquet que serve o intervalo",
"type": "string"
}
},
"required": [
"first_year",
"last_year",
"source",
"age"
],
"type": [
"object",
"null"
]
},
"detailed": {
"additionalProperties": false,
"description": "pop_uf.parquet — idade simples por UF e sexo (projeções IBGE, 2000+)",
"properties": {
"age": {
"description": "Grão etário do arquivo",
"type": "string"
},
"age_groups": {
"description": "Faixas etárias quinquenais (só no arquivo agregado)",
"items": {
"type": "string"
},
"type": "array"
},
"first_year": {
"description": "Primeiro ano coberto",
"type": "number"
},
"last_year": {
"description": "Último ano coberto",
"type": "number"
},
"source": {
"description": "Arquivo parquet que serve o intervalo",
"type": "string"
}
},
"required": [
"first_year",
"last_year",
"source",
"age"
],
"type": [
"object",
"null"
]
},
"first_year": {
"description": "Primeiro ano com população por UF (união dos dois arquivos)",
"type": "number"
},
"last_year": {
"description": "Último ano com população por UF",
"type": "number"
}
},
"required": [
"first_year",
"last_year",
"detailed",
"aggregated"
],
"type": [
"object",
"null"
]
},
"provenance": {
"additionalProperties": false,
"description": "Bloco de proveniência (contrato v1.1): fonte, URL, competência, extração, diagnóstico de origem, citação e licença",
"properties": {
"citation": {
"description": "Citação pronta para uso",
"type": "string"
},
"data_vintage": {
"description": "Competência ou safra do dado segundo a fonte; null quando a fonte não expõe",
"type": [
"string",
"null"
]
},
"license": {
"description": "Regime legal do dado (id SPDX quando há)",
"type": [
"string",
"null"
]
},
"retrieval": {
"description": "Diagnóstico de origem desta chamada (contrato v1.1): idas ao canal sih/cubos/ do healthbr-data (manifesto e arquivos que faltavam no disco), tentativas somadas e anomalias contornadas; unstable=true quando houve anomalia. null = a resposta veio do DISCO (cache aquecido) ou o bloco não é do canal (listas de referência)",
"oneOf": [
{
"additionalProperties": false,
"description": "Diagnóstico de origem da chamada: como o dado foi obtido. Medição real do servidor; unstable=true pede ao agente que trate o dado como obtido com dificuldade",
"properties": {
"anomalies": {
"description": "Anomalias superadas até o sucesso, somadas por classe, em ordem fixa; [] se nenhuma",
"items": {
"additionalProperties": false,
"properties": {
"count": {
"description": "Ocorrências desta classe na chamada",
"minimum": 1,
"type": "integer"
},
"kind": {
"description": "Classe da anomalia (vocabulário fechado do contrato)",
"enum": [
"timeout",
"network",
"http_4xx",
"http_5xx",
"rate_limited",
"malformed_body"
],
"type": "string"
}
},
"required": [
"kind",
"count"
],
"type": "object"
},
"type": "array"
},
"attempts": {
"description": "Tentativas somadas, incluindo as repetidas (>= requests)",
"minimum": 1,
"type": "integer"
},
"requests": {
"description": "Idas distintas à origem que compõem esta resposta (fatias, páginas)",
"minimum": 1,
"type": "integer"
},
"unstable": {
"description": "true se houve repetição (attempts > requests) ou alguma anomalia",
"type": "boolean"
}
},
"required": [
"requests",
"attempts",
"anomalies",
"unstable"
],
"type": "object"
},
{
"type": "null"
}
]
},
"retrieved_at": {
"description": "Instante REAL da extração na origem (ISO-8601) — para os cubos SIH, a safra do sidecar (extração no FTP do DATASUS), nunca o instante do download",
"type": "string"
},
"source": {
"description": "Fonte oficial do dado",
"type": "string"
},
"source_url": {
"description": "URL canônica que reproduz a consulta ou localiza a fonte",
"type": "string"
}
},
"required": [
"source",
"source_url",
"data_vintage",
"retrieved_at",
"retrieval",
"citation",
"license"
],
"type": "object"
},
"race_available": {
"additionalProperties": {
"description": "true quando o cubo tem raça/cor",
"type": "boolean"
},
"description": "Raça/cor disponÃvel — chave é o ano (string)",
"type": "object"
},
"records_date_imputed": {
"additionalProperties": {
"description": "Internações que entraram com data imputada",
"type": "number"
},
"description": "Datas imputadas — chave é o ano (string)",
"type": "object"
},
"uf_basis": {
"additionalProperties": {
"description": "Base do eixo `uf`",
"enum": [
"residencia",
"arquivo"
]
},
"description": "Base do eixo `uf` — chave é o ano (string)",
"type": "object"
},
"years": {
"description": "Anos com cubos Parquet presentes localmente",
"items": {
"type": "number"
},
"type": "array"
},
"years_cid9": {
"description": "Anos em que o cubo usa CID-9 (1992–1997)",
"items": {
"type": "number"
},
"type": "array"
},
"years_uf_arquivo": {
"description": "Anos em que `uf` é a do estabelecimento (1992–1997)",
"items": {
"type": "number"
},
"type": "array"
},
"years_without_race": {
"description": "Anos sem raça/cor (1998–2007)",
"items": {
"type": "number"
},
"type": "array"
}
},
"required": [
"provenance",
"attribution"
],
"type": "object"
}
},
{
"description": "Calcula taxas de internação por população. A taxa sai em `rate`, na base declarada em `rate_per` (1000, 10000 ou 100000; default 100000). Denominador lido de dois arquivos, informados em get_available_years.population_years: projeções do IBGE por idade simples de 2000 em diante (pop_uf.parquet) e, de 1991 a 1999, população por faixa etária quinquenal somada dos municÃpios (pop_uf_agregado.parquet) — antes de 2000 o recorte por idade só vale nos limites das faixas (age_min múltiplo de 5, age_max terminado em 4 ou 9, ou 80+). A resposta diz qual arquivo serviu a cada ano (population_source) e avisa quando mistura os dois.",
"inputSchema": {
"additionalProperties": false,
"properties": {
"age_max": {
"description": "Idade máxima",
"type": "integer"
},
"age_min": {
"description": "Idade mÃnima",
"type": "integer"
},
"cid_chapter": {
"description": "CapÃtulos CID-10 (1-22)",
"items": {
"type": "integer"
},
"type": "array"
},
"group_by": {
"description": "Dimensões para agrupamento",
"items": {
"enum": [
"year",
"uf",
"sex"
],
"type": "string"
},
"type": "array"
},
"is_csap": {
"description": "Filtrar apenas CSAP",
"type": "boolean"
},
"rate_per": {
"description": "Taxa por X habitantes (default: 100000)",
"enum": [
1000,
10000,
100000
],
"type": "integer"
},
"rate_type": {
"description": "Tipo de taxa: crude (bruta) ou specific (especÃfica por filtro)",
"enum": [
"crude",
"specific"
],
"type": "string"
},
"sex": {
"description": "Filtrar por sexo",
"enum": [
"M",
"F"
],
"type": "string"
},
"uf": {
"description": "UFs para filtrar",
"items": {
"type": "string"
},
"type": "array"
},
"year": {
"description": "Anos para calcular",
"items": {
"type": "integer"
},
"type": "array"
}
},
"type": "object"
},
"name": "get_hospitalization_rates",
"outputSchema": {
"additionalProperties": false,
"anyOf": [
{
"required": [
"data",
"summary",
"metadata"
]
},
{
"required": [
"error"
]
}
],
"description": "Taxa de internação por população (IBGE por UF), bruta ou especÃfica; `error` quando o ano está fora da cobertura populacional ou nenhum ano pedido tem dado",
"properties": {
"attribution": {
"description": "URLs canônicas das fontes desta resposta (lista de atribuição)",
"items": {
"type": "string"
},
"type": "array"
},
"available_sih_years": {
"description": "Anos com dados SIH atendÃveis por este servidor",
"items": {
"type": "number"
},
"type": "array"
},
"data": {
"description": "Um estrato por linha (vazio quando não há internação no recorte)",
"items": {
"additionalProperties": false,
"properties": {
"deaths": {
"description": "Óbitos",
"type": "number"
},
"mortality_rate": {
"description": "Óbitos / internações × 100, duas casas",
"type": "number"
},
"n_hospitalizations": {
"description": "Internações",
"type": "number"
},
"population": {
"description": "População do estrato (denominador)",
"type": "number"
},
"population_source": {
"description": "Arquivo de população que serviu o ano",
"enum": [
"detailed",
"aggregated",
null
]
},
"rate": {
"description": "Internações por `rate_per` habitantes, duas casas",
"type": "number"
},
"rate_per": {
"description": "Base da taxa (1000, 10000 ou 100000)",
"type": "number"
},
"rate_per_100k": {
"deprecated": true,
"description": "DEPRECADO — use `rate` com `rate_per`. Internações por 100 mil habitantes, qualquer que seja `rate_per`; sai numa versão futura",
"type": "number"
},
"uf": {
"description": "UF (quando agrupado por UF ou mais de uma UF)",
"type": "string"
},
"year": {
"description": "Ano (quando agrupado por ano ou mais de um ano)",
"type": "number"
}
},
"required": [
"n_hospitalizations",
"deaths",
"population",
"rate",
"rate_per",
"rate_per_100k",
"population_source",
"mortality_rate"
],
"type": "object"
},
"type": "array"
},
"error": {
"description": "Motivo pelo qual não há dados nesta resposta (ano sem dado, cobertura populacional, falha na consulta)",
"type": "string"
},
"metadata": {
"additionalProperties": false,
"properties": {
"available_sih_years": {
"description": "Anos com dados SIH atendÃveis por este servidor",
"items": {
"type": "number"
},
"type": "array"
},
"filters_applied": {
"additionalProperties": false,
"description": "Os argumentos, com UFs normalizadas e só os anos atendidos",
"properties": {
"age_max": {
"description": "Idade máxima",
"type": "integer"
},
"age_min": {
"description": "Idade mÃnima",
"type": "integer"
},
"cid_chapter": {
"description": "CapÃtulos CID-10 (1-22)",
"items": {
"type": "integer"
},
"type": "array"
},
"group_by": {
"description": "Dimensões para agrupamento",
"items": {
"enum": [
"year",
"uf",
"sex"
],
"type": "string"
},
"type": "array"
},
"is_csap": {
"description": "Filtrar apenas CSAP",
"type": "boolean"
},
"rate_per": {
"description": "Taxa por X habitantes (default: 100000)",
"enum": [
1000,
10000,
100000
],
"type": "integer"
},
"rate_type": {
"description": "Tipo de taxa: crude (bruta) ou specific (especÃfica por filtro)",
"enum": [
"crude",
"specific"
],
"type": "string"
},
"sex": {
"description": "Filtrar por sexo",
"enum": [
"M",
"F"
],
"type": "string"
},
"uf": {
"description": "UFs para filtrar",
"items": {
"type": "string"
},
"type": "array"
},
"year": {
"description": "Anos para calcular",
"items": {
"type": "integer"
},
"type": "array"
}
},
"type": "object"
},
"note": {
"description": "Presente quando nenhuma internação casou o recorte",
"type": "string"
},
"population_notes": {
"description": "Avisos sobre o denominador (faixa quinquenal antes de 2000; mistura de fontes)",
"items": {
"type": "string"
},
"type": "array"
},
"population_source": {
"additionalProperties": {
"description": "Arquivo que serviu o ano",
"enum": [
"detailed",
"aggregated",
null
]
},
"description": "Fonte da população — chave é o ano (string)",
"type": "object"
}
},
"required": [
"population_source",
"filters_applied"
],
"type": "object"
},
"note": {
"description": "Como obter o dado (por exemplo, consultar get_available_years)",
"type": "string"
},
"notes": {
"description": "Avisos que qualificam os números: era CID-9, raça/cor ausente, universo do % ICSAP, denominador populacional, truncamento",
"items": {
"type": "string"
},
"type": "array"
},
"population_years": {
"additionalProperties": false,
"description": "Cobertura dos arquivos de população por UF: o que as ferramentas de taxa aceitam",
"properties": {
"aggregated": {
"additionalProperties": false,
"description": "pop_uf_agregado.parquet — faixa etária quinquenal por UF e sexo (1991–1999)",
"properties": {
"age": {
"description": "Grão etário do arquivo",
"type": "string"
},
"age_groups": {
"description": "Faixas etárias quinquenais (só no arquivo agregado)",
"items": {
"type": "string"
},
"type": "array"
},
"first_year": {
"description": "Primeiro ano coberto",
"type": "number"
},
"last_year": {
"description": "Último ano coberto",
"type": "number"
},
"source": {
"description": "Arquivo parquet que serve o intervalo",
"type": "string"
}
},
"required": [
"first_year",
"last_year",
"source",
"age"
],
"type": [
"object",
"null"
]
},
"detailed": {
"additionalProperties": false,
"description": "pop_uf.parquet — idade simples por UF e sexo (projeções IBGE, 2000+)",
"properties": {
"age": {
"description": "Grão etário do arquivo",
"type": "string"
},
"age_groups": {
"description": "Faixas etárias quinquenais (só no arquivo agregado)",
"items": {
"type": "string"
},
"type": "array"
},
"first_year": {
"description": "Primeiro ano coberto",
"type": "number"
},
"last_year": {
"description": "Último ano coberto",
"type": "number"
},
"source": {
"description": "Arquivo parquet que serve o intervalo",
"type": "string"
}
},
"required": [
"first_year",
"last_year",
"source",
"age"
],
"type": [
"object",
"null"
]
},
"first_year": {
"description": "Primeiro ano com população por UF (união dos dois arquivos)",
"type": "number"
},
"last_year": {
"description": "Último ano com população por UF",
"type": "number"
}
},
"required": [
"first_year",
"last_year",
"detailed",
"aggregated"
],
"type": "object"
},
"provenance": {
"description": "Um bloco por procedência que contribuiu com esta resposta (SIH, lista CSAP, csapAIH, população…); licenças nunca se fundem",
"items": {
"additionalProperties": false,
"description": "Bloco de proveniência (contrato v1.1): fonte, URL, competência, extração, diagnóstico de origem, citação e licença",
"properties": {
"citation": {
"description": "Citação pronta para uso",
"type": "string"
},
"data_vintage": {
"description": "Competência ou safra do dado segundo a fonte; null quando a fonte não expõe",
"type": [
"string",
"null"
]
},
"license": {
"description": "Regime legal do dado (id SPDX quando há)",
"type": [
"string",
"null"
]
},
"retrieval": {
"description": "Diagnóstico de origem desta chamada (contrato v1.1): idas ao canal sih/cubos/ do healthbr-data (manifesto e arquivos que faltavam no disco), tentativas somadas e anomalias contornadas; unstable=true quando houve anomalia. null = a resposta veio do DISCO (cache aquecido) ou o bloco não é do canal (listas de referência)",
"oneOf": [
{
"additionalProperties": false,
"description": "Diagnóstico de origem da chamada: como o dado foi obtido. Medição real do servidor; unstable=true pede ao agente que trate o dado como obtido com dificuldade",
"properties": {
"anomalies": {
"description": "Anomalias superadas até o sucesso, somadas por classe, em ordem fixa; [] se nenhuma",
"items": {
"additionalProperties": false,
"properties": {
"count": {
"description": "Ocorrências desta classe na chamada",
"minimum": 1,
"type": "integer"
},
"kind": {
"description": "Classe da anomalia (vocabulário fechado do contrato)",
"enum": [
"timeout",
"network",
"http_4xx",
"http_5xx",
"rate_limited",
"malformed_body"
],
"type": "string"
}
},
"required": [
"kind",
"count"
],
"type": "object"
},
"type": "array"
},
"attempts": {
"description": "Tentativas somadas, incluindo as repetidas (>= requests)",
"minimum": 1,
"type": "integer"
},
"requests": {
"description": "Idas distintas à origem que compõem esta resposta (fatias, páginas)",
"minimum": 1,
"type": "integer"
},
"unstable": {
"description": "true se houve repetição (attempts > requests) ou alguma anomalia",
"type": "boolean"
}
},
"required": [
"requests",
"attempts",
"anomalies",
"unstable"
],
"type": "object"
},
{
"type": "null"
}
]
},
"retrieved_at": {
"description": "Instante REAL da extração na origem (ISO-8601) — para os cubos SIH, a safra do sidecar (extração no FTP do DATASUS), nunca o instante do download",
"type": "string"
},
"source": {
"description": "Fonte oficial do dado",
"type": "string"
},
"source_url": {
"description": "URL canônica que reproduz a consulta ou localiza a fonte",
"type": "string"
}
},
"required": [
"source",
"source_url",
"data_vintage",
"retrieved_at",
"retrieval",
"citation",
"license"
],
"type": "object"
},
"type": "array"
},
"published_years": {
"description": "Anos que o canal de cubos publica — a verdade do canal, distinta do que esta instância tem em disco; só com o cache de cubos ligado",
"items": {
"type": "number"
},
"type": "array"
},
"summary": {
"additionalProperties": false,
"properties": {
"overall_rate": {
"description": "Taxa do conjunto, na base `rate_per`",
"type": "number"
},
"rate_per": {
"description": "Base da taxa",
"type": "number"
},
"rate_type": {
"description": "Bruta ou especÃfica",
"enum": [
"crude",
"specific"
]
},
"total_hospitalizations": {
"description": "Internações somadas",
"type": "number"
},
"total_population": {
"description": "População somada",
"type": "number"
}
},
"required": [
"total_hospitalizations",
"total_population",
"overall_rate",
"rate_per",
"rate_type"
],
"type": "object"
},
"truncated": {
"additionalProperties": false,
"description": "Presente só quando `data` foi truncado no teto de linhas; os totais em `summary` são do conjunto inteiro",
"properties": {
"returned": {
"description": "Linhas devolvidas (o teto)",
"type": "number"
},
"total": {
"description": "Linhas que a consulta produziu",
"type": "number"
}
},
"required": [
"returned",
"total"
],
"type": "object"
},
"years_not_available": {
"additionalProperties": false,
"description": "Presente só quando parte dos anos pedidos não tem dado: os números cobrem apenas os anos atendidos",
"properties": {
"note": {
"description": "Quais anos ficaram fora e quais os números cobrem",
"type": "string"
},
"years": {
"description": "Anos pedidos que não têm dados SIH e ficaram fora do resultado",
"items": {
"type": "number"
},
"type": "array"
}
},
"required": [
"years",
"note"
],
"type": "object"
}
},
"required": [
"provenance",
"attribution"
],
"type": "object"
}
},
{
"description": "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`.",
"inputSchema": {
"additionalProperties": false,
"properties": {
"cid_chapter": {
"description": "CapÃtulo CID-10 especÃfico",
"type": "integer"
},
"granularity": {
"description": "Granularidade temporal (default: yearly)",
"enum": [
"monthly",
"yearly"
],
"type": "string"
},
"uf": {
"description": "UFs para filtrar",
"items": {
"type": "string"
},
"type": "array"
},
"year_end": {
"description": "Ano final",
"type": "integer"
},
"year_start": {
"description": "Ano inicial",
"type": "integer"
}
},
"required": [
"year_start",
"year_end"
],
"type": "object"
},
"name": "get_hospitalization_trends",
"outputSchema": {
"additionalProperties": false,
"anyOf": [
{
"required": [
"granularity",
"period",
"series"
]
},
{
"required": [
"error"
]
}
],
"description": "Série temporal de internações, anual (`year`) ou mensal (`year_month`); `error` quando nenhum ano do intervalo tem dado",
"properties": {
"attribution": {
"description": "URLs canônicas das fontes desta resposta (lista de atribuição)",
"items": {
"type": "string"
},
"type": "array"
},
"available_sih_years": {
"description": "Anos com dados SIH atendÃveis por este servidor",
"items": {
"type": "number"
},
"type": "array"
},
"data": {
"description": "Sempre vazio: só aparece no caminho de erro-mole do funil",
"items": {},
"type": "array"
},
"error": {
"description": "Motivo pelo qual não há dados nesta resposta (ano sem dado, cobertura populacional, falha na consulta)",
"type": "string"
},
"granularity": {
"description": "Grão da série",
"enum": [
"yearly",
"monthly"
]
},
"note": {
"description": "Como obter o dado (por exemplo, consultar get_available_years)",
"type": "string"
},
"notes": {
"description": "Avisos que qualificam os números: era CID-9, raça/cor ausente, universo do % ICSAP, denominador populacional, truncamento",
"items": {
"type": "string"
},
"type": "array"
},
"period": {
"additionalProperties": false,
"description": "Intervalo pedido",
"properties": {
"end": {
"description": "Ano (anual) ou AAAA-MM (mensal) final",
"type": [
"number",
"string"
]
},
"start": {
"description": "Ano (anual) ou AAAA-MM (mensal) inicial",
"type": [
"number",
"string"
]
}
},
"required": [
"start",
"end"
],
"type": "object"
},
"provenance": {
"additionalProperties": false,
"description": "Bloco de proveniência (contrato v1.1): fonte, URL, competência, extração, diagnóstico de origem, citação e licença",
"properties": {
"citation": {
"description": "Citação pronta para uso",
"type": "string"
},
"data_vintage": {
"description": "Competência ou safra do dado segundo a fonte; null quando a fonte não expõe",
"type": [
"string",
"null"
]
},
"license": {
"description": "Regime legal do dado (id SPDX quando há)",
"type": [
"string",
"null"
]
},
"retrieval": {
"description": "Diagnóstico de origem desta chamada (contrato v1.1): idas ao canal sih/cubos/ do healthbr-data (manifesto e arquivos que faltavam no disco), tentativas somadas e anomalias contornadas; unstable=true quando houve anomalia. null = a resposta veio do DISCO (cache aquecido) ou o bloco não é do canal (listas de referência)",
"oneOf": [
{
"additionalProperties": false,
"description": "Diagnóstico de origem da chamada: como o dado foi obtido. Medição real do servidor; unstable=true pede ao agente que trate o dado como obtido com dificuldade",
"properties": {
"anomalies": {
"description": "Anomalias superadas até o sucesso, somadas por classe, em ordem fixa; [] se nenhuma",
"items": {
"additionalProperties": false,
"properties": {
"count": {
"description": "Ocorrências desta classe na chamada",
"minimum": 1,
"type": "integer"
},
"kind": {
"description": "Classe da anomalia (vocabulário fechado do contrato)",
"enum": [
"timeout",
"network",
"http_4xx",
"http_5xx",
"rate_limited",
"malformed_body"
],
"type": "string"
}
},
"required": [
"kind",
"count"
],
"type": "object"
},
"type": "array"
},
"attempts": {
"description": "Tentativas somadas, incluindo as repetidas (>= requests)",
"minimum": 1,
"type": "integer"
},
"requests": {
"description": "Idas distintas à origem que compõem esta resposta (fatias, páginas)",
"minimum": 1,
"type": "integer"
},
"unstable": {
"description": "true se houve repetição (attempts > requests) ou alguma anomalia",
"type": "boolean"
}
},
"required": [
"requests",
"attempts",
"anomalies",
"unstable"
],
"type": "object"
},
{
"type": "null"
}
]
},
"retrieved_at": {
"description": "Instante REAL da extração na origem (ISO-8601) — para os cubos SIH, a safra do sidecar (extração no FTP do DATASUS), nunca o instante do download",
"type": "string"
},
"source": {
"description": "Fonte oficial do dado",
"type": "string"
},
"source_url": {
"description": "URL canônica que reproduz a consulta ou localiza a fonte",
"type": "string"
}
},
"required": [
"source",
"source_url",
"data_vintage",
"retrieved_at",
"retrieval",
"citation",
"license"
],
"type": "object"
},
"published_years": {
"description": "Anos que o canal de cubos publica — a verdade do canal, distinta do que esta instância tem em disco; só com o cache de cubos ligado",
"items": {
"type": "number"
},
"type": "array"
},
"series": {
"description": "Um ponto por ano ou por mês, em ordem cronológica",
"items": {
"anyOf": [
{
"additionalProperties": false,
"description": "Ponto anual",
"properties": {
"deaths": {
"description": "Óbitos no ano",
"type": "number"
},
"n_hospitalizations": {
"description": "Internações no ano",
"type": "number"
},
"year": {
"description": "Ano",
"type": "number"
}
},
"required": [
"year",
"n_hospitalizations",
"deaths"
],
"type": "object"
},
{
"additionalProperties": false,
"description": "Ponto mensal",
"properties": {
"deaths": {
"description": "Óbitos no mês",
"type": "number"
},
"n": {
"description": "Internações no mês",
"type": "number"
},
"year_month": {
"description": "Competência AAAA-MM",
"type": "string"
}
},
"required": [
"year_month",
"n",
"deaths"
],
"type": "object"
}
]
},
"type": "array"
},
"years_not_available": {
"additionalProperties": false,
"description": "Presente só quando parte dos anos pedidos não tem dado: os números cobrem apenas os anos atendidos",
"properties": {
"note": {
"description": "Quais anos ficaram fora e quais os números cobrem",
"type": "string"
},
"years": {
"description": "Anos pedidos que não têm dados SIH e ficaram fora do resultado",
"items": {
"type": "number"
},
"type": "array"
}
},
"required": [
"years",
"note"
],
"type": "object"
}
},
"required": [
"provenance",
"attribution"
],
"type": "object"
}
},
{
"description": "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).",
"inputSchema": {
"additionalProperties": false,
"properties": {
"age_max": {
"description": "Idade máxima em anos",
"type": "integer"
},
"age_min": {
"description": "Idade mÃnima em anos",
"type": "integer"
},
"cid_chapter": {
"description": "CapÃtulos CID-10 (1-22). Se omitido, todos.",
"items": {
"type": "integer"
},
"type": "array"
},
"group_by": {
"description": "Dimensões para agrupamento",
"items": {
"enum": [
"year",
"month",
"uf",
"cid_chapter",
"cid_revision",
"cid_group",
"sex",
"age",
"race",
"exclusion",
"is_csap",
"csap_group"
],
"type": "string"
},
"type": "array"
},
"is_csap": {
"description": "Filtrar apenas CSAP (true) ou não-CSAP (false)",
"type": "boolean"
},
"limit": {
"description": "Limitar número de resultados",
"type": "integer"
},
"month": {
"description": "Meses (1-12). Se omitido, todos.",
"items": {
"type": "integer"
},
"type": "array"
},
"race": {
"description": "Raça/cor (branca, preta, parda, amarela, indigena, ignorado). Só existe de 2008 em diante: em 1998–2007 race é nulo e o filtro não alcança esses anos.",
"items": {
"type": "string"
},
"type": "array"
},
"sex": {
"description": "Filtrar por sexo",
"enum": [
"M",
"F"
],
"type": "string"
},
"uf": {
"description": "Lista de UFs (ex: ['SP', 'RJ']). Se omitido, todas.",
"items": {
"type": "string"
},
"type": "array"
},
"year": {
"description": "Anos para consultar (ex: [2023, 2024]); série de 1992 em diante",
"items": {
"type": "integer"
},
"type": "array"
}
},
"type": "object"
},
"name": "get_hospitalizations",
"outputSchema": {
"additionalProperties": false,
"anyOf": [
{
"required": [
"data",
"summary",
"filters_applied"
]
},
{
"required": [
"error"
]
}
],
"description": "Internações do cubo de causas, agrupadas conforme `group_by`, com totais do recorte inteiro; `error` quando nenhum ano pedido tem dado",
"properties": {
"attribution": {
"description": "URLs canônicas das fontes desta resposta (lista de atribuição)",
"items": {
"type": "string"
},
"type": "array"
},
"available_sih_years": {
"description": "Anos com dados SIH atendÃveis por este servidor",
"items": {
"type": "number"
},
"type": "array"
},
"data": {
"description": "Linhas agrupadas (vazio no caminho de erro-mole)",
"items": {
"additionalProperties": false,
"description": "Uma linha por combinação de `group_by` (só as colunas pedidas aparecem)",
"properties": {
"age": {
"description": "Idade em anos (group_by: age)",
"type": "number"
},
"cid_chapter": {
"description": "CapÃtulo da CID, 1–22 (group_by: cid_chapter)",
"type": "number"
},
"cid_group": {
"description": "Categoria CID de 3 dÃgitos (group_by: cid_group)",
"type": "string"
},
"cid_revision": {
"description": "Revisão da CID do diagnóstico: 9 ou 10 (group_by: cid_revision)",
"type": "number"
},
"csap_group": {
"description": "Grupo CSAP g01–g19; null quando a internação não é sensÃvel (group_by: csap_group)",
"type": [
"string",
"null"
]
},
"deaths": {
"description": "Óbitos; null quando o recorte não tem nenhuma linha",
"type": [
"number",
"null"
]
},
"exclusion": {
"description": "Motivo de exclusão do universo csapAIH; null quando dentro do universo (group_by: exclusion)",
"type": [
"string",
"null"
]
},
"is_csap": {
"description": "Internação por condição sensÃvel à atenção primária (group_by: is_csap)",
"type": "boolean"
},
"month": {
"description": "Mês, 1–12 (group_by: month)",
"type": "number"
},
"n_hospitalizations": {
"description": "Internações; null quando o recorte não tem nenhuma linha",
"type": [
"number",
"null"
]
},
"race": {
"description": "Raça/cor; null em 1998–2007, quando a AIH não trazia o campo (group_by: race)",
"type": [
"string",
"null"
]
},
"sex": {
"description": "Sexo: M ou F (group_by: sex)",
"type": "string"
},
"total_days": {
"description": "Dias de permanência; null quando o recorte não tem nenhuma linha",
"type": [
"number",
"null"
]
},
"total_value": {
"description": "Valor total pago (R$); null quando o recorte não tem nenhuma linha",
"type": [
"number",
"null"
]
},
"uf": {
"description": "UF de residência — do estabelecimento em 1992–1997 (group_by: uf)",
"type": "string"
},
"year": {
"description": "Ano (group_by: year)",
"type": "number"
}
},
"required": [
"n_hospitalizations",
"total_days",
"total_value",
"deaths"
],
"type": "object"
},
"type": "array"
},
"error": {
"description": "Motivo pelo qual não há dados nesta resposta (ano sem dado, cobertura populacional, falha na consulta)",
"type": "string"
},
"filters_applied": {
"additionalProperties": false,
"description": "Os argumentos recebidos, ecoados",
"properties": {
"age_max": {
"description": "Idade máxima em anos",
"type": "integer"
},
"age_min": {
"description": "Idade mÃnima em anos",
"type": "integer"
},
"cid_chapter": {
"description": "CapÃtulos CID-10 (1-22). Se omitido, todos.",
"items": {
"type": "integer"
},
"type": "array"
},
"group_by": {
"description": "Dimensões para agrupamento",
"items": {
"enum": [
"year",
"month",
"uf",
"cid_chapter",
"cid_revision",
"cid_group",
"sex",
"age",
"race",
"exclusion",
"is_csap",
"csap_group"
],
"type": "string"
},
"type": "array"
},
"is_csap": {
"description": "Filtrar apenas CSAP (true) ou não-CSAP (false)",
"type": "boolean"
},
"limit": {
"description": "Limitar número de resultados",
"type": "integer"
},
"month": {
"description": "Meses (1-12). Se omitido, todos.",
"items": {
"type": "integer"
},
"type": "array"
},
"race": {
"description": "Raça/cor (branca, preta, parda, amarela, indigena, ignorado). Só existe de 2008 em diante: em 1998–2007 race é nulo e o filtro não alcança esses anos.",
"items": {
"type": "string"
},
"type": "array"
},
"sex": {
"description": "Filtrar por sexo",
"enum": [
"M",
"F"
],
"type": "string"
},
"uf": {
"description": "Lista de UFs (ex: ['SP', 'RJ']). Se omitido, todas.",
"items": {
"type": "string"
},
"type": "array"
},
"year": {
"description": "Anos para consultar (ex: [2023, 2024]); série de 1992 em diante",
"items": {
"type": "integer"
},
"type": "array"
}
},
"type": "object"
},
"note": {
"description": "Como obter o dado (por exemplo, consultar get_available_years)",
"type": "string"
},
"notes": {
"description": "Avisos que qualificam os números: era CID-9, raça/cor ausente, universo do % ICSAP, denominador populacional, truncamento",
"items": {
"type": "string"
},
"type": "array"
},
"provenance": {
"additionalProperties": false,
"description": "Bloco de proveniência (contrato v1.1): fonte, URL, competência, extração, diagnóstico de origem, citação e licença",
"properties": {
"citation": {
"description": "Citação pronta para uso",
"type": "string"
},
"data_vintage": {
"description": "Competência ou safra do dado segundo a fonte; null quando a fonte não expõe",
"type": [
"string",
"null"
]
},
"license": {
"description": "Regime legal do dado (id SPDX quando há)",
"type": [
"string",
"null"
]
},
"retrieval": {
"description": "Diagnóstico de origem desta chamada (contrato v1.1): idas ao canal sih/cubos/ do healthbr-data (manifesto e arquivos que faltavam no disco), tentativas somadas e anomalias contornadas; unstable=true quando houve anomalia. null = a resposta veio do DISCO (cache aquecido) ou o bloco não é do canal (listas de referência)",
"oneOf": [
{
"additionalProperties": false,
"description": "Diagnóstico de origem da chamada: como o dado foi obtido. Medição real do servidor; unstable=true pede ao agente que trate o dado como obtido com dificuldade",
"properties": {
"anomalies": {
"description": "Anomalias superadas até o sucesso, somadas por classe, em ordem fixa; [] se nenhuma",
"items": {
"additionalProperties": false,
"properties": {
"count": {
"description": "Ocorrências desta classe na chamada",
"minimum": 1,
"type": "integer"
},
"kind": {
"description": "Classe da anomalia (vocabulário fechado do contrato)",
"enum": [
"timeout",
"network",
"http_4xx",
"http_5xx",
"rate_limited",
"malformed_body"
],
"type": "string"
}
},
"required": [
"kind",
"count"
],
"type": "object"
},
"type": "array"
},
"attempts": {
"description": "Tentativas somadas, incluindo as repetidas (>= requests)",
"minimum": 1,
"type": "integer"
},
"requests": {
"description": "Idas distintas à origem que compõem esta resposta (fatias, páginas)",
"minimum": 1,
"type": "integer"
},
"unstable": {
"description": "true se houve repetição (attempts > requests) ou alguma anomalia",
"type": "boolean"
}
},
"required": [
"requests",
"attempts",
"anomalies",
"unstable"
],
"type": "object"
},
{
"type": "null"
}
]
},
"retrieved_at": {
"description": "Instante REAL da extração na origem (ISO-8601) — para os cubos SIH, a safra do sidecar (extração no FTP do DATASUS), nunca o instante do download",
"type": "string"
},
"source": {
"description": "Fonte oficial do dado",
"type": "string"
},
"source_url": {
"description": "URL canônica que reproduz a consulta ou localiza a fonte",
"type": "string"
}
},
"required": [
"source",
"source_url",
"data_vintage",
"retrieved_at",
"retrieval",
"citation",
"license"
],
"type": "object"
},
"published_years": {
"description": "Anos que o canal de cubos publica — a verdade do canal, distinta do que esta instância tem em disco; só com o cache de cubos ligado",
"items": {
"type": "number"
},
"type": "array"
},
"summary": {
"additionalProperties": false,
"description": "Totais do recorte inteiro (não do trecho devolvido, quando truncado)",
"properties": {
"deaths": {
"description": "Óbitos",
"type": "number"
},
"hospital_mortality_rate": {
"description": "Óbitos / internações × 100, duas casas",
"type": "number"
},
"records_returned": {
"description": "Linhas em `data`",
"type": "number"
},
"total_days": {
"description": "Dias de permanência",
"type": "number"
},
"total_hospitalizations": {
"description": "Internações no recorte inteiro",
"type": "number"
},
"total_value": {
"description": "Valor pago (R$), duas casas",
"type": "number"
}
},
"required": [
"total_hospitalizations",
"total_days",
"total_value",
"deaths",
"hospital_mortality_rate",
"records_returned"
],
"type": "object"
},
"truncated": {
"additionalProperties": false,
"description": "Presente só quando `data` foi truncado no teto de linhas; os totais em `summary` são do conjunto inteiro",
"properties": {
"returned": {
"description": "Linhas devolvidas (o teto)",
"type": "number"
},
"total": {
"description": "Linhas que a consulta produziu",
"type": "number"
}
},
"required": [
"returned",
"total"
],
"type": "object"
},
"years_not_available": {
"additionalProperties": false,
"description": "Presente só quando parte dos anos pedidos não tem dado: os números cobrem apenas os anos atendidos",
"properties": {
"note": {
"description": "Quais anos ficaram fora e quais os números cobrem",
"type": "string"
},
"years": {
"description": "Anos pedidos que não têm dados SIH e ficaram fora do resultado",
"items": {
"type": "number"
},
"type": "array"
}
},
"required": [
"years",
"note"
],
"type": "object"
}
},
"required": [
"provenance",
"attribution"
],
"type": "object"
}
},
{
"description": "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 `municipality_code` é nulo — ver get_available_years (icsap_list_revision, uf_basis) e as `notes`. Percentual no universo do pacote R csapAIH por padrão (`universe`): fora do numerador e do denominador as internações por procedimento obstétrico, parto e longa permanência.",
"inputSchema": {
"additionalProperties": false,
"properties": {
"age_max": {
"description": "Idade máxima",
"type": "integer"
},
"age_min": {
"description": "Idade mÃnima",
"type": "integer"
},
"csap_group": {
"description": "Grupos CSAP (ex: ['g01', 'g05'])",
"items": {
"type": "string"
},
"type": "array"
},
"group_by": {
"description": "Dimensões para agrupamento",
"items": {
"enum": [
"year",
"uf",
"municipality_code",
"cid_revision",
"csap_group",
"sex",
"age",
"race"
],
"type": "string"
},
"type": "array"
},
"municipality_code": {
"description": "Código IBGE do municÃpio (6 dÃgitos)",
"type": "string"
},
"race": {
"description": "Raça/cor (branca, preta, parda, amarela, indigena, ignorado). Só existe de 2008 em diante: em 1998–2007 race é nulo e o filtro não alcança esses anos.",
"items": {
"type": "string"
},
"type": "array"
},
"sex": {
"description": "Filtrar por sexo",
"enum": [
"M",
"F"
],
"type": "string"
},
"uf": {
"description": "UFs para filtrar",
"items": {
"type": "string"
},
"type": "array"
},
"universe": {
"description": "Universo do % ICSAP: 'csapaih' (padrão) tira do numerador e do denominador as internações por procedimento obstétrico, com diagnóstico de parto (O80-O84) e as AIH de longa permanência, como o pacote R csapAIH (Nedel); 'all' conta todas as internações.",
"enum": [
"csapaih",
"all"
],
"type": "string"
},
"year": {
"description": "Anos para consultar",
"items": {
"type": "integer"
},
"type": "array"
}
},
"type": "object"
},
"name": "get_icsap",
"outputSchema": {
"additionalProperties": false,
"anyOf": [
{
"required": [
"data",
"notes",
"summary",
"filters_applied"
]
},
{
"required": [
"error"
]
}
],
"description": "Internações por condições sensÃveis à atenção primária, agrupadas conforme `group_by`, com totais e a nota do universo; `error` quando nenhum ano pedido tem dado",
"properties": {
"attribution": {
"description": "URLs canônicas das fontes desta resposta (lista de atribuição)",
"items": {
"type": "string"
},
"type": "array"
},
"available_sih_years": {
"description": "Anos com dados SIH atendÃveis por este servidor",
"items": {
"type": "number"
},
"type": "array"
},
"data": {
"description": "Linhas agrupadas (vazio no caminho de erro-mole)",
"items": {
"additionalProperties": false,
"description": "Uma linha por combinação de `group_by` (só as colunas pedidas aparecem)",
"properties": {
"age": {
"description": "Idade em anos (group_by: age)",
"type": "number"
},
"cid_revision": {
"description": "Revisão da CID: 9 ou 10 (group_by: cid_revision)",
"type": "number"
},
"csap_group": {
"description": "Grupo CSAP g01–g19 (group_by: csap_group)",
"type": [
"string",
"null"
]
},
"deaths": {
"description": "Óbitos nas ICSAP",
"type": "number"
},
"icsap_percentage": {
"description": "n_icsap / n_total × 100, duas casas",
"type": "number"
},
"municipality_code": {
"description": "Código IBGE do municÃpio de residência (6 dÃgitos); null em 1992–1997 (group_by: municipality_code)",
"type": [
"string",
"null"
]
},
"n_icsap": {
"description": "Internações por condições sensÃveis à atenção primária no universo escolhido",
"type": "number"
},
"n_total": {
"description": "Total de internações no universo escolhido (denominador)",
"type": "number"
},
"race": {
"description": "Raça/cor; null em 1998–2007 (group_by: race)",
"type": [
"string",
"null"
]
},
"sex": {
"description": "Sexo: M ou F (group_by: sex)",
"type": "string"
},
"total_days": {
"description": "Dias de permanência das ICSAP",
"type": "number"
},
"total_value": {
"description": "Valor pago das ICSAP (R$)",
"type": "number"
},
"uf": {
"description": "UF de residência — do estabelecimento em 1992–1997 (group_by: uf)",
"type": "string"
},
"year": {
"description": "Ano (group_by: year)",
"type": "number"
}
},
"required": [
"n_icsap",
"n_total",
"icsap_percentage",
"total_days",
"total_value",
"deaths"
],
"type": "object"
},
"type": "array"
},
"error": {
"description": "Motivo pelo qual não há dados nesta resposta (ano sem dado, cobertura populacional, falha na consulta)",
"type": "string"
},
"filters_applied": {
"additionalProperties": false,
"description": "Os argumentos recebidos, ecoados",
"properties": {
"age_max": {
"description": "Idade máxima",
"type": "integer"
},
"age_min": {
"description": "Idade mÃnima",
"type": "integer"
},
"csap_group": {
"description": "Grupos CSAP (ex: ['g01', 'g05'])",
"items": {
"type": "string"
},
"type": "array"
},
"group_by": {
"description": "Dimensões para agrupamento",
"items": {
"enum": [
"year",
"uf",
"municipality_code",
"cid_revision",
"csap_group",
"sex",
"age",
"race"
],
"type": "string"
},
"type": "array"
},
"municipality_code": {
"description": "Código IBGE do municÃpio (6 dÃgitos)",
"type": "string"
},
"race": {
"description": "Raça/cor (branca, preta, parda, amarela, indigena, ignorado). Só existe de 2008 em diante: em 1998–2007 race é nulo e o filtro não alcança esses anos.",
"items": {
"type": "string"
},
"type": "array"
},
"sex": {
"description": "Filtrar por sexo",
"enum": [
"M",
"F"
],
"type": "string"
},
"uf": {
"description": "UFs para filtrar",
"items": {
"type": "string"
},
"type": "array"
},
"universe": {
"description": "Universo do % ICSAP: 'csapaih' (padrão) tira do numerador e do denominador as internações por procedimento obstétrico, com diagnóstico de parto (O80-O84) e as AIH de longa permanência, como o pacote R csapAIH (Nedel); 'all' conta todas as internações.",
"enum": [
"csapaih",
"all"
],
"type": "string"
},
"year": {
"description": "Anos para consultar",
"items": {
"type": "integer"
},
"type": "array"
}
},
"type": "object"
},
"note": {
"description": "Como obter o dado (por exemplo, consultar get_available_years)",
"type": "string"
},
"notes": {
"description": "Avisos que qualificam os números: era CID-9, raça/cor ausente, universo do % ICSAP, denominador populacional, truncamento",
"items": {
"type": "string"
},
"type": "array"
},
"provenance": {
"description": "Um bloco por procedência que contribuiu com esta resposta (SIH, lista CSAP, csapAIH, população…); licenças nunca se fundem",
"items": {
"additionalProperties": false,
"description": "Bloco de proveniência (contrato v1.1): fonte, URL, competência, extração, diagnóstico de origem, citação e licença",
"properties": {
"citation": {
"description": "Citação pronta para uso",
"type": "string"
},
"data_vintage": {
"description": "Competência ou safra do dado segundo a fonte; null quando a fonte não expõe",
"type": [
"string",
"null"
]
},
"license": {
"description": "Regime legal do dado (id SPDX quando há)",
"type": [
"string",
"null"
]
},
"retrieval": {
"description": "Diagnóstico de origem desta chamada (contrato v1.1): idas ao canal sih/cubos/ do healthbr-data (manifesto e arquivos que faltavam no disco), tentativas somadas e anomalias contornadas; unstable=true quando houve anomalia. null = a resposta veio do DISCO (cache aquecido) ou o bloco não é do canal (listas de referência)",
"oneOf": [
{
"additionalProperties": false,
"description": "Diagnóstico de origem da chamada: como o dado foi obtido. Medição real do servidor; unstable=true pede ao agente que trate o dado como obtido com dificuldade",
"properties": {
"anomalies": {
"description": "Anomalias superadas até o sucesso, somadas por classe, em ordem fixa; [] se nenhuma",
"items": {
"additionalProperties": false,
"properties": {
"count": {
"description": "Ocorrências desta classe na chamada",
"minimum": 1,
"type": "integer"
},
"kind": {
"description": "Classe da anomalia (vocabulário fechado do contrato)",
"enum": [
"timeout",
"network",
"http_4xx",
"http_5xx",
"rate_limited",
"malformed_body"
],
"type": "string"
}
},
"required": [
"kind",
"count"
],
"type": "object"
},
"type": "array"
},
"attempts": {
"description": "Tentativas somadas, incluindo as repetidas (>= requests)",
"minimum": 1,
"type": "integer"
},
"requests": {
"description": "Idas distintas à origem que compõem esta resposta (fatias, páginas)",
"minimum": 1,
"type": "integer"
},
"unstable": {
"description": "true se houve repetição (attempts > requests) ou alguma anomalia",
"type": "boolean"
}
},
"required": [
"requests",
"attempts",
"anomalies",
"unstable"
],
"type": "object"
},
{
"type": "null"
}
]
},
"retrieved_at": {
"description": "Instante REAL da extração na origem (ISO-8601) — para os cubos SIH, a safra do sidecar (extração no FTP do DATASUS), nunca o instante do download",
"type": "string"
},
"source": {
"description": "Fonte oficial do dado",
"type": "string"
},
"source_url": {
"description": "URL canônica que reproduz a consulta ou localiza a fonte",
"type": "string"
}
},
"required": [
"source",
"source_url",
"data_vintage",
"retrieved_at",
"retrieval",
"citation",
"license"
],
"type": "object"
},
"type": "array"
},
"published_years": {
"description": "Anos que o canal de cubos publica — a verdade do canal, distinta do que esta instância tem em disco; só com o cache de cubos ligado",
"items": {
"type": "number"
},
"type": "array"
},
"summary": {
"additionalProperties": false,
"description": "Totais do recorte inteiro, calculados sem agrupamento",
"properties": {
"deaths": {
"description": "Óbitos nas ICSAP",
"type": "number"
},
"icsap_percentage": {
"description": "total_icsap / total_hospitalizations × 100, duas casas",
"type": "number"
},
"records_returned": {
"description": "Linhas em `data`",
"type": "number"
},
"total_days": {
"description": "Dias de permanência das ICSAP",
"type": "number"
},
"total_hospitalizations": {
"description": "Internações no universo (denominador)",
"type": "number"
},
"total_icsap": {
"description": "ICSAP no recorte inteiro",
"type": "number"
},
"total_value": {
"description": "Valor pago das ICSAP (R$)",
"type": "number"
}
},
"required": [
"total_icsap",
"total_hospitalizations",
"icsap_percentage",
"total_days",
"total_value",
"deaths",
"records_returned"
],
"type": "object"
},
"truncated": {
"additionalProperties": false,
"description": "Presente só quando `data` foi truncado no teto de linhas; os totais em `summary` são do conjunto inteiro",
"properties": {
"returned": {
"description": "Linhas devolvidas (o teto)",
"type": "number"
},
"total": {
"description": "Linhas que a consulta produziu",
"type": "number"
}
},
"required": [
"returned",
"total"
],
"type": "object"
},
"years_not_available": {
"additionalProperties": false,
"description": "Presente só quando parte dos anos pedidos não tem dado: os números cobrem apenas os anos atendidos",
"properties": {
"note": {
"description": "Quais anos ficaram fora e quais os números cobrem",
"type": "string"
},
"years": {
"description": "Anos pedidos que não têm dados SIH e ficaram fora do resultado",
"items": {
"type": "number"
},
"type": "array"
}
},
"required": [
"years",
"note"
],
"type": "object"
}
},
"required": [
"provenance",
"attribution"
],
"type": "object"
}
},
{
"description": "Calcula indicadores de ICSAP: percentual (ICSAP/Total×100). Métricas-chave para avaliar a Atenção Primária. Agrupar por raça só faz sentido de 2008 em diante: em 1998–2007 `race` é nulo (ver get_available_years.race_available). Em 1992–1997 a ICSAP vem de lista CID-9 DERIVADA e não oficial (g03 e g05 não comparáveis com 1998+) e `uf` é a UF do arquivo — ver as `notes`. Percentual no universo do pacote R csapAIH por padrão (`universe`): fora do numerador e do denominador as internações por procedimento obstétrico, parto e longa permanência.",
"inputSchema": {
"additionalProperties": false,
"properties": {
"age_max": {
"description": "Idade máxima",
"type": "integer"
},
"age_min": {
"description": "Idade mÃnima",
"type": "integer"
},
"group_by": {
"description": "Dimensões para agrupamento",
"items": {
"enum": [
"year",
"uf",
"cid_revision",
"sex",
"race"
],
"type": "string"
},
"type": "array"
},
"municipality_code": {
"description": "Código IBGE do municÃpio",
"type": "string"
},
"sex": {
"description": "Filtrar por sexo",
"enum": [
"M",
"F"
],
"type": "string"
},
"uf": {
"description": "UFs para calcular",
"items": {
"type": "string"
},
"type": "array"
},
"universe": {
"description": "Universo do % ICSAP: 'csapaih' (padrão) tira do numerador e do denominador as internações por procedimento obstétrico, com diagnóstico de parto (O80-O84) e as AIH de longa permanência, como o pacote R csapAIH (Nedel); 'all' conta todas as internações.",
"enum": [
"csapaih",
"all"
],
"type": "string"
},
"year": {
"description": "Anos para calcular",
"items": {
"type": "integer"
},
"type": "array"
}
},
"type": "object"
},
"name": "get_icsap_indicators",
"outputSchema": {
"additionalProperties": false,
"anyOf": [
{
"required": [
"data",
"notes",
"indicators_calculated",
"note"
]
},
{
"required": [
"error"
]
}
],
"description": "Percentual de ICSAP por estrato de `group_by`, com a fórmula e a nota do universo; `error` quando nenhum ano pedido tem dado",
"properties": {
"attribution": {
"description": "URLs canônicas das fontes desta resposta (lista de atribuição)",
"items": {
"type": "string"
},
"type": "array"
},
"available_sih_years": {
"description": "Anos com dados SIH atendÃveis por este servidor",
"items": {
"type": "number"
},
"type": "array"
},
"data": {
"description": "Um estrato por linha (vazio no caminho de erro-mole)",
"items": {
"additionalProperties": false,
"description": "Uma linha por combinação de `group_by` (só as colunas pedidas aparecem)",
"properties": {
"age": {
"description": "Idade em anos (group_by: age)",
"type": "number"
},
"cid_revision": {
"description": "Revisão da CID: 9 ou 10 (group_by: cid_revision)",
"type": "number"
},
"csap_group": {
"description": "Grupo CSAP g01–g19 (group_by: csap_group)",
"type": [
"string",
"null"
]
},
"deaths": {
"description": "Óbitos nas ICSAP",
"type": "number"
},
"icsap_percentage": {
"description": "n_icsap / n_total × 100, duas casas",
"type": "number"
},
"municipality_code": {
"description": "Código IBGE do municÃpio de residência (6 dÃgitos); null em 1992–1997 (group_by: municipality_code)",
"type": [
"string",
"null"
]
},
"n_icsap": {
"description": "Internações por condições sensÃveis à atenção primária no universo escolhido",
"type": "number"
},
"n_total": {
"description": "Total de internações no universo escolhido (denominador)",
"type": "number"
},
"race": {
"description": "Raça/cor; null em 1998–2007 (group_by: race)",
"type": [
"string",
"null"
]
},
"sex": {
"description": "Sexo: M ou F (group_by: sex)",
"type": "string"
},
"total_days": {
"description": "Dias de permanência das ICSAP",
"type": "number"
},
"total_value": {
"description": "Valor pago das ICSAP (R$)",
"type": "number"
},
"uf": {
"description": "UF de residência — do estabelecimento em 1992–1997 (group_by: uf)",
"type": "string"
},
"year": {
"description": "Ano (group_by: year)",
"type": "number"
}
},
"required": [
"n_icsap",
"n_total",
"icsap_percentage",
"total_days",
"total_value",
"deaths"
],
"type": "object"
},
"type": "array"
},
"error": {
"description": "Motivo pelo qual não há dados nesta resposta (ano sem dado, cobertura populacional, falha na consulta)",
"type": "string"
},
"indicators_calculated": {
"description": "Indicadores presentes nas linhas (icsap_percentage)",
"items": {
"type": "string"
},
"type": "array"
},
"note": {
"description": "Fórmula do indicador — ou, no caminho de erro-mole, como obter o dado",
"type": "string"
},
"notes": {
"description": "Avisos que qualificam os números: era CID-9, raça/cor ausente, universo do % ICSAP, denominador populacional, truncamento",
"items": {
"type": "string"
},
"type": "array"
},
"provenance": {
"description": "Um bloco por procedência que contribuiu com esta resposta (SIH, lista CSAP, csapAIH, população…); licenças nunca se fundem",
"items": {
"additionalProperties": false,
"description": "Bloco de proveniência (contrato v1.1): fonte, URL, competência, extração, diagnóstico de origem, citação e licença",
"properties": {
"citation": {
"description": "Citação pronta para uso",
"type": "string"
},
"data_vintage": {
"description": "Competência ou safra do dado segundo a fonte; null quando a fonte não expõe",
"type": [
"string",
"null"
]
},
"license": {
"description": "Regime legal do dado (id SPDX quando há)",
"type": [
"string",
"null"
]
},
"retrieval": {
"description": "Diagnóstico de origem desta chamada (contrato v1.1): idas ao canal sih/cubos/ do healthbr-data (manifesto e arquivos que faltavam no disco), tentativas somadas e anomalias contornadas; unstable=true quando houve anomalia. null = a resposta veio do DISCO (cache aquecido) ou o bloco não é do canal (listas de referência)",
"oneOf": [
{
"additionalProperties": false,
"description": "Diagnóstico de origem da chamada: como o dado foi obtido. Medição real do servidor; unstable=true pede ao agente que trate o dado como obtido com dificuldade",
"properties": {
"anomalies": {
"description": "Anomalias superadas até o sucesso, somadas por classe, em ordem fixa; [] se nenhuma",
"items": {
"additionalProperties": false,
"properties": {
"count": {
"description": "Ocorrências desta classe na chamada",
"minimum": 1,
"type": "integer"
},
"kind": {
"description": "Classe da anomalia (vocabulário fechado do contrato)",
"enum": [
"timeout",
"network",
"http_4xx",
"http_5xx",
"rate_limited",
"malformed_body"
],
"type": "string"
}
},
"required": [
"kind",
"count"
],
"type": "object"
},
"type": "array"
},
"attempts": {
"description": "Tentativas somadas, incluindo as repetidas (>= requests)",
"minimum": 1,
"type": "integer"
},
"requests": {
"description": "Idas distintas à origem que compõem esta resposta (fatias, páginas)",
"minimum": 1,
"type": "integer"
},
"unstable": {
"description": "true se houve repetição (attempts > requests) ou alguma anomalia",
"type": "boolean"
}
},
"required": [
"requests",
"attempts",
"anomalies",
"unstable"
],
"type": "object"
},
{
"type": "null"
}
]
},
"retrieved_at": {
"description": "Instante REAL da extração na origem (ISO-8601) — para os cubos SIH, a safra do sidecar (extração no FTP do DATASUS), nunca o instante do download",
"type": "string"
},
"source": {
"description": "Fonte oficial do dado",
"type": "string"
},
"source_url": {
"description": "URL canônica que reproduz a consulta ou localiza a fonte",
"type": "string"
}
},
"required": [
"source",
"source_url",
"data_vintage",
"retrieved_at",
"retrieval",
"citation",
"license"
],
"type": "object"
},
"type": "array"
},
"published_years": {
"description": "Anos que o canal de cubos publica — a verdade do canal, distinta do que esta instância tem em disco; só com o cache de cubos ligado",
"items": {
"type": "number"
},
"type": "array"
},
"truncated": {
"additionalProperties": false,
"description": "Presente só quando `data` foi truncado no teto de linhas; os totais em `summary` são do conjunto inteiro",
"properties": {
"returned": {
"description": "Linhas devolvidas (o teto)",
"type": "number"
},
"total": {
"description": "Linhas que a consulta produziu",
"type": "number"
}
},
"required": [
"returned",
"total"
],
"type": "object"
},
"years_not_available": {
"additionalProperties": false,
"description": "Presente só quando parte dos anos pedidos não tem dado: os números cobrem apenas os anos atendidos",
"properties": {
"note": {
"description": "Quais anos ficaram fora e quais os números cobrem",
"type": "string"
},
"years": {
"description": "Anos pedidos que não têm dados SIH e ficaram fora do resultado",
"items": {
"type": "number"
},
"type": "array"
}
},
"required": [
"years",
"note"
],
"type": "object"
}
},
"required": [
"provenance",
"attribution"
],
"type": "object"
}
},
{
"description": "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).",
"inputSchema": {
"additionalProperties": false,
"properties": {},
"type": "object"
},
"name": "list_cid_chapters",
"outputSchema": {
"additionalProperties": false,
"anyOf": [
{
"required": [
"total_chapters",
"chapters"
]
}
],
"description": "Os 22 capÃtulos da CID-10 (versão 2019), com intervalo de códigos e nomes",
"properties": {
"attribution": {
"description": "URLs canônicas das fontes desta resposta (lista de atribuição)",
"items": {
"type": "string"
},
"type": "array"
},
"chapters": {
"description": "Os capÃtulos, na ordem da CID",
"items": {
"additionalProperties": false,
"properties": {
"code": {
"description": "CapÃtulo em algarismo romano (chave usada em `cid_chapter` é o número, 1–22)",
"type": "string"
},
"name_en": {
"description": "Nome em inglês",
"type": "string"
},
"name_pt": {
"description": "Nome em português",
"type": "string"
},
"range": {
"description": "Intervalo de códigos CID-10 (ex.: A00-B99)",
"type": "string"
},
"roman": {
"description": "CapÃtulo em algarismo romano",
"type": "string"
}
},
"required": [
"code",
"roman",
"range",
"name_pt",
"name_en"
],
"type": "object"
},
"type": "array"
},
"provenance": {
"additionalProperties": false,
"description": "Bloco de proveniência (contrato v1.1): fonte, URL, competência, extração, diagnóstico de origem, citação e licença",
"properties": {
"citation": {
"description": "Citação pronta para uso",
"type": "string"
},
"data_vintage": {
"description": "Competência ou safra do dado segundo a fonte; null quando a fonte não expõe",
"type": [
"string",
"null"
]
},
"license": {
"description": "Regime legal do dado (id SPDX quando há)",
"type": [
"string",
"null"
]
},
"retrieval": {
"description": "Diagnóstico de origem desta chamada (contrato v1.1): idas ao canal sih/cubos/ do healthbr-data (manifesto e arquivos que faltavam no disco), tentativas somadas e anomalias contornadas; unstable=true quando houve anomalia. null = a resposta veio do DISCO (cache aquecido) ou o bloco não é do canal (listas de referência)",
"oneOf": [
{
"additionalProperties": false,
"description": "Diagnóstico de origem da chamada: como o dado foi obtido. Medição real do servidor; unstable=true pede ao agente que trate o dado como obtido com dificuldade",
"properties": {
"anomalies": {
"description": "Anomalias superadas até o sucesso, somadas por classe, em ordem fixa; [] se nenhuma",
"items": {
"additionalProperties": false,
"properties": {
"count": {
"description": "Ocorrências desta classe na chamada",
"minimum": 1,
"type": "integer"
},
"kind": {
"description": "Classe da anomalia (vocabulário fechado do contrato)",
"enum": [
"timeout",
"network",
"http_4xx",
"http_5xx",
"rate_limited",
"malformed_body"
],
"type": "string"
}
},
"required": [
"kind",
"count"
],
"type": "object"
},
"type": "array"
},
"attempts": {
"description": "Tentativas somadas, incluindo as repetidas (>= requests)",
"minimum": 1,
"type": "integer"
},
"requests": {
"description": "Idas distintas à origem que compõem esta resposta (fatias, páginas)",
"minimum": 1,
"type": "integer"
},
"unstable": {
"description": "true se houve repetição (attempts > requests) ou alguma anomalia",
"type": "boolean"
}
},
"required": [
"requests",
"attempts",
"anomalies",
"unstable"
],
"type": "object"
},
{
"type": "null"
}
]
},
"retrieved_at": {
"description": "Instante REAL da extração na origem (ISO-8601) — para os cubos SIH, a safra do sidecar (extração no FTP do DATASUS), nunca o instante do download",
"type": "string"
},
"source": {
"description": "Fonte oficial do dado",
"type": "string"
},
"source_url": {
"description": "URL canônica que reproduz a consulta ou localiza a fonte",
"type": "string"
}
},
"required": [
"source",
"source_url",
"data_vintage",
"retrieved_at",
"retrieval",
"citation",
"license"
],
"type": "object"
},
"total_chapters": {
"description": "Número de capÃtulos (22)",
"type": "number"
}
},
"required": [
"provenance",
"attribution"
],
"type": "object"
}
},
{
"description": "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.",
"inputSchema": {
"additionalProperties": false,
"properties": {
"group_code": {
"description": "Código do grupo especÃfico (ex: 'g01'). Se omitido, retorna todos.",
"type": "string"
},
"include_cid_codes": {
"description": "Se true, inclui lista de códigos CID-10 (default: false)",
"type": "boolean"
}
},
"type": "object"
},
"name": "list_csap_groups",
"outputSchema": {
"additionalProperties": false,
"anyOf": [
{
"required": [
"total_groups",
"source",
"groups"
]
},
{
"required": [
"group"
]
},
{
"required": [
"error"
]
}
],
"description": "Os 19 grupos CSAP (lista completa) ou um grupo só, quando `group_code` é informado; `error` quando o código não existe",
"properties": {
"attribution": {
"description": "URLs canônicas das fontes desta resposta (lista de atribuição)",
"items": {
"type": "string"
},
"type": "array"
},
"error": {
"description": "Grupo CSAP não encontrado",
"type": "string"
},
"group": {
"additionalProperties": false,
"description": "O grupo pedido por `group_code`",
"properties": {
"cid_codes": {
"description": "Todos os códigos CID-10 do grupo; só com `include_cid_codes: true`",
"items": {
"type": "string"
},
"type": "array"
},
"code": {
"description": "Código do grupo, g01–g19",
"type": "string"
},
"diagnoses": {
"description": "Diagnósticos que compõem o grupo, com seus códigos",
"items": {
"additionalProperties": false,
"properties": {
"cid10": {
"description": "Códigos CID-10 do diagnóstico",
"items": {
"type": "string"
},
"type": "array"
},
"name": {
"description": "Diagnóstico",
"type": "string"
}
},
"required": [
"name",
"cid10"
],
"type": "object"
},
"type": "array"
},
"id": {
"description": "Número do grupo na Portaria, 1–19",
"type": "number"
},
"name_en": {
"description": "Nome em inglês",
"type": "string"
},
"name_pt": {
"description": "Nome em português",
"type": "string"
}
},
"required": [
"id",
"code",
"name_pt",
"name_en",
"diagnoses"
],
"type": "object"
},
"groups": {
"description": "Os 19 grupos, na ordem da Portaria",
"items": {
"additionalProperties": false,
"properties": {
"cid_codes": {
"description": "Códigos CID-10 do grupo; só com `include_cid_codes: true`",
"items": {
"type": "string"
},
"type": "array"
},
"cid_count": {
"description": "Quantos códigos CID-10 compõem o grupo",
"type": "number"
},
"code": {
"description": "Código do grupo, g01–g19",
"type": "string"
},
"name": {
"description": "Nome do grupo em português",
"type": "string"
}
},
"required": [
"code",
"name",
"cid_count"
],
"type": "object"
},
"type": "array"
},
"provenance": {
"additionalProperties": false,
"description": "Bloco de proveniência (contrato v1.1): fonte, URL, competência, extração, diagnóstico de origem, citação e licença",
"properties": {
"citation": {
"description": "Citação pronta para uso",
"type": "string"
},
"data_vintage": {
"description": "Competência ou safra do dado segundo a fonte; null quando a fonte não expõe",
"type": [
"string",
"null"
]
},
"license": {
"description": "Regime legal do dado (id SPDX quando há)",
"type": [
"string",
"null"
]
},
"retrieval": {
"description": "Diagnóstico de origem desta chamada (contrato v1.1): idas ao canal sih/cubos/ do healthbr-data (manifesto e arquivos que faltavam no disco), tentativas somadas e anomalias contornadas; unstable=true quando houve anomalia. null = a resposta veio do DISCO (cache aquecido) ou o bloco não é do canal (listas de referência)",
"oneOf": [
{
"additionalProperties": false,
"description": "Diagnóstico de origem da chamada: como o dado foi obtido. Medição real do servidor; unstable=true pede ao agente que trate o dado como obtido com dificuldade",
"properties": {
"anomalies": {
"description": "Anomalias superadas até o sucesso, somadas por classe, em ordem fixa; [] se nenhuma",
"items": {
"additionalProperties": false,
"properties": {
"count": {
"description": "Ocorrências desta classe na chamada",
"minimum": 1,
"type": "integer"
},
"kind": {
"description": "Classe da anomalia (vocabulário fechado do contrato)",
"enum": [
"timeout",
"network",
"http_4xx",
"http_5xx",
"rate_limited",
"malformed_body"
],
"type": "string"
}
},
"required": [
"kind",
"count"
],
"type": "object"
},
"type": "array"
},
"attempts": {
"description": "Tentativas somadas, incluindo as repetidas (>= requests)",
"minimum": 1,
"type": "integer"
},
"requests": {
"description": "Idas distintas à origem que compõem esta resposta (fatias, páginas)",
"minimum": 1,
"type": "integer"
},
"unstable": {
"description": "true se houve repetição (attempts > requests) ou alguma anomalia",
"type": "boolean"
}
},
"required": [
"requests",
"attempts",
"anomalies",
"unstable"
],
"type": "object"
},
{
"type": "null"
}
]
},
"retrieved_at": {
"description": "Instante REAL da extração na origem (ISO-8601) — para os cubos SIH, a safra do sidecar (extração no FTP do DATASUS), nunca o instante do download",
"type": "string"
},
"source": {
"description": "Fonte oficial do dado",
"type": "string"
},
"source_url": {
"description": "URL canônica que reproduz a consulta ou localiza a fonte",
"type": "string"
}
},
"required": [
"source",
"source_url",
"data_vintage",
"retrieved_at",
"retrieval",
"citation",
"license"
],
"type": "object"
},
"source": {
"description": "Norma que define a lista (Portaria MS/SAS 221/2008)",
"type": "string"
},
"total_groups": {
"description": "Número de grupos na lista (19)",
"type": "number"
}
},
"required": [
"provenance",
"attribution"
],
"type": "object"
}
},
{
"description": "Gera ranking dos 19 grupos CSAP por número de internações, dias de internação ou valor. Identifica principais causas evitáveis. Em 1992–1997 a ICSAP vem de lista CID-9 DERIVADA e não oficial (g03 e g05 não comparáveis com 1998+) e `value` é nominal na moeda da época — ver as `notes`. Universo do pacote R csapAIH por padrão (`universe`): fora as internações por procedimento obstétrico, parto e longa permanência.",
"inputSchema": {
"additionalProperties": false,
"properties": {
"age_max": {
"description": "Idade máxima",
"type": "integer"
},
"age_min": {
"description": "Idade mÃnima",
"type": "integer"
},
"limit": {
"description": "Número de grupos no ranking (default: 19)",
"maximum": 19,
"minimum": 1,
"type": "integer"
},
"metric": {
"description": "Métrica para ranking (default: n)",
"enum": [
"n",
"days",
"value",
"deaths"
],
"type": "string"
},
"sex": {
"description": "Filtrar por sexo",
"enum": [
"M",
"F"
],
"type": "string"
},
"uf": {
"description": "UFs para filtrar",
"items": {
"type": "string"
},
"type": "array"
},
"universe": {
"description": "Universo do % ICSAP: 'csapaih' (padrão) tira do numerador e do denominador as internações por procedimento obstétrico, com diagnóstico de parto (O80-O84) e as AIH de longa permanência, como o pacote R csapAIH (Nedel); 'all' conta todas as internações.",
"enum": [
"csapaih",
"all"
],
"type": "string"
},
"year": {
"description": "Anos para consultar",
"items": {
"type": "integer"
},
"type": "array"
}
},
"type": "object"
},
"name": "rank_csap_groups",
"outputSchema": {
"additionalProperties": false,
"anyOf": [
{
"required": [
"metric",
"ranking",
"notes",
"concentration",
"total_groups"
]
},
{
"required": [
"error"
]
}
],
"description": "Os grupos CSAP ordenados pela métrica, com participação de cada um e concentração nos primeiros; `error` quando nenhum ano pedido tem dado",
"properties": {
"attribution": {
"description": "URLs canônicas das fontes desta resposta (lista de atribuição)",
"items": {
"type": "string"
},
"type": "array"
},
"available_sih_years": {
"description": "Anos com dados SIH atendÃveis por este servidor",
"items": {
"type": "number"
},
"type": "array"
},
"concentration": {
"additionalProperties": false,
"properties": {
"top_3_percentage": {
"description": "Soma da participação dos 3 primeiros, %",
"type": "number"
},
"top_5_percentage": {
"description": "Soma dos 5 primeiros, %",
"type": "number"
}
},
"required": [
"top_3_percentage",
"top_5_percentage"
],
"type": "object"
},
"data": {
"description": "Sempre vazio: só aparece no caminho de erro-mole do funil",
"items": {},
"type": "array"
},
"error": {
"description": "Motivo pelo qual não há dados nesta resposta (ano sem dado, cobertura populacional, falha na consulta)",
"type": "string"
},
"metric": {
"description": "Métrica que ordena",
"enum": [
"n",
"days",
"value",
"deaths"
]
},
"note": {
"description": "Como obter o dado (por exemplo, consultar get_available_years)",
"type": "string"
},
"notes": {
"description": "Avisos que qualificam os números: era CID-9, raça/cor ausente, universo do % ICSAP, denominador populacional, truncamento",
"items": {
"type": "string"
},
"type": "array"
},
"provenance": {
"description": "Um bloco por procedência que contribuiu com esta resposta (SIH, lista CSAP, csapAIH, população…); licenças nunca se fundem",
"items": {
"additionalProperties": false,
"description": "Bloco de proveniência (contrato v1.1): fonte, URL, competência, extração, diagnóstico de origem, citação e licença",
"properties": {
"citation": {
"description": "Citação pronta para uso",
"type": "string"
},
"data_vintage": {
"description": "Competência ou safra do dado segundo a fonte; null quando a fonte não expõe",
"type": [
"string",
"null"
]
},
"license": {
"description": "Regime legal do dado (id SPDX quando há)",
"type": [
"string",
"null"
]
},
"retrieval": {
"description": "Diagnóstico de origem desta chamada (contrato v1.1): idas ao canal sih/cubos/ do healthbr-data (manifesto e arquivos que faltavam no disco), tentativas somadas e anomalias contornadas; unstable=true quando houve anomalia. null = a resposta veio do DISCO (cache aquecido) ou o bloco não é do canal (listas de referência)",
"oneOf": [
{
"additionalProperties": false,
"description": "Diagnóstico de origem da chamada: como o dado foi obtido. Medição real do servidor; unstable=true pede ao agente que trate o dado como obtido com dificuldade",
"properties": {
"anomalies": {
"description": "Anomalias superadas até o sucesso, somadas por classe, em ordem fixa; [] se nenhuma",
"items": {
"additionalProperties": false,
"properties": {
"count": {
"description": "Ocorrências desta classe na chamada",
"minimum": 1,
"type": "integer"
},
"kind": {
"description": "Classe da anomalia (vocabulário fechado do contrato)",
"enum": [
"timeout",
"network",
"http_4xx",
"http_5xx",
"rate_limited",
"malformed_body"
],
"type": "string"
}
},
"required": [
"kind",
"count"
],
"type": "object"
},
"type": "array"
},
"attempts": {
"description": "Tentativas somadas, incluindo as repetidas (>= requests)",
"minimum": 1,
"type": "integer"
},
"requests": {
"description": "Idas distintas à origem que compõem esta resposta (fatias, páginas)",
"minimum": 1,
"type": "integer"
},
"unstable": {
"description": "true se houve repetição (attempts > requests) ou alguma anomalia",
"type": "boolean"
}
},
"required": [
"requests",
"attempts",
"anomalies",
"unstable"
],
"type": "object"
},
{
"type": "null"
}
]
},
"retrieved_at": {
"description": "Instante REAL da extração na origem (ISO-8601) — para os cubos SIH, a safra do sidecar (extração no FTP do DATASUS), nunca o instante do download",
"type": "string"
},
"source": {
"description": "Fonte oficial do dado",
"type": "string"
},
"source_url": {
"description": "URL canônica que reproduz a consulta ou localiza a fonte",
"type": "string"
}
},
"required": [
"source",
"source_url",
"data_vintage",
"retrieved_at",
"retrieval",
"citation",
"license"
],
"type": "object"
},
"type": "array"
},
"published_years": {
"description": "Anos que o canal de cubos publica — a verdade do canal, distinta do que esta instância tem em disco; só com o cache de cubos ligado",
"items": {
"type": "number"
},
"type": "array"
},
"ranking": {
"description": "Ranking em ordem decrescente da métrica",
"items": {
"additionalProperties": false,
"properties": {
"csap_group": {
"description": "Grupo CSAP g01–g19",
"type": "string"
},
"csap_name": {
"description": "Nome do grupo",
"type": "string"
},
"deaths": {
"description": "Óbitos",
"type": "number"
},
"metric_value": {
"description": "Valor da métrica escolhida",
"type": "number"
},
"n_hospitalizations": {
"description": "Internações do grupo",
"type": "number"
},
"pct_of_total": {
"description": "Participação do grupo no total da métrica, %",
"type": "number"
},
"rank": {
"description": "Posição, 1 = maior",
"type": "number"
},
"total_days": {
"description": "Dias de permanência",
"type": "number"
},
"total_value": {
"description": "Valor pago (R$)",
"type": "number"
}
},
"required": [
"rank",
"csap_group",
"csap_name",
"metric_value",
"pct_of_total",
"n_hospitalizations",
"total_days",
"total_value",
"deaths"
],
"type": "object"
},
"type": "array"
},
"total_groups": {
"description": "Quantos grupos no ranking",
"type": "number"
},
"years_not_available": {
"additionalProperties": false,
"description": "Presente só quando parte dos anos pedidos não tem dado: os números cobrem apenas os anos atendidos",
"properties": {
"note": {
"description": "Quais anos ficaram fora e quais os números cobrem",
"type": "string"
},
"years": {
"description": "Anos pedidos que não têm dados SIH e ficaram fora do resultado",
"items": {
"type": "number"
},
"type": "array"
}
},
"required": [
"years",
"note"
],
"type": "object"
}
},
"required": [
"provenance",
"attribution"
],
"type": "object"
}
}
]
}Verify it yourself
curl -s https://api.teppi.xyz/v1/evidence/sha256:040ef12abda39b17dc7d4e9cb8def275415203aeb4d4dd6b4c0272c0ac70f70b | sha256sum