class AfaDispensacaoMdtosRN extends BaseBusiness implements Serializable {

	@SuppressWarnings("PMD.NPathComplexity")
	public void criaDispMdtoTriagemPrescricao(AfaDispensacaoMdtos admNew, String nomeMicrocomputador)
			throws ApplicationBusinessException {
		
		admNew.setIndexItemSendoAtualizado(Boolean.TRUE);
		
		if (DominioSituacaoDispensacaoMdto.E.equals(admNew.getIndSituacao())) {
			rnDsmpVerSerBusc(admNew.getServidorEntregue());
		}
		
		/* Verifica se tipo  ocorrência dispensação está ativa */
		if (admNew.getTipoOcorrenciaDispensacao() != null) {
			rnDsmpVerTodAtiv(
					admNew.getTipoOcorrenciaDispensacao());
		}
		/* Verifica se unid. funcional é farmácia e se está ativa */
		rnDsmpVerUnfDisp(
					admNew.getUnidadeFuncional());
		
		/* Atualiza a unf_seq que solicitou o medicamento */
		if (admNew.getUnidadeFuncionalSolicitante() == null) {
			Integer atdSeq = null;
			if (admNew.getItemPrescricaoMdto().getId().getPmdAtdSeq() != null) {
				atdSeq = admNew.getItemPrescricaoMdto().getId().getPmdAtdSeq();
			} else {
				atdSeq = admNew.getImoPmoPteAtdSeq();
			}
			admNew = atualizarUnidadeSolicitante(admNew, atdSeq);
		}

		RapServidores servidorLogado = getServidorLogadoFacade().obterServidorLogado();
		
		/* quando a dispensação já é gerada como dispensada atualizar o servidor e
		   a data e hora da dispensação */
		if (DominioSituacaoDispensacaoMdto.D.equals(admNew.getIndSituacao())) {
			if (servidorLogado == null) {
				throw new ApplicationBusinessException(AfaDispensacaoMdtosRNExceptionCode.AFA_00444);
			}
			admNew.setServidor(servidorLogado);
			admNew.setDthrDispensacao(new Date());
		}

		/* Estacao de trabalho do usuario*/
		if ( DominioSituacaoDispensacaoMdto.D.equals(admNew.getIndSituacao()) ||
				DominioSituacaoDispensacaoMdto.C.equals(admNew.getIndSituacao()) ||
				DominioSituacaoDispensacaoMdto.E.equals(admNew.getIndSituacao()) ) {
			String estacaoUsuario = nomeMicrocomputador;
			admNew.setNomeEstacaoDisp(estacaoUsuario);
		}
			
		if (admNew.getAtendimento() == null) {
			AghAtendimentos atendimento = new AghAtendimentos();
			if (admNew.getItemPrescricaoMdto().getId().getPmdAtdSeq() != null) {
				atendimento.setSeq(admNew.getItemPrescricaoMdto().getId().getPmdAtdSeq());
			} else {
				atendimento.setSeq(admNew.getImoPmoPteAtdSeq());
			}
			admNew.setAtendimento(atendimento);
		}
		if (DominioSituacaoDispensacaoMdto.T.equals(admNew.getIndSituacao()) && 
				!DominioSituacaoItemPrescritoDispensacaoMdto.RD.equals(admNew.getIndSitItemPrescrito())) {
			if (servidorLogado == null) {
				throw new ApplicationBusinessException(AfaDispensacaoMdtosRNExceptionCode.AFA_01493);
			}
			admNew.setServidorTriadoPor(servidorLogado);
			admNew.setDthrTriado(new Date());
		}
		
		admNew.setCriadoEm(new Date());
		admNew.setIndSitEspecial(false);
		getAfaDispensacaoMdtosDAO().persistir(admNew);
		admNew.setIndexItemSendoAtualizado(Boolean.FALSE);
		
	}

}