{
"OrthancExplorer2" : {
// enables or disables the plugin completely
"Enable": true,
// Prefix URL of the OE2 application (and API)
// A value of '/my-ui' means that the app will be available under /my-ui/app/
// and the api will be available under /my-ui/api/...
// Should start and end with a '/'
"Root" : "/ui/",
// Whether OE2 shall replace the default Orthanc Explorer interface ('/' URL will redirect to OE2)
"IsDefaultOrthancUI": true,
// Base theme for the UI (before custom CSS are applied).
// Allowed values: "light", "dark"
"Theme": "dark",
// Path to custom CSS file or logo.
// The custom CSS are applied after these default files and they are loaded after all other CSS.
// You may actually override any CSS value or variable from the application.
// - https://github.com/orthanc-server/orthanc-explorer-2/blob/master/WebApplication/src/assets/css/defaults-dark.css
// - https://github.com/orthanc-server/orthanc-explorer-2/blob/master/WebApplication/src/assets/css/defaults-light.css
// "CustomCssPath": "/home/my/path/to/custom.css",
// "CustomLogoUrl": "https://my.company/logo.png",
// "CustomLogoPath": "/home/my/path/to/logo.png",
// "CustomFavIconPath": "/home/my/path/to/favicon.ico", // note: this can be a .png, .svg or .ico file
// Custom Window/Tab Title
// "CustomTitle": "Orthanc Explorer 2",
// This block of configuration is transmitted as is to the frontend application.
// Make sure not to store any secret here
"UiOptions" : {
// note: all the "Enable..." variables can be set to false by the user-profile (if using the authorization plugin)
"EnableStudyList": true, // Enables the access to the study list (TODO)
"EnableUpload": true, // Enables the upload menu/interface
"EnableDicomModalities": true, // Enables the 'DICOM Modalities' interface in the side menu
"EnableDeleteResources": true, // Enables the delete button for Studies/Series/Instances
"EnableDownloadZip": true, // Enables the download zip button for Studies/Series
"EnableDownloadDicomDir": false, // Enables the download DICOM DIR button for Studies/Series
"EnableDownloadDicomFile": true, // Enables the download DICOM file button for Instances
"EnableAnonymization": true, // Enables the anonymize button
"EnableModification": true, // Enables the modify button
"EnableSendTo": true, // Enables the 'SendTo' button for Studies/Series/Instances
"EnableApiViewMenu": false, // Enables the API button to open API routes for Studies/Series/Instances (developer mode)
"EnableSettings": true, // Enables the settings menu/interface
"EnableLinkToLegacyUi": true, // Enables a link to the legacy Orthanc UI
"EnableChangePassword": true, // Enables the 'change password' button in the side bar. Only applicable if Keycloak is enabled
"EnableViewerQuickButton": true, // Enables a button in the study list to directly open a viewer
"EnableReportQuickButton": true, // Enables a button in the study list to directly open a PDF report if available in the study
"EnableEditLabels": true, // Enables labels management (create/delete/assign/unassign)
"AvailableLabels": [], // If not empty, this list prevents the creation of new labels and only allows add/remove of the listed labels.
// This configuration may be overriden when you use Keycloak and an auth-service that implements roles/permissions API.
"EnableLabelsCount": true, // Enables display of study count next to the each label (this might slow down the UI)
"EnableShares": false, // Enables sharing studies. See "Tokens" section below.
"DefaultShareDuration": 0, // [in days]. 0 means no expiration date,
"ShareDurations": [0, 7, 15, 30, 90, 365], // The share durations proposed in the UI
"EnableAddSeries": true, // Enables the "Add series" button
"AddSeriesDefaultTags": { // Default tag values when adding a new series of each type ("pdf", "image" or "stl")
"pdf" : {
"SeriesDescription": "Report",
"Modality": "DOC",
"SeriesDate": "$TODAY$" // Allowed keywords: $TODAY$, $STUDY_DATE$, $FILE_DATE$
},
"image" : {
"SeriesDescription": "Picture",
"Modality": "XC",
"SeriesDate": "$TODAY$"
},
"stl" : {
"SeriesDescription": "Model",
"Modality": "M3D",
"SeriesDate": "$TODAY$"
}
},
// If both OHIF viewer configurations are enabled, only the v3 is taken into account
"EnableOpenInOhifViewer": true, // Enables a "open in OHIF viewer" button. Note: OHIF can not be used together with KeyCloak (https://community.ohif.org/t/ohif-orthanc-token-to-access-a-single-study/727)
"OhifViewerPublicRoot" : "http://to-be-defined/", // must end with a '/'. e.g: "http://ohif.my.site/" means that link to OHIF will look like http://ohif.my.site/Viewer/1.2.3.444.5555....
"EnableOpenInOhifViewer3": true, // Enables a "open in OHIF viewer" button. If the OHIF plugin is loaded, the default value is 'true'
"OhifViewer3PublicRoot" : "/ohif/", // must end with a '/'. e.g: "http://ohif.my.site/" means that link to OHIF will look like http://ohif.my.site/viewer?StudyInstanceUIDs=1.2.3.444.5555....
"EnableOpenInMedDreamViewer": false, // Enables a "open in MedDream viewer" button
"MedDreamViewerPublicRoot" : "http://to-be-defined/", // must end with a '/'. e.g: "http://meddream.my.site/Viewer/" means that link to MedDream will look like http://meddream.my.site/?study=1.2.3.444.5555....
// Defines which icons is used by which enabled viewer.
// Allowed keys: "meddream", "osimis-web-viewer", "stone-webviewer", "ohif", "ohif-vr", "ohif-tmtv"
// Allowed values: CSS class that defines the viewer icons (only from bootstrap icons)
"ViewersIcons" : {
"osimis-web-viewer": "bi bi-eye",
"stone-webviewer": "bi bi-eye-fill",
"ohif": "bi bi-grid",
"ohif-vr": "bi bi-grid-1x2",
"ohif-tmtv": "bi bi-grid-3x3-gap",
"ohif-seg": "fa-solid fa-shapes fa-button",
"ohif-micro": "fa-solid fa-microscope fa-button",
"meddream": "bi bi-columns-gap",
"volview": "bi bi-box",
"wsi": "fa-solid fa-microscope fa-button"
},
// Defines the order in which the viewer icons should appear in the interface
// OHIF viewers modes that are not listed here, won't appear in the interface.
"ViewersOrdering" : [
// "osimis-web-viewer", // now deprecated
"stone-webviewer",
"ohif",
// "ohif-micro", // currently disabled, this is still experimental in OHIF
"meddream",
"volview",
"wsi"
],
"MaxStudiesDisplayed": 100, // The maximum number of studies displayed in the study list.
// From v 1.7.0, this option is not used anymore in the local study list when using
// a DB backend that supports ExtendedFind (SQLite and PostgreSQL)
// but is still used in the DicomWeb queries.
"PageLoadSize": 50, // The number of items that are loaded when scrolling the study or instance list.
// Only applicable with a DB backend that supports ExtendedFind.
"MaxMyJobsHistorySize": 5, // The maximum number of jobs appearing under 'my jobs' in side bar (0 = unlimited)
"StudyListSearchMode": "search-as-you-type",// mode to trigger a search in the StudyList. Accepted values: 'search-as-you-type' or 'search-button'
"StudyListSearchAsYouTypeMinChars": 3, // minimum number of characters to enter in a text search field before it starts searching the DB
"StudyListSearchAsYouTypeDelay": 400, // Delay [ms] between the last key stroke and the trigger of the search
"StudyListContentIfNoSearch": "default-ordering", // Defines what to show if no search criteria has been entered.
// Allowed values:
// - "default-ordering" (new in 1.8.2) applies the "DefaultOrdering"
// - "most-recents" (was the default value up to 1.8.1), equivalent to "DefaultOrdering"="Metadata,LastUpdate,DESC".
// It is kept for compatibility reasons. Note that the "DefaultOrdering" config is ignored if you use "most-recents".
// - "empty" (From v 1.7.0 and when using a DB backend that supports ExtendedFind (SQLite and PostgreSQL),
// the "empty" option is not used anymore and is replaced by "default-ordering")
"DefaultOrdering": "Metadata,LastUpdate,DESC", // Defines the default ordering in the local study list. Each order is made of 3 values separated by commas.
// Orders are separated by semicolons. E.g:
// - DicomTag,StudyDate,DESC;Metadata,LastUpdate,DESC
// - DicomTag,StudyDate,DESC;DicomTag,PatientName,ASC
"AutoAddWildcardsToSearchFields": true, // Automatically adds wildcards to textual search fields in the local and remote study tables.
// When this is set to true (default), searching for 123 in the UI actually searches
// for *123* in DICOM and Rest API. Searching for "123" in the UI actually removes the
// wildcard and performs an exact-match.
// When this is set to false, the value used in the DICOM and Rest API filters exactly matches
// the input in the UI. Adding double-quotes is meaningless in this configuration and will
// very likely lead to no results.
// New in v 1.7.2
// Default settings are ok for "small" Orthanc Databases. For large databases, it is recommended to use these settings:
// "StudyListSearchMode": "search-button"
// "StudyListContentIfNoSearch": "empty"
"ShowOrthancName": true, // display the Orthanc Name in the side menu
// The list of tags to be displayed in the upload dialog result list
// (the first N defined tags in the list are displayed on the UI)
// Allowed values are: "StudyDate", "AccessionNumber", "PatientID",
// "PatientName", "PatientBirthDate", "StudyDescription"
"UploadReportTags" : [
"PatientName",
"StudyDescription",
"PatientID",
"AccessionNumber",
"StudyDate"
],
"UploadReportMaxTags" : 2, // See above, the max number of tags displayed in the upload report
// The ordered list of columns to display in the study list.
// Allowed values are:
// - Dicom Tags: "StudyDate", "AccessionNumber", "PatientID"
// "PatientName", "PatientBirthDate", "StudyDescription"
// - special columns:
// - "modalities": the list of modalities in the study
// - "seriesCount": the number of series in the study
// - "instancesCount": the number of instances in the study
// - "seriesAndInstancesCount": a combined value with the number of series/instances in the study
"StudyListColumns" : [
"PatientBirthDate",
"PatientName",
"PatientID",
"StudyDescription",
"StudyDate",
"modalities",
"AccessionNumber",
"seriesAndInstancesCount"
],
// The list of patient level tags that are displayed in the study details and in the modification dialog.
// Note that these tags must be defined in the Orthanc main dicom tags (https://orthanc.uclouvain.be/book/faq/main-dicom-tags.html)
"PatientMainTags" : [
"PatientID",
"PatientName",
"PatientBirthDate",
"PatientSex",
"OtherPatientIDs"
],
// The list of study level tags that are displayed in the study details and in the modification dialog.
// Note that these tags must be defined in the Orthanc main dicom tags (https://orthanc.uclouvain.be/book/faq/main-dicom-tags.html)
"StudyMainTags" : [
"StudyDate",
"StudyTime",
"StudyDescription",
"AccessionNumber",
"StudyID",
"StudyInstanceUID",
"RequestingPhysician",
"ReferringPhysicianName",
"InstitutionName"
],
// The list of series level tags that are displayed in the study details and in the modification dialog.
// Note that these tags must be defined in the Orthanc main dicom tags (https://orthanc.uclouvain.be/book/faq/main-dicom-tags.html)
"SeriesMainTags" : [
"SeriesDate",
"SeriesTime",
"SeriesDescription",
"SeriesNumber",
"BodyPartExamined",
"ProtocolName",
"SeriesInstanceUID"
],
// The modalities to display in the Modalities filter dropdown in the Study List
"ModalitiesFilter": [
"MR", "CT", "CR", "DOC", "XC", "DX"
],
// Defines the list of languages available in the language picker
// ex: "AvailableLanguages" : ["en", "fr"],
// ex: "AvailableLanguages" : [] -> this won't show the language picker at all and force usage of the DefaultLanguage
"AvailableLanguages": ["en", "de", "es", "fr", "it", "ka", "ro", "ru", "si", "uk", "zh"],
// Force the default language. If null (default), the language is the language from the visitor's browser.
// ex: "DefaultLanguage" : "en"
"DefaultLanguage" : null,
// Should DicomTags be translated (true) or shall we use the English symbolic name whatever the selected language (false)
// if true: "PatientID" is displayed as e.g "ID Patient" in french
// if false: "PatientID" is displayed as "PatientID" in all languages
"TranslateDicomTags" : true,
// Display format for dates in the study list based on these definitions: https://www.unicode.org/reports/tr35/tr35-dates.html#Date_Field_Symbol_Table
// example: "dd/MM/yyyy" for European Format,
// "yyyyMMdd" for DICOM format
"DateFormat": "dd/MM/yyyy",
// PatientName transformation for display. This requires a Regex for capturing and one expression for formatting.
// If PatientNameFormatting is not defined, no transformation occurs (this is the default behaviour).
// The Regex is a Javascript regex and is applied this way:
// FormattedName = PatientName.replace(new RegExp(PatientNameCapture), PatientNameFormatting);
// in example, to capture carets separated names and re-order them, one would use:
// FormattedName = PatientName.replace(new RegExp("([^\\^]+)\\^?([^\\^]+)?\\^?([^\\^]+)?\\^?([^\\^]+)?\\^?([^\\^]+)?"), '$1 $3 $2');
"PatientNameCapture" : "([^\\^]+)\\^?([^\\^]+)?\\^?([^\\^]+)?\\^?([^\\^]+)?\\^?([^\\^]+)?",
// "PatientNameFormatting": "$1 $3 $2"
// modifications dialog options
"Modifications": {
// Modes define options to the /modify route:
// "modify-keep-uids" is equivalent to KeepSource=True and Keep=["StudyInstanceUID", "SeriesInstanceUID", "SOPInstanceUID"]
// "modify-new-uids" is equivalent to KeepSource=False
// "duplicate" is equivalent to KeepSource=True
// "AllowedModes" and "DefaultMode" apply to studies modification
"AllowedModes": ["modify-new-uids", "modify-keep-uids", "duplicate"],
"DefaultMode": "modify-new-uids",
// same configurations for Series (introduced in 1.2.0)
"SeriesAllowedModes": ["modify-new-uids", "modify-keep-uids", "duplicate"],
"SeriesDefaultMode": "modify-new-uids"
},
// List of tags that are used to identify studies belonging to the same patient.
// This appears as "This patient has {count} studies in total" in the study details.
// ex: "ShowSamePatientStudiesFilter" : ["PatientID", "PatientBirthDate", "PatientSex"]
"ShowSamePatientStudiesFilter" : [
"PatientID"
],
// Defines the names of archives downloaded at study and series level.
// DicomTag values are replaced in the template string. "{UUID}.zip" is equivalent to the archive name.
"DownloadStudyFileNameTemplate": "{PatientName}-{StudyDescription}-{StudyDate}.zip",
"DownloadSeriesFileNameTemplate": "{PatientName}-{SeriesDescription}-{SeriesDate}.zip",
"DownloadInstanceFileNameTemplate": "{PatientName}-{StudyDate}-{SeriesDescription}-{InstanceNumber}.dcm",
// Defines a set of custom buttons for each level of resources in the local study list
"CustomButtons": {
"study": [],
"instance": [],
"series": []
// For each button, you must provide the following items.
// Example for a GET button:
// {
// "HttpMethod": "GET", // The HTTP method that will be triggered
// "Id": "custom-series-get", // A unique HTML identifier for the button
// "Tooltip": "Apply custom action to series", // The tooltip displayed when hovering the button
// "Target": "_blank", // The HTML target for the link
// "Icon": "bi bi-alarm", // The CSS class that defines the button icon (only from bootstrap icons)
// "Url": "http://localhost:3001/my-url?series={UUID}&patient={PatientID}" // The template url. DicomTag values are replaced in the template string.
// // {UUID} is the orthanc ID of the resource.
// },
// Example for a POST button:
// {
// "HttpMethod": "POST",
// "Id": "my-custom-post",
// "Tooltip": "Perform a custom 'post' operation",
// "Icon": "bi-broadcast",
// "Url": "../../my-python-plugin/{UUID}/process",
// "Payload": { // The payload template to include in the POST request
// "id": "{UUID}",
// "patient-name": "{PatientName}"
// },
// "Refresh": true // Refresh the resource in the UI after having received the answer from the POST request
// },
// Example for a PUT button:
// {
// "HttpMethod": "PUT",
// "Id": "add-label-1",
// "Tooltip": "Add the 'label-1' label",
// "Icon": "bi bi-1-circle",
// "Url": "../../studies/{UUID}/labels/label-1",
// "Payload": null,
// "Refresh": false
// },
}
},
// When using Keycloak for user management
"Keycloak" : {
"Enable": false,
"Url": "http://change-me:8080/",
"Realm": "change-me",
"ClientId": "change-me"
},
// This section is only relevant if the authorization plugin is enabled and user-profile based permissions are implemented.
"Tokens" : {
"InstantLinksValidity": 200, // the duration, in seconds an 'instant' token is valid (e.g. used to download a study, open a study in a viewer)
"ShareType": "stone-viewer-publication" // allowed values: "stone-viewer-publication", "osimis-viewer-publication", "meddream-viewer-publication", "volview-viewer-publication"
//"RequiredForLinks": false // Set it to false when using basic-auth together with the auth-plugin (https://discourse.orthanc-server.org/t/user-based-access-control-with-label-based-resource-access/5454)
},
// Very specific advanced options
"AdvancedOptions" : {
// if Keycloak is enabled, 'download-instant-link's are supposed to use tokens in the url in links.
// When "Tokens.RequiredForLinks" is set to false, they are replaced with standard links without tokens and without HTTP headers (since this is not possible to
// include auth headers in an link).
// So, if you need the 'download-instant-link's to use auth headers, you can set this option to true.
// OE2 will then display a "Save As" dialog (for security reasons, the browser can not initiate writing to local disk without a user interaction)
// and the HTTP response will stream to disk. Note that this might not work on all browsers.
"DownloadInstantLinksUseRestApiWithAuthHeaders": false
}
}
}