class GerarDisponibilidadeHorarioRN extends BaseBusiness {

	public Integer criarConsulta(Calendar dthrAtualCal,
			Calendar dthrAnteriorCal, AacHorarioGradeConsulta horario,
			Integer quantidadeGerada, Calendar duracao, String nomeMicrocomputador) throws NumberFormatException, BaseException {

		Boolean indGeraFeriado = horario.getGradeAgendamentoConsulta().getEspecialidade().isIndicHoraDispFeriado();
		Boolean indGeraTurno = false;
		
		AghFeriados feriado = getAghuFacade().obterFeriado(dthrAtualCal.getTime());
		
		if (feriado!= null && feriado.getTurno()!=null){
			if(feriado.getTurno() == DominioTurno.T && (dthrAtualCal.get(Calendar.AM_PM) == Calendar.AM)){
				indGeraTurno = true;
			}else if (feriado.getTurno() == DominioTurno.M && (dthrAtualCal.get(Calendar.AM_PM) == Calendar.PM)){
				indGeraTurno = true;
			}
		}
		
		if (indGeraFeriado || feriado == null || indGeraTurno){

			AacSituacaoConsultas situacaoConsulta = getAacSituacaoConsultasDAO().obterSituacaoConsultaPeloId("G");
			
			AacConsultas consulta = new AacConsultas();
			consulta.setDtConsulta(dthrAtualCal.getTime());
			consulta.setDiaSemana(CoreUtil.retornaDiaSemana(dthrAtualCal.getTime()));
			consulta.setGradeAgendamenConsulta(horario.getGradeAgendamentoConsulta());
			consulta.setTpsTipo(horario.getTpsTipo());
			consulta.setCondicaoAtendimento(horario.getFormaAgendamento().getCondicaoAtendimento());
			consulta.setTipoAgendamento(horario.getFormaAgendamento().getTipoAgendamento());
			consulta.setPagador(horario.getFormaAgendamento().getPagador());
			consulta.setExcedeProgramacao(Boolean.FALSE);
			consulta.setOrigem(DominioOrigemConsulta.A);
			consulta.setSituacaoConsulta(situacaoConsulta);
			consulta.setProjetoPesquisa(horario.getGradeAgendamentoConsulta().getProjetoPesquisa());

			getAmbulatorioFacade().inserirConsulta(consulta, nomeMicrocomputador, false);

			quantidadeGerada++;
		}	
		dthrAnteriorCal = (Calendar) dthrAtualCal.clone();
		dthrAtualCal.add(Calendar.HOUR_OF_DAY, duracao.get(Calendar.HOUR_OF_DAY));
		dthrAtualCal.add(Calendar.MINUTE, duracao.get(Calendar.MINUTE));		
		
		return quantidadeGerada;
	}

}