private IEnumerable <WorkItem> GetWorkItems(List <string> types, WorkItemStatusFilter statusFilter, string studyInstanceUid, long?identifier)
        {
            IQueryable <WorkItem> query = from w in Context.WorkItems select w;

            if (identifier.HasValue)
            {
                query = query.Where(w => w.Oid == identifier.Value);
            }

            if (types != null && types.Count > 0)
            {
                if (types.Count == 1)
                {
                    query = query.Where(w => types[0] == w.Type);
                }
                else
                {
                    query = query.Where(w => types.Contains(w.Type));
                }
            }

            statusFilter = statusFilter ?? WorkItemStatusFilter.NotDeleted;
            query        = statusFilter.Apply(query);

            if (!string.IsNullOrEmpty(studyInstanceUid))
            {
                query = query.Where(w => w.StudyInstanceUid == studyInstanceUid);
            }

            query = query.OrderBy(w => w.ProcessTime);
            query = query.OrderBy(w => w.Priority);

            return(query.AsEnumerable());
        }
		private IEnumerable<WorkItem> GetWorkItems(List<string> types, WorkItemStatusFilter statusFilter, string studyInstanceUid, long? identifier)
		{
			IQueryable<WorkItem> query = from w in Context.WorkItems select w;

			if (identifier.HasValue)
				query = query.Where(w => w.Oid == identifier.Value);

			if (types != null && types.Count > 0)
			{
				if (types.Count == 1)
					query = query.Where(w => types[0] == w.Type);
				else
					query = query.Where(w => types.Contains(w.Type));
			}

			statusFilter = statusFilter ?? WorkItemStatusFilter.NotDeleted;
			query = statusFilter.Apply(query);

			if (!string.IsNullOrEmpty(studyInstanceUid))
				query = query.Where(w => w.StudyInstanceUid == studyInstanceUid);

			query = query.OrderBy(w => w.ProcessTime);
			query = query.OrderBy(w => w.Priority);

			return query.AsEnumerable();
		}
		public IEnumerable<WorkItem> GetWorkItems(string type, WorkItemStatusFilter statusFilter, string studyInstanceUid, long? identifier = null)
		{
			List<string> types = !String.IsNullOrEmpty(type) ? new List<string>(new[] {type}) : null;
			return GetWorkItems(types, statusFilter, studyInstanceUid, identifier);
		}
		public IEnumerable<WorkItem> GetWorkItems(WorkItemConcurrency concurrency, WorkItemStatusFilter statusFilter, string studyInstanceUid, long? identifier = null)
		{
			return GetWorkItems(concurrency.GetWorkItemTypes(), statusFilter, studyInstanceUid, identifier);
		}
		/// <summary>
		/// Get the WorkItems scheduled before <paramref name="scheduledTime"/> for <paramref name="studyInstanceUid"/>
		/// and/or that are a higher priority and have not yet terminated (e.g. Waiting to run, or actively running).
		/// </summary>
		/// <param name="scheduledTime">The scheduled time to get related WorkItems for.</param>
		/// <param name="priority">The priority of the workitem to compare with.</param>
		/// <param name="statusFilter">A filter for the work item status.</param>
		/// <param name="studyInstanceUid">The Study Instance UID to search for matching WorkItems. Can be null.</param>
		/// <param name="workItemTypes">The work item type(s) of the items to be returned. Can be null.</param>
		/// <returns></returns>
		public IEnumerable<WorkItem> GetWorkItemsScheduledBeforeOrHigherPriority(DateTime scheduledTime, WorkItemPriorityEnum priority, WorkItemStatusFilter statusFilter, string studyInstanceUid, params string[] workItemTypes)
		{
			IQueryable<WorkItem> query = from w in Context.WorkItems select w;

            query = query.Where(w => w.ScheduledTime < Platform.Time);
			query = query.Where(w => (w.ScheduledTime < scheduledTime && w.Priority <= priority) || w.Priority < priority);
			statusFilter = statusFilter ?? WorkItemStatusFilter.Active;
			query = statusFilter.Apply(query);

			if (!string.IsNullOrEmpty(studyInstanceUid))
				query = query.Where(w => w.StudyInstanceUid == studyInstanceUid);

			if (workItemTypes != null && workItemTypes.Length > 0)
			{
				if (workItemTypes.Length == 1)
					query = query.Where(w => workItemTypes[0] == w.Type);
				else
					query = query.Where(w => workItemTypes.Contains(w.Type));
			}

			query = query.OrderBy(w => w.ScheduledTime);
			query = query.OrderBy(w => w.Priority);
			return query.AsEnumerable();
		}
		/// <summary>
		/// Get the WorkItems scheduled before <paramref name="scheduledTime"/> for <paramref name="studyInstanceUid"/>
		/// and/or that are a higher priority and have not yet terminated (e.g. Waiting to run, or actively running).
		/// </summary>
		/// <param name="scheduledTime">The scheduled time to get related WorkItems for.</param>
		/// <param name="priority">The priority of the workitem to compare with.</param>
		/// <param name="statusFilter">A filter for the work item status.</param>
		/// <param name="studyInstanceUid">The Study Instance UID to search for matching WorkItems. Can be null.</param>
		/// <param name="concurrency">The concurrency type of the items to be returned.</param>
		/// <returns></returns>
		public IEnumerable<WorkItem> GetWorkItemsScheduledBeforeOrHigherPriority(DateTime scheduledTime, WorkItemPriorityEnum priority, WorkItemStatusFilter statusFilter, string studyInstanceUid, WorkItemConcurrency concurrency)
		{
			return GetWorkItemsScheduledBeforeOrHigherPriority(scheduledTime, priority, statusFilter, studyInstanceUid, concurrency.GetWorkItemTypes().ToArray());
		}
