private static aim_dotnet.ImageStudy CreateStudy(IImageSopProvider image) { Platform.CheckForNullReference(image, "Image"); var aimStudy = new aim_dotnet.ImageStudy(); aimStudy.InstanceUID = image.ImageSop.StudyInstanceUid; DateTime studyDate; if (DateTimeParser.ParseDateAndTime(null, image.ImageSop.StudyDate, image.ImageSop.StudyTime, out studyDate)) aimStudy.StartDate = studyDate; return aimStudy; }
public void ShowImageWithAnnotation(string aimUid) { if (_activeViewer == null) { return; } // Find Annotation aim_dotnet.Annotation annotationToShow = null; foreach (aim_dotnet.Annotation annotation in AvailableAnnotations) { if (annotation.UniqueIdentifier == aimUid) { annotationToShow = annotation; break; } } if (annotationToShow == null) { _activeViewer.DesktopWindow.ShowMessageBox("Could not locate annotation (UID = " + aimUid + ").", MessageBoxActions.Ok); return; } aim_dotnet.ImageStudy studyToOpen = AimStudyFromAnnotation(annotationToShow); if (studyToOpen == null) { _activeViewer.DesktopWindow.ShowMessageBox("Error reading image information (annotation UID = " + aimUid + ").", MessageBoxActions.Ok); return; } // Search displayed images first foreach (IImageBox imageBox in _activeViewer.PhysicalWorkspace.ImageBoxes) { if (imageBox.DisplaySet == null || imageBox.DisplaySet.PresentationImages == null || imageBox.DisplaySet.PresentationImages.Count == 0) { continue; } IImageSopProvider imageSopProvider = imageBox.DisplaySet.PresentationImages[0] as IImageSopProvider; if (imageSopProvider == null) { continue; } if (imageSopProvider.ImageSop.StudyInstanceUid == studyToOpen.InstanceUID && imageSopProvider.ImageSop.SeriesInstanceUid == studyToOpen.Series.InstanceUID) { foreach (IPresentationImage presentationImage in imageBox.DisplaySet.PresentationImages) { imageSopProvider = presentationImage as IImageSopProvider; if (imageSopProvider == null) { continue; } if (imageSopProvider.ImageSop.SopInstanceUid == studyToOpen.Series.ImageCollection[0].SopInstanceUID) { try { imageBox.TopLeftPresentationImage = presentationImage; imageBox.Tiles[0].Select(); this.SelectAimGraphic(presentationImage, aimUid); imageBox.Draw(); return; } catch (Exception ex) { ExceptionHandler.Report(ex, _desktopWindow); } } } } } // Search other available images foreach (IImageSet imageSet in _activeViewer.LogicalWorkspace.ImageSets) { foreach (IDisplaySet displaySet in imageSet.DisplaySets) { if (displaySet.PresentationImages.Count > 0) { IImageSopProvider imageSopProvider = displaySet.PresentationImages[0] as IImageSopProvider; if (imageSopProvider == null) { continue; } if (imageSopProvider.ImageSop.StudyInstanceUid == studyToOpen.InstanceUID && imageSopProvider.ImageSop.SeriesInstanceUid == studyToOpen.Series.InstanceUID) { foreach (IPresentationImage presentationImage in displaySet.PresentationImages) { imageSopProvider = presentationImage as IImageSopProvider; if (imageSopProvider == null) { continue; } if (imageSopProvider.ImageSop.SopInstanceUid == studyToOpen.Series.ImageCollection[0].SopInstanceUID) { try { IImageBox targetImageBox = _activeViewer.PhysicalWorkspace.SelectedImageBox ?? (_activeViewer.PhysicalWorkspace.ImageBoxes.Count > 0 ? _activeViewer.PhysicalWorkspace.ImageBoxes[0] : null); if (targetImageBox == null) { _activeViewer.DesktopWindow.ShowMessageBox("Failed to find available display", MessageBoxActions.Ok); Platform.Log(LogLevel.Error, "Failed to locate a target ImageBox to display requested annotation (aimUID=" + aimUid + ")."); return; } IDisplaySet targetDisplaySet = displaySet.CreateFreshCopy(); IPresentationImage targetPresentationImage = FindRequiredImage(targetDisplaySet.PresentationImages, studyToOpen.InstanceUID, studyToOpen.Series.InstanceUID, studyToOpen.Series.ImageCollection[0].SopInstanceUID); if (targetPresentationImage == null) { _activeViewer.DesktopWindow.ShowMessageBox("Failed to find required image", MessageBoxActions.Ok); Platform.Log(LogLevel.Error, "Failed to locate a target ImageBox to display requested annotation (aimUID=" + aimUid + ")."); return; } targetImageBox.DisplaySet = targetDisplaySet; targetImageBox.TopLeftPresentationImage = targetPresentationImage; targetImageBox.Tiles[0].Select(); this.SelectAimGraphic(targetPresentationImage, aimUid); targetImageBox.Draw(); return; } catch (Exception ex) { ExceptionHandler.Report(ex, _desktopWindow); } } } } } } } }