DATASUS - COVID-19 no Brasil - Casos e óbitos por semana epidemiológica nas capitais

COVID-19 no Brasil: Casos por Semana Epidemiológica em Manaus
COVID-19 no Brasil: Casos por Semana Epidemiológica em Manaus

O gráfico acima mostra os casos novos de COVID-19 em Manaus por semana epidemiológica. Como pode ser observado, o número de casos teve um primeiro pico na 22ª semana epidemiológica de 2020 (24/05/2020 a 30/05/2020), diminuindo e aumentando até a última semana epidemiológica de 2020 (53ª). Nas três primeiras semanas epidemiológicas de 2021 aumentou muito, atingindo o valor máximo histórico na 3ª semana epidemiológica de 2021 (17/01/2021 a 23/01/2021).

Por convenção internacional as semanas epidemiológicas são contadas de Domingo a Sábado. A primeira semana do ano é aquela que contém o maior número de dias de Janeiro, e a última a que contém o maior número de dias de Dezembro. A 12ª semana epidemiológica de 2020, início dos óbitos no Brasil, foi de 15/03/2020 a 21/03/2020. A 53ª semana epidemiológica de 2020, última do ano, foi de 27/12/2020 a 02/01/2021. A 17ª semana epidemiológica de 2021, última do gráfico, foi de 25/04/2021 a 01/05/2021.

A primeira troca de Ministros da Saúde, saída de Luiz Henrique Mandetta e entrada de Nelson Teich, ocorreu em 16/4/2020, durante a 16ª semana epidemiológica de 2020. A saída do Ministro Nelson Teich se deu em 15/5/2020, durante a 20ª semana epidemiológica de 2020, quando assumiu a pasta, no início interinamente, Eduardo Pazuello, que foi substituído por Marcelo Queiroga na 12ª semana epidemiológica de 2021 em 23/3/2021. As vacinas do Butantan e da Fiocruz foram aprovadas em 17/01/2021 pela Anvisa, dia em que a enfermeira Mônica Calazans, de 54 anos, foi a primeira pessoa a ser vacinada no Estado de São Paulo.

COVID-19 no Brasil: Óbitos por Semana Epidemiológica em Manaus
COVID-19 no Brasil: Óbitos por Semana Epidemiológica em Manaus

O gráfico acima mostra os óbitos por COVID-19 em Manaus por semana epidemiológica. Como pode ser observado, o número de óbitos teve um primeiro pico na 19ª semana epidemiológica de 2020 (03/05/2020 a 009/05/2020), diminuindo e aumentando até a última semana epidemiológica de 2020 (53ª). Nas quatro primeiras semanas epidemiológicas de 2021 aumentou muito, atingindo o valor máximo histórico na 4ª semana epidemiológica de 2021 (24/01/2021 a 30/01/2021).

Dados

Os dados são baixados do Painel Coronavírus do Ministério da Saúde / DATASUS.

Programa

Abaixo está mostrado o código do programa, escrito em R, que gera os dois gráficos mostrando os casos e óbitos da COVID-19 por região no Brasil nas semanas epidemiológicas. Antes de ser executado as bibliotecas utilizadas precisam ser instaladas.

#
# source('rsus_covid_19_capitais_semana_epi_bar.R')
#
# Programa para gerar dois gráficos para cada capital do Brasil,
# contendo os casos e óbitos por COVID-19 em cada uma dessas capitais
# por semana epidemiológica.
# As imagens dos gráficos são gravadas em disco.
#
# Os dados são baixados do Painel Coronavírus em https://covid.saude.gov.br
#
# Bibliotecas
library(utils)
library(tidyverse)
library(plotly)
library(lubridate)
library(scales)
library(grid)
library(gridExtra)

# Ler os dados baixados do Painel Coronavírus
historico <- read_csv2(
  "~/R/dados/HIST_PAINEL_COVIDBR.csv",
  skip = 1,
  col_names = c(
    "regiao",
    "estado",
    "municipio",
    "coduf",
    "codmun",
    "codRegiaoSaude",
    "nomeRegiaoSaude",
    "data",
    "semanaEpi",
    "populacaoTCU2019",
    "casosAcumulado",
    "casosNovos",
    "obitosAcumulado",
    "obitosNovos",
    "Recuperadosnovos",
    "emAcompanhamentoNovos",
    "interior_metropolitana"
  ),
  col_types = cols(
    regiao = col_character(),
    estado = col_character(),
    municipio = col_character(),
    coduf = col_character(),
    codmun = col_character(),
    codRegiaoSaude = col_character(),
    nomeRegiaoSaude = col_character(),
    data = col_date(format = "%Y-%m-%d"),
    semanaEpi = col_integer(),
    populacaoTCU2019 = col_integer(),
    casosAcumulado = col_integer(),
    casosNovos = col_integer(),
    obitosAcumulado = col_integer(),
    obitosNovos = col_integer(),
    Recuperadosnovos = col_integer(),
    emAcompanhamentoNovos = col_integer(),
    interior_metropolitana = col_integer()
  )
)

