protected override void OnExecute(CommandProcessor theProcessor, IUpdateContext updateContext) { var broker = updateContext.GetBroker <IInsertDuplicateSopReceivedQueue>(); var parms = new InsertDuplicateSopReceivedQueueParameters { GroupID = _groupId, ServerPartitionKey = _studyLocation.ServerPartitionKey, StudyStorageKey = _studyLocation.Key, StudyInstanceUid = _file.DataSet[DicomTags.StudyInstanceUid].ToString(), SeriesDescription = _file.DataSet[DicomTags.SeriesDescription].ToString(), SeriesInstanceUid = _file.DataSet[DicomTags.SeriesInstanceUid].ToString(), SopInstanceUid = _file.MediaStorageSopInstanceUid }; ReconcileStudyQueueDescription queueDesc = CreateQueueEntryDescription(_file); parms.Description = queueDesc != null?queueDesc.ToString() : String.Empty; var queueData = new DuplicateSIQQueueData { StoragePath = _duplicateStoragePath, Details = new ImageSetDetails(_file.DataSet), TimeStamp = Platform.Time }; if (_reasons != null && _reasons.Count > 0) { queueData.ComparisonResults = _reasons; } var imageSet = new ImageSetDescriptor(_file.DataSet); parms.StudyData = XmlUtils.SerializeAsXmlDoc(imageSet); parms.Details = XmlUtils.SerializeAsXmlDoc(queueData); parms.UidRelativePath = _relativePath; IList <DuplicateSopReceivedQueue> entries = broker.Find(parms); Platform.CheckForNullReference(entries, "entries"); Platform.CheckTrue(entries.Count == 1, "entries.Count==1"); DuplicateSopReceivedQueue queueEntry = entries[0]; var data = XmlUtils.Deserialize <DuplicateSIQQueueData>(queueEntry.Details); data.Details.InsertFile(_file); queueEntry.Details = XmlUtils.SerializeAsXmlDoc(data); var siqBroker = updateContext.GetBroker <IStudyIntegrityQueueEntityBroker>(); if (!siqBroker.Update(queueEntry)) { throw new ApplicationException("Unable to update duplicate queue entry"); } }
private string GetSIQItemStorageFolder(StudyIntegrityQueue queue) { if (queue.StudyIntegrityReasonEnum.Equals(StudyIntegrityReasonEnum.InconsistentData)) { ReconcileStudyWorkQueueData data = XmlUtils.Deserialize <ReconcileStudyWorkQueueData>(queue.Details); DirectoryInfo dir = new DirectoryInfo(data.StoragePath); return(dir.Parent.FullName); } if (queue.StudyIntegrityReasonEnum.Equals(StudyIntegrityReasonEnum.Duplicate)) { DuplicateSIQQueueData data = XmlUtils.Deserialize <DuplicateSIQQueueData>(queue.Details); DirectoryInfo dir = new DirectoryInfo(data.StoragePath); return(dir.Parent.FullName); } return(null); }