Todo Médico Deve Saber Programar

Leticia Alves
9 min readMar 31, 2023

--

Imagem gerada pelo Midjourney

Não sei se você já leu isso em algum lugar, mas eu já vi muitas vezes por aí: “Programação é o novo inglês”, “O médico tem que saber programar para se diferenciar”, “Todos devem saber programar”. Se é um dever, eu não sei, mas quero mostrar aqui como a programação pode ser um aliado para o profissional de saúde.

Aqui eu vou mostrar toda a construção de um chatbot para WhatsApp que retorna aos pacientes quais são os profissionais daquela especialidade que ele deseja e que atende o seu plano de saúde, neste caso, a Unimed. Além disso, todas as interações são salvas e depois disponibilizadas através de um Dashboard no Power BI.

Esse projeto foi pensado a partir de queixas dos pacientes que eu atendia num Pronto Atendimento. Se você quer saber toda a motivação por trás deste projeto e os possíveis benefícios, só continuar a leitura. Mas se você estiver interessado apenas no código e como foi feito, só pular para a parte do passo a passo.

História por trás do Projeto

Identificando a queixa

Depois de um certo tempo trabalhando na emergência, você começa a conhecer os pacientes, e até a queixa que os trouxeram lá. Por uma lado, isso parece ser bom, você já chama pelo nome, antes mesmo de olhar o prontuário. Cria-se um vínculo de confiança. Por outro lado, se pensar bem, não parece ser tão bom assim. Se eles estão indo tanto à emergência, é por que o problema de base não foi resolvido, nem pelo menos controlado.

Pensando nisso, dependendo do motivo da consulta, ao dar alta ao paciente, orientamos a continuação do cuidado através de consultas ambulatoriais, e muitas vezes ouvia o seguinte:

  • Poxa, eu sou novo aqui na cidade, você recomenda algum cardiologista que atenda o plano ?
  • Meu endócrino que me acompanhava sempre está muito cheio e não consigo marcar a consulta, você conhece algum que atenda o plano ?
  • Eu não conheço nenhum ortopedista, quais aqui na cidade que atendem o plano ?

Minha resposta era diversa, mas sempre me ocupavam tempo. Ás vezes procurava no Google o que levava um tempo já que tinha que encontrar àqueles que atendessem ao plano; 2. também já procurei num documento PDF que listava todos os médicos de cada especialidade disponíveis no plano, e imprimia a parte que atendia a especialidade que o paciente precisava; 3. quando era de uma especialidade recorrente, dava o número do profissional que eu lembrasse; 4. falava para o paciente entrar no site ou fazer o download do aplicativo, para conseguir buscar a especialidade desejada. Só uma solução que não me custava tempo: dizer para perguntar na secretaria, que confesso até hoje não saber qual resposta eles davam.

Esse acontecimento estava presente em todo os plantões, mas foi após um episódio específico que tudo mudou e passei a pensar numa maneira de resolver. O que irei contar agora, de fato ocorreu, mas irei inventar nomes para exemplificar. O Ricardo levou seu pai, seu João, um senhor de 89 anos, à emergência, queixando de que sua pressão arterial estava oscilando muito na última semana. Depois de toda a consulta, no momento da alta, é informado a Ricardo sobre a importância de fazer esse controle da pressão arterial nas consultas ambulatoriais, para evitar as idas à emergência. Ricardo disse que o seu pai acompanhava com um cardiologista, mas como eles mudaram para aquela cidade recentemente, ainda não tinha encontrado um novo profissional para acompanhá-lo. Também disse que esperava que na ida a emergência, ele saísse de lá com a consulta de um especialista, ou pelo menos com essa consulta marcada.

De fato seria incrível, se todos aqueles que precisassem de um especialista, que saíssem da unidade de emergência já consultados, ou pelo menos com a consulta marcada. Provavelmente deve existir algum local assim, mas não é uma realidade em muitos locais, mesmo particulares.

Toda essa história foi para ilustrar da onde surgiu o problema. Daqui para frente irei dissecar toda a solução pensada.

A Solução

