/*******************************************************************************
 *  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.EnumCodingSchemeVersion;
import cdac.medinfo.sdk.dcm30_04.templates.enums.cm.EnumCM_Modifiers;
import cdac.medinfo.sdk.dcm30_04.templates.enums.cv.EnumCV_Modifiers;


/**
 * This class represents Modifiers - CID3683
 */
public class Modifiers_CID3683
{
	
	/**
	 * 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 Coding Scheme Version
	 */
	private String strCodingSchemeVersion = null;

	/**
	 * Instantiates a new Modifiers_CID3683 Template.
	 */
	public Modifiers_CID3683() 
	{

	}

	/**
	 * Retrieves the value for CodeMeaning
	 * @return strCodeMeaning String value for CodeMeaning
	 */
	public String getCodeMeaning() 
	{
		return strCodeMeaning;
	}

	/**
	 * Retrieves the value for CodeValue
	 * @return strCodeValue String value for CodeValue
	 */
	public String getCodeValue() 
	{
		return strCodeValue;
	}

	/**
	 * Retrieves the value for CodingSchemeDesignator
	 * @return strCodingSchemeDesignator String value for CodingSchemeDesignator
	 */
	public String getCodingSchemeDesignator()
	{
		return strCodingSchemeDesignator;
	}

	/**
	 * Retrieves the value for CodingSchemeVersion
	 * @return
	 */
	public String getCodingSchemeVersion() {
		return strCodingSchemeVersion;
	}

