/*******************************************************************************
 *  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.EnumRadiologySNOMEDMap;
import cdac.medinfo.sdk.dcm30_04.templates.enums.EnumCodingSchemeDesignator;
import cdac.medinfo.sdk.dcm30_04.templates.enums.cm.EnumCM_NippleCharacteristic;
import cdac.medinfo.sdk.dcm30_04.templates.enums.cm.EnumCM_NM_PETProcedures;
import cdac.medinfo.sdk.dcm30_04.templates.enums.cv.EnumCV_NippleCharacteristic;
import cdac.medinfo.sdk.dcm30_04.templates.enums.cv.EnumCV_NM_PETProcedures;


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

	}

	/**
	 * 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 enumNM_PETProcedures Object of EnumCM_NM_PETProcedures represents Code Meaning.
	 */
	private void setCodeValue(EnumCM_NM_PETProcedures enumNM_PETProcedures)
	{
		switch(enumNM_PETProcedures)
		{
		case NUCLEAR_MEDICINE_CARDIOVASCULAR_STUDY: this.strCodeValue = EnumCV_NM_PETProcedures.NUCLEAR_MEDICINE_CARDIOVASCULAR_STUDY_P5_D30F8.getValue();break;
		case PET_HEART_STUDY: this.strCodeValue = EnumCV_NM_PETProcedures.PET_HEART_STUDY_P5_0A006.getValue();break;
		case RADIOISOTOPE_STUDY_OF_ENDOCRINE_SYSTEM: this.strCodeValue = EnumCV_NM_PETProcedures.RADIOISOTOPE_STUDY_OF_ENDOCRINE_SYSTEM_P5_D6000.getValue();break;
		case RADIOISOTOPE_STUDY_OF_HEMATOPOIETIC_SYSTEM: this.strCodeValue = EnumCV_NM_PETProcedures.RADIOISOTOPE_STUDY_OF_HEMATOPOIETIC_SYSTEM_P5_D6500.getValue();break;
		case RADIOISOTOPE_STUDY_OF_GASTROINTESTINAL_SYSTEM: this.strCodeValue = EnumCV_NM_PETProcedures.RADIOISOTOPE_STUDY_OF_GASTROINTESTINAL_SYSTEM_P5_D5000.getValue();break;
		case RADIONUCLIDE_STUDY_FOR_LOCALIZATION_OF_INFLAMMATORY_DISEASE: this.strCodeValue = EnumCV_NM_PETProcedures.RADIONUCLIDE_STUDY_FOR_LOCALIZATION_OF_INFLAMMATORY_DISEASE_P5_D0063.getValue();break;
		case RADIONUCLIDE_LOCALIZATION_OF_TUMOR: this.strCodeValue = EnumCV_NM_PETProcedures.RADIONUCLIDE_LOCALIZATION_OF_TUMOR_P5_D0040.getValue();break;
		case NUCLEAR_MEDICINE_DIAGNOSTIC_PROCEDURE_ON_MUSCULOSKELETAL_SYSTEM: this.strCodeValue = EnumCV_NM_PETProcedures.NUCLEAR_MEDICINE_DIAGNOSTIC_PROCEDURE_ON_MUSCULOSKELETAL_SYSTEM_P5_D10F8.getValue();break;
		case NUCLEAR_MEDICINE_DIAGNOSTIC_PROCEDURE_ON_NERVOUS_SYSTEM: this.strCodeValue = EnumCV_NM_PETProcedures.NUCLEAR_MEDICINE_DIAGNOSTIC_PROCEDURE_ON_NERVOUS_SYSTEM_P5_D90F8.getValue();break;
		case RADIOISOTOPE_STUDY_OF_RESPIRATORY_SYSTEM: this.strCodeValue = EnumCV_NM_PETProcedures.RADIOISOTOPE_STUDY_OF_RESPIRATORY_SYSTEM_P5_D2000.getValue();break;
		case RADIOISOTOPE_STUDY_OF_GENITOURINARY_SYSTEM: this.strCodeValue = EnumCV_NM_PETProcedures.RADIOISOTOPE_STUDY_OF_GENITOURINARY_SYSTEM_P5_D7000.getValue();break;
		case PET_BRAIN_STUDY: this.strCodeValue = EnumCV_NM_PETProcedures.PET_BRAIN_STUDY_P5_0A001.getValue();break;
		case PET_BREAST_STUDY: this.strCodeValue = EnumCV_NM_PETProcedures.PET_BREAST_STUDY_P5_0A00D.getValue();break;
		case PET_STUDY_FOR_LOCALIZATION_OF_TUMOR: this.strCodeValue = EnumCV_NM_PETProcedures.PET_STUDY_FOR_LOCALIZATION_OF_TUMOR_P5_0A00A.getValue();break;
		}
	}
	/**
	 * Sets the SNOMED-CT ID.
	 * @param enumNM_PETProcedures Object of EnumCM_NM_PETProcedures represents Code Meaning.
	 */
	private void setSNOMEDCTID(EnumCM_NM_PETProcedures enumNM_PETProcedures)
	{
		switch(enumNM_PETProcedures)
		{
		case NUCLEAR_MEDICINE_CARDIOVASCULAR_STUDY: this.strSNOMEDCTID = EnumRadiologySNOMEDMap.NUCLEAR_MEDICINE_CARDIOVASCULAR_STUDY.getSNOMEDCTID();break;
		case PET_HEART_STUDY: this.strSNOMEDCTID = EnumRadiologySNOMEDMap.PET_HEART_STUDY.getSNOMEDCTID();break;
		case RADIOISOTOPE_STUDY_OF_ENDOCRINE_SYSTEM: this.strSNOMEDCTID = EnumRadiologySNOMEDMap.RADIOISOTOPE_STUDY_OF_ENDOCRINE_SYSTEM.getSNOMEDCTID();break;
		case RADIOISOTOPE_STUDY_OF_HEMATOPOIETIC_SYSTEM: this.strSNOMEDCTID = EnumRadiologySNOMEDMap.RADIOISOTOPE_STUDY_OF_HEMATOPOIETIC_SYSTEM.getSNOMEDCTID();break;
		case RADIOISOTOPE_STUDY_OF_GASTROINTESTINAL_SYSTEM: this.strSNOMEDCTID = EnumRadiologySNOMEDMap.RADIOISOTOPE_STUDY_OF_GASTROINTESTINAL_SYSTEM.getSNOMEDCTID();break;
		case RADIONUCLIDE_STUDY_FOR_LOCALIZATION_OF_INFLAMMATORY_DISEASE: this.strSNOMEDCTID = EnumRadiologySNOMEDMap.RADIONUCLIDE_STUDY_FOR_LOCALIZATION_OF_INFLAMMATORY_DISEASE.getSNOMEDCTID();break;
		case NUCLEAR_MEDICINE_DIAGNOSTIC_PROCEDURE_ON_MUSCULOSKELETAL_SYSTEM: this.strSNOMEDCTID = EnumRadiologySNOMEDMap.NUCLEAR_MEDICINE_DIAGNOSTIC_PROCEDURE_ON_MUSCULOSKELETAL_SYSTEM.getSNOMEDCTID();break;
		case RADIONUCLIDE_LOCALIZATION_OF_TUMOR: this.strSNOMEDCTID = EnumRadiologySNOMEDMap.RADIONUCLIDE_LOCALIZATION_OF_TUMOR.getSNOMEDCTID();break;
		case NUCLEAR_MEDICINE_DIAGNOSTIC_PROCEDURE_ON_NERVOUS_SYSTEM: this.strSNOMEDCTID = EnumRadiologySNOMEDMap.NUCLEAR_MEDICINE_DIAGNOSTIC_PROCEDURE_ON_NERVOUS_SYSTEM.getSNOMEDCTID();break;
		case RADIOISOTOPE_STUDY_OF_RESPIRATORY_SYSTEM: this.strSNOMEDCTID = EnumRadiologySNOMEDMap.RADIOISOTOPE_STUDY_OF_RESPIRATORY_SYSTEM.getSNOMEDCTID();break;
		case RADIOISOTOPE_STUDY_OF_GENITOURINARY_SYSTEM: this.strSNOMEDCTID = EnumRadiologySNOMEDMap.RADIOISOTOPE_STUDY_OF_GENITOURINARY_SYSTEM.getSNOMEDCTID();break;
		case PET_BRAIN_STUDY: this.strSNOMEDCTID = EnumRadiologySNOMEDMap.PET_BRAIN_STUDY.getSNOMEDCTID();break;
		case PET_BREAST_STUDY: this.strSNOMEDCTID = EnumRadiologySNOMEDMap.PET_BREAST_STUDY.getSNOMEDCTID();break;
		case PET_STUDY_FOR_LOCALIZATION_OF_TUMOR: this.strSNOMEDCTID = EnumRadiologySNOMEDMap.PET_STUDY_FOR_LOCALIZATION_OF_TUMOR.getSNOMEDCTID();break;
		}
	}

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

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