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


import cdac.medinfo.sdk.dcm30_04.templates.dicomsnomedmap.EnumDICOMSNOMEDMap;
import cdac.medinfo.sdk.dcm30_04.templates.enums.EnumCodingSchemeDesignator;
import cdac.medinfo.sdk.dcm30_04.templates.enums.cm.EnumCM_BrainStructuresForVolumetricMeasurements;
import cdac.medinfo.sdk.dcm30_04.templates.enums.cv.EnumCV_BrainStructuresForVolumetricMeasurements;


/**
 * This class represents BrainStructuresForVolumetricMeasurements CID7140
 */
public class BrainStructuresForVolumetricMeasurements_CID7140 {

	/**
	 * The Code Value for template.
	 */
	private String strCodeValue = null;

	/**
	 * The Code Meaning for template.
	 */
	private String strCodeMeaning = null;

	/**
	 * The Coding Scheme Designator for template.
	 */
	private String strCodingSchemeDesignator;

	/**
	 * The SNOMED CT ID for template.
	 */
	private String strSNOMEDCTID = null;
	/**
	 * Instantiates a new BrainStructuresForVolumetricMeasurements_CID7140 Template 
	 */
	public BrainStructuresForVolumetricMeasurements_CID7140()
	{

	}

	/**
	 * Retrieves the value for Code Meaning.
	 * @return String value for Code Meaning.
	 */
	public String getCodeMeaning()
	{
		return strCodeMeaning;
	}

	/**
	 * Retrieves the value for Code Value.
	 * @return String value for Code Value.
	 */
	public String getCodeValue() 
	{
		return strCodeValue;
	}

	/**
	 * Retrieves the value for Coding Scheme Designator.
	 * @return String value for Coding Scheme Designator.
	 */
	public String getCodingSchemeDesignator() 
	{
		return strCodingSchemeDesignator;
	}
	
