1

Pitch: Movimenta Saúde: UBS, UPA ou urgência?

Na última semana construí o Movimenta Saúde, um projeto de orientação em saúde pública: o cidadão descreve o que está sentindo, e o sistema diz se o caso é de UBS, UPA ou urgência (192) — mostrando na hora a unidade pública mais próxima. Queria compartilhar as decisões técnicas e pegar feedback de quem já mexeu com algo parecido.

O problema
Só as UPAs do estado do Rio registraram mais de 2,7 milhões de atendimentos entre janeiro e novembro de 2025. Estudos mostram que boa parte dessa demanda é de casos que uma UBS resolveria — gente que não sabia qual porta da rede procurar, ou que foi parar no pronto-socorro porque a UBS estava fechada.

Não é uma ideia nova, inclusive: o próprio Meu SUS Digital já tem algo parecido, mas é uma funcionalidade pouco divulgada e difícil de achar dentro do app. A aposta aqui é ser a porta de entrada simples que ainda falta.

A decisão arquitetural que mais me interessa comentar aqui
O ponto mais interessante tecnicamente, pra mim, não é a triagem em si — é a separação entre extração e decisão:

Uma LLM só transforma a fala livre do usuário ("tô com dor de barriga há 2 dias") em campos estruturados: sintoma, intensidade, sinais de alerta.
Um motor de regras determinístico decide o destino. Cada regra tem fonte oficial citada (Ministério da Saúde, protocolos de classificação de risco) e status de revisão por profissional de saúde (pendente_revisao até validação).
Ou seja: a IA nunca decide o destino clínico de ninguém. Isso é auditável — toda recomendação pode ser rastreada até a regra e a fonte que a geraram. Em domínio de saúde, "a IA decidiu" não é uma resposta aceitável pra mim, nem acho que deveria ser pra quem avalia o projeto depois.

Confiabilidade dos dados
O CNES (cadastro oficial de estabelecimentos de saúde) tem inconsistências conhecidas — endereço desatualizado, duplicidade, unidade desativada que ainda aparece ativa. O pipeline busca o CNPJ de cada unidade e cruza com outras fontes públicas como uma segunda checagem antes de confiar no dado o suficiente pra orientar alguém. Isso acabou virando boa parte do trabalho real do projeto — processar dado público brasileiro é bem mais sujo do que a demo sugere.

Acolhimento a quem não fala português
A interface tem tradução completa pra inglês (navegação, triagem, resultado — nunca os dados em si, como nome/endereço de unidade, que são dado real e ficam em português). Cada unidade indicada abre direto no Google Maps a partir do endereço, então a barreira de idioma não impede a pessoa de efetivamente chegar lá. O SUS é universal mesmo pra estrangeiro não documentado (art. 196 da Constituição), e boa parte desse público nem sabe como a rede brasileira funciona.

Stack
FastAPI + PostgreSQL/PostGIS no backend, Next.js no frontend seguindo o gov.br Design System, piloto rodando com dados de 5 municípios da região metropolitana do Rio.

Por que o código está fechado
Diferente do que costumo fazer, o repositório é público só na documentação — dados, fontes citadas e screenshots (código fica privado por enquanto). O motivo: há uma integração em andamento com login único gov.br, e descobri que não dá pra simplesmente ativar login gov.br em produção como dev independente — a plataforma só libera credencial de produção pra sistemas vinculados a um órgão público (gestor de serviço público solicitando, conforme Decreto 8.936/2016). Documentei essa trava toda no README. Enquanto isso não resolve, mantenho o código fechado e mostro o projeto funcionando sob demanda.

Repositório (dados, fontes e documentação públicos): https://github.com/Maiconjss/movimenta-saude

O que fica no backlog, de propósito
Tem uma feature de avaliação das unidades (nota + comentário, moderado manualmente, sem exigir login) já implementada no backend, mas desativei a exibição por enquanto — quero entender melhor o problema de moderação/abuso antes de expor isso pra usuário final.

O que eu queria ouvir de vocês
Acham a separação LLM-extrai / regra-decide o caminho certo pra domínio sensível, ou é excesso de cautela minha?
Alguém já bateu de frente com essa trava do login único gov.br exigir vínculo institucional? Tem algum atalho que eu não vi?
Acham válido abrir o código mais cedo (mesmo sem o login gov.br resolvido)

Carregando publicação patrocinada...