コード例 #1
0
        public CStoreRequestInfo(string fileName, object userModel)
        {
            try {
                _fileName = fileName;
                if (!File.Exists(fileName))
                {
                    throw new FileNotFoundException("Unable to load DICOM file!", fileName);
                }

                DicomTag        stopTag = (userModel != null) ? DicomTags.PixelData : DcmFileMetaInfo.StopTag;
                DicomFileFormat ff      = new DicomFileFormat();
                ff.Load(fileName, stopTag, DicomReadOptions.Default);
                _transferSyntax         = ff.FileMetaInfo.TransferSyntax;
                _originalTransferSyntax = _transferSyntax;
                _sopClass = ff.FileMetaInfo.MediaStorageSOPClassUID;
                _sopInst  = ff.FileMetaInfo.MediaStorageSOPInstanceUID;
                if (userModel != null)
                {
                    ff.Dataset.LoadDicomFields(userModel);
                    _userState = userModel;
                }
                _status = DcmStatus.Pending;
            }
            catch (Exception e) {
                _status    = DcmStatus.ProcessingFailure;
                _exception = e;
                throw;
            }
        }
コード例 #2
0
        protected override void OnReceiveNSetResponse(byte presentationID, ushort messageIdRespondedTo, DicomUID affectedClass, DicomUID affectedInstance,
                                                      DcmDataset dataset, DcmStatus status)
        {
            if (_filmSession != null)
            {
                // ReSharper disable PossibleUnintendedReferenceComparison
                if (affectedClass == DicomUID.BasicColorImageBoxSOPClass ||
                    affectedClass == DicomUID.BasicGrayscaleImageBoxSOPClass)
                // ReSharper restore PossibleUnintendedReferenceComparison
                {
                    if (status == DcmStatus.Success)
                    {
                        DcmImageBox imageBox = _filmSession.FindImageBox(affectedInstance);
                        if (imageBox != null)
                        {
                            _pendingImageBoxResponses.Remove(imageBox);
                            if (_pendingImageBoxResponses.Count == 0)
                            {
                                byte pcid = Associate.FindAbstractSyntax(DicomUID.PrinterSOPClass);
                                SendNActionRequest(pcid, NextMessageID(), DicomUID.BasicFilmSessionSOPClass, _filmSession.SOPInstanceUID, 0x0001, null);
                            }
                            return;
                        }
                    }
                }
            }

            SendAbort(DcmAbortSource.ServiceUser, DcmAbortReason.NotSpecified);
        }
コード例 #3
0
ファイル: CStoreService.cs プロジェクト: scottshea/monodicom
        protected override void OnReceiveCEchoRequest(byte presentationID, ushort messageID, DcmPriority priority)
        {
            DcmStatus status = DcmStatus.Success;

            if (OnCEchoRequest != null)
            {
                status = OnCEchoRequest(this, presentationID, messageID, priority);
            }
            SendCEchoResponse(presentationID, messageID, status);
        }
コード例 #4
0
 protected override void OnReceiveCGetResponse(byte presentationID, ushort messageID, DcmDataset dataset,
                                               DcmStatus status, ushort remain, ushort complete, ushort warning, ushort failure)
 {
     if (OnCGetResponse != null)
     {
         OnCGetResponse(_current, dataset, status, remain, complete, warning, failure);
     }
     if (remain == 0 && status != DcmStatus.Pending)
     {
         PerformQueryOrRelease();
     }
 }
コード例 #5
0
ファイル: QRService.cs プロジェクト: gogorrr/mdcm
        protected override void OnReceiveCFindRequest(byte presentationID, ushort messageID, DcmPriority priority, DcmDataset dataset)
        {
            DcmStatus  status        = DcmStatus.QueryRetrieveUnableToProcess;
            DcmDataset resultDataset = null;

            if (OnCFindRequest != null)
            {
                status = OnCFindRequest(this, presentationID, messageID, priority, dataset);
            }

            SendCFindResponse(presentationID, messageID, resultDataset, status);
        }