# Última data
dataDados <- max(historico$data)

# Capitais
capitais <- read_csv("~/R/dados/estado_capital.csv")

# Permanecer apenas com os dados das capitais
historico <- historico %>% inner_join(capitais)

# Selecionar apenas as colunas necessárias
dados <- select(historico, data, municipio, casosNovos, obitosNovos)

# Semana epidemiológica
dados <-
  dados %>% mutate(semanaEpi = epiweek(data))

# Ano da semana epidemiológica
dados <-
  dados %>% mutate(anoEpi = epiyear(data))

# Concatenar Ano e Semana Epidemiológica
dados <-
  dados %>% mutate(anoSemanaEpi = sprintf("%s-%02.0f", anoEpi, semanaEpi))

# Agrupar por ano e semana epidemiológica nas capitais
casos <-
  dados %>%
  select(anoSemanaEpi, municipio, casosNovos) %>%
  group_by(anoSemanaEpi, municipio) %>%
  summarise_at(vars(casosNovos), list(casosAcumulados = sum))
obitos <-
  dados %>%
  select(anoSemanaEpi, municipio, obitosNovos) %>%
  group_by(anoSemanaEpi, municipio) %>%
  summarise_at(vars(obitosNovos), list(obitosAcumulados = sum))

# Manter os dados das semanas epidemiológicas com casos/óbitos
casos <-
  filter(casos, casosAcumulados > 0)
obitos <-
  filter(obitos, obitosAcumulados > 0)

# capitais do Brasil
capitais <- unique(dados$municipio)

