diff --git a/artigo.tex b/artigo.tex index 2e3e39d..a47b4ea 100644 --- a/artigo.tex +++ b/artigo.tex @@ -160,6 +160,38 @@ Em conjunto, esses trabalhos mostram que há estudos sobre chatbots de saúde, r Quanto ao ciclo de desenvolvimento, o presente estudo situa-se entre a validação do protótipo e a preparação de novas iterações, e não em uma avaliação de impacto ou de efetividade em larga escala. Os achados sobre facilidade de uso, utilidade, intenção de uso, fluxo e percepções lexicais podem retroalimentar o projeto ao orientar a revisão de mensagens, o tratamento de erros, a clareza das opções de agendamento e a priorização de funcionalidades antes de uma implantação mais ampla. +\section{Descrição do artefato} + +O chatbot Liz foi desenvolvido como um protótipo de apoio à conscientização e à prevenção do câncer do colo do útero no contexto da rede pública de saúde de Nova Andradina. A proposta inicial, descrita por Picolo et al. \cite{Picolo2024ChatbotPrevencao}, foi elaborada a partir de levantamento bibliográfico, requisitos levantados com profissionais da Estratégia Saúde da Família, testes de tecnologias e prototipagem. A revisão bibliográfica específica do autor também identificou o uso de chatbots em ações de informação, prevenção e acompanhamento em saúde \cite{Picolo2022ChatbotSaude}. + +\subsection{Arquitetura e tecnologias} + +O código disponibilizado pelos autores organiza o sistema em uma aplicação principal Node.js/Express, uma camada de persistência com Sequelize e PostgreSQL e um serviço de integração com o WhatsApp. O projeto também utiliza AdminJS para administração, Redis e Node-Resque para enfileiramento assíncrono, RiveScript para a base de diálogos, `node-telegram-bot-api` para o Telegram e `node-schedule` para as tarefas programadas. A execução é preparada para Docker, com variáveis de ambiente para as credenciais e os serviços externos \cite{ProjetoChatbotSaude}. + +Na integração com o WhatsApp, o serviço separado utiliza `whatsapp-web.js` com `LocalAuth` para manter a sessão autenticada. As mensagens recebidas são encaminhadas por um stream gRPC para o trabalhador do sistema principal; o trabalhador coloca o evento em uma fila Redis, processa a mensagem e devolve a resposta pelo mesmo serviço gRPC. Para o envio, o serviço normaliza o identificador do destinatário para o formato do WhatsApp e chama a API local do cliente conectado. O Telegram segue fluxo semelhante de recepção por webhook/polling e processamento pelo trabalhador. + +Os dados de domínio são persistidos principalmente nas entidades `Paciente`, `Esf`, `Agendamento`, `Informacao`, `Avaliacao` e `Usuario`. O cadastro relaciona a paciente ao posto da ESF e ao identificador do canal de mensagens. Os agendamentos armazenam a data e o horário previstos, a data confirmada e o estado de processamento. O serviço de agendamento executa uma rotina periódica, consulta exames próximos e envia lembretes para os identificadores de WhatsApp e Telegram cadastrados. + +\subsection{Abordagem conversacional} + +Embora a introdução mencione Inteligência Artificial e \textit{Deep Learning}, a implementação disponibilizada para o protótipo Liz é predominantemente baseada em regras. A biblioteca RiveScript carrega arquivos `.rive` com tópicos, padrões de entrada, respostas, variáveis de contexto e chamadas para funções JavaScript. O processamento não corresponde ao treinamento de um modelo de aprendizado profundo: as mensagens são normalizadas, comparadas às regras e encaminhadas para funções de negócio que consultam ou alteram o banco de dados. Assim, a referência à IA deve ser entendida como enquadramento tecnológico do projeto, e não como evidência de que o protótipo avaliado empregou um modelo treinado de \textit{Deep Learning}. + +Essa caracterização é importante para a reprodutibilidade: a base conversacional pode ser inspecionada nos tópicos de cadastro, boas-vindas, menus, informações, agendamento, finalização e avaliação, enquanto as operações de persistência ficam encapsuladas no modelo `ChatBot`. A revisão do autor descreve o uso de processamento de linguagem natural como possibilidade para chatbots, mas o artefato publicado utiliza principalmente seleção orientada por menus e números \cite{Picolo2022ChatbotSaude,Picolo2024ChatbotPrevencao}. + +\subsection{Fluxos e funcionalidades} + +O fluxo inicial verifica se o identificador do canal já está associado a uma paciente. Quando não está, o chatbot oferece o cadastro, que solicita nome, CPF, ESF e telefone, confirma cada dado e associa o registro ao WhatsApp ou Telegram. O CPF é validado antes da gravação e, quando já existe um cadastro, o identificador do novo canal pode ser associado ao registro encontrado. + +Depois do cadastro, o menu principal oferece quatro caminhos: (1) agendar o exame preventivo; (2) consultar o exame marcado; (3) consultar informações sobre o câncer do colo do útero; e (4) finalizar o atendimento. O agendamento é conduzido por etapas: escolha do dia da semana, confirmação do dia, escolha do intervalo de horário e confirmação do pedido. A consulta recupera a data registrada; o módulo de informações lista temas mantidos no banco e apresenta o conteúdo selecionado; ao final, a paciente pode atribuir uma nota de 0 a 10 ao atendimento. + +Os diagramas de fluxo utilizados no projeto descrevem a navegação por menus e confirmações. Neste artigo, o roteiro de uso apresentado na Figura \ref{fig:roteiro} sintetiza a sequência de cadastro, consulta, agendamento e acesso às informações. A implementação original também disponibiliza diagramas de casos de uso, classes, entidade-relacionamento e fluxo de diálogo no repositório do projeto \cite{ProjetoChatbotSaude}. + +\subsection{Tratamento de falhas e entradas não reconhecidas} + +O tratamento de falhas combina validações de entrada, confirmações intermediárias e respostas coringa. Nos tópicos RiveScript, entradas diferentes das opções esperadas acionam mensagens como ``não tenho resposta para essa opção'' e reapresentam o menu ou a etapa corrente. O cadastro verifica CPF e entradas numéricas; o fluxo de agendamento confirma dia e horário antes de salvar; e as chamadas de persistência retornam mensagens de erro quando o cadastro, o agendamento ou a avaliação não podem ser gravados. + +Na camada de comunicação, o serviço do WhatsApp informa quando o cliente ainda não está pronto e expõe o estado da conexão por gRPC. A fila Redis desacopla a recepção do processamento e reduz o risco de bloquear o canal enquanto o sistema consulta o banco. Essas estratégias explicam por que termos como ``erro'' e ``problema'' podem aparecer nas percepções das participantes: eles podem se referir tanto a entradas fora do menu quanto a dificuldades de compreensão, persistência ou comunicação. Como o presente estudo não analisou logs, essa interpretação permanece contextual e não permite atribuir cada termo a uma falha técnica específica. + \section{Metodologia} \subsection{Aspectos éticos} @@ -508,6 +540,19 @@ Em conformidade com o Art. 2º, inciso III, do Manual de Publicações da SBC, o \textit{Encontro Internacional de Gestão, Desenvolvimento e Inovação (EIGEDIN)}, v. 7, n. 1, maio 2024. Disponível em: \url{https://periodicos.ufms.br/index.php/EIGEDIN/article/view/20590}. + + \bibitem{Picolo2022ChatbotSaude} + PICOLO, Luiz Fernando; TOMBINI, Guilherme Ferreira; DOS SANTOS, Rafael de Andrade Albuquerque; + DE AGUIAR, Gabriely Abreu; LEITE, Guilherme Fracalossi. + Chatbot e a saúde: uma revisão bibliográfica sobre o uso de chatbots para o auxílio no tratamento do câncer do colo de útero. + \textit{Encontro Internacional de Gestão, Desenvolvimento e Inovação (EIGEDIN)}, v. 6, n. 1, 2022. + Disponível em: \url{https://trilhasdahistoria.ufms.br/index.php/EIGEDIN/article/view/16797}. + + \bibitem{ProjetoChatbotSaude} + PICOLO, Luiz Fernando et al. + \textit{Projeto Fundect -- Pictec: projeto-chatbot-saude}. + GitHub, 2022--2026. + Disponível em: \url{https://github.com/luizpicolo/projeto-chatbot-saude}. \bibitem{Preece2013} PREECE, Jennifer; ROGERS, Yvonne; SHARP, Helen.