コード例 #6
0
ファイル: CStoreService.cs プロジェクト: scottshea/monodicom
        protected override void OnReceiveCStoreRequest(byte presentationID, ushort messageID, DicomUID affectedInstance,
                                                       DcmPriority priority, string moveAE, ushort moveMessageID, DcmDataset dataset, string fileName)
        {
            DcmStatus status = DcmStatus.Success;

            if (OnCStoreRequest != null)
            {
                status = OnCStoreRequest(this, presentationID, messageID, affectedInstance, priority, moveAE, moveMessageID, dataset, fileName);
            }

            SendCStoreResponse(presentationID, messageID, affectedInstance, status);
        }
コード例 #7
0
ファイル: QRService.cs プロジェクト: gogorrr/mdcm
        protected override void OnReceiveCMoveRequest(byte presentationID, ushort messageID, string destinationAE, DcmPriority priority, DcmDataset dataset)
        {
            DcmStatus status   = DcmStatus.QueryRetrieveUnableToProcess;
            ushort    remain   = 0;
            ushort    complete = 0;
            ushort    warning  = 0;
            ushort    failure  = 0;

            if (OnCMoveRequest != null)
            {
                status = OnCMoveRequest(this, presentationID, messageID, destinationAE, priority, dataset, out remain, out complete, out warning, out failure);
            }

            SendCMoveResponse(presentationID, messageID, status, remain, complete, warning, failure);
        }
コード例 #8
0
        protected override void OnReceiveNGetResponse(byte presentationID, ushort messageIdRespondedTo, DicomUID affectedClass, DicomUID affectedInstance,
                                                      DcmDataset dataset, DcmStatus status)
        {
            if (OnPrintGetPrinterStatusResponse != null)
            {
                var printerstatus = new DcmPrinterStatus(dataset);
                _acceptedPrinterStatus = OnPrintGetPrinterStatusResponse(printerstatus, status);
            }

            if (_acceptedPrinterStatus == false)
            {
                SendReleaseRequest();
                return;
            }

            CreateFilmSession();
        }
コード例 #9
0
        protected override void OnReceiveNDeleteResponse(byte presentationID, ushort messageIdRespondedTo, DicomUID affectedClass, DicomUID affectedInstance, DcmStatus status)
        {
            if (_filmSession != null)
            {
                if (affectedClass == DicomUID.BasicFilmBoxSOPClass)
                {
                    if (status == DcmStatus.Success)
                    {
                        DcmFilmBox filmBox = _filmSession.FindFilmBox(affectedInstance);
                        if (filmBox != null)
                        {
                            _pendingFilmBoxResponses.Remove(filmBox);
                            if (_pendingFilmBoxResponses.Count == 0)
                            {
                                byte pcid = Associate.FindAbstractSyntax(DicomUID.PrinterSOPClass);
                                SendNDeleteRequest(pcid, NextMessageID(), DicomUID.BasicFilmSessionSOPClass, _filmSession.SOPInstanceUID);
                            }
                            return;
                        }
                    }
                }

                if (affectedClass == DicomUID.BasicFilmSessionSOPClass)
                {
                    if (status == DcmStatus.Success)
                    {
                        SendReleaseRequest();
                        return;
                    }
                }
            }

            SendAbort(DcmAbortSource.ServiceUser, DcmAbortReason.NotSpecified);
        }
コード例 #10
0
        protected override void OnReceiveNEventReportResponse(byte presentationID, ushort messageIdRespondedTo,
                                                              DicomUID affectedClass, DicomUID affectedInstance, ushort eventTypeID, DcmDataset dataset, DcmStatus status)
        {
            if (affectedClass == DicomUID.PrintJobSOPClass)
            {
                DcmPrintJob job = null;

                foreach (DcmPrintJob pj in _jobs)
                {
                    if (pj.SOPInstanceUID == affectedInstance)
                    {
                        job = pj;
                        break;
                    }
                }

                if (job != null && (job.ExecutionStatus == "DONE" || job.ExecutionStatus == "FAILURE"))
                {
                    _jobs.Remove(job);
                }

                return;
            }
        }
