Pacotes

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)

Download dos dados

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.

Estabelecimentos particulares

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

Seleção de variáveis

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