diff --git a/LesionTracker/.meteor/packages b/LesionTracker/.meteor/packages
index e9d5f691a..b351149bd 100755
--- a/LesionTracker/.meteor/packages
+++ b/LesionTracker/.meteor/packages
@@ -15,6 +15,8 @@ tracker # Meteor's client-side reactive programming library
es5-shim # ECMAScript 5 compatibility for older browsers.
ecmascript # Enable ECMAScript2015+ syntax in app code
+ohif:core
+
insecure # Allow all DB writes from clients (for prototyping)
cornerstone
worklist
diff --git a/LesionTracker/.meteor/versions b/LesionTracker/.meteor/versions
index 3045839db..45543dd44 100644
--- a/LesionTracker/.meteor/versions
+++ b/LesionTracker/.meteor/versions
@@ -90,6 +90,7 @@ natestrauser:select2@4.0.2
npm-bcrypt@0.8.6_3
npm-mongo@1.4.45
observe-sequence@1.0.12
+ohif:core@0.0.1
ordered-dict@1.0.8
orthanc-remote@0.0.1
peppelg:bootstrap-3-modal@1.0.4
diff --git a/OHIFViewer/client/components/viewer/viewer.js b/OHIFViewer/client/components/viewer/viewer.js
index 0d908e237..fdcd2baee 100644
--- a/OHIFViewer/client/components/viewer/viewer.js
+++ b/OHIFViewer/client/components/viewer/viewer.js
@@ -1,3 +1,6 @@
+import { OHIF } from 'meteor/ohif:core';
+OHIF.viewer = OHIF.viewer || {};
+
Template.viewer.onCreated(function() {
// Attach the Window resize listener
$(window).on('resize', handleResize);
@@ -7,10 +10,6 @@ Template.viewer.onCreated(function() {
log.info('viewer onCreated');
- OHIF = window.OHIF || {
- viewer: {}
- };
-
OHIF.viewer.loadIndicatorDelay = 500;
OHIF.viewer.defaultTool = 'wwwc';
OHIF.viewer.refLinesEnabled = true;
@@ -57,7 +56,7 @@ Template.viewer.onCreated(function() {
}
var contentId = this.data.contentId;
-
+
if (ViewerData[contentId].loadedSeriesData) {
log.info('Reloading previous loadedSeriesData');
@@ -66,7 +65,7 @@ Template.viewer.onCreated(function() {
} else {
log.info('Setting default ViewerData');
OHIF.viewer.loadedSeriesData = {};
-
+
ViewerData[contentId].loadedSeriesData = OHIF.viewer.loadedSeriesData;
// Update the viewer data object
@@ -80,7 +79,7 @@ Template.viewer.onCreated(function() {
// Update the ViewerStudies collection with the loaded studies
ViewerStudies.remove({});
-
+
this.data.studies.forEach(function(study) {
study.selected = true;
ViewerStudies.insert(study);
diff --git a/Packages/design/components/radioOption/radioOption.styl b/Packages/design/components/radioOption/radioOption.styl
index 65b92154c..f827e8984 100644
--- a/Packages/design/components/radioOption/radioOption.styl
+++ b/Packages/design/components/radioOption/radioOption.styl
@@ -6,7 +6,7 @@ label.radio-option
height: 0
width: 0
span
- padding-left: 20px
+ padding-left: 23px
position: relative
&:before
background: white
diff --git a/Packages/hangingprotocols/client/components/matchedProtocols/matchedProtocols.js b/Packages/hangingprotocols/client/components/matchedProtocols/matchedProtocols.js
index 9be083fe3..00ab87993 100644
--- a/Packages/hangingprotocols/client/components/matchedProtocols/matchedProtocols.js
+++ b/Packages/hangingprotocols/client/components/matchedProtocols/matchedProtocols.js
@@ -1,3 +1,5 @@
+import { OHIF } from 'meteor/ohif:core';
+
Template.matchedProtocols.onRendered(function() {
$('#matchedProtocols button').tooltip(OHIF.viewer.tooltipConfig);
});
diff --git a/Packages/hangingprotocols/client/protocolEngine.js b/Packages/hangingprotocols/client/protocolEngine.js
index 2336fccd6..e510c0c1f 100644
--- a/Packages/hangingprotocols/client/protocolEngine.js
+++ b/Packages/hangingprotocols/client/protocolEngine.js
@@ -1,3 +1,5 @@
+import { OHIF } from 'meteor/ohif:core';
+
// 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
// is instantiated on top of the LayoutManager. If the global ProtocolEngine variable remains
@@ -214,7 +216,7 @@ HP.ProtocolEngine = class ProtocolEngine {
score: matchedDetails.score,
protocol: protocol
});
- }
+ }
});
if (!matched.length) {
@@ -300,7 +302,7 @@ HP.ProtocolEngine = class ProtocolEngine {
if (!protocol.protocolMatchingRules) {
return;
}
-
+
var studies = WorklistStudies.find({
patientId: study.patientId,
studyDate: {
diff --git a/Packages/lesiontracker/both/schema/additionalFinding.js b/Packages/lesiontracker/both/schema/additionalFindings.js
similarity index 95%
rename from Packages/lesiontracker/both/schema/additionalFinding.js
rename to Packages/lesiontracker/both/schema/additionalFindings.js
index 3175b4d63..34e261d26 100644
--- a/Packages/lesiontracker/both/schema/additionalFinding.js
+++ b/Packages/lesiontracker/both/schema/additionalFindings.js
@@ -4,10 +4,10 @@ SimpleSchema.extendOptions({
allowedSelect2Values: Match.Optional(Array),
});
-export const AdditionalFinding = new SimpleSchema({
+export const schema = new SimpleSchema({
measurableDisease: {
type: String,
- label: 'Measurable Disease',
+ label: 'Measurable disease',
allowedValues: ['Present', 'Absent'],
defaultValue: 'Absent',
optional: true
diff --git a/Packages/lesiontracker/client/components/additionalFindings/additionalFindings.html b/Packages/lesiontracker/client/components/additionalFindings/additionalFindings.html
index 052a1b958..b30d2a762 100644
--- a/Packages/lesiontracker/client/components/additionalFindings/additionalFindings.html
+++ b/Packages/lesiontracker/client/components/additionalFindings/additionalFindings.html
@@ -7,6 +7,13 @@
{{>radioOptionGroup (stateDataWithKey "measurableDisease")}}
+
+
+
{{ /with }}
-
\ No newline at end of file
+
diff --git a/Packages/reactive-form-controls/client/helpers/equals.js b/Packages/reactive-form-controls/client/helpers/equals.js
deleted file mode 100644
index 74f199cc5..000000000
--- a/Packages/reactive-form-controls/client/helpers/equals.js
+++ /dev/null
@@ -1,10 +0,0 @@
-import { Template } from 'meteor/templating';
-
-/**
- * Compares two variables are equal in value
- *
- * @returns {boolean}
- */
-Template.registerHelper('equals', function(a, b) {
- return a === b;
-});
\ No newline at end of file
diff --git a/Packages/reactive-form-controls/package.js b/Packages/reactive-form-controls/package.js
index dd237a383..1dd8ef8df 100755
--- a/Packages/reactive-form-controls/package.js
+++ b/Packages/reactive-form-controls/package.js
@@ -1,35 +1,34 @@
-Package.describe({
- name: 'reactive-form-controls',
- summary: 'A set of basic form controls that store their state in a ReactiveDict',
- version: '0.0.1'
-});
-
-Package.onUse(function(api) {
- api.versionsFrom('1.3.4.1');
-
- api.use('standard-app-packages');
- api.use('ecmascript');
- api.use('jquery');
- api.use('stylus');
- api.use('reactive-dict');
- api.use('templating');
- api.use('natestrauser:select2@4.0.1', 'client');
-
- api.addFiles('client/helpers/getSchema.js', ['client']);
- api.addFiles('client/helpers/isInvalidKey.js', ['client']);
- api.addFiles('client/helpers/stateDataWithKey.js', ['client']);
- api.addFiles('client/helpers/equals.js', ['client']);
-
- api.addFiles('client/components/helpBlock/helpBlock.html', ['client']);
- api.addFiles('client/components/helpBlock/helpBlock.js', ['client']);
-
- api.addFiles('client/components/radioOptionGroup/radioOptionGroup.html', ['client']);
- api.addFiles('client/components/radioOptionGroup/radioOptionGroup.js', ['client']);
-
- api.addFiles('client/components/selectInput/selectInput.html', ['client']);
- api.addFiles('client/components/selectInput/selectInput.js', ['client']);
-
- api.addFiles('client/components/select2Input/select2Input.html', ['client']);
- api.addFiles('client/components/select2Input/select2Input.js', ['client']);
-
-});
\ No newline at end of file
+Package.describe({
+ name: 'reactive-form-controls',
+ summary: 'A set of basic form controls that store their state in a ReactiveDict',
+ version: '0.0.1'
+});
+
+Package.onUse(function(api) {
+ api.versionsFrom('1.3.4.1');
+
+ api.use('standard-app-packages');
+ api.use('ecmascript');
+ api.use('jquery');
+ api.use('stylus');
+ api.use('reactive-dict');
+ api.use('templating');
+ api.use('natestrauser:select2@4.0.1', 'client');
+
+ api.addFiles('client/helpers/getSchema.js', ['client']);
+ api.addFiles('client/helpers/isInvalidKey.js', ['client']);
+ api.addFiles('client/helpers/stateDataWithKey.js', ['client']);
+
+ api.addFiles('client/components/helpBlock/helpBlock.html', ['client']);
+ api.addFiles('client/components/helpBlock/helpBlock.js', ['client']);
+
+ api.addFiles('client/components/radioOptionGroup/radioOptionGroup.html', ['client']);
+ api.addFiles('client/components/radioOptionGroup/radioOptionGroup.js', ['client']);
+
+ api.addFiles('client/components/selectInput/selectInput.html', ['client']);
+ api.addFiles('client/components/selectInput/selectInput.js', ['client']);
+
+ api.addFiles('client/components/select2Input/select2Input.html', ['client']);
+ api.addFiles('client/components/select2Input/select2Input.js', ['client']);
+
+});
diff --git a/Packages/viewerbase/client/components/viewer/cineDialog/cineDialog.js b/Packages/viewerbase/client/components/viewer/cineDialog/cineDialog.js
index 171e20936..f556c18c0 100644
--- a/Packages/viewerbase/client/components/viewer/cineDialog/cineDialog.js
+++ b/Packages/viewerbase/client/components/viewer/cineDialog/cineDialog.js
@@ -1,3 +1,5 @@
+import { OHIF } from 'meteor/ohif:core';
+
toggleCinePlay = function() {
var element = getActiveViewportElement();
var playClipToolData = cornerstoneTools.getToolState(element, 'playClip');
diff --git a/Packages/viewerbase/client/components/viewer/gridLayout/gridLayout.js b/Packages/viewerbase/client/components/viewer/gridLayout/gridLayout.js
index 076e45d72..d98f62b82 100644
--- a/Packages/viewerbase/client/components/viewer/gridLayout/gridLayout.js
+++ b/Packages/viewerbase/client/components/viewer/gridLayout/gridLayout.js
@@ -1,3 +1,5 @@
+import { OHIF } from 'meteor/ohif:core';
+
Template.gridLayout.helpers({
height: function() {
var rows = this.rows || 1;
diff --git a/Packages/viewerbase/client/components/viewer/imageViewerViewport/imageViewerViewport.js b/Packages/viewerbase/client/components/viewer/imageViewerViewport/imageViewerViewport.js
index f9879697c..49ad2ca39 100644
--- a/Packages/viewerbase/client/components/viewer/imageViewerViewport/imageViewerViewport.js
+++ b/Packages/viewerbase/client/components/viewer/imageViewerViewport/imageViewerViewport.js
@@ -1,3 +1,5 @@
+import { OHIF } from 'meteor/ohif:core';
+
var allCornerstoneEvents = 'CornerstoneToolsMouseDown CornerstoneToolsMouseDownActivate ' +
'CornerstoneToolsMouseClick CornerstoneToolsMouseDrag CornerstoneToolsMouseUp ' +
'CornerstoneToolsMouseWheel CornerstoneToolsTap CornerstoneToolsTouchPress ' +
@@ -115,7 +117,7 @@ function loadSeriesIntoViewport(data, templateData) {
templateData.imageId = imageId;
// Save the current image ID inside the ViewportLoading object.
- //
+ //
// The ViewportLoading object relates the viewport elements with whichever
// image is currently being loaded into them. This is useful so that we can
// place progress (download %) for each image inside the proper viewports.
@@ -144,7 +146,7 @@ function loadSeriesIntoViewport(data, templateData) {
}
// Update the enabled element with the image and viewport data
- // This is not usually necessary, but we need them stored in case
+ // This is not usually necessary, but we need them stored in case
// a sopClassUid-specific viewport setting is present.
enabledElement.image = image;
enabledElement.viewport = cornerstone.getDefaultViewport(enabledElement.canvas, image);
@@ -564,4 +566,4 @@ Template.imageViewerViewport.events({
var viewportIndex = $('.imageViewerViewport').index(e.currentTarget);
layoutManager.toggleEnlargement(viewportIndex);
}
-});
\ No newline at end of file
+});
diff --git a/Packages/viewerbase/client/components/viewer/loadingIndicator/loadingIndicator.js b/Packages/viewerbase/client/components/viewer/loadingIndicator/loadingIndicator.js
index b45330d50..a677806f3 100644
--- a/Packages/viewerbase/client/components/viewer/loadingIndicator/loadingIndicator.js
+++ b/Packages/viewerbase/client/components/viewer/loadingIndicator/loadingIndicator.js
@@ -1,3 +1,5 @@
+import { OHIF } from 'meteor/ohif:core';
+
Meteor.startup(function() {
cornerstoneTools.loadHandlerManager.setStartLoadHandler(startLoadingHandler);
cornerstoneTools.loadHandlerManager.setEndLoadHandler(doneLoadingHandler);
@@ -67,4 +69,4 @@ Template.loadingIndicator.helpers({
return percentComplete + '%';
}
}
-});
\ No newline at end of file
+});
diff --git a/Packages/viewerbase/client/components/viewer/playClipButton/playClipButton.js b/Packages/viewerbase/client/components/viewer/playClipButton/playClipButton.js
index 2a50a14db..493d5e00d 100644
--- a/Packages/viewerbase/client/components/viewer/playClipButton/playClipButton.js
+++ b/Packages/viewerbase/client/components/viewer/playClipButton/playClipButton.js
@@ -1,3 +1,5 @@
+import { OHIF } from 'meteor/ohif:core';
+
toggleCinePlay = function(element) {
var viewports = $('.imageViewerViewport');
diff --git a/Packages/viewerbase/client/components/viewer/toolbar/toolbar.js b/Packages/viewerbase/client/components/viewer/toolbar/toolbar.js
index 38a48bf63..35c663f39 100644
--- a/Packages/viewerbase/client/components/viewer/toolbar/toolbar.js
+++ b/Packages/viewerbase/client/components/viewer/toolbar/toolbar.js
@@ -1,3 +1,5 @@
+import { OHIF } from 'meteor/ohif:core';
+
function getDefaultButtonData() {
var buttonData = [];
diff --git a/Packages/viewerbase/lib/WLPresets.js b/Packages/viewerbase/lib/WLPresets.js
index 0230ea60e..951f39c5a 100644
--- a/Packages/viewerbase/lib/WLPresets.js
+++ b/Packages/viewerbase/lib/WLPresets.js
@@ -1,3 +1,5 @@
+import { OHIF } from 'meteor/ohif:core';
+
applyWLPreset = function(presetName, element) {
log.info("Applying WL Preset: " + presetName);
var viewport = cornerstone.getViewport(element);
diff --git a/Packages/viewerbase/lib/displayReferenceLines.js b/Packages/viewerbase/lib/displayReferenceLines.js
index 7c5fe8a93..7c9c80a2c 100644
--- a/Packages/viewerbase/lib/displayReferenceLines.js
+++ b/Packages/viewerbase/lib/displayReferenceLines.js
@@ -1,6 +1,8 @@
+import { OHIF } from 'meteor/ohif:core';
+
/**
* This function disables reference lines for a specific viewport element.
- * It also enables reference lines for all other viewports with the
+ * It also enables reference lines for all other viewports with the
* class .imageViewerViewport.
*
* @param element {node} DOM Node representing the viewport element
@@ -36,4 +38,4 @@ displayReferenceLines = function(element) {
cornerstoneTools.referenceLines.tool.enable(element, OHIF.viewer.updateImageSynchronizer);
});
-};
\ No newline at end of file
+};
diff --git a/Packages/viewerbase/lib/enableHotkeys.js b/Packages/viewerbase/lib/enableHotkeys.js
index b9c1295c2..00abd4b37 100644
--- a/Packages/viewerbase/lib/enableHotkeys.js
+++ b/Packages/viewerbase/lib/enableHotkeys.js
@@ -1,4 +1,4 @@
-OHIF = window.OHIF || {};
+import { OHIF } from 'meteor/ohif:core';
Meteor.startup(function() {
@@ -31,7 +31,7 @@ Meteor.startup(function() {
WLPresetBone: ['NUMPAD4', '4'],
WLPresetBrain: ['NUMPAD5', '5']
};
-
+
// For now
OHIF.viewer.hotkeys = OHIF.viewer.defaultHotkeys;
@@ -262,7 +262,7 @@ function bindHotkey(hotkey, task) {
} else {
fn = hotkeyFunctions[task];
- // If the function doesn't exist in the
+ // If the function doesn't exist in the
// hotkey function list, try the viewer-specific function list
if (!fn && OHIF.viewer && OHIF.viewer.functionList) {
fn = OHIF.viewer.functionList[task];
diff --git a/Packages/viewerbase/lib/helpers/blaze.js b/Packages/viewerbase/lib/helpers/blaze.js
deleted file mode 100644
index a81fdcc92..000000000
--- a/Packages/viewerbase/lib/helpers/blaze.js
+++ /dev/null
@@ -1,38 +0,0 @@
-// Return the current template instance
-Template.registerHelper('instance', () => {
- return Template.instance();
-});
-
-// Return the session value for the given key
-Template.registerHelper('session', key => {
- return Session.get(key);
-});
-
-// Create a new object and extends it with the argument objects
-Template.registerHelper('extend', (...argsArray) => {
- // Create the resulting object
- const result = {};
-
- // Extract the Spacebars kw hash
- const kwHash = _.last(argsArray).hash;
-
- // Extract the given objects
- const objects = _.initial(argsArray);
-
- // Iterate over the given objects
- _.each(objects, current => {
- // Stop here if the current argument is not an object
- if (typeof current !== 'object') {
- return;
- }
-
- // Extend the resulting object with the current argument object
- _.extend(result, current);
- });
-
- // Extend the resulting object with the Spacebars kw hash
- _.extend(result, kwHash);
-
- // Return the resulting object
- return result;
-});
diff --git a/Packages/viewerbase/lib/toolManager.js b/Packages/viewerbase/lib/toolManager.js
index 04a83dbdf..12d9f9ae8 100644
--- a/Packages/viewerbase/lib/toolManager.js
+++ b/Packages/viewerbase/lib/toolManager.js
@@ -1,3 +1,5 @@
+import { OHIF } from 'meteor/ohif:core';
+
var activeTool = 'wwwc';
var defaultTool = 'wwwc';
diff --git a/Packages/viewerbase/package.js b/Packages/viewerbase/package.js
index a9289d73b..536a58286 100644
--- a/Packages/viewerbase/package.js
+++ b/Packages/viewerbase/package.js
@@ -117,9 +117,6 @@ Package.onUse(function(api) {
api.addFiles('lib/toolManager.js', 'client');
api.addFiles('lib/enablePrefetchOnElement.js', 'client');
api.addFiles('lib/displayReferenceLines.js', 'client');
- api.addFiles('lib/ui/draggable/draggable.js', 'client');
- api.addFiles('lib/ui/resizable/resizable.js', 'client');
- api.addFiles('lib/ui/resizable/resizable.styl', 'client');
api.addFiles('lib/toggleDialog.js', 'client');
api.addFiles('lib/setActiveViewport.js', 'client');
api.addFiles('lib/switchToImageByIndex.js', 'client');
@@ -168,7 +165,6 @@ Package.onUse(function(api) {
api.export('LayoutManager', 'client');
// Global objects
- api.export('OHIF', 'client');
api.export('ClientId', 'client');
// Collections
@@ -177,8 +173,6 @@ Package.onUse(function(api) {
// UI Helpers
api.addFiles([
'lib/helpers/formatDA.js',
- 'lib/helpers/blaze.js',
- 'lib/helpers/logical.js',
'lib/helpers/formatJSDate.js',
'lib/helpers/jsDateFromNow.js',
'lib/helpers/formatNumberPrecision.js',