package tr.com.srdc.mdr.core.api.composite;
import java.util.List;
import tr.com.srdc.mdr.core.api.MDRNode;
import tr.com.srdc.mdr.core.api.ai.DataElement;
import tr.com.srdc.mdr.core.api.ai.DerivationRule;
import tr.com.srdc.mdr.core.model.MDRException;
import tr.com.srdc.mdr.core.model.iso11179.composite.DataElementDerivationResource;
/**
* A Data Element Derivation is the application of a Derivation Rule to one or
* more input Data Elements, to derive one or more output Data Elements.
*
* @author anil
*
*/
public interface DataElementDerivation extends MDRNode {
@Override
/**
* @return the {@link DataElementDerivationResource} version this instance.
*/
DataElementDerivationResource asMDRResource();
/**
*
* @return {@link DerivationRule} applied to this
* {@link DataElementDerivation}
*/
DerivationRule getDerivationRule();
/**
*
* @return the unmodifiable list of {@link DataElement} which is input to
* this {@link DataElementDerivation}
* @throws MDRException
*/
List<DataElement> getInputDataElements() throws MDRException;
/**
*
* @return the unmodifiable list of {@link DataElement} derived from this
* {@link DataElementDerivation}
* @throws MDRException
*/
List<DataElement> getOutputDataElements() throws MDRException;
}