class MovimentacaoProntuarioRN extends BaseBusiness {

	public void executarAntesInserirMovimentacaoProntuario(AipMovimentacaoProntuarios newMovPront) throws ApplicationBusinessException {
		   
		if ((newMovPront.getSituacao() == null || 
			newMovPront.getSituacao().equals(DominioSituacaoMovimentoProntuario.S) ||
			newMovPront.getSituacao().equals(DominioSituacaoMovimentoProntuario.R) ||
			newMovPront.getSituacao().equals(DominioSituacaoMovimentoProntuario.Q)) &&
			!newMovPront.getTipoEnvio().equals(DominioTipoEnvioProntuario.P)) {
			
			List<AipMovimentacaoProntuarios> lista = getAipMovimentacaoProntuarioDAO().pesquisarMovimentacaoPacienteProntuarioPorCodigoEVolume(
					newMovPront.getPaciente().getCodigo(), newMovPront.getVolumes(), DominioTipoEnvioProntuario.P);
			
			// Deixa o item com situacao = R por primeiro
			Collections.sort(lista, obterComparatorAipMovimentacaoProntuarios());  
			
			if (!lista.isEmpty()) { //se encontro resultados
				AipMovimentacaoProntuarios prontuarioPesquisa = lista.get(0);
				
				if (newMovPront.getSituacao().equals(DominioSituacaoMovimentoProntuario.R)) {
					if (prontuarioPesquisa.getSituacao().equals(DominioSituacaoMovimentoProntuario.R)) {
						newMovPront.setSituacao(DominioSituacaoMovimentoProntuario.R);
					}
				}
				else { 
					if (newMovPront.getSituacao().equals(DominioSituacaoMovimentoProntuario.Q)) {
						if (prontuarioPesquisa.getSituacao().equals(DominioSituacaoMovimentoProntuario.R) ||
							prontuarioPesquisa.getSituacao().equals(DominioSituacaoMovimentoProntuario.Q)) {
							newMovPront.setObservacoes("Local " + 
									prontuarioPesquisa.getLocal() + " " +
									DateUtil.dataToString(prontuarioPesquisa.getDataMovimento(), null) + 
									" Situação: " + prontuarioPesquisa.getSituacao());
							List<AacConsultas> consultaPesquisa = getAmbulatorioFacade().pesquisarAacConsultasPorCodigoEData(newMovPront.getPaciente().getCodigo(), prontuarioPesquisa.getDataMovimento());
							if (!consultaPesquisa.isEmpty()) {
								AacConsultas aacConsulta = consultaPesquisa.get(0);
								newMovPront.setObservacoes(newMovPront.getObservacoes() + ". Número=" + aacConsulta.getNumero());
							}
						}
					}
				}
			} 
		}
		
		if (newMovPront.getServidor() == null) {
			RapServidores servidorLogado = getServidorLogadoFacade().obterServidorLogado();
			newMovPront.setServidor(servidorLogado);
		}
		
		//não precisa verificar pq foi criado domínio
		/*
		if (newMovPront.getTipoEnvio() != null) {
			if (!aipcCheckReferenceCode(newMovPront.getTipoEnvio().toString(), "TIPO_ENVIO_PRONTUARIO"))
				throw new ApplicationBusinessException(MovimentacaoProntuarioRNExceptionCode.AIP_00384);
		}
		
		if (newMovPront.getSituacao() != null) {
			if (!aipcCheckReferenceCode(newMovPront.getSituacao().toString(), "SIT_MOVIMENTO_PRONT"))
				throw new ApplicationBusinessException(MovimentacaoProntuarioRNExceptionCode.AIP_00386);
		}*/
		
		newMovPront.setCriadoEm(new Date());
	}

}