knitr::opts_chunk$set(
  message = FALSE,
  fig.width = 5,
  collapse = TRUE,
  comment = "  "
)

Este artigo ilustra o uso dos pacotes csapAIH, territorio e Rcoisas para o cálculo de indicadores a partir de Sistemas de Informação em Saúde brasileiros cujos dados são disponibilizadas pelo DATASUS. Carregaremos portanto esses pacotes e também o pacote dplyr para facilitar o manejo dos dados.

library(csapAIH)
# library(Rcoisas)
library(territorio)
library(dplyr)
# library(ggplot2)

Mortalidade

Como exemplo, usaremos os registros da Declaração de Óbito (DO) dos anos 2019 e 2020 do Rio Grande do Sul:

x <- ?Rcoisas::obitosRS2019

x |> str()
library(Rcoisas)
data("obitosRS2019")
str(obitosRS2019)

A seguir são listadas as primeiras 13 variáveis:

capture.output(str(dfbase, no.list = T)) |>
  as.data.frame() |>
  gt::gt_preview(top_n = 13, incl_rownums = FALSE) |>
  gt::tab_options(table.font.size = '75%', container.height = '20%', container.padding.x = 2)

É necessário um dicionário de variáveis para a decodificação do banco de dados. Note-se também que a idade é codificada, com o primeiro dígito do campo definindo a unidade de medida (minutos, horas, dias, anos, anos após a centena). A função process_sim() do pacote microdatasus faz essa decodificação e computa a idade em cada uma das faixas etárias (minutos, etc.), mas devolve essas variáveis em formato de caractere, o que exige computação adicional para análise dos dados. Além disso, o valor mínimo da idade em anos completos (variável IDADEanos) é um, considerando missings os menores de um ano de idade.

O código abaixo retorna a decodificação da variável IDADE nas bases de dados da DO pela função process_sim, a variável IDADEanos transformada em vetor numérico (idadeanos) e a idade em anos completos computada pela função idadeSUS(), do pacote csapAIH:

dfbase %>% 
  select(IDADE) %>% 
  microdatasus::process_sim() %>% 
  mutate(idadeanos = as.numeric(IDADEanos),
         idade= idadeSUS(., "SIM")$idade) %>% 
  summary() 

Usaremos então a função idadeSUS(), que devolve um data.frame com três variáveis: a idade em anos completos (com mínimo de 0), a faixa etária quinquenal e a "faixa etária detalhada" (uma opção de tabulação no TABNET, que não será usada agora). Também há que se decodificar ("manualmente", então) a variável sexo.^[Uma alternativa seria rodar primeiro a função process_sim e depois idadeSUS() sobre o banco com a variável original IDADE.]

dors1920 <- dfbase %>% 
  mutate(sexo = factor(SEXO, levels = 1:2, labels = c("masc", "fem")),
         ano = substr(DTOBITO, 5,8)) %>% 
  bind_cols(idadeSUS(., "SIM")) %>% 
  select(ano, sexo, idade, fxetar5, CODMUNRES, CAUSABAS) 

str(dors1920)
dors19 %>% 
  group_by(CODMUNRES, sexo, fxetar5) %>%  
    count() %>% 
  inner_join(territorio("RS", 2013) %>% 
               rename(CODMUNRES = CO_MUNICIP)) %>% 
  filter(nomemacsaude == "Missioneira")
# popbr2000_2021(2019, uf = "RS")
# RS$nomemacsaude |> levels()

Hospitalizações

Os procedimentos anteriores podem ser realizados sobre as hospitalizações. O formulário de internação hospitalar pelo SUS é chamado Autorização de Internação Hospitalar (AIH) e suas informações são registradas nos "arquivos reduzidos" da AIH, das Bases de Dados do Sistema de Informações Hospitalares do SUS (BD/SIH-SUS). A função fetch_datasus do pacote microdatasus, usada anteriormente, tem argumentos para o download e leitura desses arquivos. Aqui usaremos a função fetchcsap do pacote csapAIH, um atalho de fetch_datasus para ler os registros da AIH e realizar algumas modificações no banco de dados:
- computar a idade em anos completos; - selecionar um conjunto mínimo de variáveis; - classificar a causa de internação (variável DIAGPRINC) segundo a Lista Brasileira de Internações por Condições Sensíveis à Atenção Primária.

csap1920 <- fetchcsap("RS", anoinicio = 2019)#, anofim = 2020, mesfim = 12)
str(csap1920)
csap1920 |>
  desenhaCSAP(y.size = 8, porcentagens = FALSE)


fulvionedel/csapAIH documentation built on March 2, 2025, 1:09 a.m.