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


/*
 * This class represent keys for DICOM DIR.
 * It contains Enums for all the Directory Record Type , which in turn contains keys for that directory record.
 */
class EnumKeyValues
{
	;
	/*
	 * This class represents keys for Directory Record Modality LUT.
	 * They are used to reference a Modality LUT SOP Instance.
	 * This enum contains Group Number and Element Number of Record keys for Directory Record Modality LUT.
	 */
	enum EnumModalityLUTKeys
	{
		/*
		 * Group number of Lookup Table Number.
		 */
		LOOKUP_TABLE_NUMBER_GROUP_NO(0x0020),

		/*
		 * Element Number of Lookup Table Number.
		 */
		LOOKUP_TABLE_NUMBER_ELEMENT_NO(0x0026);

		public int iValue;

		EnumModalityLUTKeys(int iValue)
		{
			this.iValue = iValue;
		}

		/*
		 * This function gets the int value of EnumModalityLUTKeys.
		 * @return int - value of ModalityLUT Keys.
		 */
		public int getValue()
		{
			return iValue;
		}
	}

	/*
	 * This class represents keys for Directory Record Curve.
	 * They are used to reference a Curve SOP Instance.
	 * This enum contains Group Number and Element Number of Record keys for Directory Record Curve.
	 */
	enum EnumCurveKeys 
	{
		/*
		 * Group Number of Curve Number.
		 */
		CURVE_NUMBER_GROUP_NO(0x0020),

		/*
		 * Element Number of Element Number. 
		 */
		CURVE_NUMBER_ELEMENT_NO(0x0024);

		public int iValue;

		EnumCurveKeys(int iValue)
		{
			this.iValue = iValue;
		}

		/*
		 *  This function gets the int value of EnumCurveKeys.
		 * @return int - value of Curve Keys.
		 */
		public int getValue()
		{
			return iValue;
		}
	}

	/*
	 * This class represents keys for Directory Record Fiducial Keys.
	 * They are used to reference a Spatial Fiducials SOP Instance.
	 * This enum contains Group Number and Element Number of Record keys for Directory Record Fiducial.
	 */
	enum EnumFiducialKeys
	{
		/*
		 * Group Number of Content Date.
		 */
		CONTENT_DATE_GROUP_NO(0x0008),

		/*
		 * Element Number of Content Date.
		 */
		CONTENT_DATE_ELEMENT_NO(0x0023),

		/*
		 * Group Number of Content Time.
		 */
		CONTENT_TIME_GROUP_NO(0x0008),

		/*
		 * Element Number of Content Time.
		 */
		CONTENT_TIME_ELEMENT_NO(0x0033),

		/*
		 * Group Number of Instance Number.
		 */
		INSTANCE_NUMBER_GROUP_NO(0x0020),

		/*
		 * Element Number of Instance Number.
		 */
		INSTANCE_NUMBER_ELEMENT_NO(0x0013),

		/*
		 * Group Number of Content Label.
		 */
		CONTENT_LABEL_GROUP_NO(0x0070),

		/*
		 * Element Number of Content Label.
		 */
		CONTENT_LABEL_ELEMENT_NO(0x0080),

		/*
		 * Group Number of Content Description.
		 */
		CONTENT_DESCRIPTION_GROUP_NO(0x0070),

		/*
		 * Element Number of Content Description.
		 */
		CONTENT_DESCRIPTION_ELEMENT_NO(0x0081),

		/*
		 * Group Number of Content Creator Name.
		 */
		CONTENT_CREATOR_NAME_GROUP_NO(0x0070),

		/*
		 * Element Number of Content Creator Name.
		 */
		CONTENT_CREATOR_NAME_ELEMENT_NO(0x0084);

		public int iValue;

		EnumFiducialKeys(int iValue)
		{
			this.iValue = iValue;
		}

		/*
		 * This function gets the int value of EnumFiducialKeys.
		 * @return int - value of Fiducial Keys.
		 */
		public int getValue()
		{
			return iValue;
		}
	}

	/*
	 * This class represents keys for Directory Record Image.
	 * They are used to reference a Image SOP Instance.
	 * This enum contains Group Number and Element Number of Record keys for Directory Record Image.
	 */
	enum EnumImageKeys 
	{
		/*
		 * Group Number of SOP Class UID.
		 */
		SOP_CLASS_UID_GROUP_NO(0x0008),

		/*
		 * Element Number of SOP Class UID.
		 */
		SOP_CLASS_UID_ELEMENT_NO(0x0016),

		/*
		 * Group Number of SOP Instance UID.
		 */
		SOP_INSTANCE_UID_GROUP_NO(0x0008),

		/*
		 * Element Number of SOP Instance UID.
		 */
		SOP_INSTANCE_UID_ELEMENT_NO(0x0018),

		/*
		 * Group Number of Instance Number.
		 */
		INSTANCE_NUMBER_GROUP_NO(0x0020),

		/*
		 * Element Number of Instance number.
		 */
		INSTANCE_NUMBER_ELEMENT_NO(0x0013),

