/*******************************************************************************
 *  Copyright 2017-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.ctmrcardiovascularanalysisreporttemplates;

import cdac.medinfo.sdk.dcm30_04.baselibs.ContentSequenceItem;
import cdac.medinfo.sdk.dcm30_04.enums.EnumContinuityOfContent;
import cdac.medinfo.sdk.dcm30_04.srtree.SRTree;
import cdac.medinfo.sdk.dcm30_04.templates.cid.MinMaxMean_CID3488;
import cdac.medinfo.sdk.dcm30_04.templates.cid.SourceOfVascularFinding_CID3815;
import cdac.medinfo.sdk.dcm30_04.templates.cid.StenosisGrade_CID3832;
import cdac.medinfo.sdk.dcm30_04.templates.cid.StenosisLength_CID3831;
import cdac.medinfo.sdk.dcm30_04.templates.cid.StenosisMeasurementMethods_CID3804;
import cdac.medinfo.sdk.dcm30_04.templates.cid.StenosisShape_CID3806;
import cdac.medinfo.sdk.dcm30_04.templates.cid.StenosisTypes_CID3805;
import cdac.medinfo.sdk.dcm30_04.templates.enums.EnumCodingSchemeDesignator;
import cdac.medinfo.sdk.dcm30_04.templates.enums.cm.EnumCM_MinMaxMean;
import cdac.medinfo.sdk.dcm30_04.templates.enums.cm.EnumCM_SourceOfVascularFinding;
import cdac.medinfo.sdk.dcm30_04.templates.enums.cm.EnumCM_StenosisGrade;
import cdac.medinfo.sdk.dcm30_04.templates.enums.cm.EnumCM_StenosisLength;
import cdac.medinfo.sdk.dcm30_04.templates.enums.cm.EnumCM_StenosisMeasurementMethods;
import cdac.medinfo.sdk.dcm30_04.templates.enums.cm.EnumCM_StenosisProperties;
import cdac.medinfo.sdk.dcm30_04.templates.enums.cm.EnumCM_StenosisShape;
import cdac.medinfo.sdk.dcm30_04.templates.enums.cm.EnumCM_StenosisTypes;
import cdac.medinfo.sdk.dcm30_04.templates.enums.cm.EnumCM_VentricularAnalysis;
import cdac.medinfo.sdk.dcm30_04.templates.enums.cv.EnumCV_StenosisProperties;
import cdac.medinfo.sdk.dcm30_04.templates.enums.cv.EnumCV_VentricularAnalysis;
import cdac.medinfo.sdk.dcm30_04.templates.generaltemplates.Measurement_TID300;
import cdac.medinfo.sdk.dcm30_04.templates.generaltemplates.Template;

/**
 * This class represents VentricularAnalysis_TID3920
 */
public class VentricularAnalysis_TID3920 extends Template
{
	private static final String strCM = null;
	
	/**
	 * Object of CardiovascularAnalysisObservationContext_TID3929
	 */
	private CardiovascularAnalysisObservationContext_TID3929 objCardiovascularAnalysisObservationContextTID3929;
	
	/**
	 * Object of VentricularMeasurements_TID3921
	 */
	private VentricularMeasurements_TID3921 objVentricularMeasurementsTID3921;
	
	/**
	 * Object of MyocardialPerfusionAnalysis_TID3926
	 */
	private MyocardialPerfusionAnalysis_TID3926 objMyocardialPerfusionAnalysisTID3926;
	
	/**
	 * Object of VentricularThickeningAnalysis_TID3925
	 */
	private VentricularThickeningAnalysis_TID3925 objVentricularThickeningAnalysisTID3925;
		
	/**
	 * Instantiates a new VentricularAnalysis_TID3920 Template.
	 * @param objTree Object of SRTree.
	 */
	public VentricularAnalysis_TID3920(SRTree objTree)
	{
		super(objTree);
	}

