class PrescricaoMedicaRN extends BaseBusiness implements
Serializable {

	@SuppressWarnings("PMD.NPathComplexity")
	public void validaAprazamento(Short seqTipoFrequenciaAprazamento,
			Short frequencia) throws ApplicationBusinessException {

		// se não foi informado apraz, não há validação
		if (seqTipoFrequenciaAprazamento == null && frequencia == null) {
			return;
		}

		// se informada a frequencia um tipo de apraz deve ser informado
		if (frequencia != null && seqTipoFrequenciaAprazamento == null) {
			throw new ApplicationBusinessException(
					PrescricaoMedicamentoExceptionCode.MPM_01376);
		}

		if (frequencia != null && frequencia.shortValue() <= 0) {
			throw new ApplicationBusinessException(
					PrescricaoMedicamentoExceptionCode.FREQUENCIA_MENOR_IGUAL_ZERO);
		}

		MpmTipoFrequenciaAprazamento tipoFrequenciaAprazamento = this
		.getMpmTipoFrequenciaAprazamentoDAO().obterPorChavePrimaria(
				seqTipoFrequenciaAprazamento);

		// Tipo de freqüência aprazamento não cadastrado.
		if (tipoFrequenciaAprazamento == null) {
			throw new ApplicationBusinessException(
					PrescricaoMedicamentoExceptionCode.MPM_00749);
		}

		// Tipo de freqüência aprazamento deve estar ativo.
		if (!DominioSituacao.A.equals(tipoFrequenciaAprazamento
				.getIndSituacao())) {
			throw new ApplicationBusinessException(
					PrescricaoMedicamentoExceptionCode.MPM_00750);
		}

		// Tipo de freqüência exige a informação da freqüência.
		if (tipoFrequenciaAprazamento.getIndDigitaFrequencia()
				&& (frequencia == null || frequencia.equals(0))) {
			throw new ApplicationBusinessException(
					PrescricaoMedicamentoExceptionCode.MPM_00751);
		}

		// Tipo de freqüência não permite a informação de freqüência.
		if (!tipoFrequenciaAprazamento.getIndDigitaFrequencia()
				&& frequencia != null && frequencia > 0) {
			throw new ApplicationBusinessException(
					PrescricaoMedicamentoExceptionCode.MPM_00752);
		}
	}

}