From 2e52d9e3c1d9008ce2ce755e4d6e0573969e70a5 Mon Sep 17 00:00:00 2001 From: Erik Ziegler Date: Sat, 7 May 2016 08:58:46 +0200 Subject: [PATCH] First pass at a Hanging Protocol implementation and editor (LT-131) --- .jshintrc | 36 +- LesionTracker/.meteor/packages | 1 + LesionTracker/.meteor/versions | 5 + .../components/viewerMain/viewerMain.html | 3 +- .../components/viewerMain/viewerMain.js | 19 +- .../components/viewerMain/viewerMain.styl | 9 +- .../client/lesionTrackerHangingProtocol.js | 183 + LesionTracker/client/routes.js | 3 +- OHIFViewer/.meteor/packages | 4 +- OHIFViewer/.meteor/versions | 22 +- .../client/components}/layout/layout.html | 7 - .../client/components}/layout/layout.styl | 5 +- .../client/components/viewer/viewer.html | 9 +- OHIFViewer/client/components/viewer/viewer.js | 32 +- .../client/components/viewer/viewer.styl | 18 +- OHIFViewer/client/routes.js | 23 +- OHIFViewer/defaultSettings.js | 2 - Packages/hangingprotocols/assets/dots.svg | 1 + Packages/hangingprotocols/both/collections.js | 10 + .../both/dicomTagDescriptions.js | 3148 +++ .../hangingprotocols/both/hardcodedData.js | 104 + Packages/hangingprotocols/both/namespace.js | 1 + Packages/hangingprotocols/both/routes.js | 46 + Packages/hangingprotocols/both/schema.js | 599 + Packages/hangingprotocols/both/testData.js | 109 + .../hangingprotocols/client/collections.js | 75 + .../hangingProtocolButtons.html | 4 +- .../hangingProtocolButtons.js | 73 + .../matchedProtocols/matchedProtocols.html | 29 + .../matchedProtocols/matchedProtocols.js | 50 + .../matchedProtocols/matchedProtocols.styl | 14 + .../protocolEditor/protocolEditor.html | 129 + .../protocolEditor/protocolEditor.js | 370 + .../protocolEditor/protocolEditor.styl | 154 + .../ruleEntryDialog/ruleEntryDialog.html | 47 + .../ruleEntryDialog/ruleEntryDialog.js | 395 + .../ruleEntryDialog/ruleEntryDialog.styl | 36 + .../components/ruleTable/ruleTable.html | 32 + .../client/components/ruleTable/ruleTable.js | 130 + .../components/ruleTable/ruleTable.styl | 46 + .../settingEntryDialog.html | 25 + .../settingEntryDialog/settingEntryDialog.js | 232 + .../settingEntryDialog.styl | 36 + .../settingsTable/settingsTable.html | 31 + .../components/settingsTable/settingsTable.js | 57 + .../settingsTable/settingsTable.styl | 44 + .../components/stageDetails/stageDetails.html | 33 + .../components/stageDetails/stageDetails.js | 40 + .../components/stageDetails/stageDetails.styl | 29 + .../stageSortable/stageSortable.html | 30 + .../components/stageSortable/stageSortable.js | 254 + .../stageSortable/stageSortable.styl | 72 + .../textEntryDialog/textEntryDialog.html | 23 + .../textEntryDialog/textEntryDialog.js | 132 + .../textEntryDialog/textEntryDialog.styl | 29 + .../client/helpers/attributes.js | 19 + .../client/helpers/displayConstraint.js | 39 + .../hangingprotocols/client/protocolEngine.js | 685 + Packages/hangingprotocols/log.js | 3 + Packages/hangingprotocols/package.js | 92 +- .../hangingprotocols/server/collections.js | 15 + .../hangingprotocols/server/dataDictionary.js | 21873 ---------------- .../server/dataSetToJsWithDictionary.js | 78 - Packages/hangingprotocols/server/imageset.js | 20 - .../server/instanceDataToJsObject.js | 73 - Packages/hangingprotocols/server/match.js | 87 - Packages/hangingprotocols/server/methods.js | 43 + Packages/hangingprotocols/server/namespace.js | 1 - Packages/hangingprotocols/server/select.js | 78 - .../components}/hidingPanel/hidingPanel.html | 0 .../components}/hidingPanel/hidingPanel.js | 0 .../components}/hidingPanel/hidingPanel.styl | 0 .../lesionTrackerLayout.js | 42 + Packages/lesiontracker/package.js | 15 +- Packages/orthanc-remote/package.js | 2 +- .../client/compatibility/validate.js | 0 .../confirmDeleteDialog.html | 0 .../confirmDeleteDialog.js | 0 .../confirmDeleteDialog.styl | 4 +- .../client/components/basic/login/login.html | 3 - .../components/basic/notFound/notFound.html | 3 - .../basic/progressDialog/progressDialog.js | 100 - .../basic/studyNotFound/studyNotFound.html | 5 - .../basic/studyNotFound/studyNotFound.styl | 6 - .../relatedStudySelect.html | 11 + .../relatedStudySelect/relatedStudySelect.js | 105 + .../relatedStudySelect.styl | 23 + .../studyBrowser/studyBrowser.html | 4 +- .../studyBrowser/studyBrowser/studyBrowser.js | 13 + .../thumbnailEntry/thumbnailEntry.js | 5 +- .../studyBrowser/thumbnails/thumbnails.html | 5 - .../studyBrowser/thumbnails/thumbnails.js | 15 - .../viewer/cineDialog/cineDialog.js | 1 - .../gridLayout.html} | 4 +- .../viewer/gridLayout/gridLayout.js | 38 + .../gridLayout.styl} | 4 +- .../hangingProtocolButtons.js | 11 - .../imageViewerViewport.js | 92 +- .../imageViewerViewports.js | 201 - .../viewer/layoutButton/layoutButton.html | 6 - .../viewer/layoutChooser/layoutChooser.html | 11 +- .../viewer/layoutChooser/layoutChooser.js | 15 +- .../viewer/layoutChooser/layoutChooser.styl | 9 +- .../components/viewer/toolbar/toolbar.html | 8 +- .../components/viewer/toolbar/toolbar.js | 4 +- .../viewportOrientationMarkers.js | 7 +- .../viewportOverlay/viewportOverlay.html | 42 + .../viewer/viewportOverlay/viewportOverlay.js | 23 + .../viewportOverlay/viewportOverlay.styl | 2 +- Packages/viewerbase/lib/accountsConfig.js | 5 - Packages/viewerbase/lib/encodeQueryData.js | 18 - .../lib/helpers/capitalizeFirstLetter.js | 14 + .../viewerbase/lib/helpers/formatJSDate.js | 16 + .../viewerbase/lib/helpers/getUsername.js | 12 + Packages/viewerbase/lib/helpers/ifTypeIs.js | 10 + Packages/viewerbase/lib/helpers/inc.js | 3 + .../viewerbase/lib/helpers/jsDateFromNow.js | 13 + Packages/viewerbase/lib/helpers/objectEach.js | 6 + .../viewerbase/lib/helpers/objectToPairs.js | 9 + .../lib/helpers/prettyPrintStringify.js | 19 + .../lib/instanceClassSpecificViewport.js | 14 + Packages/viewerbase/lib/layoutManager.js | 211 + Packages/viewerbase/lib/metaDataProvider.js | 15 + .../lib/rerenderViewportWithNewSeries.js | 48 - .../viewerbase/lib/resizeViewportElements.js | 14 + .../lib/setMammogramViewportAlignment.js | 61 + Packages/viewerbase/lib/validators.js | 23 + Packages/viewerbase/lib/windowManager.js | 656 - Packages/viewerbase/package.js | 106 +- Packages/viewerbase/server/seed.js | 18 - .../progressDialog/progressDialog.html | 0 .../progressDialog/progressDialog.js | 56 + .../progressDialog/progressDialog.styl | 0 .../worklist/client/components/worklist.js | 18 +- .../worklistResult/worklistResult.html | 1 - .../worklistResult/worklistResult.js | 2 +- .../worklistResult/worklistResult.styl | 2 +- .../client}/lib/exportStudies.js | 0 .../{ => client}/lib/getStudiesMetadata.js | 4 - .../{ => client}/lib/getStudyMetadata.js | 8 +- .../worklist/{ => client}/lib/openNewTab.js | 1 + .../worklist/{ => client}/lib/switchToTab.js | 0 .../worklist/{ => client}/lib/worklist.js | 0 Packages/worklist/package.js | 47 +- .../worklist/server/lib/encodeQueryData.js | 18 + .../server/lib/namespace.js | 2 +- .../server/methods/getStudyMetadata.js | 0 .../server/methods/worklistSearch.js | 0 .../server/services/dimse/instances.js | 0 .../server/services/dimse/retrieveMetadata.js | 1 - .../server/services/dimse/studies.js | 0 .../server/services/qido/instances.js | 0 .../server/services/qido/studies.js | 0 .../server/services/remote/instances.js | 0 .../services/remote/retrieveMetadata.js | 0 .../server/services/remote/studies.js | 0 .../server/services/wado/retrieveMetadata.js | 8 +- 157 files changed, 8869 insertions(+), 23585 deletions(-) create mode 100644 LesionTracker/client/lesionTrackerHangingProtocol.js rename {Packages/viewerbase/client/components/basic => OHIFViewer/client/components}/layout/layout.html (79%) rename {Packages/viewerbase/client/components/basic => OHIFViewer/client/components}/layout/layout.styl (88%) create mode 100644 Packages/hangingprotocols/assets/dots.svg create mode 100644 Packages/hangingprotocols/both/collections.js create mode 100644 Packages/hangingprotocols/both/dicomTagDescriptions.js create mode 100644 Packages/hangingprotocols/both/hardcodedData.js create mode 100644 Packages/hangingprotocols/both/namespace.js create mode 100755 Packages/hangingprotocols/both/routes.js create mode 100644 Packages/hangingprotocols/both/schema.js create mode 100644 Packages/hangingprotocols/both/testData.js create mode 100644 Packages/hangingprotocols/client/collections.js rename Packages/{viewerbase/client/components/viewer => hangingprotocols/client/components}/hangingProtocolButtons/hangingProtocolButtons.html (85%) create mode 100644 Packages/hangingprotocols/client/components/hangingProtocolButtons/hangingProtocolButtons.js create mode 100644 Packages/hangingprotocols/client/components/matchedProtocols/matchedProtocols.html create mode 100644 Packages/hangingprotocols/client/components/matchedProtocols/matchedProtocols.js create mode 100644 Packages/hangingprotocols/client/components/matchedProtocols/matchedProtocols.styl create mode 100644 Packages/hangingprotocols/client/components/protocolEditor/protocolEditor.html create mode 100644 Packages/hangingprotocols/client/components/protocolEditor/protocolEditor.js create mode 100644 Packages/hangingprotocols/client/components/protocolEditor/protocolEditor.styl create mode 100644 Packages/hangingprotocols/client/components/ruleEntryDialog/ruleEntryDialog.html create mode 100644 Packages/hangingprotocols/client/components/ruleEntryDialog/ruleEntryDialog.js create mode 100644 Packages/hangingprotocols/client/components/ruleEntryDialog/ruleEntryDialog.styl create mode 100644 Packages/hangingprotocols/client/components/ruleTable/ruleTable.html create mode 100644 Packages/hangingprotocols/client/components/ruleTable/ruleTable.js create mode 100644 Packages/hangingprotocols/client/components/ruleTable/ruleTable.styl create mode 100644 Packages/hangingprotocols/client/components/settingEntryDialog/settingEntryDialog.html create mode 100644 Packages/hangingprotocols/client/components/settingEntryDialog/settingEntryDialog.js create mode 100644 Packages/hangingprotocols/client/components/settingEntryDialog/settingEntryDialog.styl create mode 100644 Packages/hangingprotocols/client/components/settingsTable/settingsTable.html create mode 100644 Packages/hangingprotocols/client/components/settingsTable/settingsTable.js create mode 100644 Packages/hangingprotocols/client/components/settingsTable/settingsTable.styl create mode 100644 Packages/hangingprotocols/client/components/stageDetails/stageDetails.html create mode 100644 Packages/hangingprotocols/client/components/stageDetails/stageDetails.js create mode 100644 Packages/hangingprotocols/client/components/stageDetails/stageDetails.styl create mode 100644 Packages/hangingprotocols/client/components/stageSortable/stageSortable.html create mode 100644 Packages/hangingprotocols/client/components/stageSortable/stageSortable.js create mode 100644 Packages/hangingprotocols/client/components/stageSortable/stageSortable.styl create mode 100644 Packages/hangingprotocols/client/components/textEntryDialog/textEntryDialog.html create mode 100644 Packages/hangingprotocols/client/components/textEntryDialog/textEntryDialog.js create mode 100644 Packages/hangingprotocols/client/components/textEntryDialog/textEntryDialog.styl create mode 100644 Packages/hangingprotocols/client/helpers/attributes.js create mode 100644 Packages/hangingprotocols/client/helpers/displayConstraint.js create mode 100644 Packages/hangingprotocols/client/protocolEngine.js create mode 100644 Packages/hangingprotocols/log.js create mode 100644 Packages/hangingprotocols/server/collections.js delete mode 100644 Packages/hangingprotocols/server/dataDictionary.js delete mode 100644 Packages/hangingprotocols/server/dataSetToJsWithDictionary.js delete mode 100755 Packages/hangingprotocols/server/imageset.js delete mode 100644 Packages/hangingprotocols/server/instanceDataToJsObject.js delete mode 100755 Packages/hangingprotocols/server/match.js create mode 100644 Packages/hangingprotocols/server/methods.js delete mode 100755 Packages/hangingprotocols/server/namespace.js delete mode 100755 Packages/hangingprotocols/server/select.js rename Packages/{viewerbase/client/components/basic => lesiontracker/client/components}/hidingPanel/hidingPanel.html (100%) rename Packages/{viewerbase/client/components/basic => lesiontracker/client/components}/hidingPanel/hidingPanel.js (100%) rename Packages/{viewerbase/client/components/basic => lesiontracker/client/components}/hidingPanel/hidingPanel.styl (100%) rename Packages/{lesiontracker => viewerbase}/client/compatibility/validate.js (100%) rename Packages/{lesiontracker/client/components => viewerbase/client/components/basic}/confirmDeleteDialog/confirmDeleteDialog.html (100%) rename Packages/{lesiontracker/client/components => viewerbase/client/components/basic}/confirmDeleteDialog/confirmDeleteDialog.js (100%) rename Packages/{lesiontracker/client/components => viewerbase/client/components/basic}/confirmDeleteDialog/confirmDeleteDialog.styl (84%) delete mode 100644 Packages/viewerbase/client/components/basic/login/login.html delete mode 100644 Packages/viewerbase/client/components/basic/notFound/notFound.html delete mode 100644 Packages/viewerbase/client/components/basic/progressDialog/progressDialog.js delete mode 100644 Packages/viewerbase/client/components/basic/studyNotFound/studyNotFound.html delete mode 100644 Packages/viewerbase/client/components/basic/studyNotFound/studyNotFound.styl create mode 100644 Packages/viewerbase/client/components/studyBrowser/relatedStudySelect/relatedStudySelect.html create mode 100644 Packages/viewerbase/client/components/studyBrowser/relatedStudySelect/relatedStudySelect.js create mode 100644 Packages/viewerbase/client/components/studyBrowser/relatedStudySelect/relatedStudySelect.styl delete mode 100644 Packages/viewerbase/client/components/studyBrowser/thumbnails/thumbnails.html delete mode 100644 Packages/viewerbase/client/components/studyBrowser/thumbnails/thumbnails.js rename Packages/viewerbase/client/components/viewer/{imageViewerViewports/imageViewerViewports.html => gridLayout/gridLayout.html} (79%) create mode 100644 Packages/viewerbase/client/components/viewer/gridLayout/gridLayout.js rename Packages/viewerbase/client/components/viewer/{imageViewerViewports/imageViewerViewports.styl => gridLayout/gridLayout.styl} (91%) delete mode 100644 Packages/viewerbase/client/components/viewer/hangingProtocolButtons/hangingProtocolButtons.js delete mode 100644 Packages/viewerbase/client/components/viewer/imageViewerViewports/imageViewerViewports.js delete mode 100644 Packages/viewerbase/client/components/viewer/layoutButton/layoutButton.html delete mode 100644 Packages/viewerbase/lib/accountsConfig.js delete mode 100644 Packages/viewerbase/lib/encodeQueryData.js create mode 100644 Packages/viewerbase/lib/helpers/capitalizeFirstLetter.js create mode 100644 Packages/viewerbase/lib/helpers/formatJSDate.js create mode 100644 Packages/viewerbase/lib/helpers/getUsername.js create mode 100644 Packages/viewerbase/lib/helpers/ifTypeIs.js create mode 100644 Packages/viewerbase/lib/helpers/inc.js create mode 100644 Packages/viewerbase/lib/helpers/jsDateFromNow.js create mode 100644 Packages/viewerbase/lib/helpers/objectEach.js create mode 100644 Packages/viewerbase/lib/helpers/objectToPairs.js create mode 100644 Packages/viewerbase/lib/helpers/prettyPrintStringify.js create mode 100644 Packages/viewerbase/lib/instanceClassSpecificViewport.js create mode 100644 Packages/viewerbase/lib/layoutManager.js delete mode 100644 Packages/viewerbase/lib/rerenderViewportWithNewSeries.js create mode 100644 Packages/viewerbase/lib/setMammogramViewportAlignment.js create mode 100644 Packages/viewerbase/lib/validators.js delete mode 100644 Packages/viewerbase/lib/windowManager.js delete mode 100644 Packages/viewerbase/server/seed.js rename Packages/{viewerbase/client/components/basic => worklist/client/components}/progressDialog/progressDialog.html (100%) create mode 100644 Packages/worklist/client/components/progressDialog/progressDialog.js rename Packages/{viewerbase/client/components/basic => worklist/client/components}/progressDialog/progressDialog.styl (100%) rename Packages/{viewerbase => worklist/client}/lib/exportStudies.js (100%) rename Packages/worklist/{ => client}/lib/getStudiesMetadata.js (95%) rename Packages/worklist/{ => client}/lib/getStudyMetadata.js (94%) rename Packages/worklist/{ => client}/lib/openNewTab.js (95%) rename Packages/worklist/{ => client}/lib/switchToTab.js (100%) rename Packages/worklist/{ => client}/lib/worklist.js (100%) create mode 100644 Packages/worklist/server/lib/encodeQueryData.js rename Packages/{viewerbase => worklist}/server/lib/namespace.js (98%) rename Packages/{viewerbase => worklist}/server/methods/getStudyMetadata.js (100%) rename Packages/{viewerbase => worklist}/server/methods/worklistSearch.js (100%) rename Packages/{viewerbase => worklist}/server/services/dimse/instances.js (100%) rename Packages/{viewerbase => worklist}/server/services/dimse/retrieveMetadata.js (96%) rename Packages/{viewerbase => worklist}/server/services/dimse/studies.js (100%) rename Packages/{viewerbase => worklist}/server/services/qido/instances.js (100%) rename Packages/{viewerbase => worklist}/server/services/qido/studies.js (100%) rename Packages/{viewerbase => worklist}/server/services/remote/instances.js (100%) rename Packages/{viewerbase => worklist}/server/services/remote/retrieveMetadata.js (100%) rename Packages/{viewerbase => worklist}/server/services/remote/studies.js (100%) rename Packages/{viewerbase => worklist}/server/services/wado/retrieveMetadata.js (98%) diff --git a/.jshintrc b/.jshintrc index 2f7a6233b..607e68961 100644 --- a/.jshintrc +++ b/.jshintrc @@ -43,7 +43,7 @@ "debug" : false, // true: Allow debugger statements e.g. browser breakpoints. "eqnull" : false, // true: Tolerate use of `== null` "es5" : true, // true: Allow ES5 syntax (ex: getters and setters) - "esnext" : false, // true: Allow ES.next (ES6) syntax (ex: `const`) + "esnext" : true, // true: Allow ES.next (ES6) syntax (ex: `const`) "moz" : false, // true: Allow Mozilla specific syntax (extends and overrides esnext features) // (ex: `for each`, multiple try/catch, function expression…) "evil" : false, // true: Tolerate use of `eval` and `new Function()` @@ -85,37 +85,5 @@ "typed" : false, // Globals for typed array constructions "worker" : false, // Web Workers "wsh" : false, // Windows Scripting Host - "yui" : false, // Yahoo User Interface - - // Custom Globals - // additional predefined global variables - "globals" : { - console: true, - prompt: true, - $: true, - Hammer: true, - cornerstone: true, - cornerstoneMath: true, - cornerstoneTools: true, - cornerstoneTools: true, - - // Meteor-specific Globals - Meteor: true, - Template: true, - UI: true, - Session: true, - - // loglevel package - log: true, - - // OHIF-package specific Globals - OHIF: true, - toolManager: true, - ViewerData: true, - ViewerStudies: true, - LesionManager: true, - Timepoints: true, - Measurements: true, - StudyImportStatus: true - } + "yui" : false // Yahoo User Interface } \ No newline at end of file diff --git a/LesionTracker/.meteor/packages b/LesionTracker/.meteor/packages index a17d120ed..2933bff58 100644 --- a/LesionTracker/.meteor/packages +++ b/LesionTracker/.meteor/packages @@ -54,3 +54,4 @@ gilbertwat:bootstrap3-daterangepicker email peppelg:bootstrap-3-modal simple:reactive-method +hangingprotocols diff --git a/LesionTracker/.meteor/versions b/LesionTracker/.meteor/versions index 37f81bc2d..bef0a4d81 100644 --- a/LesionTracker/.meteor/versions +++ b/LesionTracker/.meteor/versions @@ -31,6 +31,7 @@ clinical:router-url@2.0.15 clinical:theming@0.4.10 coffeescript@1.0.11 cornerstone@0.0.1 +dburles:mongo-collection-instances@0.3.4 ddp@1.2.2 ddp-client@1.2.1 ddp-common@1.2.2 @@ -63,6 +64,7 @@ iron:core@1.0.11 iron:dynamic-template@1.0.12 iron:layout@1.0.12 jquery@1.11.4 +lai:collection-extensions@0.1.4 launch-screen@1.0.4 lesiontracker@0.0.1 livedata@1.0.15 @@ -79,10 +81,12 @@ momentjs:moment@2.12.0 mongo@1.1.3 mongo-id@1.0.1 mrt:moment@2.8.1 +natestrauser:select2@4.0.2 npm-bcrypt@0.7.8_2 npm-mongo@1.4.39_1 observe-sequence@1.0.7 ordered-dict@1.0.4 +orthanc-remote@0.0.1 peppelg:bootstrap-3-modal@1.0.4 practicalmeteor:chai@2.1.0_1 practicalmeteor:loglevel@1.2.0_2 @@ -94,6 +98,7 @@ reactive-var@1.0.6 reload@1.1.4 retry@1.0.4 routepolicy@1.0.6 +rubaxa:sortable@1.3.0 rwatts:uuid@0.0.2 service-configuration@1.0.5 session@1.1.1 diff --git a/LesionTracker/client/components/viewerMain/viewerMain.html b/LesionTracker/client/components/viewerMain/viewerMain.html index 6bf8bf680..dd8f44d2d 100644 --- a/LesionTracker/client/components/viewerMain/viewerMain.html +++ b/LesionTracker/client/components/viewerMain/viewerMain.html @@ -1,6 +1,7 @@ \ No newline at end of file diff --git a/LesionTracker/client/components/viewerMain/viewerMain.js b/LesionTracker/client/components/viewerMain/viewerMain.js index 7ec7e0902..6eec6e550 100644 --- a/LesionTracker/client/components/viewerMain/viewerMain.js +++ b/LesionTracker/client/components/viewerMain/viewerMain.js @@ -86,25 +86,23 @@ Template.viewerMain.helpers({ // CR/UN/EX Tools var crunexToolsBtns = { id: 'crunexTools', - tools:[{ + tools: [{ id: 'crTool', title: 'CR Tool', classes: 'imageViewerTool', iconClasses: 'fa fa-cr' - }, - { + }, { id: 'unTool', title: 'UN Tool', classes: 'imageViewerTool', iconClasses: 'fa fa-un' - }, - { + }, { id: 'exTool', title: 'EX Tool', classes: 'imageViewerTool', iconClasses: 'fa fa-ex' }], - title: "CR/UN/EX", + title: 'CR/UN/EX', groupIcon: 'fa fa-exchange' }; @@ -118,3 +116,12 @@ Template.viewerMain.helpers({ return toolbarOptions; } }); + +Template.viewerMain.onRendered(function() { + var parentNode = document.getElementById('layoutManagerTarget'); + var studies = this.data.studies; + layoutManager = new LayoutManager(parentNode, studies); + + ProtocolEngine = new HP.ProtocolEngine(layoutManager, studies); + HP.setEngine(ProtocolEngine); +}); diff --git a/LesionTracker/client/components/viewerMain/viewerMain.styl b/LesionTracker/client/components/viewerMain/viewerMain.styl index fcd7b0cff..f29c98428 100644 --- a/LesionTracker/client/components/viewerMain/viewerMain.styl +++ b/LesionTracker/client/components/viewerMain/viewerMain.styl @@ -2,15 +2,22 @@ width: 100% height: 84% + #layoutManagerTarget + width: 100% + height: calc(100% - 30px) + //font awesome icons .fa-cr:before content: 'CR' font-weight: bold + font-family: "Helvetica Neue", Helvetica, Arial, sans-serif .fa-un:before content: 'UN' font-weight: bold + font-family: "Helvetica Neue", Helvetica, Arial, sans-serif .fa-ex:before content: 'EX' - font-weight: bold \ No newline at end of file + font-weight: bold + font-family: "Helvetica Neue", Helvetica, Arial, sans-serif \ No newline at end of file diff --git a/LesionTracker/client/lesionTrackerHangingProtocol.js b/LesionTracker/client/lesionTrackerHangingProtocol.js new file mode 100644 index 000000000..d0b7a836a --- /dev/null +++ b/LesionTracker/client/lesionTrackerHangingProtocol.js @@ -0,0 +1,183 @@ +// Define Baseline protocol +var proto = new HP.Protocol('LT_Baseline'); +proto.locked = true; + +var studyDescription = new HP.ProtocolMatchingRule(); +studyDescription.required = true; +studyDescription.attribute = 'studyDescription'; +studyDescription.constraint = { + contains: { + value: 'CT' + } +}; + +var isBaseline = new HP.ProtocolMatchingRule(); +isBaseline.required = true; +isBaseline.attribute = 'timepointType'; +isBaseline.constraint = { + equals: { + value: 'baseline' + } +}; + +proto.addProtocolMatchingRule(studyDescription); +proto.addProtocolMatchingRule(isBaseline); + +var oneByOne = new HP.ViewportStructure('grid', { + rows: 1, + columns: 1 +}); + +// Stage 1 +var single = new HP.Viewport(); + +var baseline = new HP.StudyMatchingRule(true); +baseline.required = true; +baseline.attribute = 'timepointType'; +baseline.constraint = { + equals: { + value: 'baseline' + } +}; + +var body = new HP.SeriesMatchingRule(); +body.attribute = 'seriesDescription'; +body.weight = 5; +body.constraint = { + contains: { + value: 'Body' + } +}; + +var chest = new HP.SeriesMatchingRule(); +chest.attribute = 'seriesDescription'; +chest.constraint = { + contains: { + value: 'CHEST' + } +}; + +single.studyMatchingRules.push(baseline); +single.seriesMatchingRules.push(body); +single.seriesMatchingRules.push(chest); + +var first = new HP.Stage(oneByOne, 'oneByOne'); +first.viewports.push(single); + +proto.addStage(first); + +HP.lesionTrackerBaselineProtocol = proto; +HP.lesionTrackerBaselineProtocol.id = 'lesionTrackerBaselineProtocol'; + + +// Define Followup Protocol +var proto = new HP.Protocol('LT_BaselineFollowup'); +proto.locked = true; + +var studyDescription = new HP.ProtocolMatchingRule(); +studyDescription.required = true; +studyDescription.attribute = 'studyDescription'; +studyDescription.constraint = { + contains: { + value: 'CT' + } +}; + +var isFollowup = new HP.ProtocolMatchingRule(); +isFollowup.required = true; +isFollowup.attribute = 'timepointType'; +isFollowup.constraint = { + equals: { + value: 'followup' + } +}; + +proto.addProtocolMatchingRule(studyDescription); +proto.addProtocolMatchingRule(isFollowup); + +var oneByTwo = new HP.ViewportStructure('grid', { + rows: 1, + columns: 2 +}); + +// Stage 1 +var left = new HP.Viewport(); +var right = new HP.Viewport(); + +var baseline = new HP.StudyMatchingRule(true); +baseline.required = true; +baseline.attribute = 'timepointType'; +baseline.constraint = { + equals: { + value: 'baseline' + } +}; + +var followup = new HP.StudyMatchingRule(); +followup.required = true; +followup.attribute = 'timepointType'; +followup.constraint = { + equals: { + value: 'followup' + } +}; + +var body = new HP.SeriesMatchingRule(); +body.attribute = 'seriesDescription'; +body.weight = 5; +body.constraint = { + contains: { + value: 'Body' + } +}; + +var chest = new HP.SeriesMatchingRule(); +chest.attribute = 'seriesDescription'; +chest.constraint = { + contains: { + value: 'CHEST' + } +}; + +left.studyMatchingRules.push(baseline); +left.seriesMatchingRules.push(body); +left.seriesMatchingRules.push(chest); + +right.studyMatchingRules.push(followup); +right.seriesMatchingRules.push(body); +right.seriesMatchingRules.push(chest); + +var first = new HP.Stage(oneByTwo, 'oneByTwo'); +first.viewports.push(left); +first.viewports.push(right); + +proto.addStage(first); + +HP.lesionTrackerFollowupProtocol = proto; +HP.lesionTrackerFollowupProtocol.id = 'lesionTrackerFollowupProtocol'; + +Meteor.call('removeHangingProtocolByID', HP.lesionTrackerBaselineProtocol.id, function() { + HangingProtocols.insert(HP.lesionTrackerBaselineProtocol); +}); + +Meteor.call('removeHangingProtocolByID', HP.lesionTrackerFollowupProtocol.id, function() { + HangingProtocols.insert(HP.lesionTrackerFollowupProtocol); +}); + +Meteor.startup(function() { + getTimepointType = function(study) { + var timepoint = Timepoints.findOne({ + studyInstanceUids: { + $in: [study.studyInstanceUid] + } + }); + + if (!timepoint) { + return; + } + + return timepoint.timepointType; + }; + + HP.addCustomAttribute('timepointType', 'Timepoint Type', getTimepointType); +}); \ No newline at end of file diff --git a/LesionTracker/client/routes.js b/LesionTracker/client/routes.js index a13ff0bb4..3673788e2 100644 --- a/LesionTracker/client/routes.js +++ b/LesionTracker/client/routes.js @@ -15,8 +15,7 @@ Object.keys(ViewerData).forEach(function(contentId) { Router.configure({ layoutTemplate: 'lesionTrackerLayout', - loadingTemplate: 'lesionTrackerLayout', - notFoundTemplate: 'notFound' + loadingTemplate: 'lesionTrackerLayout' }); Router.onBeforeAction('loading'); diff --git a/OHIFViewer/.meteor/packages b/OHIFViewer/.meteor/packages index 7c7606aa1..c0d1eb642 100644 --- a/OHIFViewer/.meteor/packages +++ b/OHIFViewer/.meteor/packages @@ -4,9 +4,6 @@ # 'meteor add' and 'meteor remove' will edit this file for you, # but you can also edit it by hand. -accounts-password -ian:accounts-ui-bootstrap-3 -iron:router twbs:bootstrap http arsnebula:reactive-promise @@ -37,3 +34,4 @@ practicalmeteor:loglevel hangingprotocols reactive-dict gilbertwat:bootstrap3-daterangepicker +clinical:router \ No newline at end of file diff --git a/OHIFViewer/.meteor/versions b/OHIFViewer/.meteor/versions index b0cc224fc..013be8bed 100644 --- a/OHIFViewer/.meteor/versions +++ b/OHIFViewer/.meteor/versions @@ -1,6 +1,3 @@ -accounts-base@1.2.2 -accounts-password@1.1.4 -anti:i18n@0.4.3 arsnebula:reactive-promise@0.9.1 autoupdate@1.2.4 babel-compiler@5.8.24_1 @@ -15,12 +12,15 @@ caching-compiler@1.0.0 caching-html-compiler@1.0.2 callback-hook@1.0.4 check@1.1.0 +clinical:router@2.0.17 +clinical:router-location@2.0.14 +clinical:router-middleware-stack@2.0.13 +clinical:router-url@2.0.15 coffeescript@1.0.11 cornerstone@0.0.1 ddp@1.2.2 ddp-client@1.2.1 ddp-common@1.2.2 -ddp-rate-limiter@1.0.0 ddp-server@1.2.2 deps@1.0.9 dicomweb@0.0.1 @@ -29,7 +29,6 @@ dimseservice@0.0.1 ecmascript@0.1.6 ecmascript-runtime@0.2.6 ejson@1.0.7 -email@1.0.8 fastclick@1.0.7 fortawesome:fontawesome@4.4.0 geojson-utils@1.0.4 @@ -39,20 +38,14 @@ hot-code-push@1.0.0 html-tools@1.0.5 htmljs@1.0.5 http@1.1.1 -ian:accounts-ui-bootstrap-3@1.2.83 id-map@1.0.4 iron:controller@1.0.12 iron:core@1.0.11 iron:dynamic-template@1.0.12 iron:layout@1.0.12 -iron:location@1.0.11 -iron:middleware-stack@1.0.11 -iron:router@1.0.12 -iron:url@1.0.11 jquery@1.11.4 launch-screen@1.0.4 livedata@1.0.15 -localstorage@1.0.5 logging@1.0.8 meteor@1.1.10 meteor-base@1.0.1 @@ -65,28 +58,25 @@ momentjs:moment@2.9.0 mongo@1.1.3 mongo-id@1.0.1 mrt:moment@2.8.1 -npm-bcrypt@0.7.8_2 +natestrauser:select2@4.0.1 npm-mongo@1.4.39_1 observe-sequence@1.0.7 ordered-dict@1.0.4 +orthanc-remote@0.0.1 practicalmeteor:chai@1.9.2_3 practicalmeteor:loglevel@1.1.0_3 promise@0.5.1 random@1.0.5 -rate-limit@1.0.0 reactive-dict@1.1.3 reactive-var@1.0.6 reload@1.1.4 retry@1.0.4 routepolicy@1.0.6 rwatts:uuid@0.0.2 -service-configuration@1.0.5 session@1.1.1 -sha@1.0.4 silentcicero:jszip@0.0.4 spacebars@1.0.7 spacebars-compiler@1.0.7 -srp@1.0.4 standard-app-packages@1.0.6 standard-minifiers@1.0.2 stylus@2.511.1 diff --git a/Packages/viewerbase/client/components/basic/layout/layout.html b/OHIFViewer/client/components/layout/layout.html similarity index 79% rename from Packages/viewerbase/client/components/basic/layout/layout.html rename to OHIFViewer/client/components/layout/layout.html index fc3a7c5e3..dda5b3fa5 100644 --- a/Packages/viewerbase/client/components/basic/layout/layout.html +++ b/OHIFViewer/client/components/layout/layout.html @@ -18,13 +18,6 @@
  • About
  • -
  • - -
  • diff --git a/Packages/viewerbase/client/components/basic/layout/layout.styl b/OHIFViewer/client/components/layout/layout.styl similarity index 88% rename from Packages/viewerbase/client/components/basic/layout/layout.styl rename to OHIFViewer/client/components/layout/layout.styl index 7fb905e2b..e3d233b3a 100644 --- a/Packages/viewerbase/client/components/basic/layout/layout.styl +++ b/OHIFViewer/client/components/layout/layout.styl @@ -9,11 +9,14 @@ .navbar margin-bottom: 0 border-radius: 0 - color: #888888 background-color: #060606 border: none font-family: "Sanchez" color: #C1C1C1 + + -webkit-transition: all 0.3s ease + -moz-transition: all 0.3s ease + transition: all 0.3s ease .navbar-default .navbar-nav > li > a color: #C1C1C1 diff --git a/OHIFViewer/client/components/viewer/viewer.html b/OHIFViewer/client/components/viewer/viewer.html index eabbfd0de..c731ecae5 100644 --- a/OHIFViewer/client/components/viewer/viewer.html +++ b/OHIFViewer/client/components/viewer/viewer.html @@ -1,13 +1,18 @@