DATASUS - COVID-19 no Brasil - Casos e óbitos por semana epidemiológica e região

COVID-19 no Brasil: Casos por Semana Epidemiológica e Região
COVID-19 no Brasil: Casos por Semana Epidemiológica e Região

O gráfico acima mostra os casos novos de COVID-19 no Brasil por semana epidemiológica e região. Como pode ser observado, o número de casos aumentou até a 30ª semana epidemiológica (19/07/2020 a 25/07/2020), diminuindo, depois, até a 45ª semana epidemiológica (01/11/2020 a 07/11/2020), quando voltou a aumentar, atingindo o valor máximo histórico na 12ª semana epidemiológica de 2021 (21/03/2021 a 27/03/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. Na 3ª semana epidemiológica de 2021, de 17/01/2021 a 23/01/2021, as vacinas do Butantan e da Fiocruz foram aprovadas pela Anvisa e a enfermeira Mônica Calazans, de 54 anos, foi a primeira pessoa a ser vacinada no Estado de São Paulo.

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.

COVID-19 no Brasil: Casos por Semana Epidemiológica e Região
COVID-19 no Brasil: Casos por Semana Epidemiológica e Região

O gráfico acima mostra os óbitos por COVID-19 no Brasil por semana epidemiológica e região. Como pode ser observado, o número de óbitos aumentou até atingir um valor máximo na 30ª semana epidemiológica de 2020 (19/07/2020 a 25/07/2020), diminuindo, depois, até a 45ª semana epidemiológica de 2020 (01/11/2020 a 07/11/2020), quando voltou a aumentar, atingindo o valor máximo histórico na 14ª semana epidemiológica de 2021 (04/04/2021 a 10/04/2021).

Casos por Semana Epidemiológica nas Regiões do Brasil
Semana Centro-Oeste Nordeste Norte Sudeste Sul Total
2020-09 0 0 0 2 0 2
2020-10 1 2 0 14 0 17
2020-11 8 4 0 74 16 102
2020-12 129 162 26 552 138 1.007
2020-13 222 455 158 1.580 360 2.775
2020-14 315 1.019 343 4.073 625 6.375
2020-15 334 2.240 1.136 5.830 909 10.449
2020-16 463 4.625 1.753 8.341 690 15.872
2020-17 511 7.786 3.464 9.442 707 21.910
2020-18 1.005 12.193 5.894 16.783 2.012 37.887
2020-19 1.505 20.870 12.791 22.184 2.193 59.543
2020-20 2.646 28.713 17.901 24.978 2.965 77.203
2020-21 3.699 41.732 25.904 37.494 5.427 114.256
2020-22 6.000 51.415 35.894 51.282 6.451 151.042
2020-23 10.475 64.717 35.438 56.342 7.434 174.406
2020-24 11.345 64.635 35.173 59.286 7.229 177.668
2020-25 22.412 73.370 33.937 74.594 12.752 217.065
2020-26 24.428 77.138 41.652 84.151 18.719 246.088
2020-27 28.764 89.015 35.316 84.749 25.493 263.337
2020-28 30.542 81.991 32.027 90.863 27.423 262.846
2020-29 25.867 70.946 31.160 75.649 31.388 235.010
2020-30 42.267 90.315 33.756 114.202 39.113 319.653
2020-31 43.000 88.030 28.205 110.865 43.264 313.364
2020-32 43.950 77.718 32.138 108.794 41.935 304.535
2020-33 45.367 69.385 29.659 116.299 43.974 304.684
2020-34 40.228 59.810 30.345 98.405 36.478 265.266
2020-35 42.344 60.361 28.853 90.141 42.092 263.791
2020-36 39.099 52.456 25.672 85.913 73.707 276.847
2020-37 34.616 37.155 20.041 68.128 32.747 192.687
2020-38 40.118 41.261 20.893 73.653 36.628 212.553
2020-39 34.148 36.106 20.190 70.955 28.352 189.751
2020-40 32.121 33.594 20.756 68.657 33.714 188.842
2020-41 25.920 45.636 14.122 63.530 26.596 175.804
2020-42 19.362 32.484 12.895 52.314 24.670 141.725
2020-43 21.509 33.010 17.460 54.619 29.675 156.273
2020-44 19.218 28.444 17.140 56.046 34.122 154.970
2020-45 13.699 26.239 13.451 30.317 34.250 117.956
2020-46 18.408 32.222 16.354 73.027 55.387 195.398
2020-47 16.123 35.044 15.910 71.604 65.146 203.827
2020-48 19.821 48.218 18.465 74.692 76.290 237.486
2020-49 23.418 52.627 19.333 101.924 89.603 286.905
2020-50 24.663 67.908 18.577 106.383 85.419 302.950
2020-51 25.495 64.305 21.578 110.461 111.189 333.028
2020-52 20.229 48.428 17.035 94.931 72.028 252.651
2020-53 21.573 51.170 19.144 98.963 59.749 250.599
2021-01 28.673 55.085 28.675 147.274 99.886 359.593
2021-02 32.740 66.724 40.506 161.637 77.454 379.061
2021-03 31.114 71.129 44.160 154.066 60.726 361.195
2021-04 33.042 69.642 44.719 150.689 62.629 360.721
2021-05 27.200 63.544 39.549 135.053 55.474 320.820
2021-06 26.554 64.980 35.527 127.859 57.039 311.959
2021-07 27.440 84.267 32.050 116.707 68.930 329.394
2021-08 36.986 81.409 36.601 123.134 99.954 378.084
2021-09 42.468 90.607 35.951 131.017 121.561 421.604
2021-10 48.914 100.858 38.871 158.674 153.405 500.722
2021-11 52.210 104.664 46.086 189.715 118.226 510.901
2021-12 58.307 107.619 46.070 216.211 111.696 539.903
2021-13 46.712 100.107 36.613 203.525 76.278 463.235
2021-14 50.272 110.032 38.517 218.642 73.946 491.409
2021-15 45.241 108.150 35.867 191.186 74.641 455.085
2021-16 38.417 104.626 29.131 168.884 67.066 408.124
2021-17 38.798 106.521 27.589 170.556 74.296 417.760
2021-18 36.169 107.185 27.273 172.553 76.724 419.904
2021-19 35.925 121.374 28.298 177.620 77.438 440.655
2021-20 43.975 117.865 27.423 183.042 88.600 460.905
2021-21 42.633 127.517 24.331 156.908 72.772 424.161
2021-22 43.647 111.866 23.062 186.103 71.147 435.825
2021-23 46.659 114.240 28.316 186.968 91.210 467.393
2021-24 44.042 124.870 26.369 213.656 99.995 508.932
2021-25 39.990 131.426 22.715 191.238 117.775 503.144
2021-26 30.192 78.175 19.751 153.348 73.665 355.131
2021-27 32.009 73.274 17.975 142.468 61.252 326.978
2021-28 31.126 53.482 15.503 120.684 52.650 273.445
2021-29 32.844 43.520 13.171 130.481 108.070 328.086
2021-30 34.326 36.718 12.944 116.231 47.102 247.321
Total 2.035.992 4.636.430 1.785.552 7.599.215 3.860.666 19.917.855
Óbitos por Semana Epidemiológica nas Regiões do Brasil
Semana Centro-Oeste Nordeste Norte Sudeste Sul Total
2020-12 0 0 0 18 0 18
2020-13 1 10 1 79 5 96
2020-14 10 49 15 232 12 318
2020-15 18 160 57 412 45 692
2020-16 23 314 143 704 39 1.223
2020-17 15 469 199 942 44 1.669
2020-18 15 818 456 1.360 59 2.708
2020-19 31 1.161 845 1.804 62 3.903
2020-20 54 1.540 1.170 2.172 70 5.006
2020-21 77 1.994 1.355 2.861 93 6.380
2020-22 116 2.133 1.395 3.071 106 6.821
2020-23 137 2.456 1.141 3.216 146 7.096
2020-24 224 2.544 1.076 2.778 168 6.790
2020-25 356 2.265 787 3.602 246 7.256
2020-26 484 2.411 671 3.190 338 7.094
2020-27 590 2.399 635 3.143 428 7.195
2020-28 746 2.310 507 3.058 583 7.204
2020-29 778 2.161 519 3.090 755 7.303
2020-30 836 1.983 587 3.383 888 7.677
2020-31 903 1.762 356 3.104 989 7.114
2020-32 859 1.649 411 3.036 959 6.914
2020-33 888 1.520 344 2.959 1.044 6.755
2020-34 1.041 1.449 375 3.198 955 7.018
2020-35 854 1.273 335 2.947 803 6.212
2020-36 940 1.038 519 2.430 814 5.741
2020-37 788 954 260 2.301 704 5.007
2020-38 775 905 363 2.535 744 5.322
2020-39 717 926 279 2.356 596 4.874
2020-40 650 926 341 2.045 619 4.581
2020-41 652 675 212 2.188 484 4.211
2020-42 479 759 201 1.607 431 3.477
2020-43 405 538 229 1.588 468 3.228
2020-44 364 626 189 1.372 430 2.981
2020-45 280 550 164 964 427 2.385
2020-46 410 530 198 1.590 661 3.389
2020-47 314 519 183 1.738 577 3.331
2020-48 262 570 228 1.728 784 3.572
2020-49 298 626 218 1.934 991 4.067
2020-50 310 710 212 2.158 1.105 4.495
2020-51 394 803 267 2.430 1.339 5.233
2020-52 452 707 275 1.901 1.104 4.439
2020-53 362 734 392 2.328 1.114 4.930
2021-01 527 881 611 3.350 1.537 6.906
2021-02 425 865 739 3.586 1.050 6.665
2021-03 562 886 1.213 3.553 935 7.149
2021-04 544 877 1.347 3.482 1.250 7.500
2021-05 532 962 1.292 3.411 870 7.067
2021-06 611 1.025 1.421 3.535 928 7.520
2021-07 635 1.290 1.218 3.299 1.003 7.445
2021-08 590 1.601 1.041 3.522 1.490 8.244
2021-09 814 2.098 1.141 3.735 2.316 10.104
2021-10 1.289 2.439 1.209 4.456 3.384 12.777
2021-11 1.675 2.936 1.287 5.619 4.133 15.650
2021-12 1.945 3.241 1.227 7.287 4.098 17.798
2021-13 2.209 3.393 1.217 9.165 3.659 19.643
2021-14 2.392 3.719 1.185 9.904 3.941 21.141
2021-15 2.197 3.366 1.314 10.331 3.136 20.344
2021-16 1.913 3.092 1.321 8.729 2.759 17.814
2021-17 1.512 3.138 1.162 8.616 2.517 16.945
2021-18 1.323 2.714 862 7.504 2.476 14.879
2021-19 1.182 2.724 776 6.771 1.946 13.399
2021-20 1.098 2.784 702 6.897 2.012 13.493
2021-21 1.168 2.750 607 6.344 1.980 12.849
2021-22 1.171 2.582 540 5.475 1.706 11.474
2021-23 1.279 2.888 601 6.692 2.281 13.741
2021-24 1.227 2.812 591 6.902 2.996 14.528
2021-25 1.146 2.268 489 6.476 1.556 11.935
2021-26 1.000 1.907 456 5.679 1.810 10.852
2021-27 806 1.684 392 4.527 1.897 9.306
2021-28 721 1.334 337 4.027 1.954 8.373
2021-29 799 1.194 338 4.626 1.225 8.182
2021-30 671 947 270 3.563 1.471 6.922
Total 51.871 112.323 45.016 260.615 86.545 556.370
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_semana_epi_bar.R')
#
# Programa para gerar dois gráficos mostrando os casos e óbitos por
# semana epidemiológica e região.
# 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(tidyverse)
library(lubridate)
library(ggsci)
library(knitr)

# Ler os dados baixados do Painel Coronavírus
dados <- 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()
  )
)

