/*******************************************************************************
 *  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.EnumAnatomicSNOMEDMap;
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_ImplantTargetAnatomy;
import cdac.medinfo.sdk.dcm30_04.templates.enums.cv.EnumCV_ImplantTargetAnatomy;


/**
 * This class represents ImplantTargetAnatomy CID7304
 */
public class ImplantTargetAnatomy_CID7304 {

	/**
	 * 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 ImplantTargetAnatomy_CID7304 Template 
	 */
	public ImplantTargetAnatomy_CID7304()
	{

	}

	/**
	 * 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 enumImplantTargetAnatomy Object of EnumCM_ImplantTargetAnatomy represents Code Meaning.
	 */
	private void setCodeValue(
			EnumCM_ImplantTargetAnatomy enumImplantTargetAnatomy) {
		switch (enumImplantTargetAnatomy) {
		case ANKLE_JOINT:
			this.strCodeValue = EnumCV_ImplantTargetAnatomy.ANKLE_JOINT_T_15750
					.getValue();
			break;
		case CERVICAL_SPINE:
			this.strCodeValue = EnumCV_ImplantTargetAnatomy.CERVICAL_SPINE_T_11501
					.getValue();
			break;
		case CERVICO_THORACIC_SPINE:
			this.strCodeValue = EnumCV_ImplantTargetAnatomy.CERVICO_THORACIC_SPINE_T_D00F7
					.getValue();
			break;
		case ELBOW_JOINT:
			this.strCodeValue = EnumCV_ImplantTargetAnatomy.ELBOW_JOINT_T_15430
					.getValue();
			break;
		case FACIAL_BONES:
			this.strCodeValue = EnumCV_ImplantTargetAnatomy.FACIAL_BONES_T_11196
					.getValue();
			break;
		case FEMUR:
			this.strCodeValue = EnumCV_ImplantTargetAnatomy.FEMUR_T_12710
					.getValue();
			break;
		case HEAD_OF_FEMUR:
			this.strCodeValue = EnumCV_ImplantTargetAnatomy.HEAD_OF_FEMUR_T_12711
					.getValue();
			break;
		case PROXIMAL_FEMUR:
			this.strCodeValue = EnumCV_ImplantTargetAnatomy.PROXIMAL_FEMUR_T_D078C
					.getValue();
			break;
		case SHAFT_OF_FEMUR:
			this.strCodeValue = EnumCV_ImplantTargetAnatomy.SHAFT_OF_FEMUR_T_12717
					.getValue();
			break;
		case DISTAL_FEMUR:
			this.strCodeValue = EnumCV_ImplantTargetAnatomy.DISTAL_FEMUR_T_D078D
					.getValue();
			break;
		case FINGER_JOINT:
			this.strCodeValue = EnumCV_ImplantTargetAnatomy.FINGER_JOINT_T_1553D
					.getValue();
			break;
		case HIP_JOINT:
			this.strCodeValue = EnumCV_ImplantTargetAnatomy.HIP_JOINT_T_15710
					.getValue();
			break;
		case JAW_REGION:
			this.strCodeValue = EnumCV_ImplantTargetAnatomy.JAW_REGION_T_D1213
					.getValue();
			break;
		case KNEE:
			this.strCodeValue = EnumCV_ImplantTargetAnatomy.KNEE_T_D9200
					.getValue();
			break;
		case LUMBAR_SPINE:
			this.strCodeValue = EnumCV_ImplantTargetAnatomy.LUMBAR_SPINE_T_11503
					.getValue();
			break;
		case LUMBO_SACRAL_SPINE:
			this.strCodeValue = EnumCV_ImplantTargetAnatomy.LUMBO_SACRAL_SPINE_T_D0059
					.getValue();
			break;
		case MANDIBLE:
			this.strCodeValue = EnumCV_ImplantTargetAnatomy.MANDIBLE_T_11180
					.getValue();
			break;
		case MAXILLA:
			this.strCodeValue = EnumCV_ImplantTargetAnatomy.MAXILLA_T_11170
					.getValue();
			break;
		case PATELLA:
			this.strCodeValue = EnumCV_ImplantTargetAnatomy.PATELLA_T_12730
					.getValue();
			break;
		case CLAVICLE:
			this.strCodeValue = EnumCV_ImplantTargetAnatomy.CLAVICLE_T_12310
					.getValue();
			break;
		case SHOULDER:
			this.strCodeValue = EnumCV_ImplantTargetAnatomy.SHOULDER_T_D2220
					.getValue();
			break;
		case HUMERUS:
			this.strCodeValue = EnumCV_ImplantTargetAnatomy.HUMERUS_T_12410
					.getValue();
			break;
		case PROXIMAL_HUMERUS:
			this.strCodeValue = EnumCV_ImplantTargetAnatomy.PROXIMAL_HUMERUS_T_1240F
					.getValue();
			break;
		case SHAFT_OF_HUMERUS:
			this.strCodeValue = EnumCV_ImplantTargetAnatomy.SHAFT_OF_HUMERUS_T_12412
					.getValue();
			break;
		case DISTAL_HUMERUS:
			this.strCodeValue = EnumCV_ImplantTargetAnatomy.DISTAL_HUMERUS_T_1241F
					.getValue();
			break;
		case RADIUS:
			this.strCodeValue = EnumCV_ImplantTargetAnatomy.RADIUS_T_12420
					.getValue();
			break;
		case PROXIMAL_RADIUS:
			this.strCodeValue = EnumCV_ImplantTargetAnatomy.PROXIMAL_RADIUS_T_1242A
					.getValue();
			break;
		case SHAFT_OF_RADIUS:
			this.strCodeValue = EnumCV_ImplantTargetAnatomy.SHAFT_OF_RADIUS_T_12423
					.getValue();
			break;
		case DISTAL_RADIUS:
			this.strCodeValue = EnumCV_ImplantTargetAnatomy.DISTAL_RADIUS_T_1242B
					.getValue();
			break;
		case ULNA:
			this.strCodeValue = EnumCV_ImplantTargetAnatomy.ULNA_T_12430
					.getValue();
			break;
		case PROXIMAL_ULNA:
			this.strCodeValue = EnumCV_ImplantTargetAnatomy.PROXIMAL_ULNA_T_1243A
					.getValue();
			break;
		case SHAFT_OF_ULNA:
			this.strCodeValue = EnumCV_ImplantTargetAnatomy.SHAFT_OF_ULNA_T_12435
					.getValue();
			break;
		case DISTAL_ULNA:
			this.strCodeValue = EnumCV_ImplantTargetAnatomy.DISTAL_ULNA_T_1243B
					.getValue();
			break;
		case SKULL:
			this.strCodeValue = EnumCV_ImplantTargetAnatomy.SKULL_T_11100
					.getValue();
			break;
		case HAND:
			this.strCodeValue = EnumCV_ImplantTargetAnatomy.HAND_T_12600
					.getValue();
			break;
		case THORACIC_SPINE:
			this.strCodeValue = EnumCV_ImplantTargetAnatomy.THORACIC_SPINE_T_11502
					.getValue();
			break;
		case THORACO_LUMBAR_SPINE:
			this.strCodeValue = EnumCV_ImplantTargetAnatomy.THORACO_LUMBAR_SPINE_T_D00FA
					.getValue();
			break;
		case WRIST_JOINT:
			this.strCodeValue = EnumCV_ImplantTargetAnatomy.WRIST_JOINT_T_15460
					.getValue();
			break;
		case PELVIS:
			this.strCodeValue = EnumCV_ImplantTargetAnatomy.PELVIS_T_12375
					.getValue();
			break;
		case FIBULA:
			this.strCodeValue = EnumCV_ImplantTargetAnatomy.FIBULA_T_12750
					.getValue();
			break;
		case TALUS:
			this.strCodeValue = EnumCV_ImplantTargetAnatomy.TALUS_T_12780
					.getValue();
			break;
		case CALCANEUS:
			this.strCodeValue = EnumCV_ImplantTargetAnatomy.CALCANEUS_T_12770
					.getValue();
			break;
		case TIBIA:
			this.strCodeValue = EnumCV_ImplantTargetAnatomy.TIBIA_T_12740
					.getValue();
			break;
		case SHAFT_OF_TIBIA:
			this.strCodeValue = EnumCV_ImplantTargetAnatomy.SHAFT_OF_TIBIA_T_12746
					.getValue();
			break;
		case DISTAL_TIBIA:
			this.strCodeValue = EnumCV_ImplantTargetAnatomy.DISTAL_TIBIA_T_1274B
					.getValue();
			break;
		}
	}

