class CaracteristicaItemProcedimentoHospitalarRN extends AbstractFatDebugLogEnableRN {

	public boolean verificaIncompatibilidadeCaracteristicaProcHosp(
			FatItensProcedHospitalarId iphId, 
			Integer tctSeq) throws  ApplicationBusinessException {
		
		boolean result = false;
		FatCaractItemProcHosp cihBPA = null;
		FatCaractItemProcHosp cihBPI = null;
		FatCaractItemProcHosp cihSiscolo = null;
		FatCaractItemProcHosp cihProcPrincApac = null;

		//arg check
		if (iphId == null) {
			throw new IllegalArgumentException("iphId não pode ser nulo.");
		}
		if (tctSeq == null) {
			throw new IllegalArgumentException("tctSeq não pode ser nulo.");
		}
		//algo
		switch (tctSeq.intValue()) {
		case COBRA_BPA_FAT_TIPO_CARACT_ITEM_ID:
			cihBPI = this.obterFatCaractItemProcHospBPI(iphId);
			cihProcPrincApac = this.obterFatCaractItemProcHospProcPrincApac(iphId);
			if (this.isValorCharEqS(cihBPI) 
					|| this.isValorCharEqS(cihProcPrincApac)) {
				throw new ApplicationBusinessException(FaturamentoExceptionCode.FAT_00775);
			}
			break;
		case COBRA_SISCOLO_FAT_TIPO_CARACT_ITEM_ID:
			cihProcPrincApac = this.obterFatCaractItemProcHospProcPrincApac(iphId);
			if (this.isValorCharEqS(cihProcPrincApac)){
			throw new ApplicationBusinessException(FaturamentoExceptionCode.FAT_00776);
		}
			break;
		case PROC_PRINCIPAL_APAC_FAT_TIPO_CARACT_ITEM_ID:
			cihSiscolo = this.obterFatCaractItemProcHospSiscolo(iphId);
			cihBPA = this.obterFatCaractItemProcHospBPA(iphId);
			cihBPI = this.obterFatCaractItemProcHospBPI(iphId);
			if (this.isValorCharEqS(cihSiscolo) 
					|| this.isValorCharEqS(cihBPA) 
					|| this.isValorCharEqS(cihBPI)) {
				throw new ApplicationBusinessException(FaturamentoExceptionCode.FAT_00777);
			}
			break;
		case COBRA_BPI_FAT_TIPO_CARACT_ITEM_ID:
			cihBPA = this.obterFatCaractItemProcHospBPA(iphId);
			cihProcPrincApac = this.obterFatCaractItemProcHospProcPrincApac(iphId);
			if (this.isValorCharEqS(cihBPA) 
					|| this.isValorCharEqS(cihProcPrincApac)) {
				throw new ApplicationBusinessException(FaturamentoExceptionCode.FAT_01076);
			}
			break;
		default:
			this.logInfo("Opcao nao verificada " + tctSeq);
		}
		result = true;
		
		return result;
	}

}