
/*******************************************************************************
 *  Copyright 2018 Centre for Development of Advanced Computing(C-DAC), Pune
 *  
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *  
 *   http://www.apache.org/licenses/LICENSE-2.0
 *  
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 *******************************************************************************/

package cdac.medinfo.sdk.dcm30_04.templates.generaltemplates;

import cdac.medinfo.sdk.dcm30_04.baselibs.ContentSequenceItem;
import cdac.medinfo.sdk.dcm30_04.dicommodel.modules.SRDocumentContentModule;
import cdac.medinfo.sdk.dcm30_04.enums.EnumContinuityOfContent;
import cdac.medinfo.sdk.dcm30_04.srtree.SRTree;
import cdac.medinfo.sdk.dcm30_04.templates.cid.MeasurementReportDocumentTitles_CID7021;
import cdac.medinfo.sdk.dcm30_04.templates.enums.EnumCodingSchemeDesignator;
import cdac.medinfo.sdk.dcm30_04.templates.enums.cm.EnumCM_MeasurementReport;
import cdac.medinfo.sdk.dcm30_04.templates.enums.cm.EnumCM_MeasurementReportDocumentTitles;
import cdac.medinfo.sdk.dcm30_04.templates.enums.cv.EnumCV_MeasurementReport;

public class MeasurementReport_TID1500 extends Template {
	
	
	/**
	 * Object of LanguageOfContentItemAndDescendants_TID1204
	 */

	private LanguageOfContentItemAndDescendants_TID1204 objLanguageOfContentItemAndDescendants_TID1204;

	
	/**
	 * Object of MeasurementReportDocumentTitles_CID7021 which represents the CID7000 Template. 
	 */
	private MeasurementReportDocumentTitles_CID7021 objMeasurementReportDocumentTitles_CID7021 = null;

	/**
	 * Object of ImageLibrary_TID1600
	 */

	private ImageLibrary_TID1600 objImageLibrary_TID1600;

	/**
	 * Object of PlanarROIMeasurements_TID1410
	 */

	private PlanarROIMeasurements_TID1410 objPlanarROIMeasurements_TID1410;
	/**
	 * Retrieves the object of LanguageOfContentItemAndDescendants_TID1204
	 * @return objLanguageOfContentItemAndDescendants_TID1204 object of LanguageOfContentItemAndDescendants_TID1204
	 */
	public LanguageOfContentItemAndDescendants_TID1204 getLanguageOfContentItemandDescendants()
	{
		if(null == objLanguageOfContentItemAndDescendants_TID1204)
			objLanguageOfContentItemAndDescendants_TID1204 = new LanguageOfContentItemAndDescendants_TID1204(getSRTree());
		return objLanguageOfContentItemAndDescendants_TID1204;
	}
	/**
	 * Retrieves the object of ImageLibrary_TID1600
	 * @return objImageLibrary_TID1600 object of ImageLibrary_TID1600
	 */
	public ImageLibrary_TID1600 getImageLibrary()
	{
		if(null == objImageLibrary_TID1600)
			objImageLibrary_TID1600 = new ImageLibrary_TID1600(getSRTree());
		return objImageLibrary_TID1600;
	}
	/**
	 * Object of ObservationContext_TID1001
	 */

	private ObservationContext_TID1001 objObservationContext_TID1001;

	/**
	 * Retrieves the object of PlanarROIMeasurements_TID1410
	 * @return objPlanarROIMeasurements_TID1410 object of PlanarROIMeasurements_TID1410
	 */
	public PlanarROIMeasurements_TID1410 getPlanarROIMeasurements()
	{
		if(null == objPlanarROIMeasurements_TID1410)
			objPlanarROIMeasurements_TID1410 = new PlanarROIMeasurements_TID1410(getSRTree());
		return objPlanarROIMeasurements_TID1410;
	}
	/**
	 * Object of VolumetricROIMeasurements_TID1411
	 */

	private VolumetricROIMeasurements_TID1411 objVolumetricROIMeasurements_TID1411;
	/**
	 * Retrieves the object of VolumetricROIMeasurements_TID1411
	 * @return objVolumetricROIMeasurements_TID1411 object of VolumetricROIMeasurements_TID1411
	 */
	public VolumetricROIMeasurements_TID1411 getVolumetricROIMeasurements()
	{
		if(null == objVolumetricROIMeasurements_TID1411)
			objVolumetricROIMeasurements_TID1411 = new VolumetricROIMeasurements_TID1411(getSRTree());
		return objVolumetricROIMeasurements_TID1411;
	}
	/**
	 * Object of MeasurementGroup_TID1501
	 */

	private MeasurementGroup_TID1501 objMeasurementGroup_TID1501;
	/**
	 * Retrieves the object of MeasurementGroup_TID1501
	 * @return objMeasurementGroup_TID1501 object of MeasurementGroup_TID1501
	 */
	public MeasurementGroup_TID1501 getMeasurementGroup()
	{
		if(null == objMeasurementGroup_TID1501)
			objMeasurementGroup_TID1501 = new MeasurementGroup_TID1501(getSRTree());
		return objMeasurementGroup_TID1501;
	}
	/**
	 * Retrieves the object of ObservationContext_TID1001
	 * @return objObservationContext_TID1001 object of ObservationContext_TID1001
	 */
	public ObservationContext_TID1001 getObservationContext()
	{
		if(null == objObservationContext_TID1001)
			objObservationContext_TID1001 = new ObservationContext_TID1001(getSRTree());
		return objObservationContext_TID1001;
	}
	/**
	 * Object of MeasurementsDerivedFromMultipleROIMeasurements_TID1420
	 */