コード例 #11
0
        protected override void OnReceiveNActionResponse(byte presentationID, ushort messageIdRespondedTo, DicomUID affectedClass, DicomUID affectedInstance,
                                                         ushort actionTypeID, DcmDataset dataset, DcmStatus status)
        {
            if (_filmSession != null)
            {
                // ReSharper disable PossibleUnintendedReferenceComparison
                if (affectedClass == DicomUID.BasicFilmSessionSOPClass)
                // ReSharper restore PossibleUnintendedReferenceComparison
                {
                    if (status == DcmStatus.Success)
                    {
                        _pendingFilmBoxResponses.Clear();
                        byte pcid = Associate.FindAbstractSyntax(DicomUID.PrinterSOPClass);
                        foreach (DcmFilmBox filmBox in _filmSession.BasicFilmBoxes)
                        {
                            _pendingFilmBoxResponses.Add(filmBox);
                            SendNDeleteRequest(pcid, NextMessageID(), DicomUID.BasicFilmBoxSOPClass, filmBox.SOPInstanceUID);
                        }
                        return;
                    }
                }
            }

            SendAbort(DcmAbortSource.ServiceUser, DcmAbortReason.NotSpecified);
        }
コード例 #12
0
ファイル: PrintClient.cs プロジェクト: GMZ/mdcm
        protected override void OnReceiveNGetResponse(byte presentationID, ushort messageIdRespondedTo, DicomUID affectedClass, DicomUID affectedInstance,
            DcmDataset dataset, DcmStatus status)
        {
            if (OnPrintGetPrinterStatusResponse != null)
            {
                var printerstatus = new DcmPrinterStatus(dataset);
                _acceptedPrinterStatus = OnPrintGetPrinterStatusResponse(printerstatus, status);
            }

            if (_acceptedPrinterStatus == false)
            {
                SendReleaseRequest();
                return;
            }

            CreateFilmSession();
        }
