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


/**
 * This class represents ImageDerivation - CID7203
 */
public class ImageDerivation_CID7203
{
	
	/**
	 * 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;

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

	}

	/**
	 * 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;
	}

	/**
	 * Sets the Code Value according to Code Meaning.
	 * @param enumImageDerivation Object of EnumCM_ImageDerivation represents Code Meaning.
	 */
	private void setCodeValue(EnumCM_ImageDerivation enumImageDerivation)
	{
		switch(enumImageDerivation)
		{
		case LOSSY_COMPRESSION: this.strCodeValue =EnumCV_ImageDerivation.LOSSY_COMPRESSION_113040.getValue(); break;
		case APPARENT_DIFFUSION_COEFFICIENT: this.strCodeValue =EnumCV_ImageDerivation.APPARENT_DIFFUSION_COEFFICIENT_113041.getValue(); break;
		case PIXEL_BY_PIXEL_ADDITION: this.strCodeValue =EnumCV_ImageDerivation.PIXEL_BY_PIXEL_ADDITION_113042.getValue(); break;
		case DIFFUSION_WEIGHTED: this.strCodeValue =EnumCV_ImageDerivation.DIFFUSION_WEIGHTED_113043.getValue(); break;
		case DIFFUSION_ANISOTROPY: this.strCodeValue =EnumCV_ImageDerivation.DIFFUSION_ANISOTROPY_113044.getValue(); break;
		case DIFFUSION_ATTENUATED: this.strCodeValue =EnumCV_ImageDerivation.DIFFUSION_ATTENUATED_113045.getValue(); break;
		case PIXEL_BY_PIXEL_DIVISION: this.strCodeValue =EnumCV_ImageDerivation.PIXEL_BY_PIXEL_DIVISION_113046.getValue(); break;
		case PIXEL_BY_PIXEL_MASK: this.strCodeValue =EnumCV_ImageDerivation.PIXEL_BY_PIXEL_MASK_113047.getValue(); break;
		case PIXEL_BY_PIXEL_MAXIMUM: this.strCodeValue =EnumCV_ImageDerivation.PIXEL_BY_PIXEL_MAXIMUM_113048.getValue(); break;
		case PIXEL_BY_PIXEL_MEAN: this.strCodeValue =EnumCV_ImageDerivation.PIXEL_BY_PIXEL_MEAN_113049.getValue(); break;
		case METABOLITE_MAPS_FROM_SPECTROSCOPY_DATA: this.strCodeValue =EnumCV_ImageDerivation.METABOLITE_MAPS_FROM_SPECTROSCOPY_DATA_113050.getValue(); break;
		case PIXEL_BY_PIXEL_MINIMUM: this.strCodeValue =EnumCV_ImageDerivation.PIXEL_BY_PIXEL_MINIMUM_113051.getValue(); break;
		case MEAN_TRANSIT_TIME: this.strCodeValue =EnumCV_ImageDerivation.MEAN_TRANSIT_TIME_113052.getValue(); break;
		case PIXEL_BY_PIXEL_MULTIPLICATION: this.strCodeValue =EnumCV_ImageDerivation.PIXEL_BY_PIXEL_MULTIPLICATION_113053.getValue(); break;
		case NEGATIVE_ENHANCEMENT_INTEGRAL: this.strCodeValue =EnumCV_ImageDerivation.NEGATIVE_ENHANCEMENT_INTEGRAL_113054.getValue(); break;
		case REGIONAL_CEREBRAL_BLOOD_FLOW: this.strCodeValue =EnumCV_ImageDerivation.REGIONAL_CEREBRAL_BLOOD_FLOW_113055.getValue(); break;
		case REGIONAL_CEREBRAL_BLOOD_VOLUME: this.strCodeValue =EnumCV_ImageDerivation.REGIONAL_CEREBRAL_BLOOD_VOLUME_113056.getValue(); break;
		case R_COEFFICIENT: this.strCodeValue =EnumCV_ImageDerivation.R_COEFFICIENT_113057.getValue(); break;
		case PROTON_DENSITY: this.strCodeValue =EnumCV_ImageDerivation.PROTON_DENSITY_113058.getValue(); break;
		case SIGNAL_CHANGE: this.strCodeValue =EnumCV_ImageDerivation.SIGNAL_CHANGE_113059.getValue(); break;
		case SIGNAL_TO_NOISE: this.strCodeValue =EnumCV_ImageDerivation.SIGNAL_TO_NOISE_113060.getValue(); break;
		case STANDARD_DEVIATION: this.strCodeValue =EnumCV_ImageDerivation.STANDARD_DEVIATION_113061.getValue(); break;
		case PIXEL_BY_PIXEL_SUBTRACTION: this.strCodeValue =EnumCV_ImageDerivation.PIXEL_BY_PIXEL_SUBTRACTION_113062.getValue(); break;
		case T1: this.strCodeValue =EnumCV_ImageDerivation.T1_113063.getValue(); break;
		case T2_ASTERISK: this.strCodeValue =EnumCV_ImageDerivation.T2_ASTERISK_113064.getValue(); break;
		case T2: this.strCodeValue =EnumCV_ImageDerivation.T2_113065.getValue(); break;
		case TIME_COURSE_OF_SIGNAL: this.strCodeValue =EnumCV_ImageDerivation.TIME_COURSE_OF_SIGNAL_113066.getValue(); break;
		case TEMPERATURE_ENCODED: this.strCodeValue =EnumCV_ImageDerivation.TEMPERATURE_ENCODED_113067.getValue(); break;
		case STUDENTS_T_TEST: this.strCodeValue =EnumCV_ImageDerivation.STUDENTS_T_TEST_113068.getValue(); break;
		case TIME_TO_PEAK: this.strCodeValue =EnumCV_ImageDerivation.TIME_TO_PEAK_113069.getValue(); break;
		case VELOCITY_ENCODED: this.strCodeValue =EnumCV_ImageDerivation.VELOCITY_ENCODED_113070.getValue(); break;
		case Z_SCORE: this.strCodeValue =EnumCV_ImageDerivation.Z_SCORE_113071.getValue(); break;
		case MULTIPLANAR_REFORMATTING: this.strCodeValue =EnumCV_ImageDerivation.MULTIPLANAR_REFORMATTING_113072.getValue(); break;
		case CURVED_MULTIPLANAR_REFORMATTING: this.strCodeValue =EnumCV_ImageDerivation.CURVED_MULTIPLANAR_REFORMATTING_113073.getValue(); break;
		case VOLUME_RENDERING: this.strCodeValue =EnumCV_ImageDerivation.VOLUME_RENDERING_113074.getValue(); break;
		case SURFACE_RENDERING: this.strCodeValue =EnumCV_ImageDerivation.SURFACE_RENDERING_113075.getValue(); break;
		case SEGMENTATION: this.strCodeValue =EnumCV_ImageDerivation.SEGMENTATION_113076.getValue(); break;
		case VOLUME_EDITING: this.strCodeValue =EnumCV_ImageDerivation.VOLUME_EDITING_113077.getValue(); break;
		case MAXIMUM_INTENSITY_PROJECTION: this.strCodeValue =EnumCV_ImageDerivation.MAXIMUM_INTENSITY_PROJECTION_113078.getValue(); break;
		case MINIMUM_INTENSITY_PROJECTION: this.strCodeValue =EnumCV_ImageDerivation.MINIMUM_INTENSITY_PROJECTION_113079.getValue(); break;
		case SPATIAL_RESAMPLING: this.strCodeValue =EnumCV_ImageDerivation.SPATIAL_RESAMPLING_113085.getValue(); break;
		case EDGE_ENHANCEMENT: this.strCodeValue =EnumCV_ImageDerivation.EDGE_ENHANCEMENT_113086.getValue(); break;
		case SMOOTHING: this.strCodeValue =EnumCV_ImageDerivation.SMOOTHING_113087.getValue(); break;
		case GAUSSIAN_BLUR: this.strCodeValue =EnumCV_ImageDerivation.GAUSSIAN_BLUR_113088.getValue(); break;
		case UNSHARP_MASK: this.strCodeValue =EnumCV_ImageDerivation.UNSHARP_MASK_113089.getValue(); break;
		case IMAGE_STITCHING: this.strCodeValue =EnumCV_ImageDerivation.IMAGE_STITCHING_113090.getValue(); break;
		case SPATIALLY_RELATED_FRAMES_EXTRACTED_FROM_THE_VOLUME: this.strCodeValue =EnumCV_ImageDerivation.SPATIALLY_RELATED_FRAMES_EXTRACTED_FROM_THE_VOLUME_113091.getValue(); break;
		case TEMPORALLY_RELATED_FRAMES_EXTRACTED_FROM_THE_SET_OF_VOLUMES: this.strCodeValue =EnumCV_ImageDerivation.TEMPORALLY_RELATED_FRAMES_EXTRACTED_FROM_THE_SET_OF_VOLUMES_113092.getValue(); break;
		case MULTI_ENERGY_PROPORTIONAL_WEIGHTING: this.strCodeValue =EnumCV_ImageDerivation.MULTI_ENERGY_PROPORTIONAL_WEIGHTING_113097.getValue(); break;
		case POLAR_TO_RECTANGULAR_SCAN_CONVERSION: this.strCodeValue =EnumCV_ImageDerivation.POLAR_TO_RECTANGULAR_SCAN_CONVERSION_113093.getValue(); break;
		}
	}

	/**
	 * Sets the value for ImageDerivation
	 * @param enumImageDerivation Object of EnumCM_ImageDerivation.
	 */
	public void setImageDerivation(EnumCM_ImageDerivation enumImageDerivation)
	{
		/**
		 * Retrieves the value for CodingSchemeDesignator, CodingSchemeVersion and Code Meaning and 
		 * sets the Code Value according to Code Meaning.
		 */
		this.strCodeMeaning = enumImageDerivation.getValue();
		this.strCodingSchemeDesignator = EnumCodingSchemeDesignator.DCM.getValue();
		
		/**
		 * set code Value
		 */
		setCodeValue(enumImageDerivation);
	}
}