	/**
	 * Retrieves the value for SNOMED-CT ID.
	 * @return String value for SNOMED-CT ID.
	 */
	public String getSNOMEDCTID() 
	{
		return strSNOMEDCTID;
	}
	/**
	 * Sets the Code Value according to Code Meaning.
	 * @param enumBrainStructuresForVolumetricMeasurements Object of EnumCM_BrainStructuresForVolumetricMeasurements represents Code Meaning.
	 */
	private void setCodeValue(EnumCM_BrainStructuresForVolumetricMeasurements enumBrainStructuresForVolumetricMeasurements)
	{
		switch(enumBrainStructuresForVolumetricMeasurements) 
		{
		case AMYGDALA:
			this.strCodeValue = EnumCV_BrainStructuresForVolumetricMeasurements.AMYGDALA_T_A3230
					.getValue();
			break;
		case BRAIN_STEM:
			this.strCodeValue = EnumCV_BrainStructuresForVolumetricMeasurements.BRAIN_STEM_T_D0558
					.getValue();
			break;
		case CAUDATE_NUCLEUS:
			this.strCodeValue = EnumCV_BrainStructuresForVolumetricMeasurements.CAUDATE_NUCLEUS_T_A3200
					.getValue();
			break;
		case CEREBELLAR_CORTEX:
			this.strCodeValue = EnumCV_BrainStructuresForVolumetricMeasurements.CEREBELLAR_CORTEX_T_A6041
					.getValue();
			break;
		case CEREBELLAR_WHITE_MATTER:
			this.strCodeValue = EnumCV_BrainStructuresForVolumetricMeasurements.CEREBELLAR_WHITE_MATTER_T_A6080
					.getValue();
			break;
		case CEREBRAL_GREY_MATTER:
			this.strCodeValue = EnumCV_BrainStructuresForVolumetricMeasurements.CEREBRAL_GREY_MATTER_T_A2020
					.getValue();
			break;
		case CEREBRAL_WHITE_MATTER:
			this.strCodeValue = EnumCV_BrainStructuresForVolumetricMeasurements.CEREBRAL_WHITE_MATTER_T_A2030
					.getValue();
			break;
		case CRANIAL_CAVITY:
			this.strCodeValue = EnumCV_BrainStructuresForVolumetricMeasurements.CRANIAL_CAVITY_T_D1403
					.getValue();
			break;
		case CRANIAL_SUBARACHNOID_SPACE:
			this.strCodeValue = EnumCV_BrainStructuresForVolumetricMeasurements.CRANIAL_SUBARACHNOID_SPACE_T_A1504
					.getValue();
			break;
		case FIFTH_VENTRICLE:
			this.strCodeValue = EnumCV_BrainStructuresForVolumetricMeasurements.FIFTH_VENTRICLE_T_A1604
					.getValue();
			break;
		case FOURTH_VENTRICLE:
			this.strCodeValue = EnumCV_BrainStructuresForVolumetricMeasurements.FOURTH_VENTRICLE_T_A1820
					.getValue();
			break;
		case GLOBUS_PALLIDUS:
			this.strCodeValue = EnumCV_BrainStructuresForVolumetricMeasurements.GLOBUS_PALLIDUS_T_A3500
					.getValue();
			break;
		case HIPPOCAMPUS:
			this.strCodeValue = EnumCV_BrainStructuresForVolumetricMeasurements.HIPPOCAMPUS_T_A2570
					.getValue();
			break;
		case CEREBELLAR_SUBARACHNOID_SPACE:
			this.strCodeValue = EnumCV_BrainStructuresForVolumetricMeasurements.CEREBELLAR_SUBARACHNOID_SPACE_T_A1509
					.getValue();
			break;
		case INFERIOR_HORN_OF_LATERAL_VENTRICLE:
			this.strCodeValue = EnumCV_BrainStructuresForVolumetricMeasurements.INFERIOR_HORN_OF_LATERAL_VENTRICLE_T_A1721
					.getValue();
			break;
		case LATERAL_VENTRICLE:
			this.strCodeValue = EnumCV_BrainStructuresForVolumetricMeasurements.LATERAL_VENTRICLE_T_A1650
					.getValue();
			break;
		case NUCLEUS_ACCUMBENS:
			this.strCodeValue = EnumCV_BrainStructuresForVolumetricMeasurements.NUCLEUS_ACCUMBENS_T_A0149
					.getValue();
			break;
		case INTRACRANIAL_STRUCTURE:
			this.strCodeValue = EnumCV_BrainStructuresForVolumetricMeasurements.INTRACRANIAL_STRUCTURE_T_A0190
					.getValue();
			break;
		case PUTAMEN:
			this.strCodeValue = EnumCV_BrainStructuresForVolumetricMeasurements.PUTAMEN_T_A3400
					.getValue();
			break;
		case THALAMUS:
			this.strCodeValue = EnumCV_BrainStructuresForVolumetricMeasurements.THALAMUS_T_D0593
					.getValue();
			break;
		case THIRD_VENTRICLE:
			this.strCodeValue = EnumCV_BrainStructuresForVolumetricMeasurements.THIRD_VENTRICLE_T_A1740
					.getValue();
			break;
		case VENTRAL_DIENCEPHALON:
			this.strCodeValue = EnumCV_BrainStructuresForVolumetricMeasurements.VENTRAL_DIENCEPHALON_110700
					.getValue();
			break;
		case WHITE_MATTER_T1_HYPOINTENSITY:
			this.strCodeValue = EnumCV_BrainStructuresForVolumetricMeasurements.WHITE_MATTER_T1_HYPOINTENSITY_110701
					.getValue();
			break;
		case WHITE_MATTER_T2_HYPERINTENSITY:
			this.strCodeValue = EnumCV_BrainStructuresForVolumetricMeasurements.WHITE_MATTER_T2_HYPERINTENSITY_110702
					.getValue();
			break;
		}
	}