Exemple #7
0
 public IEnumerable<WorkItem> GetWorkItems(string type, WorkItemStatusFilter statusFilter, string studyInstanceUid)
 {
     string[] types = !String.IsNullOrEmpty(type) ? new[] {type} : null;
     return GetWorkItems(types, statusFilter, studyInstanceUid);
 }
Exemple #8
0
 public IEnumerable<WorkItem> GetWorkItems(WorkItemConcurrency concurrency, WorkItemStatusFilter statusFilter, string studyInstanceUid)
 {
     return GetWorkItems(concurrency.GetWorkItemTypes(), statusFilter, studyInstanceUid);
 }
 public IEnumerable <WorkItem> GetWorkItems(WorkItemConcurrency concurrency, WorkItemStatusFilter statusFilter, string studyInstanceUid, long?identifier = null)
 {
     return(GetWorkItems(concurrency.GetWorkItemTypes(), statusFilter, studyInstanceUid, identifier));
 }
        public IEnumerable <WorkItem> GetWorkItems(string type, WorkItemStatusFilter statusFilter, string studyInstanceUid, long?identifier = null)
        {
            List <string> types = !String.IsNullOrEmpty(type) ? new List <string>(new[] { type }) : null;

            return(GetWorkItems(types, statusFilter, studyInstanceUid, identifier));
        }
        /// <summary>
        /// Get the WorkItems scheduled before <paramref name="scheduledTime"/> for <paramref name="studyInstanceUid"/>
        /// and/or that are a higher priority and have not yet terminated (e.g. Waiting to run, or actively running).
        /// </summary>
        /// <param name="scheduledTime">The scheduled time to get related WorkItems for.</param>
        /// <param name="priority">The priority of the workitem to compare with.</param>
        /// <param name="statusFilter">A filter for the work item status.</param>
        /// <param name="studyInstanceUid">The Study Instance UID to search for matching WorkItems. Can be null.</param>
        /// <param name="workItemTypes">The work item type(s) of the items to be returned. Can be null.</param>
        /// <returns></returns>
        public IEnumerable <WorkItem> GetWorkItemsScheduledBeforeOrHigherPriority(DateTime scheduledTime, WorkItemPriorityEnum priority, WorkItemStatusFilter statusFilter, string studyInstanceUid, params string[] workItemTypes)
        {
            IQueryable <WorkItem> query = from w in Context.WorkItems select w;

            query        = query.Where(w => w.ScheduledTime < Platform.Time);
            query        = query.Where(w => (w.ScheduledTime < scheduledTime && w.Priority <= priority) || w.Priority < priority);
            statusFilter = statusFilter ?? WorkItemStatusFilter.Active;
            query        = statusFilter.Apply(query);

            if (!string.IsNullOrEmpty(studyInstanceUid))
            {
                query = query.Where(w => w.StudyInstanceUid == studyInstanceUid);
            }

            if (workItemTypes != null && workItemTypes.Length > 0)
            {
                if (workItemTypes.Length == 1)
                {
                    query = query.Where(w => workItemTypes[0] == w.Type);
                }
                else
                {
                    query = query.Where(w => workItemTypes.Contains(w.Type));
                }
            }

            query = query.OrderBy(w => w.ScheduledTime);
            query = query.OrderBy(w => w.Priority);
            return(query.AsEnumerable());
        }
 /// <summary>
 /// Get the WorkItems scheduled before <paramref name="scheduledTime"/> for <paramref name="studyInstanceUid"/>
 /// and/or that are a higher priority and have not yet terminated (e.g. Waiting to run, or actively running).
 /// </summary>
 /// <param name="scheduledTime">The scheduled time to get related WorkItems for.</param>
 /// <param name="priority">The priority of the workitem to compare with.</param>
 /// <param name="statusFilter">A filter for the work item status.</param>
 /// <param name="studyInstanceUid">The Study Instance UID to search for matching WorkItems. Can be null.</param>
 /// <param name="concurrency">The concurrency type of the items to be returned.</param>
 /// <returns></returns>
 public IEnumerable <WorkItem> GetWorkItemsScheduledBeforeOrHigherPriority(DateTime scheduledTime, WorkItemPriorityEnum priority, WorkItemStatusFilter statusFilter, string studyInstanceUid, WorkItemConcurrency concurrency)
 {
     return(GetWorkItemsScheduledBeforeOrHigherPriority(scheduledTime, priority, statusFilter, studyInstanceUid, concurrency.GetWorkItemTypes().ToArray()));
 }
        private IEnumerable<WorkItem> GetStudyWorkItemsScheduledBeforeOrHigherPriority(WorkItem workItem, WorkItemStatusFilter statusFilter)
        {
            //Don't bother if the work item's not for a study.
            if (String.IsNullOrEmpty(workItem.StudyInstanceUid))
                return new List<WorkItem>();

            var broker = _context.GetWorkItemBroker();

            var workItems = broker.GetWorkItemsScheduledBeforeOrHigherPriority(workItem.ScheduledTime, workItem.Priority, statusFilter, workItem.StudyInstanceUid);

            //Shouldn't get the same one back, but do this just to be safe.
            return workItems.Where(w => w.Oid != workItem.Oid);
        }
Exemple #14
0
 public IEnumerable <WorkItem> GetWorkItems(WorkItemConcurrency concurrency, WorkItemStatusFilter statusFilter, string studyInstanceUid)
 {
     return(GetWorkItems(concurrency.GetWorkItemTypes(), statusFilter, studyInstanceUid));
 }
Exemple #15
0
 public IEnumerable <WorkItem> GetWorkItems(string type, WorkItemStatusFilter statusFilter, string studyInstanceUid)
 {
     string[] types = !String.IsNullOrEmpty(type) ? new[] { type } : null;
     return(GetWorkItems(types, statusFilter, studyInstanceUid));
 }