Pensando nas opções levantadas pelo Ricardo, a primeira, de já ser consultado pelo especialista na unidade de emergência, é algo que demanda tempo de estruturação/viabilidade por parte da gestão da unidade hospitalar; e segunda, de já sair com a consulta marcada, custaria muita informação em saber a agenda dos especialistas e já conseguir marcar o melhor dia e horário que atenda a ambos, e que provavelmente no final custaria mais tempo do que procurar o especialista no Google. Por isso foi pensado numa terceira opção, de facilitar o encontro do especialista e diminuir o máximo de atrito possível, se aproveitando da motivação do paciente logo após a sair da consulta no Pronto Socorro.

A solução então foi um Chatbot de WhatsApp, nomeada Julia, que com apenas 2 trocas de mensagens, já envia a lista de todos os Especialistas desejados que atendem o plano. Por que isso facilita e diminui o atrito ? 1. não é preciso baixar aplicativo e nem entrar em site algum (que tem uma interface um pouco complicada dependendo de que tipo de consulta o paciente quer fazer); 2. utiliza uma plataforma que a grande maioria usa e interage constantemente durante o dia, incluindo pessoas mais velhas, importante público dos atendimentos nas unidades de emergência; 3. é como uma conversa, e com apenas 2 trocas de mensagens, o paciente já tem a informação desejada.

Além disso, todas as futuras pesquisas realizadas pelos pacientes seriam salvas em um arquivo CSV, possibilitando a criação de um Dashboard para os gestores. Conseguindo visualizar o quanto os pacientes daquela região estão buscando um especialista, além de quais as especialidade mais buscadas.

Benefícios

  • Curto prazo: maior satisfação dos pacientes com o plano, devido a diminuição do atrito/dificuldade de conseguir um especialista
  • Médio/Longo prazo: informações para os gestores, possibilitando, por exemplo, implantação de consultas ambulatoriais no mesmo ambiente do pronto socorro, direcionado àquelas especialidade com maior procura
  • Longo prazo: desafogamento do pronto socorro, devido à melhor assistência e controle das doenças de base

Requisitos

  1. Dados: Era preciso ter as informações dos especialistas que atendiam o plano, neste caso a Unimed. Informações necessárias: Especialidade, Nome, Endereço de atendimento, telefone do local de atendimento.
  2. Chatbot: Twilio + Flask + Ngrok + Editor de Código + Python
  3. Dashboard: PowerBI

Passo a passo

1. Coleta de dados dos especialistas

No próprio site da Unimed tem todas essas informações, podendo realizar um webscraping para conseguir esses dados. Ou, para aqueles que são beneficiários, no site é possível conseguir a versão PDF, sendo também necessário realizar o scraping do arquivo.

Aqui foi realizado o Scraping do arquivo PDF.

!pip install PyPDF2 -q # Instalando o pacote

from PyPDF2 import PdfReader # Importando
reader = PdfReader("/Caminho_do_Arquivo/Arquivo.pdf")
number_of_pages = len(reader.pages)
page = reader.pages[0]
text = page.extract_text()

text # Extraindo o texto

2. Pré-processamento dos dados

Como tudo foi extraído sem nenhuma estrutura, precisei manualmente estruturá-lo em colunas: Especialidade | Cidade | Bairro | Nome | CRM | Endereço | Telefone.

Essa foi, sem dúvida, a parte mais trabalhosa. Depois disso, já tinha os dados devidamente limpos e organizados de acordo com o queria. Agora já poderia começar a desenvolver o Chatbot.

3. Desenvolvimento do Chatbot

Antes de desenvolver a parte do código, era preciso montar todo o ambiente que iria rodar, assim sendo possível, durante a escrita, checar o funcionamento. Como não tinha nenhum conhecimento sobre criação de chatbots, precisei recorrer a algumas fontes para tentar entender quais eram os requisitos e se era possível desenvolver em Python, já que é a única linguagem que possuo o mínimo de experiência. A fonte que me deu toda a base para entender e começar a criar o chatbot foi através do Vídeo do Hallison e da Kizzy, do Programação Dinâmica, que você consegue acessar através deste link.

