library(tidyverse)
## ── Attaching packages ─────────────────────────────────────── tidyverse 1.3.1 ──
## ✓ ggplot2 3.3.5 ✓ purrr 0.3.4
## ✓ tibble 3.1.6 ✓ dplyr 1.0.8
## ✓ tidyr 1.2.0 ✓ stringr 1.4.0
## ✓ readr 2.1.2 ✓ forcats 0.5.1
## ── Conflicts ────────────────────────────────────────── tidyverse_conflicts() ──
## x dplyr::filter() masks stats::filter()
## x dplyr::lag() masks stats::lag()
library(microdatasus)
O CNES é uma base cadastral onde a cada mês é apresentada uma “fotografia” do sistema de saúde. Deste modo, basta baixar os dados de um ano e mês específicos, a não ser que o intuito seja fazer uma comparação evolutiva.
No exemplo abaixo, vamos baixar os dados de janeiro de 2022 apenas
para o estado do Rio de Janeiro. Para baixar todos os estados, use
uf = "all".
cnes_raw <- fetch_datasus(
year_start = 2022, month_start = 1,
year_end = 2022, month_end = 1,
uf = "RJ",
information_system = "CNES-ST"
)
## Your local Internet connection seems to be ok.
## DataSUS FTP server seems to be up. Starting download...
Vamos ver o resultado. Quantas linhas e colunas temos?
dim(cnes_raw)
## [1] 25452 208
Os dados baixados encontram-se conforme fornecidos pelo DataSUS, sem os ródulos das variáveis categórigas. Podemos atribuir estes rótulos da forma abaixo.
cnes <- process_cnes(data = cnes_raw)
## Warning in if (!(information_system %in% available_information_system))
## stop("Health informaton system unknown."): the condition has length > 1 and only
## the first element will be used
## Warning in if (information_system == "CNES-ST") {: the condition has length > 1
## and only the first element will be used
## Warning in process_cnes(data = cnes_raw): NAs introduced by coercion
## Warning in process_cnes(data = cnes_raw): NAs introduced by coercion
## Warning in process_cnes(data = cnes_raw): NAs introduced by coercion
Agora os dados categóricos estão com os rótulos devitamente atribuídos.
Para termos apenas os estabelecimentos de saúde privados (filantrópicos ou não), podemos fazer o seguinte filtro.
res1 <- cnes %>%
filter(VINC_SUS == "Não")
Neste caso, teremos apenas estabelecimentos de saúde sem vínculos com o SUS. Atentar que alguns estabelecimentos mistos, com leitos SUS e particulares, são excluídos desta seleção.
Notar que temos vários tipos de estabelecimentos nesta condição:
res1 %>%
group_by(TP_UNID) %>%
summarise(freq = n()) %>%
arrange(-freq)
## # A tibble: 26 × 2
## TP_UNID freq
## <chr> <int>
## 1 Consultório isolado 13886
## 2 Clínica / Centro de saúde de especialidade 3631
## 3 Unidade de apoio diagnose e terapia (SADT isolado) 1623
## 4 Policlínica 536
## 5 Farmácia 228
## 6 Hospital geral 142
## 7 Serviço de atenção domiciliar isolado (Home care) 121
## 8 Centro de saúde / Unidade básica 83
## 9 Hospital Especializado 56
## 10 Centro de atenção hemoterapia e/ou hematologica 51
## # … with 16 more rows
Ao fim, podemos selecionar algumas variáveis de interesse, como código da UF, município e nome fantasia.
res2 <- res1 %>%
select(CODUFMUN, FANTASIA)
dim(res2)
## [1] 20573 2