Adding Nadir method on timepointApi

This commit is contained in:
Bruno Alves de Faria 2017-10-25 17:01:28 -02:00
parent bde625a961
commit c580f2db72
9 changed files with 48 additions and 49 deletions

View File

@ -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)

View File

@ -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);
};

View File

@ -2,6 +2,7 @@ import './jumpToRowItem';
import './activateMeasurements';
import './deactivateAllToolData';
import './exportPdf';
import './findAndRenderDisplaySet';
import './getImageDataUrl';
import './getMeasurementsGroupedByNumber';
import './getLocationLabel';

View File

@ -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;
}

View File

@ -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']);

View File

@ -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;

View File

@ -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;

View File

@ -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;

View File

@ -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';