Configuration
This step assumes you have an imaging archive. If you need assistance setting one up, check out the
Data Source
Guide or a deployment recipe that contains an open Image Archive
#
Configuration FilesThe configuration for our viewer is in the <root>platform/viewer/public/config
directory. Our build process knows which configuration file to use based on the
APP_CONFIG
environment variable. By default, its value is
config/default.js
. The majority of the viewer's features,
and registered extension's features, are configured using this file.
Embedded Use Note:
Alternatively, when using the umd
bundle for embedded use cases, these same
values are what you'll pass to installViewer
method:
OHIFStandaloneViewer.installViewer(window.config)
#
Environment VariablesWe use environment variables at build and dev time to change the Viewer's
behavior. We can update the HTML_TEMPLATE
to easily change which extensions
are registered, and specify a different APP_CONFIG
to connect to an
alternative data source (or even specify different default hotkeys).
Environment Variable | Description | Default |
---|---|---|
HTML_TEMPLATE | Which HTML template to use as our web app's entry point. Specific to PWA builds. | index.html |
PUBLIC_URL | The route relative to the host that the app will be served from. Specific to PWA builds. | / |
APP_CONFIG | Which [configuration file][config-file] to copy to output as app-config.js | config/default.js |
PROXY_TARGET | When developing, proxy requests that match this pattern to PROXY_DOMAIN | undefined |
PROXY_DOMAIN | When developing, proxy requests from PROXY_TARGET to PROXY_DOMAIN | undefined |
#
How do I configure my project?The simplest way is to update the existing default config:
window.config = { routerBasename: '/', servers: { dicomWeb: [ { name: 'DCM4CHEE', wadoUriRoot: 'https://server.dcmjs.org/dcm4chee-arc/aets/DCM4CHEE/wado', qidoRoot: 'https://server.dcmjs.org/dcm4chee-arc/aets/DCM4CHEE/rs', wadoRoot: 'https://server.dcmjs.org/dcm4chee-arc/aets/DCM4CHEE/rs', qidoSupportsIncludeField: true, imageRendering: 'wadors', thumbnailRendering: 'wadors', }, ], },};
The configuration can also be written as a JS Function in case you need to inject dependencies like external services:
window.config = ({ servicesManager } = {}) => { const { UIDialogService } = servicesManager.services; return { cornerstoneExtensionConfig: { tools: { ArrowAnnotate: { configuration: { getTextCallback: (callback, eventDetails) => UIDialogService.create({... } } }, }, routerBasename: '/', servers: { dicomWeb: [ { name: 'DCM4CHEE', wadoUriRoot: 'https://server.dcmjs.org/dcm4chee-arc/aets/DCM4CHEE/wado', qidoRoot: 'https://server.dcmjs.org/dcm4chee-arc/aets/DCM4CHEE/rs', wadoRoot: 'https://server.dcmjs.org/dcm4chee-arc/aets/DCM4CHEE/rs', qidoSupportsIncludeField: true, imageRendering: 'wadors', thumbnailRendering: 'wadors', }, ], }, };};
You can also create a new config file and specify its path relative to the build
output's root by setting the APP_CONFIG
environment variable. You can set the
value of this environment variable a few different ways:
- ~Add a temporary environment variable in your shell~
- Previous
react-scripts
functionality that we need to duplicate withdotenv-webpack
- Previous
- ~Add environment specific variables in
.env
file(s)~- Previous
react-scripts
functionality that we need to duplicate withdotenv-webpack
- Previous
- Using the
cross-env
package in an npm script:"build": "cross-env APP_CONFIG=config/my-config.js react-scripts build"
After updating the configuration, yarn run build
to generate updated build
output.