e-Gestão
O hub de um ecossistema de saúde pública
- Meu papel
- Desenvolvedor full stack · condução do projeto · banco e infraestrutura
- Cliente
- Wi Consultoria
- Setor
- Saúde pública municipal · Brasil
- Período
- 2023 — presente
- Status
- Em produção
Código proprietário. Sistema privado de cliente — o repositório não é público.
Números
400+
municípios atendidos
Em 26 estados. Cada um isolado como inquilino próprio.
200+
telas em produção
Relatórios, gestão, vigilância, portal do cidadão e painéis.
50+
módulos de API
Cada um com suas rotas, ACL e camada de exportação.
300+
migrations de banco
Schema versionado desde o primeiro dia.
7
sistemas sob o hub
R-SUS, SUS Direto, Willy, Painel, Visa, BPA Online, Nuvem PEC.
Contexto
Toda secretaria municipal de saúde do Brasil registra atendimento no PEC — o Prontuário Eletrônico do Cidadão do e-SUS APS, instalado localmente, município por município. O dado existe, mas fica preso: para responder “como está a atenção primária aqui?” o gestor depende de exportação manual, planilha e boa vontade. Quando a resposta chega, o mês já passou.
O problema
Transformar bases locais e heterogêneas de PEC em relatório confiável, comparável e auditável — para centenas de municípios ao mesmo tempo, com regra ditada por nota técnica do Ministério da Saúde que muda, e sem nunca deixar dado de um município aparecer para outro. E o detalhe que muda tudo: um número errado aqui não é bug de UI, é decisão de saúde tomada em cima de informação falsa.
A abordagem
Nada de consultar o PEC ao vivo. O sistema extrai, transforma e espelha em tabelas próprias no PostgreSQL, e todo relatório lê do espelho. Isso dá três coisas de graça: o PEC do município nunca sofre carga de leitura pesada, o schema fica sob nosso controle, e a mesma pergunta feita duas vezes dá a mesma resposta. Em cima do espelho, um shell de relatório padronizado — filtro, tabela, exportação — que se repete em mais de 200 telas sem cada uma reinventar a roda.
Arquitetura
- 01
Extração
Leitura das bases do PEC no município. Fonte da verdade clínica, tratada como read-only — o sistema nunca escreve no prontuário.
- PostgreSQL
- Knex
- 02
Transformação em fila
Pipeline assíncrono: normaliza, deduplica e materializa nas tabelas espelho. Fila observável, com tela de acompanhamento — sincronização travada é problema visível, não silencioso.
- Bull
- Redis
- Node.js
- 03
Camada de indicadores
As regras de numerador e denominador de cada indicador viram código versionado, com a nota técnica que as originou registrada ao lado. Quando o Ministério muda a regra, a mudança é rastreável — e o gestor vê na tela de onde o número saiu.
- TypeScript
- SQL
- 04
API com ACL por papel
Express + Knex, mais de 50 módulos de rota. JWT em cookie httpOnly e autorização por papel — equipe interna, gestor municipal, profissional. O inquilino vem do código IBGE na URL e é verificado no servidor, nunca confiado no cliente.
- Express
- Knex
- JWT
- Zod
- 05
Interface e exportação
Next.js App Router com TanStack Query. O PDF não é montado à mão: existe uma rota de impressão que renderiza a mesma tela em layout de papel e o Puppeteer captura. Um relatório, uma verdade.
- Next.js
- React
- TanStack Query
- Puppeteer
- XLSX
- 06
Operação
VPS Linux com Nginx e PM2, processo de API separado do worker de fila, S3 para arquivos e push para notificação. Configuração, endurecimento e deploy fazem parte do meu escopo.
- Linux
- Nginx
- PM2
- AWS S3
- Web Push
As partes difíceis
Multi-inquilino que não pode falhar uma vez
O código IBGE de seis dígitos vive na URL, mas ele não é a autorização — é só a intenção. Cada requisição resolve o município no servidor e confere contra o papel do usuário. Com mais de 400 municípios na mesma instalação, vazar dado de saúde entre eles não é bug de severidade média; é o tipo de falha que encerra um produto.
A tela e o PDF têm que contar a mesma história
A geração de PDF era um gerador separado, em outra linguagem, com sua própria interpretação da regra — duas fontes de verdade e divergência garantida. A migração para renderizar a própria página em modo impressão e capturar matou a classe inteira de bug “o relatório não bate com a tela”.
Regra que muda por decreto
Indicador de saúde não é requisito estável: o Ministério publica nota técnica nova e o numerador muda. A resposta foi tratar a nota técnica como artefato de primeira classe, versionada junto ao código que a implementa e ligada à explicação que o gestor lê na tela.
Consistência em 200+ telas
Com essa quantidade de relatório, criatividade por tela é dívida. O shell de relatório existe para que uma tela nova nasça previsível: filtro no mesmo lugar, exportação com o mesmo comportamento, vazio com a mesma cara.
O que é meu
- Desenvolvimento full stack das telas de relatório e das rotas de API que as alimentam
- Modelagem do banco, escrita e otimização de query, e as migrations que versionam o schema
- Pipeline de sincronização PEC → tabelas espelho, com fila e acompanhamento
- Camada de exportação: rota de impressão, captura em PDF, CSV e XLSX
- Autenticação, ACL por papel e isolamento por inquilino
- Configuração, segurança e deploy dos servidores de produção
- Condução dos projetos em andamento — priorização, escopo e organização da entrega
Resultado
Roda em produção, em uso diário dentro de secretarias municipais de saúde de mais de 400 municípios, em 26 estados. Cresceu de relatório para ecossistema: sete sistemas sob um portal único, com painel de chamadas na recepção e assistente com IA dentro da própria ferramenta. Para o gestor, a mudança concreta é enxergar o indicador durante o mês em vez de descobrir o resultado depois.
O que eu levei
- 01Domínio antes de código. A parte difícil de saúde pública não é React, é entender a regra que o Estado escreveu.
- 02Espelhar dado em vez de consultar a fonte viva resolveu performance, estabilidade e reprodutibilidade de uma vez.
- 03Uma fonte de verdade por resposta. Duas implementações da mesma regra sempre divergem — a questão é só quando.
- 04Padrão repetível vale mais que tela bonita quando existem mais de 200 delas.
- 05Escrever software que outra pessoa depende para trabalhar é a melhor escola de engenharia que existe.