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