Triagem por IA no SUS: guia técnico realista para devs

Triagem por IA no SUS: guia técnico realista para devs

Acabei de ler a matéria da BBC News sobre as propostas dos candidatos à presidência em 2026 envolvendo IA no SUS — e, como dev, fiquei ao mesmo tempo animado e preocupado. Animado porque triagem inteligente é um problema clássico de dados que eu adoraria ver bem resolvido. Preocupado porque já vi enough sistemas “de IA” desastrosos para saber que, na saúde pública, margem de erro é sangue, não lucro perdido.

A ideia central é simples: trocar a fila por ordem de chegada — que é essencialmente um FIFO cego — por uma fila priorizada por gravidade e risco de progressão da doença. Tanto o plano do Lula quanto o do Flávio Bolsonaro mencionam isso. Mas o diabo mora no como, e é isso que nenhum plano de governo detalha. Vou descer fundo nesse “como” aqui, na visão de quem constrói esses sistemas.

Por que triagem por IA não é “só rodar um modelo”

Na minha experiência, quem chega com a ideia de “colocar IA no SUS” geralmente pensa em três etapas: pegar dados, treinar um classificador, jogar em produção. Quem já colocou modelo em produção sabe que a realidade é mais feia — especialmente quando o domínio é saúde.

O problema fundamental da triagem é que você não está só prevendo uma classe. Você está ranqueando pacientes por risco em janelas de tempo diferentes. Um paciente com dor torácica que vai infartar em 6 horas é mais urgente do que um com dor crônica que vai piorar em 6 meses. Como você codifica essa “urgência temporal” num rótulo de treino? Resposta curta: você precisa de especialistas clínicos definindo a função de custo, e isso custa dinheiro, tempo e reuniões intermináveis com o Ministério da Saúde.

O stack técnico realista para triagem no SUS

Esqueça o hype de LLM fazendo diagnóstico. Para triagem em larga escala, o caminho mais maduro combina modelos preditivos clássicos com algumas camadas de IA generativa para a interface. Vou destrinchar.

Camada 1: dados clínicos estruturados

Aqui mora o primeiro gargalo real. O SUS tem décadas de dados, mas espalhados em sistemas como o SUS Digital, e-SUS AB e DATASUS, muitos ainda em formulários parcialmente preenchidos ou em PDFs escaneados. Antes de qualquer modelo, você precisa de um pipeline de ETL robusto.

Na prática, em produção, isso vira algo assim:

import pandas as pd
from sklearn.preprocessing import StandardScaler
from sklearn.impute import SimpleImputer

def preprocess_sus_records(df: pd.DataFrame) -> pd.DataFrame:
    """
    Normaliza registros ambulatoriais do SUS para triagem preditiva.
    Cuidado: nunca descartar NaNs sem regra clínica. Em triagem,
    ausência de dado pode ser sinal (ex.: paciente não fez exame
    porque não voltou ao posto).
    """
    # Colunas críticas para triagem
    critical_cols = [
        'idade', 'sexo', 'pressao_sistolica', 'pressao_diastolica',
        'frequencia_cardiaca', 'saturacao_o2', 'temperatura',
        'queixa_principal', 'comorbidades', 'tempo_sintomas_h'
    ]

    # Imputação por mediana para vitais
    imputer = SimpleImputer(strategy='median')
    df[['idade', 'pressao_sistolica', 'frequencia_cardiaca']] = imputer.fit_transform(
        df[['idade', 'pressao_sistolica', 'frequencia_cardiaca']]
    )

    # Feature de risco temporal — crucial para triagem
    df['risco_score_base'] = (
        (df['idade'] / 80) * 0.20 +
        (df['pressao_sistolica'] / 200) * 0.15 +
        (df['tempo_sintomas_h'] / 168) * -0.10  # quanto mais tempo, mais arriscado
    )

    return df[critical_cols + ['risco_score_base']]

Perceba o detalhe: risco_score_base considera que tempo desde o início dos sintomas aumenta o risco. Isso é uma regra clínica, não algo que o modelo descobre sozinho. Quem delega isso 100% para o algoritmo costuma errar feio.

Camada 2: modelo de priorização

Aqui é onde aparece o equívoco mais comum. Muita gente acha que precisa de uma rede neural complexa. Não precisa. Para triagem, gradient boosting (XGBoost, LightGBM) ainda é rei — e por bons motivos:

  • Explicabilidade: você consegue extrair feature importance e mostrar para o médico por que aquele paciente foi priorizado. Em saúde, isso é obrigatório, não opcional.
  • Velocidade de inferência: poucos milissegundos por consulta, mesmo em hardware modesto. Importante quando você atende 150 milhões de pessoas.
  • Menos dado para treinar: comparado a deep learning, converge com datasets menores — o que é realista para o SUS.

