/*******************************************************************************
 *  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.procedurelogiodtemplates;

import cdac.medinfo.sdk.dcm30_04.baselibs.ContentSequenceItem;
import cdac.medinfo.sdk.dcm30_04.srtree.SRTree;
import cdac.medinfo.sdk.dcm30_04.templates.cid.ArterialLesionLocations_CID3604;
import cdac.medinfo.sdk.dcm30_04.templates.cid.CalculationMethod_CID3745;
import cdac.medinfo.sdk.dcm30_04.templates.cid.CardiovascularAnatomicLocationModifiers_CID3019;
import cdac.medinfo.sdk.dcm30_04.templates.cid.LesionMorphology_CID3715;
import cdac.medinfo.sdk.dcm30_04.templates.cid.LesionRisk_CID3418;
import cdac.medinfo.sdk.dcm30_04.templates.cid.Severity_CID3716;
import cdac.medinfo.sdk.dcm30_04.templates.cid.TIMIFlowCharacteristics_CID3713;
import cdac.medinfo.sdk.dcm30_04.templates.cid.Thrombus_CID3714;
import cdac.medinfo.sdk.dcm30_04.templates.cid.VesselDescriptors_CID3712;
import cdac.medinfo.sdk.dcm30_04.templates.enums.EnumCodingSchemeDesignator;
import cdac.medinfo.sdk.dcm30_04.templates.enums.cm.EnumCM_CalculationMethod;
import cdac.medinfo.sdk.dcm30_04.templates.enums.cm.EnumCM_CardiovascularAnatomicLocationModifiers;
import cdac.medinfo.sdk.dcm30_04.templates.enums.cm.EnumCM_LesionIdentificationAndProperties;
import cdac.medinfo.sdk.dcm30_04.templates.enums.cm.EnumCM_LesionMorphology;
import cdac.medinfo.sdk.dcm30_04.templates.enums.cm.EnumCM_LesionRisk;
import cdac.medinfo.sdk.dcm30_04.templates.enums.cm.EnumCM_Severity;
import cdac.medinfo.sdk.dcm30_04.templates.enums.cm.EnumCM_TIMIFlowCharacteristics;
import cdac.medinfo.sdk.dcm30_04.templates.enums.cm.EnumCM_Thrombus;
import cdac.medinfo.sdk.dcm30_04.templates.enums.cm.EnumCM_Unit;
import cdac.medinfo.sdk.dcm30_04.templates.enums.cm.EnumCM_VesselDescriptors;
import cdac.medinfo.sdk.dcm30_04.templates.enums.cv.EnumCV_LesionIdentificationAndProperties;
import cdac.medinfo.sdk.dcm30_04.templates.enums.cv.EnumCV_Unit;
import cdac.medinfo.sdk.dcm30_04.templates.generaltemplates.Template;

/**
 * The Lesion Identification and Properties Template allows recording the identification of each lesion
 * addressed in a procedure. 
 * The lesion identifier may be used to relate diagnostic or therapeutic actions
 * with their target lesion (see Row 4 in TID 3010 Log Entry Qualifiers). 
 * This content item may include the
 * initial visually estimated measurements of stenosis or TIMI flow; measured values from a quantitative
 * measurement report may be referenced indirectly (through TID 3103 Referenced Object), or by quotation
 * (TID 3109 Measurements template).
 *  Subsequent (e.g., post-intervention) stenosis measurements may be
 * encoded using TID 3109 Measurements, with the Lesion Identifier conveyed through its subsidiary TID
 * 3010 Log Entry Qualifiers template.
 */

/**
 * This class represents LesionIdentificationAndProperties - TID3105
 */
public class LesionIdentificationAndProperties_TID3105 extends Template
{
	/**
	 * Object of ArterialSourceLocations_CID3606
	 */
	private ArterialLesionLocations_CID3604 objArterialLesionLocations_CID3604;

	/**
	 * Object of CardiovascularAnatomicLocationModifiers_CID3019
	 */
	private CardiovascularAnatomicLocationModifiers_CID3019 objCardiovascularAnatomicLocationModifiers_CID3019;

	/**
	 * Object of LesionRisk_CID3418
	 */
	private LesionRisk_CID3418 objLesionRisk_CID3418;

	/**
	 * Object of CalculationMethod_CID3745
	 */
	private CalculationMethod_CID3745 objCalculationMethod_CID3745;

	/**
	 * Object of TIMIFlowCharacteristics_CID3713
	 */
	private TIMIFlowCharacteristics_CID3713 objFlowCharacteristics_CID3713;

	/**
	 * Object of Thrombus_CID3714
	 */
	private Thrombus_CID3714 objThrombus_CID3714;

	/**
	 * Object of LesionMorphology_CID3715
	 */
	private LesionMorphology_CID3715 objLesionMorphology_CID3715;

	/**
	 * Object of VesselDescriptors_CID3712
	 */
	private VesselDescriptors_CID3712 objVesselDescriptors_CID3712;

	/**
	 * Object of Severity_CID3716
	 */
	private Severity_CID3716 objSeverity_CID3716;

	/**
	 * Object of LogEntryQualifiers_TID3010
	 */
	private LogEntryQualifiers_TID3010 objLogEntryQualifiers;

	/**
	 * Instantiates a new LesionIdentificationAndProperties_TID3105 Template.
	 * @param objTree Object of SRTree.
	 */
	public LesionIdentificationAndProperties_TID3105(SRTree objTree)
	{
		super(objTree);
	}

	/**
	 * Retrieves LogEntryQualifiers
	 * @return objLogEntryQualifiers Object of LogEntryQualifiers_TID3010
	 */
	public LogEntryQualifiers_TID3010 getLogEntryQualifiers() 
	{
		if(objLogEntryQualifiers == null)
			this.objLogEntryQualifiers = new LogEntryQualifiers_TID3010(getSRTree());
		return this.objLogEntryQualifiers;
	}

	/**
	 * Sets the value for Lesion Identifier.
	 * @param arrPosition Identifier which shows the position of the node in the SR Tree.
	 * @param strLesionIdentifier String value for Lesion Identifier
	 */
	public void setLesionIdentifier(int[] arrPosition, String strLesionIdentifier)
	{
		/**
		 * Retrieves the corresponding values of CodeMeaning,CodeValue and CodingSchemeDesignator.
		 */
		String strCodeMeaning = EnumCM_LesionIdentificationAndProperties.LESION_IDENTIFIER.getValue();
		String strCodeValue = EnumCV_LesionIdentificationAndProperties.LESION_IDENTIFIER_121151.getValue();
		String strCSD = EnumCodingSchemeDesignator.DCM.getValue();

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

	/**
	 * Sets value for Finding Site.
	 * @param arrPosition Identifier which shows the position of the node in the SR Tree.
	 * @param enumValue This value can be one of the three Enum - EnumCM_ArterialSourceLocations, EnumCM_CoronaryArteries
	 * or EnumCM_CoronaryArterySegments.
	 */
	public void setFindingSite(int[] arrPosition, Enum enumValue)
	{
		/**
		 * Retrieves the corresponding values of CodeMeaning,CodeValue and CodingSchemeDesignator.
		 */
		String strCodeMeaning = EnumCM_LesionIdentificationAndProperties.FINDING_SITE.getValue();
		String strCodeValue = EnumCV_LesionIdentificationAndProperties.FINDING_SITE_G_C0E3.getValue();
		String strCSDesg = EnumCodingSchemeDesignator.SRT.getValue();

		/**
		 * Setting value for Arterial Lesion Location
		 */
		if(objArterialLesionLocations_CID3604 == null)
			this.objArterialLesionLocations_CID3604 = new ArterialLesionLocations_CID3604();
		this.objArterialLesionLocations_CID3604.setArterialLesionLocation(enumValue);

		String strCM = objArterialLesionLocations_CID3604.getCodeMeaning();
		String strCV = objArterialLesionLocations_CID3604.getCodeValue();
		String strCSD = objArterialLesionLocations_CID3604.getCodingSchemeDesignator();
		String strCSV = objArterialLesionLocations_CID3604.getCodingSchemeVersion();
		String strSNOMEDCTID = objArterialLesionLocations_CID3604.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, strCSDesg, strCV, strCSD, strCSV, strCM,strSNOMEDCTID);
		getSRTree().addChild(objContentSequenceItem);
	}

