/*******************************************************************************
 *  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_BronchovascularAnatomyFindingOrFeature;
import cdac.medinfo.sdk.dcm30_04.templates.enums.cm.EnumCM_LungAnatomyFindingOrFeature;
import cdac.medinfo.sdk.dcm30_04.templates.enums.cm.EnumCM_MediastinumAnatomyFindingOrFeature;
import cdac.medinfo.sdk.dcm30_04.templates.enums.cm.EnumCM_MuscularAnatomy;
import cdac.medinfo.sdk.dcm30_04.templates.enums.cm.EnumCM_OsseousAnatomyFindingOrFeature;
import cdac.medinfo.sdk.dcm30_04.templates.enums.cm.EnumCM_PleuraAnatomyFindingOrFeature;
import cdac.medinfo.sdk.dcm30_04.templates.enums.cm.EnumCM_RadiographicAnatomyFindingOrFeature;
import cdac.medinfo.sdk.dcm30_04.templates.enums.cv.EnumCV_RadiographicAnatomyFindingOrFeature;


/**
 * This class represents RadiographicAnatomyFindingOrFeature - CID6109
 */
public class RadiographicAnatomyFindingOrFeature_CID6109 
{
	
	/**
	 * 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;

	/**
	 * Object of LungAnatomyFindingOrFeature_CID6110
	 */
	private LungAnatomyFindingOrFeature_CID6110 objAnatomyFindingOrFeatureCID6110;
	
	/**
	 * Object of BronchovascularAnatomyFindingOrFeature_CID6111
	 */
	private BronchovascularAnatomyFindingOrFeature_CID6111 objAnatomyFindingOrFeatureCID6111;
	
	/**
	 * Object of PleuraAnatomyFindingOrFeature_CID6112
	 */
	private PleuraAnatomyFindingOrFeature_CID6112 objPleuraAnatomyFindingOrFeatureCID6112;
	
	/**
	 * Object of MediastinumAnatomyFindingOrFeature_CID6113
	 */
	private MediastinumAnatomyFindingOrFeature_CID6113 objMediastinumAnatomyFindingOrFeatureCID6113;
	
	/**
	 * Object of OsseousAnatomyFindingOrFeature_CID6114
	 */
	private OsseousAnatomyFindingOrFeature_CID6114 objOsseousAnatomyFindingOrFeatureCID6114;
	/**
	 * The SNOMED CT ID for template.
	 */
	private String strSNOMEDCTID = null;
	/**
	 * Object of MuscularAnatomy_CID6116
	 */
	private MuscularAnatomy_CID6116 objMuscularAnatomyCID6116;
	
	/**
	 * Object of VascularAnatomy_CID6117
	 */
	private VascularAnatomy_CID6117 objVascularAnatomyCID6117;

	/**
	 * 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;
	}
	
	/**
	 * Instantiates a new RadiographicAnatomyFindingOrFeature_CID6109 Template 
	 */
	public RadiographicAnatomyFindingOrFeature_CID6109()
	{

	}

	/**
	 * Sets the Code Value according to Code Meaning.
	 * @param enumRadiographicAnatomyFindingOrFeature Object of EnumCM_RadiographicAnatomyFindingOrFeature represents Code Meaning.
	 */
	private void setCodeValue(EnumCM_RadiographicAnatomyFindingOrFeature enumRadiographicAnatomyFindingOrFeature)
	{
		switch(enumRadiographicAnatomyFindingOrFeature)
		{
		case INTERFACE: this.strCodeValue = EnumCV_RadiographicAnatomyFindingOrFeature.INTERFACE_112082.getValue();break;
		case LINE: this.strCodeValue = EnumCV_RadiographicAnatomyFindingOrFeature.LINE_112083.getValue();break;
		case LUCENCY: this.strCodeValue = EnumCV_RadiographicAnatomyFindingOrFeature.LUCENCY_112084.getValue();break;
		}
	}

