From c580f2db72fcb534b1f87923e8bd6002416669bf Mon Sep 17 00:00:00 2001 From: Bruno Alves de Faria Date: Wed, 25 Oct 2017 17:01:28 -0200 Subject: [PATCH] Adding Nadir method on timepointApi --- .../both/configuration/timepoints.js | 22 +++++------ .../client/lib/findAndRenderDisplaySet.js | 28 ++++++++++++++ .../ohif-measurements/client/lib/index.js | 1 + .../client/lib/jumpToRowItem.js | 38 +++---------------- Packages/ohif-measurements/package.js | 1 + .../client/components/browser/series.js | 2 +- .../imageViewerViewport.js | 2 +- .../seriesQuickSwitch/seriesQuickSwitch.js | 2 +- .../viewer/viewerMain/viewerMain.js | 1 - 9 files changed, 48 insertions(+), 49 deletions(-) create mode 100644 Packages/ohif-measurements/client/lib/findAndRenderDisplaySet.js diff --git a/Packages/ohif-measurements/both/configuration/timepoints.js b/Packages/ohif-measurements/both/configuration/timepoints.js index c28320a42..939f92b39 100644 --- a/Packages/ohif-measurements/both/configuration/timepoints.js +++ b/Packages/ohif-measurements/both/configuration/timepoints.js @@ -130,9 +130,7 @@ class TimepointApi { // Return only the current timepoint current() { - return this.timepoints.findOne({ - timepointId: this.currentTimepointId - }); + return this.timepoints.findOne({ timepointId: this.currentTimepointId }); } lock() { @@ -157,13 +155,9 @@ class TimepointApi { const latestDate = current.latestDate; return this.timepoints.findOne({ - latestDate: { - $lt: latestDate - } + latestDate: { $lt: latestDate } }, { - sort: { - latestDate: -1 - }, + sort: { latestDate: -1 } }); } @@ -186,9 +180,13 @@ class TimepointApi { // Return only the baseline timepoint baseline() { - return this.timepoints.findOne({ - timepointType: 'baseline' - }); + return this.timepoints.findOne({ timepointType: 'baseline' }); + } + + // Return only the nadir timepoint + nadir() { + const timepoint = this.timepoints.findOne({ timepointKey: 'nadir' }); + return timepoint || this.baseline(); } // Return only the key timepoints (current, prior, nadir and baseline) diff --git a/Packages/ohif-measurements/client/lib/findAndRenderDisplaySet.js b/Packages/ohif-measurements/client/lib/findAndRenderDisplaySet.js new file mode 100644 index 000000000..210821d48 --- /dev/null +++ b/Packages/ohif-measurements/client/lib/findAndRenderDisplaySet.js @@ -0,0 +1,28 @@ +import { OHIF } from 'meteor/ohif:core'; + +OHIF.measurements.findAndRenderDisplaySet = (displaySets, viewportIndex, studyInstanceUid, seriesInstanceUid, sopInstanceUid, renderedCallback) => { + // Find the proper stack to display + const stacksFromSeries = displaySets.filter(stack => stack.seriesInstanceUid === seriesInstanceUid); + const stack = stacksFromSeries.find(stack => { + const imageIndex = stack.images.findIndex(image => image.getSOPInstanceUID() === sopInstanceUid); + return imageIndex > -1; + }); + + // TODO: make this work for multi-frame instances + const specificImageIndex = stack.images.findIndex(image => image.getSOPInstanceUID() === sopInstanceUid); + + const displaySetData = { + studyInstanceUid: studyInstanceUid, + seriesInstanceUid: seriesInstanceUid, + sopInstanceUid: sopInstanceUid, + displaySetInstanceUid: stack.displaySetInstanceUid, + currentImageIdIndex: specificImageIndex + }; + + // Add a renderedCallback to activate the measurements once it's + if (renderedCallback) { + displaySetData.renderedCallback = renderedCallback; + } + + OHIF.viewerbase.layoutManager.rerenderViewportWithNewDisplaySet(viewportIndex, displaySetData); +}; diff --git a/Packages/ohif-measurements/client/lib/index.js b/Packages/ohif-measurements/client/lib/index.js index 0ee1ed051..02a072131 100644 --- a/Packages/ohif-measurements/client/lib/index.js +++ b/Packages/ohif-measurements/client/lib/index.js @@ -2,6 +2,7 @@ import './jumpToRowItem'; import './activateMeasurements'; import './deactivateAllToolData'; import './exportPdf'; +import './findAndRenderDisplaySet'; import './getImageDataUrl'; import './getMeasurementsGroupedByNumber'; import './getLocationLabel'; diff --git a/Packages/ohif-measurements/client/lib/jumpToRowItem.js b/Packages/ohif-measurements/client/lib/jumpToRowItem.js index 37b5ad560..b5a187412 100644 --- a/Packages/ohif-measurements/client/lib/jumpToRowItem.js +++ b/Packages/ohif-measurements/client/lib/jumpToRowItem.js @@ -1,44 +1,16 @@ import { $ } from 'meteor/jquery'; import { _ } from 'meteor/underscore'; import { OHIF } from 'meteor/ohif:core'; -import 'meteor/ohif:viewerbase'; - -function findAndRenderDisplaySet(displaySets, viewportIndex, studyInstanceUid, seriesInstanceUid, sopInstanceUid, renderedCallback) { - // Find the proper stack to display - const stacksFromSeries = displaySets.filter(stack => stack.seriesInstanceUid === seriesInstanceUid); - const stack = stacksFromSeries.find(stack => { - const imageIndex = stack.images.findIndex(image => image.getSOPInstanceUID() === sopInstanceUid); - return imageIndex > -1; - }); - - // TODO: make this work for multi-frame instances - const specificImageIndex = stack.images.findIndex(image => image.getSOPInstanceUID() === sopInstanceUid); - - const displaySetData = { - studyInstanceUid: studyInstanceUid, - seriesInstanceUid: seriesInstanceUid, - sopInstanceUid: sopInstanceUid, - displaySetInstanceUid: stack.displaySetInstanceUid, - currentImageIdIndex: specificImageIndex - }; - - // Add a renderedCallback to activate the measurements once it's - if (renderedCallback) { - displaySetData.renderedCallback = renderedCallback; - } - - OHIF.viewerbase.layoutManager.rerenderViewportWithNewDisplaySet(viewportIndex, displaySetData); -} function renderIntoViewport(viewportIndex, studyInstanceUid, seriesInstanceUid, sopInstanceUid, renderedCallback) { - // @TypeSafeStudies // First, check if we already have this study loaded const alreadyLoadedStudy = OHIF.viewer.Studies.findBy({ studyInstanceUid }); + const { findAndRenderDisplaySet } = OHIF.measurements; if (alreadyLoadedStudy) { // If the Study is already loaded, find the display set and render it - findAndRenderDisplaySet(alreadyLoadedStudy.displaySets, viewportIndex, studyInstanceUid, seriesInstanceUid, sopInstanceUid, renderedCallback) + findAndRenderDisplaySet(alreadyLoadedStudy.displaySets, viewportIndex, studyInstanceUid, seriesInstanceUid, sopInstanceUid, renderedCallback); } else { // If not, retrieve the study metadata and then find the relevant display set and // render it. @@ -113,11 +85,11 @@ OHIF.measurements.jumpToRowItem = (rowItem, timepoints) => { timepoints.reverse(); } - for (var i=0; i < numViewportsToUpdate; i++) { + for (let i = 0; i < numViewportsToUpdate; i++) { const timepoint = timepoints[i]; const timepointId = timepoint.timepointId; - const dataAtThisTimepoint = _.where(rowItem.entries, {timepointId: timepointId}); + const dataAtThisTimepoint = _.where(rowItem.entries, { timepointId }); if (!dataAtThisTimepoint || !dataAtThisTimepoint.length) { continue; } @@ -133,7 +105,7 @@ OHIF.measurements.jumpToRowItem = (rowItem, timepoints) => { // or maybe just remove the 'error' this throws? let enabledElement; try { - enabledElement = cornerstone.getEnabledElement(element) + enabledElement = cornerstone.getEnabledElement(element); } catch(error) { continue; } diff --git a/Packages/ohif-measurements/package.js b/Packages/ohif-measurements/package.js index 9a8720f1e..3fac42df4 100644 --- a/Packages/ohif-measurements/package.js +++ b/Packages/ohif-measurements/package.js @@ -37,6 +37,7 @@ Package.onUse(function(api) { api.use('ohif:log'); api.use('ohif:study-list'); api.use('ohif:hanging-protocols'); + api.use('ohif:viewerbase'); // Client and server imports api.addFiles('both/index.js', ['client', 'server']); diff --git a/Packages/ohif-studies/imports/client/components/browser/series.js b/Packages/ohif-studies/imports/client/components/browser/series.js index fa2fd0073..9772f8379 100644 --- a/Packages/ohif-studies/imports/client/components/browser/series.js +++ b/Packages/ohif-studies/imports/client/components/browser/series.js @@ -28,7 +28,7 @@ Template.studyBrowserSeries.onCreated(() => { if (!metadata) return; // Get the study display sets - let displaySets = metadata.getDisplaySets(); + let displaySets = metadata.displaySets; if (!displaySets.length) { displaySets = OHIF.viewerbase.sortingManager.getDisplaySets(metadata); metadata.displaySets = displaySets; diff --git a/Packages/ohif-viewerbase/client/components/viewer/imageViewerViewport/imageViewerViewport.js b/Packages/ohif-viewerbase/client/components/viewer/imageViewerViewport/imageViewerViewport.js index 93618d683..396be0938 100644 --- a/Packages/ohif-viewerbase/client/components/viewer/imageViewerViewport/imageViewerViewport.js +++ b/Packages/ohif-viewerbase/client/components/viewer/imageViewerViewport/imageViewerViewport.js @@ -468,7 +468,7 @@ const setDisplaySet = (data, displaySetInstanceUid, templateData) => { throw new OHIFError('Study does not exist'); } - let displaySets = study.getDisplaySets(); + let displaySets = study.displaySets; if (!displaySets.length) { displaySets = OHIF.viewerbase.sortingManager.getDisplaySets(study); study.displaySets = displaySets; diff --git a/Packages/ohif-viewerbase/client/components/viewer/seriesQuickSwitch/seriesQuickSwitch.js b/Packages/ohif-viewerbase/client/components/viewer/seriesQuickSwitch/seriesQuickSwitch.js index 42d214367..ad9a13040 100644 --- a/Packages/ohif-viewerbase/client/components/viewer/seriesQuickSwitch/seriesQuickSwitch.js +++ b/Packages/ohif-viewerbase/client/components/viewer/seriesQuickSwitch/seriesQuickSwitch.js @@ -75,7 +75,7 @@ Template.seriesQuickSwitch.helpers({ const seriesItems = []; - let displaySets = study.getDisplaySets(); + let displaySets = study.displaySets; if (!displaySets.length) { displaySets = OHIF.viewerbase.sortingManager.getDisplaySets(study); study.displaySets = displaySets; diff --git a/Packages/ohif-viewerbase/client/components/viewer/viewerMain/viewerMain.js b/Packages/ohif-viewerbase/client/components/viewer/viewerMain/viewerMain.js index 09ed5b533..4749fae36 100644 --- a/Packages/ohif-viewerbase/client/components/viewer/viewerMain/viewerMain.js +++ b/Packages/ohif-viewerbase/client/components/viewer/viewerMain/viewerMain.js @@ -5,7 +5,6 @@ import { Random } from 'meteor/random'; import { OHIF } from 'meteor/ohif:core'; // Local Modules import { unloadHandlers } from '../../../lib/unloadHandlers'; -import { hotkeyUtils } from '../../../lib/hotkeyUtils'; import { ResizeViewportManager } from '../../../lib/classes/ResizeViewportManager'; import { LayoutManager } from '../../../lib/classes/LayoutManager'; import { StudyPrefetcher } from '../../../lib/classes/StudyPrefetcher';