/*******************************************************************************
 *  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.srtree.SRTree;
import cdac.medinfo.sdk.dcm30_04.templates.cid.AssociatedConditions_CID3809;
import cdac.medinfo.sdk.dcm30_04.templates.cid.VascularDissectionClassifications_CID3492;
import cdac.medinfo.sdk.dcm30_04.templates.cid.VesselSegments_CID3827;
import cdac.medinfo.sdk.dcm30_04.templates.enums.EnumCodingSchemeDesignator;
import cdac.medinfo.sdk.dcm30_04.templates.enums.cm.EnumCM_ArterialDissectionProperties;
import cdac.medinfo.sdk.dcm30_04.templates.enums.cm.EnumCM_AssociatedConditions;
import cdac.medinfo.sdk.dcm30_04.templates.enums.cm.EnumCM_VascularDissectionClassifications;
import cdac.medinfo.sdk.dcm30_04.templates.enums.cv.EnumCV_ArterialDissectionProperties;
import cdac.medinfo.sdk.dcm30_04.templates.generaltemplates.Template;

/**
 * This class represents ArterialDissectionProperties_TID3914
 */
public class ArterialDissectionProperties_TID3914 extends Template
{
	private static final String strCM = null;
		
	/**
	 * Object of AssociatedConditions_CID3809
	 */
	private AssociatedConditions_CID3809 objAssociatedConditionsCID3809;
	
	/**
	 * Object of VascularDissectionClassifications_CID3492
	 */
	private VascularDissectionClassifications_CID3492 objVascularDissectionClassificationsCID3492;
	
	/**
	 * Object of VesselSegments_CID3827
	 */
	private VesselSegments_CID3827 objVesselSegmentsCID3827;
	
	/**
	 * Instantiates a new ArterialDissectionProperties_TID3914 Template.
	 * @param objTree Object of SRTree.
	 */
	public ArterialDissectionProperties_TID3914(SRTree objTree)
	{
		super(objTree);
	}

