Skip to content

[TREINAMENTO] CRUD de Vacinas - Valdênio Pantaleão - #903

Open
denio06 wants to merge 2 commits into
training/patient-vaccine-crudfrom
feature/871-vacinas-crud-denio06
Open

[TREINAMENTO] CRUD de Vacinas - Valdênio Pantaleão#903
denio06 wants to merge 2 commits into
training/patient-vaccine-crudfrom
feature/871-vacinas-crud-denio06

Conversation

@denio06

@denio06 denio06 commented Aug 26, 2026

Copy link
Copy Markdown
Collaborator

O que mudou?

Este PR implementa o CRUD completo de vacinas, tanto no backend (API) quanto no frontend (APAE). Antes da mudança, as vacinas só podiam ser listadas e consultadas; agora é possível criar, editar e excluir registros de vacinas, com validações e tratamento de conflitos.

Issue Relacionadas

Closes #873

Mudanças Realizadas

  • API — Criação, edição e exclusão de vacinas: novos endpoints POST /vaccines, PUT /vaccines/{id} e DELETE /vaccines/{id} com DTOs de entrada validados (CreateVaccineDTO, UpdateVaccineDTO), lógica de negócio no VaccineApplicationServiceImpl, mapeamento e métodos no repositório (existsByNameIgnoreCaseAndIdNot).
  • API — Exceções e tratamento de erros: novas exceções VaccineConflictException (nome duplicado) e VaccineInUseException (vacina vinculada a pacientes), tratadas no PatientExceptionHandler com status 409 Conflict e 404 Not Found para vacina inexistente.
  • Frontend — Páginas de criação e edição: novas rotas /vaccines/new e /vaccines/[id]/edit, com formulários e hooks (use-vaccine-create, use-vaccine-edit), schemas Zod de validação e campos com capitalização automática.
  • Frontend — Ações na listagem: botão "Adicionar" na listagem de vacinas, e ações de editar/excluir em cada item da lista, com modal de confirmação para exclusão e bloqueio (com tooltip) para vacinas associadas a pacientes.
  • Frontend — Integração com a API: funções fetchVaccineApi, createVaccineApi, updateVaccineApi e deleteVaccineApi, além das rotas proxy do Next.js (POST /api/vaccines e /api/vaccines/[id]).

Evidências

As evidências estão registradas e documentadas na issue .

@denio06 denio06 self-assigned this Aug 26, 2026
@coderabbitai

coderabbitai Bot commented Aug 26, 2026

Copy link
Copy Markdown
Contributor

Important

Review skipped

Auto reviews are disabled on base/target branches other than the default branch.

Please check the settings in the CodeRabbit UI or the .coderabbit.yaml file in this repository. To trigger a single review, invoke the @coderabbitai review command.

⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Pro Plus

Run ID: 7ac44d05-9fbd-453e-b353-efbc70f55636

You can disable this status message by setting the reviews.review_status to false in the CodeRabbit configuration file.

Use the checkbox below for a quick retry:

  • 🔍 Trigger review

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

@denio06 denio06 changed the title Feature/871 vacinas crud denio06 [TREINAMENTO] CRUD de Vacinas - Valdênio Pantaleão Aug 26, 2026
@euAllanDev
euAllanDev requested review from Brunafern and euAllanDev and removed request for Brunafern August 28, 2026 16:01
@Brunafern
Brunafern self-requested a review August 28, 2026 16:46
@euAllanDev

Copy link
Copy Markdown
Contributor

PRIMEIRA REVIEW

Correções necessárias:

  • A edição não funciona porque botão “Editar” direciona para rota /vaccines/[id]/edit, mas essa página não foi criada. O formulário e chamada de atualização existem, porém nunca são exibidos. Criar página de edição que receba ID da vacina e renderize formulário correspondente.

  • A validação do nome no frontend também está incompleta: aceita nome com apenas um caractere, enquanto backend exige entre 2 e 100 caracteres. Ajustar validação de criação e edição para seguir mesma regra e exibir erro antes de enviar requisição.

  • Também existe problema no tratamento de erros pelas rotas do frontend. Quando backend retorna erro de nome duplicado, nome inválido, vacina inexistente ou vacina vinculada a paciente, frontend transforma resposta em erro genérico 500. Assim usuário não recebe motivo correto. Rotas devem preservar status e mensagem retornados pelo backend.

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

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants