Ejemplo n.º 1
0
        protected void Page_Load(object sender, EventArgs e)
        {
            var controller = new WorkQueueController();

            WorkQueueDataList.DataSource = controller.GetWorkQueueOverview();
            DataBind();
        }
Ejemplo n.º 2
0
 public void ReprocessWorkQueueItem(ServerEntityKey itemKey)
 {
     if (itemKey != null)
     {
         Model.WorkQueue item       = Model.WorkQueue.Load(itemKey);
         var             controller = new WorkQueueController();
         try
         {
             if (controller.ReprocessWorkQueueItem(item))
             {
                 InformationDialog.Message     = SR.ReprocessOK;
                 InformationDialog.MessageType = MessageBox.MessageTypeEnum.INFORMATION;
                 InformationDialog.Show();
             }
             else
             {
                 InformationDialog.Message     = SR.ReprocessFailed;
                 InformationDialog.MessageType = MessageBox.MessageTypeEnum.ERROR;
                 InformationDialog.Show();
             }
         }
         catch (InvalidStudyStateOperationException ex)
         {
             ShowErrorMessage(ex.Message);
         }
     }
 }
        private static WorkQueueDetails CreateGeneralWorkQueueItemDetails(Model.WorkQueue item)
        {
            var detail = new WorkQueueDetails();

            detail.Key = item.Key;
            detail.ScheduledDateTime = item.ScheduledTime;
            detail.ExpirationTime    = item.ExpirationTime;
            detail.InsertTime        = item.InsertTime;
            detail.FailureCount      = item.FailureCount;
            detail.Type               = item.WorkQueueTypeEnum;
            detail.Status             = item.WorkQueueStatusEnum;
            detail.Priority           = item.WorkQueuePriorityEnum;
            detail.FailureDescription = item.FailureDescription;
            detail.ServerDescription  = item.ProcessorID;

            StudyStorageLocation storage = WorkQueueController.GetLoadStorageLocation(item);

            detail.StorageLocationPath = storage.GetStudyPath();

            // Fetch UIDs
            var wqUidsAdaptor = new WorkQueueUidAdaptor();
            var uidCriteria   = new WorkQueueUidSelectCriteria();

            uidCriteria.WorkQueueKey.EqualTo(item.GetKey());
            IList <WorkQueueUid> uids = wqUidsAdaptor.Get(uidCriteria);

            var mapSeries = new Hashtable();

            foreach (WorkQueueUid uid in uids)
            {
                if (mapSeries.ContainsKey(uid.SeriesInstanceUid) == false)
                {
                    mapSeries.Add(uid.SeriesInstanceUid, uid.SopInstanceUid);
                }
            }

            detail.NumInstancesPending = uids.Count;
            detail.NumSeriesPending    = mapSeries.Count;


            // Fetch the study and patient info
            var          ssAdaptor = new StudyStorageAdaptor();
            StudyStorage storages  = ssAdaptor.Get(item.StudyStorageKey);

            var studyAdaptor  = new StudyAdaptor();
            var studycriteria = new StudySelectCriteria();

            studycriteria.StudyInstanceUid.EqualTo(storages.StudyInstanceUid);
            studycriteria.ServerPartitionKey.EqualTo(item.ServerPartitionKey);
            Study study = studyAdaptor.GetFirst(studycriteria);

            // Study may not be available until the images are processed.
            if (study != null)
            {
                var studyAssembler = new StudyDetailsAssembler();
                detail.Study = studyAssembler.CreateStudyDetail(study);
            }
            return(detail);
        }
Ejemplo n.º 4
0
 protected void UpdateToolBarButtons()
 {
     RescheduleToolbarButton.Enabled = WorkQueue != null && WorkQueueController.CanReschedule(WorkQueue);
     ResetButton.Enabled             = WorkQueue != null && WorkQueueController.CanReset(WorkQueue);
     DeleteButton.Enabled            = WorkQueue != null && WorkQueueController.CanDelete(WorkQueue);
     ReprocessButton.Enabled         = WorkQueue != null && WorkQueueController.CanReprocess(WorkQueue);
     StudyDetailsButton.Enabled      = ItemStudy != null;
 }
        private void CustomizeRowAttribute(GridViewRow row)
        {
            WorkQueueSummary item = row.DataItem as WorkQueueSummary;

            row.Attributes["canreschedule"] = WorkQueueController.CanReschedule(item.TheWorkQueueItem).ToString().ToLower();
            row.Attributes["canreset"]      = WorkQueueController.CanReset(item.TheWorkQueueItem).ToString().ToLower();
            row.Attributes["candelete"]     = WorkQueueController.CanDelete(item.TheWorkQueueItem).ToString().ToLower();
            row.Attributes["canreprocess"]  = WorkQueueController.CanReprocess(item.TheWorkQueueItem).ToString().ToLower();
        }
