ohif-viewer/modes/longitudinal/src/index.js
Bill Wallace ca9ed62a5f
feat(OHIF):Add DICOM Video Display
* feat(OHIFv3):Add a video viewport

* Fixed a couple of viewing issues

* fix(OHIF):If not all instances are used by a given provider, then continue to add items

* Added video data

* Add a basic e2e test for video display

* Adding a screen shot as requested
2022-02-24 11:55:12 -05:00

119 lines
3.7 KiB
JavaScript

import toolbarButtons from './toolbarButtons.js';
import { hotkeys } from '@ohif/core';
const ohif = {
layout: 'org.ohif.default.layoutTemplateModule.viewerLayout',
sopClassHandler: 'org.ohif.default.sopClassHandlerModule.stack',
hangingProtocols: 'org.ohif.default.hangingProtocolModule.default',
};
const tracked = {
measurements: 'org.ohif.measurement-tracking.panelModule.trackedMeasurements',
thumbnailList: 'org.ohif.measurement-tracking.panelModule.seriesList',
viewport: 'org.ohif.measurement-tracking.viewportModule.cornerstone-tracked',
};
const dicomsr = {
sopClassHandler: 'org.ohif.dicom-sr.sopClassHandlerModule.dicom-sr',
viewport: 'org.ohif.dicom-sr.viewportModule.dicom-sr',
};
const dicomvideo = {
sopClassHandler: 'org.ohif.dicom-video.sopClassHandlerModule.dicom-video',
viewport: 'org.ohif.dicom-video.viewportModule.dicom-video',
}
export default function mode({ modeConfiguration }) {
return {
// TODO: We're using this as a route segment
// We should not be.
id: 'viewer',
displayName: 'Basic Viewer',
/**
* Lifecycle hooks
*/
onModeEnter: ({ servicesManager, extensionManager }) => {
// Note: If tool's aren't initialized, this doesn't have viewport/tools
// to "set active". This is mostly for the toolbar UI state?
// Could update tool manager to be always persistent, and to set state
// on load?
const { ToolBarService } = servicesManager.services;
const interaction = {
groupId: 'primary',
itemId: 'Wwwc',
interactionType: 'tool',
commandOptions: undefined,
};
ToolBarService.recordInteraction(interaction);
ToolBarService.init(extensionManager);
ToolBarService.addButtons(toolbarButtons);
ToolBarService.createButtonSection('primary', [
'MeasurementTools',
'Zoom',
'WindowLevel',
'Pan',
'Capture',
'Layout',
'MoreTools',
]);
},
onModeExit: () => {},
validationTags: {
study: [],
series: [],
},
isValidMode: ({ modalities }) => {
const modalities_list = modalities.split('\\');
// Slide Microscopy modality not supported by basic mode yet
return !modalities_list.includes('SM')
},
routes: [
{
path: 'longitudinal',
/*init: ({ servicesManager, extensionManager }) => {
//defaultViewerRouteInit
},*/
layoutTemplate: ({ location, servicesManager }) => {
return {
id: ohif.layout,
props: {
leftPanels: [tracked.thumbnailList],
// TODO: Should be optional, or required to pass empty array for slots?
rightPanels: [tracked.measurements],
viewports: [
{
namespace: tracked.viewport,
displaySetsToDisplay: [ohif.sopClassHandler],
},
{
namespace: dicomsr.viewport,
displaySetsToDisplay: [dicomsr.sopClassHandler],
},
{
namespace: dicomvideo.viewport,
displaySetsToDisplay: [dicomvideo.sopClassHandler],
},
],
},
};
},
},
],
extensions: [
'org.ohif.default',
'org.ohif.cornerstone',
'org.ohif.measurement-tracking',
'org.ohif.dicom-sr',
'org.ohif.dicom-video',
],
hangingProtocols: [ohif.hangingProtocols],
sopClassHandlers: [dicomvideo.sopClassHandler, ohif.sopClassHandler, dicomsr.sopClassHandler,],
hotkeys: [...hotkeys.defaults.hotkeyBindings],
};
}
window.longitudinalMode = mode({});