Camada 3: LLM apenas para interface e NLP clínico

Aqui entra o uso legítimo de IA generativa: processar a queixa principal que veio como texto livre (“dor no peito que piora ao respirar há 3 dias”). Um modelo como o BioBERT ou um LLM local fine-tunable transforma isso em features estruturadas. Mas nunca para gerar diagnóstico final.

Na Prática: como eu implementaria um MVP de triagem

Vamos supor que você ganhou a licitação para o piloto em uma UPA de médio porte. Veja o passo a passo realista:

  1. Semana 1–2: mapear o fluxo atual com enfermeiros. Onde está o gargalo? Quais decisões são realmente clínicas vs. operacionais?
  2. Semana 3–4: extrair 12 meses de históricos da unidade (com anonimização rigorosa via LGPD).
  3. Semana 5–8: treinar baseline de XGBoost com labels definidos por protocolos como Manchester Triage ou NEWS2. Esses protocolos já são validados — use-os como ground truth inicial.
  4. Semana 9–10: rodar em shadow mode: o modelo ranqueia, mas a fila segue como antes. Você compara a ordem sugerida com a ordem real e mede concordância.
  5. Semana 11+: A/B test com supervisão médica obrigatória. Nenhum paciente vai ser “decidido por IA” sem enfermeiro validando.

O shadow mode é o que 90% das propostas de IA em saúde ignoram. Sem essa fase, você não tem ideia se o modelo está piorando a triagem ou melhorando.

Erros Comuns que eu já vi (e você vai cometer se não ler isso)

1. Treinar com dados de pacientes que já chegaram ao pronto-socorro

Viés de seleção brutal. Quem chega ao PS já passou por algum filtro — ônibus, distância, gravidade percebida. O modelo vai aprender a triar dentro desse subconjunto, não a triar a população que precisa. Isso é o clássico selection bias e mata qualquer sistema preditivo em saúde.

2. Confundir “acurácia” com “boa triagem”

Um modelo com 95% de acurácia pode estar errando justamente os 5% mais críticos — e ninguém percebe até o incidente virar manchete. Em triagem, as métricas que importam são sensibilidade no top-k e NDCG, não accuracy. Você quer garantir que os 10 pacientes mais urgentes do dia caiam no topo da fila, mesmo que o modelo erre casos intermediários.

3. Ignorar o “ruído” dos dados do SUS

Dados do SUS são ruidosos de verdade: profissionais sobrecarregados, abreviações, campos opcionais. Antes de qualquer modelo, você precisa de regras de qualidade de dados. Eu sempre implemento um validador assim:

def validate_vitals(row):
    """Retorna lista de flags de inconsistência."""
    flags = []
    if not (30 <= row['pressao_sistolica'] <= 300):
        flags.append('PA_SISTOLICA_IMPOSSIVEL')
    if row['frequencia_cardiaca'] > 250 or row['frequencia_cardiaca'] < 20:
        flags.append('FC_IMPOSSIVEL')
    if row['saturacao_o2'] > 100 or row['saturacao_o2'] < 50:
        flags.append('SPO2_IMPOSSIVEL')
    return flags

# Aplicar ANTES de qualquer feature engineering
df['data_quality_flags'] = df.apply(validate_vitals, axis=1)
df_clean = df[df['data_quality_flags'] == []]

4. Não ter plano de rollback

Se o sistema de triagem cair às 3h da manhã, o que acontece? Você precisa de fallback para a triagem manual em menos de 30 segundos. Parece óbvio, mas a maioria dos planos de IA em saúde que vi não menciona isso — e em produção, isso vai te derrubar.

5. Subestimar o custo de integração

O SUS roda em sistemas legados, alguns em Delphi, outros em mainframe. Integrar um modelo Python moderno com tudo isso é 60% do trabalho. Se a proposta de IA não fala em MVP de integração e em padrões como HL7 FHIR, é só slide de PowerPoint.

O que a proposta do Flávio Bolsonaro acerta (e onde vacila)

Na proposta citada pela BBC, o ponto forte é a ideia de "identificar quem corre maior risco de adoecer e chamar essa pessoa para se cuidar a tempo". Isso é razoável e tem nome técnico: preventive risk stratification. Modelos desse tipo já rodam no Reino Unido (NHS) e nos EUA, com resultados modestos mas reais em diabetes e hipertensão.

