* feat: add initial sop class handler for SEG * feat: move segmentation service * update segmentation service methods * fix: viewport data structure * feat: Add initial render for the DICOM SEG for each displaySet * fix: various wrong architectural dependencies between services * feat: initial separate SEG display in each viewport * feat: refactore viewport action bar * initial work for SEG hydration * fix: various bugs regarding drag and dropping different viewports * fix: rendering issues for multiple seg displaysets * fix: bugs for thumbnail and hydration * feat: fix the initial segment color * update after rebase * feat: initial design for the segmentation group table * feat: initial new design for the segmentation panel * feat: segmentation panel * feat: make segmentation appear on all related viewports * fix: segmentation load bug based on functional groups * initial work for segmentation crosshairs * fix: various stylings and functionality * fix: various stylings for the seg panel * fix: overflow styles * feat: add more ui components * feat: added segmentation config * feat: add jump to segment * feat: add jump to segment for DICOM SEG viewport * fix: bugs after rebase * feat: jump in segmentation viewport * fix: mpr support for seg * feat: add more icons * feat: new icons * feat: add new side panel * feat: add segmentation config * feat: add loading indicator to ohif * feat: make hanging protocols follow matching rules for viewports * feat: enhance drag and drop to be hanging protocol aware * fix: mpr restore previous layout * fix: crosshairs toggle * fix: add auth headers to the dicom loader via dicomwebclient * fix: bug for crosshairs toggle in mpr * fix: seg viewport reusing old toolGroup * feat: add loading animation with lottie * fix: various bugs for Segmentation hydration in mpr * feat: change outline alpha to outline opacity * feat: loading indicator for seg viewport * fix: various segmentation group styles * fix: local mode for seg * feat: add animation for the highlight * fix: loading indicatro to show segment indices * feat: enhance modality drop down ui * fix: panels * fix: download form * fix: layout shift in loading indicator * fix: loading indicator to have correct values * fix: update software number * fix: image jump between MPR and default * fix: segmentation cleanup and cine service cleanup * fix: segmentation toolgroup clena up * fix: highlight interval should not trigger again * fix: issue with multiframe sorting * rename: change onSeriesChange to onArrowsClick * fix: buttons for tmtv and layout shift * fix: various bugs wrt crosshairs * fix: crosshairs re init on reset camera * fix: middle slice calculation different from cs middle reset camera * fix: reset camera should reset viewport camera * fix: loading segments in MPR mode * fix: tmtv hp back to before * fix: layout shift * feat: orientation markers for volume viewport * fix: capture for volume viewports * fix: memory leak for back to worklist * fix: loading bar bg color * fix: side panel for only one panel * fix: react select style in production * fix: various styling for segmentation groups * fix: various ui styles * feat: add new segmentation config styles * fix: hover state for segmentation item * fix: side panel layout shift * temp add panels * try to fix scrollbar for thimbnail * fix: scroll not appearing for side panels * feat: changed styles for scrollbar * feat: add cpu fallback warning * fix: webworker destroy * fix: select styles * fix: orientation marker color and position * fix: capture screenshot for volume viewports * fix: hide segment visibility on mpr * fix: reloading an already loaded seg displayset * feat: add is equal * fix: mpr jump to measurements * apply review comments * fix: optimization for the segmentation load * fix: remove unnecessary context menu and hp service reset * fix: segmentation service wrt brush settings * feat: initial work for the stack synchronization * fix: add validateDisplaySetSelectorsForNewDisplaySets to make sure drag and drop can follow requirements * fix: various react proptypes * fix: thumbnails for the tmtv and change default props to default params * feat: make showing loading indicator configurable and add docs * bump versions and add more docs * fix demo * update cornerstone versions * apply review comments * feat: add reference lines * fix build * fix unit tests * add reference lines icon * fix: e2e tests * fix static wado config * docs: add segmentation service docs * fix: docker build * fix: keep camera and bump versions * Try re-enabling minification to fix deploy previews Co-authored-by: Erik Ziegler <erik.sweed@gmail.com>
184 lines
8.2 KiB
Markdown
184 lines
8.2 KiB
Markdown
---
|
||
sidebar_position: 1
|
||
sidebar_label: Configuration Files
|
||
---
|
||
|
||
# Config files
|
||
|
||
After following the steps outlined in
|
||
[Getting Started](./../development/getting-started.md), you'll notice that the
|
||
OHIF Viewer has data for several studies and their images. You didn't add this
|
||
data, so where is it coming from?
|
||
|
||
By default, the viewer is configured to connect to a remote server hosted by the
|
||
nice folks over at [dcmjs.org][dcmjs-org]. While convenient for getting started,
|
||
the time may come when you want to develop using your own data either locally or
|
||
remotely.
|
||
|
||
## Configuration Files
|
||
|
||
The 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`][default-config]. The majority of the viewer's features,
|
||
and registered extension's features, are configured using this file.
|
||
|
||
The simplest way is to update the existing default config:
|
||
|
||
```js title="platform/viewer/public/config/default.js"
|
||
window.config = {
|
||
routerBasename: '/',
|
||
extensions: [],
|
||
modes: [],
|
||
showStudyList: true,
|
||
dataSources: [
|
||
{
|
||
friendlyName: 'dcmjs DICOMWeb Server',
|
||
namespace: '@ohif/extension-default.dataSourcesModule.dicomweb',
|
||
sourceName: 'dicomweb',
|
||
configuration: {
|
||
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,
|
||
supportsReject: true,
|
||
imageRendering: 'wadors',
|
||
thumbnailRendering: 'wadors',
|
||
enableStudyLazyLoad: true,
|
||
supportsFuzzyMatching: true,
|
||
supportsWildcard: true,
|
||
},
|
||
},
|
||
],
|
||
defaultDataSourceName: 'dicomweb',
|
||
};
|
||
```
|
||
|
||
> As you can see a new change in `OHIF-v3` is the addition of `dataSources`. You
|
||
> can build your own datasource and map it to the internal data structure of
|
||
> OHIF’s > metadata and enjoy using other peoples developed mode on your own
|
||
> data!
|
||
>
|
||
> You can read more about data sources at
|
||
> [Data Source section in Modes](../platform/modes/index.md)
|
||
|
||
The configuration can also be written as a JS Function in case you need to
|
||
inject dependencies like external services:
|
||
|
||
```js
|
||
window.config = ({ servicesManager } = {}) => {
|
||
const { UIDialogService } = servicesManager.services;
|
||
return {
|
||
cornerstoneExtensionConfig: {
|
||
tools: {
|
||
ArrowAnnotate: {
|
||
configuration: {
|
||
getTextCallback: (callback, eventDetails) => UIDialogService.create({...
|
||
}
|
||
}
|
||
},
|
||
},
|
||
routerBasename: '/',
|
||
dataSources: [
|
||
{
|
||
friendlyName: 'dcmjs DICOMWeb Server',
|
||
namespace: '@ohif/extension-default.dataSourcesModule.dicomweb',
|
||
sourceName: 'dicomweb',
|
||
configuration: {
|
||
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,
|
||
supportsReject: true,
|
||
imageRendering: 'wadors',
|
||
thumbnailRendering: 'wadors',
|
||
enableStudyLazyLoad: true,
|
||
supportsFuzzyMatching: true,
|
||
supportsWildcard: true,
|
||
},
|
||
},
|
||
],
|
||
defaultDataSourceName: 'dicomweb',
|
||
};
|
||
};
|
||
```
|
||
|
||
## Configuration Options
|
||
|
||
Here are a list of some options available:
|
||
|
||
- `maxNumberOfWebWorkers`: The maximum number of web workers to use for
|
||
decoding. Defaults to minimum of `navigator.hardwareConcurrency` and
|
||
what is specified by `maxNumberOfWebWorkers`. Some windows machines require smaller values.
|
||
- `omitQuotationForMultipartRequest`: Some servers (e.g., .NET) require the `multipart/related` request to be sent without quotation marks. Defaults to `false`. If your server doesn't require this, then setting this flag to `true` might improve performance (by removing the need for preflight requests). Also note that
|
||
if auth headers are used, a preflight request is required.
|
||
- `maxNumRequests`: The maximum number of requests to allow in parallel. It is an object with keys of `interaction`, `thumbnail`, and `prefetch`. You can specify a specific number for each type.
|
||
- `showLoadingIndicator`: (default to true), if set to false, the loading indicator will not be shown when navigating between studies.
|
||
|
||
|
||
|
||
|
||
<!-- **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 Variables
|
||
|
||
We 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][html-templates] 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` |
|
||
|
||
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](https://facebook.github.io/create-react-app/docs/adding-custom-environment-variables#adding-temporary-environment-variables-in-your-shell)~
|
||
- Previous `react-scripts` functionality that we need to duplicate with
|
||
`dotenv-webpack`
|
||
- ~[Add environment specific variables in `.env` file(s)](https://facebook.github.io/create-react-app/docs/adding-custom-environment-variables#adding-development-environment-variables-in-env)~
|
||
- Previous `react-scripts` functionality that we need to duplicate with
|
||
`dotenv-webpack`
|
||
- Using the `cross-env` package in a 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.
|
||
|
||
<!--
|
||
Links
|
||
-->
|
||
|
||
<!-- prettier-ignore-start -->
|
||
[dcmjs-org]: https://server.dcmjs.org/dcm4chee-arc/aets/DCM4CHEE/wado
|
||
[dicom-web]: https://en.wikipedia.org/wiki/DICOMweb
|
||
[storescu]: https://support.dcmtk.org/docs/storescu.html
|
||
[webpack-proxy]: https://webpack.js.org/configuration/dev-server/#devserverproxy
|
||
[orthanc-docker-compose]: https://github.com/OHIF/Viewers/tree/master/.docker/Nginx-Orthanc
|
||
<!-- Archives -->
|
||
[dcm4chee]: https://github.com/dcm4che/dcm4chee-arc-light
|
||
[dcm4chee-docker]: https://github.com/dcm4che/dcm4chee-arc-light/wiki/Running-on-Docker
|
||
[orthanc]: https://www.orthanc-server.com/
|
||
[orthanc-docker]: https://book.orthanc-server.com/users/docker.html
|
||
[dicomcloud]: https://github.com/DICOMcloud/DICOMcloud
|
||
[dicomcloud-install]: https://github.com/DICOMcloud/DICOMcloud#running-the-code
|
||
[osirix]: https://www.osirix-viewer.com/
|
||
[horos]: https://www.horosproject.org/
|
||
[default-config]: https://github.com/OHIF/Viewers/blob/master/platform/viewer/public/config/default.js
|
||
[html-templates]: https://github.com/OHIF/Viewers/tree/master/platform/viewer/public/html-templates
|
||
[config-files]: https://github.com/OHIF/Viewers/tree/master/platform/viewer/public/config
|
||
<!-- prettier-ignore-end -->
|