0.0.2 • Published 9 months ago

flexview-runtime-extension v0.0.2

Weekly downloads
-
License
-
Repository
github
Last release
9 months ago

Runtime Extension

This package was created to allow OHIF v3 extensions to be loaded at runtime. This concept allows the extensions to be built independently from OHIF (even on separate repositories) and injected during OHIF's initialization via configuration.

Using this package

To use this package, you must add it as a dependency of your OHIF v3 extension. As it is a private repository, you must add path reference to your extension's package.json file or use the link feature for both yarn or npm. It is also possible to configure this repository to enable HTTPS+OAuth or SSH authentication and add the repository reference directly in the package.json file. Another alternative would be to pay for npm subscriptions per user and use their private packages feature. And a last alternative would be to host our own npm registry on cloud and add this registry to our private repositories.

Whatever is the option you chose to install this package as a dependency of your extension, you should now be able to import it and use by your extension's code. Here is an example of how you can create and export your runtime extension:

import { RuntimeExtension } from '@radicalimaging/runtime-extension';

const myExtension = {
  id: '@radicalimaging/extension-my',
  preRegistration: (params) => {/* CODE */}
  getHangingProtocolModule: (params) => { /* CODE */ }
  getPanelModule: (params) => {/* CODE */}
  getCommandsModule: (params) => {/* CODE */}
  onModeEnter: () => {/* CODE */}
  onModeExit: () => {/* CODE */}
  /* Other callbacks */
}

const my = {
  hangingProtocol: '@radicalimaging/extension-my.hangingProtocolModule.hp',
  panel1: '@radicalimaging/extension-my.panelModule.panel1',
  panel2: '@radicalimaging/extension-my.panelModule.panel2',
};

const myRuntimeExtension = new RuntimeExtension(myExtension, [{
  modeId: '@ohif/mode-one',
  routePath: 'routeA',
  leftPanels: [my.panel1],
  rightPanels: [my.panel2],
  viewports: [],
  hangingProtocolOverride: my.hangingProtocol,
}]);

export default myRuntimeExtension;

After your extension is ready to go, you can export it into a single JavaScript bundle file. This file you can place directly in your OHIF v3 application root directory and reference it by the app-config.js file under the window.config.runtimeExtensions. Here is an example of the configuration:

window.config = {
  ...
  runtimeExtensions: {
    '@radicalimaging/extension-my': './runtime-extensions/my/index.umd.js',
  },
  ...
};

For the example above, the JavaScript bundle file was placed on ./runtime-extensions/my/ directory.

For more instructions on how to enable the runtime extension from the OHIF v3 side, please see this README.md file of an actual extension that was ported to runtime extensions to serve as an example.