		/*
		 * Group Number of Rows.
		 */
		ROWS_GROUP_NO(0x0028),

		/*
		 * Element Number of Rows.
		 */
		ROWS_ELEMENT_NO(0x0010),

		/*
		 * Group Number of Columns.
		 */
		COLUMNS_GROUP_NO(0x0028),

		/*
		 * Element Number of Columns.
		 */
		COLUMNS_ELEMENT_NO(0x0011),

		/*
		 * Group Number of Number of Frames.
		 */
		NO_OF_FRAME_GROUP_NO(0x0028),

		/*
		 * Element Number of Number of Frames.
		 */
		NO_OF_FRAME_ELEMENT_NO(0x0008),

		/*
		 * Group Number of Image Type.
		 */
		IMAGE_TYPE_GROUP_NO(0x0008),

		/*
		 * Element Number of Image Type.
		 */
		IMAGE_TYPE_ELEMENT_NO(0x0008);


		public int iValue;

		EnumImageKeys(int iValue)
		{
			this.iValue = iValue;
		}

		/*
		 * This function gets the int value of EnumImageKeys.
		 * @return int - value of Image Keys.
		 */
		public int getValue()
		{
			return iValue;
		}
	}

	/*
	 * This class represents keys for Directory Record Interpretation.
	 * They are used to reference a Interpretation SOP Instance.
	 * This enum contains Group Number and Element Number of Record keys for Directory Record Interpretation.
	 */
	enum EnumInterpretationKeys 
	{
		/*
		 * Group Number of Interpretation Transcription Date.
		 */
		INTERPRETATION_TRANSCRIPTION_DATE_GROUP_NO(0x4008),

		/*
		 * Element Number of Interpretation Transcription Date.
		 */
		INTERPRETATION_TRANSCRIPTION_DATE_ELEMENT_NO(0x0108),

		/*
		 * Group Number of Interpretation Author.
		 */
		INTERPRETATION_AUTHOR_GROUP_NO(0x4008),

		/*
		 * Element Number of Interpretation Author.
		 */
		INTERPRETATION_AUTHOR_ELEMENT_NO(0x010C),

		/*
		 * Group Number of Interpretation Diagnosis.
		 */
		INTERPRETATION_DIAGNOSIS_DESCRIPTION_GROUP_NO(0x4008),

		/*
		 * Element Number of Interpretation Diagnosis.
		 */
		INTERPRETATION_DIAGNOSIS_DESCRIPTION_ELEMENT_NO(0x0115),

		/*
		 * Group Number of Interpretation ID.
		 */
		INTERPRETATION_ID_GROUP_NO(0x4008),

		/*
		 * Element Number of Interpretation ID.
		 */
		INTERPRETATION_ID_ELEMENT_NO(0x0200),

		/*
		 * Group Number of Interpretation Type ID.
		 */
		INTERPRETATION_TYPE_ID_GROUP_NO(0x4008),

		/*
		 * Element Number of Interpretation Type ID.
		 */
		INTERPRETATION_TYPE_ID_ELEMENT_NO(0x0210),

		/*
		 * Group Number of Interpretation Status ID.
		 */
		INTERPRETATION_STATUS_ID_GROUP_NO(0x4008),

		/*
		 * Element Number of Interpretation Status ID.
		 */
		INTERPRETATION_STATUS_ID_ELEMENT_NO(0x0212);

		public int iValue;

		EnumInterpretationKeys(int iValue)
		{
			this.iValue = iValue;
		}

		/*
		 * This function gets the int value of EnumInterpretationKeys.
		 * @return int - value of Interpretation Keys.
		 */
		public int getValue()
		{
			return iValue;
		}
	}

	/*
	 * This class represents keys for Directory Record Key Object Document.
	 * They are used to reference a Key Object Document SOP Instance.
	 * This enum contains Group Number and Element Number of Record keys for Directory Record Key Object Document.
	 */
	enum EnumKeyObjectDocumentKeys 
	{
		/*
		 * Group Number of Instance Number.
		 */
		INSTANCE_NUMBER_GROUP_NO(0x0020),

		/*
		 * Element number of Instance Number.
		 */
		INSTANCE_NUMBER_ELEMENT_NO(0x0013),

		/*
		 * Group Number of Content Date.
		 */
		CONTENT_DATE_GROUP_NO(0x0008),

		/*
		 * Element number of Content Date.
		 */
		CONTENT_DATE_ELEMENT_NO(0x0023),

		/*
		 * Group Number of Content Time.
		 */
		CONTENT_TIME_GROUP_NO(0x0008),

		/*
		 * Element number of Content Time.
		 */
		CONTENT_TIME_ELEMENT_NO(0x0033);

		public int iValue;

		EnumKeyObjectDocumentKeys(int iValue)
		{
			this.iValue = iValue;
		}

		/*
		 * This function gets the int value of EnumKeyObjectDocumentKeys.
		 * @return int - value of Key Object Document Keys.
		 */
		public int getValue()
		{
			return iValue;
		}
	}