Onde a proposta vacila — e onde todas vacilam, na verdade — é em não mencionar quem audita o modelo. Quem garante que ele não está priorizando pacientes de bairros ricos porque os dados deles são mais completos? Sem comitê clínico permanente revisando viés e deriva, o sistema vira uma máquina de amplificar desigualdade. E adivinha? O SUS, que tem obrigação constitucional de equidade, não pode se dar a esse luxo.

Comparando com o que já existe fora do Brasil

Olha, antes de inventar do zero, vale olhar:

  • NHS UK — NHS AI Lab: testou modelos de triagem em A&E (accident & emergency) com shadow mode por 12 meses antes de qualquer decisão clínica. É o padrão-ouro.
  • Babylon Health (ruim exemplo): tentou chatbot diagnóstico direto ao paciente. Resultado? Investigação regulatória e reputação destruída. Mostra o que não fazer: IA generativa sem supervisão clínica.
  • Estônia — e-Health: 99% dos registros digitalizados e um sistema nacional de triagem digital. Modelo viável para país pequeno; escala para o Brasil é outro jogo.

O Brasil tem escala continental e complexidade que nenhum desses países tem. Copiar um modelo pronto sem adaptação é receita para desastre.

O que eu faria se estivesse escrevendo o plano

Se eu fosse assessor técnico de um candidato nessa pauta, meu plano teria:

  • Piloto em 5 UPAs com perfil demográfico distinto (capital, interior, periferia, Norte, Sul).
  • Stack aberto (Python + XGBoost + FastAPI), código publicado para auditoria.
  • Comitê clínico independente com poder de veto sobre mudanças no modelo.
  • Open data anonimizado dos resultados para a comunidade acadêmica brasileira — que é forte em IA e saúde.
  • Investimento pesado em infraestrutura de dados antes de modelo. Dados ruins + bom modelo = más decisões em escala.

FAQ — Perguntas que devs de verdade fariam

IA pode realmente substituir a triagem humana no SUS?
Não no curto prazo. O que é viável — e desejável — é aumentar o profissional de saúde com um sistema que sugere prioridade. A decisão final tem que ser humana, especialmente em casos ambíguos. Segundo a BBC News, as próprias propostas mencionam "auxílio" e "apoio", e é exatamente isso que a tecnologia permite hoje.

Qual o melhor algoritmo para triagem hospitalar?
Gradient boosting (XGBoost/LightGBM) pela explicabilidade e velocidade. Deep learning só justifica em imagens médicas (raio-X, retinografia). Para triagem baseada em sinais vitais e queixas, modelos mais simples ganham.

Como lidar com viés em dados médicos brasileiros?
Auditoria contínua de fairness metrics por subgrupo (raça, região, sexo). O dataset público SIM e SIH do DATASUS permite análise demográfica. Sem isso, você perpetua desigualdades históricas do sistema.

Quanto custa rodar um MVP de triagem por IA?
Para 1 UPA com 500 atendimentos/dia: estimativa realista de R$ 80–150 mil iniciais (infra, integração, 3 meses de calibração) + R$ 5–10 mil/mês de operação. É menos do que custa uma ressonância. O gargalo não é dinheiro — é governança de dados.

Quais protocolos clínicos posso usar como ground truth inicial?
Manchester Triage System, NEWS2 (para adultos), e PEWS (para pediatria). Todos validados internacionalmente e com implementação aberta. Não reinvente a roda.

Conclusão (sem enrolação)

IA no SUS é viável e potencialmente transformador — mas não é mágica, não é barato quando bem feito, e não substitui médico. As propostas que pipocaram nos planos de governo tratam isso como detalhe técnico, e é justamente o detalhe técnico que define se vira saúde pública melhor ou mais um sistema fracassado de TI.

Na minha experiência, o sucesso aqui depende menos do algoritmo e mais de três coisas chatas: governança de dados, integração com sistemas legados, e um comitê clínico com poder real. Sem isso, qualquer "IA no SUS" é só propaganda eleitoral com jargão técnico.

Se você é dev e quer se aprofundar nisso, vale olhar o repositório do NHSX AI Lab e os papers de Zerveas et al. sobre fair ML em saúde. Tem muito conteúdo aberto e aplicável ao contexto brasileiro.

Gostou? Me segue no GitHub e deixa um comentário se tiver dúvida ou quiser aprofundar algum ponto — principalmente se você trabalha com dados de saúde no Brasil.

Y

Yuri Sousa

Front-End Developer / Designer

Desenvolvedor apaixonado por criar experiências digitais acessíveis e visualmente perfeitas. Escrevo sobre desenvolvimento web, design e tecnologia.