From 29853429c701d6350932dd50b01293ffd8f5b0fa Mon Sep 17 00:00:00 2001 From: dannyrb Date: Fri, 14 Jun 2019 20:28:41 -0400 Subject: [PATCH] createStacks --> studyMetadata.createDisplaySets(sopClassHandlerModules) --- .../ViewerRetrieveStudyData.js | 73 ++++++++++----- src/lib/jumpToRowItem.js | 11 ++- src/routes/StandaloneRouting.js | 91 ++++++++++++------- 3 files changed, 113 insertions(+), 62 deletions(-) diff --git a/src/connectedComponents/ViewerRetrieveStudyData.js b/src/connectedComponents/ViewerRetrieveStudyData.js index bf9f5a08b..8622f4bd4 100644 --- a/src/connectedComponents/ViewerRetrieveStudyData.js +++ b/src/connectedComponents/ViewerRetrieveStudyData.js @@ -1,9 +1,13 @@ import React, { Component } from 'react'; -import PropTypes from 'prop-types'; -import OHIF from 'ohif-core'; -import ConnectedViewer from './ConnectedViewer.js'; +import { metadata, studies, utils } from 'ohif-core'; -const { createDisplaySets } = OHIF.utils; +import ConnectedViewer from './ConnectedViewer.js'; +import PropTypes from 'prop-types'; +import { extensionManager } from './../App.js'; + +const { OHIFStudyMetadata } = metadata; +const { retrieveStudiesMetadata } = studies; +const { studyMetadataManager, updateMetaDataManager } = utils; class ViewerRetrieveStudyData extends Component { static propTypes = { @@ -17,32 +21,55 @@ class ViewerRetrieveStudyData extends Component { error: null, }; - componentDidMount() { + async componentDidMount() { // TODO: Avoid using timepoints here //const params = { studyInstanceUids, seriesInstanceUids, timepointId, timepointsFilter={} }; const { studyInstanceUids, seriesInstanceUids, server } = this.props; - const promise = OHIF.studies.retrieveStudiesMetadata( - server, - studyInstanceUids, - seriesInstanceUids - ); - // Render the viewer when the data is ready - promise - .then(studies => { - const updatedStudies = createDisplaySets(studies); + try { + const studies = await retrieveStudiesMetadata( + server, + studyInstanceUids, + seriesInstanceUids + ); - this.setState({ - studies: updatedStudies, - }); - }) - .catch(error => { - this.setState({ - error: true, - }); + // Render the viewer when the data is ready + // TODO: CLEAR THIS SOMEWHERE ELSE + studyMetadataManager.purge(); - throw new Error(error); + // Map studies to new format, update metadata manager? + const updatedStudies = studies.map(study => { + const studyMetadata = new OHIFStudyMetadata( + study, + study.studyInstanceUid + ); + const sopClassHandlerModules = + extensionManager.modules['sopClassHandlerModule']; + + study.displaySets = + study.displaySets || + studyMetadata.createDisplaySets(sopClassHandlerModules); + studyMetadata.setDisplaySets(study.displaySets); + + // Updates WADO-RS metaDataManager + updateMetaDataManager(study); + + studyMetadataManager.add(studyMetadata); + + return study; }); + + this.setState({ + studies: updatedStudies, + }); + } catch (err) { + this.setState({ + error: true, + }); + + // TODO: Handle gracefully instead of throwing? + throw new Error(err); + } } render() { diff --git a/src/lib/jumpToRowItem.js b/src/lib/jumpToRowItem.js index fb05835e1..f9edbfd60 100644 --- a/src/lib/jumpToRowItem.js +++ b/src/lib/jumpToRowItem.js @@ -1,4 +1,7 @@ -import { OHIF } from 'ohif-core'; +import { measurements, utils } from 'ohif-core'; + +const { MeasurementApi } = measurements; +const { studyMetadataManager } = utils; // TODO: Move this function to OHIF itself so we can use it on the OHIF measurment table (when it is finished) @@ -47,9 +50,7 @@ export default function jumpToRowItem( let measurement = dataAtThisTimepoint; - const { tool } = OHIF.measurements.MeasurementApi.getToolConfiguration( - toolType - ); + const { tool } = MeasurementApi.getToolConfiguration(toolType); if (options.childToolKey) { measurement = dataAtThisTimepoint[options.childToolKey]; } else if (Array.isArray(tool.childTools)) { @@ -79,7 +80,7 @@ export default function jumpToRowItem( return; } - const study = OHIF.utils.studyMetadataManager.get(data.studyInstanceUid); + const study = studyMetadataManager.get(data.studyInstanceUid); if (!study) { throw new Error('Study not found.'); } diff --git a/src/routes/StandaloneRouting.js b/src/routes/StandaloneRouting.js index 884261d78..622f68625 100644 --- a/src/routes/StandaloneRouting.js +++ b/src/routes/StandaloneRouting.js @@ -1,10 +1,14 @@ import React, { Component } from 'react'; -import PropTypes from 'prop-types'; -import qs from 'querystring'; -import Viewer from '../connectedComponents/Viewer'; -import OHIF from 'ohif-core'; +import { log, metadata, studies, utils } from 'ohif-core'; -const { createDisplaySets } = OHIF.utils; +import PropTypes from 'prop-types'; +import Viewer from '../connectedComponents/Viewer'; +import { extensionManager } from './../App.js'; +import qs from 'querystring'; + +const { OHIFStudyMetadata } = metadata; +const { retrieveStudiesMetadata } = studies; +const { studyMetadataManager, updateMetaDataManager } = utils; class StandaloneRouting extends Component { state = { @@ -31,7 +35,7 @@ class StandaloneRouting extends Component { // Add event listeners for request failure oReq.addEventListener('error', error => { - OHIF.log.warn('An error occurred while retrieving the JSON data'); + log.warn('An error occurred while retrieving the JSON data'); reject(error); }); @@ -41,11 +45,11 @@ class StandaloneRouting extends Component { // Parse the response content // https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest/responseText if (!oReq.responseText) { - OHIF.log.warn('Response was undefined'); + log.warn('Response was undefined'); reject(new Error('Response was undefined')); } - OHIF.log.info(JSON.stringify(oReq.responseText, null, 2)); + log.info(JSON.stringify(oReq.responseText, null, 2)); const data = JSON.parse(oReq.responseText); if (data.servers && query.studyInstanceUids) { @@ -55,20 +59,18 @@ class StandaloneRouting extends Component { const studyInstanceUids = query.studyInstanceUids.split(';'); const seriesInstanceUids = []; - OHIF.studies - .retrieveStudiesMetadata( - server, - studyInstanceUids, - seriesInstanceUids - ) - .then( - studies => { - resolve(studies); - }, - error => { - reject(error); - } - ); + retrieveStudiesMetadata( + server, + studyInstanceUids, + seriesInstanceUids + ).then( + studies => { + resolve(studies); + }, + error => { + reject(error); + } + ); } else { resolve(data.studies); } @@ -77,7 +79,7 @@ class StandaloneRouting extends Component { // Open the Request to the server for the JSON data // In this case we have a server-side route called /api/ // which responds to GET requests with the study data - OHIF.log.info(`Sending Request to: ${url}`); + log.info(`Sending Request to: ${url}`); oReq.open('GET', url); oReq.setRequestHeader('Accept', 'application/json'); @@ -86,18 +88,39 @@ class StandaloneRouting extends Component { }); } - componentDidMount() { - const query = qs.parse(this.props.location.search); - StandaloneRouting.parseQueryAndFetchStudies(query).then( - studies => { - const updatedStudies = createDisplaySets(studies); + async componentDidMount() { + try { + const query = qs.parse(this.props.location.search); + const studies = await StandaloneRouting.parseQueryAndFetchStudies(query); - this.setState({ studies: updatedStudies }); - }, - error => { - this.setState({ error }); - } - ); + studyMetadataManager.purge(); + + // Map studies to new format, update metadata manager? + const updatedStudies = studies.map(study => { + const studyMetadata = new OHIFStudyMetadata( + study, + study.studyInstanceUid + ); + const sopClassHandlerModules = + extensionManager.modules['sopClassHandlerModule']; + + study.displaySets = + study.displaySets || + studyMetadata.createDisplaySets(sopClassHandlerModules); + studyMetadata.setDisplaySets(study.displaySets); + + // Updates WADO-RS metaDataManager + updateMetaDataManager(study); + + studyMetadataManager.add(studyMetadata); + + return study; + }); + + this.setState({ studies: updatedStudies }); + } catch (error) { + this.setState({ error }); + } } render() {