/*******************************************************************************
 *  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.printmanagement.testcases.scu;

import cdac.medinfo.sdk.dcm30_04.baselibs.BasicColorImageSequence;
import cdac.medinfo.sdk.dcm30_04.baselibs.BasicColorImageSequenceItem;
import cdac.medinfo.sdk.dcm30_04.baselibs.BasicGrayscaleImageSequence;
import cdac.medinfo.sdk.dcm30_04.baselibs.BasicGrayscaleImageSequenceItem;
import cdac.medinfo.sdk.dcm30_04.baselibs.DataSet;
import cdac.medinfo.sdk.dcm30_04.baselibs.DicomV3Factory;
import cdac.medinfo.sdk.dcm30_04.baselibs.ImplicitDE;
import cdac.medinfo.sdk.dcm30_04.baselibs.PresentationLUTSequence;
import cdac.medinfo.sdk.dcm30_04.baselibs.PresentationLUTSequenceItem;
import cdac.medinfo.sdk.dcm30_04.baselibs.ProposedStudySequence;
import cdac.medinfo.sdk.dcm30_04.baselibs.ProposedStudySequenceItem;
import cdac.medinfo.sdk.dcm30_04.baselibs.ReferencedImageBoxSequence;
import cdac.medinfo.sdk.dcm30_04.baselibs.ReferencedStoredPrintSequence;
import cdac.medinfo.sdk.dcm30_04.baselibs.ReferencedStoredPrintSequenceItem;
import cdac.medinfo.sdk.dcm30_04.baselibs.SOPInstanceReferenceMacroDependentItem;
import cdac.medinfo.sdk.dcm30_04.commoninterface.IDataElement;
import cdac.medinfo.sdk.dcm30_04.commoninterface.IDataSet;
import cdac.medinfo.sdk.dcm30_04.dicommodel.basicannotationbox.BasicAnnotationBoxIOD;
import cdac.medinfo.sdk.dcm30_04.dicommodel.basicfilmbox.BasicFilmBoxIOD;
import cdac.medinfo.sdk.dcm30_04.dicommodel.basicfilmsession.BasicFilmSessionIOD;
import cdac.medinfo.sdk.dcm30_04.dicommodel.modules.BasicAnnotationPresentationModule;
import cdac.medinfo.sdk.dcm30_04.dicommodel.modules.BasicFilmBoxPresentationModule;
import cdac.medinfo.sdk.dcm30_04.dicommodel.modules.BasicFilmSessionPresentationModule;
import cdac.medinfo.sdk.dcm30_04.dicommodel.modules.BasicFilmSessionRelationshipModule;
import cdac.medinfo.sdk.dcm30_04.dicommodel.modules.PresentationLUTModule;
import cdac.medinfo.sdk.dcm30_04.dicommodel.modules.PrintRequestModule;
import cdac.medinfo.sdk.dcm30_04.dicommodel.presentationlut.PresentationLUTIOD;
import cdac.medinfo.sdk.dcm30_04.dicommodel.print.PullPrintRequestIOD;
import cdac.medinfo.sdk.dcm30_04.enums.EnumAnnotationFlag;
import cdac.medinfo.sdk.dcm30_04.enums.EnumBitsAllocated;
import cdac.medinfo.sdk.dcm30_04.enums.EnumBitsStored;
import cdac.medinfo.sdk.dcm30_04.enums.EnumBorderDensity;
import cdac.medinfo.sdk.dcm30_04.enums.EnumCollationFlag;
import cdac.medinfo.sdk.dcm30_04.enums.EnumColorImagePrintingFlag;
import cdac.medinfo.sdk.dcm30_04.enums.EnumConfigurationInformation;
import cdac.medinfo.sdk.dcm30_04.enums.EnumEmptyImageDensity;
import cdac.medinfo.sdk.dcm30_04.enums.EnumFilmDestination;
import cdac.medinfo.sdk.dcm30_04.enums.EnumFilmOrientation;
import cdac.medinfo.sdk.dcm30_04.enums.EnumFilmSizeID;
import cdac.medinfo.sdk.dcm30_04.enums.EnumHighBit;
import cdac.medinfo.sdk.dcm30_04.enums.EnumImageBoxPresentationLUTFlag;
import cdac.medinfo.sdk.dcm30_04.enums.EnumImageDisplayFormat;
import cdac.medinfo.sdk.dcm30_04.enums.EnumImageOverlayFlag;
import cdac.medinfo.sdk.dcm30_04.enums.EnumMagnificationType;
import cdac.medinfo.sdk.dcm30_04.enums.EnumMediumType;
import cdac.medinfo.sdk.dcm30_04.enums.EnumPatientsSex;
import cdac.medinfo.sdk.dcm30_04.enums.EnumPhotometricInterpretation;
import cdac.medinfo.sdk.dcm30_04.enums.EnumPixelRepresentation;
import cdac.medinfo.sdk.dcm30_04.enums.EnumPlanarConfiguration;
import cdac.medinfo.sdk.dcm30_04.enums.EnumPresentationLUTShape;
import cdac.medinfo.sdk.dcm30_04.enums.EnumPrintPriority;
import cdac.medinfo.sdk.dcm30_04.enums.EnumRequestedResolutionID;
import cdac.medinfo.sdk.dcm30_04.enums.EnumSOPClassUIDs;
import cdac.medinfo.sdk.dcm30_04.enums.EnumTrim;
import cdac.medinfo.sdk.dcm30_04.utils.ISingleCollection;
import cdac.medinfo.sdk.dcm30_04.utils.SingleCollection;

/**
 * This class populates the DataSets required for Print Management Service Class.
 */
