From a3817e4d4e0d12ff254879443fed462e13c697ae Mon Sep 17 00:00:00 2001 From: Erik Ziegler Date: Mon, 16 Nov 2015 11:02:21 +0100 Subject: [PATCH] Added ViewerBaseStudyLoaded event and source image uid to instance retrieval --- OHIFViewer/client/routes.js | 2 +- .../imageViewerViewport.js | 20 +++++++++---------- .../imageViewerViewports.js | 11 ++++++++++ .../server/services/wado/retrieveMetadata.js | 13 ++++++++++-- 4 files changed, 33 insertions(+), 13 deletions(-) diff --git a/OHIFViewer/client/routes.js b/OHIFViewer/client/routes.js index 422eeb95c..a40423c46 100644 --- a/OHIFViewer/client/routes.js +++ b/OHIFViewer/client/routes.js @@ -34,7 +34,7 @@ Router.route('/viewer/:_id', { // Check if this study is already loaded in a tab // If it is, stop here so we don't keep adding tabs on hot-code reloads - var tab = tabs.find({'studyInstanceUid' : studyInstanceUid}).fetch(); + var tab = tabs.find({studyInstanceUid: studyInstanceUid}).fetch(); if (tab) { return; } diff --git a/Packages/viewerbase/components/viewer/imageViewerViewport/imageViewerViewport.js b/Packages/viewerbase/components/viewer/imageViewerViewport/imageViewerViewport.js index e15e2644f..b0798fa3a 100644 --- a/Packages/viewerbase/components/viewer/imageViewerViewport/imageViewerViewport.js +++ b/Packages/viewerbase/components/viewer/imageViewerViewport/imageViewerViewport.js @@ -144,18 +144,18 @@ function loadSeriesIntoViewport(data) { var endLoadingHandler = cornerstoneTools.loadHandlerManager.getEndLoadHandler(); var errorLoadingHandler = cornerstoneTools.loadHandlerManager.getErrorLoadingHandler(); - // Fire an event to give notice that a new series was loaded in the viewport - var eventType = "ViewerBaseSeriesLoaded"; - var eventData = { - element: element, - stack: stack, - study: data.study, - series: data.series - }; - $(document).trigger(eventType, eventData); - // Start loading the image. cornerstone.loadAndCacheImage(imageId).then(function(image) { + // Fire an event to give notice that a new series was loaded in the viewport + var eventType = "ViewerBaseSeriesLoaded"; + var eventData = { + element: element, + stack: stack, + study: data.study, + series: data.series + }; + $(document).trigger(eventType, eventData); + // If there is a saved object containing Cornerstone viewport data // (e.g. scale, invert, window settings) in the input data, apply it now. // diff --git a/Packages/viewerbase/components/viewer/imageViewerViewports/imageViewerViewports.js b/Packages/viewerbase/components/viewer/imageViewerViewports/imageViewerViewports.js index 7550d2921..48e2bf207 100644 --- a/Packages/viewerbase/components/viewer/imageViewerViewports/imageViewerViewports.js +++ b/Packages/viewerbase/components/viewer/imageViewerViewports/imageViewerViewports.js @@ -1,3 +1,14 @@ +Template.imageViewerViewports.onRendered(function() { + this.autorun(function() { + var studies = Session.get('studies'); + var eventType = "ViewerBaseStudyLoaded"; + var eventData = { + studies: studies + }; + $(document).trigger(eventType, eventData); + }); +}); + Template.imageViewerViewports.helpers({ height: function() { var viewportRows = this.viewportRows || 1; diff --git a/Packages/viewerbase/server/services/wado/retrieveMetadata.js b/Packages/viewerbase/server/services/wado/retrieveMetadata.js index 244abd0d9..095b91825 100644 --- a/Packages/viewerbase/server/services/wado/retrieveMetadata.js +++ b/Packages/viewerbase/server/services/wado/retrieveMetadata.js @@ -1,10 +1,18 @@ function buildUrl(server, studyInstanceUid) { - var url = server.wadoRoot + '/studies/' + studyInstanceUid + '/metadata'; - return url; } +function getSourceImageInstanceUid(instance) { + // TODO= Parse the whole Source Image Sequence + // This is a really poor workaround for now. + // Later we should probably parse the whole sequence. + var SourceImageSequence = instance['00082112']; + if (SourceImageSequence && SourceImageSequence.Value && SourceImageSequence.Value.length) { + return SourceImageSequence.Value[0]['00081155'].Value[0]; + } +} + function resultDataToStudyMetadata(server, studyInstanceUid, resultData) { var seriesMap = {}; var seriesList = []; @@ -69,6 +77,7 @@ function resultDataToStudyMetadata(server, studyInstanceUid, resultData) { windowWidth: DICOMWeb.getString(instance['00281051']), rescaleIntercept: DICOMWeb.getNumber(instance['00281052']), rescaleSlope: DICOMWeb.getNumber(instance['00281053']), + sourceImageInstanceUid: getSourceImageInstanceUid(instance) }; if (server.imageRendering === 'wadouri') {