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); }
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(); } }