Como ajudamos a AZP a usar os seus dados

Como ajudamos a AZP a usar os seus dados

Filipa Rodrigues – Maker Projeto AZP

O projeto com a AZP (Associação Zoófila de Portugal) começou em março de 2020 com o objetivo de perceber o que estaria a influenciar os grandes tempos de espera na Associação. 

A equipa de projeto foi constituída por 5 pessoas: o Project Manager (Pedro Carvalhais), Team Leader (Pedro Preto) e 3 Volunteers (Hugo Santos, Henrique Pereira e Filipa Rodrigues).

Neste artigo damos a conhecer a forma como o projeto se iniciou e desenvolveu ao longo do tempo, os dados com os quais trabalhamos, e como nos organizamos para atingir os objetivos e apresentar os resultados  ao beneficiário.

O projeto

Nas primeiras reuniões decidimos que cada voluntário iria analisar os dados existentes para ganharmos conhecimento e percebermos o que podia ser feito. 

Os dados aos quais tivemos acesso foram os horários das consultas, o tempo de chegada do cliente à AZP, a hora a que a consulta teve realmente início, informação sobre o animal, sobre o veterinário e uma série de informações relativas à consulta. Pouco tempo após o início  do projeto, surgiu a oportunidade de fazermos uma visita às instalações da AZP. Nesta visita tivemos oportunidade de fazer perguntas sobre todo o processo de organização, como era feito o processo de atendimento, para assim também esclarecermos  dúvidas e percebermos como poderíamos ajudar com mais detalhe. 

Depois desta visita e de algumas reuniões com os beneficiários, decidimos alargar o âmbito  do projeto para além do foco inicial de perceber que fatores influenciam o tempo de espera. Optamos por também construir um modelo de previsão de consultas diário e um dashboard com informação de consultas e relacionamento de variáveis.

Reuníamo-nos  semanalmente para partilhar as tarefas realizadas e discutir eventuais bloqueios e como os resolver.  De duas em duas semanas reuníamo-nos com a AZP para discutirmos o trabalho.

Os resultados 

Como já mencionado, foram definidos 3 objetivos do projeto: a análise aos tempos de espera, construção de um modelo de previsão de consultas e de um dashboard.

O modelo e o dashboard foram instalados num dos computadores da AZP. Foi criado um script de ETL em Python que: 1) lê os dados (previamente extraídos para uma pasta definida), 2) realiza transformações nos dados (criação de novas colunas, por exemplo), 3) corre o modelo de previsão e 4) extrai o dataset que alimenta o modelo e o resultado do modelo para um .csv (que depois dará um input para o PowerBI Desktop). 

A atualização do dashboard faz-se na própria ferramenta PowerBI Desktop onde existe um botão de refresh que, ao ser carregado, relê novamente os dados de input e atualiza a informação conforme os novos dados. 

Este processo de instalação foi realizado pela equipa de voluntários da DSSG num processo que demorou cerca de 3h. Foi necessário realizar a instalação do PowerBI Desktop e também do Python. 

i) Análise de tempos de espera

Para analisar os tempos de espera,  realizámos primeiro uma limpeza do dataset e começámos por fazer algumas análises e correlações. 

Para limpar os dados, optamos por:

  • Eliminar  dados inconsistentes, como por exemplo, dados anteriores a 2017 (data a partir da qual o sistema da AZP começou a ser usado com maior fiabilidade);
  • Eliminar colunas que não eram úteis;
  • Eliminar registos que não estavam relacionados com consultas;
  • Preencher valores que estavam a zero ou substituir por outros valores;
  • Eliminar registos de consultas com tempos de consulta negativos.

Depois de uma limpeza nos dados, focamo-nos em criar novas features que auxiliassem na análise:

  • Atraso dos Clientes: cálculo do tempo de atraso do cliente face à hora marcada
  • Tempo de Espera: cálculo do tempo de espera alternativo (com recurso apenas aos dados do dataset presente, visto que já existia  uma variável com este valor, mas que não apresentava coerência)
  • Sobreposição: coluna que identificasse consultas do mesmo veterinário que são sobrepostas
  • Medianas de tempo de espera por tipo de consulta;
  • Desvios de tempo de espera relativamente à mediana do tipo de consulta.