	/*
	 * This class represents keys for Directory Record Overlay.
	 * They are used to reference a Overlay SOP Instance.
	 * This enum contains Group Number and Element Number of Record keys for Directory Record Overlay.
	 */
	enum EnumOverlayKeys
	{
		/*
		 * Group Number of Overlay Number.
		 */
		OVERLAY_NUMBER_GROUP_NO(0x0020),

		/*
		 * Element Number of Overlay Number.
		 */
		OVERLAY_NUMBER_ELEMENT_NO(0x0022);

		public int iValue;

		EnumOverlayKeys(int iValue)
		{
			this.iValue = iValue;
		}

		/*
		 * This function gets the int value of EnumOverlayKeys.
		 * @return int - value of Overlay Keys.
		 */
		public int getValue()
		{
			return iValue;
		}
	}

	/*
	 * This class represents keys for Directory Record Patient.
	 * They are used to reference a Patient SOP Instance.
	 * This enum contains Group Number and Element Number of Record keys for Directory Record Patient.
	 */
	enum EnumPatientKeys 
	{
		/*
		 * Group Number of Patient Name.
		 */
		PATIENT_NAME_GROUP_NO(0x0010),

		/*
		 * Element Number of Patient Name.
		 */
		PATIENT_NAME_ELEMENT_NO(0x0010),

		/*
		 * Group Number of Patient ID.
		 */
		PATIENT_ID_GROUP_NO(0x0010),

		/*
		 * Element Number of Patient ID.
		 */
		PATIENT_ID_ELEMENT_NO(0x0020);

		public int iValue;

		EnumPatientKeys(int iValue)
		{
			this.iValue = iValue;
		}

		/*
		 * This function gets the int value of EnumPatientKeys.
		 * @return int - value of Patient Keys.
		 */
		public int getValue()
		{
			return iValue;
		}
	}

	/*
	 * This class represents keys for Directory Record Presentation.
	 * They are used to reference a Presentation SOP Instance.
	 * This enum contians Group Number and Element Number of Record keys for Directory Record Presentation.
	 */
	enum EnumPresentationKeys 
	{
		/*
		 * Group Number of Instance Number.
		 */
		INSTANCE_NUMBER_GROUP_NO(0x0020),

		/*
		 * Element Number of Instance Number.
		 */
		INSTANCE_NUMBER_ELEMENT_NO(0x0013),

		/*
		 * Group Number of Content Label.
		 */
		CONTENT_LABEL_GROUP_NO(0x0070),

		/*
		 * Element Number of Content Label.
		 */
		CONTENT_LABEL_ELEMENT_NO(0x0080),

		/*
		 * Group Number of Content Description.
		 */
		CONTENT_DESCRIPTION_GROUP_NO(0x0070),

		/*
		 * Element Number of Content Description.
		 */
		CONTENT_DESCRIPTION_ELEMENT_NO(0x0081),

		/*
		 * Group Number of Presentation Creation Date.
		 */
		PRESENTATION_CREATION_DATE_GROUP_NO(0x0070),

		/*
		 * Element Number of Presentation Creation Date.
		 */
		PRESENTATION_CREATION_DATE_ELEMENT_NO(0x0082),

		/*
		 * Group Number of Presentation Creation Time.
		 */
		PRESENTATION_CREATION_TIME_GROUP_NO(0x0070),

		/*
		 * Element Number of Presentation Creation Time.
		 */
		PRESENTATION_CREATION_TIME_ELEMENT_NO(0x0083),

		/*
		 * Group Number of Content Creator Name.
		 */
		CONTENT_CREATOR_NAME_GROUP_NO(0x0070),

		/*
		 * Element Number of Content Creator Name.
		 */
		CONTENT_CREATOR_NAME_ELEMENT_NO(0x0084);

		public int iValue;

		EnumPresentationKeys(int iValue)
		{
			this.iValue = iValue;
		}

		/*
		 * This function gets the int value of EnumPresentationKeys.
		 * @return int - value of Presentation Keys.
		 */
		public int getValue()
		{
			return iValue;
		}
	}

	/*
	 * This class represents keys for Directory Record Raw Data.
	 * They are used to reference a Raw Data SOP Instance.
	 * This enum contains Group Number and Element Number of Record keys for Directory Record  Raw Data.
	 */
	enum EnumRawDataKeys 
	{
		/*
		 * Group Number of Content Date.
		 */
		CONTENT_DATE_GROUP_NO(0x0008),

		/*
		 * Element Number of Content Date.
		 */
		CONTENT_DATE_ELEMENT_NO(0x0023),

		/*
		 * Group Number of Content Time.
		 */
		CONTENT_TIME_GROUP_NO(0x0008),

		/*
		 * Element Number of Content Time.
		 */
		CONTENT_TIME_ELEMENT_NO(0x0033),

		/*
		 * Group Number of Instance Number.
		 */
		INSTANCE_NUMBER_GROUP_NO(0x0020),

		/*
		 * Element Number of Instance Number.
		 */
		INSTANCE_NUMBER_ELEMENT_NO(0x0013);

		public int iValue;

		EnumRawDataKeys(int iValue)
		{
			this.iValue = iValue;
		}

		/*
		 * This function gets the int value of EnumRawDataKeys.
		 * @return int - value of Raw Data Keys.
		 */
		public int getValue()
		{
			return iValue;
		}
	}

	/*
	 * This class represents keys for Directory Record Registration.
	 * They are used to reference a Registration SOP Instance.
	 * This enum contains Group Number and Element Number of Record keys for Directory Record Registration.
	 */
	enum EnumRegistrationKeys 
	{
		/*
		 * Group Number of Content Date.
		 */
		CONTENT_DATE_GROUP_NO(0x0008),

		/*
		 * Element Number of Content Date.
		 */
		CONTENT_DATE_ELEMENT_NO(0x0023),

		/*
		 *  Group Number of Content Time.
		 */
		CONTENT_TIME_GROUP_NO(0x0008),

		/*
		 * Element Number of Content Time.
		 */
		CONTENT_TIME_ELEMENT_NO(0x0033),

		/*
		 *  Group Number of Instance Number.
		 */
		INSTANCE_NUMBER_GROUP_NO(0x0020),

		/*
		 * Element Number of Instance Number.
		 */
		INSTANCE_NUMBER_ELEMENT_NO(0x0013),

		/*
		 *  Group Number of Content Label.
		 */
		CONTENT_LABEL_GROUP_NO(0x0070),

		/*
		 * Element Number of Content Label.
		 */
		CONTENT_LABEL_ELEMENT_NO(0x0080),

		/*
		 *  Group Number of Content Description.
		 */
		CONTENT_DESCRIPTION_GROUP_NO(0x0070),

		/*
		 * Element Number of Content Description.
		 */
		CONTENT_DESCRIPTION_ELEMENT_NO(0x0081),

		/*
		 *  Group Number of Content Creator Name.
		 */
		CONTENT_CREATOR_NAME_GROUP_NO(0x0070),

		/*
		 * Element Number of Content Creator Name.
		 */
		CONTENT_CREATOR_NAME_ELEMENT_NO(0x0084);

		public int iValue;

		EnumRegistrationKeys(int iValue)
		{
			this.iValue = iValue;
		}

		/*
		 * This function gets the int value of EnumRegistrationKeys.
		 * @return int - value of Registration Keys.
		 */
		public int getValue()
		{
			return iValue;
		}
	}

	/*
	 * This class represents keys for Directory Record Result.
	 * They are used to reference a Result SOP Instance.
	 * This enum contains Group Number and Element Number of Record keys for Directory Record Result.
	 */
	enum EnumResultKey 
	{
		/*
		 * Group Number of Result ID.
		 */
		RESULT_ID_GROUP_NO(0x4008),

		/*
		 * Element Number of Result ID.
		 */
		RESULT_ID_ELMENT_NO(0x0040),

		/*
		 * Group Number of Instance Creation Date.
		 */
		INSTANCE_CREATIONDATE_GROUP_NO(0x0008),

		/*
		 * Element Number of Instance Creation Date .
		 */
		INSTANCE_CREATIONDATE_ELMENT_NO(0x0012);

		public int iValue;

		EnumResultKey(int iValue)
		{
			this.iValue = iValue;
		}

		/*
		 * This function gets the int value of EnumResultKey.
		 * @return int - value of Result Keys.
		 */
		public int getValue()
		{
			return iValue;
		}
	}

	/*
	 * This class represents keys for Directory Record RT dose.
	 * They are used to reference a RT Dose SOP Instance.
	 * This enum contains Group Number and Element Number of Record keys for Directory Record RT Dose .
	 */
	enum EnumRTDoseKeys
	{
		/*
		 * Group Number of Instance Number.
		 */
		INSTANCE_NUMBER_GROUP_NO(0x0020),

		/*
		 * Instance Number of Instance Number.
		 */
		INSTANCE_NUMBER_ELEMENT_NO(0x0013),

		/*
		 * Group Number of Dose Summation Type.
		 */
		DOSE_SUMMATION_TYPE_GROUP_NO(0x3004),

		/*
		 * Instance Number of Dose Summation Type.
		 */
		DOSE_SUMMATION_TYPE_ELEMENT_NO(0x000A);

		public int iValue;

		EnumRTDoseKeys(int iValue)
		{
			this.iValue = iValue;
		}

		/*
		 * This function gets the int value of EnumRTDoseKeys.
		 * @return int - value of RT Dose Keys.
		 */
		public int getValue()
		{
			return iValue;
		}
	}

	/*
	 * This class represents keys for Directory Record RT Plan.
	 * They are used to reference a RT Plan SOP Instance.
	 * This enum contains Group Number and Element Number of Record keys for Directory Record RT Plan.
	 */
	enum EnumRTPlanKeys
	{
		/*
		 * Group Number of Instance Number.
		 */
		INTANCE_NUMBER_GROUP_NO(0x0020),

