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

import cdac.medinfo.sdk.dcm30_04.baselibs.ContentSequenceItem;
import cdac.medinfo.sdk.dcm30_04.srtree.SRTree;
import cdac.medinfo.sdk.dcm30_04.templates.cid.CalciumDistribution_CID3489;
import cdac.medinfo.sdk.dcm30_04.templates.cid.IVUSDissectionClassifications_CID3492;
import cdac.medinfo.sdk.dcm30_04.templates.cid.IVUSLesionMorphologies_CID3491;
import cdac.medinfo.sdk.dcm30_04.templates.cid.IVUSNonMorphologicalFindings_CID3494;
import cdac.medinfo.sdk.dcm30_04.templates.cid.IVUSRelativeStenosisSeverities_CID3493;
import cdac.medinfo.sdk.dcm30_04.templates.cid.PreviouslyDilatedLesion_CID3750;
import cdac.medinfo.sdk.dcm30_04.templates.enums.EnumCodingSchemeDesignator;
import cdac.medinfo.sdk.dcm30_04.templates.enums.cm.EnumCM_CalciumDistribution;
import cdac.medinfo.sdk.dcm30_04.templates.enums.cm.EnumCM_EV;
import cdac.medinfo.sdk.dcm30_04.templates.enums.cm.EnumCM_IVUSDissectionClassifications;
import cdac.medinfo.sdk.dcm30_04.templates.enums.cm.EnumCM_IVUSNonMorphologicalFindings;
import cdac.medinfo.sdk.dcm30_04.templates.enums.cm.EnumCM_IVUSQualitativeAssessments;
import cdac.medinfo.sdk.dcm30_04.templates.enums.cm.EnumCM_IVUSRelativeStenosisSeverities;
import cdac.medinfo.sdk.dcm30_04.templates.enums.cm.EnumCM_PreviouslyDilatedLesion;
import cdac.medinfo.sdk.dcm30_04.templates.enums.cv.EnumCV_EV;
import cdac.medinfo.sdk.dcm30_04.templates.enums.cv.EnumCV_IVUSQualitativeAssessments;
import cdac.medinfo.sdk.dcm30_04.templates.generaltemplates.NegationModifierPresenceOfFinding_TID1350;
import cdac.medinfo.sdk.dcm30_04.templates.generaltemplates.Template;

/**
 * This class represents IVUSQualitativeAssessments - TID3254
 */
public class IVUSQualitativeAssessments_TID3254 extends Template
{
	/**
	 * Object of IVUSLesionMorphologies_CID3491
	 */
	private IVUSLesionMorphologies_CID3491 objLesionMorphologiesCID3491;

	/**
	 * Object of IVUSNonMorphologicalFindings_CID3494
	 */
	private IVUSNonMorphologicalFindings_CID3494 objNonMorphologicalFindingsCID3494;

	/**
	 * Object of IVUSDissectionClassifications_CID3492
	 */
	private IVUSDissectionClassifications_CID3492 objIvusDissectionClassificationsCID3492;

	/**
	 * object of IVUSRelativeStenosisSeverities_CID3493
	 */
	private IVUSRelativeStenosisSeverities_CID3493 objIvusRelativeStenosisSeveritiesCID3493;

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

	/**
	 * Object of CalciumDistribution_CID3489
	 */
	private CalciumDistribution_CID3489 objCalciumDistributionCID3489;

	/**
	 * Object of NegationModifierPresenceOfFinding_TID1350
	 */

	private NegationModifierPresenceOfFinding_TID1350 objNegationModifierPresenceOfFindingTID1350;

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

	/**
	 * Retrieves NegationModifierPresenceOfFinding 
	 * @return objNegationModifierPresenceOfFindingTID1350 Object of NegationModifierPresenceOfFinding_TID1350 
	 */
	public NegationModifierPresenceOfFinding_TID1350 getNegationModifierPresenceOfFinding() 
	{
		if(null == this.objNegationModifierPresenceOfFindingTID1350)
			this.objNegationModifierPresenceOfFindingTID1350 = new NegationModifierPresenceOfFinding_TID1350(getSRTree());
		return this.objNegationModifierPresenceOfFindingTID1350;
	}

	

	/**
	 * Sets value for Finding.
	 * @param arrPosition Identifier which shows the position of the node in the SR Tree.
	 * @param enumIVUSNonMorphologicalFindings This Enum value  of IVUSNonMorphologicalFindings
	 */
	public void setFinding(int[] arrPosition, EnumCM_IVUSNonMorphologicalFindings enumIVUSNonMorphologicalFindings)
	{
		/**
		 * Retrieves the corresponding values of CodeMeaning,CodeValue and CodingSchemeDesignator.
		 */
		String strCodeMeaning = EnumCM_IVUSQualitativeAssessments.FINDING.getValue();
		String strCodeValue = EnumCV_IVUSQualitativeAssessments.FINDING_121071.getValue();
		String strCSDesg = EnumCodingSchemeDesignator.DCM.getValue();

		/**
		 * Setting value for Finding
		 */
		if(null== this.objNonMorphologicalFindingsCID3494)
			this.objNonMorphologicalFindingsCID3494 = new IVUSNonMorphologicalFindings_CID3494();
		this.objNonMorphologicalFindingsCID3494.setIVUSNonMorphologicalFindings(enumIVUSNonMorphologicalFindings);

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

	/**
	 * Sets value for Finding.
	 * @param arrPosition Identifier which shows the position of the node in the SR Tree.
	 */
	public void setFinding(int[] arrPosition)
	{
		/**
		 * Retrieves the corresponding values of CodeMeaning,CodeValue and CodingSchemeDesignator.
		 */
		String strCodeMeaning = EnumCM_IVUSQualitativeAssessments.FINDING.getValue();
		String strCodeValue = EnumCV_IVUSQualitativeAssessments.FINDING_121071.getValue();
		String strCSDesg = EnumCodingSchemeDesignator.DCM.getValue();

		/**
		 * Setting value for Finding
		 */
		String strCM = EnumCM_EV.ARTERIAL_DISSECTION.getValue();
		String strCV = EnumCV_EV.ARTERIAL_DISSECTION_D3_81310.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, strCSDesg, strCV, strCSD, "", strCM);
		getSRTree().addChild(objContentSequenceItem);
	}