class PopulateDataSets 
{
	/*
	 * Get the BasicFilmSessionDataSetForCreate
	 */
	IDataSet getBasicFilmSessionDataSetForCreate()
	{
		IDataSet objIDataSet = new DataSet();
		BasicFilmSessionIOD objBasicFilmSessionIOD = new BasicFilmSessionIOD(objIDataSet);
		BasicFilmSessionPresentationModule objBasicFilmSessionPresentationModule = objBasicFilmSessionIOD.getBasicFilmSessionPresentationModule();
		objBasicFilmSessionPresentationModule.setNumberOfCopies("1");
		objBasicFilmSessionPresentationModule.setPrintPriority(EnumPrintPriority.HIGH);
		objBasicFilmSessionPresentationModule.setMediumType(EnumMediumType.BLUE_FILM);
		objBasicFilmSessionPresentationModule.setFilmDestination(EnumFilmDestination.PROCESSOR);
		objBasicFilmSessionPresentationModule.setOwnerID("1");

		BasicFilmSessionRelationshipModule objBasicFilmSessionRelationshipModule = objBasicFilmSessionIOD.getBasicFilmSessionRelationshipModule();
		ProposedStudySequence objProposedStudySequence = objBasicFilmSessionRelationshipModule.getProposedStudySequence();
		ProposedStudySequenceItem objProposedStudySequenceItem = objProposedStudySequence.getNewItem();
		objProposedStudySequenceItem.setAccessionNumber("1");
		objProposedStudySequenceItem.setAdditionalPatientHistory("No Addition History Of the Patient is Present");
		objProposedStudySequenceItem.setStudyTime("101010");
		objProposedStudySequenceItem.setStudyInstanceUID("1.3.12.2.1107.5.4.3.49");
		objProposedStudySequenceItem.setStudyID("1");
		objProposedStudySequenceItem.setStudyDate("20091010");
		objProposedStudySequenceItem.setStudyDescription("Description");
		objProposedStudySequenceItem.setStudyDate("20091010");
		objProposedStudySequenceItem.setSeriesNumber("1");
		objProposedStudySequenceItem.setReferringPhysicianName("Refering Physician Name");
		objProposedStudySequenceItem.setPatientWeight("20");
		objProposedStudySequenceItem.setPatientSex(EnumPatientsSex.FEMALE);
		objProposedStudySequenceItem.setPatientName("Patient Name");
		objProposedStudySequenceItem.setPatientID("1");
		objProposedStudySequenceItem.setPatientComments("Patient Comments ");
		objProposedStudySequenceItem.setPatientBirthTime("101010");
		objProposedStudySequenceItem.setPatientBirthDate("20091010");
		objProposedStudySequenceItem.setPatientAge("024Y");
		objProposedStudySequenceItem.setOccupation("Occupation");
		objProposedStudySequence.addItem(objProposedStudySequenceItem);
		return objIDataSet;
	}

	/*
	 * Get the BasicFilmSessionDataSetForSet
	 */
	IDataSet getBasicFilmSessionDataSetForSet()
	{
		IDataSet objIDataSet = new DataSet();
		BasicFilmSessionIOD objBasicFilmSessionIOD = new BasicFilmSessionIOD(objIDataSet);
		BasicFilmSessionPresentationModule objBasicFilmSessionPresentationModule = objBasicFilmSessionIOD.getBasicFilmSessionPresentationModule();
		objBasicFilmSessionPresentationModule.setNumberOfCopies("1");
		objBasicFilmSessionPresentationModule.setPrintPriority(EnumPrintPriority.HIGH);
		objBasicFilmSessionPresentationModule.setMediumType(EnumMediumType.BLUE_FILM);
		objBasicFilmSessionPresentationModule.setFilmDestination(EnumFilmDestination.PROCESSOR);

		BasicFilmSessionRelationshipModule objBasicFilmSessionRelationshipModule = objBasicFilmSessionIOD.getBasicFilmSessionRelationshipModule();
		ProposedStudySequence objProposedStudySequence = objBasicFilmSessionRelationshipModule.getProposedStudySequence();
		ProposedStudySequenceItem objProposedStudySequenceItem = objProposedStudySequence.getNewItem();
		objProposedStudySequenceItem.setAccessionNumber("1");
		objProposedStudySequenceItem.setAdditionalPatientHistory("No Addition History Of the Patient is Present");
		objProposedStudySequenceItem.setStudyTime("1010");
		objProposedStudySequenceItem.setStudyInstanceUID("1.3.12.2.1107.5.4.3.49");
		objProposedStudySequenceItem.setStudyID("10");
		objProposedStudySequenceItem.setStudyDate("20091010");
		objProposedStudySequenceItem.setStudyDescription("Modified Study Description");
		objProposedStudySequenceItem.setStudyDate("20091010");
		objProposedStudySequenceItem.setSeriesNumber("18");
		objProposedStudySequenceItem.setReferringPhysicianName("Modified Refering Physician Name");
		objProposedStudySequenceItem.setPatientWeight("20");
		objProposedStudySequenceItem.setPatientSex(EnumPatientsSex.FEMALE);
		objProposedStudySequenceItem.setPatientName("Modified Patient Name");
		objProposedStudySequenceItem.setPatientID("2");
		objProposedStudySequenceItem.setPatientComments("Modified Patient Comments ");
		objProposedStudySequenceItem.setPatientBirthTime("101010");
		objProposedStudySequenceItem.setPatientBirthDate("20091010");
		objProposedStudySequenceItem.setPatientAge("025Y");
		objProposedStudySequenceItem.setOccupation("Occupation");
		objProposedStudySequence.addItem(objProposedStudySequenceItem);
		return objIDataSet;
	}

	/*
	 * Get the BasicFilmBoxDataSetForCreate
	 */
	IDataSet getBasicFilmBoxDataSetForCreate()
	{
		IDataSet objIDataSet = new DataSet();
		BasicFilmBoxIOD objBasicFilmBoxIOD = new BasicFilmBoxIOD(objIDataSet);
		BasicFilmBoxPresentationModule objBasicFilmBoxPresentationModule =objBasicFilmBoxIOD.getBasicFilmBoxPresentationModule();

		objBasicFilmBoxPresentationModule.setImageDisplayFormat(EnumImageDisplayFormat.SLIDE);

		objBasicFilmBoxPresentationModule.setFilmOrientation(EnumFilmOrientation.LANDSCAPE);
		objBasicFilmBoxPresentationModule.setFilmSizeID(EnumFilmSizeID.SIZE_10inX12in);
		objBasicFilmBoxPresentationModule.setMagnificationType(EnumMagnificationType.NONE);
		objBasicFilmBoxPresentationModule.setBorderDensity(EnumBorderDensity.BLACK);
		objBasicFilmBoxPresentationModule.setConfigurationInformation("IMPLEMENTATION_SPECIFIC_CURVE_TYPE");
		objBasicFilmBoxPresentationModule.setAnnotationDisplayFormatID("1");
		objBasicFilmBoxPresentationModule.setMaxDensity((short)0);
		objBasicFilmBoxPresentationModule.setSmoothingType("SMOOTH");
		objBasicFilmBoxPresentationModule.setEmptyImageDensity(EnumEmptyImageDensity.BLACK);
		objBasicFilmBoxPresentationModule.setMinDensity((short)0);
		objBasicFilmBoxPresentationModule.setTrim(EnumTrim.NO);
		objBasicFilmBoxPresentationModule.setIllumination((short)0);
		objBasicFilmBoxPresentationModule.setReflectedAmbientLight((short)0);
		objBasicFilmBoxPresentationModule.setRequestedResolutionID(EnumRequestedResolutionID.STANDARD);

		return objIDataSet;
	}

	/*
	 * Get the BasicFilmBoxDataSetForSet
	 */
	IDataSet getBasicFilmBoxDataSetForSet()
	{
		IDataSet objIDataSet = new DataSet();
		BasicFilmBoxIOD objBasicFilmBoxIOD = new BasicFilmBoxIOD(objIDataSet);
		BasicFilmBoxPresentationModule objBasicFilmBoxPresentationModule =objBasicFilmBoxIOD.getBasicFilmBoxPresentationModule();

		objBasicFilmBoxPresentationModule.setMagnificationType(EnumMagnificationType.NONE);
		objBasicFilmBoxPresentationModule.setMaxDensity((short)1);
		objBasicFilmBoxPresentationModule.setConfigurationInformation("IMPLEMENTATION_SPECIFIC_CURVE_TYPE");

		objBasicFilmBoxPresentationModule.setSmoothingType("SMOOTHING");
		objBasicFilmBoxPresentationModule.setBorderDensity(EnumBorderDensity.BLACK);
		objBasicFilmBoxPresentationModule.setEmptyImageDensity(EnumEmptyImageDensity.BLACK);
		objBasicFilmBoxPresentationModule.setMinDensity((short)0);
		objBasicFilmBoxPresentationModule.setTrim(EnumTrim.NO);
		objBasicFilmBoxPresentationModule.setIllumination((short)0);
		objBasicFilmBoxPresentationModule.setReflectedAmbientLight((short)0);

		return objIDataSet;
	}

	/*
	 * Get the BasicGrayScaleImageBoxDataSetForSet
	 */
	IDataSet getBasicGrayScaleImageBoxDataSetForSet()
	{
		short shVar = 0;
		IDataSet objIDataSet = new DataSet();
		IDataElement objIDataElement = new ImplicitDE(0x2020,0x0010,shVar, objIDataSet.getTransferSyntax(),objIDataSet.getDictionaryReader());
		objIDataSet.addDataElement(objIDataElement);
		objIDataElement = new ImplicitDE(0x2020,0x0020,"NORMAL", objIDataSet.getTransferSyntax(),objIDataSet.getDictionaryReader());
		objIDataSet.addDataElement(objIDataElement);
		objIDataElement = new ImplicitDE(0x2010,0x0060,"REPLICATE", objIDataSet.getTransferSyntax(),objIDataSet.getDictionaryReader());
		objIDataSet.addDataElement(objIDataElement);
		objIDataElement = new ImplicitDE(0x2010,0x0080,"SMOOTHING", objIDataSet.getTransferSyntax(),objIDataSet.getDictionaryReader());
		objIDataSet.addDataElement(objIDataElement);
		objIDataElement = new ImplicitDE(0x2010,0x0120,shVar, objIDataSet.getTransferSyntax(),objIDataSet.getDictionaryReader());
		objIDataSet.addDataElement(objIDataElement);
		objIDataElement = new ImplicitDE(0x2010,0x0130,shVar, objIDataSet.getTransferSyntax(),objIDataSet.getDictionaryReader());
		objIDataSet.addDataElement(objIDataElement);
		objIDataElement = new ImplicitDE(0x2010,0x0150,"IMPLEMENTATION_SPECIFIC_CURVE_TYPE", objIDataSet.getTransferSyntax(),objIDataSet.getDictionaryReader());
		objIDataSet.addDataElement(objIDataElement);
		objIDataElement = new ImplicitDE(0x2020,0x0030,"3", objIDataSet.getTransferSyntax(),objIDataSet.getDictionaryReader());
		objIDataSet.addDataElement(objIDataElement);
		objIDataElement = new ImplicitDE(0x2020,0x0040,"DECIMATED", objIDataSet.getTransferSyntax(),objIDataSet.getDictionaryReader());
		objIDataSet.addDataElement(objIDataElement);

		BasicGrayscaleImageSequence objBasicGrayscaleImageSequence = (BasicGrayscaleImageSequence)DicomV3Factory.createInstance().createSequence(0x2020,0x0110, objIDataSet.getTransferSyntax());
		BasicGrayscaleImageSequenceItem objBasicGrayscaleImageSequenceItem = objBasicGrayscaleImageSequence.getNewItem();
		objBasicGrayscaleImageSequenceItem.setBitsAllocated(EnumBitsAllocated.EIGHT);
		objBasicGrayscaleImageSequenceItem.setBitsStored(EnumBitsStored.ELEVEN);
		objBasicGrayscaleImageSequenceItem.setSamplesPerPixel((short)1);
		objBasicGrayscaleImageSequenceItem.setPhotometricInterpretation(EnumPhotometricInterpretation.RGB);
		objBasicGrayscaleImageSequenceItem.setRows((short)20);
		objBasicGrayscaleImageSequenceItem.setColumns((short)20);
		objBasicGrayscaleImageSequenceItem.setHighBit(EnumHighBit.EIGHT);
		objBasicGrayscaleImageSequenceItem.setPixelRepresentation(EnumPixelRepresentation.ONE);
		byte[] objByte = new byte[10];
		ISingleCollection<byte[]> objSingleCollection = new SingleCollection<byte[]>();
		objSingleCollection.add(objByte);
		objBasicGrayscaleImageSequenceItem.setPixelData(objSingleCollection);
		objBasicGrayscaleImageSequence.addItem(objBasicGrayscaleImageSequenceItem);
		objIDataElement = new ImplicitDE(0x2020,0x0110,objBasicGrayscaleImageSequence, objIDataSet.getTransferSyntax(),objIDataSet.getDictionaryReader());
		objIDataSet.addDataElement(objIDataElement);
		return objIDataSet;
	}

	/*
	 * Get the BasicColorImageBoxDataSetForSet
	 */
	IDataSet getBasicColorImageBoxDataSetForSet()
	{
		short shVar = 0;
		IDataSet objIDataSet = new DataSet();
		IDataElement objIDataElement = new ImplicitDE(0x2020,0x0010,shVar, objIDataSet.getTransferSyntax(),objIDataSet.getDictionaryReader());
		objIDataSet.addDataElement(objIDataElement);
		objIDataElement = new ImplicitDE(0x2020,0x0020,"BasicColor Polarity", objIDataSet.getTransferSyntax(),objIDataSet.getDictionaryReader());
		objIDataSet.addDataElement(objIDataElement);
		objIDataElement = new ImplicitDE(0x2010,0x0060,"BasicColor Magnification Type", objIDataSet.getTransferSyntax(),objIDataSet.getDictionaryReader());
		objIDataSet.addDataElement(objIDataElement);
		objIDataElement = new ImplicitDE(0x2010,0x0080,"BasicColor Smoothing Type", objIDataSet.getTransferSyntax(),objIDataSet.getDictionaryReader());
		objIDataSet.addDataElement(objIDataElement);
		objIDataElement = new ImplicitDE(0x2020,0x0030,"BasicColor Requested Image Size", objIDataSet.getTransferSyntax(),objIDataSet.getDictionaryReader());
		objIDataSet.addDataElement(objIDataElement);
		objIDataElement = new ImplicitDE(0x2020,0x0040,"BasicColor Requested Decimated Behaviour", objIDataSet.getTransferSyntax(),objIDataSet.getDictionaryReader());
		objIDataSet.addDataElement(objIDataElement);


		ReferencedImageBoxSequence objReferencedImageBoxSequence = (ReferencedImageBoxSequence)DicomV3Factory.createInstance().createSequence(0x2020, 0x0130,objIDataSet.getTransferSyntax(),objIDataSet.getDictionaryReader());
		SOPInstanceReferenceMacroDependentItem objReferencedSequenceDependentItem = objReferencedImageBoxSequence.getNewItem();
		objReferencedSequenceDependentItem.getSOPInstanceReferenceMacro().setReferencedSOPClassUID(EnumSOPClassUIDs.BASICPRINTIMAGEOVERLAYBOXIOD.getValue());
		objReferencedSequenceDependentItem.getSOPInstanceReferenceMacro().setReferencedSOPInstanceUID("1.2.840.10008.192.168.8.94.3");
		objReferencedImageBoxSequence.addItem(objReferencedSequenceDependentItem);
		objIDataElement = new ImplicitDE(0x2020,0x0130,objReferencedSequenceDependentItem, objIDataSet.getTransferSyntax(),objIDataSet.getDictionaryReader());
		objIDataSet.addDataElement(objIDataElement);

		BasicColorImageSequence objBasicColorImageSequence = (BasicColorImageSequence)DicomV3Factory.createInstance().createSequence(0x2020,0x0111, objIDataSet.getTransferSyntax());
		BasicColorImageSequenceItem objBasicColorImageSequenceItem = objBasicColorImageSequence.getNewItem();
		objBasicColorImageSequenceItem.setBitsAllocated(EnumBitsAllocated.EIGHT);
		objBasicColorImageSequenceItem.setBitsStored(EnumBitsStored.ELEVEN);
		objBasicColorImageSequenceItem.setSamplesPerPixel((short)1);
		objBasicColorImageSequenceItem.setPhotometricInterpretation(EnumPhotometricInterpretation.RGB);
		objBasicColorImageSequenceItem.setPlanarConfiguration(EnumPlanarConfiguration.PLANAR_VALUE_ONE);
		objBasicColorImageSequenceItem.setRows((short)20);
		objBasicColorImageSequenceItem.setColumns((short)20);
		String[] strArr = new String[2];
		strArr[0] = "18";
		strArr[1] = "1";
		objBasicColorImageSequenceItem.setPixelAspectRatio(strArr);
		objBasicColorImageSequenceItem.setHighBit(EnumHighBit.EIGHT);
		objBasicColorImageSequenceItem.setPixelRepresentation(EnumPixelRepresentation.ONE);
		byte[] objByte = new byte[10];
		ISingleCollection<byte[]> objSingleCollection = new SingleCollection<byte[]>();
		objSingleCollection.add(objByte);
		objBasicColorImageSequenceItem.setPixelData(objSingleCollection);
		objBasicColorImageSequence.addItem(objBasicColorImageSequenceItem);
		objIDataElement = new ImplicitDE(0x2020,0x0111,objBasicColorImageSequence, objIDataSet.getTransferSyntax(),objIDataSet.getDictionaryReader());
		objIDataSet.addDataElement(objIDataElement);
		return objIDataSet;
	}

	/*
	 * Get the PresentationLUTDataSetForCreate
	 */
	IDataSet getPresentationLUTDataSetForCreate()
	{
		IDataSet objIDataSet = new DataSet();
		PresentationLUTIOD objPresentationLUTIOD = new PresentationLUTIOD(objIDataSet);

		PresentationLUTModule objPresentationLUTModule = objPresentationLUTIOD.getPresentationLUTModule();

		short[] arrShort = new short[1];
		arrShort[0] = 0;

		PresentationLUTSequence objPresentationLUTSequence = objPresentationLUTModule.getPresentationLUTSequence();
		PresentationLUTSequenceItem objPresentationLUTSequenceItem = objPresentationLUTSequence.getNewItem();
		objPresentationLUTSequenceItem.setLUTDescriptor(arrShort);
		objPresentationLUTSequenceItem.setLUTExplanation("LUT Explanation");
		objPresentationLUTSequenceItem.setLUTData(arrShort);

		objPresentationLUTModule.setPresentationLUTShape(EnumPresentationLUTShape.IDENTITY);

		return objPresentationLUTIOD.getDataSet();
	}

