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

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.CalculationMethod_CID3745;
import cdac.medinfo.sdk.dcm30_04.templates.cid.GuidewireCrossing_CID3752;
import cdac.medinfo.sdk.dcm30_04.templates.cid.InterventionParameters_CID3425;
import cdac.medinfo.sdk.dcm30_04.templates.cid.IntracoronaryDevices_CID3411;
import cdac.medinfo.sdk.dcm30_04.templates.cid.NumericDeviceCharacteristics_CID3423;
import cdac.medinfo.sdk.dcm30_04.templates.cid.PreviouslyDilatedLesion_CID3750;
import cdac.medinfo.sdk.dcm30_04.templates.cid.TIMIFlowCharacteristics_CID3713;
import cdac.medinfo.sdk.dcm30_04.templates.cid.YesNo_CID230;
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_GuidewireCrossing;
import cdac.medinfo.sdk.dcm30_04.templates.enums.cm.EnumCM_InterventionParameters;
import cdac.medinfo.sdk.dcm30_04.templates.enums.cm.EnumCM_IntracoronaryDevices;
import cdac.medinfo.sdk.dcm30_04.templates.enums.cm.EnumCM_LesionInterventionInformation;
import cdac.medinfo.sdk.dcm30_04.templates.enums.cm.EnumCM_NumericDeviceCharacteristics;
import cdac.medinfo.sdk.dcm30_04.templates.enums.cm.EnumCM_PreviouslyDilatedLesion;
import cdac.medinfo.sdk.dcm30_04.templates.enums.cm.EnumCM_TIMIFlowCharacteristics;
import cdac.medinfo.sdk.dcm30_04.templates.enums.cm.EnumCM_Unit;
import cdac.medinfo.sdk.dcm30_04.templates.enums.cm.EnumCM_YesNo;
import cdac.medinfo.sdk.dcm30_04.templates.enums.cv.EnumCV_LesionInterventionInformation;
import cdac.medinfo.sdk.dcm30_04.templates.enums.cv.EnumCV_Unit;
import cdac.medinfo.sdk.dcm30_04.templates.generaltemplates.Quotation_TID1000;
import cdac.medinfo.sdk.dcm30_04.templates.generaltemplates.Template;
import cdac.medinfo.sdk.dcm30_04.templates.procedurelogiodtemplates.LesionIdentificationAndProperties_TID3105;

/**
 * This class represents LesionInterventionInformation - TID3808
 */
public class LesionInterventionInformation_TID3808 extends Template
{
	/**
	 * Object of LesionIdentificationAndProperties_TID3105
	 */

	private LesionIdentificationAndProperties_TID3105 objLesionIdentificationAndPropertiesTID3105;

	/**
	 * Object of PreviouslyDilatedLesion_CID3750
	 */
	private PreviouslyDilatedLesion_CID3750 objPreviouslyDilatedLesionCID3750;

	/**
	 * Object of GuidewireCrossing_CID3752
	 */
	private GuidewireCrossing_CID3752 objGuidewireCrossingCID3752;

	/**
	 * Object of IntracoronaryDevices_CID3411
	 */
	private IntracoronaryDevices_CID3411 objIntracoronaryDevices_CID3411;

	/**
	 * Object of YesNo_CID230
	 */
	private YesNo_CID230 objYesNoCID230;

	/**
	 * Object of NumericDeviceCharacteristics_CID3423
	 */
	private NumericDeviceCharacteristics_CID3423 objNumericDeviceCharacteristicsCID3423;

	/**
	 * Object of InterventionParameters_CID3425
	 */
	private InterventionParameters_CID3425 objInterventionParametersCID3425;

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

	/**
	 * Object of  Quotation_TID1000
	 */

	private Quotation_TID1000 objQuotationTID1000;

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

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

	/**
	 * Retrieves Quotation 
	 * @return objQuotationTID1000 Object of Quotation_TID1000 
	 */
	public Quotation_TID1000 getObserverContext() 
	{
		if(null == this.objQuotationTID1000)
			this.objQuotationTID1000 = new Quotation_TID1000(getSRTree());
		return this.objQuotationTID1000;
	}

