Ya estoy inscrito ¿Todavía no tienes acceso? Nuestros Planes
Ya estoy inscrito ¿Todavía no tienes acceso? Nuestros Planes
2
respuestas

No puedo generar una consulta! HELP!

Ingrese aquí la descripción de esta imagen para ayudar con la accesibilidad Este es el error que recibo al intentar agendar una consulta:

2023-09-22T22:45:21.260-03:00 ERROR 1256 --- [nio-8080-exec-4] o.a.c.c.C.[.[.[/].[dispatcherServlet] : Servlet.service() for servlet [dispatcherServlet] in context with path [] threw exception [Request processing failed: med.voll.api.infra.errores.ValidacionDeIntegridad: Este id para el paciente no fue encontrado] with root cause

med.voll.api.infra.errores.ValidacionDeIntegridad: Este id para el paciente no fue encontrado

Este es el codigo de mi AgendaDeConsultaService: package med.voll.api.domain.consulta;

import med.voll.api.domain.medico.Medico; import med.voll.api.domain.medico.MedicoRepository; import med.voll.api.domain.paciente.PacienteRepository; import med.voll.api.infra.errores.ValidacionDeIntegridad; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service;

@Service public class AgendaDeConsultaService {

@Autowired
private PacienteRepository pacienteRepository;
@Autowired
private MedicoRepository medicoRepository;
@Autowired
private ConsultaRepository consultaRepository;

public void agendar(DatosAgendarConsulta datos){

    if(pacienteRepository.findById(datos.idPaciente()).isPresent()) {
        throw new ValidacionDeIntegridad("Este id para el paciente no fue encontrado");
    }

    if(datos.idMedico()!=null && medicoRepository.existsById(datos.idMedico())) {
        throw new ValidacionDeIntegridad("Este id para el medico no fue encontrado");
    }

    var paciente = pacienteRepository.findById(datos.idPaciente()).get();

    var medico = seleccionarMedico(datos);

    var consulta = new Consulta(null, medico, paciente, datos.fecha());

    consultaRepository.save(consulta);
}

private Medico seleccionarMedico(DatosAgendarConsulta datos) {
    if (datos.idMedico() != null) {
        return medicoRepository.getReferenceById(datos.idMedico());
    }

    if(datos.especialidad()==null){
        throw new ValidacionDeIntegridad("debe seleccionarse una especialidad para el medico");
    }

    return medicoRepository.seleccionarMedicoConEspecialidadEnFecha(datos.especialidad(),datos.fecha());
}

}

En la base de datos existe tanto el paciente como el medico y ambos estan activos. Qué puede estar pasando? Hace horas que estoy con esto y hasta el ChatGPT se esta cansando! Desde ya, agradezco la ayuda.

2 respuestas

Al final lo resolví: tenía error en el el metodo agendar() en el AgendaDeConsultaService. El problema era que estaban mal puestos los signos de exclamación (!) y la condición quedaba "dada vuelta".

Mi codigo quedó asi:

package med.voll.api.domain.consulta;

import med.voll.api.domain.medico.Medico; import med.voll.api.domain.medico.MedicoRepository; import med.voll.api.domain.paciente.PacienteRepository; import med.voll.api.infra.errores.ValidacionDeIntegridad; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service;

@Service public class AgendaDeConsultaService {

@Autowired
private PacienteRepository pacienteRepository;
@Autowired
private MedicoRepository medicoRepository;
@Autowired
private ConsultaRepository consultaRepository;

public void agendar(DatosAgendarConsulta datos){

    if(!pacienteRepository.findById(datos.idPaciente()).isPresent()) {
        throw new ValidacionDeIntegridad("Este id para el paciente no fue encontrado" + datos.idPaciente());
    }

    if(datos.idMedico()!=null && !medicoRepository.existsById(datos.idMedico())) {
        throw new ValidacionDeIntegridad("Este id para el medico no fue encontrado");
    }

    var paciente = pacienteRepository.findById(datos.idPaciente()).get();

    var medico = seleccionarMedico(datos);

    var consulta = new Consulta(null, medico, paciente, datos.fecha());

    consultaRepository.save(consulta);
}

private Medico seleccionarMedico(DatosAgendarConsulta datos) {
    if (datos.idMedico() != null) {
        return medicoRepository.getReferenceById(datos.idMedico());
    }

    if(datos.especialidad()==null){
        throw new ValidacionDeIntegridad("debe seleccionarse una especialidad para el medico");
    }

    return medicoRepository.seleccionarMedicoConEspecialidadEnFecha(datos.especialidad(),datos.fecha());
}

}

Hola Alejandra,

Genial, gracias por compartir con nosotros =) Mucho éxito en todo lo que te propongas y si tienes alguna duda aquí estaremos para apoyarte.

¡Vamos juntos!

Si este post te ayudó, por favor, marca como solucionado ✓. Continúa con tus estudios