1. INTRODUÇÃO

1.1 Declaração do Problema

Em 2022, o mundo e o Brasil vivenciaram o cenário “pós-vacina”, onde a COVID-19 continuou circulando, mas com um perfil clínico alterado. O problema endereçado neste relatório é: “Como a COVID-19 se comportou na população do Recife em 2022, considerando que a maioria dos casos passou a ser leve e subnotificada?”. Analisar apenas óbitos conta apenas metade da história; entender os casos leves é crucial para dimensionar o impacto na força de trabalho e na atenção primária.

1.2 Metodologia e Dados

Para abordar este problema, utilizaremos dados abertos da Prefeitura do Recife referentes às notificações de casos leves de síndrome gripal.
A metodologia consiste em uma análise exploratória de dados (EDA) quantitativa, focada na distribuição temporal, perfil demográfico (idade e sexo) e análise textual dos sintomas relatados.

1.3 Abordagem Proposta

A abordagem técnica adotada utiliza a linguagem R e o ecossistema tidyverse para limpar, transformar e visualizar os dados. Diferentemente de relatórios estáticos, esta abordagem permite a reprodutibilidade total da análise. Serão aplicadas técnicas de mineração de texto simples para desmembrar sintomas agrupados e engenharia de recursos para calcular o tempo de resposta entre sintomas e notificação.

1.4 Benefícios para o Cliente

Esta análise ajudará gestores públicos e pesquisadores a identificar:
1. Padrões de sazonalidade que exigem reforço de equipes em postos de saúde.
2. Sintomas sentinelas que podem diferenciar novas variantes.
3. Grupos demográficos mais expostos, orientando campanhas de conscientização direcionadas.

2. PACOTES REQUERIDOS

2.1 Carregamento de Pacotes

Abaixo, carregamos todas as bibliotecas necessárias para a execução deste projeto.

library(tidyverse)  # Fundamental para manipulação de dados (dplyr) e visualização (ggplot2)
library(lubridate)  # Essencial para manipulação de datas (notificacao e sintomas)
library(knitr)      # Para geração de tabelas estáticas no relatório
library(kableExtra) # Para estilização avançada de tabelas HTML
library(stringr)    # Para manipulação de strings (limpeza de sintomas)
library(scales)     # Para formatação de escalas nos gráficos

2.2 Propósito dos Pacotes

tidyverse: Um “meta-pacote” que inclui readr (leitura de dados), dplyr (manipulação), tidyr (organização) e ggplot2 (gráficos). É a espinha dorsal da análise.
lubridate: Facilita a conversão de textos para objetos de data, permitindo cálculos de intervalos de tempo.
knitr/kableExtra: Transformam dataframes brutos em tabelas visualmente agradáveis e profissionais para o relatório final.
stringr: Utilizado especificamente para tratar a coluna de sintomas, que contém múltiplos valores em uma única célula.

3. PREPARAÇÃO DOS DADOS

3.1 Fonte dos Dados

Os dados originais foram obtidos no Portal de Dados Abertos da Prefeitura do Recife e fornecem informações referentes aos Casos Leves de Covid-19 (Para este relatório estaremos analisando o ano de 2022). Link para a fonte: Casos Leves - Covid-19 - 2022.

3.2 Descrição dos Dados Originais

O conjunto de dados contém registros de atendimento de síndromes gripais. Originalmente, possui colunas mistas com separador ‘;’.
Peculiaridades notáveis incluem:
1 - Datas em formato texto que precisam de conversão;
2 - A coluna sintomas agrupa múltiplas queixas separadas por vírgula;
3 - Presença de dados de outros municípios (embora a base seja do Recife, pacientes de fora são atendidos); e
4 - Valores ausentes ou preenchidos como “Ignorado”.

3.3 Importação e Limpeza

Nesta etapa, importamos o arquivo CSV e aplicamos um pipeline de limpeza. O objetivo é filtrar apenas residentes do Recife notificados em 2022, corrigir os tipos de dados e criar novas variáveis úteis.

