O sync-datasus
é uma aplicação desenvolvida em Go para automatizar o processo de coleta e sincronização de dados da base FTP do DATASUS com tabelas em um banco de dados PostgreSQL. Este projeto facilita a obtenção de dados de saúde pública, garantindo que as informações estejam sempre atualizadas e prontas para análise.
- Conexão e autenticação automática com o servidor FTP do DATASUS.
- Download de arquivos de dados diretamente do FTP.
- Processamento e transformação dos dados.
- Inserção dos dados processados em tabelas específicas do PostgreSQL.
- Monitoramento e logging das operações para garantir a integridade dos dados.
- Go 1.19 ou superior.
- PostgreSQL 13 ou superior.
- Conexão com a internet para acessar o FTP do DATASUS.
- Clone o repositório:
git clone https://github.com/CriticalNoob02/sync-datasus.git
cd sync-datasus
- Instale as dependências:
go mod tidy
- Configure as variáveis de ambiente:
FTP_HOST="ftp.datasus.gov.br"
POSTGRES_USER="seu_usuario_postgres"
POSTGRES_PASSWORD="sua_senha_postgres"
POSTGRES_DB="seu_banco_de_dados"
BATCH_LIMIT="Limite de arquivos para cada worker"
NUM_WORKS="Numero de Workers rodando em paralelo"
MODULE_LIMIT_DATE="Data filtragem dos arquivos"
- Configure o mapper com base nos dados que deseja processar:
case "RAAS":
os.Setenv("MODULE_TYPE", "PS")
os.Setenv("MODULE_REMOTE_DIR", "dissemin/publicos/SIASUS/200801_/Dados")
os.Setenv("MODULE_TABLE_NAME", "tb_fat_importacoes_raas")
os.Setenv("MODULE_TABLE_SCHEMA", "public")
os.Setenv("QUERY_LIMIT", "1000")
}
- Compile o projeto:
go build -o build/myapp ./cmd
Execute o binário gerado para iniciar o processo de sincronização:
./sync-datasus/build
O aplicativo fará o download dos arquivos de dados, processará as informações e as inserirá nas tabelas do PostgreSQL conforme configurado.
Note
No modelo que desenvolvi, as colunas da sua tabela no banco de dados devem ter os mesmos nomes das colunas nos arquivos do DATASUS. Caso você não queira importar uma coluna específica do DATASUS, basta que ela não exista na sua tabela. O serviço mapeia automaticamente as tabelas do banco e coleta apenas as informações correspondentes no DATASUS.
Note
É possível filtrar os dados para um Estado específico aplicando uma filtragem no nome do arquivo. No entanto, será necessário implementar um loop na task Reader para aplicar essa filtragem corretamente.
Warning
Nao existe nenhum decisor para atualizar os dados, ou seja, sempre que rodar o sync vai inserir tudo o que achar no banco, por mais que ja exista o dado no mesmo.