R/gera-mortal-letal-ras.R

Defines functions gera_mortal_letal_ras

Documented in gera_mortal_letal_ras

#' @title Gera dados descritivos da pandemia por ra
#'
#' @description Gera dados de casos, obitos, letalidade, mortalidade e numero de casos por habitantes por ra do Distrito Federal de acordo com os dados da SSP
#'
#' @param dados um data.frame com dados da SSP
#'
#' @return data.table com dados de casos, obitos, letalidade, mortalidade e numero de casos por habitantes por ra
#'
#' @import data.table

gera_mortal_letal_ras = function(dados){
  # Conformando ao tipo data.table
  dados = transforma_dt(dados)

  # Limpeza dos dados
  ## Definie RA nao informada
  dados[, ra := ifelse(is.na(ra) & uf %in% c("Distrito Federal", "DISTRITO FEDERAL"), "Não informado", ra)]
  ## Define regioes fora do DF
  dados[is.na(ra), local := fcase(!is.na(entorno), "Entorno DF", uf != "Distrito Federal", "Outros Estados", default = NA)]

  # Calcula do DF
  ## Define Casos por RA
  df_casos = dados[!is.na(ra), .(.N), by = ra]

  ## Define Estados de Saude por RA
  df_estado_saude = dcast(dados[!is.na(ra), .(.N), by = .(ra,estado_saude)], ra ~ estado_saude, value.var = "N")

  ## Une Casos aos estados de saude
  df_estado_saude[df_casos, confirmados := N, on = "ra"]
  df_estado_saude[, ra := ifelse(ra == 'Sol Nascente', 'Sol Nascente/Pôr do Sol', ra)]

  ## Estabelece populacoes das RAS
  df_estado_saude[codeplan.boletim2::pop_ra, pop := pop, on = "ra"]
  ## Limpa nomes
  df_estado_saude = janitor::clean_names(df_estado_saude)

  ## Adiciona total
  df_estado_saude = janitor::adorn_totals(df_estado_saude, name = "DF")

  ## Corrige erros pontuais
  df_estado_saude[,`:=`(pop = ifelse(ra == "DF", 2881900, pop),
                        obito = ifelse(ra == "SIA", 0, obito),
                        nao_informado = ifelse(ra == "SIA", 0, nao_informado))]

  ## Calcula taxas
  df_estado_saude[,`:=`(taxa_prev = 100000 * confirmados/pop,
                        taxa_letalidade = obito/confirmados,
                        taxa_mortalidade = 100000 * confirmados/pop,
                        perc_curados = curado/confirmados)]

  # Calcula fora do DF
  ## Define Casos para fora do DF
  outros_casos = dados[is.na(ra), .(.N), by = .(local)]
  ## Define Estados de Saude fora do DF
  outros_saude = dcast(dados[is.na(ra), .(.N), by = .(local, estado_saude)], local ~ estado_saude, value.var = "N")

  ## Une Casos aos estados de saude
  outros_saude[outros_casos, confirmados := N, on = "local"]
  ## Limpa nomes
  outros_saude = janitor::clean_names(outros_saude)

  ## Altera nome para unir tabelas
  setnames(outros_saude, "local", "ra")

  # Somar total
  outros_saude = rbind(df_estado_saude[ra == "DF", .(ra, curado, nao_informado, obito, confirmados)], outros_saude)
  outros_saude[, ra := ifelse(is.na(ra), 'Outros Estados - Não Informado', ra)]

  ## Adiciona total
  outros_saude = janitor::adorn_totals(outros_saude, name = "Total")[ra != "DF",]

  # Une Tabelas
  dados_finais = rbind(df_estado_saude, outros_saude, fill = TRUE)

  #Retorna resultados
  return(dados_finais)
}
mellohenrique/codeplan.boletim2 documentation built on March 20, 2022, 3:15 a.m.