/**
   * 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;
 }