# Permanecer apenas com os dados dos estados
dados <- filter(dados,!is.na(estado), is.na(codmun))

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

# Data dos dados
dataDados = toString(max(dados$data))

# 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
casos <-
  dados %>%
  select(anoSemanaEpi, regiao, casosNovos) %>%
  group_by(anoSemanaEpi, regiao) %>%
  summarise_at(vars(casosNovos), list(casosAcumulados = sum))
obitos <-
  dados %>%
  select(anoSemanaEpi, regiao, obitosNovos) %>%
  group_by(anoSemanaEpi, regiao) %>%
  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)

# Somatório dos casos e óbitos por semana epidemiológica
br_casos <-
  aggregate(casos[, 3],
            by = list(anoSemanaEpi = casos$anoSemanaEpi),
            FUN = sum)
br_obitos <-
  aggregate(obitos[, 3],
            by = list(anoSemanaEpi = obitos$anoSemanaEpi),
            FUN = sum)

# Número máximo de casos acumulados numa semana
max_cases <- max(c(br_casos$casosAcumulados * 1.15, 8e5))

# Número máximo de óbitos acumulados numa semana
max_deaths <- max(c(br_obitos$obitosAcumulados * 1.15, 2.5e4))

# Casos Novos de COVID-19 por Semana Epidemiológica e Região
plot_cases <-
  ggplot(casos, aes(x = anoSemanaEpi, y = casosAcumulados, fill = regiao)) +
  labs(
    title = "COVID-19 no Brasil: Casos por Semana Epidemiológica e Região",
    x = "Semana Epidemiológica",
    y = "Casos",
    caption = paste(
      "Dados baixados do Painel Coronavírus (https://covid.saude.gov.br) em",
      dataDados
    )
  ) +
  geom_bar(position = "stack",
           stat = "identity") +
  geom_text(
    aes(
      x = anoSemanaEpi,
      y = casosAcumulados + 1000,
      angle = 90,
      hjust = "left",
      label = prettyNum(
        casosAcumulados,
        big.mark = ".",
        decimal.mark =
          ","
      ),
      fill = NULL
    ),
    size = 3.6,
    data = br_casos
  ) +
  annotate(
    geom = "text",
    x = -Inf,
    y = 8e5,
    color = "#AD002AFF",
    hjust = "left",
    vjust = "top",
    size = 4.0,
    label = "Mandetta\n⟶"
  ) +
  annotate(
    geom = "text",
    x = "2020-16",
    y = 8e5,
    color = "#AD002AFF",
    hjust = "left",
    vjust = "top",
    size = 4.0,
    label = "Teich\n⟶"
  ) +
  annotate(
    geom = "text",
    x = "2020-20",
    y = 8e5,
    color = "#AD002AFF",
    hjust = "left",
    vjust = "top",
    size = 4.0,
    label = "Pazuello\n⟶"
  ) +
  annotate(
    geom = "text",
    x = "2021-12",
    y = 8e5,
    color = "#AD002AFF",
    hjust = "left",
    vjust = "top",
    size = 4.0,
    label = "Queiroga\n⟶"
  ) +
  guides(fill = guide_legend(title = "Região")) +
  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 = 18),
    plot.margin = unit(c(6, 12, 6, 6), "pt") #top, right, bottom, left
  ) +
  scale_x_discrete() +
  ylim(0, max_cases) +
  scale_fill_npg()