3.1. Twilio

É preciso criar uma conta gratuitamente na Twilio. Ela é uma plataforma de APIs para diversos canais, e aqui utilizaremos a “sandbox”, local integrado com o WhatsApp para rodar os testes.

Após isso a Twilio informa um número e um código específico para você mandar por mensagem no WhatsApp para conectar a esse ambiente de teste.

3.2. Configurar o ambiente

Terminal

C:\\Users\\PastaDoProjeto> python -venv venv #Cria um ambiente
C:\\Users\\PastaDoProjeto> .\\venv\\Scripts\\activate
C:\\Users\\PastaDoProjeto> pip install flask twilio #Instala o Flask e API twilio

3.3. Flask

É um micro framework que utiliza a linguagem Python para criar aplicativos Web. E o que é um framework ? Um conjunto de ferramentas.

3.4. Ngrok

Como todo o código que iremos escrever está em um ambiente local — o próprio computador — é preciso que algo coloque na Web para fazer a comunicação com a Twilio e conseguir retornar a resposta que queremos. Essa é a função do Ngrok.

Depois de instalar e você informar qual a porta (http) que o Flask está utilizando. Assim ele vai te retornar uma URL. Essa URL você tem que colocar lá no site da Twilio para eles saberem qual o caminho que está sendo utilizado.

# Exemplo de porta http para o ngrok
ngrok htpp 5000

Número da porta http no terminal do VSCode.

Após digitar o número da porta no Ngrok, assim que irá aparecer a URL.

Onde inserir a URL no site da Twilio.

3.5. Código

Não irei colocar o código aqui para não ficar muito extenso. Mas lá no GitHub tem completo e comentado de como o Bot foi desenvolvido.

4. Gerando as possíveis pesquisas

Para exemplificar como poderia ser utilizado as interações com o chatbot, agregando informações para os gestores, criei então de maneira randômica, possíveis interações. E da mesma forma que ocorreria nas interações reais, coloquei a amostra aleatória gerada, em um arquivo CSV.

# Gerando valores aleatórios para especialidade
random_elements = random.choices(especialidades, k=125)

5. Construindo o Dashboard no Power BI

Agora com o arquivo CSV preenchido e estruturado com as possíveis interações do Chatbot, só é preciso importar para o Power BI e começar a construir o Dashboard.

Resultado

Chatbot

Dashboard

E assim ficou o Dashboard interativo, feito no Power BI.

Logo de cara é possível tirar algumas informações:

  • O número de interações ao longo dos dias não tem um padrão, sendo alguns dias com um número maior de interações.
  • É possível perceber que desde a implementação, Março, ocorreu um aumento progressivo na quantidade de interações.
  • Até o final da coleta dos dados, a especialidade mais pesquisada foi Cirurgia Vascular. Se ao longo dos meses, essa tendência se manter, talvez seja interessante a criação de um ambulatório dessa especialidade.
  • A quantidade de pedidos de ajuda é bem pequeno, mostrando que a maneira de utilização está clara, para aqueles que estão interagindo com o Chatbot.

Conclusão

A intenção de ser uma profissional de saúde que saiba programar não é ser tão boa quanto os programadores nativos, mas caso eu chegue lá, será incrível. Mas sim a possibilidade de comunicação entre essas duas áreas que têm tanto a agregar à área da saúde, além de ser mais uma ferramenta para conseguir resolver problemas encontrados no dia a dia, de maneira simples e utilizando tecnologia. Se a programação vai ser o novo inglês, um dia descobriremos, mas, pelo menos, se você é profissional da saúde e tem interesse nessa área, dê uma chance para aprender.

Referências

  1. Unimed Coop

2. Twilio

3. Ngrok

4. Programação Dinâmica

5. Como criar BOT de WhatsApp de Forma Fácil e Rápida — YouTube

6. Código hospedado no GitHub

— — — —

Obs.: Essa aplicação não se encontra em funcionamento. Foi apenas um projeto pessoal motivado pelas queixas que encontrei no meu trabalho atual.

--

--