	/**
	 * Retrieves Cardiovascular Analysis Observation Context.
	 * @return objCardiovascularAnalysisObservationContextTID3929 Object of CardiovascularAnalysisObservationContext_TID3929 
	 */
	public CardiovascularAnalysisObservationContext_TID3929 getCardiovascularAnalysisObservationContext() 
	{
		if(null == this.objCardiovascularAnalysisObservationContextTID3929)
			this.objCardiovascularAnalysisObservationContextTID3929 = new CardiovascularAnalysisObservationContext_TID3929(getSRTree());
		return this.objCardiovascularAnalysisObservationContextTID3929;
	}
	
	/**
	 * Retrieves Ventricular Measurements.
	 * @return objVentricularMeasurementsTID3921 Object of VentricularMeasurements_TID3921 
	 */
	public VentricularMeasurements_TID3921 getVentricularMeasurements() 
	{
		if(null == this.objVentricularMeasurementsTID3921)
			this.objVentricularMeasurementsTID3921 = new VentricularMeasurements_TID3921(getSRTree());
		return this.objVentricularMeasurementsTID3921;
	}
	
	/**
	 * Retrieves Ventricular Thickening Analysis.
	 * @return objVentricularThickeningAnalysisTID3925 Object of VentricularThickeningAnalysis_TID3925 
	 */
	public VentricularThickeningAnalysis_TID3925 getVentricularThickeningAnalysis() 
	{
		if(null == this.objVentricularThickeningAnalysisTID3925)
			this.objVentricularThickeningAnalysisTID3925 = new VentricularThickeningAnalysis_TID3925(getSRTree());
		return this.objVentricularThickeningAnalysisTID3925;
	}
	
	/**
	 * Retrieves Myocardial Perfusion Analysis.
	 * @return objMyocardialPerfusionAnalysisTID3926 Object of MyocardialPerfusionAnalysis_TID3926 
	 */
	public MyocardialPerfusionAnalysis_TID3926 getMyocardialPerfusionAnalysis() 
	{
		if(null == this.objMyocardialPerfusionAnalysisTID3926)
			this.objMyocardialPerfusionAnalysisTID3926 = new MyocardialPerfusionAnalysis_TID3926(getSRTree());
		return this.objMyocardialPerfusionAnalysisTID3926;
	}
	/**
	 * Sets the value for Findings.
	 * @param arrPosition Identifier which shows the position of the node in the SR Tree.
	 * @param enumContinuityOfContent 
	 * @param arrNumericValue 
	 */
	public void setFindings(int[] arrPosition,EnumContinuityOfContent enumContinuityOfContent)
	{
		/**
		 * Retrieves the corresponding values of CodeMeaning,CodeValue and CodingSchemeDesignator.
		 */
		String strCodeMeaning = EnumCM_VentricularAnalysis.FINDINGS.getValue();
		String strCodeValue = EnumCV_VentricularAnalysis.FINDINGS_121070.getValue();
		String strCSDesg = 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, strCSDesg, enumContinuityOfContent);
		getSRTree().addChild(objContentSequenceItem);
		
	}
	
	/**
	 * Sets the value for AnalysisPerformed.
	 * @param arrPosition Identifier which shows the position of the node in the SR Tree.
	 */
	public void setAnalysisPerformed(int[] arrPosition)
	{
		/**
		 * Retrieves the corresponding values of CodeMeaning,CodeValue and CodingSchemeDesignator.
		 */
		String strCodeMeaning = EnumCM_VentricularAnalysis.ANALYSIS_PERFORMED.getValue();
		String strCodeValue = EnumCV_VentricularAnalysis.ANALYSIS_PERFORMED_111004.getValue();
		String strCSDesg = EnumCodingSchemeDesignator.DCM.getValue();		
		

		/**
		 *Creating a node of Value Type CODE and adding this node at specified identifier in the SR Tree.
		 */
		ContentSequenceItem objContentSequenceItem = getSRTree().createCodeNode(arrPosition, strCodeMeaning, strCodeValue, strCSDesg, "", "", "", "");
		getSRTree().addChild(objContentSequenceItem);
		
	}
	
}
