Este repositório contém scripts SQL e documentação para o gerenciamento de um banco de dados relacional voltado ao armazenamento e análise de dados de vacinação.
O projeto visa extrair insights valiosos e responder a perguntas de negócio cruciais relacionadas à demografia dos pacientes, distribuição geográfica, características das vacinas e dos estabelecimentos de saúde, e às estratégias de vacinação, utilizando dados públicos de vacinação.
- Contexto
- Fontes de Dados
- Planejamento
- Estrutura do Dataset
- Objetivo
- Plano de Análise de Dados
- Modelagem de Dados
- Guia de Importação de Dados
O projeto utiliza um dataset real de vacinação, contendo informações detalhadas sobre:
- Pacientes
- Vacinas
- Estabelecimentos de saúde
- Doses aplicadas
- Estratégias de imunização
- Outros dados relevantes para o controle da vacinação
- Dataset: Vacinação - Janeiro 2025 PNI - Programa Nacional de Imunizações (2025)
- Dicionário de Dados (do dataset): Documento Oficial PDF
- Dicionário de Dados (do projeto): Dicionário de Dados
- De/Para: Mapeamento do dataset para a base de dados
Para acessar o dataset, siga um dos caminhos abaixo:
-
Pelo site:
- Abra o link do Dataset.
- Vá até a aba Recursos.
- Localize o dataset Vacinação - Janeiro 2025 (CSV).
-
Download direto:
Baixar dataset no Google Drive
- Trello: Board do Projeto
O dataset possui diversas colunas representando informações sobre pacientes, vacinas e unidades de saúde.
📄 Para a lista completa, consulte o dicionário de dados.
CodigoRacaCorPacienteCodigoPaisPacienteCodigoEtniaIndigenaPacienteNomeMunicipioPacienteCodigoPacienteCodigoNaturezaEstabelecimentoCodigoDocumentoCodigoDoseVacinaCodigoVacinaFabricante
- Facilitar o armazenamento, consulta e análise dos dados de vacinação.
- Permitir estudos epidemiológicos e comparativos.
- Apoiar a tomada de decisão em saúde pública.
Principais Perguntas e Questões a Serem Respondidas
-
👥 Perfil Demográfico
- Quem são os vacinados em termos de idade, gênero e outras características populacionais?
-
🪶 População Indígena
- Qual a proporção de pacientes indígenas vacinados e como estão distribuídos por etnias?
-
🌎 Cobertura Geográfica
- Como está a distribuição das vacinas por estado e município?
-
🏙️ Municípios em Destaque
- Quais cidades apresentam os maiores e os menores números de aplicações?
-
💉 Etapas da Vacinação
- Qual a quantidade de doses aplicadas por fase (1ª, 2ª e reforço)?
-
🏭 Fabricantes
- Quais vacinas são mais utilizadas e qual a participação de cada fabricante?
-
🏥 Locais de Aplicação
- Como se distribuem as aplicações entre UBS, hospitais e outros estabelecimentos?
-
📈 Evolução Temporal
- Como o número de doses aplicadas evoluiu ao longo do tempo?
📂 Material completo
Para acessar todas as perguntas detalhadas, junto com as tabelas e fontes de dados relacionadas, consulte o documento completo em: Plano de Análise de Dados
Este guia demonstra como carregar dados de um arquivo CSV para uma tabela no SQL Server utilizando o comando BULK INSERT.
Antes de importar os dados, certifique-se de que a tabela destino já exista no banco de dados.
➡️ Utilize o script SQL disponível em:
📄 create_geral.sql
Com a tabela criada, você pode importar os dados do arquivo CSV utilizando o comando BULK INSERT.
📄 Exemplo disponível no arquivo bulk_insert.sql.
BULK INSERT vacinacao_jan_2025
FROM 'D:\vacinacao_jan_2025.csv' -- Caminho do arquivo CSV (Exemplo)
WITH (
FIELDTERMINATOR = ';', -- Separador de campos
ROWTERMINATOR = '0x0d0a', -- quebra de linha em formato hexadecimal
FIRSTROW = 2, -- Ignora a primeira linha (cabeçalho)
TABLOCK, -- Otimiza a inserção em lote
CODEPAGE = '1252' -- Necesssário para tratar os dados (Acentos e etc)
);Após importar todos os dados a partir do arquivo CSV, é hora de populá-los nas tabelas correspondentes do banco de dados.
Siga as etapas abaixo na ordem recomendada:
🗃️ Criação das tabelas
Execute o script script_create_database.sql
- Para gerar a estrutura completa do banco de dados (tabelas, chaves primárias e estrangeiras).
⚙️ Criação da trigger de logs
Utilize o script trigger.sql
- Para configurar o mecanismo de registro automático de alterações nas tabelas.
📥 Inserção dos dados
Execute o script inserts.sql ou insert_procedures.sql
- Para inserir os registros importados nas tabelas correspondentes.
🧾 Criação das views
Por último, crie todas as views executando o script views.sql
- Essas views facilitam consultas, análises e agregações de dados a partir das tabelas já populadas.
Nesta etapa, disponibilizamos o backup completo do banco de dados para facilitar a restauração e o uso do projeto em seu ambiente local.
💡 Dica: Certifique-se de ter o SQL Server Management Studio (SSMS) instalado e permissões adequadas para restaurar bancos de dados.
- Baixe o arquivo
.bakdisponível neste linkBackup. - Abra o SSMS e conecte-se à sua instância do SQL Server.
- Execute o comando abaixo no painel de consultas, ajustando o caminho conforme o local onde o
.bakfoi salvo.
-- 🔁 Restaura o banco a partir do arquivo .bak
RESTORE DATABASE [DB_VACINACAO]
FROM DISK = 'C:\SeuDiretorio\DB_VACINACAO_FULL_2025-10-30.bak' -- ⚠️ Verifique o caminho
WITH
MOVE 'DB_VACINACAO' TO 'C:\Program Files\Microsoft SQL Server\MSSQL16.MSSQLSERVER\MSSQL\DATA\DB_VACINACAO.mdf', -- Verifique se o caminho para o .mdf exista
MOVE 'DB_VACINACAO_log' TO 'C:\Program Files\Microsoft SQL Server\MSSQL16.MSSQLSERVER\MSSQL\DATA\DB_VACINACAO_log.ldf', -- Verifique se o caminho para o .ldf exista
REPLACE, -- Sobrescreve o banco existente (se houver)
RECOVERY, -- Deixa o banco pronto para uso
STATS = 10 -- Exibe o progresso da restauração
GO💡 OBS¹: Se o SQL Server impedir a restauração por conexões ativas, coloque o banco em modo single user:
ALTER DATABASE [DB_VACINACAO] SET SINGLE_USER WITH ROLLBACK IMMEDIATE;💡 OBS²: Após concluir a restauração, retorne o banco para o modo multiusuário:
ALTER DATABASE [DB_VACINACAO] SET MULTI_USER;Disponibilizamos um dashboard para mostrar alguns dos dados obtidos.
Important
Para executar a Dashboard, é importante que tenha Python em sua máquina na versão 3.12.0
Instale as dependências a seguir:
pip install pyodbc streamlit pandas plotly
Execute com o seguinte comando:
streamlit run main.py