class ListarCirurgiasCanceladasON extends BaseBusiness {

	public List<CirurgiasCanceladasVO> listarCirurgiasCanceladas(
			String orderProperty, boolean asc,
			PortalPesquisaCirurgiasParametrosVO portalPesquisaCirurgiasParametrosVO) throws ApplicationBusinessException {
		try{
			portalPesquisaCirurgiasParametrosVO.setDesmarcar(parametroFacade.buscarValorShort(AghuParametrosEnum.P_MOT_DESMARCAR));
			portalPesquisaCirurgiasParametrosVO.setDesmarcarAdm(parametroFacade.buscarValorShort(AghuParametrosEnum.P_MOT_DESMARCAR_ADM));
		}catch(ApplicationBusinessException e){
			logError("Ocorreu um erro ao buscar o parâmetro P_AGHU_CODIGOS_TIPO_ALTA_MEDICA na tabela AGH_PARAMETROS.");
		}
		
		List<CirurgiasCanceladasVO> listaCirurgiasCanceladasCompleta = new ArrayList<CirurgiasCanceladasVO>();

		List<CirurgiasCanceladasVO> listaCirurgiasCanceladas = 
			getMbcCirurgiasDAO().pesquisarCirurgiasCanceladas(
					portalPesquisaCirurgiasParametrosVO);

		Integer pciSeqPortal = portalPesquisaCirurgiasParametrosVO.getPciSeqPortal();
		
		for(CirurgiasCanceladasVO vo : listaCirurgiasCanceladas){

			// FUNCTION MBCC_PROC_PRIN_SEQ - EPR_PCI_SEQ - condicao do where 
			
			MbcProcedimentoCirurgicos mbcProcedimentoCirurgicos = getListaCirurgiasCanceladasRN().
				pesquisarMbcProcEspPorCirurgiasByCirurgia(vo.getCirSeq());
			
			Integer eprPciSeq = mbcProcedimentoCirurgicos != null ? mbcProcedimentoCirurgicos.getSeq() : null;
			
			
			if  (pciSeqPortal == null || pciSeqPortal.equals(eprPciSeq)) {
				
				//C4
				AghCaractUnidFuncionais caract = getAghuFacade()
				.obterAghCaractUnidFuncionaisPorChavePrimaria(
						new AghCaractUnidFuncionaisId(
								vo.getUnfSeq(),
								ConstanteAghCaractUnidFuncionais.UNID_EXECUTORA_CIRURGIAS));

				AghUnidadesFuncionais aghUnidadeFuncional = caract
					.getUnidadeFuncional();
				vo.setUnfSigla(aghUnidadeFuncional.getSigla());
		
		
				// C5
				vo.setDescConv(this.getInternacaoFacade().obterDescricaoConvenioPlano
						(vo.getCspSeq(), vo.getCspCnvCodigo()));
		
				// Regime
				if (vo.getOrigemIntLocal() != null){
					vo.setRegime(vo.getOrigemIntLocal());
				}else {
					
					vo.setRegime(vo.getOrigemPacienteCirurgia().getDescricao());
				}
				
				// FUNCTION MBCC_PROC_PRIN_DESCR - PCI_DESCRICAO - DESC_PROCED
	
				vo.setPciDescricao(mbcProcedimentoCirurgicos != null ? mbcProcedimentoCirurgicos.getDescricao() : null);
				
				// FUNCTION MBCC_BUSCA_RESP_USUL - EQUIPE
				
				vo.setEquipe(this.getListaCirurgiasCanceladasRN().
						pesquisarEquipeporCirurgia(vo.getCirSeq()));
				
				listaCirurgiasCanceladasCompleta.add(vo);
			}
		}
		
		
		CoreUtil.ordenarLista(listaCirurgiasCanceladasCompleta,orderProperty,asc);
		
		return listaCirurgiasCanceladasCompleta;
	}

}