Ejemplo n.º 6
0
 private void ReprocessWorkQueueItem(Model.WorkQueue item)
 {
     try
     {
         var controller = new WorkQueueController();
         if (controller.ReprocessWorkQueueItem(item))
         {
             MessageBox.Message     = SR.ReprocessOK;
             MessageBox.MessageType = MessageBox.MessageTypeEnum.INFORMATION;
             MessageBox.Show();
         }
         else
         {
             ShowErrorMessage(SR.ReprocessFailed);
         }
     }
     catch (InvalidStudyStateOperationException ex)
     {
         ShowErrorMessage(ex.Message);
     }
 }
        private void PreDeleteConfirmDialog_Confirmed(object data)
        {
            Hide();

            var key = data as ServerEntityKey;

            if (key != null)
            {
                var             adaptor = new WorkQueueAdaptor();
                Model.WorkQueue item    = adaptor.Get(key);
                if (item == null)
                {
                    MessageBox.Message     = SR.WorkQueueNotAvailable;
                    MessageBox.MessageType = MessageBox.MessageTypeEnum.ERROR;
                    MessageBox.Show();
                }
                else
                {
                    if (item.WorkQueueStatusEnum == WorkQueueStatusEnum.InProgress)
                    {
                        MessageBox.Message     = SR.WorkQueueBeingProcessed_CannotDelete;
                        MessageBox.MessageType =
                            MessageBox.MessageTypeEnum.ERROR;
                        MessageBox.Show();
                        return;
                    }

                    try
                    {
                        bool successful;
                        var  controller = new WorkQueueController();
                        var  items      = new List <Model.WorkQueue>();
                        items.Add(item);

                        successful = controller.DeleteWorkQueueItems(items);
                        if (successful)
                        {
                            Platform.Log(LogLevel.Info, "Work Queue item deleted by user : Item Key={0}",
                                         item.GetKey().Key);

                            if (WorkQueueItemDeleted != null)
                            {
                                WorkQueueItemDeleted(item);
                            }

                            if (OnHide != null)
                            {
                                OnHide();
                            }
                        }
                        else
                        {
                            Platform.Log(LogLevel.Error,
                                         "PreResetConfirmDialog_Confirmed: Unable to delete work queue item. GUID={0}",
                                         item.GetKey().Key);

                            MessageBox.Message     = SR.WorkQueueDeleteFailed;
                            MessageBox.MessageType =
                                MessageBox.MessageTypeEnum.ERROR;
                            MessageBox.Show();
                        }
                    }
                    catch (Exception e)
                    {
                        Platform.Log(LogLevel.Error,
                                     "PreResetConfirmDialog_Confirmed: Unable to delete work queue item. GUID={0} : {1}",
                                     item.GetKey().Key, e.StackTrace);

                        MessageBox.Message     = String.Format(SR.WorkQueueDeleteFailed_WithException, e.Message);
                        MessageBox.MessageType = MessageBox.MessageTypeEnum.ERROR;
                        MessageBox.Show();
                    }
                }
            }
        }
