Redator de SD — RMDS / SES-MG × Isis Saúde
App local que conduz a entrevista de redação de Solicitações de Demanda (SD) com um LLM, valida em código contra as regras do contrato (PE 29/2025) e mantém a base de conhecimento.
Primeira execução
- Chave de API — crie em https://console.anthropic.com → API Keys e coloque um crédito inicial pequeno (US$ 5–10 rendem dezenas de SDs).
- Configuração — copie
.env.examplepara.env(nesta pasta) e preenchaANTHROPIC_API_KEY. Defina tambémAPP_USUARIOeAPP_SENHApara ativar a tela de login (enquanto vazios, o app roda aberto e mostra um aviso). O.envnunca deve ser versionado nem compartilhado. - Dependências (só na primeira vez):
cd D:\IasisSaude\app npm install - Rodar:
e abra http://localhost:3344 no navegador.
npm start
Como funciona
- Nova SD: cole a demanda bruta → o redator entrevista você (uma pergunta por turno, opções viram botões) enquanto o painel do documento se atualiza ao vivo.
- Validação: os itens
codigodo checklist são recalculados em JavaScript a cada atualização — e o resultado é realimentado ao modelo, que se corrige sozinho. - Trava de integridade: exportação e envio ficam bloqueados até todos os artefatos serem confirmados (checkbox + data) e nenhuma falha de código restar.
- Envio: atribui o número definitivo (SD-NN) e registra a SD em
..\base-conhecimento.json— saldo de pools e precedentes ficam atualizados para as próximas entrevistas. - Documento / impressão: o botão "Documento / imprimir (PDF)" abre a SD formatada como documento oficial em uma aba pronta para Ctrl+P → salvar como PDF. Com pendências bloqueantes abertas, o documento sai com marca de RASCUNHO.
- Validar JSON externo (menu no topo): cole o JSON de uma SD que não nasceu no app — o validador recalcula tudo, roda o checklist e libera documento/download, sem salvar nada.
- Alimentar base (menu no topo): envie o documento de uma SD real (
.pdf,.mdou.txt;.docxdeve ser exportado como PDF). Uma chamada de LLM extrai o registro estruturado (itens, UST por item, período, status) e sugere capacidades reutilizáveis; a conferência determinística em código checa somas, itens, status e impacto nos pools. Nada é gravado sem revisão: você edita o registro, marca/desmarca capacidades e só então grava em..\base-conhecimento.json. Erros de conferência bloqueiam a gravação; regravar o mesmo SD-NN substitui o registro anterior (capacidades, porém, são sempre acrescentadas — ao regravar uma SD, desmarque as que já entraram na primeira vez). - Login: usuário único definido no
.env. As sessões vivem na memória do servidor — reiniciar o servidor exige novo login.
Arquivos de configuração (raiz do projeto, D:\IasisSaude)
| Arquivo | Papel |
|---|---|
prompt-redator-sd.md |
Comportamento do redator (system prompt) |
regras-sd.json |
Regras duras do contrato — fonte única |
schema-sd.json |
Formato da SD |
base-conhecimento.json |
Histórico: SDs enviadas e capacidades da plataforma |
Editar qualquer um deles muda o app na próxima reinicialização — não é preciso mexer em código.
Custos
O rodapé do chat mostra tokens e custo estimado em tempo real. O system prompt (prompt + regras + base) é cacheado pela API — turnos seguintes da mesma conversa pagam ~10% do preço no prefixo repetido.
Dados
data/sds.json— SDs e conversas (criado automaticamente; fora do versionamento).- Provedor/modelo/esforço configuráveis no
.env(LLM_PROVIDER,LLM_MODEL,LLM_EFFORT— low/medium/high/xhigh/max; medium recomendado para a entrevista). Adaptador OpenAI previsto para a fase 1.1 (src/llm/provider.js). - Seletor de modelo:
LLM_MODELOS(lista separada por vírgula) define os modelos oferecidos nos seletores das telas Nova SD e Base de Conhecimento; oLLM_MODELsempre entra como padrão. O modelo escolhido fica fixo para a SD inteira — trocar no meio da conversa descartaria o cache de prompt. O custo do rodapé usa a tabela de preços do Opus (a observação ao lado do valor lembra isso).
Atualização dos arquivos de configuração
O prompt do redator é remontado automaticamente quando base-conhecimento.json,
prompt-redator-sd.md, regras-sd.json ou schema-sd.json mudam no disco —
vale a partir da PRÓXIMA conversa, sem reiniciar o servidor. Exceção: mudanças em
regras-sd.json/schema-sd.json também alimentam o validador em código e a
ferramenta do modelo, que carregam na subida — para essas duas, reinicie.
Mudanças no .env sempre exigem reinício.