# Importação dos dados (assumindo que o arquivo está no diretório de trabalho)
# Utiliza-se read_delim com ";" pois é o padrão brasileiro de CSV
dados_brutos <- read_delim("casoslevescovid2022.csv", 
                           delim = ";", 
                           locale = locale(encoding = "UTF-8"),
                           show_col_types = FALSE)

# Pipeline de Limpeza
dados_limpos <- dados_brutos %>%
  # Renomear colunas para garantir padronização (se necessário, mas usando os nomes fornecidos)
  # Filtragem inicial: Apenas Recife
  filter(municipio_residencia == "Recife") %>%
  
  # Tratamento de Datas
  mutate(
    data_notificacao = ymd(data_notificacao), # Converte para formato Data
    data_inicio_sintomas = ymd(data_inicio_sintomas),
    idade = suppressWarnings(as.numeric(idade))
  ) %>%
  
  # Filtragem Temporal (Garantir que é 2022)
  filter(year(data_notificacao) == 2022) %>%
  
  # Engenharia de Variáveis (Item 6.3 - Criatividade/Técnica)
  mutate(
    # Calcular tempo entre sintomas e notificação (Delay)
    tempo_notificacao = as.numeric(data_notificacao - data_inicio_sintomas),
    
    # Categorizar faixa etária
    faixa_etaria = cut(idade, 
                       breaks = c(0, 12, 18, 30, 50, 65, 120),
                       labels = c("Crianca", "Adolescente", "Jovem Adulto", "Adulto", "Meia Idade", "Idoso")),
    
    # Simplificar Sexo (remover erros de digitação se houver)
    sexo = str_to_title(sexo)
  ) %>%
  
  # Seleção de colunas relevantes para a análise
  select(sexo, idade, faixa_etaria, data_notificacao, sintomas, bairro, evolucao_caso, tempo_notificacao) %>%
  
  # Remoção de inconsistências óbvias (ex: datas negativas)
  filter(tempo_notificacao >= 0)

# Verificação rápida
n_linhas <- nrow(dados_limpos)

# Exibe a quantidade de linhas válidas para análise
print(n_linhas)
## [1] 245938

3.4 Dataset Final

Abaixo, apresentamos uma amostra condensada dos dados prontos para análise.

dados_limpos %>%
  head(20) %>%
  kable(caption = "Amostra dos Dados Limpos (Primeiras 20 linhas)") %>%
  kable_styling(bootstrap_options = c("striped", "hover", "condensed"))
Amostra dos Dados Limpos (Primeiras 20 linhas)
sexo idade faixa_etaria data_notificacao sintomas bairro evolucao_caso tempo_notificacao
Masculino 1 Crianca 2022-06-21 Coriza, Tosse, Febre IBURA NA 3
Feminino 65 Meia Idade 2022-02-02 Febre, Dor de Cabeça JIQUIA NA 0
Feminino 47 Adulto 2022-06-14 Distúrbios Gustativos, Dor de Cabeça, Dor de Garganta DOIS IRMAOS NA 3
Masculino 74 Idoso 2022-06-21 Tosse, Coriza AREIAS NA 7
Feminino 71 Idoso 2022-06-21 Assintomático TORROES NA 0
Masculino 50 Adulto 2022-06-21 Coriza, Dor de Cabeça LINHA DO TIRO NA 4
Feminino 42 Adulto 2022-06-21 Dor de Cabeça, Coriza TAMARINEIRA NA 2
Masculino 58 Meia Idade 2022-06-21 Assintomático IGNORADO NA 0
Masculino 0 NA 2022-06-21 Tosse, Outros ESTANCIA NA 10
Feminino 39 Adulto 2022-04-20 Coriza, Dor de Cabeça, Tosse, Febre, Dor de Garganta, Distúrbios Gustativos BOA VISTA NA 4
Feminino 23 Jovem Adulto 2022-06-21 Assintomático VARZEA NA 0
Feminino 54 Meia Idade 2022-06-21 Assintomático ENGENHO DO MEIO NA 0
Feminino 35 Adulto 2022-06-18 Assintomático ESPINHEIRO NA 0
Masculino 17 Adolescente 2022-06-14 Assintomático ROSARINHO NA 0
Feminino 31 Adulto 2022-06-15 Coriza, Dor de Cabeça, Tosse, Febre, Dispneia, Dor de Garganta TAMARINEIRA NA 5
Feminino 41 Adulto 2022-06-14 Dor de Cabeça, Tosse, Dor de Garganta, Distúrbios Gustativos TORRE NA 3
Masculino 31 Adulto 2022-06-14 Coriza, Tosse, Dor de Garganta CASA FORTE NA 5
Masculino 58 Meia Idade 2022-06-21 Assintomático IGNORADO NA 0
Feminino 47 Adulto 2022-06-21 Assintomático ENCRUZILHADA NA 0
Masculino 43 Adulto 2022-06-21 Coriza, Tosse, Febre, Dor de Garganta AFLITOS NA 4