ii) Modelo de previsão de consultas

O modelo de previsão do número de consultas foi construído tendo por base os seguintes pressupostos:

  • Considerar apenas consultas do tipo “Ordem de Chegada” (consultas sem marcação)
  • Prever o número de consultas diário para os próximos 14 dias;
  • Considerar um máximo de 5 consultadas por dia. 

Para input do modelo utilizamos o dataset transformado na fase de “Análise de Tempos de Espera”. Utilizamos o modelo SARIMAX, um modelo clássico de previsão que permite a modelação explícita de alguns parâmetros (como tendência e sazonalidade) e que também permitia incluir variáveis externas.

Como features do modelo foram usadas:

  • Série Temporal (nº de consultas diárias);
  • Feature booleana a indicar se o dia é um feriado;
  • Feature booleana a indicar se o dia anterior foi feriado.

Como dados de treino usamos os dados referentes aos últimos 365 dias. Utilizamos uma biblioteca (holidays) para identificar os feriados portugueses.A métrica escolhida foi o MAE (mean absolute error) por ser bastante fácil de entender. Por exemplo, com um MAE=4 significa que, em média, a previsão falhou por 4 consultas.

iii) Dashboard

O dashboard foi construído como forma de dar suporte à AZP no seu dia-a-dia, tendo como objetivo ser uma ferramenta fácil e simples de usar onde rapidamente poderiam ter uma visão geral de como estava a correr o negócio. 

O dashboard foi construído usando a ferramenta PowerBI Desktop. Escolhemos esta ferramenta pois é  grátis, fácil de usar e  de instalar no computador das instalações da AZP. 

Como input do dashboard utilizamos  o dataset transformado na “Análise dos Tempos de Espera” e o output do “Modelo de previsão de consultas”.

O dashboard foi construído de acordo com as necessidades e comentários  da AZP. 

O dashboard contém 7 relatórios que podem ser filtrados pelos campos possíveis (data, tipo de consulta, espécie, sexo, etc): 

  • Visão Geral: informação sobre o número de consultas por dia bem como alguns indicadores como o número total de consultas, total de animais, total de espécies tratadas e total de veterinários.
  • Visão Detalhada: relatório que inclui informação sobre a média de consultas por dia da semana, por hora do dia e uma categorização de consultas urgentes ou não urgentes por hora do dia.
  • Tipo de Consulta: relatório que inclui informação específica por tipo de consulta como número de consultas por dia, hora do dia, por mês e por dia da semana.
  • Idade: relatório que inclui informação específica por faixa etária como número de consultas por dia, hora do dia, mês, dia da semana e relação entre o tipo de consulta e a faixa etária do animal.
  • Sexo: relatório com o mesmo aspecto gráfico que o da Idade.
  • Espécie: relatório com o mesmo aspeto gráfico que o da Idade.
  • Tempos de Espera: relatório que inclui informação específica de tempos de espera como média do tempo de espera por dia, em que horas do dia o tempo de espera é maior, por mês e por dia da semana.
  • Duração: relatório com o mesmo aspeto gráfico que o dos Tempos de Espera.
  • Veterinário: relatório com o mesmo aspeto gráfico que o dos Tempos de Espera.
  • Previsão: relatório que inclui o resultado do modelo de previsão, com o erro associado.

Resumindo…

Este projeto serviu para dar uma nova visão do processo à AZP e dar-lhes a possibilidade de obterem informação de forma rápida e intuitiva, quer sejam métricas ou uma análise do estado atual. Com o modelo de previsão, a AZP consegue  organizar melhor o seu dia-a-dia de forma a conseguir atender todos os animais que precisam.  

Com isto, conseguimos, com orgulho, dizer que este projeto permitiu usar dados já existentes com muito   maior  impacto e rentabilizar recursos para a realização de outras tarefas.