		/*
		 * Element Number of Instance Number.
		 */
		INTANCE_NUMBER_ELEMENT_NO(0x0013),

		/*
		 * Group Number of RT Plan Label.
		 */
		RT_PLAN_LABEL_GROUP_NO(0x300A),

		/*
		 * Element Number of RT Plan Label.
		 */
		RT_PLAN_LABEL_ELEMENT_NO(0x0002),

		/*
		 * Group Number of  RT Plan Data.
		 */
		RT_PLAN_DATA_GROUP_NO(0x300A),

		/*
		 * Element Number of RT Plan Data.
		 */
		RT_PLAN_DATA_ELEMENT_NO(0x0006),

		/*
		 * Group Number of  RT Plan Time.
		 */
		RT_PLAN_TIME_GROUP_NO(0x300A),

		/*
		 * Element Number of RT Plan Time.
		 */
		RT_PLAN_TIME_ELEMENT_NO(0x0007);

		public int iValue;

		EnumRTPlanKeys(int iValue)
		{
			this.iValue = iValue;
		}

		/*
		 * This function gets the int value of EnumRTPlanKeys.
		 * @return int - value of RT Plan Keys.
		 */
		public int getValue()
		{
			return iValue;
		}
	}

	/*
	 * This class represents keys for Directory Record RT Structure Set.
	 * They are used to reference a RT Structure Set SOP Instance.
	 * This enum contains Group Number and Element Number of Record keys for Directory Record RT Structure Set.
	 */
	enum EnumRTStructureSetKeys 
	{
		/*
		 * Group Number of Instance Number.
		 */
		INSTANCE_NUMBER_GROUP_NO(0x0020),

		/*
		 * Element Number of Instance Number.
		 */
		INSTANCE_NUMBER_ELEMENT_NO(0x0013),

		/*
		 * Group Number of Structure Set Label.
		 */
		STRUCTURE_SET_LABEL_GROUP_NO(0x3006),

		/*
		 * Element Number of Structure Set Label.
		 */
		STRUCTURE_SET_LABEL_ELEMENT_NO(0x0002),

		/*
		 * Group Number of  Structure Set Date.
		 */
		STRUCTURE_SET_DATE_GROUP_NO(0x3006),

		/*
		 * Element Number of Structure Set Date.
		 */
		STRUCTURE_SET_DATE_ELEMENT_NO(0x0008),

		/*
		 * Group Number of Structure Set Time.
		 */
		STRUCTURE_SET_TIME_GROUP_NO(0x3006),

		/*
		 * Element Number of Structure Set Time.
		 */
		STRUCTURE_SET_TIME_ELEMENT_NO(0x0009);

		public int iValue;

		EnumRTStructureSetKeys(int iValue)
		{
			this.iValue = iValue;
		}

		/*
		 *  This function gets the int value of EnumRTStructureSetKeys.
		 * @return int - value of RT Structure Set Keys.
		 */
		public int getValue()
		{
			return iValue;
		}
	}

	/*
	 * This class represents keys for Directory Record RT Treatment Record.
	 * They are used to reference a RT Treatment Record SOP Instance.
	 * This enum contains Group Number and Element Number of Record keys for Directory Record RT Treatment Record.
	 */
	enum EnumRTTreatmentRecordKeys
	{
		/*
		 * Group Number of Instance Number.
		 */
		INSTANCE_NUMBER_GROUP_NO(0x0020),

		/*
		 * Element Number of Instance Number.
		 */
		INSTANCE_NUMBER_ELEMENT_NO(0x0013),

		/*
		 * Group Number of Treatment Date.
		 */
		TREATMENT_DATE_GROUP_NO(0x3008),

		/*
		 * Element Number of Treatment Date.
		 */
		TREATMENT_DATE_ELEMENT_NO(0x0250),

		/*
		 * Group Number of Treatment Time.
		 */
		TREATMENT_TIME_GROUP_NO(0x3008),

		/*
		 * Element Number of Treatment Time.
		 */
		TREATMENT_TIME_ELEMENT_NO(0x0251);

		public int iValue;

		EnumRTTreatmentRecordKeys(int iValue)
		{
			this.iValue = iValue;
		}

		/*
		 * This function gets the int value of EnumRTTreatmentRecordKeys.
		 * @return int - value of RT Treatment Record Keys.
		 */
		public int getValue()
		{
			return iValue;
		}
	}

	/*
	 * This class represents keys for Directory Record Series.
	 * They are used to reference a Series SOP Instance.
	 * This enum contains Group Number and Element Number of Record keys for Directory Record Series.
	 */
	enum EnumSeriesKeys
	{
		/*
		 * Group Number of Modality.
		 */
		MODALITY_GROUP_NO(0x0008),

		/*
		 * Element Number of Modality.
		 */
		MODALITY_ELEMENT_NO(0x0060),