# Óbitos por COVID-19 por Semana Epidemiológica e Região
plot_deaths <-
  ggplot(obitos, aes(x = anoSemanaEpi, y = obitosAcumulados, fill = regiao)) +
  labs(
    title = "COVID-19 no Brasil: Óbitos por Semana Epidemiológica e Região",
    x = "Semana Epidemiológica",
    y = "Óbitos",
    caption = paste(
      "Dados baixados do Painel Coronavírus (https://covid.saude.gov.br) em",
      dataDados
    )
  ) +
  geom_bar(position = "stack",
           stat = "identity") +
  geom_text(
    aes(
      x = anoSemanaEpi,
      y = obitosAcumulados + 50,
      angle = 90,
      hjust = "left",
      label = prettyNum(
        obitosAcumulados,
        big.mark = ".",
        decimal.mark =
          ","
      ),
      fill = NULL
    ),
    size = 3.6,
    data = br_obitos
  ) +
  annotate(
    geom = "text",
    x = -Inf,
    y = 2.5e4,
    color = "#AD002AFF",
    hjust = "left",
    vjust = "top",
    size = 4.0,
    label = "Mandetta\n⟶"
  ) +
  annotate(
    geom = "text",
    x = "2020-16",
    y = 2.5e4,
    color = "#AD002AFF",
    hjust = "left",
    vjust = "top",
    size = 4.0,
    label = "Teich\n⟶"
  ) +
  annotate(
    geom = "text",
    x = "2020-20",
    y = 2.5e4,
    color = "#AD002AFF",
    hjust = "left",
    vjust = "top",
    size = 4.0,
    label = "Pazuello\n⟶"
  ) +
  annotate(
    geom = "text",
    x = "2021-12",
    y = 2.5e4,
    color = "#AD002AFF",
    hjust = "left",
    vjust = "top",
    size = 4.0,
    label = "Queiroga\n⟶"
  ) +
  guides(fill = guide_legend(title = "Região")) +
  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 = "pink"
    ),
    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 = 18),
    plot.margin = unit(c(6, 12, 6, 6), "pt") #top, right, bottom, left
  ) +
  scale_x_discrete() +
  ylim(0, max_deaths) +
  scale_fill_npg()

