{ "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 } } }