package tr.com.srdc.mdr.core.model.iso11179;
import java.util.List;
import tr.com.srdc.mdr.core.api.ai.DerivationRule;
import tr.com.srdc.mdr.core.model.MDRException;
import tr.com.srdc.mdr.core.model.Vocabulary;
import tr.com.srdc.mdr.core.model.iso11179.composite.AdministrationRecordResource;
import tr.com.srdc.mdr.core.model.iso11179.composite.DataElementDerivationResource;
/**
*
* A Data Element may have a Derivation Rule that is a specification of
* derivation for the data element. The derivation rule may range from a sINDe
* operation such as subtraction to a very complex set of derivations
* (derivation being defined as a relationship between a derivation rule and an
* input set upon which it acts). Derivation rules are not limited to arithmetic
* and logical operations.
*
* @author anil
*/
public interface DerivationRuleResource extends AdministeredItemResource, DerivationRule {
void setAdministrationRecord(
AdministrationRecordResource derivationRuleAdministrationRecord);
AdministrationRecordResource getAdministrationRecord();
/**
* Sets {@link Vocabulary#derivationRuleSpecification} property with given
* value
*
* @param derivationRuleSpecification
*/
void setDerivationRuleSpecification(String derivationRuleSpecification);
/**
*
* @return value of {@link Vocabulary#derivationRuleSpecification} property
*/
String getDerivationRuleSpecification();
/**
* Adds {@link Vocabulary#appliedToDerivationRuleApplication} property with
* given value
*
* @param appliedToDerivationRuleApplication
*/
void addAppliedToDerivationRuleApplication(
DataElementDerivationResource appliedToDerivationRuleApplication);
/**
* Removes {@link Vocabulary#appliedToDerivationRuleApplication} with given
* value
*
* @param appliedToDerivationRuleApplication
* if given <code>null</code>, throws
* {@link IllegalArgumentException}
*/
void removeAppliedToDerivationRuleApplication(
DataElementDerivationResource appliedToDerivationRuleApplication);
/**
*
* @return {@link List} of all
* {@link Vocabulary#appliedToDerivationRuleApplication} property
* values
* @throws MDRException
*/
List<DataElementDerivationResource> getAppliedToDerivationRuleApplications()
throws MDRException;
}