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

08 Haga lo que hicimos: ResponseEntity para pacientes

para las funcionalidades del CRUD de los pacientes

Ingrese aquí la descripción de esta imagen para ayudar con la accesibilidad

Ingrese aquí la descripción de esta imagen para ayudar con la accesibilidad

Ingrese aquí la descripción de esta imagen para ayudar con la accesibilidad

Ingrese aquí la descripción de esta imagen para ayudar con la accesibilidad

Ingrese aquí la descripción de esta imagen para ayudar con la accesibilidad

Ingrese aquí la descripción de esta imagen para ayudar con la accesibilidad

Ingrese aquí la descripción de esta imagen para ayudar con la accesibilidad

Ingrese aquí la descripción de esta imagen para ayudar con la accesibilidad

1 respuesta

Hola Estudiante, espero que estés bien

Veo que estás trabajando en implementar las funcionalidades CRUD para pacientes usando ResponseEntity en Spring Boot. Vamos a revisar cómo puedes estructurar estas funcionalidades de manera efectiva.

Registro de Paciente

Para registrar un nuevo paciente, parece que ya tienes un método que toma un objeto DatosRegistroPaciente y lo guarda en la base de datos. Asegúrate de manejar posibles excepciones, como duplicados o errores de validación.

@PostMapping
public ResponseEntity<DatosDetallePaciente> 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

Para listar los pacientes, estás usando Pageable para manejar la paginación, lo cual es una buena práctica.

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

Actualizar Paciente

Para actualizar un paciente, asegúrate de que el ID del paciente exista antes de intentar actualizarlo.

@PutMapping
public ResponseEntity<DatosDetallePaciente> actualizar(@RequestBody @Valid DatosActualizacionPaciente datos) {
    var paciente = repository.getReferenceById(datos.id());
    paciente.actualizarInformacion(datos);
    return ResponseEntity.ok(new DatosDetallePaciente(paciente));
}

Eliminar Paciente

Para eliminar un paciente, puedes hacer una eliminación lógica o física. En tu código, parece que estás usando una eliminación lógica.

@DeleteMapping("/{id}")
public ResponseEntity<Void> eliminar(@PathVariable Long id) {
    var paciente = repository.getReferenceById(id);
    paciente.desactivar();
    return ResponseEntity.noContent().build();
}

Detallar Paciente

Para obtener los detalles de un paciente en particular:

@GetMapping("/{id}")
public ResponseEntity<DatosDetallePaciente> detallar(@PathVariable Long id) {
    var paciente = repository.getReferenceById(id);
    return ResponseEntity.ok(new DatosDetallePaciente(paciente));
}

Asegúrate de manejar las excepciones adecuadamente, como cuando un paciente no es encontrado. Puedes usar @ExceptionHandler para manejar estas situaciones globalmente.

Espero que esto te ayude a estructurar tus funcionalidades CRUD de manera efectiva. ¡Bons estudios!