	/**
	 * Sets the value for Dissection Classification.
	 * @param arrPosition Identifier which shows the position of the node in the SR Tree.
	 * @param arrNumericValue 
	 */
	public void setDissectionClassification(int[] arrPosition, EnumCM_VascularDissectionClassifications enumVascularDissectionClassifications)
	{
		/**
		 * Retrieves the corresponding values of CodeMeaning,CodeValue and CodingSchemeDesignator.
		 */
		String strCodeMeaning = EnumCM_ArterialDissectionProperties.DISSECTION_CLASSIFICATION.getValue();
		String strCodeValue = EnumCV_ArterialDissectionProperties.DISSECTION_CLASSIFICATION_122387.getValue();
		String strCSDesg = EnumCodingSchemeDesignator.DCM.getValue();		
		/**
		 * Retrieves the corresponding values of CodeMeaning,CodeValue and CodingSchemeDesignator.
		 */
		if(null== this.objVascularDissectionClassificationsCID3492)
			this.objVascularDissectionClassificationsCID3492 = new VascularDissectionClassifications_CID3492();
		this.objVascularDissectionClassificationsCID3492.setVascularDissectionClassifications(enumVascularDissectionClassifications);

		String strCM = objVascularDissectionClassificationsCID3492.getCodeMeaning();
		String strCV = objVascularDissectionClassificationsCID3492.getCodeValue();
		String strCSD = objVascularDissectionClassificationsCID3492.getCodingSchemeDesignator();
		String strSNOMEDCTID = objVascularDissectionClassificationsCID3492.getSNOMEDCTID();
		/**
		 *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, strCSD, strCSDesg, strCM ,strCV, strSNOMEDCTID);
		getSRTree().addChild(objContentSequenceItem);
		
	}
	/**
	 * Sets the value for Etiology.
	 * @param arrPosition Identifier which shows the position of the node in the SR Tree.
	 * @param arrNumericValue 
	 */
	public void setEtiology(int[] arrPosition, EnumCM_AssociatedConditions enumAssociatedConditions)
	{
		/**
		 * Retrieves the corresponding values of CodeMeaning,CodeValue and CodingSchemeDesignator.
		 */
		String strCodeMeaning = EnumCM_ArterialDissectionProperties.ETIOLOGY.getValue();
		String strCodeValue = EnumCV_ArterialDissectionProperties.ETIOLOGY_G_C150.getValue();
		String strCSDesg = EnumCodingSchemeDesignator.SRT.getValue();		
		/**
		 * Retrieves the corresponding values of CodeMeaning,CodeValue and CodingSchemeDesignator.
		 */
		if(null== this.objAssociatedConditionsCID3809)
			this.objAssociatedConditionsCID3809 = new AssociatedConditions_CID3809();
		this.objAssociatedConditionsCID3809.setAssociatedConditions(enumAssociatedConditions);

		String strCM = objAssociatedConditionsCID3809.getCodeMeaning();
		String strCV = objAssociatedConditionsCID3809.getCodeValue();
		String strCSD = objAssociatedConditionsCID3809.getCodingSchemeDesignator();
		String strSNOMEDCTID = objAssociatedConditionsCID3809.getSNOMEDCTID();
		/**
		 *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, strCSD, strCSDesg, strCM ,strCV, strSNOMEDCTID);
		getSRTree().addChild(objContentSequenceItem);
		
	}
	/**
	 * Sets the value for Anatomic structure potentially involved in evolution of disease.
	 * @param arrPosition Identifier which shows the position of the node in the SR Tree.
	 * @param arrNumericValue 
	 */
	public void setAnatomicStructurePotentiallyInvolvedInEvolutionOfDisease(int[] arrPosition, Enum enumValue)
	{
		/**
		 * Retrieves the corresponding values of CodeMeaning,CodeValue and CodingSchemeDesignator.
		 */
		String strCodeMeaning = EnumCM_ArterialDissectionProperties.ANATOMIC_STRUCTURE_POTENTIALLY_INVOLVED_IN_EVOLUTION_OF_DISEASE.getValue();
		String strCodeValue = EnumCV_ArterialDissectionProperties.ANATOMIC_STRUCTURE_POTENTIALLY_INVOLVED_IN_EVOLUTION_OF_DISEASE_R_102DD.getValue();
		String strCSDesg = EnumCodingSchemeDesignator.SRT.getValue();		
		/**
		 * Retrieves the corresponding values of CodeMeaning,CodeValue and CodingSchemeDesignator.
		 */
		if(null== this.objVesselSegmentsCID3827)
			this.objVesselSegmentsCID3827 = new VesselSegments_CID3827();
		this.objVesselSegmentsCID3827.setVesselSegments(enumValue);

		String strCM = objVesselSegmentsCID3827.getCodeMeaning();
		String strCV = objVesselSegmentsCID3827.getCodeValue();
		String strCSD = objVesselSegmentsCID3827.getCodingSchemeDesignator();
		String strSNOMEDCTID = objVesselSegmentsCID3827.getSNOMEDCTID();
		/**
		 *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, strCSD, strCSDesg, strCM ,strCV, strSNOMEDCTID);
		getSRTree().addChild(objContentSequenceItem);
		
	}
	/**
	 * Sets the value for Length.
	 * @param arrPosition Identifier which shows the position of the node in the SR Tree.
	 * @param arrNumericValue 
	 * @param arrNumericValue 
	 */
	public void setLength(int[] arrPosition, String[] arrNumericValue)
	{
		/**
		 * Retrieves the corresponding values of CodeMeaning,CodeValue and CodingSchemeDesignator.
		 */
		String strCodeMeaning = EnumCM_ArterialDissectionProperties.LENGTH.getValue();
		String strCodeValue = EnumCV_ArterialDissectionProperties.LENGTH_G_A22A.getValue();
		String strCSDesg = EnumCodingSchemeDesignator.SRT.getValue();		
	
		/**
		 *Creating a node of Value Type NUM and adding this node at specified identifier in the SR Tree.
		 */
		ContentSequenceItem objContentSequenceItem = getSRTree().createNumNode(arrPosition, strCodeMeaning, strCodeValue, strCSDesg, arrNumericValue, "", "", "", "", "", "", "", "");
		getSRTree().addChild(objContentSequenceItem);
		
	}
	
}