コード例 #13
0
        protected override void OnReceiveNCreateResponse(byte presentationID, ushort messageIdRespondedTo, DicomUID affectedClass, DicomUID affectedInstance,
                                                         DcmDataset dataset, DcmStatus status)
        {
            if (_filmSession != null)
            {
                // ReSharper disable PossibleUnintendedReferenceComparison
                if (affectedClass == DicomUID.BasicFilmSessionSOPClass)
                // ReSharper restore PossibleUnintendedReferenceComparison
                {
                    if (status == DcmStatus.Success)
                    {
                        int filmBoxesCount = CalculateRequiredImageBoxes();
                        if (filmBoxesCount == 0)
                        {
                            SendReleaseRequest();
                            return;
                        }

                        for (int i = 0; i < filmBoxesCount; i++)
                        {
                            var uid            = DicomUID.Generate();
                            var filmBoxDataset = new DcmDataset(DicomTransferSyntax.ImplicitVRLittleEndian);
                            var filmBox        = _filmSession.CreateFilmBox(uid, filmBoxDataset.Clone());

                            filmBox.AnnotationDisplayFormatID = _annotationDisplayFormatID;
                            filmBox.BorderDensity             = _borderDensity;
                            filmBox.ConfigurationInformation  = _configurationInformation;
                            filmBox.EmptyImageDensity         = _emptyImageDensity;
                            filmBox.FilmOrientation           = _filmOrientation;
                            filmBox.FilmSizeID            = _filmSizeID;
                            filmBox.Illumination          = _illumination;
                            filmBox.ImageDisplayFormat    = _imageDisplayFormat;
                            filmBox.MagnificationType     = _magnificationType;
                            filmBox.MaxDensity            = _maxDensity;
                            filmBox.MinDensity            = _minDensity;
                            filmBox.ReflectedAmbientLight = _reflectedAmbientLight;
                            filmBox.RequestedResolutionID = _requestedResolutionID;
                            filmBox.SmoothingType         = _smoothingType;
                            filmBox.Trim = _trim;

                            byte pcid = Associate.FindAbstractSyntax(DicomUID.BasicGrayscalePrintManagementMetaSOPClass);
                            SendNCreateRequest(pcid, NextMessageID(), DicomUID.BasicFilmBoxSOPClass, filmBox.SOPInstanceUID, filmBox.Dataset);
                        }
                        return;
                    }
                }

                // ReSharper disable PossibleUnintendedReferenceComparison
                if (affectedClass == DicomUID.BasicFilmBoxSOPClass)
                // ReSharper restore PossibleUnintendedReferenceComparison
                {
                    if (status == DcmStatus.Success)
                    {
                        var filmBox      = _filmSession.FindFilmBox(affectedInstance);
                        var filmBoxIndex = _filmSession.BasicFilmBoxes.IndexOf(filmBox);
                        if (filmBox != null)
                        {
                            var referencedImageBoxSequenceList = dataset.GetSQ(DicomTags.ReferencedImageBoxSequence);
                            if (referencedImageBoxSequenceList != null)
                            {
                                foreach (var item in referencedImageBoxSequenceList.SequenceItems)
                                {
                                    var referencedSOPInstanceUID = item.Dataset.GetUID(DicomTags.ReferencedSOPInstanceUID);
                                    if (referencedSOPInstanceUID != null)
                                    {
                                        var imageBox = new DcmImageBox(filmBox, DcmImageBox.GraySOPClassUID, referencedSOPInstanceUID);
                                        filmBox.BasicImageBoxes.Add(imageBox);
                                    }
                                }
                            }

                            _pendingImageBoxResponses.Clear();
                            if (filmBox.BasicImageBoxes.Count > 0)
                            {
                                var imageBoxIndex    = 0;
                                var imagesPerFilmbox = CalculateImagesPreFilmBox();
                                foreach (var imageBox in filmBox.BasicImageBoxes)
                                {
                                    if (imagesPerFilmbox * filmBoxIndex + imageBoxIndex < _files.Count)
                                    {
                                        UpdateImageBox(imageBox, _files[imagesPerFilmbox * filmBoxIndex + imageBoxIndex], imageBoxIndex);
                                    }
                                    _pendingImageBoxResponses.Add(imageBox);
                                    imageBoxIndex++;

                                    byte pcid = Associate.FindAbstractSyntax(DicomUID.PrinterSOPClass);
                                    SendNSetRequest(pcid, NextMessageID(), imageBox.SOPClassUID, imageBox.SOPInstanceUID, imageBox.Dataset);
                                }
                            }
                            return;
                        }
                    }
                }
            }

            SendAbort(DcmAbortSource.ServiceUser, DcmAbortReason.NotSpecified);
        }