	/**
	 * Retrieves CommonFindings 
	 * @return objLesionIdentificationAndPropertiesTID3105 Object of LesionIdentificationAndProperties_TID3105 
	 */
	public LesionIdentificationAndProperties_TID3105 getLesionIdentificationAndProperties() 
	{
		if(null == this.objLesionIdentificationAndPropertiesTID3105)
			this.objLesionIdentificationAndPropertiesTID3105 = new LesionIdentificationAndProperties_TID3105(getSRTree());
		return this.objLesionIdentificationAndPropertiesTID3105;
	}

	/**
	 * Sets the value for Lesion Intervention Information
	 * @param arrPosition Identifier which shows the position of the node in the SR Tree.
	 * @param enumContinuityOfContent Enumerated Value for ContinuityOfContent.
	 */
	public void setLesionInterventionInformation(int[] arrPosition, EnumContinuityOfContent enumContinuityOfContent)
	{
		/**
		 * Retrieves the corresponding values of CodeMeaning,CodeValue and CodingSchemeDesignator.
		 */
		String strCodeMeaning = EnumCM_LesionInterventionInformation.LESION_INTERVENTION_INFORMATION.getValue();
		String strCodeValue = EnumCV_LesionInterventionInformation.LESION_INTERVENTION_INFORMATION_122178.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().createContainer(arrPosition, strCodeMeaning, strCodeValue, strCSD, enumContinuityOfContent);
		getSRTree().addChild(objContentSequenceItem);
	}

