コード例 #1
0
 public IEnumerable <DicomCFindResponse> OnCFindRequest(DicomCFindRequest request)
 {
     // You should validate the level of request.
     if (request.Level != DicomQueryRetrieveLevel.NotApplicable)
     {
         yield return(new DicomCFindResponse(request, DicomStatus.QueryRetrieveUnableToProcess));
     }
     else
     {
         foreach (DicomDataset result in WorklistHandler.FilterWorklistItems(request.Dataset, WorklistServer.CurrentWorklistItems))
         {
             yield return(new DicomCFindResponse(request, DicomStatus.Pending)
             {
                 Dataset = result
             });
         }
         yield return(new DicomCFindResponse(request, DicomStatus.Success));
     }
 }
コード例 #2
0
 public async IAsyncEnumerable <DicomCFindResponse> OnCFindRequestAsync(DicomCFindRequest request)
 {
     // you should validate the level of the request. I leave it here since there is a bug in version 3.0.2
     // from version 4 on this should be done
     //if (request.Level != DicomQueryRetrieveLevel.Worklist)
     //{
     //    yield return new DicomCFindResponse(request, DicomStatus.QueryRetrieveUnableToProcess);
     //}
     //else
     //{
     foreach (DicomDataset result in WorklistHandler.FilterWorklistItems(request.Dataset, WorklistServer.CurrentWorklistItems))
     {
         yield return(new DicomCFindResponse(request, DicomStatus.Pending)
         {
             Dataset = result
         });
     }
     yield return(new DicomCFindResponse(request, DicomStatus.Success));
     //}
 }
コード例 #3
0
        public IEnumerable <DicomCFindResponse> OnCFindRequest(DicomCFindRequest request)
        {
            // you should validate the level of the request. I leave it here since there is a bug in version 3.0.2
            // from version 4 on this should be done
            //if (request.Level != DicomQueryRetrieveLevel.Worklist)
            //{
            //    yield return new DicomCFindResponse(request, DicomStatus.QueryRetrieveUnableToProcess);
            //}
            //else
            //{

            /*        foreach (DicomDataset result in WorklistHandler.FilterWorklistItems(request.Dataset, WorklistServer.CurrentWorklistItems))
             *      {
             *          yield return new DicomCFindResponse(request, DicomStatus.Pending) { Dataset = result };
             *      }
             *      yield return new DicomCFindResponse(request, DicomStatus.Success);
             */
            //}

            // set the connection parameters
            // production envrionment

            /*        var serverIP = "192.168.66.21";
             *      var serverPort = 57300;
             *      var serverAET = "MXVOBB";
             *      var clientAET = "MXVOBB";
             */


            #region Old Code What J8 Thing?
            //bool outOfRange = WorklistItemsProvider.IsOutOfRange(request.Dataset);

            //Logger.Info($"OutofRange: {outOfRange}");
            //Log.Loger($"OutofRange: {outOfRange}");

            //if (outOfRange)
            //{
            //    // if date range is out of cached date range, we just forward the request to query
            //    var worklistItems = WorklistItemsProvider.GetWorkList(request);
            //    foreach (DicomDataset result in worklistItems)
            //    {
            //        yield return new DicomCFindResponse(request, DicomStatus.Pending) { Dataset = result };
            //    }
            //    yield return new DicomCFindResponse(request, DicomStatus.Success);
            //}
            //else
            //{
            //    // if date range is in the cached date range, we filtered the result from the cached data set
            //    foreach (DicomDataset result in WorklistHandler.FilterWorklistItemsByDataset(request.Dataset, WorklistItemsProvider.CurrentWorklistItems, Logger))
            //    {
            //        yield return new DicomCFindResponse(request, DicomStatus.Pending) { Dataset = result };
            //    }
            //    yield return new DicomCFindResponse(request, DicomStatus.Success);
            //}
            #endregion

            //记录查询时间
            System.Diagnostics.Stopwatch stopWatch1 = new System.Diagnostics.Stopwatch();
            stopWatch1.Start();
            DateTime dtRequestBeg = DateTime.Now;
            Logger.Info($"\r\n\r\nOnCFindRequest BeginTime: {dtRequestBeg.ToString("yyyy-MM-dd HH:mm:ss")}");
            Log.Loger($"\r\n\r\nOnCFindRequest BeginTime: {dtRequestBeg.ToString("yyyy-MM-dd HH:mm:ss")}");

            bool outOfRange = WorklistItemsProvider.IsOutOfRange(request.Dataset);

            Logger.Info($"OutofRange: {outOfRange}");
            Log.Loger($"OutofRange: {outOfRange}");

            //var worklistItems = WorklistHandler.NewFilterWLIteamsByDataset(request.Dataset, WorklistItemsProvider.CurrentWorklistItems, Logger);
            //var worklistItems = WorklistHandler.NewFilterWLIteamsByDataset(request.Dataset, WorklistItemsProvider.WorklistItems, Logger);
            var worklistItems = WorklistHandler.NewFilterWLIteamsByDataset(WorklistItemsProvider.QueryWorklistItems(request.Dataset), Logger);
            //worklistItems = WorklistItemsProvider.GetWorkList(request);
            foreach (DicomDataset result in worklistItems)
            {
                yield return(new DicomCFindResponse(request, DicomStatus.Pending)
                {
                    Dataset = result
                });
            }
            yield return(new DicomCFindResponse(request, DicomStatus.Success));

            //记录查询时间
            DateTime dtRequestEnd = DateTime.Now;
            Logger.Info($"OnCFindRequest EndTime: {dtRequestEnd.ToString("yyyy-MM-dd HH:mm:ss")}");
            Log.Loger($"OnCFindRequest EndTime: {dtRequestEnd.ToString("yyyy-MM-dd HH:mm:ss")}");
            stopWatch1.Stop();
            Logger.Info($"OnCFindRequest SpentTime: {stopWatch1.Elapsed.TotalSeconds}");
            Log.Loger($"OnCFindRequest SpentTime: {stopWatch1.Elapsed.TotalSeconds}");
            Log.Loger($"---------------------------------------------------------------------------------\r\n\r\n\r\n");
            stopWatch1.Reset();
        }