	/**
	 * Sets the SNOMED-CT ID.
	 * @param enumBrainStructuresForVolumetricMeasurements Object of EnumCM_BrainStructuresForVolumetricMeasurements represents Code Meaning.
	 */
	private void setSNOMEDCTID(EnumCM_BrainStructuresForVolumetricMeasurements enumBrainStructuresForVolumetricMeasurements)
	{
		switch(enumBrainStructuresForVolumetricMeasurements)
		{
		case AMYGDALA:
			this.strSNOMEDCTID = EnumDICOMSNOMEDMap.AMYGDALA.getSNOMEDCTID();
			break;
		case BRAIN_STEM:
			this.strSNOMEDCTID = EnumDICOMSNOMEDMap.BRAIN_STEM.getSNOMEDCTID();
			break;
		case CAUDATE_NUCLEUS:
			this.strSNOMEDCTID = EnumDICOMSNOMEDMap.CAUDATE_NUCLEUS
					.getSNOMEDCTID();
			break;
		case CEREBELLAR_CORTEX:
			this.strSNOMEDCTID = EnumDICOMSNOMEDMap.CEREBELLAR_CORTEX
					.getSNOMEDCTID();
			break;
		case CEREBELLAR_WHITE_MATTER:
			this.strSNOMEDCTID = EnumDICOMSNOMEDMap.CEREBELLAR_WHITE_MATTER
					.getSNOMEDCTID();
			break;
		case CEREBRAL_GREY_MATTER:
			this.strSNOMEDCTID = EnumDICOMSNOMEDMap.CEREBRAL_GREY_MATTER
					.getSNOMEDCTID();
			break;
		case CEREBRAL_WHITE_MATTER:
			this.strSNOMEDCTID = EnumDICOMSNOMEDMap.CEREBRAL_WHITE_MATTER
					.getSNOMEDCTID();
			break;
		case CRANIAL_CAVITY:
			this.strSNOMEDCTID = EnumDICOMSNOMEDMap.CRANIAL_CAVITY
					.getSNOMEDCTID();
			break;
		case CRANIAL_SUBARACHNOID_SPACE:
			this.strSNOMEDCTID = EnumDICOMSNOMEDMap.CRANIAL_SUBARACHNOID_SPACE
					.getSNOMEDCTID();
			break;
		case FIFTH_VENTRICLE:
			this.strSNOMEDCTID = EnumDICOMSNOMEDMap.FIFTH_VENTRICLE
					.getSNOMEDCTID();
			break;
		case FOURTH_VENTRICLE:
			this.strSNOMEDCTID = EnumDICOMSNOMEDMap.FOURTH_VENTRICLE
					.getSNOMEDCTID();
			break;
		case GLOBUS_PALLIDUS:
			this.strSNOMEDCTID = EnumDICOMSNOMEDMap.GLOBUS_PALLIDUS
					.getSNOMEDCTID();
			break;
		case HIPPOCAMPUS:
			this.strSNOMEDCTID = EnumDICOMSNOMEDMap.HIPPOCAMPUS.getSNOMEDCTID();
			break;
		case CEREBELLAR_SUBARACHNOID_SPACE:
			this.strSNOMEDCTID = EnumDICOMSNOMEDMap.CEREBELLAR_SUBARACHNOID_SPACE
					.getSNOMEDCTID();
			break;
		case INFERIOR_HORN_OF_LATERAL_VENTRICLE:
			this.strSNOMEDCTID = EnumDICOMSNOMEDMap.INFERIOR_HORN_OF_LATERAL_VENTRICLE
					.getSNOMEDCTID();
			break;
		case LATERAL_VENTRICLE:
			this.strSNOMEDCTID = EnumDICOMSNOMEDMap.LATERAL_VENTRICLE
					.getSNOMEDCTID();
			break;
		case NUCLEUS_ACCUMBENS:
			this.strSNOMEDCTID = EnumDICOMSNOMEDMap.NUCLEUS_ACCUMBENS
					.getSNOMEDCTID();
			break;
		case INTRACRANIAL_STRUCTURE:
			this.strSNOMEDCTID = EnumDICOMSNOMEDMap.INTRACRANIAL_STRUCTURE
					.getSNOMEDCTID();
			break;
		case PUTAMEN:
			this.strSNOMEDCTID = EnumDICOMSNOMEDMap.PUTAMEN.getSNOMEDCTID();
			break;
		case THALAMUS:
			this.strSNOMEDCTID = EnumDICOMSNOMEDMap.THALAMUS.getSNOMEDCTID();
			break;
		case THIRD_VENTRICLE:
			this.strSNOMEDCTID = EnumDICOMSNOMEDMap.THIRD_VENTRICLE
					.getSNOMEDCTID();
			break;
		}
	}

	/**
	 * Sets the value for BrainStructuresForVolumetricMeasurements
	 * @param enumBrainStructuresForVolumetricMeasurements Object of EnumCM_BrainStructuresForVolumetricMeasurements.
	 */
	public void setBrainStructuresForVolumetricMeasurements(EnumCM_BrainStructuresForVolumetricMeasurements enumBrainStructuresForVolumetricMeasurements)
	{
		/**
		 * Retrieves the value for CodingSchemeDesignator, CodingSchemeVersion and Code Meaning and 
		 * sets the Code Value according to Code Meaning.
		 */
		this.strCodeMeaning = enumBrainStructuresForVolumetricMeasurements.getValue();
		if(strCodeMeaning.equalsIgnoreCase(EnumCM_BrainStructuresForVolumetricMeasurements.VENTRAL_DIENCEPHALON.getValue())
			||strCodeMeaning.equalsIgnoreCase(EnumCM_BrainStructuresForVolumetricMeasurements.WHITE_MATTER_T1_HYPOINTENSITY.getValue())
			||strCodeMeaning.equalsIgnoreCase(EnumCM_BrainStructuresForVolumetricMeasurements.WHITE_MATTER_T2_HYPERINTENSITY.getValue()))
			this.strCodingSchemeDesignator = EnumCodingSchemeDesignator.DCM.getValue();
		else
			this.strCodingSchemeDesignator = EnumCodingSchemeDesignator.SRT.getValue();
		
		/**
		 * set code Value
		 */
		setCodeValue(enumBrainStructuresForVolumetricMeasurements);

		/**
		 * set SNOMED-CT ID
		 */
		setSNOMEDCTID(enumBrainStructuresForVolumetricMeasurements);
	}
}