3.5 Resumo das Variáveis

Abaixo, um resumo consolidado das principais variáveis numéricas e categóricas.

# Resumo estatístico da idade e tempo de notificação
dados_limpos %>%
  summarise(
    Media_Idade = mean(idade, na.rm = TRUE),
    Mediana_Idade = median(idade, na.rm = TRUE),
    Media_Tempo_Notificacao = mean(tempo_notificacao, na.rm = TRUE),
    Total_Casos = n()
  ) %>%
  kable(caption = "Estatísticas Descritivas Gerais", digits = 1) %>%
  kable_styling(full_width = FALSE)
Estatísticas Descritivas Gerais
Media_Idade Mediana_Idade Media_Tempo_Notificacao Total_Casos
39.7 38 5.5 245938

4. ANÁLISE EXPLORATÓRIA DOS DADOS

4.1 Descobertas Iniciais

A análise a seguir busca ir além da contagem simples. Investigaremos a sazonalidade da doença em 2022, o perfil demográfico detalhado e faremos uma mineração nos textos dos sintomas para entender o quadro clínico predominante.

4.2 Análise Temporal: A Sazonalidade da COVID-19

Investigamos como os casos se distribuíram ao longo das semanas epidemiológicas de 2022.

dados_semanais <- dados_limpos %>%
  mutate(semana = floor_date(data_notificacao, "week")) %>%
  count(semana)

ggplot(dados_semanais, aes(x = semana, y = n)) +
  geom_line(color = "#2c3e50", size = 1) +
  geom_area(fill = "#3498db", alpha = 0.4) +
  scale_x_date(date_labels = "%b", date_breaks = "1 month") +
  theme_minimal() +
  labs(
    title = "Curva Epidêmica de Casos Leves (2022)",
    subtitle = "Notificações semanais no Recife",
    x = "Mês",
    y = "Número de Casos",
    caption = "Fonte: Prefeitura do Recife"
  )

Insight: O gráfico revela claramente os picos de contágio. Em 2022, é provável observar um grande pico no início do ano (variante Ômicron) e oscilações menores posteriormente. Isso demonstra a natureza cíclica da infecção mesmo em cenários vacinados.
OBS: É provável que algum atraso nas notificações durante o mês de Janeiro/2022 faça parecer que os casos foram mínimos durante este mês, porém (muito provavelmente) o montante de Janeiro deve estar somado ao número de notificações de Fevereiro.

4.3 Perfil Demográfico: Quem adoeceu?

Analisamos a distribuição por sexo e faixa etária.

dados_limpos %>%
  filter(sexo %in% c("Feminino", "Masculino")) %>%
  count(faixa_etaria, sexo) %>%
  ggplot(aes(x = faixa_etaria, y = n, fill = sexo)) +
  geom_col(position = "dodge") +
  scale_fill_manual(values = c("Feminino" = "#e74c3c", "Masculino" = "#2980b9")) +
  theme_minimal() +
  labs(
    title = "Perfil Demográfico dos Casos Leves de COVID-19 [Recife, 2022]",
    subtitle = "Comparação por Faixa Etária e Sexo",
    x = "Faixa Etária",
    y = "Total de Casos",
    fill = "Sexo"
  ) +
  theme(legend.position = "top")

