public static bool IsOutOfRange(DicomDataset request) { if (request.Contains(DicomTag.ScheduledProcedureStepSequence)) { DicomDataset procedureStep = request.GetSequence(DicomTag.ScheduledProcedureStepSequence).First(); var scheduledProcedureStepStartDate = procedureStep.GetSingleValueOrDefault(DicomTag.ScheduledProcedureStepStartDate, string.Empty); Logger.Info($"scheduledProcedureStepStartDate: {scheduledProcedureStepStartDate}"); Log.Loger($"scheduledProcedureStepStartDate: {scheduledProcedureStepStartDate}"); if (!string.IsNullOrEmpty(scheduledProcedureStepStartDate) && scheduledProcedureStepStartDate != "*") { var index = scheduledProcedureStepStartDate.IndexOf("-"); if (index >= 0) { scheduledProcedureStepStartDate = scheduledProcedureStepStartDate.Substring(0, index); Logger.Info($"New scheduledProcedureStepStartDate: {scheduledProcedureStepStartDate}"); Log.Loger($"New scheduledProcedureStepStartDate: {scheduledProcedureStepStartDate}"); } if (string.IsNullOrEmpty(scheduledProcedureStepStartDate)) { return(true); } DateTime endDate = System.DateTime.Today.AddDays(1).AddSeconds(-1); DateTime startDate = endDate.AddDays(_cacheDays * -1); //DicomDateRange range = new DicomDateTime(DicomTag.ScheduledProcedureStepStartDate, startDate).Get<DicomDateRange>(); DicomDateRange range = new DicomDateRange(startDate, endDate); DateTime queryStartDate = new DicomDateTime(DicomTag.ScheduledProcedureStepStartDate, scheduledProcedureStepStartDate).Get <DateTime>(); return(!range.Contains(queryStartDate)); } } return(false); }
public static IEnumerable <DicomDataset> FilterWorklistItemsByDataset(DicomDataset request, List <DicomDataset> allDatasetItems, Logger Logger) { var exams = allDatasetItems.AsQueryable(); if (request.TryGetSingleValue(DicomTag.PatientID, out string patientId)) { if (patientId != "*") { Logger.Info($"Exam patientId: {patientId}"); Log.Loger($"Exam patientId: {patientId}"); exams = exams.Where(x => x.GetSingleValue <string>(DicomTag.PatientID).Equals(patientId)); } } /* var patientName = request.GetSingleValueOrDefault(DicomTag.PatientName, string.Empty); * if (!string.IsNullOrEmpty(patientName)) * { * Logger.Info($"Exam patientName: {patientName}"); * exams = exams.Where(x => x.GetSingleValueOrDefault<string>(DicomTag.PatientName, string.Empty).Contains(patientName)); * } */ if (request.Contains(DicomTag.ScheduledProcedureStepSequence)) { DicomDataset procedureStep = request.GetSequence(DicomTag.ScheduledProcedureStepSequence).First(); var scheduledProcedureStepStartDate = procedureStep.GetSingleValueOrDefault(DicomTag.ScheduledProcedureStepStartDate, string.Empty); var scheduledProcedureStepEndDate = procedureStep.GetSingleValueOrDefault(DicomTag.ScheduledProcedureStepEndDate, string.Empty); Logger.Info($"Exam scheduledProcedureStepStartDate: {scheduledProcedureStepStartDate}"); Log.Loger($"Exam scheduledProcedureStepStartDate: {scheduledProcedureStepStartDate}"); Logger.Info($"Exam scheduledProcedureStepEndDate: {scheduledProcedureStepEndDate}"); Log.Loger($"Exam scheduledProcedureStepEndDate: {scheduledProcedureStepEndDate}"); var index = scheduledProcedureStepStartDate.IndexOf("-"); if (index >= 0) { scheduledProcedureStepEndDate = scheduledProcedureStepStartDate.Substring(index + 1); Logger.Info($"Exam New scheduledProcedureStepEndDate: {scheduledProcedureStepEndDate}"); Log.Loger($"Exam New scheduledProcedureStepEndDate: {scheduledProcedureStepEndDate}"); scheduledProcedureStepStartDate = scheduledProcedureStepStartDate.Substring(0, index); Logger.Info($"Exam New scheduledProcedureStepStartDate: {scheduledProcedureStepStartDate}"); Log.Loger($"Exam New scheduledProcedureStepStartDate: {scheduledProcedureStepStartDate}"); } if (!string.IsNullOrEmpty(scheduledProcedureStepStartDate) && scheduledProcedureStepStartDate != "*" && !string.IsNullOrEmpty(scheduledProcedureStepEndDate) && scheduledProcedureStepEndDate != "*") { var st = new DicomDateTime(DicomTag.ScheduledProcedureStepStartDate, scheduledProcedureStepStartDate).Get <System.DateTime>(); var et = new DicomDateTime(DicomTag.ScheduledProcedureStepEndDate, scheduledProcedureStepEndDate).Get <System.DateTime>(); var range = new DicomDateRange(st, et); exams = exams.Where(x => range.Contains(System.DateTime.ParseExact(x.GetSequence(DicomTag.ScheduledProcedureStepSequence).First().GetSingleValueOrDefault(DicomTag.ScheduledProcedureStepStartDate, string.Empty), "yyyyMMdd", System.Globalization.CultureInfo.CurrentCulture))); } else if (string.IsNullOrEmpty(scheduledProcedureStepStartDate)) { // if no start date is specified, we just query today's data System.DateTime endDate = System.DateTime.Today.AddDays(1).AddSeconds(-1); System.DateTime startDate = System.DateTime.Today; DicomDateRange range = new DicomDateRange(startDate, endDate); exams = exams.Where(x => range.Contains(System.DateTime.ParseExact(x.GetSequence(DicomTag.ScheduledProcedureStepSequence).First().GetSingleValueOrDefault(DicomTag.ScheduledProcedureStepStartDate, string.Empty), "yyyyMMdd", System.Globalization.CultureInfo.CurrentCulture))); } } /* * var scheduledProcedureStepStartDateTime = request.GetSingleValueOrDefault(DicomTag.ScheduledProcedureStepStartDateTime, string.Empty); * if (!string.IsNullOrEmpty(scheduledProcedureStepStartDateTime) && scheduledProcedureStepStartDateTime != "*") * { * DicomDateRange range = new DicomDateTime(DicomTag.ScheduledProcedureStepStartDate, scheduledProcedureStepStartDateTime).Get<DicomDateRange>(); * exams = exams.Where(x => range.Contains(System.DateTime.Parse(x.GetSingleValueOrDefault<string>(DicomTag.ScheduledProcedureStepStartDateTime, string.Empty)))); * } */ var results = exams.ToList(); Logger.Info($"Exam Resutls number: {results.Count}"); Log.Loger($"Exam Resutls number: {results.Count}"); // Parsing result foreach (var result in results) { string log = WorklistItemsProvider.LogToConsole(result); Logger.Info(log); Log.Loger(log); // Send Reponse Back yield return(result); } }