diff --git a/extensions/cornerstone/babel.config.js b/extensions/cornerstone/babel.config.js index fed6f05fe..325ca2a8e 100644 --- a/extensions/cornerstone/babel.config.js +++ b/extensions/cornerstone/babel.config.js @@ -1 +1 @@ -module.exports = require("../../babel.config.js"); +module.exports = require('../../babel.config.js'); diff --git a/extensions/cornerstone/src/utils/setCornerstoneLayout.js b/extensions/cornerstone/src/utils/setCornerstoneLayout.js index e308c0d4a..d3a8630ae 100644 --- a/extensions/cornerstone/src/utils/setCornerstoneLayout.js +++ b/extensions/cornerstone/src/utils/setCornerstoneLayout.js @@ -17,6 +17,6 @@ const setCornerstoneLayout = () => { const action = setLayout(layout); window.store.dispatch(action); -} +}; export default setCornerstoneLayout; diff --git a/extensions/default/src/DicomWebDataSource/index.js b/extensions/default/src/DicomWebDataSource/index.js index 2feb5d441..053e1f841 100644 --- a/extensions/default/src/DicomWebDataSource/index.js +++ b/extensions/default/src/DicomWebDataSource/index.js @@ -125,8 +125,8 @@ function createDicomWebApi(dicomWebConfig) { }, }, }, - getImageIdsForDisplaySet(displaySetInstanceUID) { - const displaySet = displaySetManager.getDisplaySetByUID( + getImageIdsForDisplaySet(displaySetInstanceUID, DisplaySetService) { + const displaySet = DisplaySetService.getDisplaySetByUID( displaySetInstanceUID ); diff --git a/extensions/default/src/Panels/PanelStudyBrowser.jsx b/extensions/default/src/Panels/PanelStudyBrowser.jsx index 7256695bc..a2ae1a1bd 100644 --- a/extensions/default/src/Panels/PanelStudyBrowser.jsx +++ b/extensions/default/src/Panels/PanelStudyBrowser.jsx @@ -1,10 +1,10 @@ import React, { useState, useEffect, useCallback } from 'react'; import PropTypes from 'prop-types'; import { StudyBrowser } from '@ohif/ui'; -import { dicomMetadataStore, useViewModel } from '@ohif/core'; +import { dicomMetadataStore } from '@ohif/core'; // -function PanelStudyBrowser({ getImageSrc, getStudiesByPatientId, dataSource }) { +function PanelStudyBrowser({ servicesManager, getImageSrc, getStudiesByPatientId, dataSource }) { console.warn('StudyBrowserPanel rerender'); const [activeTabName, setActiveTabName] = useState('primary'); const [studyData, setStudyData] = useState([]); @@ -13,34 +13,30 @@ function PanelStudyBrowser({ getImageSrc, getStudiesByPatientId, dataSource }) { setThumbnailImageSrcMap(thumbnailImageSrcMap.set(k, v)); }; - const isSubscribed = true; - const viewModel = useViewModel(); - const viewportData = []; //useViewportGrid(); - const seriesTracking = {}; //useSeriesTracking(); - - // This effect - useEffect(() => { - if (!viewModel.displaySetInstanceUIDs.length) { + const { DisplaySetService } = servicesManager.services; + const handleDisplaySetSubscription = useCallback(displaySets => { + if (!displaySets) { return; } if (getImageSrc) { - viewModel.displaySetInstanceUIDs.forEach(async uid => { - const imageIds = dataSource.getImageIdsForDisplaySet(uid); - const imageId = imageIds[Math.floor(imageIds.length / 2)]; - const imageSrc = await getImageSrc(imageId); + Object.keys(displaySets).forEach(StudyInstanceUid => { + const dSets = displaySets[StudyInstanceUid]; + dSets.forEach(async (dset) => { + const uid = dset.displaySetInstanceUID; + const imageIds = dataSource.getImageIdsForDisplaySet(uid, DisplaySetService); + const imageId = imageIds[Math.floor(imageIds.length / 2)]; + const imageSrc = await getImageSrc(imageId); - updateThumbnailMap(uid, imageSrc); - }); + updateThumbnailMap(uid, imageSrc); + }); + }) } - const displaySets = viewModel.displaySetInstanceUIDs.map( - displaySetManager.getDisplaySetByUID - ); - - const aDisplaySet = displaySets[0]; + // TODO: This isn't really the 'first' + const firstStudyInstanceUID = Object.keys(displaySets)[0]; const firstStudy = dicomMetadataStore.getStudy( - aDisplaySet.StudyInstanceUID + firstStudyInstanceUID ); const firstInstance = firstStudy.series[0].instances[0]; const PatientID = firstInstance.PatientID; @@ -62,9 +58,19 @@ function PanelStudyBrowser({ getImageSrc, getStudiesByPatientId, dataSource }) { } getData(); + }); - return () => (isSubscribed = false); - }, [viewModel.displaySetInstanceUIDs]); + useEffect(() => { + const { unsubscribe } = DisplaySetService.subscribe( + DisplaySetService.EVENTS.DISPLAY_SET_ADDED, + handleDisplaySetSubscription + ); + + return unsubscribe; + }, []); + + const viewportData = []; //useViewportGrid(); + const seriesTracking = {}; //useSeriesTracking(); studyData.forEach(study => { study.displaySets.forEach(ds => { @@ -112,7 +118,7 @@ function PanelStudyBrowser({ getImageSrc, getStudiesByPatientId, dataSource }) { dataSource.retrieve.series.metadata( queryParams, - displaySetManager.makeDisplaySets + DisplaySetService.makeDisplaySets ); } @@ -169,34 +175,39 @@ function _mapDataSourceStudies(studies) { * Iterates over displaysets and creates mapped studies from * instance metadata. * - * @param {*} displaySets + * @param {*} displaySetsPerStudy */ -function _getMappedStudiesFromDisplaySets(displaySets) { +function _getMappedStudiesFromDisplaySets(displaySetsPerStudy) { const studiesFromInstanceData = {}; - displaySets.forEach(ds => { - const displaySet = { - displaySetInstanceUID: ds.displaySetInstanceUID, - description: ds.SeriesDescription, - seriesNumber: ds.SeriesNumber, - modality: ds.Modality, - date: ds.SeriesDate, - numInstances: ds.numImageFrames, - }; + Object.keys(displaySetsPerStudy).forEach(StudyInstanceUID => { + const displaySets = displaySetsPerStudy[StudyInstanceUID]; - studiesFromInstanceData[ds.StudyInstanceUID] = - studiesFromInstanceData[ds.StudyInstanceUID] || - _mapStudyFromInstance(ds.StudyInstanceUID); + displaySets.forEach(ds => { + const displaySet = { + displaySetInstanceUID: ds.displaySetInstanceUID, + description: ds.SeriesDescription, + seriesNumber: ds.SeriesNumber, + modality: ds.Modality, + date: ds.SeriesDate, + numInstances: ds.numImageFrames, + componentType: 'thumbnailTracked' // TODO: PUT THIS SOMEWHERE ELSE + }; - const mappedStudy = studiesFromInstanceData[ds.StudyInstanceUID]; + studiesFromInstanceData[ds.StudyInstanceUID] = + studiesFromInstanceData[ds.StudyInstanceUID] || + _mapStudyFromInstance(ds.StudyInstanceUID); - mappedStudy.displaySets.push(displaySet); - mappedStudy.numInstances += displaySet.numInstances; - mappedStudy.modalitiesSet.add(displaySet.modality); + const mappedStudy = studiesFromInstanceData[ds.StudyInstanceUID]; - const modalitiesSet = mappedStudy.modalitiesSet; - mappedStudy.modalities = Array.from(modalitiesSet).join(', '); - }); + mappedStudy.displaySets.push(displaySet); + mappedStudy.numInstances += displaySet.numInstances; + mappedStudy.modalitiesSet.add(displaySet.modality); + + const modalitiesSet = mappedStudy.modalitiesSet; + mappedStudy.modalities = Array.from(modalitiesSet).join(', '); + }); + }) return studiesFromInstanceData; } @@ -223,6 +234,7 @@ function _mergeDataSourceAndInstanceStudies(mappedQidoStudies, mappedInstanceStu description: qidoStudy.StudyDescription || studyFromInstances.description, modalities: studyFromInstances.modalities || qidoStudy.ModalitiesInStudy, numInstances: qidoStudy.NumInstances || studyFromInstances.numInstances, + seriesNumber: studyFromInstances.seriesNumber, displaySets: studyFromInstances.displaySets, }; }); diff --git a/extensions/default/src/Panels/WrappedPanelStudyBrowser.jsx b/extensions/default/src/Panels/WrappedPanelStudyBrowser.jsx index b25fc9d52..f4541ab06 100644 --- a/extensions/default/src/Panels/WrappedPanelStudyBrowser.jsx +++ b/extensions/default/src/Panels/WrappedPanelStudyBrowser.jsx @@ -11,18 +11,18 @@ import getImageSrcFromImageId from './getImageSrcFromImageId'; * @param {object} commandsManager * @param {object} extensionManager */ -function WrappedPanelStudyBrowser({ commandsManager, extensionManager }) { +function WrappedPanelStudyBrowser({ commandsManager, extensionManager, servicesManager }) { // Note: this feels odd const dataSource = extensionManager.getDataSources('dicomweb')[0]; const getStudiesByPatientId = patientId => dataSource.query.studies.search(patientId); const _getImageSrcFromImageId = _createGetImageSrcFromImageIdFn( - commandsManager.getCommand + commandsManager.getCommand.bind(commandsManager), ); - return ( Need some way of selecting which displaySets hit the viewports. +// const { DisplaySetService } = servicesManager.services; - // // TODO -> Need some way of selecting which displaySets hit the viewports. - // const { DisplaySetService } = servicesManager.services; +// // TODO -> Make a HangingProtocolService +// const HangingProtocolService = displaySets => { +// const displaySetInstanceUid = displaySets[Object.keys(displaySets)[0]][0].displaySetInstanceUid; - // // TODO -> Make a HangingProtocolService - // const HangingProtocolService = displaySets => { - // const displaySetInstanceUid = displaySets[Object.keys(displaySets)[0]][0].displaySetInstanceUid; +// return { +// numRows: 1, +// numCols: 1, +// activeViewportIndex: 0, +// viewports: [ +// { +// displaySetInstanceUid, +// }, +// ], +// }; +// }; - // return { - // numRows: 1, - // numCols: 1, - // activeViewportIndex: 0, - // viewports: [ - // { - // displaySetInstanceUid, - // }, - // ], - // }; - // }; +// const handleDisplaySetSubscription = useCallback(displaySets => { +// setViewportGrid(HangingProtocolService(displaySets)); +// }); - // const handleDisplaySetSubscription = useCallback(displaySets => { - // setViewportGrid(HangingProtocolService(displaySets)); - // }); +// useEffect(() => { +// const { unsubscribe } = DisplaySetService.subscribe( +// DisplaySetService.EVENTS.DISPLAY_SET_ADDED, +// handleDisplaySetSubscription +// ); - // useEffect(() => { - // const { unsubscribe } = DisplaySetService.subscribe( - // DisplaySetService.EVENTS.DISPLAY_SET_ADDED, - // handleDisplaySetSubscription - // ); - - // return unsubscribe; - // }, []); +// return unsubscribe; +// }, []); diff --git a/extensions/lesion-tracker/src/components/MeasurementComparisonTable.js b/extensions/lesion-tracker/src/components/MeasurementComparisonTable.js index 8218f2c55..2118895da 100644 --- a/extensions/lesion-tracker/src/components/MeasurementComparisonTable.js +++ b/extensions/lesion-tracker/src/components/MeasurementComparisonTable.js @@ -76,13 +76,13 @@ const additionalFindings = [ const currentCollections = [ { - selectorAction: () => { }, + selectorAction: () => {}, maxMeasurements: 3, groupName: 'Measurements', measurements: measurements, }, { - selectorAction: () => { }, + selectorAction: () => {}, groupName: 'Additional Findings', measurements: additionalFindings, }, @@ -90,13 +90,13 @@ const currentCollections = [ const comparisonColletions = [ { - selectorAction: () => { }, + selectorAction: () => {}, maxMeasurements: 3, groupName: 'Measurements', measurements: measurements, }, { - selectorAction: () => { }, + selectorAction: () => {}, groupName: 'Additional Findings', measurements: additionalFindings, }, @@ -128,7 +128,7 @@ const comparisonTimepoints = [ { key: 'Comparison', date: '15-Jun-18', - } + }, ]; const MeasurementComparisonTable = () => { @@ -138,8 +138,8 @@ const MeasurementComparisonTable = () => { timepoints={comparisonTimepoints} overallWarnings={overallWarnings} measurementCollection={comparisonCollections} - onRelabelClick={() => { }} - onEditDescriptionClick={() => { }} + onRelabelClick={() => {}} + onEditDescriptionClick={() => {}} />
diff --git a/extensions/lesion-tracker/src/index.js b/extensions/lesion-tracker/src/index.js index a521b2128..d664070aa 100644 --- a/extensions/lesion-tracker/src/index.js +++ b/extensions/lesion-tracker/src/index.js @@ -26,7 +26,7 @@ export default { component: MeasurementComparisonTable, }, ], - defaultContext: ['VIEWER'] + defaultContext: ['VIEWER'], }; }, diff --git a/modes/example/babel.config.js b/modes/example/babel.config.js index fed6f05fe..325ca2a8e 100644 --- a/modes/example/babel.config.js +++ b/modes/example/babel.config.js @@ -1 +1 @@ -module.exports = require("../../babel.config.js"); +module.exports = require('../../babel.config.js'); diff --git a/platform/core/src/classes/CommandsManager.js b/platform/core/src/classes/CommandsManager.js index ca4555206..995bc0988 100644 --- a/platform/core/src/classes/CommandsManager.js +++ b/platform/core/src/classes/CommandsManager.js @@ -115,7 +115,7 @@ export class CommandsManager { * @param {String} commandName - Command to find * @param {String} [contextName] - Specific command to look in. Defaults to current activeContexts */ - getCommand(commandName, contextName) { + getCommand = (commandName, contextName) => { let contexts = []; if (contextName) { @@ -145,7 +145,7 @@ export class CommandsManager { }); return foundCommand; - } + }; /** * diff --git a/platform/core/src/services/DisplaySetService/DisplaySetService.js b/platform/core/src/services/DisplaySetService/DisplaySetService.js index b4fad7b98..ddcbe2dad 100644 --- a/platform/core/src/services/DisplaySetService/DisplaySetService.js +++ b/platform/core/src/services/DisplaySetService/DisplaySetService.js @@ -131,8 +131,9 @@ export default class DisplaySetService { }; getDisplaySetByUID = displaySetInstanceUid => { - return this.displaySets.find( - displaySet => displaySet.displaySetInstanceUid === displaySetInstanceUid + // TODO: Why is this searching active, not just displaySets? + return displaySetCache.find( + displaySet => displaySet.displaySetInstanceUID === displaySetInstanceUid ); };