From 39db003dca366bf2c7b3d50397b035470bc9f05f Mon Sep 17 00:00:00 2001 From: Erik Ziegler Date: Thu, 19 Nov 2015 21:36:03 +0100 Subject: [PATCH] Added basic reloading of series from different studies --- .../imageViewerViewports.js | 36 +++++++++++++++++++ 1 file changed, 36 insertions(+) diff --git a/Packages/viewerbase/components/viewer/imageViewerViewports/imageViewerViewports.js b/Packages/viewerbase/components/viewer/imageViewerViewports/imageViewerViewports.js index 7837d3ee7..80e074f01 100644 --- a/Packages/viewerbase/components/viewer/imageViewerViewports/imageViewerViewports.js +++ b/Packages/viewerbase/components/viewer/imageViewerViewports/imageViewerViewports.js @@ -67,6 +67,42 @@ Template.imageViewerViewports.helpers({ ViewerWindows.insert(data); } + + + // Here we will find out if we need to load any other studies into the viewer + + // We will make a list of unique studyInstanceUids + var uniqueStudyInstanceUids = []; + + // Meteor doesn't support Mongo's 'distinct' function, so we have to do this in a loop + ViewerWindows.find().forEach(function(window) { + var studyInstanceUid = window.studyInstanceUid; + if (!studyInstanceUid) { + return; + } + + // If this studyInstanceUid is already in the list, stop here + if (uniqueStudyInstanceUids.indexOf(studyInstanceUid) > -1) { + return; + } + + // Otherwise, add it to the list + uniqueStudyInstanceUids.push(studyInstanceUid); + + // If any of the associated studies is not already loaded, load it now + var loadedStudy = ViewerStudies.findOne({studyInstanceUid: studyInstanceUid}); + if (!loadedStudy) { + // Load the study + Meteor.call('GetStudyMetadata', studyInstanceUid, function(error, study) { + // Sort the study's series and instances by series and instance number + sortStudy(study); + + // Insert it into the ViewerStudies Collection + ViewerStudies.insert(study); + }); + } + }); + return ViewerWindows.find(); } });