	private MeasurementsDerivedFromMultipleROIMeasurements_TID1420 objMeasurementsDerivedFromMultipleROIMeasurements_TID1420;
	/**
	 * Retrieves the object of MeasurementsDerivedFromMultipleROIMeasurements_TID1420
	 * @return objMeasurementsDerivedFromMultipleROIMeasurements_TID1420 object of MeasurementsDerivedFromMultipleROIMeasurements_TID1420
	 */
	public MeasurementsDerivedFromMultipleROIMeasurements_TID1420 getMeasurementsDerivedFromMultipleROIMeasurements()
	{
		if(null == objMeasurementsDerivedFromMultipleROIMeasurements_TID1420)
			objMeasurementsDerivedFromMultipleROIMeasurements_TID1420 = new MeasurementsDerivedFromMultipleROIMeasurements_TID1420(getSRTree());
		return objMeasurementsDerivedFromMultipleROIMeasurements_TID1420;
	}
	public MeasurementReport_TID1500(SRTree objTree) {
		super(objTree);
	}
	/**
	 * Sets the Measurement ReportDocument Titles
	 * @param enumDiagnosticImagingReportDocumentTitles object of EnumCM_DiagnosticImagingReportDocumentTitles
	 * @param enumContinuityOfContent object of EnumContinuityOfContent
	 */	
	public void setMeasurementReportDocumentTitles(EnumCM_MeasurementReportDocumentTitles enumMeasurementReportDocumentTitles, EnumContinuityOfContent enumContinuityOfContent)
	{
		if(objMeasurementReportDocumentTitles_CID7021 == null )
			objMeasurementReportDocumentTitles_CID7021 = new MeasurementReportDocumentTitles_CID7021();

		objMeasurementReportDocumentTitles_CID7021.setMeasurementReportDocumentTitles(enumMeasurementReportDocumentTitles);

		// get string values for all
		String strCodeMeaning = objMeasurementReportDocumentTitles_CID7021.getCodeMeaning();
		String strCodeValue = objMeasurementReportDocumentTitles_CID7021.getCodeValue();
		String strCodeSchemeDesignator = objMeasurementReportDocumentTitles_CID7021.getCodingSchemeDesignator();

		SRDocumentContentModule objDocumentContentModule = getSRTree().getSRDocumentContentModule();
		getSRTree().createRoot(objDocumentContentModule,strCodeMeaning,strCodeValue , strCodeSchemeDesignator, enumContinuityOfContent);
	}
	public void setImagingMeasurements(int[] arrPosition, EnumContinuityOfContent enumContinuityOfContent)
	{/**
		 * Retrieves the corresponding values of CodeMeaning,CodeValue and CodingSchemeDesignator.
		 */
		String strCodeMeaning = EnumCM_MeasurementReport.IMAGING_MEASUREMENTS.getValue();
		String strCodeValue = EnumCV_MeasurementReport.IMAGING_MEASUREMENTS_126010.getValue();
		String strCSD2 = EnumCodingSchemeDesignator.DCM.getValue();
		/**
		 * Creating a node of Value Type Container and adding this node at specified identifier in the SR Tree.
		 */
		ContentSequenceItem objContentSequenceItem = getSRTree().createContainer(arrPosition, strCodeMeaning, strCodeValue, strCSD2, enumContinuityOfContent);
		getSRTree().addChild(objContentSequenceItem);
}
	public void setDerivedImagingMeasurements(int[] arrPosition, EnumContinuityOfContent enumContinuityOfContent)
	{/**
		 * Retrieves the corresponding values of CodeMeaning,CodeValue and CodingSchemeDesignator.
		 */
		String strCodeMeaning = EnumCM_MeasurementReport.DERIVED_IMAGING_MEASUREMENTS.getValue();
		String strCodeValue = EnumCV_MeasurementReport.DERIVED_IMAGING_MEASUREMENTS_126011.getValue();
		String strCSD2 = EnumCodingSchemeDesignator.DCM.getValue();
		/**
		 * Creating a node of Value Type Container and adding this node at specified identifier in the SR Tree.
		 */
		ContentSequenceItem objContentSequenceItem = getSRTree().createContainer(arrPosition, strCodeMeaning, strCodeValue, strCSD2, enumContinuityOfContent);
		getSRTree().addChild(objContentSequenceItem);
}
	public void setQualitativeEvaluations(int[] arrPosition, EnumContinuityOfContent enumContinuityOfContent)
	{/**
		 * Retrieves the corresponding values of CodeMeaning,CodeValue and CodingSchemeDesignator.
		 */
		String strCodeMeaning = EnumCM_MeasurementReport.QUALITATIVE_EVALUATIONS.getValue();
		String strCodeValue = EnumCV_MeasurementReport.QUALITATIVE_EVALUATIONS_C0034375.getValue();
		String strCSD2 = EnumCodingSchemeDesignator.UMLS.getValue();
		/**
		 * Creating a node of Value Type Container and adding this node at specified identifier in the SR Tree.
		 */
		ContentSequenceItem objContentSequenceItem = getSRTree().createContainer(arrPosition, strCodeMeaning, strCodeValue, strCSD2, enumContinuityOfContent);
		getSRTree().addChild(objContentSequenceItem);
}
}
