コード例 #1
0
ファイル: MoveClient.cs プロジェクト: sakpung/webstudy
        static void scu_BeforeCMove(object sender, BeforeCMoveEventArgs e)
        {
            DicomConnection scu = sender as DicomConnection;
            string          msg = string.Format(CMOVE_REQUEST_SENT, e.MessageId, e.PresentationID, e.AffectedClass, e.Priority, e.DestinationAETitle);

            Utils.LogEvent(LogType.Information, MessageDirection.Output, msg, DicomCommandType.CMove, e.Dataset, scu, null);
        }
コード例 #2
0
ファイル: MoveClient.cs プロジェクト: sakpung/webstudy
        private void SendPatientMove(DicomDataSet wrapper, string DestAE)
        {
            bool moveFinish = false;

            try
            {
                BeforeCMoveEventArgs e = new BeforeCMoveEventArgs(ActiveScp, wrapper, DicomCommandPriorityType.Medium, string.IsNullOrEmpty(DestAE) ? Association.Calling : DestAE);
                byte pid = 0;
                DicomCommandPriorityType priority;

                pid              = Association.FindAbstract(DicomUidType.PatientRootQueryMove);
                e.MessageId      = 1;
                e.PresentationID = pid;
                e.AffectedClass  = DicomUidType.StudyRootQueryMove;
                priority         = OnBeforeCMove(e);
                CurrentPid       = pid;
                CurrentMessageId = e.MessageId;
                LogSendCMoveRequest(pid, e.MessageId, DicomUidType.PatientRootQueryMove, priority,
                                    string.IsNullOrEmpty(DestAE) ? Association.Calling : DestAE, wrapper);
                SendCMoveRequest(pid, e.MessageId, DicomUidType.PatientRootQueryMove, priority,
                                 string.IsNullOrEmpty(DestAE) ? Association.Calling : DestAE, wrapper);


                Wait();
                moveFinish = true;
            }
            catch (Exception e)
            {
                if (IsConnected())
                {
                    OnBeforeClose();
                    Close();
                    OnAfterClose();
                }
                throw e;
            }

            if (moveFinish)
            {
                AfterCMoveEventArgs e = new AfterCMoveEventArgs(ActiveScp, parameters.Completed, parameters.Failed, parameters.Warning, parameters.Dataset, parameters.Status);

                e.PresentationID = parameters.PresentationID;
                e.MessageId      = parameters.MessageID;
                e.AffectedClass  = parameters.AffectedClass;
                e.Remaining      = parameters.Remaining;

                Release();
                OnAfterCMove(e);;
            }

            if (IsConnected())
            {
                OnBeforeClose();
                Close();
                OnAfterClose();
            }
        }