Este projeto oferece ferramentas para processamento, limpeza e análise de dados de Síndrome Respiratória Aguda Grave (SRAG) do sistema SIVEP-Gripe do Ministério da Saúde do Brasil.
Este projeto tem como objetivo analisar os dados epidemiológicos relacionados à Síndrome Respiratória Aguda Grave (SRAG) no Brasil, utilizando informações públicas provenientes das notificações realizadas por unidades de saúde. Os dados analisados abrangem características demográficas, clínicas e temporais dos pacientes, permitindo a construção de indicadores que subsidiem estratégias de vigilância e planejamento em saúde pública.
É importante destacar que a qualidade dos resultados obtidos depende diretamente da correta inserção das informações no sistema de notificação. Assim, eventuais inconsistências ou lacunas nos registros podem impactar a interpretação dos achados e a formulação de ações baseadas nos dados. Por isso, na análise de Internações e Perfil Vacinal foram excluídos casos com informações faltantes ou dados discrepantes.
O ProjetoSRAG surgiu da necessidade de unificar, padronizar e enriquecer os dados de vigilância epidemiológica de SRAG (Síndrome Respiratória Aguda Grave) provenientes do SIVEP-Gripe. O objetivo principal é transformar dados brutos com códigos numéricos em informações significativas, seguindo rigorosamente o dicionário de dados oficial.
- Unificação de Bases: Combina dados de múltiplos anos (2021-2024) em um único arquivo
- Limpeza e Padronização: Remove duplicatas, valores inválidos e padroniza formatos
- Interpretação Semântica: Converte códigos numéricos em descrições textuais conforme o dicionário oficial
- Cálculos Derivados: Gera campos úteis como idade em anos, tempo de internação e tempo em UTI
- Tratamento Robusto: Lida com diferentes formatos de arquivo e codificações com múltiplas estratégias de contingência
- Filtragem Avançada: Remove registros com dados inconsistentes (como tempo de UTI irrealmente alto)
-
unificacao.py
- Unifica múltiplos arquivos CSV de diferentes anos em uma única base
- Implementa estratégias robustas para lidar com diferentes formatos e codificações
- Realiza validações básicas nos dados durante a unificação
-
processar_srag.py
- Processamento completo dos dados SRAG conforme o dicionário SIVEP-Gripe
- Realiza mapeamento de códigos para descrições em todos os campos categóricos
- Converte datas e calcula campos derivados importantes
- Remove colunas vazias e padroniza formatos
-
filtrar_dados_srag.py
- Remove registros com TEMPO_UTI > 160 dias (possíveis erros de digitação)
- Exclui registros onde o campo EVOLUCAO está nulo
- Gera relatórios detalhados sobre os registros filtrados
-
formatar_dicionario.py e analisar_dicionario_formatado.py
- Ferramentas auxiliares para trabalhar com o dicionário de dados oficial
- Corrigem quebras de linha indevidas e melhoram a legibilidade
- Analisam a consistência do dicionário com o código de processamento
- DICIONARIO.txt
- Documento oficial do Ministério da Saúde com a descrição detalhada de todos os campos
- Utilizado como referência para o mapeamento de códigos para descrições
O dashboard analisado apresenta um panorama detalhado sobre os casos de Síndrome Respiratória Aguda Grave (SRAG) no Brasil, com foco em internações hospitalares, suporte clínico e adesão à vacinação contra COVID-19. A análise dos dados evidencia padrões epidemiológicos, desigualdades no acesso à saúde e oportunidades para intervenções estratégicas. A seguir, são apresentados os principais achados e suas implicações.
Os dados indicam que a SRAG continua a ser um problema de saúde pública significativo no Brasil. Com um total de 2.171.580 pacientes registrados, 2.138.995 (98,5%) necessitaram de internação hospitalar. Esse número reflete a gravidade da condição e a pressão exercida sobre o sistema de saúde, especialmente em períodos de maior circulação viral.
A alta taxa de internações sugere que a SRAG está frequentemente associada a complicações graves que requerem cuidados hospitalares. Isso reforça a importância de estratégias preventivas, como vacinação em massa e campanhas educativas para reduzir a exposição aos fatores de risco.
Entre os pacientes internados, 710.420 (32,7%) necessitaram de cuidados em Unidade de Terapia Intensiva (UTI). A maior parte dos pacientes (65,4%) não precisou de UTI, enquanto 1,9% dos registros não informaram essa variável.
A proporção significativa de internações em UTI demonstra a gravidade dos casos mais críticos e aponta para a necessidade de manter uma infraestrutura robusta de cuidados intensivos. Estratégias como o fortalecimento da rede hospitalar e o treinamento contínuo das equipes médicas são essenciais para lidar com picos epidêmicos.
O suporte ventilatório foi amplamente utilizado entre os pacientes:
- 56,2% receberam suporte ventilatório não invasivo
- 16,8% necessitaram de ventilação invasiva
- Apenas 23,9% dos pacientes não precisaram dessa intervenção
O uso elevado de ventilação não invasiva pode indicar uma abordagem clínica voltada para evitar complicações associadas à ventilação mecânica invasiva. No entanto, a alta proporção de casos graves que demandaram ventilação invasiva reforça a importância de estratégias preventivas para reduzir o número de hospitalizações severas.
O tempo médio de internação geral foi consistente ao longo do ano, com uma média de 11 dias. Da mesma forma, o tempo médio na UTI também foi de aproximadamente 11 dias. Nos meses finais do ano (novembro e dezembro), observou-se uma leve redução para cerca de 10 dias.
Essa redução pode estar associada à menor gravidade dos casos mais recentes ou à adoção de protocolos clínicos mais eficazes. O monitoramento contínuo do tempo médio de internação é fundamental para avaliar a eficiência do manejo clínico e identificar oportunidades para otimização dos recursos hospitalares.
A análise da cobertura vacinal contra COVID-19 revela um padrão preocupante:
- Apenas 34% dos pacientes receberam a primeira dose
- A adesão à segunda dose foi ainda menor (28%)
- Apenas 12% completaram o esquema vacinal com a dose de reforço
Esses números indicam uma baixa adesão às doses subsequentes da vacina, o que pode estar associado à diminuição da percepção do risco ao longo do tempo ou à falta de acesso em algumas regiões. Campanhas educativas e estratégias logísticas direcionadas são necessárias para aumentar a adesão vacinal, especialmente entre os grupos mais vulneráveis.
As mulheres apresentaram maior adesão à vacinação em todas as doses:
- Primeira dose: 36% (feminino) vs. 31% (masculino)
- Segunda dose: 30% (feminino) vs. 25% (masculino)
- Dose de reforço: 13% (feminino) vs. 10% (masculino)
Essas diferenças podem refletir maior conscientização ou acesso aos serviços de saúde entre as mulheres. Estratégias específicas devem ser implementadas para aumentar a adesão vacinal entre os homens, como campanhas direcionadas ou parcerias com ambientes predominantemente masculinos (ex.: locais de trabalho).
A análise por raça evidencia desigualdades significativas:
- Grupos Amarelo e Branco apresentaram as maiores taxas de vacinação
- Grupos Pardo e Preto tiveram menores taxas em todas as doses
Essas disparidades sugerem barreiras no acesso à vacinação entre determinados grupos raciais, possivelmente relacionadas a fatores socioeconômicos ou geográficos. Políticas públicas devem priorizar essas populações vulneráveis por meio da ampliação do acesso às vacinas em comunidades periféricas e rurais.
A adesão vacinal atingiu seu pico em 2021:
- Primeira dose: 56%
- Segunda dose: 33%
Nos anos seguintes, houve uma queda acentuada:
- Em 2025, apenas 41% receberam a primeira dose
- Apenas 38% completaram a segunda dose
- Apenas 18% receberam o reforço
Essa queda na adesão ao longo do tempo reflete desafios na manutenção do engajamento populacional com campanhas vacinais prolongadas. Estratégias como comunicação clara sobre os benefícios das doses subsequentes e incentivos diretos podem ajudar a reverter essa tendência.
Os dados apresentados no dashboard têm implicações importantes para o planejamento estratégico em saúde pública:
- O monitoramento contínuo dos casos graves é essencial para identificar surtos precocemente
- A integração dos dados hospitalares com sistemas regionais pode melhorar a alocação eficiente dos recursos
- A alta taxa de internações e uso intensivo de UTI reforçam a necessidade de estratégias preventivas robustas
- Campanhas educativas sobre higiene respiratória e vacinação devem ser ampliadas para reduzir o número de casos graves
- As disparidades observadas na vacinação por sexo e raça destacam desigualdades no acesso aos serviços de saúde
- Políticas específicas devem ser implementadas para alcançar populações vulneráveis, incluindo campanhas itinerantes em áreas remotas e periféricas
- O uso elevado de suporte ventilatório e o tempo prolongado na UTI demonstram a necessidade contínua de investimentos na infraestrutura hospitalar
- Treinamento das equipes médicas deve ser priorizado para garantir um manejo eficiente durante períodos críticos
- A baixa cobertura vacinal contra COVID-19 é preocupante e exige ações imediatas
- Estratégias como parcerias comunitárias e incentivos financeiros podem aumentar as taxas de vacinação nas populações menos engajadas
O processo inicia com a unificação de múltiplas bases de dados usando o script unificacao.py:
-
Carregamento Robusto: Implementamos um sistema que tenta múltiplas configurações de encoding (Latin1, UTF-8) e separadores (';', ',') para garantir o carregamento bem-sucedido de arquivos de diferentes origens.
-
Detecção Automática de Formatos: O script identifica automaticamente se arquivos estão comprimidos e seleciona a melhor estratégia de leitura.
-
Filtragem Inteligente de Colunas: Apenas as colunas relevantes conforme o dicionário oficial são mantidas, reduzindo o tamanho do dataset.
-
Diagnóstico de Qualidade: São gerados relatórios detalhados sobre os arquivos carregados, incluindo métricas de completude e consistência.
A fase de limpeza no script processar_srag.py inclui:
-
Remoção de Duplicatas: Registros duplicados são identificados e removidos.
-
Eliminação de Colunas Vazias: Colunas com percentual de valores nulos acima de um threshold configurável são automaticamente removidas.
-
Padronização de Texto: Todas as strings são convertidas para maiúsculas e espaços desnecessários são removidos.
-
Normalização de Nomes de Colunas: Nomes de colunas são padronizados para corresponder exatamente ao dicionário oficial.
Este foi o desafio mais complexo do projeto, resolvido através das seguintes estratégias:
-
Conversão Segura de Tipos: Todos os campos são convertidos para tipo
objectantes do processamento para evitar erros de tipo quando lidando com campos já mapeados. -
Detecção de Valores Pré-mapeados: O algoritmo verifica se uma coluna já contém valores descritivos antes de tentar mapear, evitando erros de conversão.
-
Abordagem Multi-estratégia para Códigos Numéricos:
- Correspondência exata de strings
- Manipulação especial para números decimais (como 1.0 → 1)
- Tratamento diferenciado para campos de checkbox (1 → "Sim")
-
Mapeamento Baseado em Dicionário: Utilizamos o dicionário oficial SIVEP-Gripe (19/09/2022) para garantir que todos os códigos sejam convertidos para suas descrições corretas, como:
- Códigos de sexo (1, 2, 9) → "Masculino", "Feminino", "Ignorado"
- Códigos de classificação final (1-5) → Descrições específicas de SRAG
- Códigos de evolução (1, 2, 3, 9) → "Cura", "Óbito", "Óbito por outras causas", "Ignorado"
-
Aplicação Seletiva de Mapeamentos: Utilizamos máscaras booleanas e o método
.locpara atualizar somente os valores específicos que precisam ser alterados.
-
Normalização de Datas: Campos de data são convertidos para objetos datetime do pandas com tratamento de erros inteligente.
-
Cálculos Derivados Importantes:
- IDADE_ANOS: Calculada precisamente a partir da data de nascimento e data dos primeiros sintomas
- TEMPO_INTERNACAO: Duração da internação em dias
- TEMPO_UTI: Tempo de permanência em UTI
-
Otimização de Memória: Todos os novos campos são calculados em um DataFrame temporário e depois concatenados de uma vez para evitar fragmentação de memória.
Após o processamento inicial, aplicamos filtros para remover registros que possam comprometer a qualidade da análise:
- Remoção de Valores Extremos: Excluímos registros com TEMPO_UTI > 160 dias, que provavelmente representam erros de digitação
- Eliminação de Registros Incompletos: Removemos casos onde o campo EVOLUCAO está nulo, garantindo maior confiabilidade em análises de desfecho
Desafio: Algumas colunas já continham valores textuais em vez de códigos, causando erros de conversão durante o mapeamento.
Solução:
- Implementamos uma fase de detecção prévia que verifica se uma coluna já contém valores de texto mapeados
- Convertemos todos os campos para o tipo
objectantes de qualquer operação - Criamos um conjunto de todos os valores possíveis após mapeamento para comparação rápida
# Verificar se a coluna já contém valores textuais mapeados
valores_texto = [v for v in valores_unicos if v in todos_valores_texto]
valores_originais = [v for v in valores_unicos if v not in todos_valores_texto]
# Pular se já totalmente mapeado
if valores_texto and not valores_originais:
campos_ja_mapeados.append(campo)
continueDesafio: Valores decimais como "1.0" precisavam ser tratados como equivalentes a "1".
Solução:
- Utilizamos uma abordagem de duas vias que combina correspondência exata e verificação de equivalência numérica
- Implementamos um método seguro de manipulação de strings para remover '.0' dos valores
mascara = (
df[campo].astype(str).str.strip() == str(codigo).strip()
) | (
df[campo].apply(
lambda x: str(x).replace('.0', '') == str(codigo).strip()
if pd.notnull(x) else False
)
)Desafio: Os arquivos CSV vinham com diferentes encodings, separadores e estruturas.
Solução:
- Sistema de fallback de múltiplas tentativas para carregamento de CSV
- Detecção automática de compressão de arquivo
- Sistema de diagnóstico que mostra as primeiras linhas em caso de falha
# Sistema sequencial de tentativas com diferentes configurações
configs = [
{'encoding': 'latin1', 'sep': ';', 'low_memory': False},
{'encoding': 'latin1', 'sep': ',', 'low_memory': False},
{'encoding': 'utf-8', 'sep': ';', 'low_memory': False},
{'encoding': 'latin1', 'sep': None, 'engine': 'python', 'low_memory': False}
]Desafio: O processamento não podia falhar completamente devido a erros em campos individuais.
Solução:
- Blocos try/except granulares em torno de cada operação importante
- Reporting detalhado de campos processados, pulados ou com erro
- Código defensivo que verifica existência de colunas antes de processá-las
Desafio: Os datasets completos chegam a milhões de registros, exigindo uso eficiente de memória.
Solução:
- Implementação opcional do PyArrow para carregar arquivos grandes
- Remoção proativa de colunas desnecessárias
- Processamento em chunks para arquivos muito grandes
- Minimização de cópias de DataFrames em memória
O projeto foi desenvolvido para seguir um fluxo de trabalho em etapas:
-
Unificação das Bases
- Execute
unificacao.pypara combinar múltiplos arquivos de dados - Cria o arquivo
SRAG_Unificado.csvcontendo todos os registros
- Execute
-
Processamento e Enriquecimento
- Execute
processar_srag.pypara processar e enriquecer os dados - Transforma códigos em descrições conforme o dicionário
- Cria o arquivo
dados_srag_tratados.csvcom os dados processados
- Execute
-
Filtragem de Registros
- Execute
filtrar_dados_srag.pypara remover registros problemáticos - Cria o arquivo
dados_srag_filtrados.csvcom dados de alta qualidade
- Execute
-
Análise e Visualização
- Realiza análises estatísticas e prepara visualizações
Após o processamento, o script gera relatórios com:
- Total de registros processados
- Contagem de campos já mapeados, mapeados durante o processamento, e não mapeados
- Distribuição de valores em colunas-chave como sexo, raça, evolução e classificação final
Estas métricas permitem validar a qualidade do processamento e identificar possíveis anomalias nos dados.
- Python 3.8+
- Pandas
- NumPy
- Jupyter (para o notebook)
- PyArrow (opcional, mas recomendado para melhor desempenho)
- Tratamento de Codificações: Múltiplas estratégias para lidar com diferentes encodings (Latin1, UTF-8)
- Tratamento de Separadores: Suporte para diferentes separadores CSV (ponto e vírgula, vírgula)
- Otimização de Memória: Implementação que evita fragmentação do DataFrame para grandes volumes de dados
- Diagnóstico de Erros: Feedback detalhado quando ocorrem problemas de carregamento
- Remoção Inteligente de Colunas: Eliminação de colunas totalmente vazias para economizar memória
python unificacao.pypython processar_srag.pyOpções disponíveis:
--arquivoou-a: Caminho para o arquivo a ser processado--saidaou-s: Caminho para o arquivo de saída
Exemplo com opções:
python processar_srag.py --arquivo dados/meu_arquivo.csv --saida resultados/dados_processados.csvpython filtrar_dados_srag.pyOpções disponíveis:
--arquivoou-a: Caminho para o arquivo a ser filtrado--saidaou-s: Caminho para o arquivo de saída filtrado--sobrescreverou-o: Sobrescreve o arquivo original (cria backup automático)
- Arquivos Grandes: Para arquivos muito grandes, considere aumentar a memória disponível para o Python
- Performance: A instalação do PyArrow melhora significativamente o desempenho ao trabalhar com arquivos CSV grandes
- Modificações: Ao adicionar novos campos, consulte o dicionário SIVEP-Gripe para garantir a correta interpretação
- Dados Interpretáveis: Transformação de códigos numéricos em informações de fácil compreensão
- Consolidação Temporal: Unificação de dados de múltiplos anos em uma base coerente
- Enriquecimento: Campos calculados que facilitam análises epidemiológicas
- Padronização: Formato consistente que facilita integrações com outras ferramentas
O desenvolvimento deste projeto ofereceu importantes aprendizados sobre processamento de dados epidemiológicos:
- Validação Rigorosa: É essencial verificar a correspondência exata com o dicionário oficial
- Tratamento Defensivo: Sempre assumir que os dados podem ter inconsistências
- Otimização Progressiva: Começar com código funcional e otimizar conforme necessário
- Diagnóstico Detalhado: Implementar sistemas de log que facilitem a depuração
- O processamento de arquivos muito grandes pode requerer otimizações adicionais de memória
- Alguns campos específicos podem não ter mapeamentos completos se não estiverem no dicionário oficial
Ideias para aprimoramento:
- Implementação de ferramentas de visualização integradas
- Módulos de análise estatística avançada
- Integração com sistemas de BI e dashboards
O panorama apresentado evidencia tanto os desafios quanto as oportunidades no enfrentamento da SRAG no Brasil. Embora avanços tenham sido feitos no manejo clínico dos casos graves – como indicado pela redução do tempo médio de internação – ainda há lacunas significativas na prevenção primária, especialmente relacionadas à vacinação contra COVID-19.
As desigualdades observadas entre grupos raciais e sexos reforçam a necessidade urgente de políticas públicas mais inclusivas e equitativas. Além disso, o declínio na adesão vacinal ao longo do tempo destaca a importância da comunicação clara sobre os benefícios contínuos das doses subsequentes.
Por fim, o fortalecimento da vigilância epidemiológica e da infraestrutura hospitalar será essencial para mitigar os impactos futuros da SRAG e outras doenças respiratórias graves no Brasil. Este projeto serve como base para orientar gestores públicos na tomada de decisões estratégicas voltadas à proteção da saúde coletiva no país.
Este projeto utiliza dados públicos do SIVEP-Gripe (Sistema de Informação de Vigilância Epidemiológica da Gripe) do Ministério da Saúde do Brasil.
Este projeto foi realizado por Argus Cordeiro Sales Portal como atividade avaliativa do curso de Especialização em Tecnologias Emergentes e Imersivas para Saúde Digital - UFG