DATASUS SIH/SUS — Brazil Hospital Admissions (AIH) MCP
Server Details
DATASUS SIH/SUS hospital admissions in Brazil (AIH, 1992-2025): ICD-10 causes, ICSAP, rates.
- Status
- Healthy
- Uptime
- 100.0% over 39 days
- Last Tested
- Transport
- Streamable HTTP · MCP 2025-11-25
- URL
- Repository
- SidneyBissoli/sih-br-mcp
- GitHub Stars
- 1
- Server Listing
- sih-br-mcp
- ChatGPT
- –
- Claude
- –
TDQS
Scored across 12 tools
Each tool has a fairly distinct role: get_hospitalizations (raw counts by filter), get_icsap (CSAP-filtered counts), get_icsap_indicators (percentage metric), get_hospitalization_rates (population denominators), trends vs. comparisons vs. rankings. The closest pair is get_hospitalization_trends vs compare_icsap_trends vs compare_regions, which all do temporal/regional comparison and could be confused, but descriptions clarify scope.
Consistent snake_case verb_noun pattern throughout (get_*, list_*, compare_*, rank_*, classify_as_*). Minor deviations: 'classify_as_csap' inserts a preposition, and resource naming is uneven (get_hospitalizations vs get_icsap), but the pattern is readable and predictable.
12 tools is well within the ideal range, and each covers a distinct analytical need (query, rates, trends, comparison, ranking, classification, reference lists). No redundant or filler tools apparent.
Covers the full analytical lifecycle: raw queries, indicator computation, rates, trends, regional comparisons, CSAP classification/ranking, and reference lists (CID chapters, CSAP groups, available years). Notable gap: no tool to list UF or municipality codes/names, which agents need as valid filter values, and no direct metadata/coverage lookup beyond years.
Available Tools
12 toolsclassify_as_csapClassificar CID-10 como CSAPARead-onlyIdempotentInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| cid_codes | Yes | Códigos CID-10 para classificar (ex: ['J18', 'A09', 'K35']) |
Output Schema
| Name | Required | Description |
|---|---|---|
| error | No | Só quando houver código não classificado: quantos foram e para onde olhar |
| summary | No | Contagem dos códigos informados: sensíveis, não sensíveis e não classificados |
| provenance | Yes | Bloco de proveniência do portfólio: fonte, URL, competência, extração, diagnóstico de origem, citação e licença; e, só quando há o que dizer, avisos, o que o servidor calculou e se o número ainda pode mudar |
| attribution | Yes | URLs canônicas das fontes desta resposta (lista de atribuição) |
| classifications | No | Uma entrada por código, na ordem informada |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Goes well beyond the annotations: it discloses that both notations (J18.1 and J181) are accepted with identical results, and — critically — that a non-CID-10 code returns `is_csap: null` plus its own `error` rather than `false`, explaining why (`false` would assert the condition exists but is not sensitive). That null-vs-false semantics is exactly the kind of behavioral detail an agent cannot infer from readOnly/idempotent hints or the schema.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the core action and result, then the notation rule, then the null-vs-false edge case — a sensible ordering with little waste. The trailing reference to the internal build path (src/data/csap-groups-cid9.json) is implementation detail an agent does not need and slightly dilutes the ending.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With an output schema present, the description need not enumerate return fields, and it still covers the ambiguous cases agents would get wrong: dual notation, non-CID-10 input yielding null plus error, and CID-9 exclusion. Nothing needed to call it correctly is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and the single parameter is already documented, so the baseline is 3. The description adds genuine value by clarifying that either `J18.1` or `J181` notation is valid and returns the same answer, which the schema's example values do not state.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Specific verb+resource: classifies one or more CID-10 codes as CSAP or not, and states the return (the corresponding CSAP group when applicable). It clearly distinguishes itself from siblings like list_csap_groups and get_icsap, which surface group definitions/metrics rather than per-code classification.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly states the scope boundary: only CID-10 is handled here; 6-digit CID-9 SIH codes from 1992–1997 are classified at build time from a derived list and not by this tool. There is no explicit routing to a sibling tool for those cases, so it stops short of full when/when-not/alternatives guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
compare_icsap_trendsTendências comparativas de ICSAPARead-onlyIdempotentInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| end_year | Yes | Ano final | |
| universe | No | 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. | |
| indicator | No | Indicador: percentage (% ICSAP), count (número), rate_per_10k (taxa) | |
| compare_by | No | Comparar por UF ou grupo CSAP | |
| start_year | Yes | Ano inicial | |
| compare_values | No | Valores específicos para comparar (UFs ou grupos CSAP) | |
| include_trend_line | No | Incluir análise de tendência linear (default: true) |
Output Schema
| Name | Required | Description |
|---|---|---|
| data | No | Sempre vazio: só aparece no caminho de erro-mole do funil |
| note | No | Como obter o dado (por exemplo, consultar get_available_years) |
| error | No | Motivo pelo qual não há dados nesta resposta (ano sem dado, cobertura populacional, falha na consulta) |
| notes | No | Avisos que qualificam os números: era CID-9, raça/cor ausente, universo do % ICSAP, denominador populacional, truncamento |
| period | No | Intervalo de anos pedido |
| series | No | Pontos em ordem cronológica |
| trends | No | Tendência por valor comparado; só com `include_trend_line` e ao menos dois anos — ausente quando desligada |
| summary | No | Melhor e pior evolução entre os valores comparados (pela variação entre as pontas) e como ler o indicador; vazio quando não há o que dizer |
| indicator | No | Indicador das séries |
| compare_by | No | Eixo comparado: uf, csap_group ou total (sem eixo) |
| provenance | Yes | Um bloco por procedência que contribuiu com esta resposta (SIH, lista CSAP, csapAIH, população…); licenças nunca se fundem |
| attribution | Yes | URLs canônicas das fontes desta resposta (lista de atribuição) |
| published_years | No | 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 |
| population_years | No | Cobertura populacional; só no erro-mole de `rate_per_10k` fora do intervalo |
| available_sih_years | No | Anos com dados SIH atendíveis por este servidor |
| years_not_available | No | Presente só quando parte dos anos pedidos não tem dado: os números cobrem apenas os anos atendidos |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the readOnly/idempotent annotations, it discloses critical data-quality behavior the agent could not get from structured fields: CID-9 derived ICSAP for 1992-1997 is non-official and makes g03/g05 non-comparable with 1998+, and `uf` in those years is the file's UF. It also explains the csapAIH universe exclusions (obstetric procedures, O80-O84 deliveries, long-stay AIH).
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with purpose then qualifiers in a logical order, but the second half packs several dense clauses (year ranges, CID-9 caveat, universe definition) into long sentences. Acceptable for a tool with this many data caveats, but not maximally scannable.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return values need not be explained, and the description covers year-validity, historical comparability, and universe semantics. The only gap is that it does not point to which sibling retrieves population_years or how compare_values should be formatted, though the schema partially covers the latter.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3, but the description adds cross-parameter semantics: which indicators are valid over which year ranges and that rate_per_10k needs population years from get_available_years.population_years. The `universe` default and its effect on numerator/denominator are also restated with rationale.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a specific verb+resource: comparative temporal analysis of ICSAP across UFs or CSAP groups, listing computed outputs (trends, annual variation, best/worst performers). It implicitly separates itself from compare_regions and get_hospitalization_trends by scoping to ICSAP and UF/CSAP-group comparison, but never names those siblings explicitly.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It states concrete conditions for each indicator: percentage/count work for all SIH years, while rate_per_10k requires population data and is limited to population_years. That is clear usage context, though there are no explicit when-not-to-use rules or named alternative tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
compare_regionsComparação entre UFs e regiõesARead-onlyIdempotentInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| year | No | Anos para consultar | |
| limit | No | Número de resultados (default: 10) | |
| metric | No | Métrica para ranking (default: n) | |
| is_csap | No | Filtrar apenas CSAP | |
| compare_by | No | Comparar por UF ou região (default: uf) | |
| cid_chapter | No | Capítulo CID-10 específico |
Output Schema
| Name | Required | Description |
|---|---|---|
| data | No | Sempre vazio: só aparece no caminho de erro-mole do funil |
| note | No | Como obter o dado (por exemplo, consultar get_available_years) |
| error | No | Motivo pelo qual não há dados nesta resposta (ano sem dado, cobertura populacional, falha na consulta) |
| notes | No | Avisos que qualificam os números: era CID-9, raça/cor ausente, universo do % ICSAP, denominador populacional, truncamento |
| metric | No | Métrica que ordena o ranking |
| ranking | No | Ranking em ordem decrescente da métrica |
| compare_by | No | Eixo da comparação (hoje ambos agrupam por UF) |
| provenance | Yes | Bloco de proveniência do portfólio: fonte, URL, competência, extração, diagnóstico de origem, citação e licença; e, só quando há o que dizer, avisos, o que o servidor calculou e se o número ainda pode mudar |
| attribution | Yes | URLs canônicas das fontes desta resposta (lista de atribuição) |
| published_years | No | 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 |
| total_locations | No | Quantas localidades no ranking |
| available_sih_years | No | Anos com dados SIH atendíveis por este servidor |
| years_not_available | No | Presente só quando parte dos anos pedidos não tem dado: os números cobrem apenas os anos atendidos |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already establish that this is a safe, read-only, idempotent operation. The description adds important behavioral context about interpreting `uf` for 1992–1997, directing users to get_available_years.uf_basis and notes. It does not need to repeat the annotation-level safety properties.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three sentences, front-loaded with the core purpose, then output behavior, then a critical historical caveat. Every sentence adds value and there is no filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the output schema and rich annotations, the description need not explain return values or safety. It covers purpose and a key data caveat, though it could be more complete by naming alternative tools or clarifying when to choose this over similar comparison tools.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the baseline is 3. The description adds meaningful semantic interpretation beyond the schema by warning that `uf` in 1992–1997 refers to establishment UF rather than residence UF, which affects how compare_by results should be read.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource: compares hospitalizations between Brazilian UFs or regions. It also mentions rankings and regional variation output. It does not explicitly distinguish itself from siblings such as compare_icsap_trends, so it falls short of a 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Implies usage for regional comparisons and rankings but gives no explicit when-to-use, when-not-to-use, or sibling alternative guidance. The reference to get_available_years.uf_basis is a useful caveat rather than general usage direction.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_available_yearsAnos disponíveis e frescor dos cubosARead-onlyIdempotentInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| note | No | Aviso sobre o que `years` significa |
| error | No | Falha ao listar os anos |
| years | No | Anos com cubos Parquet presentes localmente |
| currency | No | Moeda de `value` — chave é o ano (string) |
| uf_basis | No | Base do eixo `uf` — chave é o ano (string) |
| freshness | No | Frescor dos cubos locais frente ao espelho healthbr-data |
| data_range | No | Intervalo dos anos locais |
| provenance | Yes | Bloco de proveniência do portfólio: fonte, URL, competência, extração, diagnóstico de origem, citação e licença; e, só quando há o que dizer, avisos, o que o servidor calculou e se o número ainda pode mudar |
| years_cid9 | No | Anos em que o cubo usa CID-9 (1992–1997) |
| attribution | Yes | URLs canônicas das fontes desta resposta (lista de atribuição) |
| cid_revision | No | Internações por revisão da CID — chave é o ano (string) |
| csap_universe | No | Universo do % ICSAP — chave é o ano (string) |
| cubes_channel | No | Canal público dos cubos e cache local |
| race_available | No | Raça/cor disponível — chave é o ano (string) |
| icsap_available | No | ICSAP disponível — chave é o ano (string) |
| population_years | No | Cobertura dos arquivos de população por UF: o que as ferramentas de taxa aceitam |
| years_uf_arquivo | No | Anos em que `uf` é a do estabelecimento (1992–1997) |
| years_without_race | No | Anos sem raça/cor (1998–2007) |
| icsap_list_revision | No | Lista ICSAP por revisão da CID — chave é o ano (string) |
| records_date_imputed | No | Datas imputadas — chave é o ano (string) |
| municipality_available | No | Município disponível — chave é o ano (string) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover safety (readOnly, idempotent, non-destructive) and closed-world scope, so the bar is lower. The description still adds real behavioral context beyond them: the freshness.status enum meanings (current, stale, unknown, pending, disabled) and the fact that stale cubes enumerate re-edited, regenerated, withdrawn or new partitions per year.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The purpose is front-loaded in the opening clause, which is good. But the body is a single dense run-on that enumerates seven per-year fields (race_available, cid_revision, icsap_list_revision, uf_basis, municipality_available, currency, records_date_imputed) that an output schema would already carry, diluting the key freshness message.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return values needn't be spelled out, yet the description supplies the freshness-state semantics the schema likely cannot. With no parameters and full schema coverage, the definition is essentially complete for a metadata tool; only the lack of when-to-use routing is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool takes zero parameters, so there are no argument semantics to explain; the baseline is 4. The description correctly offers no parameter discussion, nothing misleading.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource: it returns the available years present in the loaded SIH-SUS data plus the freshness of cubes against the healthbr-data mirror. It is clearly distinguishable in effect from the data-querying siblings, but it never names or contrasts with an alternative tool, so it stops short of a 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies this is a discovery/metadata step (learn which years exist and how fresh they are) but never states when to call it versus list_csap_groups or get_hospitalizations, nor flags that it takes no arguments. Usage must be inferred from the returned content.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_hospitalization_ratesTaxas de internação por populaçãoARead-onlyIdempotentInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| uf | No | UFs para filtrar | |
| sex | No | Filtrar por sexo | |
| year | No | Anos para calcular | |
| age_max | No | Idade máxima | |
| age_min | No | Idade mínima | |
| is_csap | No | Filtrar apenas CSAP | |
| group_by | No | Dimensões para agrupamento | |
| rate_per | No | Taxa por X habitantes (default: 100000) | |
| rate_type | No | Tipo de taxa: crude (bruta) ou specific (específica por filtro) | |
| cid_chapter | No | Capítulos CID-10 (1-22) |
Output Schema
| Name | Required | Description |
|---|---|---|
| data | No | Um estrato por linha (vazio quando não há internação no recorte) |
| note | No | Como obter o dado (por exemplo, consultar get_available_years) |
| error | No | Motivo pelo qual não há dados nesta resposta (ano sem dado, cobertura populacional, falha na consulta) |
| notes | No | Avisos que qualificam os números: era CID-9, raça/cor ausente, universo do % ICSAP, denominador populacional, truncamento |
| summary | No | Totais somados sobre as linhas de `data` e a taxa do conjunto |
| metadata | No | De onde veio o denominador (arquivo de população por ano, avisos) e os argumentos efetivamente atendidos |
| truncated | No | Presente só quando `data` foi truncado no teto de linhas; os totais em `summary` são do conjunto inteiro |
| provenance | Yes | Um bloco por procedência que contribuiu com esta resposta (SIH, lista CSAP, csapAIH, população…); licenças nunca se fundem |
| attribution | Yes | URLs canônicas das fontes desta resposta (lista de atribuição) |
| published_years | No | 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 |
| population_years | No | Cobertura dos arquivos de população por UF: o que as ferramentas de taxa aceitam |
| available_sih_years | No | Anos com dados SIH atendíveis por este servidor |
| years_not_available | No | Presente só quando parte dos anos pedidos não tem dado: os números cobrem apenas os anos atendidos |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover the read-only/idempotent profile, but the description adds substantial behaviour: the denominator comes from two different files depending on year (pop_uf.parquet from 2000, pop_uf_agregado.parquet for 1991-1999), and the response flags which source was used per year and warns when both are mixed. That is real operational context an agent could not get from the annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
One dense paragraph that front-loads the purpose and output field before the denominator caveats. Every clause carries information, though the long mid-sentence em-dash construction and repeated file names make it harder to scan than it needs to be.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With 10 all-optional parameters, an output schema present, and full schema coverage, the description supplies exactly the missing piece: the dual denominator source, the pre-2000 age constraint, and the population_source/mixing warning in the response. Return-value structure is left to the output schema, which is appropriate.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so baseline would be 3, but the description adds genuine meaning beyond the schema for age_min/age_max: before 2000 the age cut only works on five-year band boundaries (age_min multiple of 5, age_max ending in 4 or 9, or 80+). It also restates the rate_per default and allowed bases, which is redundant with the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Calcula taxas de internação por população') and immediately names the output field ('rate'), so it is distinguishable from count-oriented siblings like get_hospitalizations. It never explicitly names a sibling alternative, so differentiation is inferred from the word 'taxas' rather than stated.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is implied (use this when you need a rate rather than a count), and the pre-2000 age-band restriction functions as a partial 'when not to expect' caveat. There is no explicit statement of when to prefer this over get_hospitalization_trends or get_icsap_indicators.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_hospitalizationsInternações do SUS com filtrosARead-onlyIdempotentInspect
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).
| Name | Required | Description | Default |
|---|---|---|---|
| uf | No | Lista de UFs (ex: ['SP', 'RJ']). Se omitido, todas. | |
| sex | No | Filtrar por sexo | |
| race | No | 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. | |
| year | No | Anos para consultar (ex: [2023, 2024]); série de 1992 em diante | |
| limit | No | Limitar número de resultados | |
| month | No | Meses (1-12). Se omitido, todos. | |
| age_max | No | Idade máxima em anos | |
| age_min | No | Idade mínima em anos | |
| is_csap | No | Filtrar apenas CSAP (true) ou não-CSAP (false) | |
| group_by | No | Dimensões para agrupamento | |
| cid_chapter | No | Capítulos CID-10 (1-22). Se omitido, todos. |
Output Schema
| Name | Required | Description |
|---|---|---|
| data | No | Linhas agrupadas (vazio no caminho de erro-mole) |
| note | No | Como obter o dado (por exemplo, consultar get_available_years) |
| error | No | Motivo pelo qual não há dados nesta resposta (ano sem dado, cobertura populacional, falha na consulta) |
| notes | No | Avisos que qualificam os números: era CID-9, raça/cor ausente, universo do % ICSAP, denominador populacional, truncamento |
| summary | No | Totais do recorte inteiro (não do trecho devolvido, quando truncado) |
| truncated | No | Presente só quando `data` foi truncado no teto de linhas; os totais em `summary` são do conjunto inteiro |
| provenance | Yes | Bloco de proveniência do portfólio: fonte, URL, competência, extração, diagnóstico de origem, citação e licença; e, só quando há o que dizer, avisos, o que o servidor calculou e se o número ainda pode mudar |
| attribution | Yes | URLs canônicas das fontes desta resposta (lista de atribuição) |
| filters_applied | No | Os argumentos recebidos, ecoados |
| published_years | No | 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 |
| available_sih_years | No | Anos com dados SIH atendíveis por este servidor |
| years_not_available | No | Presente só quando parte dos anos pedidos não tem dado: os números cobrem apenas os anos atendidos |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already establish the safe read-only, idempotent profile, so the description's job is to add data-behavior context — and it does so substantially: race null before 2008, CID-9 vs CID-10 encoding in 1992–1997, `uf` being the establishment/file UF rather than residence, nominal historical currency, and the meaning of `exclusion`. It stops short of operational behavior such as result-size limits or pagination, so it is not exhaustive.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
One dense paragraph, but it is front-loaded with the core purpose and every subsequent sentence carries a non-obvious caveat rather than filler. It is long by raw character count, which is defensible for an 11-parameter historical-data tool, though bullets or shorter clauses would improve scanability.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With an output schema present, return values need not be described, and the description thoroughly covers the historical/encoding quirks an agent must know to interpret results correctly. The remaining gap is operational: no guidance on how this differs from overlapping siblings like get_hospitalization_trends.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, which sets a baseline of 3, but the description adds real semantic value beyond the schema: it explains `cid_group` as a 3-digit CID-9 category and `cid_chapter` as the equivalent CID-10 chapter, notes that `cid_revision` separates 9 from 10 (1997 having both), and clarifies the historical nullability and basis of `race`/`uf`. This meaningfully informs filter/group choices.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource ('Consulta dados de internações hospitalares do SUS') and goes further to describe the aggregation capability across dimensions. However, it never distinguishes this tool from close siblings such as get_hospitalization_trends or get_icsap, so an agent cannot route between them from the text alone.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description says what the tool can do ('filtros flexíveis', aggregation by dimensions) but gives no explicit when-to-use, when-not-to-use, or alternative-tool guidance. The only cross-reference is to get_available_years, and that is for metadata lookup, not as a routing alternative to this query tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_hospitalization_trendsSéries temporais de internaçõesARead-onlyIdempotentInspect
Retorna séries temporais de internações (mensal ou anual). Útil para análise de tendências e sazonalidade. O ano e o mês são os da INTERNAÇÃO (DT_INTER), não a competência de faturamento; o ano mais recente cresce até a janela dele fechar (AIH faturada com atraso), e o DATASUS reedita arquivos de competências passadas — cada número é a versão do download do espelho. 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.
| Name | Required | Description | Default |
|---|---|---|---|
| uf | No | UFs para filtrar | |
| year_end | Yes | Ano final | |
| year_start | Yes | Ano inicial | |
| cid_chapter | No | Capítulo CID-10 específico | |
| granularity | No | Granularidade temporal (default: yearly) |
Output Schema
| Name | Required | Description |
|---|---|---|
| data | No | Sempre vazio: só aparece no caminho de erro-mole do funil |
| note | No | Como obter o dado (por exemplo, consultar get_available_years) |
| error | No | Motivo pelo qual não há dados nesta resposta (ano sem dado, cobertura populacional, falha na consulta) |
| notes | No | Avisos que qualificam os números: era CID-9, raça/cor ausente, universo do % ICSAP, denominador populacional, truncamento |
| period | No | Intervalo pedido |
| series | No | Um ponto por ano ou por mês, em ordem cronológica |
| provenance | Yes | Bloco de proveniência do portfólio: fonte, URL, competência, extração, diagnóstico de origem, citação e licença; e, só quando há o que dizer, avisos, o que o servidor calculou e se o número ainda pode mudar |
| attribution | Yes | URLs canônicas das fontes desta resposta (lista de atribuição) |
| granularity | No | Grão da série |
| published_years | No | 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 |
| available_sih_years | No | Anos com dados SIH atendíveis por este servidor |
| years_not_available | No | Presente só quando parte dos anos pedidos não tem dado: os números cobrem apenas os anos atendidos |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover the safety profile (readOnly, idempotent, non-destructive), yet the description adds substantial operational context: year/month are DT_INTER not billing competence, the latest year grows until its window closes due to late AIH billing, DATASUS reissues past files so each figure reflects the downloaded mirror, and series coverage back to 1992. This is exactly the kind of behavior no annotation can convey.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Purpose and usage are front-loaded in the first two sentences, followed by denser caveats. It is a long single paragraph, but nearly every clause carries non-obvious data-integrity information, so little is wasted.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With an output schema present, the description needn't explain return shape, and it instead fills the gaps that matter: temporal semantics, late-reporting behavior, data revisions, and historical edge cases, plus pointers to get_available_years and the notes.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, giving a baseline of 3, but the text adds genuine meaning: it clarifies that year/month refer to the admission date rather than billing competence, and that in 1992–1997 `uf` denotes the file/establishment UF with undated admissions bucketed by billing month. That is more than the terse schema labels provide.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource (returns hospitalization time series) with scope (monthly or yearly) and purpose (trend/seasonality analysis). It is distinguishable from raw-listing siblings like get_hospitalizations, though it never names an alternative tool to sharpen the contrast.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
'Útil para análise de tendências e sazonalidade' implies when to reach for it, and it points to get_available_years and the `notes` for caveats. However there is no explicit when-not or named alternative (e.g. vs get_hospitalizations or compare_icsap_trends), so routing is left partly to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_icsapInternações por condições sensíveis (ICSAP)ARead-onlyIdempotentInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| uf | No | UFs para filtrar | |
| sex | No | Filtrar por sexo | |
| race | No | 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. | |
| year | No | Anos para consultar | |
| age_max | No | Idade máxima | |
| age_min | No | Idade mínima | |
| group_by | No | Dimensões para agrupamento | |
| universe | No | 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. | |
| csap_group | No | Grupos CSAP (ex: ['g01', 'g05']) | |
| municipality_code | No | Código IBGE do município (6 dígitos) |
Output Schema
| Name | Required | Description |
|---|---|---|
| data | No | Linhas agrupadas (vazio no caminho de erro-mole) |
| note | No | Como obter o dado (por exemplo, consultar get_available_years) |
| error | No | Motivo pelo qual não há dados nesta resposta (ano sem dado, cobertura populacional, falha na consulta) |
| notes | No | Avisos que qualificam os números: era CID-9, raça/cor ausente, universo do % ICSAP, denominador populacional, truncamento |
| summary | No | Totais do recorte inteiro, calculados sem agrupamento |
| truncated | No | Presente só quando `data` foi truncado no teto de linhas; os totais em `summary` são do conjunto inteiro |
| provenance | Yes | Um bloco por procedência que contribuiu com esta resposta (SIH, lista CSAP, csapAIH, população…); licenças nunca se fundem |
| attribution | Yes | URLs canônicas das fontes desta resposta (lista de atribuição) |
| filters_applied | No | Os argumentos recebidos, ecoados |
| published_years | No | 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 |
| available_sih_years | No | Anos com dados SIH atendíveis por este servidor |
| years_not_available | No | Presente só quando parte dos anos pedidos não tem dado: os números cobrem apenas os anos atendidos |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description goes well beyond the annotations (which only declare read-only/idempotent/non-destructive) by disclosing substantive data caveats: race is null in 1998–2007, the 1992–1997 CID-9 ICSAP list is derived/unofficial with non-comparable g03/g05, uf is the file's UF and municipality_code is null in that era, and the default universe excludes obstetric/parto/long-stay records. This is exactly the kind of behavioral context an agent needs to interpret results correctly.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loads the purpose, then layers the temporal caveats efficiently in a compact paragraph with no redundant filler. It is dense and somewhat prose-heavy, but every clause carries a distinct data caveat, so little is wasted.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given a rich output schema, complete annotations, and full parameter coverage, the description supplies the remaining critical context: temporal validity windows for race/uf/municipality_code, list-revision discontinuity, and the default denominator universe. An agent has enough to call and interpret this tool correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so baseline is 3, but the description meaningfully expands semantics: it explains the default 'csapaih' universe definition and the year-dependence of race, uf, and municipality_code (grouping columns 'uf' and 'municipality_code' behave differently pre-1998). This adds interpretive value the schema fields alone do not convey.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Consulta internações por Condições Sensíveis à Atenção Primária') and enumerates the available filters, so an agent knows this is a filtered query over ICSAP hospitalizations. It does not, however, distinguish itself from close siblings like get_icsap_indicators or get_hospitalizations, so the differentiation is left to inference.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is implied through the listed filters and the pointer to get_available_years for interpreting revisions/basis, which is useful complementary guidance. But there is no explicit statement of when to prefer this over get_icsap_indicators, compare_icsap_trends, or get_hospitalizations, and no when-not-to-use condition.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_icsap_indicatorsIndicadores de ICSAPARead-onlyIdempotentInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| uf | No | UFs para calcular | |
| sex | No | Filtrar por sexo | |
| year | No | Anos para calcular | |
| age_max | No | Idade máxima | |
| age_min | No | Idade mínima | |
| group_by | No | Dimensões para agrupamento | |
| universe | No | 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. | |
| municipality_code | No | Código IBGE do município |
Output Schema
| Name | Required | Description |
|---|---|---|
| data | No | Um estrato por linha (vazio no caminho de erro-mole) |
| note | No | Fórmula do indicador — ou, no caminho de erro-mole, como obter o dado |
| error | No | Motivo pelo qual não há dados nesta resposta (ano sem dado, cobertura populacional, falha na consulta) |
| notes | No | Avisos que qualificam os números: era CID-9, raça/cor ausente, universo do % ICSAP, denominador populacional, truncamento |
| truncated | No | Presente só quando `data` foi truncado no teto de linhas; os totais em `summary` são do conjunto inteiro |
| provenance | Yes | Um bloco por procedência que contribuiu com esta resposta (SIH, lista CSAP, csapAIH, população…); licenças nunca se fundem |
| attribution | Yes | URLs canônicas das fontes desta resposta (lista de atribuição) |
| published_years | No | 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 |
| available_sih_years | No | Anos com dados SIH atendíveis por este servidor |
| years_not_available | No | Presente só quando parte dos anos pedidos não tem dado: os números cobrem apenas os anos atendidos |
| indicators_calculated | No | Indicadores presentes nas linhas (icsap_percentage) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly/idempotent/non-destructive, but the description adds substantive domain behavior: the default `universe` excludes obstetric, parto (O80-O84) and long-stay hospitalizations from both numerator and denominator, and it warns about non-comparable CID-9-derived data and null `race`. This discloses non-obvious data caveats beyond the structured fields.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The purpose and formula are front-loaded in the first two sentences, followed by the caveats. It is dense with multi-clause sentences, but every sentence carries non-redundant information, so the size is largely justified by the tool's complexity.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return format need not be explained, and the description covers the main data-validity caveats an agent needs (race availability, CID-9 derivation, universe default). For a 9-parameter, multi-year epidemiological tool this is close to complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the schema already documents all 8 params (baseline 3). The description goes further by explaining the practical meaning of `group_by=race` (only valid 2008+) and the quirk of `uf` in early years, adding interpretation the schema does not.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ("Calcula indicadores de ICSAP") and even gives the exact formula (ICSAP/Total×100), which is more than a restatement of the title. It clearly reads as an aggregate-indicator tool distinct from raw-count siblings like get_icsap, though it never names an alternative explicitly.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides concrete conditions for correct use: race grouping only makes sense from 2008 onward because `race` is null in 1998–2007, and 1992–1997 ICSAP comes from a derived CID-9 list with `uf` being the file's UF. These are real when-to-use constraints, but there is no explicit routing to sibling tools (e.g. vs get_icsap or compare_icsap_trends).
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_cid_chaptersCapítulos da CID-10ARead-onlyIdempotentInspect
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).
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| chapters | No | Os capítulos, na ordem da CID |
| provenance | Yes | Bloco de proveniência do portfólio: fonte, URL, competência, extração, diagnóstico de origem, citação e licença; e, só quando há o que dizer, avisos, o que o servidor calculou e se o número ainda pode mudar |
| attribution | Yes | URLs canônicas das fontes desta resposta (lista de atribuição) |
| total_chapters | No | Número de capítulos (22) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly/idempotent/non-destructive/closed-world, so safety is covered. The description adds behavioral context beyond that: the fixed size of the enumeration (22 chapters) and the crosswalk mechanism (per-category mapping for pre-1998 data).
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, with the primary purpose front-loaded before the qualification. Both sentences carry information, though the internal file path (`src/data/cid9-chapters.json`) is implementation detail that adds little for tool selection.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return values needn't be described. For a zero-parameter reference lookup, the description supplies everything needed: what is listed, its finite size, and the CID-9-to-CID-10 caveat that explains when the data matters.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool takes zero parameters, so per the rubric the baseline is 4. There is no parameter surface for the description to explain or for the schema to omit.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Lista os 22 capítulos da CID-10') plus the content returned (codes and diagnosis ranges). The resource is clearly distinct from every sibling (CSAP groups, hospitalizations, trends), so an agent can identify it immediately.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The second sentence supplies real usage context: it explains that 1992–1997 cubes encode CID-9 and that `cid_chapter` holds the equivalent CID-10 chapter, telling the agent when this lookup is relevant. It stops short of explicit when-not-to-use or naming an alternative sibling.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_csap_groupsGrupos CSAP (Portaria 221/2008)ARead-onlyIdempotentInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| group_code | No | Código do grupo específico (ex: 'g01'). Se omitido, retorna todos. | |
| include_cid_codes | No | Se true, inclui lista de códigos CID-10 (default: false) |
Output Schema
| Name | Required | Description |
|---|---|---|
| error | No | Grupo CSAP não encontrado |
| group | No | O grupo pedido por `group_code` |
| groups | No | Os 19 grupos, na ordem da Portaria |
| source | No | Norma que define a lista (Portaria MS/SAS 221/2008) |
| provenance | Yes | Bloco de proveniência do portfólio: fonte, URL, competência, extração, diagnóstico de origem, citação e licença; e, só quando há o que dizer, avisos, o que o servidor calculou e se o número ainda pode mudar |
| attribution | Yes | URLs canônicas das fontes desta resposta (lista de atribuição) |
| total_groups | No | Número de grupos na lista (19) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already establish readOnly, idempotent, non-destructive, closed-world behavior. The description adds real value beyond them by specifying that the set is a fixed, authoritative list of exactly 19 groups from a named ordinance, and that entries carry code, name and CID-10 codes.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, zero filler, and the identity of the resource is front-loaded before the return payload. Nothing is repeated or restated from the title.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a read-only two-optional-parameter listing tool with an output schema and full safety annotations, this is nearly sufficient; the output schema removes any need to explain return values. The only shortfall is the absence of guidance on filtering by group_code versus fetching all groups.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so both parameters (group_code filter, include_cid_codes toggle) are already fully documented in the schema; baseline 3 applies. The phrase 'Retorna código, nome e códigos CID-10' loosely gestures at the CID-10 flag but adds no syntax or default detail beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Specific verb ('Lista') plus a precisely scoped resource: the 19 CSAP groups defined by Portaria MS/SAS 221/2008. This clearly separates it from siblings like list_cid_chapters and rank_csap_groups, though no sibling is named explicitly.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is only implied: this is evidently a reference/lookup call (e.g. to resolve a group code before calling rank_csap_groups or classify_as_csap). The description never states when to use it versus the other listing tools, nor any prerequisites or exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
rank_csap_groupsRanking dos grupos CSAPARead-onlyIdempotentInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| uf | No | UFs para filtrar | |
| sex | No | Filtrar por sexo | |
| year | No | Anos para consultar | |
| limit | No | Número de grupos no ranking (default: 19) | |
| metric | No | Métrica para ranking (default: n) | |
| age_max | No | Idade máxima | |
| age_min | No | Idade mínima | |
| universe | No | 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. |
Output Schema
| Name | Required | Description |
|---|---|---|
| data | No | Sempre vazio: só aparece no caminho de erro-mole do funil |
| note | No | Como obter o dado (por exemplo, consultar get_available_years) |
| error | No | Motivo pelo qual não há dados nesta resposta (ano sem dado, cobertura populacional, falha na consulta) |
| notes | No | Avisos que qualificam os números: era CID-9, raça/cor ausente, universo do % ICSAP, denominador populacional, truncamento |
| metric | No | Métrica que ordena |
| ranking | No | Ranking em ordem decrescente da métrica |
| provenance | Yes | Um bloco por procedência que contribuiu com esta resposta (SIH, lista CSAP, csapAIH, população…); licenças nunca se fundem |
| attribution | Yes | URLs canônicas das fontes desta resposta (lista de atribuição) |
| total_groups | No | Quantos grupos no ranking |
| concentration | No | Concentração da métrica nos primeiros grupos do ranking (soma de `pct_of_total`, duas casas) |
| published_years | No | 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 |
| available_sih_years | No | Anos com dados SIH atendíveis por este servidor |
| years_not_available | No | Presente só quando parte dos anos pedidos não tem dado: os números cobrem apenas os anos atendidos |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover safety (readOnly, idempotent, non-destructive, closed world), so the bar is lower; the description nonetheless adds substantive behavioral caveats: the 1992–1997 ICSAP comes from an unofficial derived CID-9 list, g03/g05 are not comparable with 1998+, `value` is nominal in period currency, and it points to `notes`. What it does not state is whether ranking ties are handled or what the output rows look like, but with an output schema present that is acceptable.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the verb+resource, then caveats, then the universe default — a sensible ordering. It is dense and slightly run-on with three caveats packed mid-paragraph, but every sentence carries information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 8-parameter, zero-required tool with a full output schema, the description supplies the non-obvious context an agent needs: historical data caveats, currency nominality, and universe scope. The remaining gap is the undocumented `deaths` metric, which the metric enum exposes but the description never surfaces.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% and the `universe` parameter is already fully documented in the schema, so baseline is 3. The description adds genuine semantics for the `value` metric (nominal, period currency) and reinforces the universe exclusion rules, but it does not mention the `deaths` metric or clarify year/uf interactions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource: generates a ranking of the 19 CSAP groups by hospitalizations, days or value, plus identifying leading avoidable causes. An agent can tell this is the ranked-aggregate tool versus per-group lookups like list_csap_groups. It does not explicitly contrast with siblings, and it omits the `deaths` metric that the schema supports, so not a 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage context is implied by the caveats (pre-1998 data comparability, currency nominality) and by naming the `universe` default, but there is no explicit when-to-use versus list_csap_groups, get_icsap_indicators or compare_icsap_trends. The agent must infer the routing.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
4 tool updates
- Changed
classify_as_csap1 field changed- added
Output schema / properties / summary / descriptionAdded value: +"Contagem dos códigos informados: sensíveis, não sensíveis e não classificados"
- Changed
compare_icsap_trends2 fields changed- added
Output schema / properties / period / descriptionAdded value: +"Intervalo de anos pedido" - added
Output schema / properties / summary / descriptionAdded value: +"Melhor e pior evolução entre os valores comparados (pela variação entre as pontas) e como ler o indicador; vazio quando não há o que dizer"
- Changed
get_hospitalization_rates2 fields changed- added
Output schema / properties / metadata / descriptionAdded value: +"De onde veio o denominador (arquivo de população por ano, avisos) e os argumentos efetivamente atendidos" - added
Output schema / properties / summary / descriptionAdded value: +"Totais somados sobre as linhas de `data` e a taxa do conjunto"
- Changed
rank_csap_groups1 field changed- added
Output schema / properties / concentration / descriptionAdded value: +"Concentração da métrica nos primeiros grupos do ranking (soma de `pct_of_total`, duas casas)"
1 tool update
- Changed
get_hospitalization_rates3 fields changed- changed
Output schema / properties / data / items / properties / rate / descriptionPrevious value: -"Internações por `rate_per` habitantes, duas casas"New value: +"Internações por `rate_per` habitantes, com no mínimo 3 algarismos significativos e nunca menos de duas casas (taxa pequena não vira 0)" - changed
Output schema / properties / data / items / properties / rate_per_100k / descriptionPrevious value: -"DEPRECADO — use `rate` com `rate_per`. Internações por 100 mil habitantes, qualquer que seja `rate_per`; sai numa versão futura"New value: +"DEPRECADO — use `rate` com `rate_per`. Internações por 100 mil habitantes, qualquer que seja `rate_per`, mesmo arredondamento de `rate`; sai numa versão futura" - changed
Output schema / properties / summary / properties / overall_rate / descriptionPrevious value: -"Taxa do conjunto, na base `rate_per`"New value: +"Taxa do conjunto, na base `rate_per`, mesmo arredondamento de `rate`"
12 tool updates
- Changed
classify_as_csap6 fields changed- changed
Output schema / properties / provenance / descriptionPrevious value: -"Bloco de proveniência (contrato v1.1): fonte, URL, competência, extração, diagnóstico de origem, citação e licença"New value: +"Bloco de proveniência do portfólio: fonte, URL, competência, extração, diagnóstico de origem, citação e licença; e, só quando há o que dizer, avisos, o que o servidor calculou e se o número ainda pode mudar" - added
Output schema / properties / provenance / properties / derivation_noteAdded value: +{ + "description": "Como o número foi calculado; presente junto com derived", + "type": "string" +} - added
Output schema / properties / provenance / properties / derivedAdded value: +{ + "description": "Presente (true) quando o número foi calculado por este servidor — os cubos SIH são somas das internações dos arquivos do DATASUS", + "type": "boolean" +} - added
Output schema / properties / provenance / properties / noticesAdded value: +{ + "description": "Avisos que acompanham o dado (ex.: cubo atrás do espelho healthbr-data, frescor não verificado). Ausente quando não há aviso", + "items": { + "type": "string" + }, + "minItems": 1, + "type": "array" +} - changed
Output schema / properties / provenance / properties / retrieval / descriptionPrevious value: -"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)"New value: +"Diagnóstico de origem desta chamada: 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)" - added
Output schema / properties / provenance / properties / revisionAdded value: +{ + "additionalProperties": false, + "description": "Se o número ainda pode mudar: provisional quando algum ano da resposta ainda tem competências abertas no SIH (o total ainda pode crescer); current nos demais — o DATASUS reedita arquivos de competências passadas", + "properties": { + "note": { + "description": "O específico da fonte: o que revisa, quando, por quê", + "type": [ + "string", + "null" + ] + }, + "status": { + "description": "current = versão vigente, a fonte pode revisá-la; provisional = preliminar, incompleta ou sujeita a mudança (não compare como se fosse fechada); final = não muda mais, declarado pela fonte", + "enum": [ + "current", + "provisional", + "final" + ], + "type": "string" + } + }, + "required": [ + "status", + "note" + ], + "type": "object" +}
- Changed
compare_icsap_trends6 fields changed- changed
Output schema / properties / provenance / items / descriptionPrevious value: -"Bloco de proveniência (contrato v1.1): fonte, URL, competência, extração, diagnóstico de origem, citação e licença"New value: +"Bloco de proveniência do portfólio: fonte, URL, competência, extração, diagnóstico de origem, citação e licença; e, só quando há o que dizer, avisos, o que o servidor calculou e se o número ainda pode mudar" - added
Output schema / properties / provenance / items / properties / derivation_noteAdded value: +{ + "description": "Como o número foi calculado; presente junto com derived", + "type": "string" +} - added
Output schema / properties / provenance / items / properties / derivedAdded value: +{ + "description": "Presente (true) quando o número foi calculado por este servidor — os cubos SIH são somas das internações dos arquivos do DATASUS", + "type": "boolean" +} - added
Output schema / properties / provenance / items / properties / noticesAdded value: +{ + "description": "Avisos que acompanham o dado (ex.: cubo atrás do espelho healthbr-data, frescor não verificado). Ausente quando não há aviso", + "items": { + "type": "string" + }, + "minItems": 1, + "type": "array" +} - changed
Output schema / properties / provenance / items / properties / retrieval / descriptionPrevious value: -"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)"New value: +"Diagnóstico de origem desta chamada: 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)" - added
Output schema / properties / provenance / items / properties / revisionAdded value: +{ + "additionalProperties": false, + "description": "Se o número ainda pode mudar: provisional quando algum ano da resposta ainda tem competências abertas no SIH (o total ainda pode crescer); current nos demais — o DATASUS reedita arquivos de competências passadas", + "properties": { + "note": { + "description": "O específico da fonte: o que revisa, quando, por quê", + "type": [ + "string", + "null" + ] + }, + "status": { + "description": "current = versão vigente, a fonte pode revisá-la; provisional = preliminar, incompleta ou sujeita a mudança (não compare como se fosse fechada); final = não muda mais, declarado pela fonte", + "enum": [ + "current", + "provisional", + "final" + ], + "type": "string" + } + }, + "required": [ + "status", + "note" + ], + "type": "object" +}
- Changed
compare_regions6 fields changed- changed
Output schema / properties / provenance / descriptionPrevious value: -"Bloco de proveniência (contrato v1.1): fonte, URL, competência, extração, diagnóstico de origem, citação e licença"New value: +"Bloco de proveniência do portfólio: fonte, URL, competência, extração, diagnóstico de origem, citação e licença; e, só quando há o que dizer, avisos, o que o servidor calculou e se o número ainda pode mudar" - added
Output schema / properties / provenance / properties / derivation_noteAdded value: +{ + "description": "Como o número foi calculado; presente junto com derived", + "type": "string" +} - added
Output schema / properties / provenance / properties / derivedAdded value: +{ + "description": "Presente (true) quando o número foi calculado por este servidor — os cubos SIH são somas das internações dos arquivos do DATASUS", + "type": "boolean" +} - added
Output schema / properties / provenance / properties / noticesAdded value: +{ + "description": "Avisos que acompanham o dado (ex.: cubo atrás do espelho healthbr-data, frescor não verificado). Ausente quando não há aviso", + "items": { + "type": "string" + }, + "minItems": 1, + "type": "array" +} - changed
Output schema / properties / provenance / properties / retrieval / descriptionPrevious value: -"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)"New value: +"Diagnóstico de origem desta chamada: 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)" - added
Output schema / properties / provenance / properties / revisionAdded value: +{ + "additionalProperties": false, + "description": "Se o número ainda pode mudar: provisional quando algum ano da resposta ainda tem competências abertas no SIH (o total ainda pode crescer); current nos demais — o DATASUS reedita arquivos de competências passadas", + "properties": { + "note": { + "description": "O específico da fonte: o que revisa, quando, por quê", + "type": [ + "string", + "null" + ] + }, + "status": { + "description": "current = versão vigente, a fonte pode revisá-la; provisional = preliminar, incompleta ou sujeita a mudança (não compare como se fosse fechada); final = não muda mais, declarado pela fonte", + "enum": [ + "current", + "provisional", + "final" + ], + "type": "string" + } + }, + "required": [ + "status", + "note" + ], + "type": "object" +}
- Changed
get_available_years6 fields changed- changed
Output schema / properties / provenance / descriptionPrevious value: -"Bloco de proveniência (contrato v1.1): fonte, URL, competência, extração, diagnóstico de origem, citação e licença"New value: +"Bloco de proveniência do portfólio: fonte, URL, competência, extração, diagnóstico de origem, citação e licença; e, só quando há o que dizer, avisos, o que o servidor calculou e se o número ainda pode mudar" - added
Output schema / properties / provenance / properties / derivation_noteAdded value: +{ + "description": "Como o número foi calculado; presente junto com derived", + "type": "string" +} - added
Output schema / properties / provenance / properties / derivedAdded value: +{ + "description": "Presente (true) quando o número foi calculado por este servidor — os cubos SIH são somas das internações dos arquivos do DATASUS", + "type": "boolean" +} - added
Output schema / properties / provenance / properties / noticesAdded value: +{ + "description": "Avisos que acompanham o dado (ex.: cubo atrás do espelho healthbr-data, frescor não verificado). Ausente quando não há aviso", + "items": { + "type": "string" + }, + "minItems": 1, + "type": "array" +} - changed
Output schema / properties / provenance / properties / retrieval / descriptionPrevious value: -"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)"New value: +"Diagnóstico de origem desta chamada: 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)" - added
Output schema / properties / provenance / properties / revisionAdded value: +{ + "additionalProperties": false, + "description": "Se o número ainda pode mudar: provisional quando algum ano da resposta ainda tem competências abertas no SIH (o total ainda pode crescer); current nos demais — o DATASUS reedita arquivos de competências passadas", + "properties": { + "note": { + "description": "O específico da fonte: o que revisa, quando, por quê", + "type": [ + "string", + "null" + ] + }, + "status": { + "description": "current = versão vigente, a fonte pode revisá-la; provisional = preliminar, incompleta ou sujeita a mudança (não compare como se fosse fechada); final = não muda mais, declarado pela fonte", + "enum": [ + "current", + "provisional", + "final" + ], + "type": "string" + } + }, + "required": [ + "status", + "note" + ], + "type": "object" +}
- Changed
get_hospitalization_rates6 fields changed- changed
Output schema / properties / provenance / items / descriptionPrevious value: -"Bloco de proveniência (contrato v1.1): fonte, URL, competência, extração, diagnóstico de origem, citação e licença"New value: +"Bloco de proveniência do portfólio: fonte, URL, competência, extração, diagnóstico de origem, citação e licença; e, só quando há o que dizer, avisos, o que o servidor calculou e se o número ainda pode mudar" - added
Output schema / properties / provenance / items / properties / derivation_noteAdded value: +{ + "description": "Como o número foi calculado; presente junto com derived", + "type": "string" +} - added
Output schema / properties / provenance / items / properties / derivedAdded value: +{ + "description": "Presente (true) quando o número foi calculado por este servidor — os cubos SIH são somas das internações dos arquivos do DATASUS", + "type": "boolean" +} - added
Output schema / properties / provenance / items / properties / noticesAdded value: +{ + "description": "Avisos que acompanham o dado (ex.: cubo atrás do espelho healthbr-data, frescor não verificado). Ausente quando não há aviso", + "items": { + "type": "string" + }, + "minItems": 1, + "type": "array" +} - changed
Output schema / properties / provenance / items / properties / retrieval / descriptionPrevious value: -"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)"New value: +"Diagnóstico de origem desta chamada: 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)" - added
Output schema / properties / provenance / items / properties / revisionAdded value: +{ + "additionalProperties": false, + "description": "Se o número ainda pode mudar: provisional quando algum ano da resposta ainda tem competências abertas no SIH (o total ainda pode crescer); current nos demais — o DATASUS reedita arquivos de competências passadas", + "properties": { + "note": { + "description": "O específico da fonte: o que revisa, quando, por quê", + "type": [ + "string", + "null" + ] + }, + "status": { + "description": "current = versão vigente, a fonte pode revisá-la; provisional = preliminar, incompleta ou sujeita a mudança (não compare como se fosse fechada); final = não muda mais, declarado pela fonte", + "enum": [ + "current", + "provisional", + "final" + ], + "type": "string" + } + }, + "required": [ + "status", + "note" + ], + "type": "object" +}
- Changed
get_hospitalization_trends6 fields changed- changed
Output schema / properties / provenance / descriptionPrevious value: -"Bloco de proveniência (contrato v1.1): fonte, URL, competência, extração, diagnóstico de origem, citação e licença"New value: +"Bloco de proveniência do portfólio: fonte, URL, competência, extração, diagnóstico de origem, citação e licença; e, só quando há o que dizer, avisos, o que o servidor calculou e se o número ainda pode mudar" - added
Output schema / properties / provenance / properties / derivation_noteAdded value: +{ + "description": "Como o número foi calculado; presente junto com derived", + "type": "string" +} - added
Output schema / properties / provenance / properties / derivedAdded value: +{ + "description": "Presente (true) quando o número foi calculado por este servidor — os cubos SIH são somas das internações dos arquivos do DATASUS", + "type": "boolean" +} - added
Output schema / properties / provenance / properties / noticesAdded value: +{ + "description": "Avisos que acompanham o dado (ex.: cubo atrás do espelho healthbr-data, frescor não verificado). Ausente quando não há aviso", + "items": { + "type": "string" + }, + "minItems": 1, + "type": "array" +} - changed
Output schema / properties / provenance / properties / retrieval / descriptionPrevious value: -"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)"New value: +"Diagnóstico de origem desta chamada: 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)" - added
Output schema / properties / provenance / properties / revisionAdded value: +{ + "additionalProperties": false, + "description": "Se o número ainda pode mudar: provisional quando algum ano da resposta ainda tem competências abertas no SIH (o total ainda pode crescer); current nos demais — o DATASUS reedita arquivos de competências passadas", + "properties": { + "note": { + "description": "O específico da fonte: o que revisa, quando, por quê", + "type": [ + "string", + "null" + ] + }, + "status": { + "description": "current = versão vigente, a fonte pode revisá-la; provisional = preliminar, incompleta ou sujeita a mudança (não compare como se fosse fechada); final = não muda mais, declarado pela fonte", + "enum": [ + "current", + "provisional", + "final" + ], + "type": "string" + } + }, + "required": [ + "status", + "note" + ], + "type": "object" +}
- Changed
get_hospitalizations6 fields changed- changed
Output schema / properties / provenance / descriptionPrevious value: -"Bloco de proveniência (contrato v1.1): fonte, URL, competência, extração, diagnóstico de origem, citação e licença"New value: +"Bloco de proveniência do portfólio: fonte, URL, competência, extração, diagnóstico de origem, citação e licença; e, só quando há o que dizer, avisos, o que o servidor calculou e se o número ainda pode mudar" - added
Output schema / properties / provenance / properties / derivation_noteAdded value: +{ + "description": "Como o número foi calculado; presente junto com derived", + "type": "string" +} - added
Output schema / properties / provenance / properties / derivedAdded value: +{ + "description": "Presente (true) quando o número foi calculado por este servidor — os cubos SIH são somas das internações dos arquivos do DATASUS", + "type": "boolean" +} - added
Output schema / properties / provenance / properties / noticesAdded value: +{ + "description": "Avisos que acompanham o dado (ex.: cubo atrás do espelho healthbr-data, frescor não verificado). Ausente quando não há aviso", + "items": { + "type": "string" + }, + "minItems": 1, + "type": "array" +} - changed
Output schema / properties / provenance / properties / retrieval / descriptionPrevious value: -"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)"New value: +"Diagnóstico de origem desta chamada: 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)" - added
Output schema / properties / provenance / properties / revisionAdded value: +{ + "additionalProperties": false, + "description": "Se o número ainda pode mudar: provisional quando algum ano da resposta ainda tem competências abertas no SIH (o total ainda pode crescer); current nos demais — o DATASUS reedita arquivos de competências passadas", + "properties": { + "note": { + "description": "O específico da fonte: o que revisa, quando, por quê", + "type": [ + "string", + "null" + ] + }, + "status": { + "description": "current = versão vigente, a fonte pode revisá-la; provisional = preliminar, incompleta ou sujeita a mudança (não compare como se fosse fechada); final = não muda mais, declarado pela fonte", + "enum": [ + "current", + "provisional", + "final" + ], + "type": "string" + } + }, + "required": [ + "status", + "note" + ], + "type": "object" +}
- Changed
get_icsap6 fields changed- changed
Output schema / properties / provenance / items / descriptionPrevious value: -"Bloco de proveniência (contrato v1.1): fonte, URL, competência, extração, diagnóstico de origem, citação e licença"New value: +"Bloco de proveniência do portfólio: fonte, URL, competência, extração, diagnóstico de origem, citação e licença; e, só quando há o que dizer, avisos, o que o servidor calculou e se o número ainda pode mudar" - added
Output schema / properties / provenance / items / properties / derivation_noteAdded value: +{ + "description": "Como o número foi calculado; presente junto com derived", + "type": "string" +} - added
Output schema / properties / provenance / items / properties / derivedAdded value: +{ + "description": "Presente (true) quando o número foi calculado por este servidor — os cubos SIH são somas das internações dos arquivos do DATASUS", + "type": "boolean" +} - added
Output schema / properties / provenance / items / properties / noticesAdded value: +{ + "description": "Avisos que acompanham o dado (ex.: cubo atrás do espelho healthbr-data, frescor não verificado). Ausente quando não há aviso", + "items": { + "type": "string" + }, + "minItems": 1, + "type": "array" +} - changed
Output schema / properties / provenance / items / properties / retrieval / descriptionPrevious value: -"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)"New value: +"Diagnóstico de origem desta chamada: 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)" - added
Output schema / properties / provenance / items / properties / revisionAdded value: +{ + "additionalProperties": false, + "description": "Se o número ainda pode mudar: provisional quando algum ano da resposta ainda tem competências abertas no SIH (o total ainda pode crescer); current nos demais — o DATASUS reedita arquivos de competências passadas", + "properties": { + "note": { + "description": "O específico da fonte: o que revisa, quando, por quê", + "type": [ + "string", + "null" + ] + }, + "status": { + "description": "current = versão vigente, a fonte pode revisá-la; provisional = preliminar, incompleta ou sujeita a mudança (não compare como se fosse fechada); final = não muda mais, declarado pela fonte", + "enum": [ + "current", + "provisional", + "final" + ], + "type": "string" + } + }, + "required": [ + "status", + "note" + ], + "type": "object" +}
- Changed
get_icsap_indicators6 fields changed- changed
Output schema / properties / provenance / items / descriptionPrevious value: -"Bloco de proveniência (contrato v1.1): fonte, URL, competência, extração, diagnóstico de origem, citação e licença"New value: +"Bloco de proveniência do portfólio: fonte, URL, competência, extração, diagnóstico de origem, citação e licença; e, só quando há o que dizer, avisos, o que o servidor calculou e se o número ainda pode mudar" - added
Output schema / properties / provenance / items / properties / derivation_noteAdded value: +{ + "description": "Como o número foi calculado; presente junto com derived", + "type": "string" +} - added
Output schema / properties / provenance / items / properties / derivedAdded value: +{ + "description": "Presente (true) quando o número foi calculado por este servidor — os cubos SIH são somas das internações dos arquivos do DATASUS", + "type": "boolean" +} - added
Output schema / properties / provenance / items / properties / noticesAdded value: +{ + "description": "Avisos que acompanham o dado (ex.: cubo atrás do espelho healthbr-data, frescor não verificado). Ausente quando não há aviso", + "items": { + "type": "string" + }, + "minItems": 1, + "type": "array" +} - changed
Output schema / properties / provenance / items / properties / retrieval / descriptionPrevious value: -"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)"New value: +"Diagnóstico de origem desta chamada: 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)" - added
Output schema / properties / provenance / items / properties / revisionAdded value: +{ + "additionalProperties": false, + "description": "Se o número ainda pode mudar: provisional quando algum ano da resposta ainda tem competências abertas no SIH (o total ainda pode crescer); current nos demais — o DATASUS reedita arquivos de competências passadas", + "properties": { + "note": { + "description": "O específico da fonte: o que revisa, quando, por quê", + "type": [ + "string", + "null" + ] + }, + "status": { + "description": "current = versão vigente, a fonte pode revisá-la; provisional = preliminar, incompleta ou sujeita a mudança (não compare como se fosse fechada); final = não muda mais, declarado pela fonte", + "enum": [ + "current", + "provisional", + "final" + ], + "type": "string" + } + }, + "required": [ + "status", + "note" + ], + "type": "object" +}
- Changed
list_cid_chapters6 fields changed- changed
Output schema / properties / provenance / descriptionPrevious value: -"Bloco de proveniência (contrato v1.1): fonte, URL, competência, extração, diagnóstico de origem, citação e licença"New value: +"Bloco de proveniência do portfólio: fonte, URL, competência, extração, diagnóstico de origem, citação e licença; e, só quando há o que dizer, avisos, o que o servidor calculou e se o número ainda pode mudar" - added
Output schema / properties / provenance / properties / derivation_noteAdded value: +{ + "description": "Como o número foi calculado; presente junto com derived", + "type": "string" +} - added
Output schema / properties / provenance / properties / derivedAdded value: +{ + "description": "Presente (true) quando o número foi calculado por este servidor — os cubos SIH são somas das internações dos arquivos do DATASUS", + "type": "boolean" +} - added
Output schema / properties / provenance / properties / noticesAdded value: +{ + "description": "Avisos que acompanham o dado (ex.: cubo atrás do espelho healthbr-data, frescor não verificado). Ausente quando não há aviso", + "items": { + "type": "string" + }, + "minItems": 1, + "type": "array" +} - changed
Output schema / properties / provenance / properties / retrieval / descriptionPrevious value: -"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)"New value: +"Diagnóstico de origem desta chamada: 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)" - added
Output schema / properties / provenance / properties / revisionAdded value: +{ + "additionalProperties": false, + "description": "Se o número ainda pode mudar: provisional quando algum ano da resposta ainda tem competências abertas no SIH (o total ainda pode crescer); current nos demais — o DATASUS reedita arquivos de competências passadas", + "properties": { + "note": { + "description": "O específico da fonte: o que revisa, quando, por quê", + "type": [ + "string", + "null" + ] + }, + "status": { + "description": "current = versão vigente, a fonte pode revisá-la; provisional = preliminar, incompleta ou sujeita a mudança (não compare como se fosse fechada); final = não muda mais, declarado pela fonte", + "enum": [ + "current", + "provisional", + "final" + ], + "type": "string" + } + }, + "required": [ + "status", + "note" + ], + "type": "object" +}
- Changed
list_csap_groups6 fields changed- changed
Output schema / properties / provenance / descriptionPrevious value: -"Bloco de proveniência (contrato v1.1): fonte, URL, competência, extração, diagnóstico de origem, citação e licença"New value: +"Bloco de proveniência do portfólio: fonte, URL, competência, extração, diagnóstico de origem, citação e licença; e, só quando há o que dizer, avisos, o que o servidor calculou e se o número ainda pode mudar" - added
Output schema / properties / provenance / properties / derivation_noteAdded value: +{ + "description": "Como o número foi calculado; presente junto com derived", + "type": "string" +} - added
Output schema / properties / provenance / properties / derivedAdded value: +{ + "description": "Presente (true) quando o número foi calculado por este servidor — os cubos SIH são somas das internações dos arquivos do DATASUS", + "type": "boolean" +} - added
Output schema / properties / provenance / properties / noticesAdded value: +{ + "description": "Avisos que acompanham o dado (ex.: cubo atrás do espelho healthbr-data, frescor não verificado). Ausente quando não há aviso", + "items": { + "type": "string" + }, + "minItems": 1, + "type": "array" +} - changed
Output schema / properties / provenance / properties / retrieval / descriptionPrevious value: -"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)"New value: +"Diagnóstico de origem desta chamada: 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)" - added
Output schema / properties / provenance / properties / revisionAdded value: +{ + "additionalProperties": false, + "description": "Se o número ainda pode mudar: provisional quando algum ano da resposta ainda tem competências abertas no SIH (o total ainda pode crescer); current nos demais — o DATASUS reedita arquivos de competências passadas", + "properties": { + "note": { + "description": "O específico da fonte: o que revisa, quando, por quê", + "type": [ + "string", + "null" + ] + }, + "status": { + "description": "current = versão vigente, a fonte pode revisá-la; provisional = preliminar, incompleta ou sujeita a mudança (não compare como se fosse fechada); final = não muda mais, declarado pela fonte", + "enum": [ + "current", + "provisional", + "final" + ], + "type": "string" + } + }, + "required": [ + "status", + "note" + ], + "type": "object" +}
- Changed
rank_csap_groups6 fields changed- changed
Output schema / properties / provenance / items / descriptionPrevious value: -"Bloco de proveniência (contrato v1.1): fonte, URL, competência, extração, diagnóstico de origem, citação e licença"New value: +"Bloco de proveniência do portfólio: fonte, URL, competência, extração, diagnóstico de origem, citação e licença; e, só quando há o que dizer, avisos, o que o servidor calculou e se o número ainda pode mudar" - added
Output schema / properties / provenance / items / properties / derivation_noteAdded value: +{ + "description": "Como o número foi calculado; presente junto com derived", + "type": "string" +} - added
Output schema / properties / provenance / items / properties / derivedAdded value: +{ + "description": "Presente (true) quando o número foi calculado por este servidor — os cubos SIH são somas das internações dos arquivos do DATASUS", + "type": "boolean" +} - added
Output schema / properties / provenance / items / properties / noticesAdded value: +{ + "description": "Avisos que acompanham o dado (ex.: cubo atrás do espelho healthbr-data, frescor não verificado). Ausente quando não há aviso", + "items": { + "type": "string" + }, + "minItems": 1, + "type": "array" +} - changed
Output schema / properties / provenance / items / properties / retrieval / descriptionPrevious value: -"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)"New value: +"Diagnóstico de origem desta chamada: 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)" - added
Output schema / properties / provenance / items / properties / revisionAdded value: +{ + "additionalProperties": false, + "description": "Se o número ainda pode mudar: provisional quando algum ano da resposta ainda tem competências abertas no SIH (o total ainda pode crescer); current nos demais — o DATASUS reedita arquivos de competências passadas", + "properties": { + "note": { + "description": "O específico da fonte: o que revisa, quando, por quê", + "type": [ + "string", + "null" + ] + }, + "status": { + "description": "current = versão vigente, a fonte pode revisá-la; provisional = preliminar, incompleta ou sujeita a mudança (não compare como se fosse fechada); final = não muda mais, declarado pela fonte", + "enum": [ + "current", + "provisional", + "final" + ], + "type": "string" + } + }, + "required": [ + "status", + "note" + ], + "type": "object" +}
5 tool updates
- Changed
get_hospitalization_rates1 field changed- changed
Output schema / properties / data / items / properties / year / descriptionPrevious value: -"Ano (quando agrupado por ano ou mais de um ano)"New value: +"Ano da internação (DT_INTER), quando agrupado por ano ou mais de um ano"
- Changed
get_hospitalization_trends1 field changed- changed
Output schema / properties / series / items / anyOfPrevious value: -[ - { - "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" - } -]New value: +[ + { + "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 da internação (DT_INTER)", + "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": "Ano-mês da INTERNAÇÃO (DT_INTER), AAAA-MM — não a competência de faturamento; só nas internações sem DT_INTER na fonte (1992-01..04, 1993-01) é a competência", + "type": "string" + } + }, + "required": [ + "year_month", + "n", + "deaths" + ], + "type": "object" + } +]
- Changed
get_hospitalizations1 field changed- changed
Output schema / properties / data / items / properties / year / descriptionPrevious value: -"Ano (group_by: year)"New value: +"Ano da internação (DT_INTER) — group_by: year"
- Changed
get_icsap1 field changed- changed
Output schema / properties / data / items / properties / year / descriptionPrevious value: -"Ano (group_by: year)"New value: +"Ano da internação (DT_INTER) — group_by: year"
- Changed
get_icsap_indicators1 field changed- changed
Output schema / properties / data / items / properties / year / descriptionPrevious value: -"Ano (group_by: year)"New value: +"Ano da internação (DT_INTER) — group_by: year"
12 tool updates
- Changed
classify_as_csap1 field changed- added
Output schema / properties / provenance / properties / field_sourcesAdded value: +{ + "description": "Presente só quando a resposta junta partes de origens ou momentos distintos: para cada grupo de campos, a URL, a extração e se veio do cache. Ausente nas respostas de uma origem só", + "items": { + "additionalProperties": false, + "description": "Proveniência de um grupo de campos da resposta: de onde veio e quando foi extraído", + "properties": { + "data_vintage": { + "description": "Vintage/competência da sub-fonte", + "type": [ + "string", + "null" + ] + }, + "dataset_id": { + "description": "Identificador do conjunto da sub-fonte", + "type": [ + "string", + "null" + ] + }, + "fields": { + "description": "Campos do payload atribuídos a esta sub-fonte", + "items": { + "type": "string" + }, + "minItems": 1, + "type": "array" + }, + "retrieved_at": { + "description": "ISO-8601 da extração desta sub-fonte na origem", + "type": [ + "string", + "null" + ] + }, + "served_from_cache": { + "description": "true se esta sub-fonte veio do cache do servidor (retrieved_at é o da extração original); false se foi buscada nesta chamada; null se o servidor não distingue", + "type": [ + "boolean", + "null" + ] + }, + "source_url": { + "description": "URL canônica da sub-fonte que originou estes campos", + "type": "string" + } + }, + "required": [ + "fields", + "source_url", + "dataset_id", + "data_vintage", + "retrieved_at" + ], + "type": "object" + }, + "minItems": 1, + "type": "array" +}
- Changed
compare_icsap_trends1 field changed- added
Output schema / properties / provenance / items / properties / field_sourcesAdded value: +{ + "description": "Presente só quando a resposta junta partes de origens ou momentos distintos: para cada grupo de campos, a URL, a extração e se veio do cache. Ausente nas respostas de uma origem só", + "items": { + "additionalProperties": false, + "description": "Proveniência de um grupo de campos da resposta: de onde veio e quando foi extraído", + "properties": { + "data_vintage": { + "description": "Vintage/competência da sub-fonte", + "type": [ + "string", + "null" + ] + }, + "dataset_id": { + "description": "Identificador do conjunto da sub-fonte", + "type": [ + "string", + "null" + ] + }, + "fields": { + "description": "Campos do payload atribuídos a esta sub-fonte", + "items": { + "type": "string" + }, + "minItems": 1, + "type": "array" + }, + "retrieved_at": { + "description": "ISO-8601 da extração desta sub-fonte na origem", + "type": [ + "string", + "null" + ] + }, + "served_from_cache": { + "description": "true se esta sub-fonte veio do cache do servidor (retrieved_at é o da extração original); false se foi buscada nesta chamada; null se o servidor não distingue", + "type": [ + "boolean", + "null" + ] + }, + "source_url": { + "description": "URL canônica da sub-fonte que originou estes campos", + "type": "string" + } + }, + "required": [ + "fields", + "source_url", + "dataset_id", + "data_vintage", + "retrieved_at" + ], + "type": "object" + }, + "minItems": 1, + "type": "array" +}
- Changed
compare_regions1 field changed- added
Output schema / properties / provenance / properties / field_sourcesAdded value: +{ + "description": "Presente só quando a resposta junta partes de origens ou momentos distintos: para cada grupo de campos, a URL, a extração e se veio do cache. Ausente nas respostas de uma origem só", + "items": { + "additionalProperties": false, + "description": "Proveniência de um grupo de campos da resposta: de onde veio e quando foi extraído", + "properties": { + "data_vintage": { + "description": "Vintage/competência da sub-fonte", + "type": [ + "string", + "null" + ] + }, + "dataset_id": { + "description": "Identificador do conjunto da sub-fonte", + "type": [ + "string", + "null" + ] + }, + "fields": { + "description": "Campos do payload atribuídos a esta sub-fonte", + "items": { + "type": "string" + }, + "minItems": 1, + "type": "array" + }, + "retrieved_at": { + "description": "ISO-8601 da extração desta sub-fonte na origem", + "type": [ + "string", + "null" + ] + }, + "served_from_cache": { + "description": "true se esta sub-fonte veio do cache do servidor (retrieved_at é o da extração original); false se foi buscada nesta chamada; null se o servidor não distingue", + "type": [ + "boolean", + "null" + ] + }, + "source_url": { + "description": "URL canônica da sub-fonte que originou estes campos", + "type": "string" + } + }, + "required": [ + "fields", + "source_url", + "dataset_id", + "data_vintage", + "retrieved_at" + ], + "type": "object" + }, + "minItems": 1, + "type": "array" +}
- Changed
get_available_years1 field changed- added
Output schema / properties / provenance / properties / field_sourcesAdded value: +{ + "description": "Presente só quando a resposta junta partes de origens ou momentos distintos: para cada grupo de campos, a URL, a extração e se veio do cache. Ausente nas respostas de uma origem só", + "items": { + "additionalProperties": false, + "description": "Proveniência de um grupo de campos da resposta: de onde veio e quando foi extraído", + "properties": { + "data_vintage": { + "description": "Vintage/competência da sub-fonte", + "type": [ + "string", + "null" + ] + }, + "dataset_id": { + "description": "Identificador do conjunto da sub-fonte", + "type": [ + "string", + "null" + ] + }, + "fields": { + "description": "Campos do payload atribuídos a esta sub-fonte", + "items": { + "type": "string" + }, + "minItems": 1, + "type": "array" + }, + "retrieved_at": { + "description": "ISO-8601 da extração desta sub-fonte na origem", + "type": [ + "string", + "null" + ] + }, + "served_from_cache": { + "description": "true se esta sub-fonte veio do cache do servidor (retrieved_at é o da extração original); false se foi buscada nesta chamada; null se o servidor não distingue", + "type": [ + "boolean", + "null" + ] + }, + "source_url": { + "description": "URL canônica da sub-fonte que originou estes campos", + "type": "string" + } + }, + "required": [ + "fields", + "source_url", + "dataset_id", + "data_vintage", + "retrieved_at" + ], + "type": "object" + }, + "minItems": 1, + "type": "array" +}
- Changed
get_hospitalization_rates1 field changed- added
Output schema / properties / provenance / items / properties / field_sourcesAdded value: +{ + "description": "Presente só quando a resposta junta partes de origens ou momentos distintos: para cada grupo de campos, a URL, a extração e se veio do cache. Ausente nas respostas de uma origem só", + "items": { + "additionalProperties": false, + "description": "Proveniência de um grupo de campos da resposta: de onde veio e quando foi extraído", + "properties": { + "data_vintage": { + "description": "Vintage/competência da sub-fonte", + "type": [ + "string", + "null" + ] + }, + "dataset_id": { + "description": "Identificador do conjunto da sub-fonte", + "type": [ + "string", + "null" + ] + }, + "fields": { + "description": "Campos do payload atribuídos a esta sub-fonte", + "items": { + "type": "string" + }, + "minItems": 1, + "type": "array" + }, + "retrieved_at": { + "description": "ISO-8601 da extração desta sub-fonte na origem", + "type": [ + "string", + "null" + ] + }, + "served_from_cache": { + "description": "true se esta sub-fonte veio do cache do servidor (retrieved_at é o da extração original); false se foi buscada nesta chamada; null se o servidor não distingue", + "type": [ + "boolean", + "null" + ] + }, + "source_url": { + "description": "URL canônica da sub-fonte que originou estes campos", + "type": "string" + } + }, + "required": [ + "fields", + "source_url", + "dataset_id", + "data_vintage", + "retrieved_at" + ], + "type": "object" + }, + "minItems": 1, + "type": "array" +}
- Changed
get_hospitalization_trends1 field changed- added
Output schema / properties / provenance / properties / field_sourcesAdded value: +{ + "description": "Presente só quando a resposta junta partes de origens ou momentos distintos: para cada grupo de campos, a URL, a extração e se veio do cache. Ausente nas respostas de uma origem só", + "items": { + "additionalProperties": false, + "description": "Proveniência de um grupo de campos da resposta: de onde veio e quando foi extraído", + "properties": { + "data_vintage": { + "description": "Vintage/competência da sub-fonte", + "type": [ + "string", + "null" + ] + }, + "dataset_id": { + "description": "Identificador do conjunto da sub-fonte", + "type": [ + "string", + "null" + ] + }, + "fields": { + "description": "Campos do payload atribuídos a esta sub-fonte", + "items": { + "type": "string" + }, + "minItems": 1, + "type": "array" + }, + "retrieved_at": { + "description": "ISO-8601 da extração desta sub-fonte na origem", + "type": [ + "string", + "null" + ] + }, + "served_from_cache": { + "description": "true se esta sub-fonte veio do cache do servidor (retrieved_at é o da extração original); false se foi buscada nesta chamada; null se o servidor não distingue", + "type": [ + "boolean", + "null" + ] + }, + "source_url": { + "description": "URL canônica da sub-fonte que originou estes campos", + "type": "string" + } + }, + "required": [ + "fields", + "source_url", + "dataset_id", + "data_vintage", + "retrieved_at" + ], + "type": "object" + }, + "minItems": 1, + "type": "array" +}
- Changed
get_hospitalizations1 field changed- added
Output schema / properties / provenance / properties / field_sourcesAdded value: +{ + "description": "Presente só quando a resposta junta partes de origens ou momentos distintos: para cada grupo de campos, a URL, a extração e se veio do cache. Ausente nas respostas de uma origem só", + "items": { + "additionalProperties": false, + "description": "Proveniência de um grupo de campos da resposta: de onde veio e quando foi extraído", + "properties": { + "data_vintage": { + "description": "Vintage/competência da sub-fonte", + "type": [ + "string", + "null" + ] + }, + "dataset_id": { + "description": "Identificador do conjunto da sub-fonte", + "type": [ + "string", + "null" + ] + }, + "fields": { + "description": "Campos do payload atribuídos a esta sub-fonte", + "items": { + "type": "string" + }, + "minItems": 1, + "type": "array" + }, + "retrieved_at": { + "description": "ISO-8601 da extração desta sub-fonte na origem", + "type": [ + "string", + "null" + ] + }, + "served_from_cache": { + "description": "true se esta sub-fonte veio do cache do servidor (retrieved_at é o da extração original); false se foi buscada nesta chamada; null se o servidor não distingue", + "type": [ + "boolean", + "null" + ] + }, + "source_url": { + "description": "URL canônica da sub-fonte que originou estes campos", + "type": "string" + } + }, + "required": [ + "fields", + "source_url", + "dataset_id", + "data_vintage", + "retrieved_at" + ], + "type": "object" + }, + "minItems": 1, + "type": "array" +}
- Changed
get_icsap1 field changed- added
Output schema / properties / provenance / items / properties / field_sourcesAdded value: +{ + "description": "Presente só quando a resposta junta partes de origens ou momentos distintos: para cada grupo de campos, a URL, a extração e se veio do cache. Ausente nas respostas de uma origem só", + "items": { + "additionalProperties": false, + "description": "Proveniência de um grupo de campos da resposta: de onde veio e quando foi extraído", + "properties": { + "data_vintage": { + "description": "Vintage/competência da sub-fonte", + "type": [ + "string", + "null" + ] + }, + "dataset_id": { + "description": "Identificador do conjunto da sub-fonte", + "type": [ + "string", + "null" + ] + }, + "fields": { + "description": "Campos do payload atribuídos a esta sub-fonte", + "items": { + "type": "string" + }, + "minItems": 1, + "type": "array" + }, + "retrieved_at": { + "description": "ISO-8601 da extração desta sub-fonte na origem", + "type": [ + "string", + "null" + ] + }, + "served_from_cache": { + "description": "true se esta sub-fonte veio do cache do servidor (retrieved_at é o da extração original); false se foi buscada nesta chamada; null se o servidor não distingue", + "type": [ + "boolean", + "null" + ] + }, + "source_url": { + "description": "URL canônica da sub-fonte que originou estes campos", + "type": "string" + } + }, + "required": [ + "fields", + "source_url", + "dataset_id", + "data_vintage", + "retrieved_at" + ], + "type": "object" + }, + "minItems": 1, + "type": "array" +}
- Changed
get_icsap_indicators1 field changed- added
Output schema / properties / provenance / items / properties / field_sourcesAdded value: +{ + "description": "Presente só quando a resposta junta partes de origens ou momentos distintos: para cada grupo de campos, a URL, a extração e se veio do cache. Ausente nas respostas de uma origem só", + "items": { + "additionalProperties": false, + "description": "Proveniência de um grupo de campos da resposta: de onde veio e quando foi extraído", + "properties": { + "data_vintage": { + "description": "Vintage/competência da sub-fonte", + "type": [ + "string", + "null" + ] + }, + "dataset_id": { + "description": "Identificador do conjunto da sub-fonte", + "type": [ + "string", + "null" + ] + }, + "fields": { + "description": "Campos do payload atribuídos a esta sub-fonte", + "items": { + "type": "string" + }, + "minItems": 1, + "type": "array" + }, + "retrieved_at": { + "description": "ISO-8601 da extração desta sub-fonte na origem", + "type": [ + "string", + "null" + ] + }, + "served_from_cache": { + "description": "true se esta sub-fonte veio do cache do servidor (retrieved_at é o da extração original); false se foi buscada nesta chamada; null se o servidor não distingue", + "type": [ + "boolean", + "null" + ] + }, + "source_url": { + "description": "URL canônica da sub-fonte que originou estes campos", + "type": "string" + } + }, + "required": [ + "fields", + "source_url", + "dataset_id", + "data_vintage", + "retrieved_at" + ], + "type": "object" + }, + "minItems": 1, + "type": "array" +}
- Changed
list_cid_chapters1 field changed- added
Output schema / properties / provenance / properties / field_sourcesAdded value: +{ + "description": "Presente só quando a resposta junta partes de origens ou momentos distintos: para cada grupo de campos, a URL, a extração e se veio do cache. Ausente nas respostas de uma origem só", + "items": { + "additionalProperties": false, + "description": "Proveniência de um grupo de campos da resposta: de onde veio e quando foi extraído", + "properties": { + "data_vintage": { + "description": "Vintage/competência da sub-fonte", + "type": [ + "string", + "null" + ] + }, + "dataset_id": { + "description": "Identificador do conjunto da sub-fonte", + "type": [ + "string", + "null" + ] + }, + "fields": { + "description": "Campos do payload atribuídos a esta sub-fonte", + "items": { + "type": "string" + }, + "minItems": 1, + "type": "array" + }, + "retrieved_at": { + "description": "ISO-8601 da extração desta sub-fonte na origem", + "type": [ + "string", + "null" + ] + }, + "served_from_cache": { + "description": "true se esta sub-fonte veio do cache do servidor (retrieved_at é o da extração original); false se foi buscada nesta chamada; null se o servidor não distingue", + "type": [ + "boolean", + "null" + ] + }, + "source_url": { + "description": "URL canônica da sub-fonte que originou estes campos", + "type": "string" + } + }, + "required": [ + "fields", + "source_url", + "dataset_id", + "data_vintage", + "retrieved_at" + ], + "type": "object" + }, + "minItems": 1, + "type": "array" +}
- Changed
list_csap_groups1 field changed- added
Output schema / properties / provenance / properties / field_sourcesAdded value: +{ + "description": "Presente só quando a resposta junta partes de origens ou momentos distintos: para cada grupo de campos, a URL, a extração e se veio do cache. Ausente nas respostas de uma origem só", + "items": { + "additionalProperties": false, + "description": "Proveniência de um grupo de campos da resposta: de onde veio e quando foi extraído", + "properties": { + "data_vintage": { + "description": "Vintage/competência da sub-fonte", + "type": [ + "string", + "null" + ] + }, + "dataset_id": { + "description": "Identificador do conjunto da sub-fonte", + "type": [ + "string", + "null" + ] + }, + "fields": { + "description": "Campos do payload atribuídos a esta sub-fonte", + "items": { + "type": "string" + }, + "minItems": 1, + "type": "array" + }, + "retrieved_at": { + "description": "ISO-8601 da extração desta sub-fonte na origem", + "type": [ + "string", + "null" + ] + }, + "served_from_cache": { + "description": "true se esta sub-fonte veio do cache do servidor (retrieved_at é o da extração original); false se foi buscada nesta chamada; null se o servidor não distingue", + "type": [ + "boolean", + "null" + ] + }, + "source_url": { + "description": "URL canônica da sub-fonte que originou estes campos", + "type": "string" + } + }, + "required": [ + "fields", + "source_url", + "dataset_id", + "data_vintage", + "retrieved_at" + ], + "type": "object" + }, + "minItems": 1, + "type": "array" +}
- Changed
rank_csap_groups1 field changed- added
Output schema / properties / provenance / items / properties / field_sourcesAdded value: +{ + "description": "Presente só quando a resposta junta partes de origens ou momentos distintos: para cada grupo de campos, a URL, a extração e se veio do cache. Ausente nas respostas de uma origem só", + "items": { + "additionalProperties": false, + "description": "Proveniência de um grupo de campos da resposta: de onde veio e quando foi extraído", + "properties": { + "data_vintage": { + "description": "Vintage/competência da sub-fonte", + "type": [ + "string", + "null" + ] + }, + "dataset_id": { + "description": "Identificador do conjunto da sub-fonte", + "type": [ + "string", + "null" + ] + }, + "fields": { + "description": "Campos do payload atribuídos a esta sub-fonte", + "items": { + "type": "string" + }, + "minItems": 1, + "type": "array" + }, + "retrieved_at": { + "description": "ISO-8601 da extração desta sub-fonte na origem", + "type": [ + "string", + "null" + ] + }, + "served_from_cache": { + "description": "true se esta sub-fonte veio do cache do servidor (retrieved_at é o da extração original); false se foi buscada nesta chamada; null se o servidor não distingue", + "type": [ + "boolean", + "null" + ] + }, + "source_url": { + "description": "URL canônica da sub-fonte que originou estes campos", + "type": "string" + } + }, + "required": [ + "fields", + "source_url", + "dataset_id", + "data_vintage", + "retrieved_at" + ], + "type": "object" + }, + "minItems": 1, + "type": "array" +}
12 tool updates
- Changed
classify_as_csap1 field changed- changed
Output schema / properties / provenance / properties / retrieved_at / descriptionPrevious value: -"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"New value: +"Instante REAL da extração na origem (ISO-8601) — para os cubos SIH, o download MAIS ANTIGO, do FTP do DATASUS, entre os .dbc que alimentaram a resposta (cópia idêntica ao original naquela data, MD5 registrado no sidecar), nunca o instante da chamada"
- Changed
compare_icsap_trends1 field changed- changed
Output schema / properties / provenance / items / properties / retrieved_at / descriptionPrevious value: -"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"New value: +"Instante REAL da extração na origem (ISO-8601) — para os cubos SIH, o download MAIS ANTIGO, do FTP do DATASUS, entre os .dbc que alimentaram a resposta (cópia idêntica ao original naquela data, MD5 registrado no sidecar), nunca o instante da chamada"
- Changed
compare_regions1 field changed- changed
Output schema / properties / provenance / properties / retrieved_at / descriptionPrevious value: -"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"New value: +"Instante REAL da extração na origem (ISO-8601) — para os cubos SIH, o download MAIS ANTIGO, do FTP do DATASUS, entre os .dbc que alimentaram a resposta (cópia idêntica ao original naquela data, MD5 registrado no sidecar), nunca o instante da chamada"
- Changed
get_available_years1 field changed- changed
Output schema / properties / provenance / properties / retrieved_at / descriptionPrevious value: -"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"New value: +"Instante REAL da extração na origem (ISO-8601) — para os cubos SIH, o download MAIS ANTIGO, do FTP do DATASUS, entre os .dbc que alimentaram a resposta (cópia idêntica ao original naquela data, MD5 registrado no sidecar), nunca o instante da chamada"
- Changed
get_hospitalization_rates1 field changed- changed
Output schema / properties / provenance / items / properties / retrieved_at / descriptionPrevious value: -"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"New value: +"Instante REAL da extração na origem (ISO-8601) — para os cubos SIH, o download MAIS ANTIGO, do FTP do DATASUS, entre os .dbc que alimentaram a resposta (cópia idêntica ao original naquela data, MD5 registrado no sidecar), nunca o instante da chamada"
- Changed
get_hospitalization_trends1 field changed- changed
Output schema / properties / provenance / properties / retrieved_at / descriptionPrevious value: -"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"New value: +"Instante REAL da extração na origem (ISO-8601) — para os cubos SIH, o download MAIS ANTIGO, do FTP do DATASUS, entre os .dbc que alimentaram a resposta (cópia idêntica ao original naquela data, MD5 registrado no sidecar), nunca o instante da chamada"
- Changed
get_hospitalizations1 field changed- changed
Output schema / properties / provenance / properties / retrieved_at / descriptionPrevious value: -"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"New value: +"Instante REAL da extração na origem (ISO-8601) — para os cubos SIH, o download MAIS ANTIGO, do FTP do DATASUS, entre os .dbc que alimentaram a resposta (cópia idêntica ao original naquela data, MD5 registrado no sidecar), nunca o instante da chamada"
- Changed
get_icsap1 field changed- changed
Output schema / properties / provenance / items / properties / retrieved_at / descriptionPrevious value: -"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"New value: +"Instante REAL da extração na origem (ISO-8601) — para os cubos SIH, o download MAIS ANTIGO, do FTP do DATASUS, entre os .dbc que alimentaram a resposta (cópia idêntica ao original naquela data, MD5 registrado no sidecar), nunca o instante da chamada"
- Changed
get_icsap_indicators1 field changed- changed
Output schema / properties / provenance / items / properties / retrieved_at / descriptionPrevious value: -"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"New value: +"Instante REAL da extração na origem (ISO-8601) — para os cubos SIH, o download MAIS ANTIGO, do FTP do DATASUS, entre os .dbc que alimentaram a resposta (cópia idêntica ao original naquela data, MD5 registrado no sidecar), nunca o instante da chamada"
- Changed
list_cid_chapters1 field changed- changed
Output schema / properties / provenance / properties / retrieved_at / descriptionPrevious value: -"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"New value: +"Instante REAL da extração na origem (ISO-8601) — para os cubos SIH, o download MAIS ANTIGO, do FTP do DATASUS, entre os .dbc que alimentaram a resposta (cópia idêntica ao original naquela data, MD5 registrado no sidecar), nunca o instante da chamada"
- Changed
list_csap_groups1 field changed- changed
Output schema / properties / provenance / properties / retrieved_at / descriptionPrevious value: -"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"New value: +"Instante REAL da extração na origem (ISO-8601) — para os cubos SIH, o download MAIS ANTIGO, do FTP do DATASUS, entre os .dbc que alimentaram a resposta (cópia idêntica ao original naquela data, MD5 registrado no sidecar), nunca o instante da chamada"
- Changed
rank_csap_groups1 field changed- changed
Output schema / properties / provenance / items / properties / retrieved_at / descriptionPrevious value: -"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"New value: +"Instante REAL da extração na origem (ISO-8601) — para os cubos SIH, o download MAIS ANTIGO, do FTP do DATASUS, entre os .dbc que alimentaram a resposta (cópia idêntica ao original naquela data, MD5 registrado no sidecar), nunca o instante da chamada"
1 tool update
- Changed
get_hospitalization_rates4 fields changed- added
Output schema / properties / data / items / properties / rateAdded value: +{ + "description": "Internações por `rate_per` habitantes, duas casas", + "type": "number" +} - added
Output schema / properties / data / items / properties / rate_per_100k / deprecatedAdded value: +true - changed
Output schema / properties / data / items / properties / rate_per_100k / descriptionPrevious value: -"Internações por `rate_per` habitantes (o nome do campo é histórico; a base está em `rate_per`)"New value: +"DEPRECADO — use `rate` com `rate_per`. Internações por 100 mil habitantes, qualquer que seja `rate_per`; sai numa versão futura" - changed
Output schema / properties / data / items / requiredPrevious value: -[ - "n_hospitalizations", - "deaths", - "population", - "rate_per_100k", - "rate_per", - "population_source", - "mortality_rate" -]New value: +[ + "n_hospitalizations", + "deaths", + "population", + "rate", + "rate_per", + "rate_per_100k", + "population_source", + "mortality_rate" +]
12 tool updates
- Changed
classify_as_csap4 fields changed- changed
Output schema / properties / provenance / descriptionPrevious value: -"Bloco de proveniência (contrato v1.0): fonte, URL, competência, extração e licença"New value: +"Bloco de proveniência (contrato v1.1): fonte, URL, competência, extração, diagnóstico de origem, citação e licença" - added
Output schema / properties / provenance / properties / retrievalAdded value: +{ + "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" + } + ] +} - changed
Output schema / properties / provenance / properties / retrieved_at / descriptionPrevious value: -"Instante REAL da extração na origem (ISO-8601)"New value: +"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" - changed
Output schema / properties / provenance / requiredPrevious value: -[ - "source", - "source_url", - "data_vintage", - "retrieved_at", - "citation", - "license" -]New value: +[ + "source", + "source_url", + "data_vintage", + "retrieved_at", + "retrieval", + "citation", + "license" +]
- Changed
compare_icsap_trends4 fields changed- changed
Output schema / properties / provenance / items / descriptionPrevious value: -"Bloco de proveniência (contrato v1.0): fonte, URL, competência, extração e licença"New value: +"Bloco de proveniência (contrato v1.1): fonte, URL, competência, extração, diagnóstico de origem, citação e licença" - added
Output schema / properties / provenance / items / properties / retrievalAdded value: +{ + "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" + } + ] +} - changed
Output schema / properties / provenance / items / properties / retrieved_at / descriptionPrevious value: -"Instante REAL da extração na origem (ISO-8601)"New value: +"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" - changed
Output schema / properties / provenance / items / requiredPrevious value: -[ - "source", - "source_url", - "data_vintage", - "retrieved_at", - "citation", - "license" -]New value: +[ + "source", + "source_url", + "data_vintage", + "retrieved_at", + "retrieval", + "citation", + "license" +]
- Changed
compare_regions4 fields changed- changed
Output schema / properties / provenance / descriptionPrevious value: -"Bloco de proveniência (contrato v1.0): fonte, URL, competência, extração e licença"New value: +"Bloco de proveniência (contrato v1.1): fonte, URL, competência, extração, diagnóstico de origem, citação e licença" - added
Output schema / properties / provenance / properties / retrievalAdded value: +{ + "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" + } + ] +} - changed
Output schema / properties / provenance / properties / retrieved_at / descriptionPrevious value: -"Instante REAL da extração na origem (ISO-8601)"New value: +"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" - changed
Output schema / properties / provenance / requiredPrevious value: -[ - "source", - "source_url", - "data_vintage", - "retrieved_at", - "citation", - "license" -]New value: +[ + "source", + "source_url", + "data_vintage", + "retrieved_at", + "retrieval", + "citation", + "license" +]
- Changed
get_available_years4 fields changed- changed
Output schema / properties / provenance / descriptionPrevious value: -"Bloco de proveniência (contrato v1.0): fonte, URL, competência, extração e licença"New value: +"Bloco de proveniência (contrato v1.1): fonte, URL, competência, extração, diagnóstico de origem, citação e licença" - added
Output schema / properties / provenance / properties / retrievalAdded value: +{ + "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" + } + ] +} - changed
Output schema / properties / provenance / properties / retrieved_at / descriptionPrevious value: -"Instante REAL da extração na origem (ISO-8601)"New value: +"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" - changed
Output schema / properties / provenance / requiredPrevious value: -[ - "source", - "source_url", - "data_vintage", - "retrieved_at", - "citation", - "license" -]New value: +[ + "source", + "source_url", + "data_vintage", + "retrieved_at", + "retrieval", + "citation", + "license" +]
- Changed
get_hospitalization_rates4 fields changed- changed
Output schema / properties / provenance / items / descriptionPrevious value: -"Bloco de proveniência (contrato v1.0): fonte, URL, competência, extração e licença"New value: +"Bloco de proveniência (contrato v1.1): fonte, URL, competência, extração, diagnóstico de origem, citação e licença" - added
Output schema / properties / provenance / items / properties / retrievalAdded value: +{ + "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" + } + ] +} - changed
Output schema / properties / provenance / items / properties / retrieved_at / descriptionPrevious value: -"Instante REAL da extração na origem (ISO-8601)"New value: +"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" - changed
Output schema / properties / provenance / items / requiredPrevious value: -[ - "source", - "source_url", - "data_vintage", - "retrieved_at", - "citation", - "license" -]New value: +[ + "source", + "source_url", + "data_vintage", + "retrieved_at", + "retrieval", + "citation", + "license" +]
- Changed
get_hospitalization_trends4 fields changed- changed
Output schema / properties / provenance / descriptionPrevious value: -"Bloco de proveniência (contrato v1.0): fonte, URL, competência, extração e licença"New value: +"Bloco de proveniência (contrato v1.1): fonte, URL, competência, extração, diagnóstico de origem, citação e licença" - added
Output schema / properties / provenance / properties / retrievalAdded value: +{ + "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" + } + ] +} - changed
Output schema / properties / provenance / properties / retrieved_at / descriptionPrevious value: -"Instante REAL da extração na origem (ISO-8601)"New value: +"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" - changed
Output schema / properties / provenance / requiredPrevious value: -[ - "source", - "source_url", - "data_vintage", - "retrieved_at", - "citation", - "license" -]New value: +[ + "source", + "source_url", + "data_vintage", + "retrieved_at", + "retrieval", + "citation", + "license" +]
- Changed
get_hospitalizations4 fields changed- changed
Output schema / properties / provenance / descriptionPrevious value: -"Bloco de proveniência (contrato v1.0): fonte, URL, competência, extração e licença"New value: +"Bloco de proveniência (contrato v1.1): fonte, URL, competência, extração, diagnóstico de origem, citação e licença" - added
Output schema / properties / provenance / properties / retrievalAdded value: +{ + "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" + } + ] +} - changed
Output schema / properties / provenance / properties / retrieved_at / descriptionPrevious value: -"Instante REAL da extração na origem (ISO-8601)"New value: +"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" - changed
Output schema / properties / provenance / requiredPrevious value: -[ - "source", - "source_url", - "data_vintage", - "retrieved_at", - "citation", - "license" -]New value: +[ + "source", + "source_url", + "data_vintage", + "retrieved_at", + "retrieval", + "citation", + "license" +]
- Changed
get_icsap4 fields changed- changed
Output schema / properties / provenance / items / descriptionPrevious value: -"Bloco de proveniência (contrato v1.0): fonte, URL, competência, extração e licença"New value: +"Bloco de proveniência (contrato v1.1): fonte, URL, competência, extração, diagnóstico de origem, citação e licença" - added
Output schema / properties / provenance / items / properties / retrievalAdded value: +{ + "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" + } + ] +} - changed
Output schema / properties / provenance / items / properties / retrieved_at / descriptionPrevious value: -"Instante REAL da extração na origem (ISO-8601)"New value: +"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" - changed
Output schema / properties / provenance / items / requiredPrevious value: -[ - "source", - "source_url", - "data_vintage", - "retrieved_at", - "citation", - "license" -]New value: +[ + "source", + "source_url", + "data_vintage", + "retrieved_at", + "retrieval", + "citation", + "license" +]
- Changed
get_icsap_indicators4 fields changed- changed
Output schema / properties / provenance / items / descriptionPrevious value: -"Bloco de proveniência (contrato v1.0): fonte, URL, competência, extração e licença"New value: +"Bloco de proveniência (contrato v1.1): fonte, URL, competência, extração, diagnóstico de origem, citação e licença" - added
Output schema / properties / provenance / items / properties / retrievalAdded value: +{ + "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" + } + ] +} - changed
Output schema / properties / provenance / items / properties / retrieved_at / descriptionPrevious value: -"Instante REAL da extração na origem (ISO-8601)"New value: +"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" - changed
Output schema / properties / provenance / items / requiredPrevious value: -[ - "source", - "source_url", - "data_vintage", - "retrieved_at", - "citation", - "license" -]New value: +[ + "source", + "source_url", + "data_vintage", + "retrieved_at", + "retrieval", + "citation", + "license" +]
- Changed
list_cid_chapters4 fields changed- changed
Output schema / properties / provenance / descriptionPrevious value: -"Bloco de proveniência (contrato v1.0): fonte, URL, competência, extração e licença"New value: +"Bloco de proveniência (contrato v1.1): fonte, URL, competência, extração, diagnóstico de origem, citação e licença" - added
Output schema / properties / provenance / properties / retrievalAdded value: +{ + "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" + } + ] +} - changed
Output schema / properties / provenance / properties / retrieved_at / descriptionPrevious value: -"Instante REAL da extração na origem (ISO-8601)"New value: +"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" - changed
Output schema / properties / provenance / requiredPrevious value: -[ - "source", - "source_url", - "data_vintage", - "retrieved_at", - "citation", - "license" -]New value: +[ + "source", + "source_url", + "data_vintage", + "retrieved_at", + "retrieval", + "citation", + "license" +]
- Changed
list_csap_groups4 fields changed- changed
Output schema / properties / provenance / descriptionPrevious value: -"Bloco de proveniência (contrato v1.0): fonte, URL, competência, extração e licença"New value: +"Bloco de proveniência (contrato v1.1): fonte, URL, competência, extração, diagnóstico de origem, citação e licença" - added
Output schema / properties / provenance / properties / retrievalAdded value: +{ + "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" + } + ] +} - changed
Output schema / properties / provenance / properties / retrieved_at / descriptionPrevious value: -"Instante REAL da extração na origem (ISO-8601)"New value: +"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" - changed
Output schema / properties / provenance / requiredPrevious value: -[ - "source", - "source_url", - "data_vintage", - "retrieved_at", - "citation", - "license" -]New value: +[ + "source", + "source_url", + "data_vintage", + "retrieved_at", + "retrieval", + "citation", + "license" +]
- Changed
rank_csap_groups4 fields changed- changed
Output schema / properties / provenance / items / descriptionPrevious value: -"Bloco de proveniência (contrato v1.0): fonte, URL, competência, extração e licença"New value: +"Bloco de proveniência (contrato v1.1): fonte, URL, competência, extração, diagnóstico de origem, citação e licença" - added
Output schema / properties / provenance / items / properties / retrievalAdded value: +{ + "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" + } + ] +} - changed
Output schema / properties / provenance / items / properties / retrieved_at / descriptionPrevious value: -"Instante REAL da extração na origem (ISO-8601)"New value: +"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" - changed
Output schema / properties / provenance / items / requiredPrevious value: -[ - "source", - "source_url", - "data_vintage", - "retrieved_at", - "citation", - "license" -]New value: +[ + "source", + "source_url", + "data_vintage", + "retrieved_at", + "retrieval", + "citation", + "license" +]
12 tool updates
- First observed
classify_as_csap - First observed
compare_icsap_trends - First observed
compare_regions - First observed
get_available_years - First observed
get_hospitalization_rates - First observed
get_hospitalization_trends - First observed
get_hospitalizations - First observed
get_icsap - First observed
get_icsap_indicators - First observed
list_cid_chapters - First observed
list_csap_groups - First observed
rank_csap_groups
Related MCP Connectors
HCUP Inpatient Stats — national hospitalization discharges, costs and outcomes by condition and…
Polish ICD-10, ICD-9 PL, ICD-11 PL codes and NFZ JGP hospital grouping from official sources.
Brazil NFS-e and tax reform (IBS/CBS) tables: cTribNac, LC 116, NBS, cClassTrib, CST, ISS rates
County and tract-level health outcomes, behaviors, and preventive services from CDC PLACES
Related MCP Servers
- AlicenseAqualityFmaintenanceMCP server for Brazilian ICD-10 (CID-10) that enables search, lookup, hierarchy navigation, statistics, and validation of disease codes from official DATASUS data.66,691 npm1MIT
- AlicenseCqualityBmaintenanceEnables users to query Brazil's public healthcare data through read-only fixed tools for hospital and outpatient activity, facility capacity, geographic signals, mortality, and reviewed rare-disease billing views. It returns reviewed aggregate views, not patient records, and includes metadata and coverage checks to interpret scope and limitations.71MIT
- AlicenseNot gradedqualityCmaintenanceEnables natural-language querying of Brazilian public health indicators from DataSUS microdata — mortality, dengue, hospitalizations, ICSAP, and births — through 41 tools covering consultation, analysis (peer-stratum comparison, dengue endemic channel, weekly bulletin), reliability warnings, and anomaly detection. It runs locally against the public API with anti-hallucination rules so every figure comes from a tool with its source cited.MIT
- FlicenseNot gradedqualityDmaintenanceA RAG-based MCP server for natural language querying of Brazilian healthcare manuals (SIH/SUS, SIA/SUS) and official ordinances. It provides 16 tools for semantic search, regulatory critique analysis, and retrieving data from SIGTAP and CNES.1-
Glama MCP Gateway
Add one secure layer between your agents and this server.