	/**
	 * Sets the SNOMED-CT ID.
	 * 
	 * @param enumImplantTargetAnatomy
	 *            Object of EnumCM_ImplantTargetAnatomy represents Code Meaning.
	 */
	private void setSNOMEDCTID(
			EnumCM_ImplantTargetAnatomy enumImplantTargetAnatomy) {
		switch (enumImplantTargetAnatomy) {
		
		case HEAD_OF_FEMUR:
			this.strSNOMEDCTID = EnumDICOMSNOMEDMap.HEAD_OF_FEMUR
					.getSNOMEDCTID();
			break;
		case PROXIMAL_FEMUR:
			this.strSNOMEDCTID = EnumDICOMSNOMEDMap.PROXIMAL_FEMUR
					.getSNOMEDCTID();
			break;
		case SHAFT_OF_FEMUR:
			this.strSNOMEDCTID = EnumDICOMSNOMEDMap.SHAFT_OF_FEMUR
					.getSNOMEDCTID();
			break;
		case DISTAL_FEMUR:
			this.strSNOMEDCTID = EnumDICOMSNOMEDMap.DISTAL_FEMUR
					.getSNOMEDCTID();
			break;
		case FINGER_JOINT:
			this.strSNOMEDCTID = EnumDICOMSNOMEDMap.FINGER_JOINT
					.getSNOMEDCTID();
			break;
		
		case PROXIMAL_HUMERUS:
			this.strSNOMEDCTID = EnumDICOMSNOMEDMap.PROXIMAL_HUMERUS
					.getSNOMEDCTID();
			break;
		case SHAFT_OF_HUMERUS:
			this.strSNOMEDCTID = EnumDICOMSNOMEDMap.SHAFT_OF_HUMERUS
					.getSNOMEDCTID();
			break;
		case DISTAL_HUMERUS:
			this.strSNOMEDCTID = EnumDICOMSNOMEDMap.DISTAL_HUMERUS
					.getSNOMEDCTID();
			break;
		case RADIUS:
			this.strSNOMEDCTID = EnumDICOMSNOMEDMap.RADIUS.getSNOMEDCTID();
			break;
		case PROXIMAL_RADIUS:
			this.strSNOMEDCTID = EnumDICOMSNOMEDMap.PROXIMAL_RADIUS
					.getSNOMEDCTID();
			break;
		case SHAFT_OF_RADIUS:
			this.strSNOMEDCTID = EnumDICOMSNOMEDMap.SHAFT_OF_RADIUS
					.getSNOMEDCTID();
			break;
		case DISTAL_RADIUS:
			this.strSNOMEDCTID = EnumDICOMSNOMEDMap.DISTAL_RADIUS
					.getSNOMEDCTID();
			break;
		case ULNA:
			this.strSNOMEDCTID = EnumDICOMSNOMEDMap.ULNA.getSNOMEDCTID();
			break;
		case PROXIMAL_ULNA:
			this.strSNOMEDCTID = EnumDICOMSNOMEDMap.PROXIMAL_ULNA
					.getSNOMEDCTID();
			break;
		case SHAFT_OF_ULNA:
			this.strSNOMEDCTID = EnumDICOMSNOMEDMap.SHAFT_OF_ULNA
					.getSNOMEDCTID();
			break;
		case DISTAL_ULNA:
			this.strSNOMEDCTID = EnumDICOMSNOMEDMap.DISTAL_ULNA.getSNOMEDCTID();
			break;
	
		case TALUS:
			this.strSNOMEDCTID = EnumDICOMSNOMEDMap.TALUS.getSNOMEDCTID();
			break;
		case CALCANEUS:
			this.strSNOMEDCTID = EnumAnatomicSNOMEDMap.CALCANEUS.getSNOMEDCTID();
			break;
		case TIBIA:
			this.strSNOMEDCTID = EnumDICOMSNOMEDMap.TIBIA.getSNOMEDCTID();
			break;
		case SHAFT_OF_TIBIA:
			this.strSNOMEDCTID = EnumDICOMSNOMEDMap.SHAFT_OF_TIBIA
					.getSNOMEDCTID();
			break;
		case DISTAL_TIBIA:
			this.strSNOMEDCTID = EnumDICOMSNOMEDMap.DISTAL_TIBIA
					.getSNOMEDCTID();
			break;
		case ANKLE_JOINT:
			this.strSNOMEDCTID = EnumAnatomicSNOMEDMap.ANKLE_JOINT.getSNOMEDCTID();
			break;
		case CERVICAL_SPINE:
			this.strSNOMEDCTID = EnumAnatomicSNOMEDMap.CERVICAL_SPINE
					.getSNOMEDCTID();
			break;
		case CERVICO_THORACIC_SPINE:
			this.strSNOMEDCTID = EnumAnatomicSNOMEDMap.CERVICO_THORACIC_SPINE
					.getSNOMEDCTID();
			break;
		case ELBOW_JOINT:
			this.strSNOMEDCTID = EnumAnatomicSNOMEDMap.ELBOW_JOINT.getSNOMEDCTID();
			break;
		case FACIAL_BONES:
			this.strSNOMEDCTID = EnumAnatomicSNOMEDMap.FACIAL_BONES
					.getSNOMEDCTID();
			break;
		case FEMUR:
			this.strSNOMEDCTID = EnumAnatomicSNOMEDMap.FEMUR.getSNOMEDCTID();
			break;
			case HIP_JOINT:
			this.strSNOMEDCTID = EnumAnatomicSNOMEDMap.HIP_JOINT.getSNOMEDCTID();
			break;
		case JAW_REGION:
			this.strSNOMEDCTID = EnumAnatomicSNOMEDMap.JAW_REGION.getSNOMEDCTID();
			break;
		case KNEE:
			this.strSNOMEDCTID = EnumAnatomicSNOMEDMap.KNEE.getSNOMEDCTID();
			break;
		case LUMBAR_SPINE:
			this.strSNOMEDCTID = EnumAnatomicSNOMEDMap.LUMBAR_SPINE
					.getSNOMEDCTID();
			break;
		case LUMBO_SACRAL_SPINE:
			this.strSNOMEDCTID = EnumAnatomicSNOMEDMap.LUMBO_SACRAL_SPINE
					.getSNOMEDCTID();
			break;
		case MANDIBLE:
			this.strSNOMEDCTID = EnumAnatomicSNOMEDMap.MANDIBLE.getSNOMEDCTID();
			break;
		case MAXILLA:
			this.strSNOMEDCTID = EnumAnatomicSNOMEDMap.MAXILLA.getSNOMEDCTID();
			break;
		case PATELLA:
			this.strSNOMEDCTID = EnumAnatomicSNOMEDMap.PATELLA.getSNOMEDCTID();
			break;
		case CLAVICLE:
			this.strSNOMEDCTID = EnumAnatomicSNOMEDMap.CLAVICLE.getSNOMEDCTID();
			break;
		case SHOULDER:
			this.strSNOMEDCTID = EnumAnatomicSNOMEDMap.SHOULDER.getSNOMEDCTID();
			break;
		case HUMERUS:
			this.strSNOMEDCTID = EnumAnatomicSNOMEDMap.HUMERUS.getSNOMEDCTID();
			break;
				case SKULL:
			this.strSNOMEDCTID = EnumAnatomicSNOMEDMap.SKULL.getSNOMEDCTID();
			break;
		case HAND:
			this.strSNOMEDCTID = EnumAnatomicSNOMEDMap.HAND.getSNOMEDCTID();
			break;
		case THORACIC_SPINE:
			this.strSNOMEDCTID = EnumAnatomicSNOMEDMap.THORACIC_SPINE
					.getSNOMEDCTID();
			break;
		case THORACO_LUMBAR_SPINE:
			this.strSNOMEDCTID = EnumAnatomicSNOMEDMap.THORACO_LUMBAR_SPINE
					.getSNOMEDCTID();
			break;
		case WRIST_JOINT:
			this.strSNOMEDCTID = EnumAnatomicSNOMEDMap.WRIST_JOINT.getSNOMEDCTID();
			break;
		case PELVIS:
			this.strSNOMEDCTID = EnumAnatomicSNOMEDMap.PELVIS.getSNOMEDCTID();
			break;
		case FIBULA:
			this.strSNOMEDCTID = EnumAnatomicSNOMEDMap.FIBULA.getSNOMEDCTID();
			break;
		}
	}

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

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