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)
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()
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)
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.