	/**
	 * Sets value for Previous Dilation.
	 * @param arrPosition Identifier which shows the position of the node in the SR Tree.
	 * @param enumPreviouslyDilatedLesion Enumerated value for Previous Dilation.
	 */
	public void setPreviousDilation(int[] arrPosition, EnumCM_PreviouslyDilatedLesion enumPreviouslyDilatedLesion)
	{
		/**
		 * Retrieves the corresponding values of CodeMeaning,CodeValue and CodingSchemeDesignator.
		 */
		String strCodeMeaning = EnumCM_LesionInterventionInformation.PREVIOUS_DILATION.getValue();
		String strCodeValue = EnumCV_LesionInterventionInformation.PREVIOUS_DILATION_108.getValue();
		String strCSDesg = EnumCodingSchemeDesignator.NDR.getValue();

		/**
		 * Setting value for Previous Dilation
		 */
		if(null== this.objPreviouslyDilatedLesionCID3750)
			this.objPreviouslyDilatedLesionCID3750 = new PreviouslyDilatedLesion_CID3750();
		this.objPreviouslyDilatedLesionCID3750.setPreviouslyDilatedLesion(enumPreviouslyDilatedLesion);

		String strCM = objPreviouslyDilatedLesionCID3750.getCodeMeaning();
		String strCV = objPreviouslyDilatedLesionCID3750.getCodeValue();
		String strCSD = objPreviouslyDilatedLesionCID3750.getCodingSchemeDesignator();
		String strCSV = objPreviouslyDilatedLesionCID3750.getCodingSchemeVersion();

		/**
		 * 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);
		getSRTree().addChild(objContentSequenceItem);
	}

	/**
	 * Sets value for Guidewire crossing lesion.
	 * @param arrPosition Identifier which shows the position of the node in the SR Tree.
	 * @param enumGuidewireCrossing Enumerated value for Guidewire crossing lesion.
	 */
	public void setGuidewireCrossingLesion(int[] arrPosition, EnumCM_GuidewireCrossing enumGuidewireCrossing)
	{
		/**
		 * Retrieves the corresponding values of CodeMeaning,CodeValue and CodingSchemeDesignator.
		 */
		String strCodeMeaning = EnumCM_LesionInterventionInformation.GUIDEWIRE_CROSSING_LESION.getValue();
		String strCodeValue = EnumCV_LesionInterventionInformation.GUIDEWIRE_CROSSING_LESION_103.getValue();
		String strCSDesg = EnumCodingSchemeDesignator.NDR.getValue();

		/**
		 * Setting value for Guidewire crossing lesion
		 */
		if(null== this.objGuidewireCrossingCID3752)
			this.objGuidewireCrossingCID3752 = new GuidewireCrossing_CID3752();
		this.objGuidewireCrossingCID3752.setGuidewireCrossing(enumGuidewireCrossing);

		String strCM = objGuidewireCrossingCID3752.getCodeMeaning();
		String strCV = objGuidewireCrossingCID3752.getCodeValue();
		String strCSD = objGuidewireCrossingCID3752.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 Uses Equipment.
	 * @param arrPosition Identifier which shows the position of the node in the SR Tree.
	 * @param enumIntracoronaryDevices Enumerated value for Uses Equipment.
	 */
	public void setUsesEquipment(int[] arrPosition, EnumCM_IntracoronaryDevices enumIntracoronaryDevices)
	{
		/**
		 * Retrieves the corresponding values of CodeMeaning,CodeValue and CodingSchemeDesignator.
		 */
		String strCodeMeaning = EnumCM_LesionInterventionInformation.USES_EQUIPMENT.getValue();
		String strCodeValue = EnumCV_LesionInterventionInformation.USES_EQUIPMENT_G_C50A.getValue();
		String strCSDesg = EnumCodingSchemeDesignator.SRT.getValue();

		/**
		 * Setting value for Uses Equipment
		 */
		if(null== this.objIntracoronaryDevices_CID3411)
			this.objIntracoronaryDevices_CID3411 = new IntracoronaryDevices_CID3411();
		this.objIntracoronaryDevices_CID3411.setIntracoronaryDevices(enumIntracoronaryDevices);

		String strCM = objIntracoronaryDevices_CID3411.getCodeMeaning();
		String strCV = objIntracoronaryDevices_CID3411.getCodeValue();
		String strCSD = objIntracoronaryDevices_CID3411.getCodingSchemeDesignator();
		String strSNOMEDCTID = objIntracoronaryDevices_CID3411.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 the value for Primary Intervention Device.
	 * @param arrPosition Identifier which shows the position of the node in the SR Tree.
	 * @param enumYesNo Enum value for Yes-No.
	 */
	public void setPrimaryInterventionDevice(int[] arrPosition, EnumCM_YesNo enumYesNo)
	{
		/**
		 * Sets the value for Primary Intervention Device.
		 */
		if(null== this.objYesNoCID230)
			this.objYesNoCID230 = new YesNo_CID230();
		this.objYesNoCID230.setYesNo(enumYesNo);

		/**
		 * Retrieves the corresponding values of CodeMeaning,CodeValue and CodingSchemeDesignator.
		 */
		String strCM = this.objYesNoCID230.getCodeMeaning();
		String strCV = this.objYesNoCID230.getCodeValue();
		String strCSD1 = this.objYesNoCID230.getCodingSchemeDesignator();
		String strSNOMEDCTID = objYesNoCID230.getSNOMEDCTID();

		/**
		 * Retrieves the corresponding values of CodeMeaning,CodeValue and CodingSchemeDesignator.
		 */
		String strCodeMeaning = EnumCM_LesionInterventionInformation.PRIMARY_INTERVENTION_DEVICE.getValue();
		String strCodeValue = EnumCV_LesionInterventionInformation.PRIMARY_INTERVENTION_DEVICE_122111.getValue();
		String strCSD2 = 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 , strCSD2, strCV, strCSD1, "", strCM,strSNOMEDCTID);
		getSRTree().addChild(objContentSequenceItem);
	}

	/**
	 * Sets the value for Description of Material
	 * @param arrPosition Identifier which shows the position of the node in the SR Tree.
	 * @param strDescriptionOfMaterial String value for Description Of Material.
	 */
	public void setDescriptionOfMaterial(int[] arrPosition, String strDescriptionOfMaterial)
	{
		/**
		 * Retrieves the corresponding values of CodeMeaning,CodeValue and CodingSchemeDesignator.
		 */
		String strCodeMeaning = EnumCM_LesionInterventionInformation.DESCRIPTION_OF_MATERIAL.getValue();
		String strCodeValue = EnumCV_LesionInterventionInformation.DESCRIPTION_OF_MATERIAL_121145.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, strDescriptionOfMaterial);
		getSRTree().addChild(objContentSequenceItem);
	}

	/**
	 * Sets the value for NumericDeviceCharacteristics.
	 * @param arrPosition Identifier which shows the position of the node in the SR Tree.
	 * @param arrNumericValue String array for Numeric Value.
	 * @param enumNumericDeviceCharacteristics Enumerated value for NumericDeviceCharacteristics
	 */
	public void setNumericDeviceCharacteristics(int[] arrPosition,String[] arrNumericValue, EnumCM_NumericDeviceCharacteristics enumNumericDeviceCharacteristics)
	{
		/**
		 * Retrieves the corresponding values of CodeMeaning,CodeValue and CodingSchemeDesignator.
		 */
		if(null== this.objNumericDeviceCharacteristicsCID3423)
			this.objNumericDeviceCharacteristicsCID3423 = new NumericDeviceCharacteristics_CID3423();
		this.objNumericDeviceCharacteristicsCID3423.setNumericDeviceCharacteristics(enumNumericDeviceCharacteristics);

		String strCodeMeaning = objNumericDeviceCharacteristicsCID3423.getCodeMeaning();
		String strCodeValue = objNumericDeviceCharacteristicsCID3423.getCodeValue();
		String strCSD = objNumericDeviceCharacteristicsCID3423.getCodingSchemeDesignator();
		String strSNOMEDCTID = objNumericDeviceCharacteristicsCID3423.getSNOMEDCTID();

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

	/**
	 * Sets the value for NumericDeviceCharacteristics.
	 * @param arrPosition Identifier which shows the position of the node in the SR Tree.
	 * @param arrNumericValue String array for Numeric Value.
	 * @param enumInterventionParameters Enumerated value for InterventionParameters
	 */
	public void setInterventionParameters(int[] arrPosition,String[] arrNumericValue, EnumCM_InterventionParameters enumInterventionParameters)
	{
		/**
		 * Retrieves the corresponding values of CodeMeaning,CodeValue and CodingSchemeDesignator.
		 */
		if(null== this.objInterventionParametersCID3425)
			this.objInterventionParametersCID3425 = new InterventionParameters_CID3425();
		this.objInterventionParametersCID3425.setInterventionParameters(enumInterventionParameters);

		String strCodeMeaning = objInterventionParametersCID3425.getCodeMeaning();
		String strCodeValue = objInterventionParametersCID3425.getCodeValue();
		String strCSD = objInterventionParametersCID3425.getCodingSchemeDesignator();
		String strSNOMEDCTID = objInterventionParametersCID3425.getSNOMEDCTID();

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

	/**
	 * Sets the value for DateTime of Intervention.
	 * @param arrPosition Identifier which shows the position of the node in the SR Tree.
	 * @param strDateTimeOfIntervention String value for DateTime of Intervention
	 */
	public void setDateTimeOfIntervention(int[] arrPosition, String strDateTimeOfIntervention)
	{
		/**
		 * Retrieves the corresponding values of CodeMeaning,CodeValue and CodingSchemeDesignator.
		 */
		String strCodeMeaning = EnumCM_LesionInterventionInformation.DATETIME_OF_INTERVENTION.getValue();
		String strCodeValue = EnumCV_LesionInterventionInformation.DATETIME_OF_INTERVENTION_122105.getValue();
		String strCSD = EnumCodingSchemeDesignator.DCM.getValue();

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

	/**
	 * Sets the value for Duration of Intervention.
	 * @param arrPosition Identifier which shows the position of the node in the SR Tree.
	 * @param arrNumericValue String array for Numeric Value.
	 */
	public void setDurationOfIntervention(int[] arrPosition,String[] arrNumericValue)
	{
		/**
		 * Retrieves the corresponding values of CodeMeaning,CodeValue and CodingSchemeDesignator.
		 */
		String strCMForUnit = EnumCM_Unit.s.getValue();
		String strCVForUnit = EnumCV_Unit.s.getValue();
		String strCSDForUnit = EnumCodingSchemeDesignator.UCUM.getValue();

		/**
		 * Retrieves the corresponding values of CodeMeaning,CodeValue and CodingSchemeDesignator.
		 */
		String strCodeMeaning = EnumCM_LesionInterventionInformation.DURATION_OF_INTERVENTION.getValue();
		String strCodeValue = EnumCV_LesionInterventionInformation.DURATION_OF_INTERVENTION_122106.getValue();
		String strCSD = EnumCodingSchemeDesignator.DCM.getValue();

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

	/**
	 * Sets the value for Post-Intervention 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 setPostInterventionStenosisMeasurement(int[] arrPosition,String[] arrNumericValue)
	{
		/**
		 * Retrieves the corresponding values of CodeMeaning,CodeValue and CodingSchemeDesignator.
		 */
		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_LesionInterventionInformation.POST_INTERVENTION_STENOSIS_MEASUREMENT.getValue();
		String strCodeValue = EnumCV_LesionInterventionInformation.POST_INTERVENTION_STENOSIS_MEASUREMENT_122108.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_LesionInterventionInformation.DERIVATION.getValue();
		String strCodeValue = EnumCV_LesionInterventionInformation.DERIVATION_121401.getValue();
		String strCSDesg = EnumCodingSchemeDesignator.DCM.getValue();

		/**
		 * Setting value for Calculation Method
		 */
		if(null== objCalculationMethod_CID3745)
			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 Post-Intervention 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 setPostInterventionTIMIFlow(int[] arrPosition, EnumCM_TIMIFlowCharacteristics enumTIMIFlowCharacteristics)
	{
		/**
		 * Retrieves the corresponding values of CodeMeaning,CodeValue and CodingSchemeDesignator.
		 */
		String strCodeMeaning = EnumCM_LesionInterventionInformation.POST_INTERVENTION_TIMI_FLOW.getValue();
		String strCodeValue = EnumCV_LesionInterventionInformation.POST_INTERVENTION_TIMI_FLOW_122110.getValue();
		String strCSDesg = EnumCodingSchemeDesignator.DCM.getValue();

		/**
		 * Setting value for Calculation Method
		 */
		if(null== this.objFlowCharacteristics_CID3713)
			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 the value for Dissection in segment observed.
	 * @param arrPosition Identifier which shows the position of the node in the SR Tree.
	 * @param enumYesNo Enum value for Yes-No.
	 */
	public void setDissectionInSegmentObserved(int[] arrPosition, EnumCM_YesNo enumYesNo)
	{
		/**
		 * Sets the value for Primary Intervention Device.
		 */
		if(null== this.objYesNoCID230)
			this.objYesNoCID230 = new YesNo_CID230();
		this.objYesNoCID230.setYesNo(enumYesNo);

		/**
		 * Retrieves the corresponding values of CodeMeaning,CodeValue and CodingSchemeDesignator.
		 */
		String strCM = this.objYesNoCID230.getCodeMeaning();
		String strCV = this.objYesNoCID230.getCodeValue();
		String strCSD1 = this.objYesNoCID230.getCodingSchemeDesignator();
		String strSNOMEDCTID = objYesNoCID230.getSNOMEDCTID();
		/**
		 * Retrieves the corresponding values of CodeMeaning,CodeValue and CodingSchemeDesignator.
		 */
		String strCodeMeaning = EnumCM_LesionInterventionInformation.DISSECTION_IN_SEGMENT_OBSERVED.getValue();
		String strCodeValue = EnumCV_LesionInterventionInformation.DISSECTION_IN_SEGMENT_OBSERVED_115.getValue();
		String strCSD2 = EnumCodingSchemeDesignator.NCDR.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 , strCSD2, strCV, strCSD1, "", strCM,strSNOMEDCTID);
		getSRTree().addChild(objContentSequenceItem);
	}

	/**
	 * Sets the value for Acute closure observed.
	 * @param arrPosition Identifier which shows the position of the node in the SR Tree.
	 * @param enumYesNo Enum value for Yes-No.
	 */
	public void setAcuteClosureObserved(int[] arrPosition, EnumCM_YesNo enumYesNo)
	{
		/**
		 * Sets the value for Primary Intervention Device.
		 */
		if(null== this.objYesNoCID230)
			this.objYesNoCID230 = new YesNo_CID230();
		this.objYesNoCID230.setYesNo(enumYesNo);

		/**
		 * Retrieves the corresponding values of CodeMeaning,CodeValue and CodingSchemeDesignator.
		 */
		String strCM = this.objYesNoCID230.getCodeMeaning();
		String strCV = this.objYesNoCID230.getCodeValue();
		String strCSD1 = this.objYesNoCID230.getCodingSchemeDesignator();
		String strSNOMEDCTID = objYesNoCID230.getSNOMEDCTID();

		/**
		 * Retrieves the corresponding values of CodeMeaning,CodeValue and CodingSchemeDesignator.
		 */
		String strCodeMeaning = EnumCM_LesionInterventionInformation.ACUTE_CLOSURE_OBSERVED.getValue();
		String strCodeValue = EnumCV_LesionInterventionInformation.ACUTE_CLOSURE_OBSERVED_116.getValue();
		String strCSD2 = EnumCodingSchemeDesignator.NCDR.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 , strCSD2, strCV, strCSD1, "", strCM,strSNOMEDCTID);
		getSRTree().addChild(objContentSequenceItem);
	}

	/**
	 * Sets the value for Acute closure re-opened.
	 * @param arrPosition Identifier which shows the position of the node in the SR Tree.
	 * @param enumYesNo Enum value for Yes-No.
	 */
	public void setAcuteClosureReopened(int[] arrPosition, EnumCM_YesNo enumYesNo)
	{
		/**
		 * Sets the value for Primary Intervention Device.
		 */
		if(null== this.objYesNoCID230)
			this.objYesNoCID230 = new YesNo_CID230();
		this.objYesNoCID230.setYesNo(enumYesNo);

		/**
		 * Retrieves the corresponding values of CodeMeaning,CodeValue and CodingSchemeDesignator.
		 */
		String strCM = this.objYesNoCID230.getCodeMeaning();
		String strCV = this.objYesNoCID230.getCodeValue();
		String strCSD1 = this.objYesNoCID230.getCodingSchemeDesignator();
		String strSNOMEDCTID = objYesNoCID230.getSNOMEDCTID();

		/**
		 * Retrieves the corresponding values of CodeMeaning,CodeValue and CodingSchemeDesignator.
		 */
		String strCodeMeaning = EnumCM_LesionInterventionInformation.ACUTE_CLOSURE_RE_OPENED.getValue();
		String strCodeValue = EnumCV_LesionInterventionInformation.ACUTE_CLOSURE_RE_OPENED_117.getValue();
		String strCSD2 = EnumCodingSchemeDesignator.NCDR.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 , strCSD2, strCV, strCSD1, "", strCM,strSNOMEDCTID);
		getSRTree().addChild(objContentSequenceItem);
	}

	/**
	 * Sets the value for Perforation occurred.
	 * @param arrPosition Identifier which shows the position of the node in the SR Tree.
	 * @param enumYesNo Enum value for Yes-No.
	 */
	public void setPerforationOccurred(int[] arrPosition, EnumCM_YesNo enumYesNo)
	{
		/**
		 * Sets the value for Primary Intervention Device.
		 */
		if(null== this.objYesNoCID230)
			this.objYesNoCID230 = new YesNo_CID230();
		this.objYesNoCID230.setYesNo(enumYesNo);

		/**
		 * Retrieves the corresponding values of CodeMeaning,CodeValue and CodingSchemeDesignator.
		 */
		String strCM = this.objYesNoCID230.getCodeMeaning();
		String strCV = this.objYesNoCID230.getCodeValue();
		String strCSD1 = this.objYesNoCID230.getCodingSchemeDesignator();
		String strSNOMEDCTID = objYesNoCID230.getSNOMEDCTID();

		/**
		 * Retrieves the corresponding values of CodeMeaning,CodeValue and CodingSchemeDesignator.
		 */
		String strCodeMeaning = EnumCM_LesionInterventionInformation.PERFORATION_OCCURRED.getValue();
		String strCodeValue = EnumCV_LesionInterventionInformation.PERFORATION_OCCURRED_118.getValue();
		String strCSD2 = EnumCodingSchemeDesignator.NCDR.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 , strCSD2, strCV, strCSD1, "", strCM,strSNOMEDCTID);
		getSRTree().addChild(objContentSequenceItem);
	}

	/**
	 * Sets value for Best illustration of finding
	 * @param arrPosition identifier 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_LesionInterventionInformation.BEST_ILLUSTRATION_OF_FINDING.getValue();
		String strCodeValue = EnumCV_LesionInterventionInformation.BEST_ILLUSTRATION_OF_FINDING_121080.getValue();
		String strCSD = EnumCodingSchemeDesignator.DCM.getValue();

		/**
		 * Creating a node of Value Type IMAGE 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);
	}

	/**
	 * Sets the value for Procedure Result.
	 * @param arrPosition Identifier which shows the position of the node in the SR Tree.
	 * @param strProcedureResult String value for Description Of Material.
	 */
	public void setProcedureResult(int[] arrPosition, String strProcedureResult)
	{
		/**
		 * Retrieves the corresponding values of CodeMeaning,CodeValue and CodingSchemeDesignator.
		 */
		String strCodeMeaning = EnumCM_LesionInterventionInformation.PROCEDURE_RESULT.getValue();
		String strCodeValue = EnumCV_LesionInterventionInformation.PROCEDURE_RESULT_122177.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, strProcedureResult);
		getSRTree().addChild(objContentSequenceItem);
	}
	/**
	 * Sets the value for Catheterization Procedure Phase.
	 * @param arrPosition Identifier which shows the position of the node in the SR Tree.
	 */
	public void setCatheterizationProcedurePhase(int[] arrPosition)
	{
		/**
		 * Retrieves the corresponding values of CodeMeaning,CodeValue and CodingSchemeDesignator.
		 */
		String strCodeMeaning = EnumCM_LesionInterventionInformation.CATHETERIZATION_PROCEDURE_PHASE.getValue();
		String strCodeValue = EnumCV_LesionInterventionInformation.CATHETERIZATION_PROCEDURE_PHASE_G_72BB.getValue();
		String strCSD = EnumCodingSchemeDesignator.SRT.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, strCSD, "", "", "", "");
		getSRTree().addChild(objContentSequenceItem);
	}
	/**
	 * Sets the value for Post-intervention Phase.
	 * @param arrPosition Identifier which shows the position of the node in the SR Tree.
	 */
	public void setPostInterventionPhase(int[] arrPosition)
	{
		/**
		 * Retrieves the corresponding values of CodeMeaning,CodeValue and CodingSchemeDesignator.
		 */
		String strCodeMeaning = EnumCM_LesionInterventionInformation.POST_INTERVENTION_PHASE.getValue();
		String strCodeValue = EnumCV_LesionInterventionInformation.POST_INTERVENTION_PHASE_G_7298.getValue();
		String strCSD = EnumCodingSchemeDesignator.SRT.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, strCSD, "", "", "", "");
		getSRTree().addChild(objContentSequenceItem);
	}
	/**
	 * Sets the value for Lumen Diameter Stenosis.
	 * @param arrPosition Identifier which shows the position of the node in the SR Tree.
	 * @param arrNumericValue 
	 */
	public void setLumenDiameterStenosis(int[] arrPosition, String[] arrNumericValue)
	{
		/**
		 * Retrieves the corresponding values of CodeMeaning,CodeValue and CodingSchemeDesignator.
		 */
		String strCodeMeaning = EnumCM_LesionInterventionInformation.LUMEN_DIAMETER_STENOSIS.getValue();
		String strCodeValue = EnumCV_LesionInterventionInformation.LUMEN_DIAMETER_STENOSIS_R_101BB.getValue();
		String strCSD = 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, strCSD, arrNumericValue, "", "", "", "", "", "", "", "");
		getSRTree().addChild(objContentSequenceItem);
	}
}
