¡Hola Alexis!
Parece que estás trabajando en la implementación de un CRUD para pacientes utilizando ResponseEntity en Spring Boot. Vamos a revisar cómo puedes estructurar cada operación del CRUD:
Registrar Paciente (POST):
ResponseEntity.created() para devolver un status 201 junto con la URI del nuevo recurso creado.UriComponentsBuilder.@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));
}
Listar Pacientes (GET):
ResponseEntity.ok().@GetMapping
public ResponseEntity<Page<DatosListaPaciente>> listar(@PageableDefault(page = 0, size = 10) Pageable paginacion) {
var page = repository.findAllByActivoTrue(paginacion).map(DatosListaPaciente::new);
return ResponseEntity.ok(page);
}
Actualizar Paciente (PUT):
ResponseEntity.ok() para devolver el paciente actualizado.@PutMapping
@Transactional
public ResponseEntity actualizar(@RequestBody @Valid DatosActualizacionPaciente datos) {
var paciente = repository.getReferenceById(datos.id());
paciente.actualizarInformacion(datos);
return ResponseEntity.ok(new DatosDetallePaciente(paciente));
}
Eliminar Paciente (DELETE):
ResponseEntity.noContent() para indicar que la operación fue exitosa pero no hay contenido que devolver.@DeleteMapping("/{id}")
@Transactional
public ResponseEntity eliminar(@PathVariable Long id) {
var paciente = repository.getReferenceById(id);
paciente.desactivar();
return ResponseEntity.noContent().build();
}
Detallar Paciente (GET):
@GetMapping("/{id}")
public ResponseEntity detallar(@PathVariable Long id) {
var paciente = repository.getReferenceById(id);
return ResponseEntity.ok(new DatosDetallePaciente(paciente));
}
Asegúrate de que tu repositorio y las clases de datos (DatosRegistroPaciente, DatosDetallePaciente, etc.) estén correctamente configuradas para manejar las operaciones necesarias.
Espero que esto te sea de ayuda y buenos estudios!