public int GetStudyIntegrityQueueCount(ServerEntityKey studyStorageKey) { Platform.CheckForNullReference(studyStorageKey, "storageKey"); IStudyIntegrityQueueEntityBroker integrityQueueBroker = HttpContextData.Current.ReadContext.GetBroker<IStudyIntegrityQueueEntityBroker>(); StudyIntegrityQueueSelectCriteria parms = new StudyIntegrityQueueSelectCriteria(); parms.StudyStorageKey.EqualTo(studyStorageKey); return integrityQueueBroker.Count(parms); }
public IList<StudyIntegrityQueue> GetStudyIntegrityQueueItems(ServerEntityKey studyStorageKey) { Platform.CheckForNullReference(studyStorageKey, "storageKey"); IStudyIntegrityQueueEntityBroker integrityQueueBroker = HttpContext.Current.GetSharedPersistentContext().GetBroker<IStudyIntegrityQueueEntityBroker>(); StudyIntegrityQueueSelectCriteria parms = new StudyIntegrityQueueSelectCriteria(); parms.StudyStorageKey.EqualTo(studyStorageKey); return integrityQueueBroker.Find(parms); }
/// <summary> /// Finds all storage locations used for the study. /// </summary> protected void FindAllRelatedDirectories() { // Check the work queue for other entries IList<Model.WorkQueue> list; // NOTE: a local read context is used for lookup because we want to // release the lock on the rows asap. using (IReadContext ctx = PersistentStoreRegistry.GetDefaultStore().OpenReadContext()) { IWorkQueueEntityBroker broker = ctx.GetBroker<IWorkQueueEntityBroker>(); WorkQueueSelectCriteria criteria = new WorkQueueSelectCriteria(); criteria.StudyStorageKey.EqualTo(WorkQueueItem.StudyStorageKey); list = broker.Find(criteria); } List<DirectoryInfo> dirs = new List<DirectoryInfo>(); foreach(Model.WorkQueue item in list) { string path = GetWorkQueueSecondaryFolder(item); if (!string.IsNullOrEmpty(path)) dirs.Add(new DirectoryInfo(path)); } // NOTE: Under normal operation, the SIQ entries should be // empty at this point because the Delete Study button is disabled otherwise. // This block of code is still needed just in case this DeleteStudy work queue entry // is inserted through different means. IList<StudyIntegrityQueue> siqList; using (IReadContext ctx = PersistentStoreRegistry.GetDefaultStore().OpenReadContext()) { IStudyIntegrityQueueEntityBroker broker = ctx.GetBroker<IStudyIntegrityQueueEntityBroker>(); StudyIntegrityQueueSelectCriteria criteria = new StudyIntegrityQueueSelectCriteria(); criteria.StudyStorageKey.EqualTo(WorkQueueItem.StudyStorageKey); siqList = broker.Find(criteria); } foreach (StudyIntegrityQueue item in siqList) { string path = GetSIQItemStorageFolder(item); if (!string.IsNullOrEmpty(path)) dirs.Add(new DirectoryInfo(path)); } _relatedDirectories = dirs; }
protected void Page_Load(object sender, EventArgs e) { StudyIntegrityQueueController controller = new StudyIntegrityQueueController(); StudyIntegrityQueueSelectCriteria criteria = new StudyIntegrityQueueSelectCriteria(); criteria.StudyIntegrityReasonEnum.EqualTo(StudyIntegrityReasonEnum.Duplicate); Duplicates = controller.GetReconcileQueueItemsCount(criteria); DuplicateLink.PostBackUrl = ImageServerConstants.PageURLs.StudyIntegrityQueuePage + "?Databind=true&Reason=" + StudyIntegrityReasonEnum.Duplicate.Lookup; criteria.StudyIntegrityReasonEnum.EqualTo(StudyIntegrityReasonEnum.InconsistentData); InconsistentData = controller.GetReconcileQueueItemsCount(criteria); InconsistentDataLink.PostBackUrl = ImageServerConstants.PageURLs.StudyIntegrityQueuePage + "?Databind=true&Reason=" + StudyIntegrityReasonEnum.InconsistentData.Lookup ; TotalLinkButton.PostBackUrl = ImageServerConstants.PageURLs.StudyIntegrityQueuePage + "?Databind=true"; }
private Study GetStudyAndQueues(StudyStorageLocation location, out int integrityQueueCount, out int workQueueCount) { using (IReadContext context = _store.OpenReadContext()) { IStudyIntegrityQueueEntityBroker integrityBroker = context.GetBroker<IStudyIntegrityQueueEntityBroker>(); StudyIntegrityQueueSelectCriteria integrityCriteria = new StudyIntegrityQueueSelectCriteria(); integrityCriteria.StudyStorageKey.EqualTo(location.Key); integrityQueueCount = integrityBroker.Count(integrityCriteria); IWorkQueueEntityBroker workBroker = context.GetBroker<IWorkQueueEntityBroker>(); WorkQueueSelectCriteria workCriteria = new WorkQueueSelectCriteria(); workCriteria.StudyStorageKey.EqualTo(location.Key); workQueueCount = workBroker.Count(workCriteria); IStudyEntityBroker procedure = context.GetBroker<IStudyEntityBroker>(); StudySelectCriteria criteria = new StudySelectCriteria(); criteria.StudyStorageKey.EqualTo(location.Key); return procedure.FindOne(criteria); } }
public StudyIntegrityQueueSelectCriteria(StudyIntegrityQueueSelectCriteria other) : base(other) {}
/// <summary> /// Finds a list of <see cref="StudyIntegrityQueue"/> related to the specified <see cref="StudyStorage"/>. /// </summary> /// <param name="studyStorageKey"></param> /// <param name="filter">A delegate that will be used to filter the returned list. Pass in Null to get the entire list.</param> /// <returns>A list of <see cref="StudyIntegrityQueue"/></returns> static public IList<StudyIntegrityQueue> FindSIQEntries(ServerEntityKey studyStorageKey, Predicate<StudyIntegrityQueue> filter) { using (ServerExecutionContext scope = new ServerExecutionContext()) { IStudyIntegrityQueueEntityBroker broker = scope.PersistenceContext.GetBroker<IStudyIntegrityQueueEntityBroker>(); StudyIntegrityQueueSelectCriteria criteria = new StudyIntegrityQueueSelectCriteria(); criteria.StudyStorageKey.EqualTo(studyStorageKey); criteria.InsertTime.SortDesc(0); IList<StudyIntegrityQueue> list = broker.Find(criteria); if (filter != null) { CollectionUtils.Remove(list, filter); } return list; } }
/// <summary> /// Checks for the existinance of a SOP for a given Study in the <see cref="StudyIntegrityQueue"/>. /// </summary> /// <param name="studyStorageKey">The StudyStorage primary key</param> /// <param name="sopInstanceUid">The Sop Instance ot look for</param> /// <param name="seriesInstanceUid">The Series Instance Uid of the Sop</param> /// <returns>true if an entry exists, false if it doesn't</returns> static public bool StudyIntegrityUidExists(ServerEntityKey studyStorageKey, string seriesInstanceUid, string sopInstanceUid) { Platform.CheckForNullReference(studyStorageKey, "studyStorageKey"); using (ServerExecutionContext scope = new ServerExecutionContext()) { IStudyIntegrityQueueEntityBroker broker = scope.PersistenceContext.GetBroker<IStudyIntegrityQueueEntityBroker>(); StudyIntegrityQueueUidSelectCriteria uidSelectCriteria = new StudyIntegrityQueueUidSelectCriteria(); uidSelectCriteria.SeriesInstanceUid.EqualTo(seriesInstanceUid); uidSelectCriteria.SopInstanceUid.EqualTo(sopInstanceUid); StudyIntegrityQueueSelectCriteria selectCriteria = new StudyIntegrityQueueSelectCriteria(); selectCriteria.StudyStorageKey.EqualTo(studyStorageKey); selectCriteria.StudyIntegrityQueueUidRelatedEntityCondition.Exists(uidSelectCriteria); return broker.Count(selectCriteria) > 0; } }
private StudyIntegrityQueueSelectCriteria GetStudyIntegrityQueueCriteria() { var criteria = new StudyIntegrityQueueSelectCriteria(); // only query for device in this partition criteria.ServerPartitionKey.EqualTo(Partition.GetKey()); string description = string.Empty; if (!String.IsNullOrEmpty(PatientName)) { description += "%ExistingPatientName=" + PatientName; } if (!String.IsNullOrEmpty(PatientId)) { description += "%ExistingPatientId=" + PatientId ; } else if (!String.IsNullOrEmpty(description)) description += "%ExistingPatientId=%"; if (!String.IsNullOrEmpty(AccessionNumber)) { description += "%ExistingAccessionNumber=" + AccessionNumber; } else if (!String.IsNullOrEmpty(description)) description += "%ExistingAccessionNumber=%"; if(!String.IsNullOrEmpty(description)) { description = description.Replace("*", "%"); description = description.Replace("?", "_"); criteria.Description.Like(description); } if (!String.IsNullOrEmpty(FromInsertTime) || !String.IsNullOrEmpty(ToInsertTime)) { if (!String.IsNullOrEmpty(FromInsertTime) && !String.IsNullOrEmpty(ToInsertTime)) { DateTime fromTime = DateTime.Parse(FromInsertTime); DateTime toTime = DateTime.Parse(ToInsertTime); if (toTime == fromTime) criteria.InsertTime.Between(fromTime, fromTime.AddHours(24)); else criteria.InsertTime.Between(fromTime, toTime.AddHours(24)); } else if(!String.IsNullOrEmpty(FromInsertTime)) { DateTime fromTime = DateTime.Parse(FromInsertTime); criteria.InsertTime.MoreThanOrEqualTo(fromTime.AddHours(24)); } else { DateTime toTime = DateTime.Parse(ToInsertTime); criteria.InsertTime.LessThanOrEqualTo(toTime.AddHours(24)); } } if(ReasonEnum.Count > 0) { criteria.StudyIntegrityReasonEnum.In(ReasonEnum); } // Must do a sort order for range search to work right in this release. criteria.InsertTime.SortAsc(0); return criteria; }
public int GetReconcileQueueItemsCount(StudyIntegrityQueueSelectCriteria criteria) { return _adaptor.GetCount(criteria); }
public IList<StudyIntegrityQueue> GetRangeStudyIntegrityQueueItems(StudyIntegrityQueueSelectCriteria criteria, int startIndex, int maxRows) { return _adaptor.GetRange(criteria, startIndex, maxRows); }
public IList<StudyIntegrityQueue> GetStudyIntegrityQueueItems(StudyIntegrityQueueSelectCriteria criteria) { return _adaptor.Get(criteria); }
public StudyIntegrityQueueSelectCriteria(StudyIntegrityQueueSelectCriteria other) : base(other) { }
protected override void OnPreRender(EventArgs e) { base.OnPreRender(e); // Get a count of the number of SIQ entries for the StudyStorageLocation. If there's // any, we don't enable the Delete button. var siqController = new StudyIntegrityQueueController(); var criteria = new StudyIntegrityQueueSelectCriteria(); criteria.StudyStorageKey.EqualTo(Study.TheStudyStorage.Key); int siqCount = siqController.GetReconcileQueueItemsCount(criteria); string reason; bool seriesDelete = Study.CanScheduleSeriesDelete(out reason); foreach(GridViewRow row in GridView1.Rows) { if (row.RowType == DataControlRowType.DataRow) { int index = GridView1.PageIndex * GridView1.PageSize + row.RowIndex; Series series = _series[index]; row.Attributes["serverae"] = _serverPartition.AeTitle; row.Attributes["studyuid"] = _study.StudyInstanceUid; row.Attributes["seriesuid"] = series.SeriesInstanceUid; var controller = new StudyController(); if (controller.CanManipulateSeries(Study.TheStudyStorage.Key)) { if (siqCount==0 && seriesDelete) row.Attributes.Add("candelete", "true"); row.Attributes.Add("canmove", "true"); } } } }