Skip to content

[TREINAMENTO] Implementar criação, edição e exclusão de vacinas - Bruna Fernanda #891

Description

@Brunafern

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

  • /vaccines continua listando vacinas normalmente.
  • /vaccines continua filtrando vacinas por nome.
  • A listagem possui ação de adicionar vacina em desktop e mobile.
  • /vaccines/new permite criar vacina com nome válido.
  • Após criar uma vacina, o usuário recebe feedback e retorna para a listagem.
  • Cada vacina possui ação de edição.
  • /vaccines/[id]/edit carrega os dados atuais da vacina.
  • A edição persiste o novo nome e reflete na listagem.
  • Cada vacina sem vínculo com paciente pode ser excluída com confirmação.
  • Vacinas vinculadas a pacientes não podem ser excluídas.
  • A interface informa o motivo quando a exclusão estiver bloqueada.
  • A API disponibiliza POST /vaccines.
  • A API disponibiliza PUT /vaccines/{id}.
  • A API disponibiliza DELETE /vaccines/{id}.
  • A API impede nomes duplicados.
  • A API retorna 404 para vacina inexistente.
  • A API retorna erro adequado ao tentar excluir vacina vinculada a paciente.
  • Os testes existentes de listagem e busca continuam passando.
  • Lint, testes e build do frontend e backend foram executados e documentados na entrega.

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

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

Labels

Type

No type

Projects

No projects

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions