Skip to main content
Glama

Tendências comparativas de ICSAP

compare_icsap_trends
Read-onlyIdempotent

Compare ICSAP trends across UFs or CSAP groups. Calculates annual variation, linear trends, and identifies best/worst performances for percentage, count, or rate indicators.

Instructions

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.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
end_yearYesAno final
universeNoUniverso 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.
indicatorNoIndicador: percentage (% ICSAP), count (número), rate_per_10k (taxa)
compare_byNoComparar por UF ou grupo CSAP
start_yearYesAno inicial
compare_valuesNoValores específicos para comparar (UFs ou grupos CSAP)
include_trend_lineNoIncluir análise de tendência linear (default: true)

Output Schema

TableJSON Schema
NameRequiredDescriptionDefault
dataNoSempre vazio: só aparece no caminho de erro-mole do funil
noteNoComo obter o dado (por exemplo, consultar get_available_years)
errorNoMotivo pelo qual não há dados nesta resposta (ano sem dado, cobertura populacional, falha na consulta)
notesNoAvisos que qualificam os números: era CID-9, raça/cor ausente, universo do % ICSAP, denominador populacional, truncamento
periodNo
seriesNoPontos em ordem cronológica
trendsNoTendência por valor comparado; só com `include_trend_line` e ao menos dois anos — ausente quando desligada
summaryNo
indicatorNoIndicador das séries
compare_byNoEixo comparado: uf, csap_group ou total (sem eixo)
provenanceYesUm bloco por procedência que contribuiu com esta resposta (SIH, lista CSAP, csapAIH, população…); licenças nunca se fundem
attributionYesURLs canônicas das fontes desta resposta (lista de atribuição)
published_yearsNoAnos 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_yearsNoCobertura populacional; só no erro-mole de `rate_per_10k` fora do intervalo
available_sih_yearsNoAnos com dados SIH atendíveis por este servidor
years_not_availableNoPresente só quando parte dos anos pedidos não tem dado: os números cobrem apenas os anos atendidos

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed1 schema field changedv1.0.1
    • addedOutput schema / properties / published_years
      Added value: +{
      +  "description": "Anos que o canal de cubos publica — a verdade do canal, distinta do que esta instância tem em disco; só com o cache de cubos ligado",
      +  "items": {
      +    "type": "number"
      +  },
      +  "type": "array"
      +}
  2. Changed1 schema field changedv0.17.0
    • changedOutput schema / (root)
      Previous value: -nullNew value: +{
      +  "additionalProperties": false,
      +  "anyOf": [
      +    {
      +      "required": [
      +        "indicator",
      +        "period",
      +        "compare_by",
      +        "series",
      +        "notes",
      +        "summary"
      +      ]
      +    },
      +    {
      +      "required": [
      +        "error"
      +      ]
      +    }
      +  ],
      +  "description": "Séries anuais do indicador ICSAP por UF ou grupo CSAP, com tendência linear e melhor/pior desempenho; `error` quando o intervalo está fora da cobertura",
      +  "properties": {
      +    "attribution": {
      +      "description": "URLs canônicas das fontes desta resposta (lista de atribuição)",
      +      "items": {
      +        "type": "string"
      +      },
      +      "type": "array"
      +    },
      +    "available_sih_years": {
      +      "description": "Anos com dados SIH atendíveis por este servidor",
      +      "items": {
      +        "type": "number"
      +      },
      +      "type": "array"
      +    },
      +    "compare_by": {
      +      "description": "Eixo comparado: uf, csap_group ou total (sem eixo)",
      +      "type": "string"
      +    },
      +    "data": {
      +      "description": "Sempre vazio: só aparece no caminho de erro-mole do funil",
      +      "items": {},
      +      "type": "array"
      +    },
      +    "error": {
      +      "description": "Motivo pelo qual não há dados nesta resposta (ano sem dado, cobertura populacional, falha na consulta)",
      +      "type": "string"
      +    },
      +    "indicator": {
      +      "description": "Indicador das séries",
      +      "enum": [
      +        "percentage",
      +        "count",
      +        "rate_per_10k"
      +      ]
      +    },
      +    "note": {
      +      "description": "Como obter o dado (por exemplo, consultar get_available_years)",
      +      "type": "string"
      +    },
      +    "notes": {
      +      "description": "Avisos que qualificam os números: era CID-9, raça/cor ausente, universo do % ICSAP, denominador populacional, truncamento",
      +      "items": {
      +        "type": "string"
      +      },
      +      "type": "array"
      +    },
      +    "period": {
      +      "additionalProperties": false,
      +      "properties": {
      +        "end": {
      +          "description": "Ano final pedido",
      +          "type": "number"
      +        },
      +        "start": {
      +          "description": "Ano inicial pedido",
      +          "type": "number"
      +        }
      +      },
      +      "required": [
      +        "start",
      +        "end"
      +      ],
      +      "type": "object"
      +    },
      +    "population_years": {
      +      "additionalProperties": false,
      +      "description": "Cobertura populacional; só no erro-mole de `rate_per_10k` fora do intervalo",
      +      "properties": {
      +        "first_year": {
      +          "description": "Primeiro ano com população",
      +          "type": "number"
      +        },
      +        "last_year": {
      +          "description": "Último ano com população",
      +          "type": "number"
      +        }
      +      },
      +      "required": [
      +        "first_year",
      +        "last_year"
      +      ],
      +      "type": "object"
      +    },
      +    "provenance": {
      +      "description": "Um bloco por procedência que contribuiu com esta resposta (SIH, lista CSAP, csapAIH, população…); licenças nunca se fundem",
      +      "items": {
      +        "additionalProperties": false,
      +        "description": "Bloco de proveniência (contrato v1.0): fonte, URL, competência, extração e licença",
      +        "properties": {
      +          "citation": {
      +            "description": "Citação pronta para uso",
      +            "type": "string"
      +          },
      +          "data_vintage": {
      +            "description": "Competência ou safra do dado segundo a fonte; null quando a fonte não expõe",
      +            "type": [
      +              "string",
      +              "null"
      +            ]
      +          },
      +          "license": {
      +            "description": "Regime legal do dado (id SPDX quando há)",
      +            "type": [
      +              "string",
      +              "null"
      +            ]
      +          },
      +          "retrieved_at": {
      +            "description": "Instante REAL da extração na origem (ISO-8601)",
      +            "type": "string"
      +          },
      +          "source": {
      +            "description": "Fonte oficial do dado",
      +            "type": "string"
      +          },
      +          "source_url": {
      +            "description": "URL canônica que reproduz a consulta ou localiza a fonte",
      +            "type": "string"
      +          }
      +        },
      +        "required": [
      +          "source",
      +          "source_url",
      +          "data_vintage",
      +          "retrieved_at",
      +          "citation",
      +          "license"
      +        ],
      +        "type": "object"
      +      },
      +      "type": "array"
      +    },
      +    "series": {
      +      "description": "Pontos em ordem cronológica",
      +      "items": {
      +        "additionalProperties": {
      +          "description": "Valor do indicador para esta UF, grupo ou `total`",
      +          "type": "number"
      +        },
      +        "description": "Um ponto por ano: `year` mais uma chave por valor comparado (UF, grupo ou `total`) com o indicador",
      +        "properties": {
      +          "year": {
      +            "description": "Ano",
      +            "type": "number"
      +          }
      +        },
      +        "required": [
      +          "year"
      +        ],
      +        "type": "object"
      +      },
      +      "type": "array"
      +    },
      +    "summary": {
      +      "additionalProperties": false,
      +      "properties": {
      +        "best_performer": {
      +          "description": "Valor comparado com a melhor evolução; só com mais de uma tendência",
      +          "type": "string"
      +        },
      +        "note": {
      +          "description": "Como ler o indicador; só para `percentage`",
      +          "type": "string"
      +        },
      +        "worst_performer": {
      +          "description": "Valor comparado com a pior evolução; só com mais de uma tendência",
      +          "type": "string"
      +        }
      +      },
      +      "required": [],
      +      "type": "object"
      +    },
      +    "trends": {
      +      "additionalProperties": {
      +        "additionalProperties": false,
      +        "properties": {
      +          "avg_annual_change": {
      +            "description": "Variação média anual",
      +            "type": "number"
      +          },
      +          "change_pct": {
      +            "description": "Variação relativa entre as pontas, %",
      +            "type": "number"
      +          },
      +          "direction": {
      +            "description": "Sentido da tendência",
      +            "enum": [
      +              "increasing",
      +              "decreasing",
      +              "stable"
      +            ]
      +          },
      +          "end_value": {
      +            "description": "Valor no último ano",
      +            "type": "number"
      +          },
      +          "slope": {
      +            "description": "Inclinação da regressão linear (indicador por ano)",
      +            "type": "number"
      +          },
      +          "start_value": {
      +            "description": "Valor no primeiro ano",
      +            "type": "number"
      +          }
      +        },
      +        "required": [
      +          "slope",
      +          "direction",
      +          "avg_annual_change",
      +          "start_value",
      +          "end_value",
      +          "change_pct"
      +        ],
      +        "type": "object"
      +      },
      +      "description": "Tendência por valor comparado; só com `include_trend_line` e ao menos dois anos — ausente quando desligada",
      +      "type": "object"
      +    },
      +    "years_not_available": {
      +      "additionalProperties": false,
      +      "description": "Presente só quando parte dos anos pedidos não tem dado: os números cobrem apenas os anos atendidos",
      +      "properties": {
      +        "note": {
      +          "description": "Quais anos ficaram fora e quais os números cobrem",
      +          "type": "string"
      +        },
      +        "years": {
      +          "description": "Anos pedidos que não têm dados SIH e ficaram fora do resultado",
      +          "items": {
      +            "type": "number"
      +          },
      +          "type": "array"
      +        }
      +      },
      +      "required": [
      +        "years",
      +        "note"
      +      ],
      +      "type": "object"
      +    }
      +  },
      +  "required": [
      +    "provenance",
      +    "attribution"
      +  ],
      +  "type": "object"
      +}
  3. Changed1 schema field changedv0.15.4
    • addedInput schema / additionalProperties
      Added value: +false
  4. First observedv0.12.1

TDQS

A3.7/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already cover read-only/idempotent; description adds valuable data provenance caveats (derived CID-9 list, uf from file, universe definition) that affect result interpretation. No contradiction with annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is dense with multiple sentences, front-loaded with purpose but long due to caveats. Each sentence adds value, but it could be more concise; still well-structured.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a 7-parameter tool with output schema, the description covers purpose, parameter nuances, data reliability, and references notes. Missing return details are covered by output schema; complete enough for correct invocation.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema covers all parameters; description adds extra constraints like rate_per_10k requiring population years and universe behavior, plus early-year data limitations, enriching parameter meaning beyond schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states a comparative temporal analysis of ICSAP across UFs or CSAP groups, including calculation of trends, annual variation, and best/worst performance. It distinguishes from siblings like get_icsap or get_hospitalization_trends by focusing on ICSAP and comparison, though it doesn't explicitly name alternatives.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides data constraints (e.g., rate_per_10k requires population years, 1992-1997 data caveats) but does not explicitly guide when to choose this tool over compare_regions or get_hospitalization_trends. Usage is implied from the purpose, but no exclusions or alternatives are named.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.