From 3def03e7d0aa5daaeb88a0277c2bbb5788dd86fc Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Elo=C3=ADzio=20Salgado?= Date: Wed, 18 Jan 2017 18:53:54 -0200 Subject: [PATCH] Adding Metadata classes to Lesion Tracker and Hanging Protocols to both viewers --- .../client/protocolEngine.js | 29 ++++++++++--------- Packages/ohif-hanging-protocols/package.js | 1 + .../viewer/viewerMain/viewerMain.js | 6 ++-- 3 files changed, 20 insertions(+), 16 deletions(-) diff --git a/Packages/ohif-hanging-protocols/client/protocolEngine.js b/Packages/ohif-hanging-protocols/client/protocolEngine.js index 13cb77cba..2a37a6e20 100644 --- a/Packages/ohif-hanging-protocols/client/protocolEngine.js +++ b/Packages/ohif-hanging-protocols/client/protocolEngine.js @@ -4,6 +4,7 @@ import { _ } from 'meteor/underscore'; // OHIF Modules import { OHIF } from 'meteor/ohif:core'; import 'meteor/ohif:viewerbase'; +import 'meteor/ohif:metadata'; // Define a global variable that will be used to refer to the Protocol Engine // It must be populated by HP.setEngine when the Viewer is initialized and a ProtocolEngine @@ -422,9 +423,8 @@ HP.ProtocolEngine = class ProtocolEngine { // TODO: Add relative Date / time }); - var lastStudyIndex = this.studies.length - 1; - this.studies.forEach(function(study) { - var studyMatchDetails = HP.match(study, studyMatchingRules); + this.studies.forEach(study => { + const studyMatchDetails = HP.match(study, studyMatchingRules); if ((studyMatchingRules.length && !studyMatchDetails.score) || studyMatchDetails.score < highestStudyMatchingScore) { return; @@ -441,7 +441,7 @@ HP.ProtocolEngine = class ProtocolEngine { highestSeriesMatchingScore = seriesMatchDetails.score; - series.instances.forEach(function(instance, index) { + series.instances.forEach((instance, index) => { // This tests to make sure there is actually image data in this instance // TODO: Change this when we add PDF and MPEG support // See https://ohiforg.atlassian.net/browse/LT-227 @@ -449,9 +449,9 @@ HP.ProtocolEngine = class ProtocolEngine { return; } - var instanceMatchDetails = HP.match(instance, instanceMatchingRules); + const instanceMatchDetails = HP.match(instance, instanceMatchingRules); - var matchDetails = { + const matchDetails = { passed: [], failed: [] }; @@ -464,9 +464,9 @@ HP.ProtocolEngine = class ProtocolEngine { matchDetails.failed = matchDetails.failed.concat(seriesMatchDetails.details.failed); matchDetails.failed = matchDetails.failed.concat(studyMatchDetails.details.failed); - var totalMatchScore = instanceMatchDetails.score + seriesMatchDetails.score + studyMatchDetails.score; + const totalMatchScore = instanceMatchDetails.score + seriesMatchDetails.score + studyMatchDetails.score; - var imageDetails = { + const imageDetails = { studyInstanceUid: study.studyInstanceUid, seriesInstanceUid: series.seriesInstanceUid, sopInstanceUid: instance.sopInstanceUid, @@ -481,16 +481,19 @@ HP.ProtocolEngine = class ProtocolEngine { } }; - // Find the displaySet - const filter = { - sopInstanceUid: instance.sopInstanceUid + // Filter imageSet function: filter by InstanceUid + const filterImageSetFn = (imageSet, sopInstanceUid) => { + return imageSet.getData().sopInstanceUid === instance.sopInstanceUid; }; - const displaySet = _.filter(study.displaySets, ds => _.findWhere(ds.images, filter))[0]; + + // Find the displaySet + const displaySet = study.displaySets.find(ds => ds.images.filter(imageSet => filterImageSetFn)); // If the instance was found, set the displaySet ID if (displaySet) { + const instanceMetadata = new OHIF.metadata.InstanceMetadata(instance); imageDetails.displaySetInstanceUid = displaySet.displaySetInstanceUid; - imageDetails.imageId = OHIF.viewerbase.getImageId(instance); + imageDetails.imageId = OHIF.viewerbase.getImageId(instanceMetadata); } if ((totalMatchScore > highestImageMatchingScore) || !bestMatch) { diff --git a/Packages/ohif-hanging-protocols/package.js b/Packages/ohif-hanging-protocols/package.js index b9ec6ba61..5abd1b1ee 100755 --- a/Packages/ohif-hanging-protocols/package.js +++ b/Packages/ohif-hanging-protocols/package.js @@ -19,6 +19,7 @@ Package.onUse(function(api) { api.use('validatejs'); // Our custom packages + api.use('ohif:metadata'); api.use('ohif:viewerbase'); api.addAssets('assets/dots.svg', 'client'); diff --git a/Packages/ohif-viewerbase/client/components/viewer/viewerMain/viewerMain.js b/Packages/ohif-viewerbase/client/components/viewer/viewerMain/viewerMain.js index 661534958..0467f97c4 100644 --- a/Packages/ohif-viewerbase/client/components/viewer/viewerMain/viewerMain.js +++ b/Packages/ohif-viewerbase/client/components/viewer/viewerMain/viewerMain.js @@ -38,7 +38,7 @@ Template.viewerMain.onRendered(() => { OHIF.viewerbase.layoutManager = new LayoutManager(parentElement, studies); - OHIF.viewerbase.layoutManager.updateViewports(); + // OHIF.viewerbase.layoutManager.updateViewports(); // Default actions for Associated Studies if(currentTimepointId) { // Follow-up studies: same as the first measurement in the table @@ -98,8 +98,8 @@ Template.viewerMain.onRendered(() => { } } - // ProtocolEngine = new HP.ProtocolEngine(OHIF.viewerbase.layoutManager, studies); - // HP.setEngine(ProtocolEngine); + ProtocolEngine = new HP.ProtocolEngine(OHIF.viewerbase.layoutManager, studies); + HP.setEngine(ProtocolEngine); // Enable hotkeys hotkeyUtils.enableHotkeys();