package tr.com.srdc.mdr.core.model.iso11179;
import java.util.List;
import tr.com.srdc.mdr.core.api.ai.DataElement;
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;
import tr.com.srdc.mdr.core.model.iso11179.composite.DataElementExampleResource;
/**
* A Data Element is considered to be a basic unit of data of interest to an
* organization. It is a unit of data for which the definition, identification,
* representation, and permissible values are specified by means of a set of
* attributes.
*
* @author pacaci
* @author mert
* @author serike
* @author alp
* @author anil
*
*/
public interface DataElementResource extends AdministeredItemResource, DataElement {
/**
* Set the {@link AdministrationRecordResource} of {@link DataElementResource}.
*
* @param propertyAdministrationRecord
* <br>
* An {@link AdministrationRecordResource} of a {@link DataElementResource}
* .
*/
void setAdministrationRecord(
AdministrationRecordResource dataElementAdministrationRecord);
/**
* @return the {@link AdministrationRecordResource} of a {@link DataElementResource} .
*/
AdministrationRecordResource getAdministrationRecord();
/**
* Set the {@link Vocabulary#representationClassQualifier} of
* {@link DataElementResource}.
*
* @param representationClassQualifier
*/
void setRepresentationClassQualifier(String representationClassQualifier);
/**
* @return the {@link Vocabulary#representationClassQualifier} of a
* {@link DataElementResource}.
*/
String getRepresentationClassQualifier();
/**
* Set the {@link Vocabulary#dataElementPrecision} of this
* {@link DataElementResource}.
*
* @param dataElementPrecision
* <br>
* The degree of specificity for a {@link DataElementResource}.
*/
void setDataElementPrecision(Integer dataElementPrecision);
/**
*
* @return the {@link Vocabulary#dataElementPrecision} of a
* {@link DataElementResource}.<br>
*/
Integer getDataElementPrecision();
/**
* Set the {@link Vocabulary#expressingDataElementConceptExpression} of this
* {@link DataElementResource}.
*
* @param expressingDataElementConceptExpression
*/
void setExpressingDataElementConceptExpression(
DataElementConceptResource expressingDataElementConceptExpression);
/**
*
* @return {@link Vocabulary#expressingDataElementConceptExpression} of a
* {@link DataElementResource}.<br>
*/
DataElementConceptResource getExpressingDataElementConceptExpression();
/**
* Set the {@link Vocabulary#representedByDataElementRepresentation} of this
* {@link DataElementResource}.
*
* @param representedByDataElementRepresentation
*/
void setRepresentedByDataElementRepresentation(
ValueDomainResource representedByDataElementRepresentation);
/**
*
* @return the {@link Vocabulary#representedByDataElementRepresentation} of
* a {@link DataElementResource}.<br>
*/
ValueDomainResource getRepresentedByDataElementRepresentation();
/**
* Adds {@link Vocabulary#inputToDerivationInput} property with given value
*
* @param inputToDerivationInput
*/
void addInputToDerivationInput(
DataElementDerivationResource inputToDerivationInput);
/**
* Removes {@link Vocabulary#inputToDerivationInput} with given value
*
* @param inputToDerivationInput
* if given <code>null</code>, throws
* {@link IllegalArgumentException}
*/
void removeInputToDerivationInput(
DataElementDerivationResource inputToDerivationInput);
/**
*
* @return {@link List} of all {@link Vocabulary#inputToDerivationInput}
* property values
* @throws MDRException
*/
List<DataElementDerivationResource> getInputToDerivationInputs()
throws MDRException;
/**
* Sets {@link Vocabulary#derivedFromDerivationOutput} property with given
* value
*
* @param derivedFromDerivationOutput
* if given <code>null</code>, removes property
*/
void setDerivedFromDerivationOutput(
DataElementDerivationResource derivedFromDerivationOutput);
/**
*
* @return value of {@link Vocabulary#derivedFromDerivationOutput} property,
* <code>null</code> if such property does not exist
*/
DataElementDerivationResource getDerivedFromDerivationOutput();
/**
* Add {@link Vocabulary#exemplifiedByExemplification} property with given
* value
*
* @param exemplifiedByExemplification
*/
void addExemplifiedByExemplification(
DataElementExampleResource exemplifiedByExemplification);
/**
* Removes {@link Vocabulary#exemplifiedByExemplification} with given value
*
* @param exemplifiedByExemplification
* if given <code>null</code> throws
* {@link IllegalArgumentException}
*/
void removeExemplifiedByExemplification(
DataElementExampleResource exemplifiedByExemplification);
/**
*
* @return {@link List} of all
* {@link Vocabulary#exemplifiedByExemplification} property values
* @throws MDRException
*/
List<DataElementExampleResource> getExemplifiedByExemplifications()
throws MDRException;
/**
* Sets {@link Vocabulary#typedByDataElementRepresentationClass} property
* with given value
*
* @param typedByDataElementRepresentationClass
* if given null, effectively removes property
*/
void setTypedByDataElementRepresentationClass(
RepresentationClassResource typedByDataElementRepresentationClass);
/**
*
* @return Value of {@link Vocabulary#typedByDataElementRepresentationClass}
* property
*/
RepresentationClassResource getTypedByDataElementRepresentationClass();
}