		/*
		 * Group Number of Series Instance UID.
		 */
		SERIES_INSTANCE_UID_GROUP_NO(0x0020),

		/*
		 * Element Number of Series Instance UID.
		 */
		SERIES_INSTANCE_UID_ELEMENT_NO(0x000E),

		/*
		 * Group Number of Series Number.
		 */
		SERIES_NUMBER_GROUP_NO(0x0020),

		/*
		 * Element Number of Series Number.
		 */
		SERIES_NUMBER_ELEMENT_NO(0x0011);

		public int iValue;

		EnumSeriesKeys(int iValue)
		{
			this.iValue = iValue;
		}

		/*
		 * This function gets the int value of EnumSeriesKeys.
		 * @return int - value of Series Keys.
		 */
		public int getValue()
		{
			return iValue;
		}
	}

	/*
	 * This class represents keys for Directory Record Spectroscopy.
	 * They are used to reference a Spectroscopy SOP Instance.
	 * This enum contains Group Number and Element Number of Record keys for Directory Record Spectroscopy.
	 */
	enum EnumSpectroscopyKeys
	{
		//There are two sequence, their names are "Referenced Image Evidence Sequence" and "Icon Image Sequence".

		/*
		 * Group Number of Image Type.
		 */
		IMAGE_TYPE_GROUP_NO(0x0008),

		/*
		 * Element Number of Image Type.
		 */
		IMAGE_TYPE_ELEMENT_NO(0x0008),

		/*
		 * Group Number of Content Date.
		 */
		CONTENT_DATE_GROUP_NO(0x0008),

		/*
		 * Element Number of Content Date.
		 */
		CONTENT_DATE_ELEMENT_NO(0x0023),

		/*
		 * Group Number of Content Time.
		 */
		CONTENT_TIME_GROUP_NO(0x0008),

		/*
		 * Element Number of Content Time.
		 */
		CONTENT_TIME_ELEMENT_NO(0x0033),

		/*
		 * Group Number of Instance Number.
		 */
		INSTANCE_NUMBER_GROUP_NO(0x0020),

		/*
		 * Element Number of Instance Number.
		 */
		INSTANCE_NUMBER_ELEMENT_NO(0x0013),

		/*
		 * Group Number of Number of Frames.
		 */
		NUMBER_OF_FRAMES_GROUP_NO(0x0028),

		/*
		 * Element Number of Number of Frames.
		 */
		NUMBER_OF_FRAMES_ELEMENT_NO(0x0008),

		/*
		 * Group Number of Rows.
		 */
		ROWS_GROUP_NO(0x0028),

		/*
		 * Element Number of Rows.
		 */
		ROWS_ELEMENT_NO(0x0010),

		/*
		 * Group Number of Columns
		 */
		COLUMNS_GROUP_NO(0x0028),

		/*
		 * Element Number of Columns.
		 */
		COLUMNS_ELEMENT_NO(0x0011),

		/*
		 * Group Number of Data Point Rows.
		 */
		DATA_POINT_ROWS_GROUP_NO(0x0028),

		/*
		 * Element Number of Data Point Rows.
		 */
		DATA_POINT_ROWS_ELEMENT_NO(0x9001),

		/*
		 * Group Number of Data Point Columns.
		 */
		DATA_POINT_COLUMNS_GROUP_NO(0x0028),

		/*
		 * Element Number of Data Point Columns.
		 */
		DATA_POINT_COLUMNS_ELEMENT_NO(0x9002);

		public int iValue;

		EnumSpectroscopyKeys(int iValue)
		{
			this.iValue = iValue;
		}

		/*
		 * This function gets the int value of EnumSpectroscopyKeys.
		 * @return int - value of Spectroscopy Keys.
		 */
		public int getValue()
		{
			return iValue;
		}
	}

	/*
	 * This class represents keys for Directory Record SR Document.
	 * They are used to reference a SR Document SOP Instance.
	 * This enum contains Group Number and Element Number of Record keys for Directory Record SR Document.
	 */
	enum EnumSRDocumentKeys
	{
//		This class contain two sequences name as "Concept Name Code Sequence" and "Content Sequence".

		/*
		 * Group Number of Instance Number.
		 */
		INSTANCE_NO_GROUP_NO(0x0020),

		/*
		 * Element Number of Instance Number.
		 */
		INSTANCE_NO_ELEMENT_NO(0x0013),

		/*
		 * Group Number of Completion Flag.
		 */
		COMPLETION_FLAG_GROUP_NO(0x0040),

		/*
		 * Element Number of Completion Flag.
		 */
		COMPLETION_FLAG_ELEMENT_NO(0xA491),

		/*
		 * Group Number of Verification Flag.
		 */
		VERIFICATION_FLAG_GROUP_NO(0x0040),

		/*
		 * Element Number of Verification Flag.
		 */
		VERIFICATION_FLAG_ELEMENT_NO(0xA493),

		/*
		 * Group Number of Content Date.
		 */
		CONTENT_DATE_GROUP_NO(0x0008),