	/**
	 * Sets the Code Value according to Code Meaning.
	 * @param enumModifiers Object of EnumCM_Modifiers represents Code Meaning.
	 */
	private void setCodeValue(EnumCM_Modifiers enumModifiers)
	{
		switch(enumModifiers)
		{
		case ABNORMAL:
			this.strCodeValue = EnumCV_Modifiers.ABNORMAL_D_2_3_AB.getValue();
			break;
		case ACUTE:
			this.strCodeValue = EnumCV_Modifiers.ACUTE_D_2_3_AC.getValue();
			break;
		case AGE_INDETERMINATE:
			this.strCodeValue = EnumCV_Modifiers.AGE_INDETERMINATE_D_2_3_AI.getValue();
			break;
		case AGE_UNDETERMINED:
			this.strCodeValue = EnumCV_Modifiers.AGE_UNDETERMINED_D_2_3_AU.getValue();
			break;
		case ANTERIOR:
			this.strCodeValue = EnumCV_Modifiers.ANTERIOR_D_2_3_AN.getValue();
			break;
		case ANTERO_INFERIOR:
			this.strCodeValue = EnumCV_Modifiers.ANTERO_INFERIOR_D_2_3_AF.getValue();
			break;
		case ANTEROLATERAL:
			this.strCodeValue = EnumCV_Modifiers.ANTEROLATERAL_D_2_3_AL.getValue();
			break;
		case ANTEROSEPTAL:
			this.strCodeValue = EnumCV_Modifiers.ANTEROSEPTAL_D_2_3_AS.getValue();
			break;
		case ATRIAL:
			this.strCodeValue = EnumCV_Modifiers.ATRIAL_D_2_3_AT.getValue();
			break;
		case ATYPICAL:
			this.strCodeValue = EnumCV_Modifiers.ATYPICAL_D_2_3_YT.getValue();
			break;
		case BASAL:
			this.strCodeValue = EnumCV_Modifiers.BASAL_D_2_3_BA.getValue();
			break;
		case BORDERLINE:
			this.strCodeValue = EnumCV_Modifiers.BORDERLINE_D_2_3_BO.getValue();
			break;
		case BORDERLINE_ABNORMAL:
			this.strCodeValue = EnumCV_Modifiers.BORDERLINE_ABNORMAL_D_2_3_BA.getValue();
			break;
		case BORDERLINE_NORMAL:
			this.strCodeValue = EnumCV_Modifiers.BORDERLINE_NORMAL_D_2_3_BN.getValue();
			break;
		case COMPATIBLE_WITH_ELECTROLYTE_ABNORMALITIES:
			this.strCodeValue = EnumCV_Modifiers.COMPATIBLE_WITH_ELECTROLYTE_ABNORMALITIES_D_2_3_EL.getValue();
			break;
		case COMPATIBLE_WITH_LEFT_VENTRICULAR_STRAIN:
			this.strCodeValue = EnumCV_Modifiers.COMPATIBLE_WITH_LEFT_VENTRICULAR_STRAIN_D_2_3_LV.getValue();
			break;
		case COMPATIBLE_WITH_MYOCARDIAL_ISCHEMIC_DAMAGE:
			this.strCodeValue = EnumCV_Modifiers.COMPATIBLE_WITH_MYOCARDIAL_ISCHEMIC_DAMAGE_D_2_3_MD.getValue();
			break;
		case COMPATIBLE_WITH_PERICARDITIS:
			this.strCodeValue = EnumCV_Modifiers.COMPATIBLE_WITH_PERICARDITIS_D_2_3_PE.getValue();
			break;
		case COMPLETE:
			this.strCodeValue = EnumCV_Modifiers.COMPLETE_D_2_3_CP.getValue();
			break;
		case DIFFUSE:
			this.strCodeValue = EnumCV_Modifiers.DIFFUSE_D_2_3_DI.getValue();
			break;
		case EVOLVING:
			this.strCodeValue = EnumCV_Modifiers.EVOLVING_D_2_3_EV.getValue();
			break;
		case EXTENSIVE:
			this.strCodeValue = EnumCV_Modifiers.EXTENSIVE_D_2_3_EX.getValue();
			break;
		case HIGH_LATERAL:
			this.strCodeValue = EnumCV_Modifiers.HIGH_LATERAL_D_2_3_HL.getValue();
			break;
		case INCOMPLETE:
			this.strCodeValue = EnumCV_Modifiers.INCOMPLETE_D_2_3_IC.getValue();
			break;
		case INFERIOR:
			this.strCodeValue = EnumCV_Modifiers.INFERIOR_D_2_3_IN.getValue();
			break;
		case INFEROLATERAL:
			this.strCodeValue = EnumCV_Modifiers.INFEROLATERAL_D_2_3_IL.getValue();
			break;
		case INFEROPOSTERIOR:
			this.strCodeValue = EnumCV_Modifiers.INFEROPOSTERIOR_D_2_3_IP.getValue();
			break;
		case LATERAL:
			this.strCodeValue = EnumCV_Modifiers.LATERAL_D_2_3_LA.getValue();
			break;
		case MAJOR:
			this.strCodeValue = EnumCV_Modifiers.MAJOR_D_2_3_MA.getValue();
			break;
		case MAY_BE_NORMAL_VARIANT:
			this.strCodeValue = EnumCV_Modifiers.MAY_BE_NORMAL_VARIANT_D_2_3_NX.getValue();
			break;
		case MINOR:
			this.strCodeValue = EnumCV_Modifiers.MINOR_D_2_3_MI.getValue();
			break;
		case MODERATE:
			this.strCodeValue = EnumCV_Modifiers.MODERATE_D_2_3_MO.getValue();
			break;
		case NODAL:
			this.strCodeValue = EnumCV_Modifiers.NODAL_D_2_3_ND.getValue();
			break;
		case OLD:
			this.strCodeValue = EnumCV_Modifiers.OLD_D_2_3_OL.getValue();
			break;
		case POSSIBLY_ACUTE_RECENT:
			this.strCodeValue = EnumCV_Modifiers.POSSIBLY_ACUTE_RECENT_D_2_3_YA.getValue();
			break;
		case POSSIBLY_OLD:
			this.strCodeValue = EnumCV_Modifiers.POSSIBLY_OLD_D_2_3_YO.getValue();
			break;
		case POSTERIOR:
			this.strCodeValue = EnumCV_Modifiers.POSTERIOR_D_2_3_PO.getValue();
			break;
		case POSTEROLATERAL:
			this.strCodeValue = EnumCV_Modifiers.POSTEROLATERAL_D_2_3_PL.getValue();
			break;
		case PROBABLY_ACUTE_RECENT:
			this.strCodeValue = EnumCV_Modifiers.PROBABLY_ACUTE_RECENT_D_2_3_XA.getValue();
			break;
		case PROBABLY_OLD:
			this.strCodeValue = EnumCV_Modifiers.PROBABLY_OLD_D_2_3_XO.getValue();
			break;
		case RECENT:
			this.strCodeValue = EnumCV_Modifiers.RECENT_D_2_3_RE.getValue();
			break;
		case SEPTAL:
			this.strCodeValue = EnumCV_Modifiers.SEPTAL_D_2_3_SE.getValue();
			break;
		case SINUS:
			this.strCodeValue = EnumCV_Modifiers.SINUS_D_2_3_SI.getValue();
			break;
		case SUBACUTE:
			this.strCodeValue = EnumCV_Modifiers.SUBACUTE_D_2_3_SU.getValue();
			break;
		case SUBENDOCARDIAL:
			this.strCodeValue = EnumCV_Modifiers.SUBENDOCARDIAL_D_2_3_SN.getValue();
			break;
		case SUBEPICARDIAL:
			this.strCodeValue = EnumCV_Modifiers.SUBEPICARDIAL_D_2_3_SP.getValue();
			break;
		case SUPRAVENTRICULAR:
			this.strCodeValue = EnumCV_Modifiers.SUPRAVENTRICULAR_D_2_3_SV.getValue();
			break;
		case TYPICAL:
			this.strCodeValue = EnumCV_Modifiers.TYPICAL_D_2_3_TY.getValue();
			break;
		case VENTRICULAR:
			this.strCodeValue = EnumCV_Modifiers.VENTRICULAR_D_2_3_VE.getValue();
			break;
		case WIDESPREAD:
			this.strCodeValue = EnumCV_Modifiers.WIDESPREAD_D_2_3_WI.getValue();
			break;
		case WITHIN_NORMAL_LIMITS:
			this.strCodeValue = EnumCV_Modifiers.WITHIN_NORMAL_LIMITS_D_2_3_NO.getValue();
			break;
		}
	}

	/**
	 * Sets the value for Modifiers
	 * @param enumModifiers Enum for Modifiers
	 */
	public void setModifiers(EnumCM_Modifiers enumModifiers)
	{
		/**
		 * Retrieves the value for CodingSchemeDesignator, CodingSchemeVersion and Code Meaning and 
		 * sets the Code Value according to Code Meaning.
		 */
		this.strCodeMeaning = enumModifiers.getValue();
		this.strCodingSchemeVersion = EnumCodingSchemeVersion.CSV_1_3.getValue();
		this.strCodingSchemeDesignator = EnumCodingSchemeDesignator.SCPECG.getValue();

		/**
		 * set code Value
		 */
		setCodeValue(enumModifiers);
	}
}
