Situação
O manejo da insuficiência cardíaca (IC) requer ajustes frequentes de medicamentos — titular inibidores da ECA, betabloqueadores, MRAs e inibidores de SGLT2 até doses-alvo enquanto se monitora contraindicações, tolerabilidade e comorbidades específicas do paciente. As diretrizes AHA/ACC definem o framework, mas aplicá-las a pacientes individuais exige integrar dezenas de variáveis: sinais vitais, valores laboratoriais, histórico de titulação prévia, flags de contraindicação e dados de adesão.
A plataforma Vitally Health atende gestores de cuidado que acompanham pacientes com insuficiência cardíaca crônica remotamente. A necessidade: uma camada de suporte à decisão capaz de surfacear a próxima melhor ação medicamentosa para cada encontro com o paciente, fundamentada nas diretrizes e personalizada para o indivíduo.
O problema de tradução
Diretrizes clínicas são escritas em linguagem natural para clínicos. Convertê-las para código significa resolver ambiguidades:
- "Considere redução de dose se hipotensão sintomática" — qual limiar? Qual medicamento? Qual prazo?
- "A dose-alvo deve ser alcançada se tolerada" — como a tolerância é avaliada a partir de dados estruturados?
- As regras de contraindicação interagem de formas complexas: um paciente pode ser contraindicado para um medicamento por função renal, enquanto o cálculo de dose de outro medicamento depende do mesmo valor laboratorial.
A primeira fase do projeto foi menos sobre aprendizado de máquina e mais sobre raciocínio clínico estruturado: trabalhar com clínicos para converter diretrizes narrativas em tabelas de decisão explícitas, codificações categóricas e conjuntos de regras priorizados.
Decisões de design
Por que uma abordagem híbrida de regras e modelo?
Sistemas puramente baseados em regras são transparentes e seguros, mas frágeis — não conseguem generalizar para casos extremos não cobertos explicitamente. Modelos de ML puros generalizam, mas são mais difíceis de auditar e explicar para clínicos e reguladores. A abordagem híbrida coloca ranqueamento de ML sobre filtragem baseada em regras:
- Filtragem baseada em regras elimina opções contraindicadas ou inadequadas para um paciente.
- O modelo de ML ranqueia as opções restantes por benefício previsto, incorporando contexto específico do paciente.
- A saída é uma lista reduzida e ranqueada com explicações baseadas em regras para por que certas opções foram excluídas.
Codificações. Comorbidades, sinais vitais, valores laboratoriais e contraindicações foram codificados como features categóricas e ordinais com fronteiras clinicamente significativas (ex.: limites de eGFR das diretrizes). Isso tornou as entradas do modelo interpretáveis e a engenharia de features auditável pela equipe clínica.
Deploy. FastAPI + Pydantic para validação de requisições e auto-documentação; AWS Lambda para deploy serverless e econômico que escala com o uso; integração com o pipeline de dados de pacientes existente da plataforma.
O que aprendi
A parte mais difícil não foi o ML. Foi a engenharia do conhecimento — pegar expertise clínica implícita e torná-la explícita o suficiente para codificar sem perder a nuance que torna as diretrizes realmente úteis. Dois aprendizados se destacaram:
Explicabilidade é uma feature, não uma restrição. Em um contexto clínico regulado, um modelo que não consegue explicar sua recomendação é um modelo em que a equipe de cuidado não vai confiar e não vai usar. Projetar para explicabilidade desde o início (regras + modelo híbrido, codificações transparentes) facilitou a adoção.
O gap entre pesquisa e produção em saúde é amplo. O caminho de um notebook Jupyter funcionando a um serviço implantado em que um clínico confia envolve validação, auditabilidade, controle de versão para modelos e tratamento cuidadoso de casos extremos que um conjunto de dados de benchmark nunca exporia. Esse projeto aprofundou o respeito por esse gap — e pela disciplina de engenharia necessária para fechá-lo com responsabilidade.