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


import cdac.medinfo.sdk.dcm30_04.templates.dicomsnomedmap.EnumAnatomicSNOMEDMap;
import cdac.medinfo.sdk.dcm30_04.templates.enums.EnumCodingSchemeDesignator;
//import cdac.medinfo.sdk.dcm30_04.templates.enums.cm.EnumCM_NuclearCardiologyProtocols;
import cdac.medinfo.sdk.dcm30_04.templates.enums.cm.EnumCM_UpperExtremityVeins;
import cdac.medinfo.sdk.dcm30_04.templates.enums.cv.EnumCV_UpperExtremityVeins;


/**
 * This class represents UpperExtremityVeins - CID12108
 */
public class UpperExtremityVeins_CID12108
{
	
	/**
	 * 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 UpperExtremityVeins_CID12108 Template 
	 */
	public UpperExtremityVeins_CID12108()
	{

	}

	/**
	 * 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 enumUpperExtremityVeins Object of EnumCM_UpperExtremityVeins represents Code Meaning.
	 */
	private void setCodeValue(EnumCM_UpperExtremityVeins enumUpperExtremityVeins)
	{
		switch(enumUpperExtremityVeins)
		{
		case AXILLARY_VEIN:
			this.strCodeValue = EnumCV_UpperExtremityVeins.AXILLARY_VEIN_T_49110
					.getValue();
			break;
		case BASILIC_VEIN:
			this.strCodeValue = EnumCV_UpperExtremityVeins.BASILIC_VEIN_T_48052
					.getValue();
			break;
		case BRACHIAL_VEIN:
			this.strCodeValue = EnumCV_UpperExtremityVeins.BRACHIAL_VEIN_T_49350
					.getValue();
			break;
		case CEPHALIC_VEIN:
			this.strCodeValue = EnumCV_UpperExtremityVeins.CEPHALIC_VEIN_T_49240
					.getValue();
			break;
		case INNOMINATE_VEIN:
			this.strCodeValue = EnumCV_UpperExtremityVeins.INNOMINATE_VEIN_T_48620
					.getValue();
			break;
		case INTERNAL_JUGULAR_VEIN:
			this.strCodeValue = EnumCV_UpperExtremityVeins.INTERNAL_JUGULAR_VEIN_T_48170
					.getValue();
			break;
		case MEDIAN_CUBITAL_VEIN:
			this.strCodeValue = EnumCV_UpperExtremityVeins.MEDIAN_CUBITAL_VEIN_T_49250
					.getValue();
			break;
		case RADIAL_VEIN:
			this.strCodeValue = EnumCV_UpperExtremityVeins.RADIAL_VEIN_T_49340
					.getValue();
			break;
		case SUBCLAVIAN_VEIN:
			this.strCodeValue = EnumCV_UpperExtremityVeins.SUBCLAVIAN_VEIN_T_48330
					.getValue();
			break;
		case ULNAR_VEIN:
			this.strCodeValue = EnumCV_UpperExtremityVeins.ULNAR_VEIN_T_49330
					.getValue();
			break;
		case SUPERIOR_VENA_CAVA:
			this.strCodeValue = EnumCV_UpperExtremityVeins.SUPERIOR_VENA_CAVA_T_48610
					.getValue();
			break;
		case DEEP_PALMAR_VENOUS_ARCH:
			this.strCodeValue = EnumCV_UpperExtremityVeins.DEEP_PALMAR_VENOUS_ARCH_T_49218
					.getValue();
			break;
		case SUPERFICIAL_PALMAR_VENOUS_ARCH:
			this.strCodeValue = EnumCV_UpperExtremityVeins.SUPERFICIAL_PALMAR_VENOUS_ARCH_T_49217
					.getValue();
			break;
		}
	}

	/**
	 * Sets the SNOMED-CT ID.
	 * @param enumUpperExtremityVeins Object of EnumCM_UpperExtremityVeins represents Code Meaning.
	 */
	private void setSNOMEDCTID(EnumCM_UpperExtremityVeins enumUpperExtremityVeins)
	{
		switch(enumUpperExtremityVeins)
		{
		case AXILLARY_VEIN:
			this.strSNOMEDCTID = EnumAnatomicSNOMEDMap.AXILLARY_VEIN
					.getSNOMEDCTID();
			break;
		case BASILIC_VEIN:
			this.strSNOMEDCTID = EnumAnatomicSNOMEDMap.BASILIC_VEIN
					.getSNOMEDCTID();
			break;
		case BRACHIAL_VEIN:
			this.strSNOMEDCTID = EnumAnatomicSNOMEDMap.BRACHIAL_VEIN
					.getSNOMEDCTID();
			break;
		case CEPHALIC_VEIN:
			this.strSNOMEDCTID = EnumAnatomicSNOMEDMap.CEPHALIC_VEIN
					.getSNOMEDCTID();
			break;
		case INNOMINATE_VEIN:
			this.strSNOMEDCTID = EnumAnatomicSNOMEDMap.INNOMINATE_VEIN
					.getSNOMEDCTID();
			break;
		case INTERNAL_JUGULAR_VEIN:
			this.strSNOMEDCTID = EnumAnatomicSNOMEDMap.INTERNAL_JUGULAR_VEIN
					.getSNOMEDCTID();
			break;
		case MEDIAN_CUBITAL_VEIN:
			this.strSNOMEDCTID = EnumAnatomicSNOMEDMap.MEDIAN_CUBITAL_VEIN
					.getSNOMEDCTID();
			break;
		case RADIAL_VEIN:
			this.strSNOMEDCTID = EnumAnatomicSNOMEDMap.RADIAL_VEIN.getSNOMEDCTID();
			break;
		case SUBCLAVIAN_VEIN:
			this.strSNOMEDCTID = EnumAnatomicSNOMEDMap.SUBCLAVIAN_VEIN
					.getSNOMEDCTID();
			break;
		case ULNAR_VEIN:
			this.strSNOMEDCTID = EnumAnatomicSNOMEDMap.ULNAR_VEIN.getSNOMEDCTID();
			break;
		case SUPERIOR_VENA_CAVA:
			this.strSNOMEDCTID = EnumAnatomicSNOMEDMap.SUPERIOR_VENA_CAVA
					.getSNOMEDCTID();
			break;
		case DEEP_PALMAR_VENOUS_ARCH:
			this.strSNOMEDCTID = EnumAnatomicSNOMEDMap.DEEP_PALMAR_VENOUS_ARCH
					.getSNOMEDCTID();
			break;
		case SUPERFICIAL_PALMAR_VENOUS_ARCH:
			this.strSNOMEDCTID = EnumAnatomicSNOMEDMap.SUPERFICIAL_PALMAR_VENOUS_ARCH
					.getSNOMEDCTID();
			break;
		}
	}

	/**
	 * Sets the value for UpperExtremityVeins
	 * @param enumUpperExtremityVeins Object of EnumCM_UpperExtremityVeins.
	 */
	public void setUpperExtremityVeins(EnumCM_UpperExtremityVeins enumUpperExtremityVeins)
	{
		/**
		 * Retrieves the value for CodingSchemeDesignator, CodingSchemeVersion and Code Meaning and 
		 * sets the Code Value according to Code Meaning.
		 */
		this.strCodeMeaning = enumUpperExtremityVeins.getValue();
		this.strCodingSchemeDesignator = EnumCodingSchemeDesignator.SRT.getValue();
		
		/**
		 * set code Value
		 */
		setCodeValue(enumUpperExtremityVeins);
	}
}