# Gravar as imagens dos gráficos no disco (~16:9)
ggsave(
  "~/doctec/static/img/sus/rsus_covid_19_semana_epi_bar_cases.png",
  plot_cases,
  device = png(),
  width = 12.5,
  height = 6.25,
  dpi = 72
)
ggsave(
  "~/doctec/static/img/sus/rsus_covid_19_semana_epi_bar_deaths.png",
  plot_deaths,
  device = png(),
  width = 12.5,
  height = 6.25,
  dpi = 72
)

dev.off()
dev.off()

# Tabela de casos

tblCasos <- pivot_wider(casos,
                        names_from = regiao,
                        values_from = casosAcumulados)

tblCasos <- arrange(tblCasos, anoSemanaEpi)

tblCasos <- data.frame(replace(tblCasos, is.na(tblCasos), 0))

tblCasos$Total <-
  tblCasos$Centro.Oeste + tblCasos$Nordeste + tblCasos$Norte + tblCasos$Sudeste + tblCasos$Sul

totCasos <- data.frame(Semana = "Total", t(colSums(tblCasos[,-1])))

colnames(tblCasos) <- names(totCasos)

tblCasos <- rbind(tblCasos, totCasos)

tblCasos <-
  select(tblCasos,
         Semana,
         Centro.Oeste,
         Nordeste,
         Norte,
         Sudeste,
         Sul,
         Total)

