From 63f3e91fd958eea8258d10fbd70dc49ccfe5001a Mon Sep 17 00:00:00 2001 From: Igor Octaviano Date: Thu, 20 Nov 2025 11:28:18 -0300 Subject: [PATCH 1/4] Update config to address rt issues --- idc-assets/app-config-template.js | 4 + platform/app/public/config/default.js | 373 +++++++------------------- 2 files changed, 107 insertions(+), 270 deletions(-) diff --git a/idc-assets/app-config-template.js b/idc-assets/app-config-template.js index 7deb9a61ae7..d86a9dd9bab 100644 --- a/idc-assets/app-config-template.js +++ b/idc-assets/app-config-template.js @@ -89,6 +89,10 @@ window.config = { staticWado: true, singlepart: 'bulkdata,video', omitQuotationForMultipartRequest: true, + /** If true RT does not work */ + bulkDataURI: { + enabled: false, + }, }, }, ], diff --git a/platform/app/public/config/default.js b/platform/app/public/config/default.js index 219e92e12f8..046928b39c5 100644 --- a/platform/app/public/config/default.js +++ b/platform/app/public/config/default.js @@ -1,8 +1,5 @@ -/** @type {AppTypes.Config} */ - window.config = { - name: 'config/default.js', - routerBasename: null, + routerBasename: '/', whiteLabeling: { createLogoComponentFn: function (React) { return React.createElement( @@ -11,15 +8,18 @@ window.config = { target: '_self', rel: 'noopener noreferrer', className: 'text-purple-600 line-through', - href: '/', + href: 'https://portal.imaging.datacommons.cancer.gov/', }, React.createElement('img', { - src: '/assets/idc.svg', + src: '/v3/IDC-Logo-WHITE.svg', className: 'w-15 h-14 p-1', }) ); }, }, + investigationalUseDialog: { + option: 'never', + }, idcDownloadCommandsDialog: { description: 'Follow the instructions below to download the study or series:', instructions: [ @@ -40,7 +40,7 @@ window.config = { extensions: [], modes: [], customizationService: {}, - showStudyList: true, + showStudyList: false, disableConfirmationPrompts: true, disableEditing: true, // some windows systems have issues with more than 3 web workers @@ -49,10 +49,7 @@ window.config = { showWarningMessageForCrossOrigin: true, showCPUFallbackMessage: true, showLoadingIndicator: true, - experimentalStudyBrowserSort: false, strictZSpacingForVolumeViewport: true, - groupEnabledModesFirst: true, - allowMultiSelectExport: false, maxNumRequests: { interaction: 100, thumbnail: 75, @@ -60,69 +57,7 @@ window.config = { // above, the number of requests can be go a lot higher. prefetch: 25, }, - showErrorDetails: 'always', // 'always', 'dev', 'production' // filterQueryParam: false, - // Defines multi-monitor layouts - multimonitor: [ - { - id: 'split', - test: ({ multimonitor }) => multimonitor === 'split', - screens: [ - { - id: 'ohif0', - screen: null, - location: { - screen: 0, - width: 0.5, - height: 1, - left: 0, - top: 0, - }, - options: 'location=no,menubar=no,scrollbars=no,status=no,titlebar=no', - }, - { - id: 'ohif1', - screen: null, - location: { - width: 0.5, - height: 1, - left: 0.5, - top: 0, - }, - options: 'location=no,menubar=no,scrollbars=no,status=no,titlebar=no', - }, - ], - }, - - { - id: '2', - test: ({ multimonitor }) => multimonitor === '2', - screens: [ - { - id: 'ohif0', - screen: 0, - location: { - width: 1, - height: 1, - left: 0, - top: 0, - }, - options: 'fullscreen=yes,location=no,menubar=no,scrollbars=no,status=no,titlebar=no', - }, - { - id: 'ohif1', - screen: 1, - location: { - width: 1, - height: 1, - left: 0, - top: 0, - }, - options: 'fullscreen=yes,location=no,menubar=no,scrollbars=no,status=no,titlebar=no', - }, - ], - }, - ], defaultDataSourceName: 'idc-dicomweb', /* Dynamic config allows user to pass "configUrl" query string this allows to load config without recompiling application. The regex will ensure valid configuration source */ // dangerouslyUseDynamicConfig: { @@ -134,33 +69,19 @@ window.config = { // // regex: /(https:\/\/hospital.com(\/[0-9A-Za-z.]+)*)|(https:\/\/othersite.com(\/[0-9A-Za-z.]+)*)/ // regex: /.*/, // }, - oidc: [ - { - authority: 'https://accounts.google.com', - client_id: '370953977065-o32uf5cn5f4bovtogdu862mlnhbcv9hk.apps.googleusercontent.com', - redirect_uri: '/callback', - response_type: 'id_token token', - scope: - 'email profile openid https://www.googleapis.com/auth/cloudplatformprojects.readonly https://www.googleapis.com/auth/cloud-healthcare', - post_logout_redirect_uri: '/logout-redirect.html', - revoke_uri: 'https://accounts.google.com/o/oauth2/revoke?token=', - automaticSilentRenew: true, - revokeAccessTokenOnSignout: true, - }, - ], dataSources: [ { - friendlyName: 'dcmjs DICOMWeb Server', + friendlyName: 'IDC Data Source', namespace: '@ohif/extension-default.dataSourcesModule.dicomweb', sourceName: 'idc-dicomweb', configuration: { name: 'idc-dicomweb', wadoUriRoot: - 'https://testing-proxy.canceridc.dev/current/viewer-only-no-downloads-see-tinyurl-dot-com-slash-3j3d9jyp/dicomWeb', + 'https://proxy.imaging.datacommons.cancer.gov/current/viewer-only-no-downloads-see-tinyurl-dot-com-slash-3j3d9jyp/dicomWeb', qidoRoot: - 'https://testing-proxy.canceridc.dev/current/viewer-only-no-downloads-see-tinyurl-dot-com-slash-3j3d9jyp/dicomWeb', + 'https://proxy.imaging.datacommons.cancer.gov/current/viewer-only-no-downloads-see-tinyurl-dot-com-slash-3j3d9jyp/dicomWeb', wadoRoot: - 'https://testing-proxy.canceridc.dev/current/viewer-only-no-downloads-see-tinyurl-dot-com-slash-3j3d9jyp/dicomWeb', + 'https://proxy.imaging.datacommons.cancer.gov/current/viewer-only-no-downloads-see-tinyurl-dot-com-slash-3j3d9jyp/dicomWeb', qidoSupportsIncludeField: false, supportsReject: false, imageRendering: 'wadors', @@ -170,201 +91,113 @@ window.config = { supportsWildcard: false, staticWado: true, singlepart: 'bulkdata,video', - // whether the data source should use retrieveBulkData to grab metadata, - // and in case of relative path, what would it be relative to, options - // are in the series level or study level (some servers like series some study) + omitQuotationForMultipartRequest: true, bulkDataURI: { - enabled: true, - relativeResolution: 'studies', + enabled: false, }, - omitQuotationForMultipartRequest: true, }, }, + ], + httpErrorHandler: error => { + // This is 429 when rejected from the public idc sandbox too often. + console.warn(error.status); + if (error.status == 429) { + // Could use services manager here to bring up a dialog/modal if needed. + // console.warn('test, navigate to https://ohif.org/'); + window.location = 'https://portal.imaging.datacommons.cancer.gov/quota/index.html'; + } + }, + hotkeys: [ { - friendlyName: 'dcmjs DICOMWeb Server', - namespace: '@ohif/extension-default.dataSourcesModule.dicomweb', - sourceName: 'dicomweb', - configuration: { - friendlyName: 'AWS S3 Static wado server', - name: 'aws', - wadoUriRoot: 'https://d14fa38qiwhyfd.cloudfront.net/dicomweb', - qidoRoot: 'https://d14fa38qiwhyfd.cloudfront.net/dicomweb', - wadoRoot: 'https://d14fa38qiwhyfd.cloudfront.net/dicomweb', - qidoSupportsIncludeField: false, - imageRendering: 'wadors', - thumbnailRendering: 'wadors', - enableStudyLazyLoad: true, - supportsFuzzyMatching: true, - supportsWildcard: false, - staticWado: true, - singlepart: 'bulkdata,video', - // whether the data source should use retrieveBulkData to grab metadata, - // and in case of relative path, what would it be relative to, options - // are in the series level or study level (some servers like series some study) - bulkDataURI: { - enabled: true, - relativeResolution: 'studies', - transform: url => url.replace('/pixeldata.mp4', '/rendered'), - }, - omitQuotationForMultipartRequest: true, - }, + commandName: 'incrementActiveViewport', + label: 'Next Viewport', + keys: ['right'], }, - { - namespace: '@ohif/extension-default.dataSourcesModule.dicomweb', - sourceName: 'ohif2', - configuration: { - friendlyName: 'AWS S3 Static wado secondary server', - name: 'aws', - wadoUriRoot: 'https://dd14fa38qiwhyfd.cloudfront.net/dicomweb', - qidoRoot: 'https://dd14fa38qiwhyfd.cloudfront.net/dicomweb', - wadoRoot: 'https://dd14fa38qiwhyfd.cloudfront.net/dicomweb', - qidoSupportsIncludeField: false, - supportsReject: false, - imageRendering: 'wadors', - thumbnailRendering: 'wadors', - enableStudyLazyLoad: true, - supportsFuzzyMatching: false, - supportsWildcard: false, - staticWado: true, - singlepart: 'bulkdata,video', - // whether the data source should use retrieveBulkData to grab metadata, - // and in case of relative path, what would it be relative to, options - // are in the series level or study level (some servers like series some study) - bulkDataURI: { - enabled: true, - relativeResolution: 'studies', - }, - omitQuotationForMultipartRequest: true, - }, + commandName: 'decrementActiveViewport', + label: 'Previous Viewport', + keys: ['left'], }, + { commandName: 'rotateViewportCW', label: 'Rotate Right', keys: ['r'] }, + { commandName: 'rotateViewportCCW', label: 'Rotate Left', keys: ['l'] }, + { commandName: 'invertViewport', label: 'Invert', keys: ['i'] }, { - namespace: '@ohif/extension-default.dataSourcesModule.dicomweb', - sourceName: 'ohif', - configuration: { - friendlyName: 'AWS S3 Static wado secondary server', - name: 'aws', - wadoUriRoot: 'https://d14fa38qiwhyfd.cloudfront.net/dicomweb', - qidoRoot: 'https://d14fa38qiwhyfd.cloudfront.net/dicomweb', - wadoRoot: 'https://d14fa38qiwhyfd.cloudfront.net/dicomweb', - qidoSupportsIncludeField: false, - supportsReject: false, - imageRendering: 'wadors', - thumbnailRendering: 'wadors', - enableStudyLazyLoad: true, - supportsFuzzyMatching: false, - supportsWildcard: true, - staticWado: true, - singlepart: 'bulkdata,video', - // whether the data source should use retrieveBulkData to grab metadata, - // and in case of relative path, what would it be relative to, options - // are in the series level or study level (some servers like series some study) - bulkDataURI: { - enabled: true, - relativeResolution: 'studies', - }, - omitQuotationForMultipartRequest: true, - }, + commandName: 'flipViewportHorizontal', + label: 'Flip Horizontally', + keys: ['h'], }, - { - namespace: '@ohif/extension-default.dataSourcesModule.dicomweb', - sourceName: 'local5000', - configuration: { - friendlyName: 'Static WADO Local Data', - name: 'DCM4CHEE', - qidoRoot: 'http://localhost:5000/dicomweb', - wadoRoot: 'http://localhost:5000/dicomweb', - qidoSupportsIncludeField: false, - supportsReject: true, - supportsStow: true, - imageRendering: 'wadors', - thumbnailRendering: 'wadors', - enableStudyLazyLoad: true, - supportsFuzzyMatching: false, - supportsWildcard: true, - staticWado: true, - singlepart: 'video', - bulkDataURI: { - enabled: true, - relativeResolution: 'studies', - }, - }, + commandName: 'flipViewportVertical', + label: 'Flip Vertically', + keys: ['v'], }, + { commandName: 'scaleUpViewport', label: 'Zoom In', keys: ['+'] }, + { commandName: 'scaleDownViewport', label: 'Zoom Out', keys: ['-'] }, + { commandName: 'fitViewportToWindow', label: 'Zoom to Fit', keys: ['='] }, + { commandName: 'resetViewport', label: 'Reset', keys: ['space'] }, + { commandName: 'nextImage', label: 'Next Image', keys: ['down'] }, + { commandName: 'previousImage', label: 'Previous Image', keys: ['up'] }, + // { + // commandName: 'previousViewportDisplaySet', + // label: 'Previous Series', + // keys: ['pagedown'], + // }, + // { + // commandName: 'nextViewportDisplaySet', + // label: 'Next Series', + // keys: ['pageup'], + // }, { - namespace: '@ohif/extension-default.dataSourcesModule.dicomweb', - sourceName: 'orthanc', - configuration: { - friendlyName: 'local Orthanc DICOMWeb Server', - name: 'DCM4CHEE', - wadoUriRoot: 'http://localhost/pacs/dicom-web', - qidoRoot: 'http://localhost/pacs/dicom-web', - wadoRoot: 'http://localhost/pacs/dicom-web', - qidoSupportsIncludeField: true, - supportsReject: true, - dicomUploadEnabled: true, - imageRendering: 'wadors', - thumbnailRendering: 'wadors', - enableStudyLazyLoad: true, - supportsFuzzyMatching: true, - supportsWildcard: true, - omitQuotationForMultipartRequest: true, - bulkDataURI: { - enabled: true, - // This is an example config that can be used to fix the retrieve URL - // where it has the wrong prefix (eg a canned prefix). It is better to - // just use the correct prefix out of the box, but that is sometimes hard - // when URLs go through several systems. - // Example URLS are: - // "BulkDataURI" : "http://localhost/dicom-web/studies/1.2.276.0.7230010.3.1.2.2344313775.14992.1458058363.6979/series/1.2.276.0.7230010.3.1.3.1901948703.36080.1484835349.617/instances/1.2.276.0.7230010.3.1.4.1901948703.36080.1484835349.618/bulk/00420011", - // when running on http://localhost:3003 with no server running on localhost. This can be corrected to: - // /orthanc/dicom-web/studies/1.2.276.0.7230010.3.1.2.2344313775.14992.1458058363.6979/series/1.2.276.0.7230010.3.1.3.1901948703.36080.1484835349.617/instances/1.2.276.0.7230010.3.1.4.1901948703.36080.1484835349.618/bulk/00420011 - // which is a valid relative URL, and will result in using the http://localhost:3003/orthanc/.... path - // startsWith: 'http://localhost/', - // prefixWith: '/orthanc/', - }, - }, + commandName: 'setToolActive', + commandOptions: { toolName: 'Zoom' }, + label: 'Zoom', + keys: ['z'], }, - + // ~ Window level presets { - namespace: '@ohif/extension-default.dataSourcesModule.dicomwebproxy', - sourceName: 'dicomwebproxy', - configuration: { - friendlyName: 'dicomweb delegating proxy', - name: 'dicomwebproxy', - }, + commandName: 'windowLevelPreset1', + label: 'W/L Preset 1', + keys: ['1'], + }, + { + commandName: 'windowLevelPreset2', + label: 'W/L Preset 2', + keys: ['2'], + }, + { + commandName: 'windowLevelPreset3', + label: 'W/L Preset 3', + keys: ['3'], + }, + { + commandName: 'windowLevelPreset4', + label: 'W/L Preset 4', + keys: ['4'], + }, + { + commandName: 'windowLevelPreset5', + label: 'W/L Preset 5', + keys: ['5'], + }, + { + commandName: 'windowLevelPreset6', + label: 'W/L Preset 6', + keys: ['6'], + }, + { + commandName: 'windowLevelPreset7', + label: 'W/L Preset 7', + keys: ['7'], + }, + { + commandName: 'windowLevelPreset8', + label: 'W/L Preset 8', + keys: ['8'], + }, + { + commandName: 'windowLevelPreset9', + label: 'W/L Preset 9', + keys: ['9'], }, ], - httpErrorHandler: error => { - // This is 429 when rejected from the public idc sandbox too often. - console.warn(error.status); - - // Could use services manager here to bring up a dialog/modal if needed. - console.warn('test, navigate to https://ohif.org/'); - }, - // segmentation: { - // segmentLabel: { - // enabledByDefault: true, - // labelColor: [255, 255, 0, 1], // must be an array - // hoverTimeout: 1, - // background: 'rgba(100, 100, 100, 0.5)', // can be any valid css color - // }, - // }, - // whiteLabeling: { - // createLogoComponentFn: function (React) { - // return React.createElement( - // 'a', - // { - // target: '_self', - // rel: 'noopener noreferrer', - // className: 'text-purple-600 line-through', - // href: '_X___IDC__LOGO__LINK___Y_', - // }, - // React.createElement('img', { - // src: './Logo.svg', - // className: 'w-14 h-14', - // }) - // ); - // }, - // }, }; From d50425fda87904bed422be7291ab869ff3ca07ce Mon Sep 17 00:00:00 2001 From: Igor Octaviano Date: Thu, 20 Nov 2025 11:29:40 -0300 Subject: [PATCH 2/4] Update config to address rt issues --- platform/app/public/config/default.js | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/platform/app/public/config/default.js b/platform/app/public/config/default.js index 046928b39c5..d0f74ce0a85 100644 --- a/platform/app/public/config/default.js +++ b/platform/app/public/config/default.js @@ -1,5 +1,5 @@ window.config = { - routerBasename: '/', + routerBasename: '/v3', whiteLabeling: { createLogoComponentFn: function (React) { return React.createElement( @@ -92,6 +92,7 @@ window.config = { staticWado: true, singlepart: 'bulkdata,video', omitQuotationForMultipartRequest: true, + /** If true RT does not work */ bulkDataURI: { enabled: false, }, From a493eadb3fa8207ae0c437f0f6d3b899a7e474a0 Mon Sep 17 00:00:00 2001 From: Igor Octaviano Date: Thu, 20 Nov 2025 11:30:37 -0300 Subject: [PATCH 3/4] Revert config --- platform/app/public/config/default.js | 374 +++++++++++++++++++------- 1 file changed, 270 insertions(+), 104 deletions(-) diff --git a/platform/app/public/config/default.js b/platform/app/public/config/default.js index d0f74ce0a85..219e92e12f8 100644 --- a/platform/app/public/config/default.js +++ b/platform/app/public/config/default.js @@ -1,5 +1,8 @@ +/** @type {AppTypes.Config} */ + window.config = { - routerBasename: '/v3', + name: 'config/default.js', + routerBasename: null, whiteLabeling: { createLogoComponentFn: function (React) { return React.createElement( @@ -8,18 +11,15 @@ window.config = { target: '_self', rel: 'noopener noreferrer', className: 'text-purple-600 line-through', - href: 'https://portal.imaging.datacommons.cancer.gov/', + href: '/', }, React.createElement('img', { - src: '/v3/IDC-Logo-WHITE.svg', + src: '/assets/idc.svg', className: 'w-15 h-14 p-1', }) ); }, }, - investigationalUseDialog: { - option: 'never', - }, idcDownloadCommandsDialog: { description: 'Follow the instructions below to download the study or series:', instructions: [ @@ -40,7 +40,7 @@ window.config = { extensions: [], modes: [], customizationService: {}, - showStudyList: false, + showStudyList: true, disableConfirmationPrompts: true, disableEditing: true, // some windows systems have issues with more than 3 web workers @@ -49,7 +49,10 @@ window.config = { showWarningMessageForCrossOrigin: true, showCPUFallbackMessage: true, showLoadingIndicator: true, + experimentalStudyBrowserSort: false, strictZSpacingForVolumeViewport: true, + groupEnabledModesFirst: true, + allowMultiSelectExport: false, maxNumRequests: { interaction: 100, thumbnail: 75, @@ -57,7 +60,69 @@ window.config = { // above, the number of requests can be go a lot higher. prefetch: 25, }, + showErrorDetails: 'always', // 'always', 'dev', 'production' // filterQueryParam: false, + // Defines multi-monitor layouts + multimonitor: [ + { + id: 'split', + test: ({ multimonitor }) => multimonitor === 'split', + screens: [ + { + id: 'ohif0', + screen: null, + location: { + screen: 0, + width: 0.5, + height: 1, + left: 0, + top: 0, + }, + options: 'location=no,menubar=no,scrollbars=no,status=no,titlebar=no', + }, + { + id: 'ohif1', + screen: null, + location: { + width: 0.5, + height: 1, + left: 0.5, + top: 0, + }, + options: 'location=no,menubar=no,scrollbars=no,status=no,titlebar=no', + }, + ], + }, + + { + id: '2', + test: ({ multimonitor }) => multimonitor === '2', + screens: [ + { + id: 'ohif0', + screen: 0, + location: { + width: 1, + height: 1, + left: 0, + top: 0, + }, + options: 'fullscreen=yes,location=no,menubar=no,scrollbars=no,status=no,titlebar=no', + }, + { + id: 'ohif1', + screen: 1, + location: { + width: 1, + height: 1, + left: 0, + top: 0, + }, + options: 'fullscreen=yes,location=no,menubar=no,scrollbars=no,status=no,titlebar=no', + }, + ], + }, + ], defaultDataSourceName: 'idc-dicomweb', /* Dynamic config allows user to pass "configUrl" query string this allows to load config without recompiling application. The regex will ensure valid configuration source */ // dangerouslyUseDynamicConfig: { @@ -69,19 +134,33 @@ window.config = { // // regex: /(https:\/\/hospital.com(\/[0-9A-Za-z.]+)*)|(https:\/\/othersite.com(\/[0-9A-Za-z.]+)*)/ // regex: /.*/, // }, + oidc: [ + { + authority: 'https://accounts.google.com', + client_id: '370953977065-o32uf5cn5f4bovtogdu862mlnhbcv9hk.apps.googleusercontent.com', + redirect_uri: '/callback', + response_type: 'id_token token', + scope: + 'email profile openid https://www.googleapis.com/auth/cloudplatformprojects.readonly https://www.googleapis.com/auth/cloud-healthcare', + post_logout_redirect_uri: '/logout-redirect.html', + revoke_uri: 'https://accounts.google.com/o/oauth2/revoke?token=', + automaticSilentRenew: true, + revokeAccessTokenOnSignout: true, + }, + ], dataSources: [ { - friendlyName: 'IDC Data Source', + friendlyName: 'dcmjs DICOMWeb Server', namespace: '@ohif/extension-default.dataSourcesModule.dicomweb', sourceName: 'idc-dicomweb', configuration: { name: 'idc-dicomweb', wadoUriRoot: - 'https://proxy.imaging.datacommons.cancer.gov/current/viewer-only-no-downloads-see-tinyurl-dot-com-slash-3j3d9jyp/dicomWeb', + 'https://testing-proxy.canceridc.dev/current/viewer-only-no-downloads-see-tinyurl-dot-com-slash-3j3d9jyp/dicomWeb', qidoRoot: - 'https://proxy.imaging.datacommons.cancer.gov/current/viewer-only-no-downloads-see-tinyurl-dot-com-slash-3j3d9jyp/dicomWeb', + 'https://testing-proxy.canceridc.dev/current/viewer-only-no-downloads-see-tinyurl-dot-com-slash-3j3d9jyp/dicomWeb', wadoRoot: - 'https://proxy.imaging.datacommons.cancer.gov/current/viewer-only-no-downloads-see-tinyurl-dot-com-slash-3j3d9jyp/dicomWeb', + 'https://testing-proxy.canceridc.dev/current/viewer-only-no-downloads-see-tinyurl-dot-com-slash-3j3d9jyp/dicomWeb', qidoSupportsIncludeField: false, supportsReject: false, imageRendering: 'wadors', @@ -91,114 +170,201 @@ window.config = { supportsWildcard: false, staticWado: true, singlepart: 'bulkdata,video', - omitQuotationForMultipartRequest: true, - /** If true RT does not work */ + // whether the data source should use retrieveBulkData to grab metadata, + // and in case of relative path, what would it be relative to, options + // are in the series level or study level (some servers like series some study) bulkDataURI: { - enabled: false, + enabled: true, + relativeResolution: 'studies', }, + omitQuotationForMultipartRequest: true, }, }, - ], - httpErrorHandler: error => { - // This is 429 when rejected from the public idc sandbox too often. - console.warn(error.status); - if (error.status == 429) { - // Could use services manager here to bring up a dialog/modal if needed. - // console.warn('test, navigate to https://ohif.org/'); - window.location = 'https://portal.imaging.datacommons.cancer.gov/quota/index.html'; - } - }, - hotkeys: [ - { - commandName: 'incrementActiveViewport', - label: 'Next Viewport', - keys: ['right'], - }, - { - commandName: 'decrementActiveViewport', - label: 'Previous Viewport', - keys: ['left'], - }, - { commandName: 'rotateViewportCW', label: 'Rotate Right', keys: ['r'] }, - { commandName: 'rotateViewportCCW', label: 'Rotate Left', keys: ['l'] }, - { commandName: 'invertViewport', label: 'Invert', keys: ['i'] }, { - commandName: 'flipViewportHorizontal', - label: 'Flip Horizontally', - keys: ['h'], - }, - { - commandName: 'flipViewportVertical', - label: 'Flip Vertically', - keys: ['v'], - }, - { commandName: 'scaleUpViewport', label: 'Zoom In', keys: ['+'] }, - { commandName: 'scaleDownViewport', label: 'Zoom Out', keys: ['-'] }, - { commandName: 'fitViewportToWindow', label: 'Zoom to Fit', keys: ['='] }, - { commandName: 'resetViewport', label: 'Reset', keys: ['space'] }, - { commandName: 'nextImage', label: 'Next Image', keys: ['down'] }, - { commandName: 'previousImage', label: 'Previous Image', keys: ['up'] }, - // { - // commandName: 'previousViewportDisplaySet', - // label: 'Previous Series', - // keys: ['pagedown'], - // }, - // { - // commandName: 'nextViewportDisplaySet', - // label: 'Next Series', - // keys: ['pageup'], - // }, - { - commandName: 'setToolActive', - commandOptions: { toolName: 'Zoom' }, - label: 'Zoom', - keys: ['z'], - }, - // ~ Window level presets - { - commandName: 'windowLevelPreset1', - label: 'W/L Preset 1', - keys: ['1'], - }, - { - commandName: 'windowLevelPreset2', - label: 'W/L Preset 2', - keys: ['2'], - }, - { - commandName: 'windowLevelPreset3', - label: 'W/L Preset 3', - keys: ['3'], - }, - { - commandName: 'windowLevelPreset4', - label: 'W/L Preset 4', - keys: ['4'], + friendlyName: 'dcmjs DICOMWeb Server', + namespace: '@ohif/extension-default.dataSourcesModule.dicomweb', + sourceName: 'dicomweb', + configuration: { + friendlyName: 'AWS S3 Static wado server', + name: 'aws', + wadoUriRoot: 'https://d14fa38qiwhyfd.cloudfront.net/dicomweb', + qidoRoot: 'https://d14fa38qiwhyfd.cloudfront.net/dicomweb', + wadoRoot: 'https://d14fa38qiwhyfd.cloudfront.net/dicomweb', + qidoSupportsIncludeField: false, + imageRendering: 'wadors', + thumbnailRendering: 'wadors', + enableStudyLazyLoad: true, + supportsFuzzyMatching: true, + supportsWildcard: false, + staticWado: true, + singlepart: 'bulkdata,video', + // whether the data source should use retrieveBulkData to grab metadata, + // and in case of relative path, what would it be relative to, options + // are in the series level or study level (some servers like series some study) + bulkDataURI: { + enabled: true, + relativeResolution: 'studies', + transform: url => url.replace('/pixeldata.mp4', '/rendered'), + }, + omitQuotationForMultipartRequest: true, + }, }, + { - commandName: 'windowLevelPreset5', - label: 'W/L Preset 5', - keys: ['5'], + namespace: '@ohif/extension-default.dataSourcesModule.dicomweb', + sourceName: 'ohif2', + configuration: { + friendlyName: 'AWS S3 Static wado secondary server', + name: 'aws', + wadoUriRoot: 'https://dd14fa38qiwhyfd.cloudfront.net/dicomweb', + qidoRoot: 'https://dd14fa38qiwhyfd.cloudfront.net/dicomweb', + wadoRoot: 'https://dd14fa38qiwhyfd.cloudfront.net/dicomweb', + qidoSupportsIncludeField: false, + supportsReject: false, + imageRendering: 'wadors', + thumbnailRendering: 'wadors', + enableStudyLazyLoad: true, + supportsFuzzyMatching: false, + supportsWildcard: false, + staticWado: true, + singlepart: 'bulkdata,video', + // whether the data source should use retrieveBulkData to grab metadata, + // and in case of relative path, what would it be relative to, options + // are in the series level or study level (some servers like series some study) + bulkDataURI: { + enabled: true, + relativeResolution: 'studies', + }, + omitQuotationForMultipartRequest: true, + }, }, { - commandName: 'windowLevelPreset6', - label: 'W/L Preset 6', - keys: ['6'], + namespace: '@ohif/extension-default.dataSourcesModule.dicomweb', + sourceName: 'ohif', + configuration: { + friendlyName: 'AWS S3 Static wado secondary server', + name: 'aws', + wadoUriRoot: 'https://d14fa38qiwhyfd.cloudfront.net/dicomweb', + qidoRoot: 'https://d14fa38qiwhyfd.cloudfront.net/dicomweb', + wadoRoot: 'https://d14fa38qiwhyfd.cloudfront.net/dicomweb', + qidoSupportsIncludeField: false, + supportsReject: false, + imageRendering: 'wadors', + thumbnailRendering: 'wadors', + enableStudyLazyLoad: true, + supportsFuzzyMatching: false, + supportsWildcard: true, + staticWado: true, + singlepart: 'bulkdata,video', + // whether the data source should use retrieveBulkData to grab metadata, + // and in case of relative path, what would it be relative to, options + // are in the series level or study level (some servers like series some study) + bulkDataURI: { + enabled: true, + relativeResolution: 'studies', + }, + omitQuotationForMultipartRequest: true, + }, }, + { - commandName: 'windowLevelPreset7', - label: 'W/L Preset 7', - keys: ['7'], + namespace: '@ohif/extension-default.dataSourcesModule.dicomweb', + sourceName: 'local5000', + configuration: { + friendlyName: 'Static WADO Local Data', + name: 'DCM4CHEE', + qidoRoot: 'http://localhost:5000/dicomweb', + wadoRoot: 'http://localhost:5000/dicomweb', + qidoSupportsIncludeField: false, + supportsReject: true, + supportsStow: true, + imageRendering: 'wadors', + thumbnailRendering: 'wadors', + enableStudyLazyLoad: true, + supportsFuzzyMatching: false, + supportsWildcard: true, + staticWado: true, + singlepart: 'video', + bulkDataURI: { + enabled: true, + relativeResolution: 'studies', + }, + }, }, { - commandName: 'windowLevelPreset8', - label: 'W/L Preset 8', - keys: ['8'], + namespace: '@ohif/extension-default.dataSourcesModule.dicomweb', + sourceName: 'orthanc', + configuration: { + friendlyName: 'local Orthanc DICOMWeb Server', + name: 'DCM4CHEE', + wadoUriRoot: 'http://localhost/pacs/dicom-web', + qidoRoot: 'http://localhost/pacs/dicom-web', + wadoRoot: 'http://localhost/pacs/dicom-web', + qidoSupportsIncludeField: true, + supportsReject: true, + dicomUploadEnabled: true, + imageRendering: 'wadors', + thumbnailRendering: 'wadors', + enableStudyLazyLoad: true, + supportsFuzzyMatching: true, + supportsWildcard: true, + omitQuotationForMultipartRequest: true, + bulkDataURI: { + enabled: true, + // This is an example config that can be used to fix the retrieve URL + // where it has the wrong prefix (eg a canned prefix). It is better to + // just use the correct prefix out of the box, but that is sometimes hard + // when URLs go through several systems. + // Example URLS are: + // "BulkDataURI" : "http://localhost/dicom-web/studies/1.2.276.0.7230010.3.1.2.2344313775.14992.1458058363.6979/series/1.2.276.0.7230010.3.1.3.1901948703.36080.1484835349.617/instances/1.2.276.0.7230010.3.1.4.1901948703.36080.1484835349.618/bulk/00420011", + // when running on http://localhost:3003 with no server running on localhost. This can be corrected to: + // /orthanc/dicom-web/studies/1.2.276.0.7230010.3.1.2.2344313775.14992.1458058363.6979/series/1.2.276.0.7230010.3.1.3.1901948703.36080.1484835349.617/instances/1.2.276.0.7230010.3.1.4.1901948703.36080.1484835349.618/bulk/00420011 + // which is a valid relative URL, and will result in using the http://localhost:3003/orthanc/.... path + // startsWith: 'http://localhost/', + // prefixWith: '/orthanc/', + }, + }, }, + { - commandName: 'windowLevelPreset9', - label: 'W/L Preset 9', - keys: ['9'], + namespace: '@ohif/extension-default.dataSourcesModule.dicomwebproxy', + sourceName: 'dicomwebproxy', + configuration: { + friendlyName: 'dicomweb delegating proxy', + name: 'dicomwebproxy', + }, }, ], + httpErrorHandler: error => { + // This is 429 when rejected from the public idc sandbox too often. + console.warn(error.status); + + // Could use services manager here to bring up a dialog/modal if needed. + console.warn('test, navigate to https://ohif.org/'); + }, + // segmentation: { + // segmentLabel: { + // enabledByDefault: true, + // labelColor: [255, 255, 0, 1], // must be an array + // hoverTimeout: 1, + // background: 'rgba(100, 100, 100, 0.5)', // can be any valid css color + // }, + // }, + // whiteLabeling: { + // createLogoComponentFn: function (React) { + // return React.createElement( + // 'a', + // { + // target: '_self', + // rel: 'noopener noreferrer', + // className: 'text-purple-600 line-through', + // href: '_X___IDC__LOGO__LINK___Y_', + // }, + // React.createElement('img', { + // src: './Logo.svg', + // className: 'w-14 h-14', + // }) + // ); + // }, + // }, }; From 3fb86dd66c06afdbe8f32c5171db0a2bc4cd7dcf Mon Sep 17 00:00:00 2001 From: Igor Octaviano Date: Thu, 20 Nov 2025 11:30:54 -0300 Subject: [PATCH 4/4] Revert config --- platform/app/public/config/default.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/platform/app/public/config/default.js b/platform/app/public/config/default.js index 219e92e12f8..3c906b2ce10 100644 --- a/platform/app/public/config/default.js +++ b/platform/app/public/config/default.js @@ -174,7 +174,7 @@ window.config = { // and in case of relative path, what would it be relative to, options // are in the series level or study level (some servers like series some study) bulkDataURI: { - enabled: true, + enabled: false, relativeResolution: 'studies', }, omitQuotationForMultipartRequest: true,