Пример #1
0
        public void FindProcess( )
        {
            using (DicomDataSet ds = GetDS())
            {
                byte pid = GetPresentationID(type);

                if (pid == 0 || (Association.GetResult(pid) != DicomAssociateAcceptResultType.Success))
                {
                    InvokeStatusEvent(StatusType.Error, DicomExceptionCode.Success);
                    return;
                }

                if (ds == null)
                {
                    return;
                }

                string uid = "";

                if (type == FindType.Patient || type == FindType.PatientSeries)
                {
                    uid = DicomUidType.PatientRootQueryFind;
                }
                else if (type == FindType.Study || type == FindType.StudySeries)
                {
                    uid = DicomUidType.StudyRootQueryFind;
                }
                else if (type == FindType.MWLBroad || type == FindType.MWLPatient)
                {
                    uid = DicomUidType.ModalityWorklistFind;
                }

                InvokeStatusEvent(StatusType.SendCFindRequest, DicomExceptionCode.Success);
                SendCFindRequest(pid, MessageId++, uid, DicomCommandPriorityType.Medium, ds);

                if (!Wait())
                {
                    //
                    // Connection timed out
                    //
                    InvokeStatusEvent(StatusType.Timeout, DicomExceptionCode.Success);
                    Terminate();
                }

                InvokeStatusEvent(StatusType.SendReleaseRequest, DicomExceptionCode.Success);
                SendReleaseRequest();

                if (!Wait())
                {
                    InvokeStatusEvent(StatusType.Timeout, DicomExceptionCode.Success);
                    Terminate();
                }

                FindCompleteEventArgs e = new FindCompleteEventArgs();

                e._Datasets = dsCollection;
                e._Type     = type;
                OnFindComplete(e);
            }
        }
Пример #2
0
 protected virtual void OnFindComplete(FindCompleteEventArgs e)
 {
     //LastError = e.Error;
     if (FindComplete != null)
     {
         // Invokes the delegates.
         FindComplete(this, e);
     }
 }