public static bool UpdateKeyImage(this IPresentationImage image, KeyImageInformation context) { if (context != null) { var presentationStateUid = GetPresentationStateSopInstanceUid(image); var clipboardItems = context.Items; var result = clipboardItems.Select((k, i) => new { k.Item, IsSerialized = k.IsSerialized(), Index = i, MetaData = k.ExtensionData.GetOrCreate<KeyImageItemMetaData>() }) .FirstOrDefault(c => c.IsSerialized && c.MetaData.PrSopInstanceUid == presentationStateUid); if (result != null) { var keyImageItem = context.CreateKeyImageItem(image); var metadata = ((IClipboardItem) keyImageItem).ExtensionData.GetOrCreate<KeyImageItemMetaData>(); metadata.Changes = true; metadata.Guid = result.MetaData.Guid; metadata.KoSopInstanceUid = result.MetaData.KoSopInstanceUid; metadata.PrSopInstanceUid = result.MetaData.PrSopInstanceUid; metadata.OriginalItem = result.MetaData.OriginalItem ?? clipboardItems[result.Index]; clipboardItems[result.Index] = keyImageItem; return true; } } return false; }
public static bool UpdateKeyImage(this IPresentationImage image, KeyImageInformation context) { if (context != null) { var presentationStateUid = GetPresentationStateSopInstanceUid(image); var clipboardItems = context.Items; var result = clipboardItems.Select((k, i) => new { k.Item, IsSerialized = k.IsSerialized(), Index = i, MetaData = k.ExtensionData.GetOrCreate <KeyImageItemMetaData>() }) .FirstOrDefault(c => c.IsSerialized && c.MetaData.PrSopInstanceUid == presentationStateUid); if (result != null) { var keyImageItem = context.CreateKeyImageItem(image); var metadata = ((IClipboardItem)keyImageItem).ExtensionData.GetOrCreate <KeyImageItemMetaData>(); metadata.Changes = true; metadata.Guid = result.MetaData.Guid; metadata.KoSopInstanceUid = result.MetaData.KoSopInstanceUid; metadata.PrSopInstanceUid = result.MetaData.PrSopInstanceUid; metadata.OriginalItem = result.MetaData.OriginalItem ?? clipboardItems[result.Index]; clipboardItems[result.Index] = keyImageItem; return(true); } } return(false); }
private static IEnumerable <IClipboardItem> CreateClipboardItems(StudyTree studyTree, Sop keyObjectSelectionDocument) { Platform.CheckTrue(keyObjectSelectionDocument.SopClassUid == SopClass.KeyObjectSelectionDocumentStorageUid, "SOP Class must be Key Object Selection Document Storage"); var dummyContext = new KeyImageInformation(); // just need an instance of creating items var factory = new PresentationImageFactory(studyTree); foreach (var image in factory.CreateImages(keyObjectSelectionDocument)) { var presentationStateInstanceUid = string.Empty; // set the deserialize interactive flag on the presentation state var dicomPresentationImage = image as IDicomPresentationImage; if (dicomPresentationImage != null) { var presentationState = dicomPresentationImage.PresentationState as DicomSoftcopyPresentationState; if (presentationState != null) { presentationState.DeserializeOptions |= DicomSoftcopyPresentationStateDeserializeOptions.InteractiveAnnotations; presentationStateInstanceUid = presentationState.PresentationSopInstanceUid; } } var item = dummyContext.CreateKeyImageItem(image, true); item.AssignSourceInfo(Guid.NewGuid(), keyObjectSelectionDocument.SopInstanceUid, presentationStateInstanceUid); yield return(item); } }
private static IEnumerable<IClipboardItem> CreateClipboardItems(StudyTree studyTree, Sop keyObjectSelectionDocument) { Platform.CheckTrue(keyObjectSelectionDocument.SopClassUid == SopClass.KeyObjectSelectionDocumentStorageUid, "SOP Class must be Key Object Selection Document Storage"); var dummyContext = new KeyImageInformation(); // just need an instance of creating items var factory = new PresentationImageFactory(studyTree); foreach (var image in factory.CreateImages(keyObjectSelectionDocument)) { // set the deserialize interactive flag on the presentation state var dicomPresentationImage = image as IDicomPresentationImage; if (dicomPresentationImage != null) { var presentationState = dicomPresentationImage.PresentationState as DicomSoftcopyPresentationState; if (presentationState != null) presentationState.DeserializeInteractiveAnnotations = true; } var item = dummyContext.CreateKeyImageItem(image, true); item.AssignSourceInfo(Guid.NewGuid(), keyObjectSelectionDocument.SopInstanceUid); yield return item; } }