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

import cdac.medinfo.sdk.dcm30_04.templates.enums.EnumCodingSchemeDesignator;
import cdac.medinfo.sdk.dcm30_04.templates.enums.cm.EnumCM_DXView;
import cdac.medinfo.sdk.dcm30_04.templates.enums.cv.EnumCV_DXView;


/**
 * This class represents DXView - CID4010
 */
public class DXView_CID4010 
{
	
	/**
	 * The Code Value for template.
	 */
	private String strCodeValue = null;
	/**
	 * The SNOMED CT ID for template.
	 */
	private String strSNOMEDCTID = null;
	/**
	 * The Code Meaning for template.
	 */
	private String strCodeMeaning = null;

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

	/**
	 * Instantiates a new DXView_CID4010 Template 
	 */
	public DXView_CID4010()
	{

	}

	/**
	 * 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 SNOMED-CT ID.
	 * @return String value for SNOMED-CT ID.
	 */
	public String getSNOMEDCTID() 
	{
		return strSNOMEDCTID;
	}
	/**
	 * Retrieves the value for Coding Scheme Designator.
	 * @return String value for Coding Scheme Designator.
	 */
	public String getCodingSchemeDesignator() 
	{
		return strCodingSchemeDesignator;
	}

	/**
	 * Sets the Code Value according to Code Meaning.
	 * @param enumDXView Object of EnumCM_DXView represents Code Meaning.
	 */
	private void setCodeValue(EnumCM_DXView enumDXView)
	{
		switch(enumDXView)
		{
		case FRONTAL: this.strCodeValue =EnumCV_DXView.FRONTAL_R_10202.getValue(); break;
		case FRONTAL_OBLIQUE: this.strCodeValue =EnumCV_DXView.FRONTAL_OBLIQUE_R_10204.getValue(); break;
		case ANTERO_POSTERIOR: this.strCodeValue =EnumCV_DXView.ANTERO_POSTERIOR_R_10206.getValue(); break;
		case ANTERO_POSTERIOR_OBLIQUE: this.strCodeValue =EnumCV_DXView.ANTERO_POSTERIOR_OBLIQUE_R_10208.getValue(); break;
		case RIGHT_POSTERIOR_OBLIQUE: this.strCodeValue =EnumCV_DXView.RIGHT_POSTERIOR_OBLIQUE_R_10210.getValue(); break;
		case LEFT_POSTERIOR_OBLIQUE: this.strCodeValue =EnumCV_DXView.LEFT_POSTERIOR_OBLIQUE_R_10212.getValue(); break;
		case POSTERO_ANTERIOR: this.strCodeValue =EnumCV_DXView.POSTERO_ANTERIOR_R_10214.getValue(); break;
		case POSTERO_ANTERIOR_OBLIQUE: this.strCodeValue =EnumCV_DXView.POSTERO_ANTERIOR_OBLIQUE_R_10216.getValue(); break;
		case RIGHT_ANTERIOR_OBLIQUE: this.strCodeValue =EnumCV_DXView.RIGHT_ANTERIOR_OBLIQUE_R_40985.getValue(); break;
		case LEFT_ANTERIOR_OBLIQUE: this.strCodeValue =EnumCV_DXView.LEFT_ANTERIOR_OBLIQUE_R_10220.getValue(); break;
		case SAGITTAL: this.strCodeValue =EnumCV_DXView.SAGITTAL_G_A145.getValue(); break;
		case MEDIAL_LATERAL: this.strCodeValue =EnumCV_DXView.MEDIAL_LATERAL_R_10224.getValue(); break;
		case LATERAL_OBLIQUE: this.strCodeValue =EnumCV_DXView.LATERAL_OBLIQUE_R_40783.getValue(); break;
		case LATERAL_MEDIAL: this.strCodeValue =EnumCV_DXView.LATERAL_MEDIAL_R_10228.getValue(); break;
		case MEDIAL_OBLIQUE: this.strCodeValue =EnumCV_DXView.MEDIAL_OBLIQUE_R_40782.getValue(); break;
		case RIGHT_LATERAL: this.strCodeValue =EnumCV_DXView.RIGHT_LATERAL_R_10232.getValue(); break;
		case RIGHT_OBLIQUE: this.strCodeValue =EnumCV_DXView.RIGHT_OBLIQUE_R_10234.getValue(); break;
		case LEFT_LATERAL: this.strCodeValue =EnumCV_DXView.LEFT_LATERAL_R_10236.getValue(); break;
		case LEFT_OBLIQUE: this.strCodeValue =EnumCV_DXView.LEFT_OBLIQUE_R_10238.getValue(); break;
		case AXIAL: this.strCodeValue =EnumCV_DXView.AXIAL_R_10241.getValue(); break;
		case CRANIO_CAUDAL: this.strCodeValue =EnumCV_DXView.CRANIO_CAUDAL_R_10242.getValue(); break;
		case CAUDO_CRANIAL: this.strCodeValue =EnumCV_DXView.CAUDO_CRANIAL_R_10244.getValue(); break;
		case OBLIQUE_AXIAL: this.strCodeValue =EnumCV_DXView.OBLIQUE_AXIAL_R_10246.getValue(); break;
		case OBLIQUE_CRANIO_CAUDAL: this.strCodeValue =EnumCV_DXView.OBLIQUE_CRANIO_CAUDAL_R_10248.getValue(); break;
		case OBLIQUE_CAUDO_CRANIAL: this.strCodeValue =EnumCV_DXView.OBLIQUE_CAUDO_CRANIAL_R_10250.getValue(); break;
		case FRONTAL_OBLIQUE_AXIAL: this.strCodeValue =EnumCV_DXView.FRONTAL_OBLIQUE_AXIAL_R_10252.getValue(); break;
		case SAGITTAL_OBLIQUE_AXIAL: this.strCodeValue =EnumCV_DXView.SAGITTAL_OBLIQUE_AXIAL_R_10254.getValue(); break;
		case OBLIQUE: this.strCodeValue =EnumCV_DXView.OBLIQUE_R_102C1.getValue(); break;
		case LATERAL: this.strCodeValue =EnumCV_DXView.LATERAL_R_102CD.getValue(); break;
		case TANGENTIAL: this.strCodeValue =EnumCV_DXView.TANGENTIAL_R_102C2.getValue(); break;
		case SUBMENTOVERTICAL: this.strCodeValue =EnumCV_DXView.SUBMENTOVERTICAL_R_10256.getValue(); break;
		case VERTICOSUBMENTAL: this.strCodeValue =EnumCV_DXView.VERTICOSUBMENTAL_R_10257.getValue(); break;
		case PLANTODORSAL: this.strCodeValue =EnumCV_DXView.PLANTODORSAL_R_102C3.getValue(); break;
		case DORSOPLANTAR: this.strCodeValue =EnumCV_DXView.DORSOPLANTAR_R_102C4.getValue(); break;
		case PARIETOACANTHIAL: this.strCodeValue =EnumCV_DXView.PARIETOACANTHIAL_R_102C5.getValue(); break;
		case ACANTHIOPARIETAL: this.strCodeValue =EnumCV_DXView.ACANTHIOPARIETAL_R_102C6.getValue(); break;
		case ORBITOPARIETAL: this.strCodeValue =EnumCV_DXView.ORBITOPARIETAL_R_102C7.getValue(); break;
		case PARIETO_ORBITAL: this.strCodeValue =EnumCV_DXView.PARIETO_ORBITAL_R_102C8.getValue(); break;
		case LATERO_MEDIAL_OBLIQUE: this.strCodeValue =EnumCV_DXView.LATERO_MEDIAL_OBLIQUE_R_10230.getValue(); break;
		case MEDIO_LATERAL_OBLIQUE: this.strCodeValue =EnumCV_DXView.MEDIO_LATERAL_OBLIQUE_R_10226.getValue(); break;
		case TISSUE_SPECIMEN: this.strCodeValue =EnumCV_DXView.TISSUE_SPECIMEN_G_8300.getValue(); break;
		case OCCLUSAL_PROJECTION: this.strCodeValue =EnumCV_DXView.OCCLUSAL_PROJECTION_R_40810.getValue(); break;
		}
	}
	/**
	 * Sets the SNOMED-CT ID.
	 * @param enumDXView Object of EnumCM_DXView represents Code Meaning.
	 */
	private void setSNOMEDCTID(EnumCM_DXView enumDXView)
	{
		switch(enumDXView)
		{
		case FRONTAL : this.strSNOMEDCTID =EnumRadiologySNOMEDMap.FRONTAL.getSNOMEDCTID(); break;
		case FRONTAL_OBLIQUE : this.strSNOMEDCTID =EnumRadiologySNOMEDMap.FRONTAL_OBLIQUE.getSNOMEDCTID(); break;
		case ANTERO_POSTERIOR : this.strSNOMEDCTID =EnumRadiologySNOMEDMap.ANTERO_POSTERIOR.getSNOMEDCTID(); break;
		case ANTERO_POSTERIOR_OBLIQUE : this.strSNOMEDCTID =EnumRadiologySNOMEDMap.ANTERO_POSTERIOR_OBLIQUE.getSNOMEDCTID(); break;
		case RIGHT_POSTERIOR_OBLIQUE : this.strSNOMEDCTID =EnumRadiologySNOMEDMap.RIGHT_POSTERIOR_OBLIQUE.getSNOMEDCTID(); break;
		case LEFT_POSTERIOR_OBLIQUE : this.strSNOMEDCTID =EnumRadiologySNOMEDMap.LEFT_POSTERIOR_OBLIQUE.getSNOMEDCTID(); break;
		case POSTERO_ANTERIOR : this.strSNOMEDCTID =EnumRadiologySNOMEDMap.POSTERO_ANTERIOR.getSNOMEDCTID(); break;
		case POSTERO_ANTERIOR_OBLIQUE : this.strSNOMEDCTID =EnumRadiologySNOMEDMap.POSTERO_ANTERIOR_OBLIQUE.getSNOMEDCTID(); break;
		case RIGHT_ANTERIOR_OBLIQUE : this.strSNOMEDCTID =EnumRadiologySNOMEDMap.RIGHT_ANTERIOR_OBLIQUE.getSNOMEDCTID(); break;
		case LEFT_ANTERIOR_OBLIQUE : this.strSNOMEDCTID =EnumRadiologySNOMEDMap.LEFT_ANTERIOR_OBLIQUE.getSNOMEDCTID(); break;
		case SAGITTAL : this.strSNOMEDCTID =EnumRadiologySNOMEDMap.SAGITTAL.getSNOMEDCTID(); break;
		case MEDIAL_LATERAL : this.strSNOMEDCTID =EnumRadiologySNOMEDMap.MEDIAL_LATERAL.getSNOMEDCTID(); break;
		case LATERAL_OBLIQUE : this.strSNOMEDCTID =EnumRadiologySNOMEDMap.LATERAL_OBLIQUE.getSNOMEDCTID(); break;
		case LATERAL_MEDIAL : this.strSNOMEDCTID =EnumRadiologySNOMEDMap.LATERAL_MEDIAL.getSNOMEDCTID(); break;
		case MEDIAL_OBLIQUE : this.strSNOMEDCTID =EnumRadiologySNOMEDMap.MEDIAL_OBLIQUE.getSNOMEDCTID(); break;
		case RIGHT_LATERAL : this.strSNOMEDCTID =EnumRadiologySNOMEDMap.RIGHT_LATERAL.getSNOMEDCTID(); break;
		case RIGHT_OBLIQUE : this.strSNOMEDCTID =EnumRadiologySNOMEDMap.RIGHT_OBLIQUE.getSNOMEDCTID(); break;
		case LEFT_LATERAL : this.strSNOMEDCTID =EnumRadiologySNOMEDMap.LEFT_LATERAL.getSNOMEDCTID(); break;
		case LEFT_OBLIQUE : this.strSNOMEDCTID =EnumRadiologySNOMEDMap.LEFT_OBLIQUE.getSNOMEDCTID(); break;
		case AXIAL : this.strSNOMEDCTID =EnumRadiologySNOMEDMap.AXIAL.getSNOMEDCTID(); break;
		case CRANIO_CAUDAL : this.strSNOMEDCTID =EnumRadiologySNOMEDMap.CRANIO_CAUDAL.getSNOMEDCTID(); break;
		case CAUDO_CRANIAL : this.strSNOMEDCTID =EnumRadiologySNOMEDMap.CAUDO_CRANIAL.getSNOMEDCTID(); break;
		case OBLIQUE_AXIAL : this.strSNOMEDCTID =EnumRadiologySNOMEDMap.OBLIQUE_AXIAL.getSNOMEDCTID(); break;
		case OBLIQUE_CRANIO_CAUDAL : this.strSNOMEDCTID =EnumRadiologySNOMEDMap.OBLIQUE_CRANIO_CAUDAL.getSNOMEDCTID(); break;
		case OBLIQUE_CAUDO_CRANIAL : this.strSNOMEDCTID =EnumRadiologySNOMEDMap.OBLIQUE_CAUDO_CRANIAL.getSNOMEDCTID(); break;
		case FRONTAL_OBLIQUE_AXIAL : this.strSNOMEDCTID =EnumRadiologySNOMEDMap.FRONTAL_OBLIQUE_AXIAL.getSNOMEDCTID(); break;
		case SAGITTAL_OBLIQUE_AXIAL : this.strSNOMEDCTID =EnumRadiologySNOMEDMap.SAGITTAL_OBLIQUE_AXIAL.getSNOMEDCTID(); break;
		case OBLIQUE : this.strSNOMEDCTID =EnumRadiologySNOMEDMap.OBLIQUE.getSNOMEDCTID(); break;
		case LATERAL : this.strSNOMEDCTID =EnumRadiologySNOMEDMap.LATERAL.getSNOMEDCTID(); break;
		case TANGENTIAL : this.strSNOMEDCTID =EnumRadiologySNOMEDMap.TANGENTIAL.getSNOMEDCTID(); break;
		case SUBMENTOVERTICAL : this.strSNOMEDCTID =EnumRadiologySNOMEDMap.SUBMENTOVERTICAL.getSNOMEDCTID(); break;
		case VERTICOSUBMENTAL : this.strSNOMEDCTID =EnumRadiologySNOMEDMap.VERTICOSUBMENTAL.getSNOMEDCTID(); break;
		case PLANTODORSAL : this.strSNOMEDCTID =EnumRadiologySNOMEDMap.PLANTODORSAL.getSNOMEDCTID(); break;
		case DORSOPLANTAR : this.strSNOMEDCTID =EnumRadiologySNOMEDMap.DORSOPLANTAR.getSNOMEDCTID(); break;
		case PARIETOACANTHIAL : this.strSNOMEDCTID =EnumRadiologySNOMEDMap.PARIETOACANTHIAL.getSNOMEDCTID(); break;
		case ACANTHIOPARIETAL : this.strSNOMEDCTID =EnumRadiologySNOMEDMap.ACANTHIOPARIETAL.getSNOMEDCTID(); break;
		case ORBITOPARIETAL : this.strSNOMEDCTID =EnumRadiologySNOMEDMap.ORBITOPARIETAL.getSNOMEDCTID(); break;
		case PARIETO_ORBITAL : this.strSNOMEDCTID =EnumRadiologySNOMEDMap.PARIETO_ORBITAL.getSNOMEDCTID(); break;
		case LATERO_MEDIAL_OBLIQUE : this.strSNOMEDCTID =EnumRadiologySNOMEDMap.LATERO_MEDIAL_OBLIQUE.getSNOMEDCTID(); break;
		case MEDIO_LATERAL_OBLIQUE : this.strSNOMEDCTID =EnumRadiologySNOMEDMap.MEDIO_LATERAL_OBLIQUE.getSNOMEDCTID(); break;
		case TISSUE_SPECIMEN : this.strSNOMEDCTID =EnumRadiologySNOMEDMap.TISSUE_SPECIMEN.getSNOMEDCTID(); break;
		case OCCLUSAL_PROJECTION : this.strSNOMEDCTID =EnumRadiologySNOMEDMap.OCCLUSAL_PROJECTION.getSNOMEDCTID(); break;
		}
	}

	/**
	 * Sets the value for DXView
	 * @param enumDXView Object of EnumCM_DXView.
	 */
	public void setDXView(EnumCM_DXView enumDXView)
	{
		/**
		 * Retrieves the value for CodingSchemeDesignator, CodingSchemeVersion and Code Meaning and 
		 * sets the Code Value according to Code Meaning.
		 */
		this.strCodeMeaning = enumDXView.getValue();
		this.strCodingSchemeDesignator = EnumCodingSchemeDesignator.SRT.getValue();
		
		/**
		 * set code Value
		 */
		setCodeValue(enumDXView);
		/**
		 * set SNOMED-CT ID
		 */
		setSNOMEDCTID(enumDXView);
	}
}