	/**
	 * Sets the value for RadiographicAnatomyFindingOrFeature
	 * @param enumValue This Enum value can be one of the following enums - EnumCM_RadiographicAnatomyFindingOrFeature, EnumCM_LungAnatomyFindingOrFeature,
	 * EnumCM_BronchovascularAnatomyFindingOrFeature, EnumCM_PleuraAnatomyFindingOrFeature,EnumCM_MediastinumAnatomyFindingOrFeature,
	 * EnumCM_OsseousAnatomyFindingOrFeature, EnumCM_MuscularAnatomy,EnumCM_VascularAnatomy,EnumCM_CoronaryArteries,EnumCM_CoronaryArterySegments.
	 */
	public void setRadiographicAnatomyFindingOrFeature(Enum enumValue)
	{
		if (enumValue instanceof EnumCM_RadiographicAnatomyFindingOrFeature) 
		{
			/**
			 * Casting EnumValue to required Enum.
			 */
			EnumCM_RadiographicAnatomyFindingOrFeature new_enumRadiographicAnatomyFindingOrFeature = (EnumCM_RadiographicAnatomyFindingOrFeature)enumValue;
			
			this.strCodeMeaning = new_enumRadiographicAnatomyFindingOrFeature.getValue();
			this.strCodingSchemeDesignator = EnumCodingSchemeDesignator.DCM.getValue();
			setCodeValue(new_enumRadiographicAnatomyFindingOrFeature);
		}
		else if(enumValue instanceof EnumCM_LungAnatomyFindingOrFeature)
		{
			/**
			 * Casting EnumValue to required Enum.
			 */
			EnumCM_LungAnatomyFindingOrFeature new_enumLungAnatomyFindingOrFeature = (EnumCM_LungAnatomyFindingOrFeature) enumValue;
			
			/**
			 * Creating object of require CID with respect to enum and setting value accordingly.
			 */
			if(null== this.objAnatomyFindingOrFeatureCID6110)
	this.objAnatomyFindingOrFeatureCID6110 = new LungAnatomyFindingOrFeature_CID6110();
			this.objAnatomyFindingOrFeatureCID6110.setLungAnatomyFindingOrFeature(new_enumLungAnatomyFindingOrFeature);
			
			/**
			 * Retrieving attributes and setting it to member variables. 
			 */
			this.strCodeMeaning = objAnatomyFindingOrFeatureCID6110.getCodeMeaning();
			this.strCodeValue = objAnatomyFindingOrFeatureCID6110.getCodeValue();
			this.strCodingSchemeDesignator = objAnatomyFindingOrFeatureCID6110.getCodingSchemeDesignator();
			this.strSNOMEDCTID = objAnatomyFindingOrFeatureCID6110.getSNOMEDCTID();
		}
		else if(enumValue instanceof EnumCM_BronchovascularAnatomyFindingOrFeature)
		{
			/**
			 * Casting EnumValue to required Enum.
			 */
			EnumCM_BronchovascularAnatomyFindingOrFeature new_enumBronchovascularAnatomyFindingOrFeature = (EnumCM_BronchovascularAnatomyFindingOrFeature) enumValue;
			
			/**
			 * Creating object of require CID with respect to enum and setting value accordingly.
			 */
			if(null== this.objAnatomyFindingOrFeatureCID6111)
	this.objAnatomyFindingOrFeatureCID6111 = new BronchovascularAnatomyFindingOrFeature_CID6111();
			this.objAnatomyFindingOrFeatureCID6111.setBronchovascularAnatomyFindingOrFeature(new_enumBronchovascularAnatomyFindingOrFeature);
			
			/**
			 * Retrieving attributes and setting it to member variables. 
			 */
			this.strCodeMeaning = objAnatomyFindingOrFeatureCID6111.getCodeMeaning();
			this.strCodeValue = objAnatomyFindingOrFeatureCID6111.getCodeValue();
			this.strCodingSchemeDesignator = objAnatomyFindingOrFeatureCID6111.getCodingSchemeDesignator();
			this.strSNOMEDCTID = objAnatomyFindingOrFeatureCID6111.getSNOMEDCTID();
		}
		else if(enumValue instanceof EnumCM_PleuraAnatomyFindingOrFeature)
		{
			/**
			 * Casting EnumValue to required Enum.
			 */
			EnumCM_PleuraAnatomyFindingOrFeature new_enumPleuraAnatomyFindingOrFeature = (EnumCM_PleuraAnatomyFindingOrFeature) enumValue;
			
			/**
			 * Creating object of require CID with respect to enum and setting value accordingly.
			 */
			if(null== this.objPleuraAnatomyFindingOrFeatureCID6112)
	this.objPleuraAnatomyFindingOrFeatureCID6112 = new PleuraAnatomyFindingOrFeature_CID6112();
			this.objPleuraAnatomyFindingOrFeatureCID6112.setPleuraAnatomyFindingOrFeature(new_enumPleuraAnatomyFindingOrFeature);
			
			/**
			 * Retrieving attributes and setting it to member variables. 
			 */
			this.strCodeMeaning = objPleuraAnatomyFindingOrFeatureCID6112.getCodeMeaning();
			this.strCodeValue = objPleuraAnatomyFindingOrFeatureCID6112.getCodeValue();
			this.strCodingSchemeDesignator = objPleuraAnatomyFindingOrFeatureCID6112.getCodingSchemeDesignator();
			this.strSNOMEDCTID = objPleuraAnatomyFindingOrFeatureCID6112.getSNOMEDCTID();
		}
		else if(enumValue instanceof EnumCM_MediastinumAnatomyFindingOrFeature)
		{
			/**
			 * Casting EnumValue to required Enum.
			 */
			EnumCM_MediastinumAnatomyFindingOrFeature new_enumMediastinumAnatomyFindingOrFeature = (EnumCM_MediastinumAnatomyFindingOrFeature) enumValue;
			
			/**
			 * Creating object of require CID with respect to enum and setting value accordingly.
			 */
			if(null== this.objMediastinumAnatomyFindingOrFeatureCID6113)
	this.objMediastinumAnatomyFindingOrFeatureCID6113 = new MediastinumAnatomyFindingOrFeature_CID6113();
			this.objMediastinumAnatomyFindingOrFeatureCID6113.setMediastinumAnatomyFindingOrFeature(new_enumMediastinumAnatomyFindingOrFeature);
			
			/**
			 * Retrieving attributes and setting it to member variables. 
			 */
			this.strCodeMeaning = objMediastinumAnatomyFindingOrFeatureCID6113.getCodeMeaning();
			this.strCodeValue = objMediastinumAnatomyFindingOrFeatureCID6113.getCodeValue();
			this.strCodingSchemeDesignator = objMediastinumAnatomyFindingOrFeatureCID6113.getCodingSchemeDesignator();
			this.strSNOMEDCTID = objMediastinumAnatomyFindingOrFeatureCID6113.getSNOMEDCTID();
		}
		else if(enumValue instanceof EnumCM_OsseousAnatomyFindingOrFeature)
		{
			/**
			 * Casting EnumValue to required Enum.
			 */
			EnumCM_OsseousAnatomyFindingOrFeature new_enumOsseousAnatomyFindingOrFeature = (EnumCM_OsseousAnatomyFindingOrFeature) enumValue;
			
			/**
			 * Creating object of require CID with respect to enum and setting value accordingly.
			 */
			if(null== this.objOsseousAnatomyFindingOrFeatureCID6114)
	this.objOsseousAnatomyFindingOrFeatureCID6114 = new OsseousAnatomyFindingOrFeature_CID6114();
			this.objOsseousAnatomyFindingOrFeatureCID6114.setOsseousAnatomyFindingOrFeature(new_enumOsseousAnatomyFindingOrFeature);
			
			/**
			 * Retrieving attributes and setting it to member variables. 
			 */
			this.strCodeMeaning = objOsseousAnatomyFindingOrFeatureCID6114.getCodeMeaning();
			this.strCodeValue = objOsseousAnatomyFindingOrFeatureCID6114.getCodeValue();
			this.strCodingSchemeDesignator = objOsseousAnatomyFindingOrFeatureCID6114.getCodingSchemeDesignator();
			this.strSNOMEDCTID = objMediastinumAnatomyFindingOrFeatureCID6113.getSNOMEDCTID();
		}
		else if(enumValue instanceof EnumCM_MuscularAnatomy)
		{
			/**
			 * Casting EnumValue to required Enum.
			 */
			EnumCM_MuscularAnatomy new_enumMuscularAnatomy = (EnumCM_MuscularAnatomy) enumValue;
			
			/**
			 * Creating object of require CID with respect to enum and setting value accordingly.
			 */
			if(null== this.objMuscularAnatomyCID6116)
	this.objMuscularAnatomyCID6116 = new MuscularAnatomy_CID6116();
			this.objMuscularAnatomyCID6116.setMuscularAnatomy(new_enumMuscularAnatomy);
			
			/**
			 * Retrieving attributes and setting it to member variables. 
			 */
			this.strCodeMeaning = objMuscularAnatomyCID6116.getCodeMeaning();
			this.strCodeValue = objMuscularAnatomyCID6116.getCodeValue();
			this.strCodingSchemeDesignator = objMuscularAnatomyCID6116.getCodingSchemeDesignator();
			this.strSNOMEDCTID = objMuscularAnatomyCID6116.getSNOMEDCTID();
		}
		else
		{
			/**
			 * Creating object of require CID with respect to enum and setting value accordingly.
			 */
			if(null== this.objVascularAnatomyCID6117)
	this.objVascularAnatomyCID6117 = new VascularAnatomy_CID6117();
			this.objVascularAnatomyCID6117.setVascularAnatomy(enumValue);

			/**
			 * Retrieving attributes and setting it to member variables. 
			 */
			if(objVascularAnatomyCID6117 != null)
			{
				this.strCodeMeaning = objVascularAnatomyCID6117.getCodeMeaning();
				this.strCodeValue = objVascularAnatomyCID6117.getCodeValue();
				this.strCodingSchemeDesignator = objVascularAnatomyCID6117.getCodingSchemeDesignator();
				this.strSNOMEDCTID = objVascularAnatomyCID6117.getSNOMEDCTID();
			}
		}
	}
}