コード例 #14
0
ファイル: PrintClient.cs プロジェクト: GMZ/mdcm
        protected override void OnReceiveNCreateResponse(byte presentationID, ushort messageIdRespondedTo, DicomUID affectedClass, DicomUID affectedInstance,
            DcmDataset dataset, DcmStatus status)
        {
            if (_filmSession != null)
            {
                // ReSharper disable PossibleUnintendedReferenceComparison
                if (affectedClass == DicomUID.BasicFilmSessionSOPClass)
                // ReSharper restore PossibleUnintendedReferenceComparison
                {
                    if (status == DcmStatus.Success)
                    {
                        int filmBoxesCount = CalculateRequiredImageBoxes();
                        if (filmBoxesCount == 0)
                        {
                            SendReleaseRequest();
                            return;
                        }

                        for (int i = 0; i < filmBoxesCount; i++)
                        {
                            var uid = DicomUID.Generate();
                            var filmBoxDataset = new DcmDataset(DicomTransferSyntax.ImplicitVRLittleEndian);
                            var filmBox = _filmSession.CreateFilmBox(uid, filmBoxDataset.Clone());

                            filmBox.AnnotationDisplayFormatID = _annotationDisplayFormatID;
                            filmBox.BorderDensity = _borderDensity;
                            filmBox.ConfigurationInformation = _configurationInformation;
                            filmBox.EmptyImageDensity = _emptyImageDensity;
                            filmBox.FilmOrientation = _filmOrientation;
                            filmBox.FilmSizeID = _filmSizeID;
                            filmBox.Illumination = _illumination;
                            filmBox.ImageDisplayFormat = _imageDisplayFormat;
                            filmBox.MagnificationType = _magnificationType;
                            filmBox.MaxDensity = _maxDensity;
                            filmBox.MinDensity = _minDensity;
                            filmBox.ReflectedAmbientLight = _reflectedAmbientLight;
                            filmBox.RequestedResolutionID = _requestedResolutionID;
                            filmBox.SmoothingType = _smoothingType;
                            filmBox.Trim = _trim;

                            byte pcid = Associate.FindAbstractSyntax(DicomUID.BasicGrayscalePrintManagementMetaSOPClass);
                            SendNCreateRequest(pcid, NextMessageID(), DicomUID.BasicFilmBoxSOPClass, filmBox.SOPInstanceUID, filmBox.Dataset);
                        }
                        return;
                    }
                }

                // ReSharper disable PossibleUnintendedReferenceComparison
                if (affectedClass == DicomUID.BasicFilmBoxSOPClass)
                // ReSharper restore PossibleUnintendedReferenceComparison
                {
                    if (status == DcmStatus.Success)
                    {
                        var filmBox = _filmSession.FindFilmBox(affectedInstance);
                        var filmBoxIndex = _filmSession.BasicFilmBoxes.IndexOf(filmBox);
                        if (filmBox != null)
                        {
                            var referencedImageBoxSequenceList = dataset.GetSQ(DicomTags.ReferencedImageBoxSequence);
                            if (referencedImageBoxSequenceList != null)
                            {
                                foreach (var item in referencedImageBoxSequenceList.SequenceItems)
                                {
                                    var referencedSOPInstanceUID = item.Dataset.GetUID(DicomTags.ReferencedSOPInstanceUID);
                                    if (referencedSOPInstanceUID != null)
                                    {
                                        var imageBox = new DcmImageBox(filmBox, DcmImageBox.GraySOPClassUID, referencedSOPInstanceUID);
                                        filmBox.BasicImageBoxes.Add(imageBox);
                                    }
                                }
                            }

                            _pendingImageBoxResponses.Clear();
                            if (filmBox.BasicImageBoxes.Count > 0)
                            {
                                var imageBoxIndex = 0;
                                var imagesPerFilmbox = CalculateImagesPreFilmBox();
                                foreach (var imageBox in filmBox.BasicImageBoxes)
                                {
                                    if (imagesPerFilmbox * filmBoxIndex + imageBoxIndex < _files.Count)
                                    {
                                        UpdateImageBox(imageBox, _files[imagesPerFilmbox * filmBoxIndex + imageBoxIndex], imageBoxIndex);
                                    }
                                    _pendingImageBoxResponses.Add(imageBox);
                                    imageBoxIndex++;

                                    byte pcid = Associate.FindAbstractSyntax(DicomUID.PrinterSOPClass);
                                    SendNSetRequest(pcid, NextMessageID(), imageBox.SOPClassUID, imageBox.SOPInstanceUID, imageBox.Dataset);
                                }
                            }
                            return;
                        }
                    }
                }
            }

            SendAbort(DcmAbortSource.ServiceUser, DcmAbortReason.NotSpecified);
        }
コード例 #15
0
ファイル: PrintClient.cs プロジェクト: GMZ/mdcm
        protected override void OnReceiveNSetResponse(byte presentationID, ushort messageIdRespondedTo, DicomUID affectedClass, DicomUID affectedInstance,
            DcmDataset dataset, DcmStatus status)
        {
            if (_filmSession != null)
            {
                // ReSharper disable PossibleUnintendedReferenceComparison
                if (affectedClass == DicomUID.BasicColorImageBoxSOPClass ||
                    affectedClass == DicomUID.BasicGrayscaleImageBoxSOPClass)
                // ReSharper restore PossibleUnintendedReferenceComparison
                {
                    if (status == DcmStatus.Success)
                    {
                        DcmImageBox imageBox = _filmSession.FindImageBox(affectedInstance);
                        if (imageBox != null)
                        {
                            _pendingImageBoxResponses.Remove(imageBox);
                            if (_pendingImageBoxResponses.Count == 0)
                            {
                                byte pcid = Associate.FindAbstractSyntax(DicomUID.PrinterSOPClass);
                                SendNActionRequest(pcid, NextMessageID(), DicomUID.BasicFilmSessionSOPClass, _filmSession.SOPInstanceUID, 0x0001, null);
                            }
                            return;
                        }
                    }
                }
            }

            SendAbort(DcmAbortSource.ServiceUser, DcmAbortReason.NotSpecified);
        }