knitr::opts_chunk$set(results = 'asis')
kable(
  tblCasos,
  caption = "Casos por Mês nas Regiões do Brasil",
  col.names = c(
    'Semana',
    'Centro-Oeste',
    'Nordeste',
    'Norte',
    'Sudeste',
    'Sul',
    'Total'
  ),
  align = "crrrrrr",
  format.args = list(
    big.mark = ".",
    decimal.mark = ",",
    scientific = FALSE
  )
)

# Tabela de óbitos

tblObitos <- pivot_wider(obitos,
                         names_from = regiao,
                         values_from = obitosAcumulados)

tblObitos <- data.frame(arrange(tblObitos, anoSemanaEpi))

tblObitos <- data.frame(replace(tblObitos, is.na(tblObitos), 0))

tblObitos$Total <-
  tblObitos$Centro.Oeste + tblObitos$Nordeste + tblObitos$Norte + tblObitos$Sudeste + tblObitos$Sul

totObitos <-
  data.frame(Semana = "Total", t(colSums(tblObitos[,-1])))

colnames(tblObitos) <- names(totObitos)

tblObitos <- rbind(tblObitos, totObitos)

tblObitos <-
  select(tblObitos,
         Semana,
         Centro.Oeste,
         Nordeste,
         Norte,
         Sudeste,
         Sul,
         Total)

# {r echo = FALSE, results = 'asis'}
knitr::opts_chunk$set(results = 'asis')
kable(
  tblObitos,
  caption = "Óbitos por Mês nas Regiões do Brasil",
  col.names = c(
    'Semana',
    'Centro-Oeste',
    'Nordeste',
    'Norte',
    'Sudeste',
    'Sul',
    'Total'
  ),
  align = "crrrrrr",
  format.args = list(
    big.mark = ".",
    decimal.mark = ",",
    scientific = FALSE
  )
)
Referências