class ConcluirSumarioAltaRN extends BaseBusiness {

	@SuppressWarnings("PMD.NPathComplexity")
	public boolean existeProcedimentosComLaudoJustificativaParaImpressao(AghAtendimentos atendimento) throws BaseException {
		if (atendimento == null || atendimento.getSeq() == null) {
			throw new IllegalArgumentException(PARAMETRO_INVALIDO);
		}
		
		// Busca parametros de sistemas das situações de exames
		AghParametros objParamSituacaoLiberado = this.getParametroFacade().buscarAghParametro(AghuParametrosEnum.P_SITUACAO_LIBERADO);
		String vLI = (objParamSituacaoLiberado != null && objParamSituacaoLiberado.getVlrTexto() != null) ? objParamSituacaoLiberado.getVlrTexto() : "";
		AghParametros objParamSituacaoAreaExecutora = this.getParametroFacade().buscarAghParametro(AghuParametrosEnum.P_SITUACAO_NA_AREA_EXECUTORA);
		String vAE = (objParamSituacaoAreaExecutora != null && objParamSituacaoAreaExecutora.getVlrTexto() != null) ? objParamSituacaoAreaExecutora.getVlrTexto() : "";
		AghParametros objParamSituacaoExecutando = this.getParametroFacade().buscarAghParametro(AghuParametrosEnum.P_SITUACAO_EXECUTANDO);
		String vEX = (objParamSituacaoExecutando != null && objParamSituacaoExecutando.getVlrTexto() != null) ? objParamSituacaoExecutando.getVlrTexto() : "";
		
		// Busca mpm_tipo_laudos e fat_proced_hosp_internos
		List<FatProcedHospInternos> list = getFaturamentoFacade().buscaProcedimentosComLaudoJustificativaParaImpressao(atendimento);
		boolean temTipoLaudoOuProcedHospInterno = (list != null && !list.isEmpty());
		
		// Busca dados de ael_solicitacao_exames
		boolean temSolicitacaoExames = false;
				
		List<String> listSituacaoCodigo = Arrays.asList(vAE, vEX, vLI);
		List<AelSolicitacaoExames> listaSolicitacaoExame = getExamesLaudosFacade().pesquisarSolicitacaoExamePorAtendimento(atendimento.getSeq(), listSituacaoCodigo);
		
		if (listaSolicitacaoExame != null) {
			
			IExamesLaudosFacade facade = getExamesLaudosFacade();
			List<Integer> listaSoeSeq = new LinkedList<Integer>();
			for (AelSolicitacaoExames soe : listaSolicitacaoExame) {
				DominioOrigemAtendimento origemAtd = facade.buscaLaudoOrigemPacienteRN(soe.getSeq());
				if (DominioOrigemAtendimento.I == origemAtd) {
					listaSoeSeq.add(soe.getSeq());
				}
			}
			if (!listaSoeSeq.isEmpty()) {
				List<AelItemSolicitacaoExames> iseList = getExamesLaudosFacade().buscaItemSolicitacaoExamesComRespostaQuestao(listaSoeSeq);
				temSolicitacaoExames = (iseList != null && !iseList.isEmpty());
			}
		}
		
		return (temTipoLaudoOuProcedHospInterno || temSolicitacaoExames);
	}

}