Beispiel #1
0
        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);
        }
Beispiel #2
0
        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);
            }
        }