		/*
		 * Element Number of Content Date.
		 */
		CONTENT_DATE_ELEMENT_NO(0x0023),

		/*
		 * Group Number of Content Time.
		 */
		CONTENT_TIME_GROUP_NO(0x0008),

		/*
		 * Element Number of Content Time.
		 */
		CONTENT_TIME_ELEMENT_NO(0x0033);

		public int iValue;

		EnumSRDocumentKeys(int iValue)
		{
			this.iValue = iValue;
		}

		/*
		 * This function gets the int value of EnumSRDocumentKeys.
		 * @return int - value of SR Document Keys.
		 */
		public int getValue()
		{
			return iValue;
		}
	}

	/*
	 * This class represents keys for Directory Record Stored Print.
	 * They are used to reference a Stored Print SOP Instance.
	 * This enum contains Group Number and Element Number of Record keys for Directory Record Stored Print.
	 */
	enum EnumStoredPrintKeys
	{
		/*
		 * Group Number of Instance Number.
		 */
		INSTANCE_NUMBER_GROUP_NO(0x0020),

		/*
		 * Element Number of Instance Number.
		 */
		INSTANCE_NUMBER_ELEMENT_NO(0x0013);

		public int iValue;

		EnumStoredPrintKeys(int iValue)
		{
			this.iValue = iValue;
		}

		/*
		 * This function gets the int value of EnumStoredPrintKeys.
		 * @return int - value of Stored Print Keys.
		 */
		public int getValue()
		{
			return iValue;
		}
	}

	/*
	 * This class represents keys for Directory Record Study Component.
	 * They are used to reference a Study Component SOP Instance.
	 * This enum contains Group Number and Element Number of Record keys for Directory Record Study Component.
	 */
	enum EnumStudyComponentKeys
	{
		//This class contain one sequence name as "ProcedureCodeSequence".

		/*
		 * Group Number of Modality.
		 */
		MODALITY_GROUP_NO(0x0008),

		/*
		 * Element Number of Modality.
		 */
		MODALITY_ELEMENT_NO(0x0060),

		/*
		 * Group Number of Study Description.
		 */
		STUDY_DESCRIPTION_GROUP_NO(0x0008),

		/*
		 * Element Number of Study Description.
		 */
		STUDY_DESCRIPTION_ELEMENT_NO(0x1030),

		/*
		 * Group Number of Performing Physician Name.
		 */
		PERFORMING_PHYSICIAN_NAME_GROUP_NO(0x0008),

		/*
		 * Element Number of Performing Physician Name.
		 */
		PERFORMING_PHYSICIAN_NAME_ELEMENT_NO(0x1050);

		public int iValue;

		EnumStudyComponentKeys(int iValue)
		{
			this.iValue = iValue;
		}

		/*
		 * This function gets the int value of EnumStudyComponentKeys.
		 * @return int - value of Study Component Keys.
		 */
		public int getValue()
		{
			return iValue;
		}
	}

	/*
	 * This class represents keys for Directory Record Study.
	 * They are used to reference a Study SOP Instance.
	 * This enum contains Group Number and Element Number of Record keys for Directory Record Study.
	 */
	enum EnumStudyKeys
	{
		/*
		 * Group Number of Study Date.
		 */
		STUDY_DATE_GROUP_NO(0x0008),

		/*
		 * Element Number of Study Date.
		 */
		STUDY_DATE_ELEMENT_NO(0x0020),

		/*
		 * Group Number of Study Description.
		 */
		STUDY_DESCRIPTION_GROUP_NO(0x0008),

		/*
		 * Element Number of Study Description.
		 */
		STUDY_DESCRIPTION_ELEMENT_NO(0x1030),

		/*
		 * Group Number of Study Time.
		 */
		STUDY_TIME_GROUP_NO(0x0008),

		/*
		 * Element Number of Study Time.
		 */
		STUDY_TIME_ELEMENT_NO(0x0030),

		/*
		 * Group Number of Study Instance UID.
		 */
		STUDY_INSTANCE_UID_GROUP_NO(0x0020),

		/*
		 * Element Number of Study Instance UID.
		 */
		STUDY_INSTANCE_UID_ELEMENT_NO(0x000D),

		/*
		 * Group Number of Study ID.
		 */
		STUDY_ID_GROUP_NO(0x0020),

		/*
		 * Element Number of  Study ID.
		 */
		STUDY_ID_ELEMENT_NO(0x0010),

		/*
		 * Group Number of Accession Number.
		 */
		ACCESSION_NUMBER_GROUP_NO(0x0008),

		/*
		 * Element Number of Accession Number.
		 */
		ACCESSION_NUMBER_ELEMENT_NO(0x0050);

		public int iValue;

		EnumStudyKeys(int iValue)
		{
			this.iValue = iValue;
		}

		/*
		 * This function gets the int value of EnumStudyKeys.
		 * @return int - value of Study Keys.
		 */
		public int getValue()
		{
			return iValue;
		}
	}

