/*******************************************************************************
 *  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.enums.EnumCodingSchemeDesignator;
import cdac.medinfo.sdk.dcm30_04.templates.enums.cm.EnumCM_TransducerApproach;
import cdac.medinfo.sdk.dcm30_04.templates.enums.cv.EnumCV_TransducerApproach;
import cdac.medinfo.sdk.dcm30_04.templates.dicomsnomedmap.EnumDICOMSNOMEDMap;

/**
 * This class represents TransducerApproach CID5
 */
public class TransducerApproach_CID5 {

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

	}

	/**
	 * 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 enumTransducerApproach Object of EnumCM_TransducerApproach represents Code Meaning.
	 */
	private void setCodeValue(EnumCM_TransducerApproach enumTransducerApproach)
	{
		switch(enumTransducerApproach)
		{
		case RIGHT: this.strCodeValue =EnumCV_TransducerApproach.RIGHT_G_A100.getValue(); break;
		case LEFT: this.strCodeValue =EnumCV_TransducerApproach.LEFT_G_A101.getValue(); break;
		case LATERAL: this.strCodeValue =EnumCV_TransducerApproach.LATERAL_G_A104.getValue(); break;
		case ANTERIOR: this.strCodeValue =EnumCV_TransducerApproach.ANTERIOR_G_A105.getValue(); break;
		case POSTERIOR: this.strCodeValue =EnumCV_TransducerApproach.POSTERIOR_G_A106.getValue(); break;
		case CAUDAL: this.strCodeValue =EnumCV_TransducerApproach.CAUDAL_G_A108.getValue(); break;
		case MEDIAL: this.strCodeValue =EnumCV_TransducerApproach.MEDIAL_G_A109.getValue(); break;
		case CENTRAL: this.strCodeValue =EnumCV_TransducerApproach.CENTRAL_G_A110.getValue(); break;
		case PERIPHERAL: this.strCodeValue =EnumCV_TransducerApproach.PERIPHERAL_G_A111.getValue(); break;
		case EXTERNAL: this.strCodeValue =EnumCV_TransducerApproach.EXTERNAL_G_A112.getValue(); break;
		case INTERNAL: this.strCodeValue =EnumCV_TransducerApproach.INTERNAL_G_A113.getValue(); break;
		case INFERIOR: this.strCodeValue =EnumCV_TransducerApproach.INFERIOR_G_A115.getValue(); break;
		case SUPERIOR: this.strCodeValue =EnumCV_TransducerApproach.SUPERIOR_G_A116.getValue(); break;
		case TRANSVERSE: this.strCodeValue =EnumCV_TransducerApproach.TRANSVERSE_G_A117.getValue(); break;
		case PROXIMAL: this.strCodeValue =EnumCV_TransducerApproach.PROXIMAL_G_A118.getValue(); break;
		case DISTAL: this.strCodeValue =EnumCV_TransducerApproach.DISTAL_G_A119.getValue(); break;
		case APICAL: this.strCodeValue =EnumCV_TransducerApproach.APICAL_G_A122.getValue(); break;
		case SURFACE: this.strCodeValue =EnumCV_TransducerApproach.SURFACE_G_A168.getValue(); break;
		case ASCENDING: this.strCodeValue =EnumCV_TransducerApproach.ASCENDING_G_A599.getValue(); break;
		case DESCENDING: this.strCodeValue =EnumCV_TransducerApproach.DESCENDING_G_A600.getValue(); break;
		case SUBCUTANEOUS_TISSUE: this.strCodeValue =EnumCV_TransducerApproach.SUBCUTANEOUS_TISSUE_T_03000.getValue(); break;
		case DURA_MATER: this.strCodeValue =EnumCV_TransducerApproach.DURA_MATER_T_A1120.getValue(); break;
		case PIA_MATER: this.strCodeValue =EnumCV_TransducerApproach.PIA_MATER_T_A1280.getValue(); break;
		case EXTERNAL_PROSTHESIS_FOR_SONOGRAPHIC_PROCEDURE_STAND_OFF: this.strCodeValue =EnumCV_TransducerApproach.EXTERNAL_PROSTHESIS_FOR_SONOGRAPHIC_PROCEDURE_STAND_OFF_A_2C600.getValue(); break;
		case WATER_BAG_PROSTHESIS_FOR_IMAGING_PROCEDURE: this.strCodeValue =EnumCV_TransducerApproach.WATER_BAG_PROSTHESIS_FOR_IMAGING_PROCEDURE_A_2C602.getValue(); break;
		case SALINE_BAG_PROSTHESIS_FOR_IMAGING_PROCEDURE: this.strCodeValue =EnumCV_TransducerApproach.SALINE_BAG_PROSTHESIS_FOR_IMAGING_PROCEDURE_A_2C604.getValue(); break;
		case GEL_PROSTHESIS_FOR_IMAGING_PROCEDURE: this.strCodeValue =EnumCV_TransducerApproach.GEL_PROSTHESIS_FOR_IMAGING_PROCEDURE_A_2C606.getValue(); break;
		case CRANIAL: this.strCodeValue =EnumCV_TransducerApproach.CRANIAL_G_A107.getValue(); break;
		case MIDLINE: this.strCodeValue =EnumCV_TransducerApproach.MIDLINE_G_A10A.getValue(); break;
		case MID_LONGITUDINAL: this.strCodeValue =EnumCV_TransducerApproach.MID_LONGITUDINAL_G_A188.getValue(); break;
		case PARASAGITTAL: this.strCodeValue =EnumCV_TransducerApproach.PARASAGITTAL_G_A189.getValue(); break;
		case INTRALUMINAL: this.strCodeValue =EnumCV_TransducerApproach.INTRALUMINAL_R_42142.getValue(); break;
		case CAPSULAR: this.strCodeValue =EnumCV_TransducerApproach.CAPSULAR_G_A171.getValue(); break;
		case LUMEN: this.strCodeValue =EnumCV_TransducerApproach.LUMEN_T_D0048.getValue(); break;
		case CONTACT_WITH: this.strCodeValue =EnumCV_TransducerApproach.CONTACT_WITH_G_4022.getValue(); break;
		case PARENCHYMA: this.strCodeValue =EnumCV_TransducerApproach.PARENCHYMA_T_D0062.getValue(); break;
		}
	}

	/**
	 * Sets the SNOMED-CT ID.
	 * @param enumTransducerApproach Object of EnumCM_TransducerApproach represents Code Meaning.
	 */
	private void setSNOMEDCTID(EnumCM_TransducerApproach enumTransducerApproach)
	{
		switch(enumTransducerApproach)
		{
		case RIGHT : this.strSNOMEDCTID =EnumDICOMSNOMEDMap.RIGHT.getSNOMEDCTID(); break;
		case LEFT : this.strSNOMEDCTID =EnumDICOMSNOMEDMap.LEFT.getSNOMEDCTID(); break;
		case LATERAL : this.strSNOMEDCTID =EnumDICOMSNOMEDMap.LATERAL.getSNOMEDCTID(); break;
		case ANTERIOR : this.strSNOMEDCTID =EnumDICOMSNOMEDMap.ANTERIOR.getSNOMEDCTID(); break;
		case POSTERIOR : this.strSNOMEDCTID =EnumDICOMSNOMEDMap.POSTERIOR.getSNOMEDCTID(); break;
		case CAUDAL : this.strSNOMEDCTID =EnumDICOMSNOMEDMap.CAUDAL.getSNOMEDCTID(); break;
		case MEDIAL : this.strSNOMEDCTID =EnumDICOMSNOMEDMap.MEDIAL.getSNOMEDCTID(); break;
		case CENTRAL : this.strSNOMEDCTID =EnumDICOMSNOMEDMap.CENTRAL.getSNOMEDCTID(); break;
		case PERIPHERAL : this.strSNOMEDCTID =EnumDICOMSNOMEDMap.PERIPHERAL.getSNOMEDCTID(); break;
		case EXTERNAL : this.strSNOMEDCTID =EnumDICOMSNOMEDMap.EXTERNAL.getSNOMEDCTID(); break;
		case INTERNAL : this.strSNOMEDCTID =EnumDICOMSNOMEDMap.INTERNAL.getSNOMEDCTID(); break;
		case INFERIOR : this.strSNOMEDCTID =EnumDICOMSNOMEDMap.INFERIOR.getSNOMEDCTID(); break;
		case SUPERIOR : this.strSNOMEDCTID =EnumDICOMSNOMEDMap.SUPERIOR.getSNOMEDCTID(); break;
		case TRANSVERSE : this.strSNOMEDCTID =EnumDICOMSNOMEDMap.TRANSVERSE.getSNOMEDCTID(); break;
		case PROXIMAL : this.strSNOMEDCTID =EnumDICOMSNOMEDMap.PROXIMAL.getSNOMEDCTID(); break;
		case DISTAL : this.strSNOMEDCTID =EnumDICOMSNOMEDMap.DISTAL.getSNOMEDCTID(); break;
		case APICAL : this.strSNOMEDCTID =EnumDICOMSNOMEDMap.APICAL.getSNOMEDCTID(); break;
		case SURFACE : this.strSNOMEDCTID =EnumDICOMSNOMEDMap.SURFACE.getSNOMEDCTID(); break;
		case ASCENDING : this.strSNOMEDCTID =EnumDICOMSNOMEDMap.ASCENDING.getSNOMEDCTID(); break;
		case DESCENDING : this.strSNOMEDCTID =EnumDICOMSNOMEDMap.DESCENDING.getSNOMEDCTID(); break;
		case SUBCUTANEOUS_TISSUE : this.strSNOMEDCTID =EnumDICOMSNOMEDMap.SUBCUTANEOUS_TISSUE.getSNOMEDCTID(); break;
		case DURA_MATER : this.strSNOMEDCTID =EnumDICOMSNOMEDMap.DURA_MATER.getSNOMEDCTID(); break;
		case PIA_MATER : this.strSNOMEDCTID =EnumDICOMSNOMEDMap.PIA_MATER.getSNOMEDCTID(); break;
		case EXTERNAL_PROSTHESIS_FOR_SONOGRAPHIC_PROCEDURE_STAND_OFF : this.strSNOMEDCTID =EnumDICOMSNOMEDMap.EXTERNAL_PROSTHESIS_FOR_SONOGRAPHIC_PROCEDURE_STAND_OFF.getSNOMEDCTID(); break;
		case WATER_BAG_PROSTHESIS_FOR_IMAGING_PROCEDURE : this.strSNOMEDCTID =EnumDICOMSNOMEDMap.WATER_BAG_PROSTHESIS_FOR_IMAGING_PROCEDURE.getSNOMEDCTID(); break;
		case SALINE_BAG_PROSTHESIS_FOR_IMAGING_PROCEDURE : this.strSNOMEDCTID =EnumDICOMSNOMEDMap.SALINE_BAG_PROSTHESIS_FOR_IMAGING_PROCEDURE.getSNOMEDCTID(); break;
		case GEL_PROSTHESIS_FOR_IMAGING_PROCEDURE : this.strSNOMEDCTID =EnumDICOMSNOMEDMap.GEL_PROSTHESIS_FOR_IMAGING_PROCEDURE.getSNOMEDCTID(); break;
		case CRANIAL : this.strSNOMEDCTID =EnumDICOMSNOMEDMap.CRANIAL.getSNOMEDCTID(); break;
		case MIDLINE : this.strSNOMEDCTID =EnumDICOMSNOMEDMap.MIDLINE.getSNOMEDCTID(); break;
		case MID_LONGITUDINAL : this.strSNOMEDCTID =EnumDICOMSNOMEDMap.MID_LONGITUDINAL.getSNOMEDCTID(); break;
		case PARASAGITTAL : this.strSNOMEDCTID =EnumDICOMSNOMEDMap.PARASAGITTAL.getSNOMEDCTID(); break;
		case INTRALUMINAL : this.strSNOMEDCTID =EnumDICOMSNOMEDMap.INTRALUMINAL.getSNOMEDCTID(); break;
		case CAPSULAR : this.strSNOMEDCTID =EnumDICOMSNOMEDMap.CAPSULAR.getSNOMEDCTID(); break;
		case LUMEN : this.strSNOMEDCTID =EnumDICOMSNOMEDMap.LUMEN.getSNOMEDCTID(); break;
		case CONTACT_WITH : this.strSNOMEDCTID =EnumDICOMSNOMEDMap.CONTACT_WITH.getSNOMEDCTID(); break;
		case PARENCHYMA : this.strSNOMEDCTID =EnumDICOMSNOMEDMap.PARENCHYMA.getSNOMEDCTID(); break;
		}
	}

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

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