/** * Obtiene una lista de objetos de tipo SelectedItem. * * @return la lista */ public List<SelectItem> getSelectedItemSubespecialidad() { try { List<CexEspecialidad> listaSelEsp = new ArrayList<>(); List<SelectItem> items = new ArrayList<>(); for (CexEspecialidad obj : especialidad.getCexEspecialidadList()) { for (CexEspecialidadMedico objSelEspmed : obj.getCexEspecialidadMedicoList()) { if (objSelEspmed.getAdmMedico().getAmeEstado() == 1 && objSelEspmed.getCexEspecialidad().getCesEstado() == 1) { for (CexHorario objSelHor : objSelEspmed.getCexHorarioList()) { if (((objSelHor.getChoFechaFin().after(fechaAgenda) || objSelHor.getChoFechaFin().equals(fechaAgenda)) && objSelHor.getAdmInstitucion().equals(user.getUser().getAdmInstitucion())) && objSelHor.getAdmTipoConsulta().getAtcTipo().equals(1)) { if (!listaSelEsp.isEmpty()) { if (!listaSelEsp.contains(obj)) { listaSelEsp.add(obj); items.add(new SelectItem(obj, obj.getCesNombre())); } } else { listaSelEsp.add(obj); items.add(new SelectItem(obj, obj.getCesNombre())); } } } } } } return items; } catch (Exception e) { log.error("getSelectedItemSubespecialidad() {} ", e.getMessage()); } return null; }
/** * Obtiene una lista de objetos de tipo SelectedItem de la entidad CexMedico. * * @return la lista */ public List<SelectItem> getSelectedItemMedico() { try { Calendar c1 = Calendar.getInstance(); c1.setTime(fechaAgenda); dia = c1.get(Calendar.DAY_OF_WEEK); List<CexEspecialidadMedico> listEspMed = new ArrayList<>(); // Filtra los horarios segun el dia actual List<SelectItem> items = new ArrayList<>(); for (CexEspecialidadMedico cexEspMed : subEspecialidad.getCexEspecialidadMedicoList()) { if (cexEspMed.getAdmMedico().getAmeEstado() == 1 && cexEspMed.getCexEspecialidad().getCesEstado() == 1) { for (CexHorario cexHorario : cexEspMed.getCexHorarioList()) { if (((cexHorario.getChoFechaFin().after(fechaAgenda) || cexHorario.getChoFechaFin().equals(fechaAgenda)) && cexHorario.getAdmInstitucion().equals(user.getUser().getAdmInstitucion())) && cexHorario.getAdmTipoConsulta().getAtcTipo().equals(1)) { for (CexHorariosDia cexHorarioDia1 : cexHorario.getCexHorariosDiaList()) { // Validar que sea el dia actual if (cexHorarioDia1.getCexDia().getCdiId().equals(dia)) { if (cexHorarioDia1.getChdHoraInicioAm() != null || cexHorarioDia1.getChdHoraFinAm() != null) { if (!listEspMed.contains( cexHorarioDia1.getCexHorario().getCexEspecialidadMedico())) { items.add( new SelectItem( cexHorarioDia1.getCexHorario().getCexEspecialidadMedico(), cexHorarioDia1 .getCexHorario() .getCexEspecialidadMedico() .getAdmMedico() .getAmeNombreFull())); listEspMed.add(cexHorarioDia1.getCexHorario().getCexEspecialidadMedico()); } } } } } } } } return items; } catch (Exception e) { log.error("getSelectedItemMedico() {} ", e.getMessage()); } return null; }
/** * Metodo que busca segun la especialidad , el Doctor y el horario que tiene asignado cada doctor * el turno mas cerca dispible * * @author David Carranza */ public void buscarTurnoListener() { String nombreMetodo = Thread.currentThread().getStackTrace()[1].getMethodName() + "()"; FacesContext context = FacesContext.getCurrentInstance(); int contHor = 0; listaHorarioDia.clear(); listaAgenda.clear(); List<CexAgenda> listTempAgen; try { // Recupera permiso para saber si se puede agendar en la fecha seleccionada List<AdmPermiso> objLicencia = (List<AdmPermiso>) adminObject.queryEJB( "select p from AdmPermiso p where :var1 between p.apeFechaInicio and p.apeFechaFin and p.admMedico = :var2", fechaAgenda, object.getAdmMedico()); // List<CexPermiso> objLicencia = adminObject.ejecutarQueryNativoLista("SELECT * FROM // cex_Permiso where med_id = " + // object.getCexHorario().getCexEspecialidadMedico().getCexMedico().getMedId() + " and date('" // + fecha + "') between per_fecha_inicio and per_fecha_fin;", CexPermiso.class); // Verifica si tiene permiso if (objLicencia.size() < 0 || objLicencia.isEmpty()) { // Recuper la lista del horario de acuerdo al dia seleciconado for (CexHorario objTemH : object.getCexHorarioList()) { // Agregar horario de acuerdo a la fecha if ((fechaAgenda.after(objTemH.getChoFechaInicio()) || objTemH.getChoFechaInicio().equals(fechaAgenda)) && (fechaAgenda.before(objTemH.getChoFechaFin()) || objTemH.getChoFechaFin().equals(fechaAgenda))) { // Verificar los horarios segun el tipo de consulta de la agenda if (objTemH.getAdmTipoConsulta().getAtcTipo().equals(1) && objTemH.getAdmInstitucion().equals(user.getUser().getAdmInstitucion())) { // Recorrer los horarios dias de cada horario for (CexHorariosDia objTemHd : objTemH.getCexHorariosDiaList()) { if (objTemHd.getCexDia().getCdiId().equals(dia)) { // Añadir solo el horario que tenga asignado hora inicio y hora fin if (objTemHd.getChdHoraInicioAm() != null && objTemHd.getChdHoraFinAm() != null) { listaHorarioDia.add(objTemHd); } } } } } } // Recuperar las agendas de acuerdo al horarioDia y de acuerdo a las fechas for (CexHorariosDia objHorDia : listaHorarioDia) { // Asignar numero de horario objHorDia.setOrdenHorario(contHor); listTempAgen = adminObject.listarOrdenada( CexAgenda.class, "cagFecha", fechaAgenda, "cexHorariosDia", objHorDia, "cagHora", true); for (CexAgenda objA : listTempAgen) { objA.setNumeroHorario(contHor); listaAgenda.add(objA); } listTempAgen.clear(); contHor++; } } else { AdmPermiso permiso = objLicencia.get(0); FacesContext.getCurrentInstance() .addMessage( findComponent(context.getViewRoot(), "formDatos").getClientId(), new FacesMessage( FacesMessage.SEVERITY_ERROR, "Agenda no disponible", "Médico no disponible en la fecha ha seleccioanda por motico de " + permiso.getApeMotivo() + "")); } } catch (Exception e) { log.error("{}: {} ", nombreMetodo, e); } }