Contexto
As funcionalidades de escrita do módulo de vacinas foram removidas temporariamente para que sejam reconstruídas como exercício de treinamento.
Hoje o sistema mantém apenas a consulta de vacinas:
Listagem em /vaccines.
Busca/filtro por nome.
Endpoints GET de vacinas no backend.
Entidade, tabela, migrations e dados existentes.
O objetivo desta issue é que o dev reimplemente o CRUD de vacinas seguindo a arquitetura atual do projeto, preservando tudo que já funciona.
Problema
O sistema permite consultar vacinas cadastradas, mas não disponibiliza mais operações para manter esse cadastro.
É necessário restaurar as funcionalidades de:
Criar vacina.
Editar vacina.
Excluir vacina.
A implementação deve contemplar o frontend apps/apae e a API Java/Spring Boot em apps/api.
Referências
PR relacionado: {COLOQUE O LINK DO PR AQUI!}
Guia de reconstrução: docs/docs-vaccines/REBUILD_VACCINES_CRUD.md
Referência frontend de CRUD similar: apps/apae/src/domains/disorders
Referência backend de CRUD similar: DisorderController, DisorderApplicationServiceImpl
Objetivo da Solução
Recriar as operações de escrita do módulo de vacinas sem alterar a listagem, busca, entidade, banco de dados ou integração existente com pacientes.
Escopo Frontend
Implementar em apps/apae:
Recriar a rota /vaccines/new.
Recriar a rota /vaccines/[id]/edit.
Recriar formulário de criação de vacina.
Recriar formulário de edição de vacina.
Reintroduzir botão Adicionar na tela /vaccines, em desktop e mobile.
Reintroduzir ações de editar e excluir em cada item da listagem.
Recriar chamada de API para criar vacina.
Recriar chamada de API para editar vacina.
Recriar chamada de API para excluir vacina.
Recriar schemas/tipos/hooks exclusivos dessas operações.
Recriar proxy route para GET, PUT e DELETE em /api/vaccines/[id].
Reintroduzir POST em /api/vaccines.
Exibir feedback de sucesso e erro.
Solicitar confirmação antes da exclusão.
Impedir exclusão pela interface quando hasPatient for true, exibindo mensagem explicativa.
Recriar criação rápida de vacina no fluxo de cadastro de pacientes, se mantida no escopo da issue.
Escopo Backend
Implementar em apps/api:
Recriar DTOs de escrita de vacina.
Implementar POST /vaccines.
Implementar PUT /vaccines/{id}.
Implementar DELETE /vaccines/{id}.
Validar nome da vacina como obrigatório, com 2 a 100 caracteres.
Impedir criação ou edição com nome duplicado.
Impedir exclusão de vacina vinculada a paciente.
Retornar erros consistentes para:
Vacina inexistente.
Nome duplicado.
Vacina em uso por paciente.
Recriar exceções e handlers necessários.
Recriar métodos de service, mapper e controller necessários.
Manter intactos os endpoints GET existentes.
Fora de Escopo
Não alterar entidade Vaccine.
Não alterar banco de dados, migrations ou dados existentes.
Não alterar a listagem atual de vacinas.
Não alterar a busca/filtro por nome.
Não alterar funcionalidades de outros domínios.
Não remover nem modificar os endpoints GET de vacinas.
Critérios de Aceite
Evidência de Funcionamento Alvo do Cadastro, Edição e Deleção de Vacinas!
Gravacao.de.tela.de.2026-08-22.19-15-20.webm
Contexto
As funcionalidades de escrita do módulo de vacinas foram removidas temporariamente para que sejam reconstruídas como exercício de treinamento.
Hoje o sistema mantém apenas a consulta de vacinas:
/vaccines.GETde vacinas no backend.O objetivo desta issue é que o dev reimplemente o CRUD de vacinas seguindo a arquitetura atual do projeto, preservando tudo que já funciona.
Problema
O sistema permite consultar vacinas cadastradas, mas não disponibiliza mais operações para manter esse cadastro.
É necessário restaurar as funcionalidades de:
A implementação deve contemplar o frontend
apps/apaee a API Java/Spring Boot emapps/api.Referências
docs/docs-vaccines/REBUILD_VACCINES_CRUD.mdapps/apae/src/domains/disordersDisorderController,DisorderApplicationServiceImplObjetivo da Solução
Recriar as operações de escrita do módulo de vacinas sem alterar a listagem, busca, entidade, banco de dados ou integração existente com pacientes.
Escopo Frontend
Implementar em
apps/apae:/vaccines/new./vaccines/[id]/edit./vaccines, em desktop e mobile.GET,PUTeDELETEem/api/vaccines/[id].POSTem/api/vaccines.hasPatientfortrue, exibindo mensagem explicativa.Escopo Backend
Implementar em
apps/api:POST /vaccines.PUT /vaccines/{id}.DELETE /vaccines/{id}.GETexistentes.Fora de Escopo
Vaccine.GETde vacinas.Critérios de Aceite
/vaccinescontinua listando vacinas normalmente./vaccinescontinua filtrando vacinas por nome./vaccines/newpermite criar vacina com nome válido./vaccines/[id]/editcarrega os dados atuais da vacina.POST /vaccines.PUT /vaccines/{id}.DELETE /vaccines/{id}.404para vacina inexistente.Evidência de Funcionamento Alvo do Cadastro, Edição e Deleção de Vacinas!
Gravacao.de.tela.de.2026-08-22.19-15-20.webm