Ya estoy inscrito ¿Todavía no tienes acceso? Nuestros Planes
Ya estoy inscrito ¿Todavía no tienes acceso? Nuestros Planes
1
respuesta

haga lo que hicimos en el aula

@PostMapping
@Transactional
public ResponseEntity registrar(@RequestBody @Valid DatosRegistroPaciente datos, UriComponentsBuilder uriBuilder) {
    var paciente = new Paciente(datos);
    repository.save(paciente);

    var uri = uriBuilder.path("/pacientes/{id}").buildAndExpand(paciente.getId()).toUri();
    return ResponseEntity.created(uri).body(new DatosDetallePaciente(paciente));
}

@GetMapping
public ResponseEntity<Page<DatosListadoPaciente>> listar(@PageableDefault(size = 10, sort = {"nombre"}) Pageable paginacion) {
    var page = repository.findAllByAtivoTrue(paginacion).map(DatosListadoPaciente::new);
    return ResponseEntity.ok(page);
}

@PutMapping
@Transactional
public ResponseEntity actualizar(@RequestBody @Valid DatosActualizacionPaciente datos) {
    var paciente = repository.getReferenceById(datos.id());
    paciente.actualizarInformacion(datos);

    return ResponseEntity.ok(new DatosDetallePaciente(paciente));
}

@DeleteMapping("/{id}")
@Transactional
public ResponseEntity eliminar(@PathVariable Long id) {
    var paciente = repository.getReferenceById(id);
    paciente. desactivar();

    return ResponseEntity.noContent().build();
}
1 respuesta

Hola Justin,

Gracias por compartir tu código. Parece que estás implementando un controlador REST en Spring Boot para gestionar operaciones CRUD sobre una entidad llamada "Paciente". Aquí tienes algunos comentarios y sugerencias que podrían ayudarte:

  1. Registrar Paciente: Tu método registrar parece bien estructurado. Estás usando @Valid para validar la entrada, lo cual es excelente para asegurar que los datos recibidos son correctos. Además, estás utilizando UriComponentsBuilder para construir la URI del nuevo recurso, lo cual es una buena práctica.

  2. Listar Pacientes: En el método listar, estás usando Pageable para la paginación, lo cual es muy útil para manejar grandes cantidades de datos. Además, ordenar por "nombre" es una buena elección para mejorar la usabilidad.

  3. Actualizar Paciente: El método actualizar está correctamente utilizando getReferenceById para obtener una referencia al paciente que se va a actualizar. Asegúrate de que el método actualizarInformacion en tu entidad Paciente esté manejando correctamente los cambios.

  4. Eliminar Paciente: En el método eliminar, estás llamando a desactivar en lugar de eliminar el registro. Esto es una práctica común para mantener un historial de los datos. Asegúrate de que el método desactivar esté marcando al paciente como inactivo correctamente.

Un aspecto a considerar es el manejo de excepciones. Podrías querer implementar un controlador de excepciones global para manejar casos como cuando un paciente no es encontrado, lo cual mejorará la robustez de tu API.

Espero que estos comentarios te sean útiles.