Coletando e armazenando os números de casos do Coronavírus no Brasil — v 2.0

Raphael Fontes
MindStorm
Published in
6 min readApr 13, 2020

No dia 19/03/2020 a plataforma IVIS entrou em manutenção para modernização, uma vez que a estrutura não estava suportando a quantidade de acessos. A nova plataforma foi apresentada no dia 26/03/2020.

Chamada de Covid Brasil, a nova plataforma apresenta a modernidade que o Ministério da Saúde, juntamente com o DATASUS, precisou passar devido as exigências que a situação demandava. As Secretarias de Estado da Saúde (SES) passavam planilhas sobre os casos, muitas vezes por telefone e este trabalho manual poderia acarretar em erros, além da latência no acesso a informação.

Além do mapa do Brasil, com a quantidade de casos confirmados e óbitos, a plataforma apresenta informações das regiões, uma serie histórica e um gráfico com a evolução epidemiológica semanal.

Quando ocorreu o primeiro caso de transmissão comunitária do COVID-19 no Brasil, os dados referentes aos casos suspeitos e descartados não são mais divulgados pelas SES.

As informações de casos confirmados e óbitos são acumulativos. Já a taxa de letalidade é calculada a partir da quantidade de óbitos dividido pela quantidade de confirmados.

Identificando a fonte de dados da plataforma

É possível navegar pelos carregados da plataforma em seu computador, utilizando a inspeção da página no navegador (botão direito na página e inspecionar). Na aba “Network” estão os arquivos que foram baixados e estão armazenados, servindo para que a página seja exibida em seu navegador. Caso a listagem esteja vazia, recarrega a página com um CTRL+F5.

Inspeção de arquivos do Plataforma Covid Saúde do Ministério da Saúde

Note que logo a baixo da aba “Network” possuí a seleção de All (todos), significando que todos os arquivos que são necessários para carregamento da página estão sendo exibidos nesta listagem. Para selecionar apenas os arquivos que contém as fontes de dados que são utilizadas pela plataforma, selecione o filtro de XHR.

Arquivos XHR do plataforma Covid Saúde do Ministério da Saúde

Com isso, identificamos 6 arquivos que são utilizados como fonte de dados para os gráficos apresentados no plataforma, são eles:

  • PortalGeral
  • PortalDias
  • PortalSemana
  • PortalRegiao
  • PortalAcumulo
  • PortalMapa

Explorando as fontes de dados

PortalGeral

O arquivo PortalGeral é responsável pelas informações gerais da plataforma em sua última atualização, sendo o principal para o gerenciamento e apresentação das informações, como: total de pessoas confirmadas (total_confirmado), data da criação da plataforma (createdAt), data da última atualização da plataforma (updatedAt), total de óbitos (total_obitos), versão da plataforma (versao), data da atualização com hora (dt_atualizacao), taxa de letalidade de casos (total_letalidade) e a informação sobre o arquivo csv que contém os dados históricos dos casos.

Arquivo PortalGeral da plataforma Covid Brasil

É possível efetuar a leitura do arquivo CSV utilizando a biblioteca requests do Python💙. O arquivo contém a serie históricas dos casos no Brasil, com isso poderá armazena-lo num DataFrame ou em um Banco de Dados.

Inspecionando o DataFrame, é possível conferir a serie histórica dos casos. Na atualização da plataforma, a coluna de região foi acrescentada, a coluna de estado apresenta apenas a sigla e as informações de casos novos e acumulados. Note que as informações de casos descartados os suspeitos foram removidos devido a identificação de transmissão comunitária do vírus.

PortalDias

Gráfico apresentando os casos novos por dia na Plataforma Covid Brasil

Neste arquivo é possível identificar a serie histórica, que é utilizada pelo gráfico de “Casos novos por dia”. O arquivo contém uma lista com informações dos casos por dia, desde o dia 26/02 e pode ser utilizado para carregar estas informações.

A seguir há um exemplo de uma das informações contidas na lista do arquivo PortalDias:

Parte do arquivo PortalDias da plataforma Covid Brasil

PortalSemana

Gráfico apresentando os casos por semana na Plataforma Covid Brasil

Neste arquivo é possível identificar a serie histórica semanal de novos casos, que é utilizada pelo gráfico de “Casos por semana epidemiológica”. O arquivo contém uma lista com informações das semanas.

A seguir há um exemplo de uma das informações contidas na lista do arquivo PortalSemana:

Parte do arquivo PortalSemana da plataforma Covid Brasil

PortalRegiao

Gráfico apresentando os casos por região na Plataforma Covid Brasil

Neste arquivo é possível identificar o total de casos por região, que é utilizada pelo gráfico de “Casos por região”. O arquivo contém uma lista com informações das regiões com o quantitativo da última atualização.

A seguir há um exemplo de uma das informações contidas na lista do arquivo PortalRegiao:

Parte do arquivo PortalRegiao da plataforma Covid Brasil

PortalAcumulo

Neste arquivo é possível identificar o total de casos acumulados, que é utilizada pelo gráfico de “Casos acumulados”. O arquivo contém uma lista com a série histórica dos casos acumulados por dia.

A seguir há um exemplo de uma das informações contidas no arquivo PortalAcumulado:

Parte do arquivo PortalAcumulo da plataforma Covid Brasil

PortalMapa

Neste arquivo é possível identificar o total de casos acumulados, que é utilizado pela tabela de “Casos por estado”. O arquivo contém uma lista com a os dados atualizados por estado.

A seguir há um exemplo de uma das informações contidas no arquivo PortalMapa:

Parte do arquivo PortalMapa da plataforma Covid Brasil

Atualizando automaticamente

A plataforma é atualizada diariamente no final da tarde (entre às 16:30 e 18:00). Uma das alternativas para automatizar a coleta desses dados é utilizar o pacote APScheduler.

Advanced Python Scheduler (APScheduler) is a Python library that lets you schedule your Python code to be executed later, either just once or periodically.

Com esse pacote é possível:

  1. Definir um intervalo de tempo (interval) o qual será executada uma função de N em N de T em T, onde N seja um número e T o tempo (20 minutos, 1 hora, 50 segundos, etc), ou;
  2. Definir um horário exato (cron) para que a função seja acionada, às 22 horas.

Para o código a seguir foi definido que será executada a coleta dos dados para às 19 horas utilizando o horário de São Paulo, mas você pode alterar, por exemplo, para uma hora mais próxima ou alterar o “cron” para “interval”, e definir um intervalo de hour para seconds=30.

  1. Crie um arquivo chamado main.py;
  2. Escreva as definições para o projeto, lembre-se de efetuar o download delas quando for executar o script Python;

Definições

Trecho do código que contém as definições que serão utilizadas

3. Crie a função que consulta o arquivo PortalGeral e coleta o diretório que contém o arquivo CSV. Lembre-se que este trecho do código foi apresentado anteriormente nesta história :D

Trecho do código que contém a criação da função que consulta o arquivo CSV

4. A baixe da função cron() crie a função main() que criará o job que será executado;

Trecho do código que contém a criação da função main com as definições de agendamento da tarefa

5. Salve o arquivo;

6. Execute o arquivo python main.py e aguarde a execução da tarefa!

--

--

Raphael Fontes
MindStorm

I also have over 9 years of experience in software engineering and data mining. Lead data team to support strategies and goals.