コード例 #16
0
        /// <summary>
        /// Loads the DICOM file and changes the transfer syntax if needed. (Internal)
        /// </summary>
        /// <param name="client">C-Store Client</param>
        public void Load(CStoreClient client)
        {
            if (_loaded)
            {
                return;
            }

            try {
                DicomTransferSyntax tx = null;

                foreach (DcmPresContext pc in client.Associate.GetPresentationContexts())
                {
                    if (pc.Result == DcmPresContextResult.Accept && pc.AbstractSyntax == _sopClass)
                    {
                        tx = pc.AcceptedTransferSyntax;
                        break;
                    }
                }

                if (tx == null)
                {
                    throw new DicomNetworkException("No accepted presentation contexts for abstract syntax: " + _sopClass.Description);
                }

                // Possible to stream from file?
                if (!client.DisableFileStreaming && tx == TransferSyntax)
                {
                    using (FileStream fs = DicomFileFormat.GetDatasetStream(_fileName)) {
                        _datasetSize = Convert.ToUInt32(fs.Length - fs.Position);
                        fs.Close();
                    }
                    return;
                }

                DcmCodecParameters codecParams = null;
                if (tx == client.PreferredTransferSyntax)
                {
                    codecParams = client.PreferredTransferSyntaxParams;
                }

                DicomFileFormat ff = new DicomFileFormat();
                ff.Load(FileName, DicomReadOptions.DefaultWithoutDeferredLoading);

                if (_originalTransferSyntax != tx)
                {
                    if (_originalTransferSyntax.IsEncapsulated)
                    {
                        // Dataset is compressed... decompress
                        try {
                            ff.ChangeTransferSytnax(DicomTransferSyntax.ExplicitVRLittleEndian, null);
                        }
                        catch {
                            client.Log.Error("{0} -> Unable to change transfer syntax:\n\tclass: {1}\n\told: {2}\n\tnew: {3}\n\treason: {4}\n\tcodecs: {5} - {6}",
                                             client.LogID, SOPClassUID.Description, _originalTransferSyntax, DicomTransferSyntax.ExplicitVRLittleEndian,
#if DEBUG
                                             HasError ? "Unknown" : Error.ToString(),
#else
                                             HasError ? "Unknown" : Error.Message,
#endif
                                             DicomCodec.HasCodec(_originalTransferSyntax), DicomCodec.HasCodec(DicomTransferSyntax.ExplicitVRLittleEndian));
                            throw;
                        }
                    }

                    if (tx.IsEncapsulated)
                    {
                        // Dataset needs to be compressed
                        try {
                            ff.ChangeTransferSytnax(tx, codecParams);
                        }
                        catch {
                            client.Log.Error("{0} -> Unable to change transfer syntax:\n\tclass: {1}\n\told: {2}\n\tnew: {3}\n\treason: {4}\n\tcodecs: {5} - {6}",
                                             client.LogID, SOPClassUID.Description, ff.Dataset.InternalTransferSyntax, tx,
#if DEBUG
                                             HasError ? "Unknown" : Error.ToString(),
#else
                                             HasError ? "Unknown" : Error.Message,
#endif
                                             DicomCodec.HasCodec(ff.Dataset.InternalTransferSyntax), DicomCodec.HasCodec(tx));
                            throw;
                        }
                    }
                }

                _dataset        = ff.Dataset;
                _datasetSize    = _dataset.CalculateWriteLength(tx, DicomWriteOptions.Default);
                _transferSyntax = tx;
            }
            catch (Exception e) {
                _dataset        = null;
                _transferSyntax = _originalTransferSyntax;
                _status         = DcmStatus.ProcessingFailure;
                _exception      = e;
            }
            finally {
                _loaded = true;
            }
        }
