private IWorkItemProcessor InsertImportFiles(WorkItemPriorityEnum priority, WorkItemStatusEnum status) { var rq = new WorkItemInsertRequest { Request = new ImportFilesRequest() { Priority = priority, BadFileBehaviour = BadFileBehaviourEnum.Delete, FileImportBehaviour = FileImportBehaviourEnum.Save, FilePaths = new List<string>(), } }; var rsp = WorkItemService.Instance.Insert(rq); var updateRequest = new WorkItemUpdateRequest { Status = status, Identifier = rsp.Item.Identifier }; // TODO (CR Jul 2012): Can I actually force an item to "In Progress" this way? Probably shouldn't be able to do that. WorkItemService.Instance.Update(updateRequest); using (var context = new DataAccessContext(DataAccessContext.WorkItemMutex)) { var broker = context.GetWorkItemBroker(); var d = new ImportItemProcessor(); d.Initialize(new WorkItemStatusProxy(broker.GetWorkItem(rsp.Item.Identifier))); return d; } }
public WorkItemUpdateResponse Update(WorkItemUpdateRequest request) { try { return WorkItemService.Instance.Update(request); } catch (Exception e) { Platform.Log(LogLevel.Error, e); var message = SR.ExceptionErrorProcessingUpdate; var exceptionMessage = String.Format("{0}\nDetail:{1}", message, e.Message); throw new WorkItemServiceException(exceptionMessage); } }
public WorkItemUpdateResponse Update(WorkItemUpdateRequest request) { var response = new WorkItemUpdateResponse(); using (var context = new DataAccessContext(DataAccessContext.WorkItemMutex)) { var broker = context.GetWorkItemBroker(); var workItem = broker.GetWorkItem(request.Identifier); if (workItem == null) { response.Item = null; return response; } bool deleted = false; if (request.Delete.HasValue && request.Delete.Value) { if (workItem.Status != WorkItemStatusEnum.InProgress) { workItem.Status = WorkItemStatusEnum.Deleted; deleted = true; // If StudyDelete we're removing, "undelete" the study CheckDeleteStudyCanceled(context, workItem); } } if (!deleted) { if (request.ExpirationTime.HasValue) workItem.ExpirationTime = request.ExpirationTime.Value; if (request.Priority.HasValue) workItem.Priority = request.Priority.Value; if (request.Status.HasValue && workItem.Status != WorkItemStatusEnum.InProgress) { workItem.Status = request.Status.Value; if (request.Status.Value == WorkItemStatusEnum.Canceled) workItem.DeleteTime = Platform.Time.AddMinutes(WorkItemServiceSettings.Default.DeleteDelayMinutes); else if (request.Status.Value == WorkItemStatusEnum.Pending) { workItem.ScheduledTime = Platform.Time; workItem.FailureCount = 0; } // Cache the UserIdentityContext for later use by the shred if (workItem.Request.WorkItemType.Equals(ImportFilesRequest.WorkItemTypeString) && request.Status.Value == WorkItemStatusEnum.Pending) UserIdentityCache.Put(workItem.Oid, UserIdentityContext.CreateFromCurrentThreadPrincipal()); } if (request.ProcessTime.HasValue) workItem.ProcessTime = request.ProcessTime.Value; if (request.Cancel.HasValue && request.Cancel.Value) { if (workItem.Progress == null || workItem.Progress.IsCancelable) { if (workItem.Status.Equals(WorkItemStatusEnum.Idle) || workItem.Status.Equals(WorkItemStatusEnum.Pending)) { workItem.Status = WorkItemStatusEnum.Canceled; // If StudyDelete we're removing, "undelete" the study CheckDeleteStudyCanceled(context, workItem); } else if (workItem.Status.Equals(WorkItemStatusEnum.InProgress)) { // Abort the WorkItem WorkItemProcessor.Instance.Cancel(workItem.Oid); } } } } context.Commit(); response.Item = WorkItemDataHelper.FromWorkItem(workItem); } WorkItemPublishSubscribeHelper.PublishWorkItemChanged(WorkItemsChangedEventType.Update, response.Item); return response; }
public WorkItemUpdateResponse Update(WorkItemUpdateRequest request) { return(Channel.Update(request)); }
private IWorkItemProcessor InsertStudyDelete(DicomMessageBase msg, WorkItemPriorityEnum priority, WorkItemStatusEnum status) { var rq = new WorkItemInsertRequest { Request = new DeleteStudyRequest { Patient = new WorkItemPatient(msg.DataSet), Study = new WorkItemStudy(msg.DataSet), Priority = priority } }; var rsp = WorkItemService.Instance.Insert(rq); var updateRequest = new WorkItemUpdateRequest { Status = status, Identifier = rsp.Item.Identifier }; WorkItemService.Instance.Update(updateRequest); using (var context = new DataAccessContext(DataAccessContext.WorkItemMutex)) { var broker = context.GetWorkItemBroker(); var d = new DeleteStudyItemProcessor(); d.Initialize(new WorkItemStatusProxy(broker.GetWorkItem(rsp.Item.Identifier))); return d; } }
private IWorkItemProcessor InsertReapplyRules(WorkItemPriorityEnum priority, WorkItemStatusEnum status) { var rq = new WorkItemInsertRequest { Request = new ReapplyRulesRequest { ApplyDeleteActions = true, ApplyRouteActions = true, Priority = priority } }; var rsp = WorkItemService.Instance.Insert(rq); var updateRequest = new WorkItemUpdateRequest { Status = status, Identifier = rsp.Item.Identifier }; WorkItemService.Instance.Update(updateRequest); using (var context = new DataAccessContext(DataAccessContext.WorkItemMutex)) { var broker = context.GetWorkItemBroker(); var d = new ReapplyRulesItemProcessor(); d.Initialize(new WorkItemStatusProxy(broker.GetWorkItem(rsp.Item.Identifier))); return d; } }
private IWorkItemProcessor InsertStudyProcess(DicomMessageBase msg, WorkItemPriorityEnum priority, WorkItemStatusEnum status, DateTime? processTime = null) { var rq = new WorkItemInsertRequest { Request = new DicomReceiveRequest { Patient = new WorkItemPatient(msg.DataSet), Study = new WorkItemStudy(msg.DataSet), SourceServerName = "TEST", Priority = priority } }; var rsp = WorkItemService.Instance.Insert(rq); var updateRequest = new WorkItemUpdateRequest { Status = status, Identifier = rsp.Item.Identifier, ProcessTime = processTime }; WorkItemService.Instance.Update(updateRequest); using (var context = new DataAccessContext(DataAccessContext.WorkItemMutex)) { var broker = context.GetWorkItemBroker(); var d = new StudyProcessProcessor(); d.Initialize(new WorkItemStatusProxy(broker.GetWorkItem(rsp.Item.Identifier))); return d; } }