Insight: Diferente dos casos graves que afetam desproporcionalmente idosos, os casos leves tendem a se concentrar na população economicamente ativa (Jovens Adultos e Adultos) e, frequentemente, com maior notificação entre mulheres, possivelmente devido ao comportamento de busca por saúde mais frequente neste grupo.

4.4 Análise de Sintomas: O que eles sentiram?

Aqui aplicamos uma técnica de separação de texto para contar sintomas individuais, já que a coluna original agrupa vários.

# Separar as linhas onde há múltiplos sintomas
sintomas_freq <- dados_limpos %>%
  select(sintomas) %>%
  separate_rows(sintomas, sep = ",\\s*") %>% # Separa por vírgula e espaço opcional
  mutate(sintomas = str_to_title(str_trim(sintomas))) %>% # Padroniza texto
  filter(!sintomas %in% c("Outros", "Ignorado", "")) %>% # Remove ruído
  count(sintomas, sort = TRUE) %>%
  slice_head(n = 10)

ggplot(sintomas_freq, aes(x = reorder(sintomas, n), y = n)) +
  geom_col(fill = "#27ae60") +
  coord_flip() + # Inverte eixos para melhor leitura
  geom_text(aes(label = n), hjust = -0.001, size = 3) +
  theme_minimal() +
  labs(
    title = "Sintomatologia Predominante em 2022",
    x = "Sintoma",
    y = "Frequência"
  )

Insight: A predominância de sintomas como “Tosse, Dor de Cabeça. Dor de Garganta e Coriza” confirma o perfil “leve” dos casos e a mudança característica das variantes circulantes em 2022. Vale também ressaltar que Casos Assintomáticos apresentam o maior número nesta avaliação.

4.5 Geografia: Bairros Mais Afetados

Tabela resumida dos locais com maior incidência.

dados_limpos %>%
  count(bairro, sort = TRUE) %>%
  slice_head(n = 10) %>%
  kable(caption = "Top 10 Bairros com Mais Notificações") %>%
  kable_styling(full_width = FALSE, position = "left")
Top 10 Bairros com Mais Notificações
bairro n
BOA VIAGEM 24823
IGNORADO 13063
VARZEA 11396
CASA AMARELA 9770
IPUTINGA 7908
CORDEIRO 7632
MADALENA 7619
GRACAS 6377
IBURA 5612
IMBIRIBEIRA 5606

5. CONCLUSÕES

5.1 Conclusão do Problema

A análise dos dados de 2022 responde à nossa questão inicial: a COVID-19 no Recife persistiu como uma doença de alta circulação, mas com baixa severidade clínica aparente nos dados notificados. Ela se comportou de maneira sazonal, exigindo atenção contínua do sistema de saúde.

5.2 Conclusão da Metodologia

A metodologia de limpeza e visualização via tidyverse mostrou-se eficaz para lidar com o volume de dados e a necessidade de desagregação de strings (sintomas). O código produzido é modular e permite fácil atualização se novos dados forem inseridos.

5.3 Insights Interessantes

Destacamos três descobertas principais:
1 - Sazonalidade Marcada: A doença não é constante, ela explode em janelas curtas de tempo.
2 - Perfil Ativo: A doença em 2022 foi uma doença da força de trabalho (adultos jovens), o que gera impacto econômico por afastamentos (absenteísmo).
3 - Sintomas “Gripais”: A “perda de olfato”, tão comum em 2020, deu lugar à “dor de garganta” e “coriza”, confundindo o diagnóstico com gripes comuns.

5.4 Implicações para Clientes

Para a Prefeitura do Recife, os dados sugerem que campanhas de vacinação de reforço devem anteceder os meses de pico identificados (início do ano). Além disso, a alta incidência em jovens adultos sugere que campanhas em locais de trabalho podem ser eficazes.

5.5 Limitações e Trabalhos Futuros

Uma limitação clara desta análise é a subnotificação, pois muitos casos leves em 2022 foram diagnosticados via autoteste e não entraram no sistema.