for (Capital in capitais) {
  casos_capital <- casos[casos$municipio == Capital,]

  # Número máximo de casos acumulados numa semana
  max_cases <- max(casos_capital$casosAcumulados)

  plot_cases <-
    ggplot(casos_capital,
           aes(x = anoSemanaEpi, y = casosAcumulados, fill = municipio)) +
    labs(
      title = paste(
        "COVID-19: Casos por Semana Epidemiológica em",
        casos_capital$municipio
      ),
      x = "Semana Epidemiológica",
      y = "Casos",
      caption = paste(
        "Dados baixados do Painel Coronavírus (https://covid.saude.gov.br) em",
        dataDados
      )
    ) +
    scale_fill_manual(values = c("pink"),
                      drop = FALSE) +
    geom_bar(stat = "identity",
             fill = "#5F559BFF") +
    geom_text(
      aes(
        x = anoSemanaEpi,
        y = casosAcumulados + 100,
        angle = 90,
        hjust = "left",
        label = prettyNum(
          casosAcumulados,
          big.mark = ".",
          decimal.mark =
            ","
        ),
        fill = NULL
      ),
      size = 3.6,
    ) +
    annotate(
      geom = "text",
      x = -Inf,
      y = max_cases * 1.20,
      color = "#AD002AFF",
      hjust = "left",
      vjust = "top",
      size = 4.0,
      label = "Mandetta\n⟶"
    ) +
    annotate(
      geom = "text",
      x = "2020-16",
      y = max_cases * 1.20,
      color = "#AD002AFF",
      hjust = "left",
      vjust = "top",
      size = 4.0,
      label = "Teich\n⟶"
    ) +
    annotate(
      geom = "text",
      x = "2020-20",
      y = max_cases * 1.20,
      color = "#AD002AFF",
      hjust = "left",
      vjust = "top",
      size = 4.0,
      label = "Pazuello\n⟶"
    ) +
    annotate(
      geom = "text",
      x = "2021-12",
      y = max_cases * 1.20,
      color = "#AD002AFF",
      hjust = "left",
      vjust = "top",
      size = 4.0,
      label = "Queiroga\n⟶"
    ) +
    theme_minimal() +
    theme(
      legend.title = element_text(size = 14),
      legend.text = element_text(size = 12),
      legend.direction = "horizontal",
      legend.position = "top",
      panel.grid.major = element_line(
        size = 0.5,
        linetype = "solid",
        colour = "lightblue"
      ),
      axis.text.x = element_text(
        size = 11,
        angle = 60,
        hjust = 1
      ),
      axis.text.y = element_text(size = 11),
      axis.title.x = element_text(size = 16),
      axis.title.y = element_text(size = 16),
      plot.title = element_text(size = 20),
      plot.subtitle = element_text(size = 17),
      plot.margin = unit(c(6, 12, 6, 6), "pt") # top, right, bottom, left
    ) +
    scale_x_discrete() +
    ylim(0, max_cases * 1.20)

  # Gravar a imagem do gráfico no disco
  if (Capital == "Manaus") {
    ggsave(
      paste0(
        "~/doctec/static/img/sus/rsus_covid_19_semana_epi_bar_casos_",
        str_replace_all(Capital, " ", "_"),
        ".png"
      ),
      plot_cases,
      device = png(),
      width = 11,
      height = 6.25,
      dpi = 72
    )
    dev.off()
  }


  # Óbitos Novos de COVID-19 por Semana Epidemiológica e Capital

  obitos_capital <- obitos[obitos$municipio == Capital,]

  # Número máximo de casos acumulados numa semana
  max_deaths <- max(obitos_capital$obitosAcumulados)

  plot_deaths <-
    ggplot(obitos_capital,
           aes(x = anoSemanaEpi, y = obitosAcumulados, fill = municipio)) +
    labs(
      title = paste(
        "COVID-19: Óbitos por Semana Epidemiológica em",
        obitos_capital$municipio
      ),
      x = "Semana Epidemiológica",
      y = "Óbitos",
      caption = paste(
        "MS - DATASUS - Dados obtidos de",
        "https://covid.saude.gov.br em",
        dataDados
      )
    ) +
    scale_fill_manual(values = c("pink"),
                      drop = FALSE) +
    geom_bar(stat = "identity",
             fill = "#A20056FF") +
    geom_text(
      aes(
        x = anoSemanaEpi,
        y = obitosAcumulados + 5,
        label = prettyNum(
          obitosAcumulados,
          big.mark = ".",
          decimal.mark = ","
        ),
        angle = 90,
        hjust = "left",
        fill = NULL
      ),
      size = 3.6,
    ) +
    annotate(
      geom = "text",
      x = -Inf,
      y = max_deaths * 1.20,
      color = "#AD002AFF",
      hjust = "left",
      vjust = "top",
      size = 4.0,
      label = "Mandetta\n⟶"
    ) +
    annotate(
      geom = "text",
      x = "2020-16",
      y = max_deaths * 1.20,
      color = "#AD002AFF",
      hjust = "left",
      vjust = "top",
      size = 4.0,
      label = "Teich\n⟶"
    ) +
    annotate(
      geom = "text",
      x = "2020-20",
      y = max_deaths * 1.20,
      color = "#AD002AFF",
      hjust = "left",
      vjust = "top",
      size = 4.0,
      label = "Pazuello\n⟶"
    ) +
    annotate(
      geom = "text",
      x = "2021-12",
      y = max_deaths * 1.20,
      color = "#AD002AFF",
      hjust = "left",
      vjust = "top",
      size = 4.0,
      label = "Queiroga\n⟶"
    ) +
    theme_minimal() +
    theme(
      legend.title = element_text(size = 14),
      legend.text = element_text(size = 12),
      legend.direction = "horizontal",
      legend.position = "top",
      panel.grid.major = element_line(
        size = 0.5,
        linetype = "solid",
        colour = "lightblue"
      ),
      axis.text.x = element_text(
        size = 11,
        angle = 60,
        hjust = 1
      ),
      axis.text.y = element_text(size = 11),
      axis.title.x = element_text(size = 16),
      axis.title.y = element_text(size = 16),
      plot.title = element_text(size = 20),
      plot.subtitle = element_text(size = 17),
      plot.margin = unit(c(6, 12, 6, 6), "pt") # top, right, bottom, left
    ) +
    scale_x_discrete() +
    ylim(0, max_deaths * 1.20)

  # Gravar a imagem do gráfico no disco
  if (Capital == "Manaus") {
    ggsave(
      paste0(
        "~/doctec/static/img/sus/rsus_covid_19_semana_epi_bar_obitos_",
        str_replace_all(Capital, " ", "_"),
        ".png"
      ),
      plot_deaths,
      device = png(),
      width = 11,
      height = 6.25,
      dpi = 72
    )
    dev.off()
  }

}
Referências