	/*
	 * Get the PullPrintDataSetForCreate
	 */
	IDataSet getPullPrintDataSetForCreate()
	{
		IDataSet objIDataSet = new DataSet();
		PullPrintRequestIOD objPrintRequestIOD = new PullPrintRequestIOD(objIDataSet);
		PrintRequestModule objPrintRequestModule = objPrintRequestIOD.getPrintRequestModule();
		objPrintRequestModule.setAnnotationFlag(EnumAnnotationFlag.PRINT_IMAGES_WITHOUT_ANNOTATION);
		objPrintRequestModule.setNumberOfCopies("1");
		objPrintRequestModule.setPrintPriority(EnumPrintPriority.HIGH);
		objPrintRequestModule.setMediumType(EnumMediumType.CLEAR_FILM);
		objPrintRequestModule.setFilmDestination(EnumFilmDestination.PROCESSOR);
		objPrintRequestModule.setColorImagePrintingFlag(EnumColorImagePrintingFlag.ATTEMPT_TO_PRINT_COLOR_IMAGE_PIXEL_DATA_ON_GRAYSCALE_PRINTER);
		objPrintRequestModule.setImageOverlayFlag(EnumImageOverlayFlag.PRINT_IMAGES_WITHOUT_OVERLAYS);
		objPrintRequestModule.setPresentationLUTFlag(EnumImageOverlayFlag.PRINT_IMAGES_WITHOUT_OVERLAYS);
		objPrintRequestModule.setImageBoxPresentationLUTFlag(EnumImageBoxPresentationLUTFlag.PRINT_IMAGES_WITH_PRESENTATION_LUT_CONTAINED_IN_IMAGE_BOX_CONTENT_SEQUENCE);
		objPrintRequestModule.setConfigurationInformation(EnumConfigurationInformation.IMPLEMENTATION_SPECIFIC_CURVE_TYPE);
		objPrintRequestModule.setFilmSessionLabel("Film Session label");
		objPrintRequestModule.setMemoryAllocation("1204");
		objPrintRequestModule.setCollationFlag(EnumCollationFlag.NO);
		objPrintRequestModule.setIllumination((short)0);
		objPrintRequestModule.setReflectedAmbientLight((short)1);
		objPrintRequestModule.setOwnerID("1");

		ReferencedStoredPrintSequence objReferencedStoredPrintSequence = objPrintRequestModule.getReferencedStoredPrintSequence();
		ReferencedStoredPrintSequenceItem objReferencedStoredPrintSequenceItem = objReferencedStoredPrintSequence.getNewItem();
		String[] arrARTitle = {"SDK","ABC"};
		objReferencedStoredPrintSequenceItem.setRetrieveAETitle(arrARTitle);
		objReferencedStoredPrintSequenceItem.setReferencedSOPClassUID("1.2.840.10008.5.1.1.27");
		objReferencedStoredPrintSequenceItem.setReferencedSOPInstanceUID("1.3.12.2.1107.5.4.3.284980.19951129.170916.543");
		objReferencedStoredPrintSequenceItem.setStudyInstanceUID("1.3.12.2.1107.5.4.3.4975316777216.19951114.94101.16");
		objReferencedStoredPrintSequenceItem.setSeriesInstanceUID("1.3.12.2.1107.5.4.3.4975316777216.19951114.94101.17");
		objReferencedStoredPrintSequenceItem.setPatientID("1");
		objReferencedStoredPrintSequence.addItem(objReferencedStoredPrintSequenceItem);
		return objPrintRequestIOD.getDataSet();
	}

	/*
	 * Get the BasicAnnotationBoxDataSetForSet
	 */
	IDataSet getBasicAnnotationBoxDataSetForSet()
	{
		BasicAnnotationBoxIOD objBasicAnnotationBoxIOD = new BasicAnnotationBoxIOD();
		BasicAnnotationPresentationModule objBasicAnnotationPresentationModule = objBasicAnnotationBoxIOD.getBasicAnnotationPresentationModule();
		objBasicAnnotationPresentationModule.setAnnotationPosition((short)0);
		objBasicAnnotationPresentationModule.setTextString("Annotation Text String");
		return objBasicAnnotationBoxIOD.getDataSet();
	}
}
