示例#1
0
 /// <summary>
 /// Initializes DICOM C-Store request to be sent to SCP.
 /// </summary>
 /// <param name="file">DICOM file to be sent</param>
 /// <param name="priority">Priority of request</param>
 public DicomCStoreRequest(DicomFile file, DicomPriority priority = DicomPriority.Medium) : base(DicomCommandField.CStoreRequest, file.FileMetaInfo.MediaStorageSOPClassUID, priority)
 {
     File                = file;
     Dataset             = file.Dataset;
     AffectedSOPClassUID = File.FileMetaInfo.MediaStorageSOPClassUID;
     SOPInstanceUID      = File.FileMetaInfo.MediaStorageSOPInstanceUID;
 }
示例#2
0
		public DicomCMoveRequest(string destinationAe, string studyInstanceUid, string seriesInstanceUid, DicomPriority priority = DicomPriority.Medium) : base(DicomCommandField.CMoveRequest, DicomUID.StudyRootQueryRetrieveInformationModelMOVE, priority) {
			DestinationAE = destinationAe;
			Dataset = new DicomDataset();
			Level = DicomQueryRetrieveLevel.Series;
			Dataset.Add(DicomTag.StudyInstanceUID, studyInstanceUid);
			Dataset.Add(DicomTag.SeriesInstanceUID, seriesInstanceUid);
		}
示例#3
0
		protected DicomRequest(DicomCommandField type, DicomUID affectedClassUid, DicomPriority priority) : base() {
			Type = type;
			SOPClassUID = affectedClassUid;
			MessageID = GetNextMessageID();
			Priority = priority;
			Dataset = null;
		}
示例#4
0
 public DicomCMoveRequest(string destinationAe, string studyInstanceUid, DicomPriority priority = DicomPriority.Medium) : base(DicomCommandField.CMoveRequest, DicomUID.StudyRootQueryRetrieveInformationModelMOVE, priority)
 {
     DestinationAE = destinationAe;
     Dataset       = new DicomDataset();
     Level         = DicomQueryRetrieveLevel.Study;
     Dataset.Add(DicomTag.StudyInstanceUID, studyInstanceUid);
 }
示例#5
0
 /// <summary>
 /// Initializes DICOM C-Store request to be sent to SCP.
 /// </summary>
 /// <param name="file">DICOM file to be sent</param>
 /// <param name="priority">Priority of request</param>
 public DicomCStoreRequest(DicomFile file, DicomPriority priority = DicomPriority.Medium)
     : base(DicomCommandField.CStoreRequest, file.Dataset.Get <DicomUID>(DicomTag.SOPClassUID), priority)
 {
     File           = file;
     Dataset        = file.Dataset;
     SOPInstanceUID = File.Dataset.Get <DicomUID>(DicomTag.SOPInstanceUID);
 }
示例#6
0
 /// <summary>
 /// Initializes an instance of the <see cref="DicomCFindRequest"/> class.
 /// </summary>
 /// <param name="level">Query&#47;Retrieve level.</param>
 /// <param name="priority">Command priority.</param>
 public DicomCFindRequest(DicomQueryRetrieveLevel level, DicomPriority priority = DicomPriority.Medium)
     : base(DicomCommandField.CFindRequest, GetAffectedSOPClassUID(level), priority)
 {
     // when creating requests, one may be forced to use invalid UIDs. So turn off validation
     Dataset = new DicomDataset().NotValidated();
     Level   = level;
 }
示例#7
0
 /// <summary>
 /// Initializes DICOM C-Store request to be sent to SCP.
 /// </summary>
 /// <param name="file">DICOM file to be sent</param>
 /// <param name="priority">Priority of request</param>
 public DicomCStoreRequest(DicomFile file, DicomPriority priority = DicomPriority.Medium)
     : base(DicomCommandField.CStoreRequest, file.Dataset.Get<DicomUID>(DicomTag.SOPClassUID), priority)
 {
     File = file;
     Dataset = file.Dataset;
     SOPInstanceUID = File.Dataset.Get<DicomUID>(DicomTag.SOPInstanceUID);
 }
示例#8
0
 public DicomNDeleteRequest(
     DicomUID requestedClassUid,
     DicomUID requestedInstanceUid,
     DicomPriority priority = DicomPriority.Medium)
     : base(DicomCommandField.NDeleteRequest, requestedClassUid, priority)
 {
     SOPInstanceUID = requestedInstanceUid;
 }
示例#9
0
 protected DicomRequest(DicomCommandField type, DicomUID affectedClassUid, DicomPriority priority) : base()
 {
     Type = type;
     AffectedSOPClassUID = affectedClassUid;
     MessageID           = GetNextMessageID();
     Priority            = priority;
     Dataset             = null;
 }
示例#10
0
 /// <summary>
 /// Initializes DICOM C-Store request to be sent to SCP.
 /// </summary>
 /// <param name="file">DICOM file to be sent</param>
 /// <param name="priority">Priority of request</param>
 public DicomCStoreRequest(DicomFile file, DicomPriority priority = DicomPriority.Medium)
     : base(DicomCommandField.CStoreRequest, file.FileMetaInfo.MediaStorageSOPClassUID, priority)
 {
     File = file;
     Dataset = file.Dataset;
     AffectedSOPClassUID = File.FileMetaInfo.MediaStorageSOPClassUID;
     SOPInstanceUID = File.FileMetaInfo.MediaStorageSOPInstanceUID;
 }
示例#11
0
 public DicomNGetRequest(
     DicomUID requestedClassUid,
     DicomUID requestedInstanceUid,
     DicomTag[] attributes,
     DicomPriority priority = DicomPriority.Medium)
     : base(DicomCommandField.NGetRequest, requestedClassUid, priority)
 {
     SOPInstanceUID = requestedInstanceUid;
 }
示例#12
0
 /// <summary>
 /// Initializes a new instance of the <see cref="DicomCGetRequest"/> class.
 /// </summary>
 /// <param name="studyInstanceUid">
 /// The Study Instance UID confining the C-GET operation.
 /// </param>
 /// <param name="priority">
 /// The priority of the C-GET operation.
 /// </param>
 public DicomCGetRequest(
     string studyInstanceUid,
     DicomPriority priority = DicomPriority.Medium)
     : base(DicomCommandField.CGetRequest, DicomUID.StudyRootQueryRetrieveInformationModelGET, priority)
 {
     Dataset = new DicomDataset();
     Level = DicomQueryRetrieveLevel.Study;
     Dataset.Add(DicomTag.StudyInstanceUID, studyInstanceUid);
 }
示例#13
0
 public DicomNCreateRequest(
     DicomUID affectedClassUid,
     DicomUID affectedInstanceUid,
     ushort eventTypeId,
     DicomPriority priority = DicomPriority.Medium)
     : base(DicomCommandField.NCreateRequest, affectedClassUid, priority)
 {
     SOPInstanceUID = affectedInstanceUid;
 }
示例#14
0
 /// <summary>
 /// Initializes a new instance of the <see cref="DicomCGetRequest"/> class.
 /// </summary>
 /// <param name="studyInstanceUid">
 /// The Study Instance UID confining the C-GET operation.
 /// </param>
 /// <param name="priority">
 /// The priority of the C-GET operation.
 /// </param>
 public DicomCGetRequest(
     string studyInstanceUid,
     DicomPriority priority = DicomPriority.Medium)
     : base(DicomCommandField.CGetRequest, DicomUID.StudyRootQueryRetrieveInformationModelGET, priority)
 {
     // when creating requests, one may be forced to use invalid UIDs. So turn off validation
     Dataset = new DicomDataset().NotValidated();
     Level   = DicomQueryRetrieveLevel.Study;
     Dataset.Add(DicomTag.StudyInstanceUID, studyInstanceUid);
 }
示例#15
0
        /// <summary>
        /// Initializes DICOM C-Store request to be sent to SCP.
        /// </summary>
        /// <param name="file">DICOM file to be sent</param>
        /// <param name="priority">Priority of request</param>
        public DicomCStoreRequest(DicomFile file, DicomPriority priority = DicomPriority.Medium)
            : base(DicomCommandField.CStoreRequest, file.Dataset.GetSingleValue <DicomUID>(DicomTag.SOPClassUID), priority)
        {
            File    = file;
            Dataset = file.Dataset;

            // for potentially invalid UID values, we have to disable validation
            using var unvalidated = new UnvalidatedScope(Command);
            SOPInstanceUID        = File.Dataset.GetSingleValue <DicomUID>(DicomTag.SOPInstanceUID);
        }
示例#16
0
 public DicomNActionRequest(
     DicomUID requestedClassUid,
     DicomUID requestedInstanceUid,
     ushort actionTypeId,
     DicomPriority priority = DicomPriority.Medium)
     : base(DicomCommandField.NActionRequest, requestedClassUid, priority)
 {
     SOPInstanceUID = requestedInstanceUid;
     ActionTypeID = actionTypeId;
 }
示例#17
0
        /// <summary>
        /// Initializes an instance of the <see cref="DicomCFindRequest"/> class.
        /// </summary>
        /// <param name="affectedSopClassUid">Affected SOP Class UID.</param>
        /// <param name="priority">Command priority.</param>
        public DicomCFindRequest(DicomUID affectedSopClassUid, DicomPriority priority = DicomPriority.Medium)
            : base(DicomCommandField.CFindRequest, affectedSopClassUid, priority)
        {
            if (affectedSopClassUid.Type != DicomUidType.SOPClass)
            {
                throw new DicomNetworkException("Overloaded constructor does not support Affected SOP Class UID: {0}", affectedSopClassUid.Name);
            }

            // when creating requests, one may be forced to use invalid UIDs. So turn off validation
            Dataset = new DicomDataset().NotValidated();
        }
 /// <summary>
 /// Initializes a new instance of the <see cref="DicomCGetRequest"/> class.
 /// </summary>
 /// <param name="studyInstanceUid">
 /// The Study Instance UID confining the C-GET operation.
 /// </param>
 /// <param name="seriesInstanceUid">
 /// The Series Instance UID confining the C-GET operation.
 /// </param>
 /// <param name="priority">
 /// The priority of the C-GET operation.
 /// </param>
 public DicomCGetRequest(
     string studyInstanceUid,
     string seriesInstanceUid,
     DicomPriority priority = DicomPriority.Medium)
     : base(DicomCommandField.CGetRequest, DicomUID.StudyRootQueryRetrieveInformationModelGET, priority)
 {
     Dataset = new DicomDataset();
     Level   = DicomQueryRetrieveLevel.Series;
     Dataset.Add(DicomTag.StudyInstanceUID, studyInstanceUid);
     Dataset.Add(DicomTag.SeriesInstanceUID, seriesInstanceUid);
 }
示例#19
0
        /// <summary>
        /// Initializes an instance of the <see cref="DicomCFindRequest"/> class.
        /// </summary>
        /// <param name="affectedSopClassUid">Affected SOP Class UID.</param>
        /// <param name="priority">Command priority.</param>
        public DicomCFindRequest(DicomUID affectedSopClassUid, DicomPriority priority = DicomPriority.Medium)
            : base(DicomCommandField.CFindRequest, affectedSopClassUid, priority)
        {
            if (!affectedSopClassUid.Equals(DicomUID.ModalityWorklistInformationModelFIND) &&
                !affectedSopClassUid.Equals(DicomUID.UnifiedProcedureStepPullSOPClass) &&
                !affectedSopClassUid.Equals(DicomUID.UnifiedProcedureStepWatchSOPClass))
            {
                throw new DicomNetworkException("Overloaded constructor does not support Affected SOP Class UID: {0}", affectedSopClassUid.Name);
            }

            Dataset = new DicomDataset();
        }
示例#20
0
        /// <summary>
        /// Initializes an instance of the <see cref="DicomCMoveRequest"/> class for a specific image.
        /// </summary>
        /// <param name="destinationAe">Move destination Application Entity Title.</param>
        /// <param name="studyInstanceUid">Study instance UID.</param>
        /// <param name="seriesInstanceUid">Series instance UID.</param>
        /// <param name="sopInstanceUid">SOP instance UID.</param>
        /// <param name="priority">Request priority.</param>
        public DicomCMoveRequest(
            string destinationAe,
            string studyInstanceUid,
            string seriesInstanceUid,
            string sopInstanceUid,
            DicomPriority priority = DicomPriority.Medium)
            : base(DicomCommandField.CMoveRequest, DicomUID.StudyRootQueryRetrieveInformationModelMove, priority)
        {
            DestinationAE = destinationAe;
            // when creating requests, one may be forced to use invalid UIDs. So turn off validation
            Dataset = new DicomDataset().NotValidated();

            Level = DicomQueryRetrieveLevel.Image;
            Dataset.Add(DicomTag.StudyInstanceUID, studyInstanceUid);
            Dataset.Add(DicomTag.SeriesInstanceUID, seriesInstanceUid);
            Dataset.Add(DicomTag.SOPInstanceUID, sopInstanceUid);
        }
示例#21
0
 /// <summary>
 /// Initializes DICOM C-Store request to be sent to SCP.
 /// </summary>
 /// <param name="file">DICOM file to be sent</param>
 /// <param name="priority">Priority of request</param>
 public DicomCStoreRequest(string fileName, DicomPriority priority = DicomPriority.Medium)
     : this(DicomFile.Open(fileName), priority)
 {
 }
示例#22
0
 private DicomCMoveRequest CreateCMoveByPatientId(string destination, string patientId, DicomPriority priority = DicomPriority.Low)
 {
     throw new NotImplementedException();
     //var request = new DicomCMoveRequest(destination, _patientId);
     //// no more dicomtags have to be set
     //return request;
 }
示例#23
0
 /// <summary>
 /// Initializes DICOM C-Store request to be sent to SCP.
 /// </summary>
 /// <param name="file">DICOM file to be sent</param>
 /// <param name="priority">Priority of request</param>
 public DicomCStoreRequest(string fileName, DicomPriority priority = DicomPriority.Medium)
     : this(DicomFile.Open(fileName), priority)
 {
 }
示例#24
0
 public DicomNActionRequest(DicomUID requestedClassUid, DicomUID requestedInstanceUid, ushort actionTypeId, DicomPriority priority = DicomPriority.Medium) : base(DicomCommandField.NActionRequest, requestedClassUid, priority)
 {
     SOPInstanceUID = requestedInstanceUid;
     ActionTypeID   = actionTypeId;
 }
示例#25
0
        public static DicomCMoveRequest CreateCMoveBySeriesUID(string destAET, string studyInstanceUID, string seriesInstanceUID, DicomPriority priority = DicomPriority.Medium)
        {
            var request = new DicomCMoveRequest(destAET, studyInstanceUID, seriesInstanceUID, priority);

            // no more dicomtags have to be set
            return(request);
        }
示例#26
0
 public DicomNCreateRequest(DicomUID affectedClassUid, DicomUID affectedInstanceUid, ushort eventTypeId, DicomPriority priority = DicomPriority.Medium) : base(DicomCommandField.NCreateRequest, affectedClassUid, priority)
 {
     SOPInstanceUID = affectedInstanceUid;
 }
示例#27
0
 public DicomCFindRequest(DicomQueryRetrieveLevel level, DicomPriority priority = DicomPriority.Medium) : base(DicomCommandField.CFindRequest, DicomUID.StudyRootQueryRetrieveInformationModelFIND, priority)
 {
     Dataset = new DicomDataset();
     Level   = level;
 }
示例#28
0
 /// <summary>
 /// Initializes an instance of the <see cref="DicomCFindRequest"/> class.
 /// </summary>
 /// <param name="affectedSopClassUid">Affected SOP Class UID.</param>
 /// <param name="level">Query/Retrieve level.</param>
 /// <param name="priority">Command priority.</param>
 public DicomCFindRequest(DicomUID affectedSopClassUid, DicomQueryRetrieveLevel level, DicomPriority priority = DicomPriority.Medium)
     : this(affectedSopClassUid, priority)
 {
     Level = level;
 }
示例#29
0
 /// <summary>
 /// Method to send a DICOM C-STORE-RQ message.
 /// </summary>
 /// <param name="presentationID"></param>
 /// <param name="messageID"></param>
 /// <param name="priority"></param>
 /// <param name="moveAE"></param>
 /// <param name="moveMessageID"></param>
 /// <param name="message"></param>
 public void SendCStoreRequest(byte presentationID, ushort messageID,
                               DicomPriority priority, string moveAE, ushort moveMessageID, DicomMessage message)
 {
     SendCStoreRequest(presentationID, messageID, priority, moveAE, moveMessageID, message, null);
 }
示例#30
0
 /// <summary>
 /// Method to send a DICOM C-STORE-RQ message.
 /// </summary>
 /// <param name="presentationID"></param>
 /// <param name="messageID"></param>
 /// <param name="priority"></param>
 /// <param name="message"></param>
 public void SendCStoreRequest(byte presentationID, ushort messageID,
                               DicomPriority priority, DicomMessage message)
 {
     SendCStoreRequest(presentationID, messageID, priority, null, 0, message);
 }
示例#31
0
        public static DicomCFindRequest CreateStudyRequestByDateRangeForModality(DateTime dateFrom, DateTime dateTo, string modality, DicomPriority priority = DicomPriority.Low)
        {
            var request = new DicomCFindRequest(DicomQueryRetrieveLevel.Study, priority);

            // always add the encoding - with agnostic encoding
            request.Dataset.AddOrUpdate(new DicomTag(0x8, 0x5), "ISO_IR 100");

            // add the dicom tags with empty values that should be included in the result of the QR Server
            request.Dataset.AddOrUpdate(DicomTag.PatientID, "");
            request.Dataset.AddOrUpdate(DicomTag.StudyInstanceUID, "");
            request.Dataset.AddOrUpdate(DicomTag.StudyDescription, "");

            string modalityToQuery = modality.Equals("all", StringComparison.OrdinalIgnoreCase) ? "" : modality;

            // add the dicom tags that contain the filter criteria
            request.Dataset.AddOrUpdate(DicomTag.ModalitiesInStudy, modalityToQuery);
            var studyDateRange = new DicomDateRange(dateFrom, dateTo);

            request.Dataset.AddOrUpdate(DicomTag.StudyDate, studyDateRange);
            request.Dataset.AddOrUpdate(DicomTag.StudyTime, studyDateRange);
            return(request);
        }
示例#32
0
 public DicomCEchoRequest(DicomPriority priority = DicomPriority.Medium) : base(DicomCommandField.CEchoRequest, DicomUID.VerificationSOPClass, priority)
 {
 }
示例#33
0
		/// <summary>
		/// Method to send a DICOM C-STORE-RQ message.
		/// </summary>
		/// <param name="presentationID"></param>
		/// <param name="messageID"></param>
		/// <param name="priority"></param>
		/// <param name="moveAE"></param>
		/// <param name="moveMessageID"></param>
		/// <param name="dataSetStream"></param>
		public void SendCStoreRequest(byte presentationID, ushort messageID,
									  DicomPriority priority, string moveAE, ushort moveMessageID, string sopInstanceUid, string sopClassUid, Stream dataSetStream)
		{
			DicomUid affectedClass = _assoc.GetAbstractSyntax(presentationID);

			DicomMessage message = new DicomMessage();
			DicomAttributeCollection command = message.MetaInfo;

			message.MessageId = messageID;
			message.CommandField = DicomCommandField.CStoreRequest;
			message.AffectedSopClassUid = sopClassUid;
			message.DataSetType = 0x0202;
			message.Priority = priority;
			message.AffectedSopInstanceUid = sopInstanceUid;


			if (!string.IsNullOrEmpty(moveAE))
			{
				message.MoveOriginatorApplicationEntityTitle = moveAE;
				message.MoveOriginatorMessageId = moveMessageID;
			}

			SendDimseDataSetStream(presentationID, command, dataSetStream);
		}
示例#34
0
        protected DicomCFindRequest CreateSeriesRequestByStudyUid(string studyInstanceUid, DicomPriority priority = DicomPriority.Low)
        {
            //create your own request that contains exactly those DicomTags that
            // you realy need pro process your data and not to cause unneccessary traffic and IO load:
            var request = new DicomCFindRequest(DicomQueryRetrieveLevel.Series, priority);

            request.Dataset.AddOrUpdate(new DicomTag(0x8, 0x5), "ISO_IR 100");

            // add the dicom tags with empty values that should be included in the result
            request.Dataset.AddOrUpdate(DicomTag.SeriesInstanceUID, "");
            request.Dataset.AddOrUpdate(DicomTag.SeriesDescription, "");
            request.Dataset.AddOrUpdate(DicomTag.Modality, "");
            request.Dataset.AddOrUpdate(DicomTag.NumberOfSeriesRelatedInstances, "");

            // add the dicom tags that contain the filter criteria
            request.Dataset.AddOrUpdate(DicomTag.StudyInstanceUID, studyInstanceUid);

            return(request);
        }
		public DicomCEchoRequest(DicomPriority priority = DicomPriority.Medium) : base(DicomCommandField.CEchoRequest, DicomUID.VerificationSOPClass, priority) {
		}
示例#36
0
        public static DicomCGetRequest CreateCGetBySOPInstanceUID(string studyInstanceUID, string seriesInstanceUID, string sopInstanceUID, DicomPriority priority = DicomPriority.Medium)
        {
            var request = new DicomCGetRequest(studyInstanceUID, seriesInstanceUID, sopInstanceUID, priority);

            // no more dicomtags have to be set
            return(request);
        }
 public DicomNDeleteRequest(DicomUID requestedClassUid, DicomUID requestedInstanceUid, DicomPriority priority = DicomPriority.Medium) : base(DicomCommandField.NDeleteRequest, requestedClassUid, priority)
 {
     SOPInstanceUID = requestedInstanceUid;
 }
示例#38
0
 /// <summary>
 /// Initializes an instance of the <see cref="DicomPriorityRequest"/> base class.
 /// </summary>
 /// <param name="type">Type of command (command field).</param>
 /// <param name="requestedClassUid">Requested/affected SOP Class UID</param>
 /// <param name="priority">Request priority.</param>
 protected DicomPriorityRequest(DicomCommandField type, DicomUID requestedClassUid, DicomPriority priority)
     : base(type, requestedClassUid)
 {
     Priority = priority;
 }
 protected DicomPriorityRequest(DicomCommandField type, DicomUID affectedClassUid, DicomPriority priority)
     : base(type, affectedClassUid)
 {
     Priority = priority;
 }
 public DicomNGetRequest(DicomUID requestedClassUid, DicomUID requestedInstanceUid, DicomTag[] attributes, DicomPriority priority = DicomPriority.Medium) : base(DicomCommandField.NGetRequest, requestedClassUid, priority)
 {
     SOPInstanceUID = requestedInstanceUid;
 }
示例#41
0
        private DicomCMoveRequest CreateCMoveBySopInstanceUid(string destination, string studyUid, string seriesUid, string sopInstanceUid, DicomPriority priority = DicomPriority.Low)
        {
            var request = new DicomCMoveRequest(destination, studyUid, seriesUid, sopInstanceUid, priority);

            Listener.OnNotify(this, new NotifyEventArgs(ProgressEventType.Information, "DicomRetriever.CreateCMoveBySopInstanceUid created request for: " + sopInstanceUid));
            // no more dicomtags have to be set
            return(request);
        }
示例#42
0
        public static DicomCFindRequest CreateSopRequestBySeriesUid(string seriesInstanceUid, DicomPriority priority = DicomPriority.Low)
        {
            //create your own request that contains exactly those DicomTags that
            // you realy need pro process your data and not to cause unneccessary traffic and IO load:
            var request = new DicomCFindRequest(DicomQueryRetrieveLevel.Image, priority);

            request.Dataset.AddOrUpdate(new DicomTag(0x8, 0x5), "ISO_IR 100");

            // add the dicom tags with empty values that should be included in the result
            request.Dataset.AddOrUpdate(DicomTag.PatientID, "");
            request.Dataset.AddOrUpdate(DicomTag.SOPInstanceUID, "");
            request.Dataset.AddOrUpdate(DicomTag.Modality, "");

            // add the dicom tags that contain the filter criteria
            request.Dataset.AddOrUpdate(DicomTag.SeriesInstanceUID, seriesInstanceUid);

            return(request);
        }
示例#43
0
 public DicomCFindRequest(DicomQueryRetrieveLevel level, DicomPriority priority = DicomPriority.Medium)
     : base(DicomCommandField.CFindRequest, DicomUID.StudyRootQueryRetrieveInformationModelFIND, priority)
 {
     Dataset = new DicomDataset();
     Level = level;
 }
示例#44
0
 /// <summary>
 /// Method to send a DICOM C-STORE-RQ message.
 /// </summary>
 /// <param name="presentationID"></param>
 /// <param name="messageID"></param>
 /// <param name="priority"></param>
 /// <param name="message"></param>
 /// <param name="overrideParameters"></param>
 public void SendCStoreRequest(byte presentationID, ushort messageID,
                               DicomPriority priority, DicomMessage message,
                               DicomCodecParameters overrideParameters)
 {
     SendCStoreRequest(presentationID, messageID, priority, null, 0, message, overrideParameters);
 }
示例#45
0
 /// <summary>
 /// Initializes an instance of the <see cref="DicomCFindRequest"/> class.
 /// </summary>
 /// <param name="level">Query&#47;Retrieve level.</param>
 /// <param name="priority">Command priority.</param>
 public DicomCFindRequest(DicomQueryRetrieveLevel level, DicomPriority priority = DicomPriority.Medium)
     : base(DicomCommandField.CFindRequest, GetAffectedSOPClassUID(level), priority)
 {
     Dataset = new DicomDataset();
     Level   = level;
 }
示例#46
0
        /// <summary>
        /// Method to send a DICOM C-STORE-RQ message.
        /// </summary>
        /// <param name="presentationID"></param>
        /// <param name="messageID"></param>
        /// <param name="priority"></param>
        /// <param name="moveAE"></param>
        /// <param name="moveMessageID"></param>
        /// <param name="message"></param>
        /// <param name="overrideParameters"></param>
        public void SendCStoreRequest(byte presentationID, ushort messageID,
                                      DicomPriority priority, string moveAE, ushort moveMessageID, DicomMessage message,
                                      DicomCodecParameters overrideParameters)
        {
            DicomUid affectedClass = _assoc.GetAbstractSyntax(presentationID);

            if (!affectedClass.UID.Equals(message.SopClass.Uid))
                throw new DicomException(
                    String.Format(
                        "SOP Class Uid in the message {0} does not match SOP Class UID for presentation context {1}",
                        message.SopClass.Uid, affectedClass.UID));

            DicomAttributeCollection command = message.MetaInfo;

            message.MessageId = messageID;
            message.CommandField = DicomCommandField.CStoreRequest;
            message.AffectedSopClassUid = message.SopClass.Uid;
            message.DataSetType = 0x0202;
            message.Priority = priority;

            String sopInstanceUid;
            bool ok = message.DataSet[DicomTags.SopInstanceUid].TryGetString(0, out sopInstanceUid);
            if (!ok)
                throw new DicomException("SOP Instance UID unexpectedly not set in CStore Message being sent.");

            message.AffectedSopInstanceUid = sopInstanceUid;


            if (!string.IsNullOrEmpty(moveAE))
            {
                message.MoveOriginatorApplicationEntityTitle = moveAE;
                message.MoveOriginatorMessageId = moveMessageID;
            }

            // Handle compress/decompress if necessary
            TransferSyntax contextSyntax = _assoc.GetAcceptedTransferSyntax(presentationID);
            if ((contextSyntax != message.TransferSyntax)
                && (contextSyntax.Encapsulated || message.TransferSyntax.Encapsulated))
            {
                if (overrideParameters != null)
                    message.ChangeTransferSyntax(contextSyntax, null, overrideParameters);
                else
                    message.ChangeTransferSyntax(contextSyntax);
            }

            SendDimse(presentationID, command, message.DataSet);
        }
        /// <summary>
        /// Initializes an instance of the <see cref="DicomCFindRequest"/> class.
        /// </summary>
        /// <param name="affectedSopClassUid">Affected SOP Class UID.</param>
        /// <param name="level">Query/Retrieve level.</param>
        /// <param name="priority">Command priority.</param>
        public DicomCFindRequest(DicomUID affectedSopClassUid, DicomQueryRetrieveLevel level, DicomPriority priority = DicomPriority.Medium)
            : base(DicomCommandField.CFindRequest, affectedSopClassUid, priority)
        {
            //  should we check combination between affectedSopClassUid and level?
            //  should we allow PatientRoot and StudyRoot only ?
            if (affectedSopClassUid != DicomUID.ModalityWorklistInformationModelFIND &&
                affectedSopClassUid != DicomUID.PatientRootQueryRetrieveInformationModelFIND &&
                affectedSopClassUid != DicomUID.StudyRootQueryRetrieveInformationModelFIND &&
                affectedSopClassUid != DicomUID.UnifiedProcedureStepPullSOPClass &&
                affectedSopClassUid != DicomUID.UnifiedProcedureStepWatchSOPClass)
            {
                throw new DicomNetworkException("Overloaded constructor does not support Affected SOP Class UID: {0}", affectedSopClassUid.Name);
            }

            Dataset = new DicomDataset();
            Level   = level;
        }