105 lines
3.2 KiB
JavaScript
105 lines
3.2 KiB
JavaScript
import OHIF from '@ohif/core';
|
|
import { connect } from 'react-redux';
|
|
import findDisplaySetByUID from './findDisplaySetByUID';
|
|
import { servicesManager } from './../App.js';
|
|
import { StudyBrowser } from '../../../ui/src/components/studyBrowser/StudyBrowser';
|
|
|
|
const { setActiveViewportSpecificData } = OHIF.redux.actions;
|
|
|
|
const mapDispatchToProps = (dispatch, ownProps) => {
|
|
return {
|
|
onThumbnailClick: displaySetInstanceUID => {
|
|
let displaySet = findDisplaySetByUID(
|
|
ownProps.studyMetadata,
|
|
displaySetInstanceUID
|
|
);
|
|
|
|
const { LoggerService, UINotificationService } = servicesManager.services;
|
|
|
|
if (displaySet.isDerived) {
|
|
const { Modality } = displaySet;
|
|
if (Modality === 'SEG' && servicesManager) {
|
|
const onDisplaySetLoadFailureHandler = error => {
|
|
LoggerService.error({ error, message: error.message });
|
|
UINotificationService.show({
|
|
title: 'DICOM Segmentation Loader',
|
|
message: error.message,
|
|
type: 'error',
|
|
autoClose: false,
|
|
});
|
|
};
|
|
|
|
const {
|
|
referencedDisplaySet,
|
|
activatedLabelmapPromise,
|
|
} = displaySet.getSourceDisplaySet(
|
|
ownProps.studyMetadata,
|
|
true,
|
|
onDisplaySetLoadFailureHandler
|
|
);
|
|
displaySet = referencedDisplaySet;
|
|
|
|
activatedLabelmapPromise.then(activatedLabelmapIndex => {
|
|
const selectionFired = new CustomEvent(
|
|
'extensiondicomsegmentationsegselected',
|
|
{
|
|
detail: { activatedLabelmapIndex: activatedLabelmapIndex },
|
|
}
|
|
);
|
|
document.dispatchEvent(selectionFired);
|
|
});
|
|
} else if (Modality !== 'SR') {
|
|
displaySet = displaySet.getSourceDisplaySet(ownProps.studyMetadata);
|
|
}
|
|
|
|
if (!displaySet) {
|
|
const error = new Error(
|
|
`Referenced series for ${Modality} dataset not present.`
|
|
);
|
|
const message = `Referenced series for ${Modality} dataset not present.`;
|
|
LoggerService.error({ error, message });
|
|
UINotificationService.show({
|
|
autoClose: false,
|
|
title: 'Fail to load series',
|
|
message,
|
|
type: 'error',
|
|
});
|
|
}
|
|
}
|
|
|
|
if (!displaySet) {
|
|
const error = new Error('Source data not present');
|
|
const message = 'Source data not present';
|
|
LoggerService.error({ error, message });
|
|
UINotificationService.show({
|
|
autoClose: false,
|
|
title: 'Fail to load series',
|
|
message,
|
|
type: 'error',
|
|
});
|
|
}
|
|
|
|
if (displaySet.isSOPClassUIDSupported === false) {
|
|
const error = new Error('Modality not supported');
|
|
const message = 'Modality not supported';
|
|
LoggerService.error({ error, message });
|
|
UINotificationService.show({
|
|
autoClose: false,
|
|
title: 'Fail to load series',
|
|
message,
|
|
type: 'error',
|
|
});
|
|
}
|
|
|
|
dispatch(setActiveViewportSpecificData(displaySet));
|
|
},
|
|
};
|
|
};
|
|
|
|
const ConnectedStudyBrowser = connect(
|
|
null,
|
|
mapDispatchToProps
|
|
)(StudyBrowser);
|
|
|
|
export default ConnectedStudyBrowser;
|