コード例 #17
0
 protected override void OnReceiveCFindResponse(byte presentationID, ushort messageID, DcmDataset dataset, DcmStatus status)
 {
     if (status.State != DcmState.Pending)
     {
         if (OnCFindComplete != null)
         {
             OnCFindComplete(_current);
         }
         PerformQueryOrRelease();
     }
     else if (dataset != null)
     {
         if (OnCFindResponse != null)
         {
             OnCFindResponse(_current, dataset);
         }
     }
 }
コード例 #18
0
 protected override void OnReceiveCFindResponse(byte presentationID, ushort messageID, DcmDataset dataset, DcmStatus status)
 {
     if (status.State != DcmState.Pending)
     {
         if (OnCFindComplete != null)
         {
             OnCFindComplete(_current);
         }
         PerformQueryOrRelease();
     }
     else if (dataset != null)
     {
         if (OnCFindResponse != null)
         {
             Tr result = Activator.CreateInstance <Tr>();
             result.FromDataset(dataset);
             OnCFindResponse(_current, result);
         }
     }
 }
コード例 #19
0
ファイル: QRService.cs プロジェクト: gogorrr/mdcm
 public new void SendCFindResponse(byte presentationID, ushort messageIdRespondedTo, DcmDataset dataset, DcmStatus status)
 {
     base.SendCFindResponse(presentationID, messageIdRespondedTo, dataset, status);
 }
コード例 #20
0
 protected override void OnReceiveCEchoResponse(byte presentationID, ushort messageID, DcmStatus status)
 {
     if (OnCEchoResponse != null)
     {
         OnCEchoResponse(presentationID, messageID, status);
     }
     SendReleaseRequest();
 }
コード例 #21
0
 /// <summary>
 /// Unloads the dataset and clears any errors. (Internal)
 /// </summary>
 public void Reset()
 {
     Unload();
     _status    = DcmStatus.Pending;
     _exception = null;
 }
コード例 #22
0
ファイル: QRService.cs プロジェクト: gogorrr/mdcm
 public new void SendCFindResponse(byte presentationID, ushort messageIdRespondedTo, DcmDataset dataset, DcmStatus status)
 {
     base.SendCFindResponse(presentationID, messageIdRespondedTo, dataset, status);
 }
コード例 #23
0
 protected override void OnReceiveCStoreResponse(byte presentationID, ushort messageIdRespondedTo, DicomUID affectedInstance, DcmStatus status)
 {
     _current.Status = status;
     if (OnCStoreResponseReceived != null)
     {
         try {
             OnCStoreResponseReceived(this, _current);
         }
         catch (Exception e) {
             Log.Error("Unhandled exception in user C-Store Response Callback: {0}", e.Message);
         }
     }
     _current.Unload();
     _current = null;
     SendNextCStoreRequest();
 }
コード例 #24
0
ファイル: PrintClient.cs プロジェクト: GMZ/mdcm
        protected override void OnReceiveNActionResponse(byte presentationID, ushort messageIdRespondedTo, DicomUID affectedClass, DicomUID affectedInstance,
            ushort actionTypeID, DcmDataset dataset, DcmStatus status)
        {
            if (_filmSession != null)
            {
                // ReSharper disable PossibleUnintendedReferenceComparison
                if (affectedClass == DicomUID.BasicFilmSessionSOPClass)
                // ReSharper restore PossibleUnintendedReferenceComparison
                {
                    if (status == DcmStatus.Success)
                    {
                        _pendingFilmBoxResponses.Clear();
                        byte pcid = Associate.FindAbstractSyntax(DicomUID.PrinterSOPClass);
                        foreach (DcmFilmBox filmBox in _filmSession.BasicFilmBoxes)
                        {
                            _pendingFilmBoxResponses.Add(filmBox);
                            SendNDeleteRequest(pcid, NextMessageID(), DicomUID.BasicFilmBoxSOPClass, filmBox.SOPInstanceUID);
                        }
                        return;
                    }

                }
            }

            SendAbort(DcmAbortSource.ServiceUser, DcmAbortReason.NotSpecified);
        }