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!

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!