Ejemplo n.º 8
0
        protected void ApplyChanges()
        {
            if (WorkQueues != null)
            {
                var toBeUpdatedList = new List <Model.WorkQueue>();
                foreach (Model.WorkQueue item in WorkQueues)
                {
                    if (item != null)
                    {
                        toBeUpdatedList.Add(item);
                    }
                }

                if (toBeUpdatedList.Count > 0)
                {
                    DateTime newScheduleTime = Platform.Time;

                    if (WorkQueueSettingsPanel.NewScheduledDateTime != null &&
                        WorkQueueSettingsPanel.ScheduleNow == false)
                    {
                        newScheduleTime = WorkQueueSettingsPanel.NewScheduledDateTime.Value;
                    }

                    if (newScheduleTime < Platform.Time && WorkQueueSettingsPanel.ScheduleNow == false)
                    {
                        MessageDialog.MessageType =
                            MessageBox.MessageTypeEnum.ERROR;
                        MessageDialog.Message = HttpContext.GetGlobalResourceObject("SR", "WorkQueueRescheduleFailed_MustBeInFuture") as string;
                        MessageDialog.Show();
                        ModalDialog.Show();
                    }
                    else
                    {
                        DateTime expirationTime =
                            newScheduleTime.AddSeconds(WorkQueueSettings.Default.WorkQueueExpireDelaySeconds);

                        WorkQueuePriorityEnum priority = WorkQueueSettingsPanel.SelectedPriority;

                        try
                        {
                            var  controller = new WorkQueueController();
                            bool result     =
                                controller.RescheduleWorkQueueItems(toBeUpdatedList, newScheduleTime, expirationTime,
                                                                    priority);
                            if (result)
                            {
                                if (WorkQueueUpdated != null)
                                {
                                    WorkQueueUpdated(toBeUpdatedList);
                                }
                            }
                            else
                            {
                                Platform.Log(LogLevel.Error, "Unable to reschedule work queue items for user");
                                MessageDialog.MessageType =
                                    MessageBox.MessageTypeEnum.ERROR;
                                MessageDialog.Message = "Unable to reschedule this/these work queue items";
                                MessageDialog.Show();
                            }
                        }
                        catch (Exception e)
                        {
                            Platform.Log(LogLevel.Error, "Unable to reschedule work queue items for user : {0}",
                                         e.StackTrace);

                            MessageDialog.MessageType =
                                MessageBox.MessageTypeEnum.ERROR;
                            MessageDialog.Message =
                                String.Format(HttpContext.GetGlobalResourceObject("SR", "WorkQueueRescheduleFailed_Exception") as string, e.Message);
                            MessageDialog.Show();
                        }
                    }
                }
            }
        }
        private static WorkQueueDetails CreateEditWorkQueueItemDetails(Model.WorkQueue item)
        {
            string studyPath;

            try
            {
                StudyStorageLocation storage = WorkQueueController.GetLoadStorageLocation(item);
                studyPath = storage.GetStudyPath();
            }
            catch (Exception)
            {
                studyPath = string.Empty;
            }
            var detail = new WorkQueueDetails
            {
                Key = item.Key,
                ScheduledDateTime = item.ScheduledTime,
                ExpirationTime    = item.ExpirationTime,
                InsertTime        = item.InsertTime,
                FailureCount      = item.FailureCount,
                Type                = item.WorkQueueTypeEnum,
                Status              = item.WorkQueueStatusEnum,
                Priority            = item.WorkQueuePriorityEnum,
                FailureDescription  = item.FailureDescription,
                ServerDescription   = item.ProcessorID,
                StorageLocationPath = studyPath
            };



            // Fetch UIDs
            var wqUidsAdaptor = new WorkQueueUidAdaptor();
            var uidCriteria   = new WorkQueueUidSelectCriteria();

            uidCriteria.WorkQueueKey.EqualTo(item.GetKey());
            IList <WorkQueueUid> uids = wqUidsAdaptor.Get(uidCriteria);

            var mapSeries = new Hashtable();

            foreach (WorkQueueUid uid in uids)
            {
                if (mapSeries.ContainsKey(uid.SeriesInstanceUid) == false)
                {
                    mapSeries.Add(uid.SeriesInstanceUid, uid.SopInstanceUid);
                }
            }

            detail.NumInstancesPending = uids.Count;
            detail.NumSeriesPending    = mapSeries.Count;


            // Fetch the study and patient info
            var          ssAdaptor = new StudyStorageAdaptor();
            StudyStorage storages  = ssAdaptor.Get(item.StudyStorageKey);

            var studyAdaptor  = new StudyAdaptor();
            var studycriteria = new StudySelectCriteria();

            studycriteria.StudyInstanceUid.EqualTo(storages.StudyInstanceUid);
            studycriteria.ServerPartitionKey.EqualTo(item.ServerPartitionKey);
            Study study = studyAdaptor.GetFirst(studycriteria);

            // Study may not be available until the images are processed.
            if (study != null)
            {
                var studyAssembler = new StudyDetailsAssembler();
                detail.Study = studyAssembler.CreateStudyDetail(study);
            }

            var parser = new EditStudyWorkQueueDataParser();
            EditStudyWorkQueueData data = parser.Parse(item.Data.DocumentElement);

            detail.EditUpdateItems = data.EditRequest.UpdateEntries.ToArray();

            return(detail);
        }
        private void PreResetConfirmDialog_Confirmed(object data)
        {
            Hide();

            var key = data as ServerEntityKey;

            if (key != null)
            {
                var             adaptor = new WorkQueueAdaptor();
                Model.WorkQueue item    = adaptor.Get(key);
                if (item == null)
                {
                    String errorMessage = SR.WorkQueueNotAvailable;
                    EventsHelper.Fire(Error, this, new WorkQueueItemResetErrorEventArgs(errorMessage, null));
                }
                else
                {
                    var      controller    = new WorkQueueController();
                    DateTime scheduledTime = item.ScheduledTime;
                    if (scheduledTime < Platform.Time)
                    {
                        scheduledTime = Platform.Time.AddSeconds(WorkQueueSettings.Default.WorkQueueProcessDelaySeconds);
                    }

                    DateTime expirationTime = item.ExpirationTime;
                    if (expirationTime < scheduledTime)
                    {
                        expirationTime = scheduledTime.AddSeconds(WorkQueueSettings.Default.WorkQueueExpireDelaySeconds);
                    }

                    try
                    {
                        var items = new List <Model.WorkQueue>();
                        items.Add(item);

                        controller.ResetWorkQueueItems(items, scheduledTime, expirationTime);

                        Platform.Log(LogLevel.Info, "{0} Work Queue item reset:  Key={1}.", item.WorkQueueTypeEnum,
                                     item.GetKey());
                        if (WorkQueueItemReseted != null)
                        {
                            WorkQueueItemReseted(item);
                        }

                        if (OnHide != null)
                        {
                            OnHide();
                        }
                    }
                    catch (Exception e)
                    {
                        Platform.Log(LogLevel.Error, e, "Unable to reset {0} work queue item. Key={1}.",
                                     item.WorkQueueTypeEnum, item.GetKey());

                        String errorMessage = String.Format(SR.WorkQueueResetFailed, e.Message);

                        EventsHelper.Fire(Error, this, new WorkQueueItemResetErrorEventArgs(errorMessage, e));
                    }
                }
            }
        }