Relatório de Atividades

Author

Rafael Barros e Robson W S Pessoa

Descrição de atividades

Todos os materias desenvolvidos no projeto estão disponíveis no repositório do github pecs_ae_aps.

Nesta primeira etapa do projeto fizemos o levantamento de dados por meio do banco do Cadastro Nacional dos Estabelecimentos de Saúde - CNES.

Os arquivos estão disponíveis em formato .dbc e foram obtidos utizando o FileZilla.

Seleção e pré-tratamento de dados

Nesta etapa, o objetivo foi reunir dados dos profissionais da Atenção Primária de Saúde (APS) para todas as competências do ano de 2022 e de todas as unidades identificadas pelo INE. Esses dados estão disponíveis nos arquivos EP.dbc* e PF.dbc*, e são filtrados para as equipes 70, 73, 74 e 74.

### Fonte de dados 
# ftp://ftp.datasus.gov.br/dissemin/publicos/CNES/200508_/Dados/ST/

### variaveis de delimitacao de filtros e selecoes 

#### definicao do ano da competencia
ano <- 22
#### competencia com formato "yymm"
competencias <- sprintf("22%02d", 1:12)

#### definicao de siglas dos estados brasileiros 
estados <- c("RO","AC","AM","RO","PA","AM","TO","MA","PI","CE","RN","PB","PE","AL",
             "SE","BA","MG","ES","RJ","SP","PR","SC","RS","MS","MT","GO","DF")

#### Lista de bancos  com formato *.dbc 
alldbclist <- list.files(path = "data/.",pattern = "dbc$")
alldbclist <- as.data.frame(alldbclist)
names(alldbclist) <- c("FILENAME")

#### 
for (compt in competencias) {
  for (est in estados) {
    
    #### filtros dos arquivos por 
    epdbclist <- alldbclist %>% 
      mutate(LOGPATTERN=str_detect(FILENAME,pattern = "EP")) %>%       # arquivo
      filter(LOGPATTERN==T) %>%
      mutate(LOGPATTERN=str_detect(FILENAME,pattern = est)) %>%        # estado
      filter(LOGPATTERN==T) %>%
      mutate(LOGPATTERN=str_detect(FILENAME,pattern = compt)) %>%      # competencia
      filter(LOGPATTERN==T) %>%
      select(FILENAME)
    
    
    pfdbclist <- alldbclist %>% 
      mutate(LOGPATTERN=str_detect(FILENAME,pattern = "PF")) %>%
      filter(LOGPATTERN==T) %>%
      mutate(LOGPATTERN=str_detect(FILENAME,pattern = est)) %>%        # estado
      filter(LOGPATTERN==T) %>%
      mutate(LOGPATTERN=str_detect(FILENAME,pattern = compt)) %>%      # competencia
      filter(LOGPATTERN==T) %>%
      select(FILENAME)
    
    
    #### leitura dbc de equipes
    epdbc <- rbindlist(lapply(epdbclist$FILENAME,  
                              function(x) cbind(read.dbc(paste('data/',x,sep ='') 
                              ))))
    
    epdbc %<>% select(CNES,CODUFMUN,IDEQUIPE,TIPO_EQP,COMPETEN)
    
    #### leitura dbc de profissionais
    pfdbc <- rbindlist(lapply(pfdbclist$FILENAME,  
                              function(x) cbind(read.dbc(paste('data/',x,sep ='') 
                              ))))
    
    pfdbc %<>% select(CNES,CBO,COMPETEN,HORA_AMB)
    
    #### back-up arquivos parciais - tempo longo de leituras e filtros - excesso de memoria RAM
    save(list=c("epdbc","pfdbc"),file=paste(est,compt,'.Rdata',sep = ''))
    
  }
}

#### Dataframes NULLs
AUX <- NULL
df <- NULL

#### loop para a juncao dos bancos por competencia e estado 
for (compt in competencias) {
  for (est in estados) {
    
    load(paste('data/',est,compt,'.Rdata',sep=''))
    
    #### equipes aps - niveis para filtro
    equipes_aps <- epdbc %>% 
      filter(TIPO_EQP %in% c(70,73,74,76)) %>%
      pull(unique(CNES))
    
    #### repeticoes de cnes
    equipes_aps_rep <- epdbc %>% 
      filter(TIPO_EQP %in% c(70,73,74,76)) %>%
      group_by(CNES,IDEQUIPE,TIPO_EQP,COMPETEN) %>% 
      mutate(rep = n()) %>%
      distinct()
    
    #### inclusao de informacoes das equipes
    AUX <- pfdbc %>% filter(CNES %in% equipes_aps)
    #### Join por Competencia e CNES
    AUX <- full_join(AUX,equipes_aps_rep)
    
    df <- bind_rows(AUX,df)
    
  }
}

#### back-up arquivos parciais 
save(df,file=paste('data/','equipes_aps',ano,'.Rdata',sep=''))