From 537057e4d687f662dc1e1adb307c02a3934b2b80 Mon Sep 17 00:00:00 2001 From: Erik Ziegler Date: Sat, 15 Jun 2019 11:47:07 +0200 Subject: [PATCH] refactor(@ohif/extension-cornerstone): Error handling and removal of viewportData clearing on compon --- .../ohif-cornerstone-extension/package.json | 2 +- .../src/ConnectedCornerstoneViewport.js | 4 -- .../src/OHIFCornerstoneViewport.js | 41 +++++++++++++++---- 3 files changed, 35 insertions(+), 12 deletions(-) diff --git a/extensions/ohif-cornerstone-extension/package.json b/extensions/ohif-cornerstone-extension/package.json index 85859591a..c784b3546 100644 --- a/extensions/ohif-cornerstone-extension/package.json +++ b/extensions/ohif-cornerstone-extension/package.json @@ -1,6 +1,6 @@ { "name": "@ohif/extension-cornerstone", - "version": "0.0.34", + "version": "0.0.36", "description": "OHIF extension for Cornerstone", "author": "OHIF", "license": "MIT", diff --git a/extensions/ohif-cornerstone-extension/src/ConnectedCornerstoneViewport.js b/extensions/ohif-cornerstone-extension/src/ConnectedCornerstoneViewport.js index 9095ab2e5..3188723f4 100644 --- a/extensions/ohif-cornerstone-extension/src/ConnectedCornerstoneViewport.js +++ b/extensions/ohif-cornerstone-extension/src/ConnectedCornerstoneViewport.js @@ -47,10 +47,6 @@ const mapDispatchToProps = (dispatch, ownProps) => { dispatch(setViewportSpecificData(viewportIndex, data)); }, - clearViewportSpecificData: () => { - dispatch(clearViewportSpecificData(viewportIndex)); - }, - /** * Our component "enables" the underlying dom element on "componentDidMount" * It listens for that event, and then emits the enabledElement. We can grab diff --git a/extensions/ohif-cornerstone-extension/src/OHIFCornerstoneViewport.js b/extensions/ohif-cornerstone-extension/src/OHIFCornerstoneViewport.js index 5b57c898b..d23129a81 100644 --- a/extensions/ohif-cornerstone-extension/src/OHIFCornerstoneViewport.js +++ b/extensions/ohif-cornerstone-extension/src/OHIFCornerstoneViewport.js @@ -54,31 +54,60 @@ class OHIFCornerstoneViewport extends Component { StackManager.clearStacks(); } + /** + * Obtain the CornerstoneTools Stack for the specified display set. + * + * @param {Object[]} studies + * @param {String} studyInstanceUid + * @param {String} displaySetInstanceUid + * @param {String} [sopInstanceUid] + * @param {Number} [frameIndex=1] + * @return {Object} CornerstoneTools Stack + */ static getCornerstoneStack( studies, studyInstanceUid, displaySetInstanceUid, sopInstanceUid, - frameIndex + frameIndex = 0 ) { + if (!studies || !studies.length) { + throw new Error('Studies not provided.'); + } + + if (!studyInstanceUid) { + throw new Error('StudyInstanceUID not provided.') + } + + if (!displaySetInstanceUid) { + throw new Error('StudyInstanceUID not provided.') + } + // Create shortcut to displaySet const study = studies.find( study => study.studyInstanceUid === studyInstanceUid ); + if (!study) { + throw new Error('Study not found.'); + } + const displaySet = study.displaySets.find(set => { return set.displaySetInstanceUid === displaySetInstanceUid; }); + if (!displaySet) { + throw new Error('Display Set not found.'); + } + // Get stack from Stack Manager const storedStack = StackManager.findOrCreateStack(study, displaySet); // Clone the stack here so we don't mutate it const stack = Object.assign({}, storedStack); + stack.currentImageIdIndex = frameIndex; - if (frameIndex !== undefined) { - stack.currentImageIdIndex = frameIndex; - } else if (sopInstanceUid) { + if (sopInstanceUid) { const index = stack.imageIds.findIndex(imageId => { const sopCommonModule = cornerstone.metaData.get( 'sopCommonModule', @@ -94,10 +123,8 @@ class OHIFCornerstoneViewport extends Component { if (index > -1) { stack.currentImageIdIndex = index; } else { - stack.currentImageIdIndex = 0; + console.warn('SOPInstanceUID provided was not found in specified DisplaySet'); } - } else { - stack.currentImageIdIndex = 0; } return stack;