by Victor Fragoso, Willian Sanches - Prefeitura Municipal de Santo André
Date: 09-jul-2021
Version: v.08
Este script em python tem como objetivo eliminar a necessidade de digitacão manual no sistema de vacinacão do COVID19 do Governo do Estado de Sao Paulo chamado "Vacivida" (https://vacivida.sp.gov.br/).
Como o Vacivida nao possui nenhuma forma de integracão com os bancos de dados das prefeituras dos municipios, nem a possibilidade de fazer upload de uma tabela em Excel, o script se mostrou extremamente importante para agilizar a atualizacao no ranking do Governo do Estado (https://vacinaja.sp.gov.br/vacinometro/) no qual também é utilizado para controle de quais cidades estarão mais propensas a receber mais vacinas, uma vez que no mesmo consta a quantidade de doses enviadas e quantidade de doses aplicadas em cada município, e espera-se que a quantidade de doses aplicadas seja igual ou proximo a quantidade de doses enviadas.
O uso desse script permitiu o que o município de Santo Andre pulasse de 64.419 registros no dia 17/03/2021, para 94.133 no dia 24/03/2021 (ou seja, quase 30 mil registros) sem a necessidade de nenhuma equipe de digitacao, permitindo assim que esses trabalhadores pudessem se preocupar em realizar tarefas de maior valor agregado, como a própria aplicacao de vacinas contra o COVID19.
Esse código é livre, aberto, e qualquer um pode realizar as modificacoes que acharem necessários para implementar em seus próprios sistemas.
Eu espero de coracão que esse codigo possa ajudar de alguma forma na vacinacao do Brasil. <3
Sinta-se a vontade para me contatar se precisar de qualquer auxílio.
-
O uso desse script tem como prerrogativa que o município já possui um sistema interno de controle de vacinacao, com formulário de inscricão dos munícipes e as informacões "check-in" sobre quem tomou as vacinas em um banco de dados.
-
Caso não haja um formulário já existente, é possível que os registros sejam incluídos dentro de um banco de dados e exportados através do bot, bastando alterar as colunas utilizadas no script.
-
O banco de dados utilizado pela Prefeitura de Santo André é o Oracle, e por isso o bot foi feito integrado nele. Mas pode ser portado para qualquer outro banco disponível, bastando alterar as depenedencias e funcões.
-
Por conta do grande volume de dados, o bot foi construído com base em computacão distribuída através do uso da biblioteca Python Ray.io (https://ray.io/) em 36 computadores (com 4 núcleos cada) ligados dentro de uma mesma rede ethernet, formando um cluster com 144 "workers" disponíveis para a automatizacao.
-
Caso não tenha disponível tantos computadores, é possível rodar individualmente o script em um único computador (modo standalone), bastando substituir a quantidade de "workers" por núcleos do processador disponível.
-
Instale os softwares necessários
obs.: Para o modo distribuído é necessário instalar em todas as máquinas do cluster
sudo apt-get update sudo apt install -y python3 python3-pip ray
-
Clone o repositório do github e acesse a pasta
git clone https://github.com/prefeiturasantoandre/vacibot.git cd vacibot/
-
(opcional) Crie um Virtual Environment e ative-o
obs.: Será necessário ativá-lo sempre que for utilizar o bot
python3 -m venv venv . venv/bin/activate
-
Instale os módulos Python através do PIP
obs.: Para o modo distribuído é necessário instalar em todas as máquinas do cluster
pip3 install -r requirements.txt ou python3 -m pip install -r requirements.txt
-
Faca o download do Instant Client OracleDB, converta e instale:
obs.: Para o modo distribuído é necessário instalar em todas as máquinas do cluster
wget https://download.oracle.com/otn_software/linux/instantclient/oracle-instantclient-basic-linuxx64.rpm sudo apt-get install alien libaio1 sudo alien oracle-instantclientX.X-basic-x.x.x.x.x-1.amd64.rpm sudo dpkg -i oracle-instantclient-basic_x.x.x.x.x-2_amd64.deb
-
Crie uma cópia de
credentials.example.py
com o nomecredentials.py
. Em seguida, altere as credenciais de acesso contidas no arquivocredentials.py
seguindo o padrão do arquivo -
(opcional) Altere a variavel
n_workers
de acordo com a quantidade de processadores disponíveis dividido pela quantidade de locais de vacinação. -
Altere a variável
select_query
em__main__.py
de acordo com a busca necessária em seu banco de dados para encontrar os nomes que precisam ser enviados para o Vacivida -
Crie uma cópia de
local_dicts.example.py
com o nomelocal_dicts.py
. Em seguida, preencha os dicionáriosarea_alias
,vacinador
,estabelecimento
emlocal_dicts.py
de acordo com as informações das unidades. -
Configure o Script para rodar em modo Standalone ou Distribuido
10.1.1 - Alterar a variavel n_workers
para quantidade de processadores disponíveis no computador dividido pela quantidade de locais de vacinação
10.1.2 - Alterar a variavel standalonemode
para True
10.2.1 - Alterar a variavel n_workers
para quantidade de processadores disponíveis na rede dividido pela quantidade de locais de vacinação
10.2.2 - Alterar a variavel standalonemode
para True
10.2.3 - Execute no terminal do computador principal o comando:
ray start --head --port=6379
10.2.4 - Execute em todos os computadores que estarão vinculados ao cluster o comando:
ray start --address='ip_do_node_principal:6379' --redis-password='5241590000000000'
10.2.5 - Verifique no computador principal se todos os nodes estao habilitados e conectados no cluster:
ray status
- A partir da pasta anterior à pasta em que o bot está instalada, inicie o bot no computador principal com o comando:
python3 vacibot
ou
python3 vacibot [N_WORKERS]
onde [N_WORKERS] é a quantidade de workers desejada. Caso não especificado, utilizará o número pardão ou aquele especificado no passo 7.
Obs.: Caso esteja utilizando o Virtual Envirenment, ative-o antes de executar o comando anterior:
. vacibot/venv/bin/activate
Dicas:
- Para realizar modificacoes, é possível converter os comandos CURL (que foram capturados com a ferramenta de desenvolvedor do chrome) para Python através do link: https://curl.trillworks.com/#python
Github: victorffs
Email: vfragoso@santoandre.sp.gov.br
Phone: +55 11 97079 1572
Github: wi-sanc
Email: wcsanches@santoandre.sp.gov.br
Phone: +55 11 97707 4734
This project is licensed under the MIT License - see the LICENSE.md file for details