Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
36 changes: 31 additions & 5 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,7 @@ It relies on [DICOMweb](https://www.dicomstandard.org/dicomweb/) RESTful service
- [Server Configuration](#server-configuration)
- [Handling Mixed Content and HTTPS](#handling-mixed-content-and-https)
- [Messages/Popups Configuration](#messagespopups-configuration)
- [Additional configuration topics](#additional-configuration-topics)
- [Deployment](#deployment)
- [Local](#local)
- [Google Cloud Platform](#google-cloud-platform)
Expand Down Expand Up @@ -128,21 +129,32 @@ Users can authenticate and authorize the application to access data via [OpenID

## Configuration

### Server Configuration

The app can be configured via a `public/config/{name}.js` JavaScript configuration file (see for example the default `public/config/local.js`).
Please refer to the [AppConfig.d.ts](src/AppConfig.d.ts) file for configuration options.

A single-page guide covering external servers, runtime server selection, the `gcp` secondary data source, annotation colors, and read-only / worklist flags is available in [docs/CONFIGURATION.md](docs/CONFIGURATION.md) and on the [project wiki](https://github.com/ImagingDataCommons/slim/wiki/Configuration).

The configuration can be changed at build-time using the `REACT_APP_CONFIG` environment variable.

### Server Configuration

#### Runtime Server Selection

When `enableServerSelection` is enabled in config, users can switch the active DICOMweb server at runtime via the header.
When `enableServerSelection` is enabled in config (default `false`), users can switch the active DICOMweb server at runtime via the header **Select server** button (`ApiOutlined` icon):

```js
window.config = {
// ...
enableServerSelection: true,
};
```

- **Full URLs**: Paste the complete server URL (e.g. `https://healthcare.googleapis.com/v1/projects/.../dicomWeb`).
- **Path-only (GCP Healthcare)**: Paste a GCP DICOM store path without the domain (e.g. `/projects/my-project/locations/us-central1/datasets/my-dataset/dicomStores/my-store`). The app prepends `https://healthcare.googleapis.com/v1` and appends `/dicomWeb` automatically.
- **Path-only (GCP Healthcare)**: Paste a GCP DICOM store path without the domain (e.g. `/projects/my-project/locations/us-central1/datasets/my-dataset/dicomStores/my-store`). The app always prepends `https://healthcare.googleapis.com/v1` and appends `/dicomWeb` (`normalizeServerUrl`; not controlled by `gcpBaseUrl`).

Custom selections are stored in `localStorage`, re-apply the current Bearer token when OIDC is in use, and use a temporary **read-only** client (`write: false`) for all SOP classes until you switch back to the default server.

Authorization is re-applied when switching servers, so a page reload is not needed after changing the active server.
See [docs/CONFIGURATION.md](docs/CONFIGURATION.md#runtime-server-selection-header-button) for details.

### Handling Mixed Content and HTTPS

Expand Down Expand Up @@ -240,6 +252,20 @@ window.config = {

When enabled, the memory footer appears at the bottom of all pages and monitors memory usage every 5 seconds.

### Additional configuration topics

The following topics are documented in [docs/CONFIGURATION.md](docs/CONFIGURATION.md):

| Topic | Config / mechanism |
| --- | --- |
| External DICOMweb server | `servers[].url` |
| Runtime server selection (header button) | `enableServerSelection` |
| Secondary GCP annotation store | `?gcp=<dicomWeb-url>` query parameter |
| Annotation / finding colors | `annotations[].style` |
| Read-only annotation UI | `disableAnnotationTools` |
| Hide study worklist | `disableWorklist` |
| Local Orthanc / CORS troubleshooting | see [Local deployment tips](docs/CONFIGURATION.md#local-deployment-tips) |

## Deployment

Download the latest release from [github.com/imagingdatacommons/slim/releases](https://github.com/imagingdatacommons/slim/releases) and then run the following commands to install build dependencies and build the app:
Expand Down
Loading
Loading