class PrescricaoMedicamentoRN extends BaseBusiness implements Serializable {

	public void preInserir(MpmPrescricaoMdto prescricaoMdtos, String nomeMicrocomputador, final Date dataFimVinculoServidor, Boolean isCopiado)
			throws BaseException {
		prescricaoMdtos.setCriadoEm(new Date());
		
		if (prescricaoMdtos.getIndItemRecTransferencia() == null){
			prescricaoMdtos.setIndItemRecTransferencia(false);
		}
		
		if (prescricaoMdtos.getIndBombaInfusao() == null){
			prescricaoMdtos.setIndBombaInfusao(false);
		}
		
		verificaAtendimento(prescricaoMdtos.getDthrInicio(), prescricaoMdtos.getDthrFim(), prescricaoMdtos.getPrescricaoMedica().getId().getAtdSeq(),
														  null, null, null);
		
		//Para inserir um registro na entidade Prescrição Medicamentos é necessário existir um registro  
		//equivalente na entidade Pres-crição Médica (deve se encaixar na validade de uma Prescrição Médica)
		verificaPrescricaoMedica(prescricaoMdtos.getPrescricaoMedica().getId().getAtdSeq(),
							prescricaoMdtos.getDthrInicio(), 
							prescricaoMdtos.getDthrFim(),
							prescricaoMdtos.getCriadoEm(),
							prescricaoMdtos.getIndPendente(),
							"I",
							nomeMicrocomputador, 
							dataFimVinculoServidor);
		
		//Se informado duracao trat solicitado, atualizar dthr inicio tratamento com dthr_inicio.
		if (prescricaoMdtos.getDuracaoTratSolicitado() != null && 
				prescricaoMdtos.getDthrInicioTratamento() == null){
			prescricaoMdtos.setDthrInicioTratamento(
					atualizaInicioTratamento(prescricaoMdtos.getDthrInicio(),
							prescricaoMdtos.getHoraInicioAdministracao()));
		}
		
		//Se Tipo Frequencia Aprazamento possuir ind_digita_frequencia = 'S' frequencia não pode ser nula e  
		//Se Tipo Frequencia Aprazamento possuir ind_digita_frequencia = 'N' frequencia deve ser nula
		if (!isCopiado){
			verificaDigitaFrequenciaAprazamento(prescricaoMdtos.getTipoFreqAprazamento().getSeq(), 
					prescricaoMdtos.getFrequencia());			
		}

		// Ao inserir uma Prescricao Mdto, atualizar o ser_vin_codigo e
		// ser_matricula de inclusão
		AtualizaServidorPrescricaoMedicamentoInclusaoVO atualizaServidorVO = atualizaServidorPrescricaoMedicamentoInclusao();

		RapServidoresId idServidor = new RapServidoresId(atualizaServidorVO
				.getMatricula(), atualizaServidorVO.getVinCodigo());

		RapServidores servidor = getRegistroColaboradorFacade().obterRapServidor(idServidor);
		prescricaoMdtos.setServidor(servidor);

		//verifica gotejo e velocidade
		if (!isCopiado){
			verificaVelocidadeGotejoPrescricaoMedicamentos(prescricaoMdtos
					.getTipoVelocAdministracao() != null ? prescricaoMdtos
							.getTipoVelocAdministracao().getSeq() : null, prescricaoMdtos
							.getGotejo());			
		}
			if(prescricaoMdtos.getOrdem() == null){
				Integer ordem = this.mpmPrescricaoMdtoDAO.obterOrdemListaMedicamentosPrescritosConfirmadosPelaChavePrescricao(prescricaoMdtos.getPrescricaoMedica().getId(), prescricaoMdtos.getIndSolucao());
				prescricaoMdtos.setOrdem(ordem);
			}
	}

}