package tr.com.srdc.mdr.core.api.ai;
import tr.com.srdc.mdr.core.model.iso11179.DerivationRuleResource;
/**
* 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 simple
* 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. As an Administered Item, a Derivation Rule carries
* its own Administration Record information, allowing it to be identified,
* named, defined and optionally classified in a Classification Scheme. A
* Derivation Rule may be registered as an Administered Item without necessarily
* being associated with any Data Element Derivation.
*
* @author anil
*
*/
public interface DerivationRule extends AdministeredItem {
@Override
/**
* @return the {@link DerivationRuleResource} version this instance.
*/
DerivationRuleResource asMDRResource();
// /**
// * Method to create a {@link DataElementDerivation} with given input/output
// * {@link DataElement}'s and applying this DerivationRule as a rule
// * specification
// *
// * @param input
// * DataElements which will be the input of DataElementDerivation
// * @param output
// * DataElements which are the derivations of input DataElements
// * as a result of applying this DerivationRule
// * @return
// */
// DataElementDerivation createDerivation(DataElement input, DataElement output);
//
// /**
// * @return List of all {@link DataElementDerivation}'s which are applying
// * this DerivationRule
// * @throws MDRException
// */
// List<DataElementDerivation> getDataElementDerivations() throws MDRException;
//
// /**
// * @return Specification of the DerivationRule which will be applied on
// * {@link DataElement}s to derive new ones from existings.
// */
// String getSpecification();
}