	/**
	 * Sets value for Topographical modifier.
	 * @param arrPosition Identifier which shows the position of the node in the SR Tree.
	 * @param enumCardiovascularAnatomicLocationModifiers Enum of EnumCM_CardiovascularAnatomicLocationModifiers
	 */
	public void setTopographicalModifier(int[] arrPosition, EnumCM_CardiovascularAnatomicLocationModifiers enumCardiovascularAnatomicLocationModifiers)
	{
		/**
		 * Retrieves the corresponding values of CodeMeaning,CodeValue and CodingSchemeDesignator.
		 */
		String strCodeMeaning = EnumCM_LesionIdentificationAndProperties.TOPOGRAPHICAL_MODIFIERS.getValue();
		String strCodeValue = EnumCV_LesionIdentificationAndProperties.TOPOGRAPHICAL_MODIFIERS_G_A1F8.getValue();
		String strCSDesg = EnumCodingSchemeDesignator.SRT.getValue();

		/**
		 * Setting value for Cardiovascular Anatomic Location Modifiers
		 */
		if(objCardiovascularAnatomicLocationModifiers_CID3019 == null)
			objCardiovascularAnatomicLocationModifiers_CID3019 = new CardiovascularAnatomicLocationModifiers_CID3019();
		objCardiovascularAnatomicLocationModifiers_CID3019.setCardiovascularAnatomicLocationModifiers(enumCardiovascularAnatomicLocationModifiers);

		String strCM = objCardiovascularAnatomicLocationModifiers_CID3019.getCodeMeaning();
		String strCV = objCardiovascularAnatomicLocationModifiers_CID3019.getCodeValue();
		String strCSD = objCardiovascularAnatomicLocationModifiers_CID3019.getCodingSchemeDesignator();
		String strSNOMEDCTID = objCardiovascularAnatomicLocationModifiers_CID3019.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, strCSDesg, strCV, strCSD, "", strCM,strSNOMEDCTID);
		getSRTree().addChild(objContentSequenceItem);
	}

	/**
	 * Sets value for Lesion Risk.
	 * @param arrPosition Identifier which shows the position of the node in the SR Tree.
	 * @param enumLesionRisk Enum of EnumCM_LesionRisk
	 */
	public void setLesionRisk(int[] arrPosition, EnumCM_LesionRisk enumLesionRisk)
	{
		/**
		 * Retrieves the corresponding values of CodeMeaning,CodeValue and CodingSchemeDesignator.
		 */
		String strCodeMeaning = EnumCM_LesionIdentificationAndProperties.LESION_RISK.getValue();
		String strCodeValue = EnumCV_LesionIdentificationAndProperties.LESION_RISK_121153.getValue();
		String strCSDesg = EnumCodingSchemeDesignator.DCM.getValue();

		/**
		 * Setting value for LesionRisk
		 */
		if(objLesionRisk_CID3418 == null)
			objLesionRisk_CID3418 = new LesionRisk_CID3418();
		objLesionRisk_CID3418.setLesionRisk(enumLesionRisk);

		String strCM = objLesionRisk_CID3418.getCodeMeaning();
		String strCV = objLesionRisk_CID3418.getCodeValue();
		String strCSD = objLesionRisk_CID3418.getCodingSchemeDesignator();
		String srtCSV = objLesionRisk_CID3418.getCodingSchemeDesignator();

		/**
		 * 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, strCV, strCSD, srtCSV, strCM);
		getSRTree().addChild(objContentSequenceItem);
	}

	/**
	 * Sets the value for Baseline Stenosis Measurement.
	 * @param arrPosition Identifier which shows the position of the node in the SR Tree.
	 * @param arrNumericValue String array for Numeric Value.
	 */
	public void setBaselineStenosisMeasurement(int[] arrPosition,String[] arrNumericValue)
	{
		/**
		 * Retrieves the corresponding values of CodeMeaning,CodeValue and CodingSchemeDesignator For Unit for No of Fetus.
		 */
		String strCMForUnit = EnumCM_Unit.PERCENTAGE.getValue();
		String strCVForUnit = EnumCV_Unit.PERCENTAGE.getValue();
		String strCSDForUnit = EnumCodingSchemeDesignator.UCUM.getValue();

		/**
		 * Retrieves the corresponding values of CodeMeaning,CodeValue and CodingSchemeDesignator.
		 */
		String strCodeMeaning = EnumCM_LesionIdentificationAndProperties.BASELINE_STENOSIS_MEASUREMENT.getValue();
		String strCodeValue = EnumCV_LesionIdentificationAndProperties.BASELINE_STENOSIS_MEASUREMENT_122107.getValue();
		String strCSD = EnumCodingSchemeDesignator.DCM.getValue();

		ContentSequenceItem objContentSequenceItem = getSRTree().createNumNode(arrPosition,strCodeMeaning,strCodeValue,strCSD,arrNumericValue,strCVForUnit,strCSDForUnit,"",strCMForUnit,"","","","");
		getSRTree().addChild(objContentSequenceItem);
	}

	/**
	 * Sets value for Derivation.
	 * @param arrPosition Identifier which shows the position of the node in the SR Tree.
	 * @param enumCalculationMethod Enum value for Calculation Method.
	 */
	public void setDerivation(int[] arrPosition, EnumCM_CalculationMethod enumCalculationMethod)
	{
		/**
		 * Retrieves the corresponding values of CodeMeaning,CodeValue and CodingSchemeDesignator.
		 */
		String strCodeMeaning = EnumCM_LesionIdentificationAndProperties.DERIVATION.getValue();
		String strCodeValue = EnumCV_LesionIdentificationAndProperties.DERIVATION_121401.getValue();
		String strCSDesg = EnumCodingSchemeDesignator.DCM.getValue();

		/**
		 * Setting value for Calculation Method
		 */
		if(objCalculationMethod_CID3745 == null)
			objCalculationMethod_CID3745 = new CalculationMethod_CID3745();
		objCalculationMethod_CID3745.setCalculationMethod(enumCalculationMethod);

		String strCM = objCalculationMethod_CID3745.getCodeMeaning();
		String strCV = objCalculationMethod_CID3745.getCodeValue();
		String strCSD = objCalculationMethod_CID3745.getCodingSchemeDesignator();
		String strSNOMEDCTID = objCalculationMethod_CID3745.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, strCSDesg, strCV, strCSD, "", strCM,strSNOMEDCTID);
		getSRTree().addChild(objContentSequenceItem);
	}

	/**
	 * Sets value for Baseline TIMI Flow.
	 * @param arrPosition Identifier which shows the position of the node in the SR Tree.
	 * @param enumTIMIFlowCharacteristics Enum value for  TIMI Flow Characteristics.
	 */
	public void setBaselineTIMIFlow(int[] arrPosition, EnumCM_TIMIFlowCharacteristics enumTIMIFlowCharacteristics)
	{
		/**
		 * Retrieves the corresponding values of CodeMeaning,CodeValue and CodingSchemeDesignator.
		 */
		String strCodeMeaning = EnumCM_LesionIdentificationAndProperties.BASELINE_TIMI_FLOW.getValue();
		String strCodeValue = EnumCV_LesionIdentificationAndProperties.BASELINE_TIMI_FLOW_122109.getValue();
		String strCSDesg = EnumCodingSchemeDesignator.DCM.getValue();

		/**
		 * Setting value for Calculation Method
		 */
		if(objFlowCharacteristics_CID3713 == null)
			this.objFlowCharacteristics_CID3713 = new TIMIFlowCharacteristics_CID3713(); 
		objFlowCharacteristics_CID3713.setTIMIFlowCharacteristics(enumTIMIFlowCharacteristics);

		String strCM = objFlowCharacteristics_CID3713.getCodeMeaning();
		String strCV = objFlowCharacteristics_CID3713.getCodeValue();
		String strCSD = objFlowCharacteristics_CID3713.getCodingSchemeDesignator();
		String strSNOMEDCTID = objFlowCharacteristics_CID3713.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, strCSDesg, strCV, strCSD, "", strCM,strSNOMEDCTID);
		getSRTree().addChild(objContentSequenceItem);
	}

	/**
	 * Sets value for Thrombus
	 * @param arrPosition Identifier which shows the position of the node in the SR Tree.
	 * @param enumThrombus Enum value for Thrombus.
	 */
	public void setThrombus(int[] arrPosition, EnumCM_Thrombus enumThrombus)
	{
		/**
		 * Retrieves the corresponding values of CodeMeaning,CodeValue and CodingSchemeDesignator.
		 */
		String strCodeMeaning = EnumCM_LesionIdentificationAndProperties.DEGREE_OF_THROMBUS.getValue();
		String strCodeValue = EnumCV_LesionIdentificationAndProperties.DEGREE_OF_THROMBUS_122131.getValue();
		String strCSDesg = EnumCodingSchemeDesignator.DCM.getValue();

		/**
		 * Setting value for Calculation Method
		 */
		if(objThrombus_CID3714 == null)
			this.objThrombus_CID3714 = new Thrombus_CID3714(); 
		objThrombus_CID3714.setThrombus(enumThrombus);

		String strCM = objThrombus_CID3714.getCodeMeaning();
		String strCV = objThrombus_CID3714.getCodeValue();
		String strCSD = objThrombus_CID3714.getCodingSchemeDesignator();
		String strSNOMEDCTID = objThrombus_CID3714.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, strCSDesg, strCV, strCSD, "", strCM,strSNOMEDCTID);
		getSRTree().addChild(objContentSequenceItem);
	}

	/**
	 * Sets value for Lesion Morphology.
	 * @param arrPosition Identifier which shows the position of the node in the SR Tree.
	 * @param enumLesionMorphology Enum of EnumCM_LesionMorphology
	 */
	public void setLesionMorphology(int[] arrPosition, EnumCM_LesionMorphology enumLesionMorphology)
	{
		/**
		 * Retrieves the corresponding values of CodeMeaning,CodeValue and CodingSchemeDesignator.
		 */
		String strCodeMeaning = EnumCM_LesionIdentificationAndProperties.LESION_MORPHOLOGY.getValue();
		String strCodeValue = EnumCV_LesionIdentificationAndProperties.LESION_MORPHOLOGY_122133.getValue();
		String strCSDesg = EnumCodingSchemeDesignator.DCM.getValue();

		/**
		 * Setting value for LesionRisk
		 */
		if(objLesionMorphology_CID3715 == null)
			this.objLesionMorphology_CID3715 = new LesionMorphology_CID3715();
		objLesionMorphology_CID3715.setLesionMorphology(enumLesionMorphology);

		String strCM = objLesionMorphology_CID3715.getCodeMeaning();
		String strCV = objLesionMorphology_CID3715.getCodeValue();
		String strCSD = objLesionMorphology_CID3715.getCodingSchemeDesignator();
		

		/**
		 * 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, strCV, strCSD, "", strCM);
		getSRTree().addChild(objContentSequenceItem);
	}

	/**
	 * Sets value for Vessel Descriptors.
	 * @param arrPosition Identifier which shows the position of the node in the SR Tree.
	 * @param enumVesselDescriptors Enum of EnumCM_VesselDescriptors
	 */
	public void setVesselDescriptors(int[] arrPosition, EnumCM_VesselDescriptors enumVesselDescriptors)
	{
		/**
		 * Retrieves the corresponding values of CodeMeaning,CodeValue and CodingSchemeDesignator.
		 */
		String strCodeMeaning = EnumCM_LesionIdentificationAndProperties.VESSEL_MORPHOLOGY.getValue();
		String strCodeValue = EnumCV_LesionIdentificationAndProperties.VESSEL_MORPHOLOGY_122134.getValue();
		String strCSDesg = EnumCodingSchemeDesignator.DCM.getValue();

		/**
		 * Setting value for LesionRisk
		 */
		if(objVesselDescriptors_CID3712 == null)
			this.objVesselDescriptors_CID3712 = new VesselDescriptors_CID3712();
		objVesselDescriptors_CID3712.setVesselDescriptors(enumVesselDescriptors);

		String strCM = objVesselDescriptors_CID3712.getCodeMeaning();
		String strCV = objVesselDescriptors_CID3712.getCodeValue();
		String strCSD = objVesselDescriptors_CID3712.getCodingSchemeDesignator();
		String strSNOMEDCTID = objVesselDescriptors_CID3712.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, strCSDesg, strCV, strCSD, "", strCM,strSNOMEDCTID);
		getSRTree().addChild(objContentSequenceItem);
	}

	/**
	 * Sets value for Severity Of Calcification.
	 * @param arrPosition Identifier which shows the position of the node in the SR Tree.
	 * @param enumSeverity Enum of EnumCM_Severity
	 */
	public void setSeverityOfCalcification(int[] arrPosition, EnumCM_Severity enumSeverity)
	{
		/**
		 * Retrieves the corresponding values of CodeMeaning,CodeValue and CodingSchemeDesignator.
		 */
		String strCodeMeaning = EnumCM_LesionIdentificationAndProperties.SEVERITY_OF_CALCIFICATION.getValue();
		String strCodeValue = EnumCV_LesionIdentificationAndProperties.SEVERITY_OF_CALCIFICATION_122132.getValue();
		String strCSDesg = EnumCodingSchemeDesignator.DCM.getValue();

		/**
		 * Setting value for LesionRisk
		 */
		if(objSeverity_CID3716 == null)
			this.objSeverity_CID3716 = new Severity_CID3716();
		objSeverity_CID3716.setSeverity(enumSeverity);

		String strCM = objSeverity_CID3716.getCodeMeaning();
		String strCV = objSeverity_CID3716.getCodeValue();
		String strCSD = objSeverity_CID3716.getCodingSchemeDesignator();
		String strSNOMEDCTID = objSeverity_CID3716.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, strCSDesg, strCV, strCSD, "", strCM,strSNOMEDCTID);
		getSRTree().addChild(objContentSequenceItem);
	}

	/**
	 * Sets value for Best illustration of finding
	 * @param arrPosition dentifier which shows the position of the node in the SR Tree.
	 *@param strRefSOPClassUIDForCORefMacro Reference SOP Class UID for Composite Object Reference Macro.
	 * @param strRefSOPInstanceUIDForCORefMacro Reference SOP Instance UID for Composite Object Reference Macro.
	 * @param arrStrReferencedFrameNumber String Array of Referenced Frame Number.
	 * @param strRefSOPClassUID Referenced SOP Class UID.
	 * @param strRefSOPInstanceUID Referenced SOP Instance UID.
	 */
	public void setBestIllustrationOfFinding(int[] arrPosition, String strRefSOPClassUIDForCORefMacro, String strRefSOPInstanceUIDForCORefMacro, String[] arrStrReferencedFrameNumber, String strRefSOPClassUID, String strRefSOPInstanceUID)
	{
		/**
		 * Retrieves the corresponding values of CodeMeaning,CodeValue and CodingSchemeDesignator.
		 */
		String strCodeMeaning = EnumCM_LesionIdentificationAndProperties.BEST_ILLUSTRATION_OF_FINDING.getValue();
		String strCodeValue = EnumCV_LesionIdentificationAndProperties.BEST_ILLUSTRATION_OF_FINDING_121080.getValue();
		String strCSD = EnumCodingSchemeDesignator.DCM.getValue();

		/**
		 * Creating a node of Value Type UIDREF and adding this node at specified identifier in the SR Tree.
		 */
		ContentSequenceItem objContentSequenceItem = getSRTree().createImageNode(arrPosition, strCodeMeaning, strCodeValue, strCSD, strRefSOPClassUIDForCORefMacro, strRefSOPInstanceUIDForCORefMacro, arrStrReferencedFrameNumber, strRefSOPClassUID, strRefSOPInstanceUID);
		getSRTree().addChild(objContentSequenceItem);
	}
}
