O Pipe and Filter é um padrão de projeto arquitetônico que permite fluxo / assíncrono em processamento. Nesse padrão, decompõe-se uma tarefa que executa processamento complexo em uma série de elementos separados que podem ser reutilizados pode melhorar o desempenho, a escalabilidade e a capacidade de reutilização, permitindo que os elementos da tarefa que realizam o processamento sejam implantados e escalonados independentemente.
O Vaccmap possibilita ao usuário o consumo de dados por meio de uma API, onde pode-se obter dados pré-filtrados sobre a vacinação em diferentes locais do Brasil. O cliente é capaz de selecionar uma cidade, estado e um tipo de vacina, assim, requisitar dados através de uma jsonAPI. Sendo assim, a aplicação atua como um intermediário entre o banco de informações de vacinação nacional, o Portal Brasileiro de Dados Abertos, de forma a disponibilizar ao usuário dados previamente filtrados.
Desse modo, primeiramente a aplicação utiliza da API fornecida pelo Dados.gov.br, para fazer uma chamada de serviço:
class VaccinationAPI():
data_set = set()
base_url = 'https://imunizacao-es.saude.gov.br'
username = 'imunizacao_public'
password = '********'
auth_params = (username, password)
...
def _make_request(self, method, endpoint, json, counter=0) -> dict:
url = f'{self.base_url}/{endpoint}'
try:
resp = requests.request(method, url, json=json, auth=self.auth_params)
except Exception:
return self._handle_error(method, endpoint, json, counter)
resp = self._check_response(method, endpoint, json, resp, counter)
return resp
Após isso, os dados obtidos na resposta da requisição serão filtrados, de acordo com o que o cliente deseja consumir.
-
1) Instale o nvm (https://github.com/creationix/nvm)
> cd frontend
> nvm use 9
> npm i
> npm run dev
> python3.6 -m venv vaccmap
-
2) Instale o nvm (https://github.com/creationix/nvm)
alias vaccmap='cd /home/matheusvidal/Documents/vaccmap;
. ../.virtualenv/vaccmap/bin/activate;
nvm use 9;
. dev.sh'
> vaccmap
> pip install -r requirements.txt
> dkpgnginx
> vaccmap
> ./manage.py migrate
> ./manage.py createsuperuser
> ./manage runserver
> vaccmap
> cd frontend
> npm i
> API_MOCK=0 npm run dev
Ao executar o script de shell dev.sh
, você terá os seguintes comandos para ajudar no seu desenvolvimento:
-
devhelp: Imprime comandos de ajuda
-
dkdev: Executa um dockerized postgresql, nginx e metabase
-
dkdb: Executa um dockerized postgresql database na porta 5432
-
dknginx: Executa um dockerized nginx na porta 80 para 8000 (back), 3000 (front), 3001 (mocked front) e 3002 (metabase)
-
pytest: Executa os testes
-
pycoverage: Executa os testes em python com flake8 e relatório de cobertura
-
dkbuild: Constrói uma imagem docker para o projeto
-
dkfulldev: Executa um dockerized postgresql, nginx, metabase and the project image