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.