	/*
	 * This class represents keys for Directory Record Topic.
	 * They are used to reference a Topic SOP Instance.
	 * This enum contains Group Number and Element Number of Record keys for Directory Record Topic.
	 */
	enum EnumTopicKeys
	{
		/*
		 * Group Number of Topic Title
		 */
		TOPIC_TITLE_GROUP_NO(0x0088),

		/*
		 * Element Number of Topic Title.
		 */
		TOPIC_TITLE_ELEMENT_NO(0x0904),

		/*
		 * Group Number of Topic Subject.
		 */
		TOPIC_SUBJECT_GROUP_NO(0x0088),

		/*
		 * Element Number of Topic Subject.
		 */
		TOPIC_SUBJECT_ELEMENT_NO(0x0906),

		/*
		 * Group Number of Topic Author.
		 */
		TOPIC_AUTHOR_GROUP_NO(0x0088),

		/*
		 * Element Number of Topic Author.
		 */
		TOPIC_AUTHOR_ELEMENT_NO(0x0910),

		/*
		 * Group Number of Topic Key Words.
		 */
		TOPIC_KEY_WORDS_GROUP_NO(0x0088),

		/*
		 * Element Number of Topic Key Words.
		 */
		TOPIC_KEY_WORDS_ELEMENT_NO(0x0912);

		public int iValue;

		EnumTopicKeys(int iValue)
		{
			this.iValue = iValue;
		}

		/*
		 * Returns the int value of this enum.
		 * @return int return integer value of EnumTopicKeys.
		 */
		public int getValue()
		{
			return iValue;
		}
	}

	/*
	 * This class represents keys for Directory Record Visit.
	 * They are used to reference a Visit SOP Instance.
	 * This enum contains Group Number and Element Number of Record keys for Directory Record Visit.
	 */
	enum EnumVisitKeys
	{
		/*
		 * Group Number of  Admitting Date.
		 */
		ADMITTING_DATE_GROUP_NO(0x0038),

		/*
		 * Element Number of Admitting Date.
		 */
		ADMITTING_DATE_ELEMENT_NO(0x0020),

		/*
		 * Group Number of Admission ID.
		 */
		ADMISSION_ID_GROUP_NO(0x0038),

		/*
		 * Element Number of Admission ID.
		 */
		ADMISSION_ID_ELEMENT_NO(0x0010),

		/*
		 * Group Number of  Institution Name.
		 */
		INSTITUTION_NAME_GROUP_NO(0x0008),

		/*
		 * Element Number of Institution Name.
		 */
		INSTITUTION_NAME_ELEMENT_NO(0x0080);

		public int iValue;

		EnumVisitKeys(int iValue)
		{
			this.iValue = iValue;
		}

		/*
		 * This function gets the int value of EnumVisitKeys.
		 * @return int - value of Visit Keys.
		 */
		public int getValue()
		{
			return iValue;
		}
	}

	/*
	 * This class represents keys for Directory Record VOI LUT.
	 * They are used to reference a VOI LUT SOP Instance.
	 * This enum contains Group Number and Element Number of Record keys for Directory Record VOI LUT.
	 */
	enum EnumVOILUTKeys
	{
		/*
		 * Group Number of Lookup Table Number.
		 */
		LOOKUP_TABLE_NUMBER_GROUP_NO(0x0020),

		/*
		 * Element Number of Lookup Table Number.
		 */
		LOOKUP_TABLE_NUMBER_ELEMENT_NO(0x0026);

		public int iValue;

		EnumVOILUTKeys(int iValue)
		{
			this.iValue = iValue;
		}

		/*
		 * This function gets the int value of EnumVOILUTKeys.
		 * @return int - value of  VOI LUT Keys.
		 */
		public int getValue()
		{
			return iValue;
		}
	}

	/*
	 * This class represents keys for Directory Record Waveform.
	 * They are used to reference a Waveform SOP Instance.
	 * This enum contains Group Number and Element Number of Record keys for Directory Record Waveform.
	 */
	enum EnumWaveformKeys 
	{
		/*
		 * Group Number of Instance Number.
		 */
		INSTANCE_NUMBER_GROUP_NO(0x0020),

		/*
		 * Element Number of Instance Number.
		 */
		INSTANCE_NUMBER_ELEMENT_NO(0x0013),

		/*
		 * Group Number of Content Date.
		 */
		CONTENT_DATE_GROUP_NO(0x0008),

		/*
		 * Element Number of Content Date.
		 */
		CONTENT_DATE_ELEMENT_NO(0x0023),

		/*
		 * Group Number of Content Time.
		 */
		CONTENT_TIME_GROUP_NO(0x0008),

		/*
		 * Element Number of Content Time.
		 */
		CONTENT_TIME_ELEMENT_NO(0x0033);

		public int iValue;

		EnumWaveformKeys(int iValue)
		{
			this.iValue = iValue;
		}

		/*
		 * This function gets the int value of EnumWaveformKeys.
		 * @return int - value of Waveform Keys.
		 */
		public int getValue()
		{
			return iValue;
		}
	}
}