	/**
	 * Sets value for Dissection Classification.
	 * @param arrPosition Identifier which shows the position of the node in the SR Tree.
	 * @param enumIVUSDissectionClassifications Enumerated value for Dissection Classification
	 */
	public void setDissectionClassification(int[] arrPosition, EnumCM_IVUSDissectionClassifications enumIVUSDissectionClassifications)
	{
		/**
		 * Retrieves the corresponding values of CodeMeaning,CodeValue and CodingSchemeDesignator.
		 */
		String strCodeMeaning = EnumCM_IVUSQualitativeAssessments.DISSECTION_CLASSIFICATION.getValue();
		String strCodeValue = EnumCV_IVUSQualitativeAssessments.DISSECTION_CLASSIFICATION_122387.getValue();
		String strCSDesg = EnumCodingSchemeDesignator.DCM.getValue();

		/**
		 * Setting value for Dissection Classification
		 */
		if(null== this.objIvusDissectionClassificationsCID3492)
			this.objIvusDissectionClassificationsCID3492 = new IVUSDissectionClassifications_CID3492();
		this.objIvusDissectionClassificationsCID3492.setIVUSDissectionClassifications(enumIVUSDissectionClassifications);

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

	/**
	 * Sets value for Relative Stenosis Severity.
	 * @param arrPosition Identifier which shows the position of the node in the SR Tree.
	 * @param enumIVUSRelativeStenosisSeveritys Enumerated value for Relative Stenosis Severity
	 */
	public void setRelativeStenosisSeverity(int[] arrPosition, EnumCM_IVUSRelativeStenosisSeverities enumIVUSRelativeStenosisSeverities)
	{
		/**
		 * Retrieves the corresponding values of CodeMeaning,CodeValue and CodingSchemeDesignator.
		 */
		String strCodeMeaning = EnumCM_IVUSQualitativeAssessments.RELATIVE_STENOSIS_SEVERITY.getValue();
		String strCodeValue = EnumCV_IVUSQualitativeAssessments.RELATIVE_STENOSIS_SEVERITY_122391.getValue();
		String strCSDesg = EnumCodingSchemeDesignator.DCM.getValue();

		/**
		 * Setting value for Relative Stenosis Severity
		 */
		if(null== this.objIvusRelativeStenosisSeveritiesCID3493)
			this.objIvusRelativeStenosisSeveritiesCID3493 = new IVUSRelativeStenosisSeverities_CID3493();
		this.objIvusRelativeStenosisSeveritiesCID3493.setIVUSRelativeStenosisSeverities(enumIVUSRelativeStenosisSeverities);

		String strCM = objIvusRelativeStenosisSeveritiesCID3493.getCodeMeaning();
		String strCV = objIvusRelativeStenosisSeveritiesCID3493.getCodeValue();
		String strCSD = objIvusRelativeStenosisSeveritiesCID3493.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 Previously Dilated Lesion.
	 * @param arrPosition Identifier which shows the position of the node in the SR Tree.
	 * @param enumIVUSPreviouslyDilatedLesions Enumerated value for Previously Dilated Lesion
	 */
	public void setPreviouslyDilatedLesion(int[] arrPosition, EnumCM_PreviouslyDilatedLesion enumPreviouslyDilatedLesion)
	{
		/**
		 * Retrieves the corresponding values of CodeMeaning,CodeValue and CodingSchemeDesignator.
		 */
		String strCodeMeaning = EnumCM_IVUSQualitativeAssessments.PREVIOUSLY_DILATED_LESION.getValue();
		String strCodeValue = EnumCV_IVUSQualitativeAssessments.PREVIOUSLY_DILATED_LESION_108.getValue();
		String strCSDesg = EnumCodingSchemeDesignator.NCDR.getValue();

		/**
		 * Setting value for Previously Dilated Lesion
		 */
		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();
		/**
		 * 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 Calcification Type.
	 * @param arrPosition Identifier which shows the position of the node in the SR Tree.
	 * @param enumIVUSCalcificationTypes Enumerated value for Calcification Type
	 */
	public void setCalcificationType(int[] arrPosition, EnumCM_CalciumDistribution enumCalciumDistribution)
	{
		/**
		 * Retrieves the corresponding values of CodeMeaning,CodeValue and CodingSchemeDesignator.
		 */
		String strCodeMeaning = EnumCM_IVUSQualitativeAssessments.PREVIOUSLY_DILATED_LESION.getValue();
		String strCodeValue = EnumCV_IVUSQualitativeAssessments.PREVIOUSLY_DILATED_LESION_108.getValue();
		String strCSDesg = EnumCodingSchemeDesignator.DCM.getValue();

		/**
		 * Setting value for Calcification Type
		 */
		if(null== this.objCalciumDistributionCID3489)
			this.objCalciumDistributionCID3489 = new CalciumDistribution_CID3489();
		this.objCalciumDistributionCID3489.setCalciumDistribution(enumCalciumDistribution);

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