-
-
Notifications
You must be signed in to change notification settings - Fork 3.3k
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
fix(CustomViewportOverlay): pass accurate data to Custom Viewport Fun…
…ctions (#4224) Co-authored-by: Michael Andersen <[email protected]> Co-authored-by: Bill Wallace <[email protected]>
- Loading branch information
1 parent
d5d8214
commit aef00e9
Showing
8 changed files
with
513 additions
and
262 deletions.
There are no files selected for viewing
289 changes: 164 additions & 125 deletions
289
extensions/cornerstone/src/Viewport/Overlays/CustomizableViewportOverlay.tsx
Large diffs are not rendered by default.
Oops, something went wrong.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,276 @@ | ||
/** @type {AppTypes.Config} */ | ||
window.config = { | ||
routerBasename: '/', | ||
extensions: [], | ||
modes: ['@ohif/mode-test'], | ||
showStudyList: true, | ||
// below flag is for performance reasons, but it might not work for all servers | ||
maxNumberOfWebWorkers: 3, | ||
showWarningMessageForCrossOrigin: false, | ||
showCPUFallbackMessage: false, | ||
strictZSpacingForVolumeViewport: true, | ||
// filterQueryParam: false, | ||
|
||
// Add some customizations to the default e2e datasource | ||
customizationService: [ | ||
'@ohif/extension-default.customizationModule.datasources', | ||
'@ohif/extension-default.customizationModule.helloPage', | ||
|
||
{ | ||
id: '@ohif/cornerstoneOverlay', | ||
// Append recursively, rather than replacing | ||
merge: 'Append', | ||
topRightItems: { | ||
id: 'cornerstoneOverlayTopRight', | ||
items: [ | ||
{ | ||
id: 'PatientNameOverlay', | ||
// Note below that here we are using the customization prototype of | ||
// `ohif.overlayItem` which was registered to the customization module in | ||
// `ohif/extension-default` extension. | ||
customizationType: 'ohif.overlayItem', | ||
// the following props are passed to the `ohif.overlayItem` prototype | ||
// which is used to render the overlay item based on the label, color, | ||
// conditions, etc. | ||
attribute: 'PatientName', | ||
label: 'PN:', | ||
title: 'Patient Name', | ||
color: 'yellow', | ||
condition: ({ instance }) => instance?.PatientName, | ||
contentF: ({ instance, formatters: { formatPN } }) => | ||
formatPN(instance.PatientName) + | ||
(instance.PatientSex ? ' (' + instance.PatientSex + ')' : ''), | ||
}, | ||
], | ||
}, | ||
|
||
topLeftItems: { | ||
items: { | ||
// Note the -10000 means -10000 + length of existing list, which is | ||
// much before the start of hte list, so put the new value at the start. | ||
'-10000': | ||
{ | ||
id: 'Species', | ||
customizationType: 'ohif.overlayItem', | ||
label: 'Species:', | ||
color: 'red', | ||
background: 'green', | ||
condition: ({ instance }) => | ||
instance?.PatientSpeciesDescription, | ||
contentF: ({ instance }) => | ||
instance.PatientSpeciesDescription + | ||
'/' + | ||
instance.PatientBreedDescription, | ||
}, | ||
}, | ||
}, | ||
}, | ||
], | ||
|
||
defaultDataSourceName: 'e2e', | ||
investigationalUseDialog: { | ||
option: 'never', | ||
}, | ||
dataSources: [ | ||
{ | ||
namespace: '@ohif/extension-default.dataSourcesModule.dicomweb', | ||
sourceName: 'e2e', | ||
configuration: { | ||
friendlyName: 'StaticWado test data', | ||
// The most important field to set for static WADO | ||
staticWado: true, | ||
name: 'StaticWADO', | ||
wadoUriRoot: '/viewer-testdata', | ||
qidoRoot: '/viewer-testdata', | ||
wadoRoot: '/viewer-testdata', | ||
qidoSupportsIncludeField: false, | ||
imageRendering: 'wadors', | ||
thumbnailRendering: 'wadors', | ||
enableStudyLazyLoad: true, | ||
supportsFuzzyMatching: false, | ||
supportsWildcard: true, | ||
singlepart: 'video,thumbnail,pdf', | ||
omitQuotationForMultipartRequest: true, | ||
bulkDataURI: { | ||
enabled: true, | ||
relativeResolution: 'studies', | ||
}, | ||
}, | ||
}, | ||
{ | ||
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', | ||
}, | ||
}, | ||
}, | ||
{ | ||
namespace: '@ohif/extension-default.dataSourcesModule.dicomweb', | ||
sourceName: 'docker', | ||
configuration: { | ||
friendlyName: 'Static WADO Docker Data', | ||
name: 'DCM4CHEE', | ||
qidoRoot: 'http://localhost:25080/dicomweb', | ||
wadoRoot: 'http://localhost:25080/dicomweb', | ||
qidoSupportsIncludeField: false, | ||
supportsReject: true, | ||
supportsStow: true, | ||
imageRendering: 'wadors', | ||
thumbnailRendering: 'wadors', | ||
enableStudyLazyLoad: true, | ||
supportsFuzzyMatching: false, | ||
supportsWildcard: true, | ||
staticWado: true, | ||
singlepart: 'bulkdata,video,pdf', | ||
bulkDataURI: { | ||
enabled: true, | ||
relativeResolution: 'studies', | ||
}, | ||
}, | ||
}, | ||
{ | ||
namespace: '@ohif/extension-default.dataSourcesModule.dicomweb', | ||
sourceName: 'ohif', | ||
configuration: { | ||
friendlyName: 'AWS S3 Static wado server', | ||
name: 'aws', | ||
wadoUriRoot: 'https://d33do7qe4w26qo.cloudfront.net/dicomweb', | ||
qidoRoot: 'https://d33do7qe4w26qo.cloudfront.net/dicomweb', | ||
wadoRoot: 'https://d33do7qe4w26qo.cloudfront.net/dicomweb', | ||
qidoSupportsIncludeField: false, | ||
imageRendering: 'wadors', | ||
thumbnailRendering: 'wadors', | ||
enableStudyLazyLoad: true, | ||
supportsFuzzyMatching: false, | ||
supportsWildcard: true, | ||
staticWado: true, | ||
singlepart: 'video,pdf', | ||
bulkDataURI: { | ||
enabled: true, | ||
relativeResolution: 'studies', | ||
}, | ||
}, | ||
}, | ||
|
||
{ | ||
namespace: '@ohif/extension-default.dataSourcesModule.dicomweb', | ||
sourceName: 'ohif2', | ||
configuration: { | ||
friendlyName: 'AWS S3 Static wado secondary server', | ||
name: 'aws', | ||
wadoUriRoot: 'https://d28o5kq0jsoob5.cloudfront.net/dicomweb', | ||
qidoRoot: 'https://d28o5kq0jsoob5.cloudfront.net/dicomweb', | ||
wadoRoot: 'https://d28o5kq0jsoob5.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, | ||
}, | ||
}, | ||
{ | ||
namespace: '@ohif/extension-default.dataSourcesModule.dicomweb', | ||
sourceName: 'ohif3', | ||
configuration: { | ||
friendlyName: 'AWS S3 Static wado secondary server', | ||
name: 'aws', | ||
wadoUriRoot: 'https://d3t6nz73ql33tx.cloudfront.net/dicomweb', | ||
qidoRoot: 'https://d3t6nz73ql33tx.cloudfront.net/dicomweb', | ||
wadoRoot: 'https://d3t6nz73ql33tx.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, | ||
}, | ||
}, | ||
|
||
{ | ||
friendlyName: 'StaticWado default data', | ||
namespace: '@ohif/extension-default.dataSourcesModule.dicomweb', | ||
sourceName: 'dicomweb', | ||
configuration: { | ||
name: 'DCM4CHEE', | ||
wadoUriRoot: '/dicomweb', | ||
qidoRoot: '/dicomweb', | ||
wadoRoot: '/dicomweb', | ||
qidoSupportsIncludeField: false, | ||
supportsReject: false, | ||
imageRendering: 'wadors', | ||
thumbnailRendering: 'wadors', | ||
enableStudyLazyLoad: true, | ||
supportsFuzzyMatching: false, | ||
supportsWildcard: true, | ||
staticWado: true, | ||
bulkDataURI: { | ||
enabled: true, | ||
relativeResolution: 'studies', | ||
}, | ||
}, | ||
}, | ||
{ | ||
namespace: '@ohif/extension-default.dataSourcesModule.dicomjson', | ||
sourceName: 'dicomjson', | ||
configuration: { | ||
friendlyName: 'dicom json', | ||
name: 'json', | ||
}, | ||
}, | ||
{ | ||
namespace: '@ohif/extension-default.dataSourcesModule.dicomlocal', | ||
sourceName: 'dicomlocal', | ||
configuration: { | ||
friendlyName: 'dicom local', | ||
}, | ||
}, | ||
], | ||
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/'); | ||
}, | ||
hotkeys: [], | ||
}; |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Oops, something went wrong.