Hi,
Thanks for the advice and apology for the late reply.
Below are the requested details:
- Viewer browser console log:
[HMR] Waiting for update signal from WDS…
index.js:551 [webpack-dev-server] Hot Module Replacement enabled.
index.js:551 [webpack-dev-server] Live Reloading enabled.
init.js:23 CornerstoneRender: Using detect-gpu to get the GPU benchmark: {device: undefined, fps: 42, gpu: ‘intel mesa dri intel uhd graphics 630’, isMobile: false, tier: 2, …}
init.js:29 CornerstoneRender: using GPU rendering
MeasurementService.js:233 New ‘Cornerstone3DTools@0.1’ source added.
MeasurementService.js:303 New measurement mapping added to source ‘Cornerstone3DTools@0.1’.
MeasurementService.js:303 New measurement mapping added to source ‘Cornerstone3DTools@0.1’.
MeasurementService.js:303 New measurement mapping added to source ‘Cornerstone3DTools@0.1’.
MeasurementService.js:303 New measurement mapping added to source ‘Cornerstone3DTools@0.1’.
MeasurementService.js:303 New measurement mapping added to source ‘Cornerstone3DTools@0.1’.
dicomweb-client.es.js:833 search for studies
dicomweb-client.es.js:833 search for studies
dicomweb-client.es.js:873 search series of study 1.2.156.112605.189250943206629.230120145717.2.11372.15167
DragAndDropProvider.tsx:25 using… touch backend? false
HotkeysManager.js:198 [hotkeys] Binding setToolActive with {“toolName”:“Zoom”} options to z
HotkeysManager.js:198 [hotkeys] Binding scaleUpViewport with no options to +
HotkeysManager.js:198 [hotkeys] Binding scaleDownViewport with no options to -
HotkeysManager.js:198 [hotkeys] Binding fitViewportToWindow with no options to =
HotkeysManager.js:198 [hotkeys] Binding rotateViewportCW with no options to r
HotkeysManager.js:198 [hotkeys] Binding rotateViewportCCW with no options to l
HotkeysManager.js:198 [hotkeys] Binding flipViewportHorizontal with no options to h
HotkeysManager.js:198 [hotkeys] Binding flipViewportVertical with no options to v
HotkeysManager.js:198 [hotkeys] Binding toggleCine with no options to c
HotkeysManager.js:198 [hotkeys] Binding invertViewport with no options to i
HotkeysManager.js:198 [hotkeys] Binding incrementActiveViewport with no options to right
HotkeysManager.js:198 [hotkeys] Binding decrementActiveViewport with no options to left
HotkeysManager.js:198 [hotkeys] Binding nextImage with no options to down
HotkeysManager.js:198 [hotkeys] Binding previousImage with no options to up
HotkeysManager.js:198 [hotkeys] Binding firstImage with no options to home
HotkeysManager.js:198 [hotkeys] Binding lastImage with no options to end
HotkeysManager.js:198 [hotkeys] Binding resetViewport with no options to space
HotkeysManager.js:198 [hotkeys] Binding cancelMeasurement with no options to esc
HotkeysManager.js:198 [hotkeys] Binding setWindowLevel with {“description”:“Soft tissue”,“window”:“400”,“level”:“40”} options to 1
HotkeysManager.js:198 [hotkeys] Binding setWindowLevel with {“description”:“Lung”,“window”:“1500”,“level”:“-600”} options to 2
HotkeysManager.js:198 [hotkeys] Binding setWindowLevel with {“description”:“Liver”,“window”:“150”,“level”:“90”} options to 3
HotkeysManager.js:198 [hotkeys] Binding setWindowLevel with {“description”:“Bone”,“window”:“2500”,“level”:“480”} options to 4
HotkeysManager.js:198 [hotkeys] Binding setWindowLevel with {“description”:“Brain”,“window”:“80”,“level”:“40”} options to 5
HotkeysManager.js:198 [hotkeys] Binding setWindowLevel with {“description”:“Trest”,“window”:“1”,“level”:“1”} options to 6
HotkeysManager.js:198 [hotkeys] Binding setWindowLevel with {“description”:“Empty1”,“window”:“Empty1”,“level”:“Empty1”} options to 7
HotkeysManager.js:198 [hotkeys] Binding setWindowLevel with {“description”:“Empty2”,“window”:“Empty2”,“level”:“Empty2”} options to 8
HotkeysManager.js:198 [hotkeys] Binding setWindowLevel with {“description”:“Empty3”,“window”:“Empty3”,“level”:“Empty3”} options to 9
DragAndDropProvider.tsx:25 using… touch backend? false
DragAndDropProvider.tsx:25 using… touch backend? false
dicomweb-client.es.js:833 search for studies
dicomweb-client.es.js:873 search series of study 1.2.156.112605.189250943206629.230120145717.2.11372.15167
dicomweb-client.es.js:833 search for studies
dicomweb-client.es.js:903 retrieve metadata of series 1.2.156.112605.189250943206629.230120150126.3.7288.21612
dicomweb-client.es.js:903 retrieve metadata of series 1.2.156.112605.189250943206629.230120150126.3.7288.41612
dicomweb-client.es.js:903 retrieve metadata of series 1.2.156.112605.189250943206629.230120150126.3.7288.51612
dicomweb-client.es.js:903 retrieve metadata of series 1.2.156.112605.189250943206629.230120150126.3.7288.61612
dicomweb-client.es.js:903 retrieve metadata of series 1.2.156.112605.189250943206629.230120150126.3.7288.71612
dicomweb-client.es.js:903 retrieve metadata of series 1.2.156.112605.189250943206629.230120150132.3.7288.48516
dicomweb-client.es.js:903 retrieve metadata of series 1.2.156.112605.189250943206629.230120150132.3.7288.58516
dicomweb-client.es.js:903 retrieve metadata of series 1.2.156.112605.189250943206629.230120150132.3.7288.68516
dicomweb-client.es.js:903 retrieve metadata of series 1.2.156.112605.189250943206629.230120150132.3.7288.78516
dicomweb-client.es.js:903 retrieve metadata of series 1.2.156.112605.189250943206629.230120150337.3.7288.23558
dicomweb-client.es.js:903 retrieve metadata of series 1.2.156.112605.189250943206629.230120170707.3.964.136622
dicomweb-client.es.js:903 retrieve metadata of series 1.2.156.112605.189250943206629.230120170812.3.964.137662
dicomweb-client.es.js:903 retrieve metadata of series 1.2.156.112605.189250943206629.230120170910.3.964.105542
dicomweb-client.es.js:903 retrieve metadata of series 1.2.156.112605.189250943206629.230120170938.3.964.135922
dicomweb-client.es.js:903 retrieve metadata of series 1.2.156.112605.189250943206629.230120171140.3.964.194172
dicomweb-client.es.js:903 retrieve metadata of series 1.2.156.112605.189250943206629.230120171325.3.964.109502
dicomweb-client.es.js:903 retrieve metadata of series 1.2.156.112605.189250943206629.230120171327.3.964.189472
=================================================
2. Terminal console log:
yarn run v1.22.18
$ lerna run dev:viewer --stream
lerna notice cli v3.22.1
lerna info versioning independent
lerna info Executing command in 1 package: “yarn run dev:viewer”
@ohif/viewer: $ yarn run dev
@ohif/viewer: $ cross-env NODE_ENV=development webpack serve --config .webpack/webpack.pwa.js
@ohif/viewer: copy plugins
@ohif/viewer: Failed to load ./.env.
@ohif/viewer: Browserslist: caniuse-lite is outdated. Please run:
@ohif/viewer: npx browserslist@latest --update-db
@ohif/viewer: Why you should do it regularly:
@ohif/viewer: [webpack-dev-server] “hot: true” automatically applies HMR plugin, you don’t have to add it manually to your webpack configuration.
@ohif/viewer: [webpack-dev-server] [HPM] Proxy created: /dicomweb →
@ohif/viewer: [webpack-dev-server] Project is running at:
@ohif/viewer: [webpack-dev-server] Loopback:
@ohif/viewer: [webpack-dev-server] On Your Network (IPv4):
@ohif/viewer: [webpack-dev-server] Content not from webpack is served from ‘…/…/testdata’ directory
@ohif/viewer: [webpack-dev-server] 404s will fallback to ‘/index.html’
@ohif/viewer: [webpack-dev-middleware] wait until bundle finished: /
@ohif/viewer: assets by path assets/ 318 KiB 48 assets
@ohif/viewer: assets by path *.js 38.8 MiB 19 assets
@ohif/viewer: assets by path *.map 1.23 MiB 4 assets
@ohif/viewer: assets by path *.wasm 471 KiB 3 assets
@ohif/viewer: assets by path *.svg 32.3 KiB
@ohif/viewer: asset ohif-logo.svg 16.2 KiB [emitted] [from: …/public/ohif-logo.svg] [copied]
@ohif/viewer: asset ohif-logo-light.svg 16.2 KiB [emitted] [from: …/public/ohif-logo-light.svg] [copied]
@ohif/viewer: assets by path *.html 6.94 KiB
@ohif/viewer: asset index.html 6.37 KiB [emitted]
@ohif/viewer: asset silent-refresh.html 579 bytes [emitted] [from: …/public/silent-refresh.html] [copied]
@ohif/viewer: asset manifest.json 1.28 KiB [emitted] [from: …/public/manifest.json] [copied]
@ohif/viewer: asset _headers 258 bytes [emitted] [from: …/public/_headers] [copied]
@ohif/viewer: asset _redirects 149 bytes [emitted] [from: …/public/_redirects] [copied]
@ohif/viewer: LOG from InjectManifest
@ohif/viewer: The service worker at sw.js will precache
@ohif/viewer: 79 URLs, totaling 3.37 MB.
@ohif/viewer: WARNING in /app.js is 39.4 MB, and won’t be precached. Configure maximumFileSizeToCacheInBytes to change this limit.
@ohif/viewer: webpack 5.72.1 compiled with 1 warning in 21030 ms (f9fc805bcf2901acbdd9)
@ohif/viewer: [webpack-dev-middleware] wait until bundle finished: /app-config.js
@ohif/viewer: [webpack-dev-middleware] wait until bundle finished: /init-service-worker.js
@ohif/viewer: assets by status 3.21 MiB [cached] 78 assets
@ohif/viewer: assets by status 37.6 MiB [emitted]
@ohif/viewer: assets by path *.js 37.6 MiB
@ohif/viewer: asset app.js 37.6 MiB [emitted] (name: app)
@ohif/viewer: asset sw.js 15.6 KiB [emitted]
@ohif/viewer: asset app.f9fc805bcf2901acbdd9.hot-update.js 854 bytes [emitted] [immutable] [hmr] (name: app)
@ohif/viewer: asset index.html 6.37 KiB [emitted]
@ohif/viewer: asset app.f9fc805bcf2901acbdd9.hot-update.json 27 bytes [emitted] [immutable] [hmr]
@ohif/viewer: Entrypoint app 37.6 MiB = app.js 37.6 MiB app.f9fc805bcf2901acbdd9.hot-update.js 854 bytes
@ohif/viewer: LOG from InjectManifest
@ohif/viewer: The service worker at sw.js will precache
@ohif/viewer: 81 URLs, totaling 3.38 MB.
@ohif/viewer: WARNING in InjectManifest has been called multiple times, perhaps due to running webpack in --watch mode. The precache manifest generated after the first call may be inaccurate! Please see Precache manifest missing entries when recompiled via webpack --watch · Issue #1790 · GoogleChrome/workbox · GitHub for more information.
@ohif/viewer: WARNING in /app.js is 39.4 MB, and won’t be precached. Configure maximumFileSizeToCacheInBytes to change this limit.
@ohif/viewer: webpack 5.72.1 compiled with 2 warnings in 2744 ms (5b3e318d8222a6c0cfd4)
@ohif/viewer: assets by status 40.8 MiB [cached] 79 assets
@ohif/viewer: assets by path . 21.9 KiB
@ohif/viewer: asset sw.js 15.5 KiB [emitted]
@ohif/viewer: asset index.html 6.37 KiB [emitted]
@ohif/viewer: LOG from InjectManifest
@ohif/viewer: The service worker at sw.js will precache
@ohif/viewer: 79 URLs, totaling 3.37 MB.
@ohif/viewer: WARNING in InjectManifest has been called multiple times, perhaps due to running webpack in --watch mode. The precache manifest generated after the first call may be inaccurate! Please see Precache manifest missing entries when recompiled via webpack --watch · Issue #1790 · GoogleChrome/workbox · GitHub for more information.
@ohif/viewer: WARNING in /app.js is 39.4 MB, and won’t be precached. Configure maximumFileSizeToCacheInBytes to change this limit.
@ohif/viewer: webpack 5.72.1 compiled with 2 warnings in 458 ms (5b3e318d8222a6c0cfd4)
=================================================
3. Viewer config
window.config = {
routerBasename: ‘/’,
// whiteLabelling: {},
extensions: ,
modes: ,
customizationService: {
// helloPage: ‘@ohif/extension-default.customizationModule.helloPage’,
},
showStudyList: true,
maxNumberOfWebWorkers: 4,
// below flag is for performance reasons, but it might not work for all servers
omitQuotationForMultipartRequest: true,
showLoadingIndicator: true,
maxNumRequests: {
interaction: 100,
thumbnail: 75,
prefetch: 10,
},
// filterQueryParam: false,
dataSources: [
{
friendlyName: ‘dcmjs DICOMWeb Server’,
namespace: ‘@ohif/extension-default.dataSourcesModule.dicomweb’,
sourceName: ‘dicomweb’,
configuration: {
name: ‘aws’,
// new server
wadoUriRoot: ‘/dicom-web/wado’,
qidoRoot: ‘/dicom-web’,
wadoRoot: ‘/dicom-web’,
qidoSupportsIncludeField: false,
supportsReject: false,
imageRendering: ‘wadors’,
thumbnailRendering: ‘wadors’,
enableStudyLazyLoad: true,
supportsFuzzyMatching: false,
supportsWildcard: true,
staticWado: true,
singlepart: ‘bulkdata,video,pdf’,
},
},
{
friendlyName: ‘dicom json’,
namespace: ‘@ohif/extension-default.dataSourcesModule.dicomjson’,
sourceName: ‘dicomjson’,
configuration: {
name: ‘json’,
},
},
{
friendlyName: ‘dicom local’,
namespace: ‘@ohif/extension-default.dataSourcesModule.dicomlocal’,
sourceName: ‘dicomlocal’,
configuration: {},
},
],
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
},
// whiteLabeling: {
// /* Optional: Should return a React component to be rendered in the “Logo” section of the application’s Top Navigation bar */
// createLogoComponentFn: function (React) {
// return React.createElement(
// ‘a’,
// {
// target: ‘_self’,
// rel: ‘noopener noreferrer’,
// className: ‘text-purple-600 line-through’,
// href: ‘/’,
// },
// React.createElement(‘img’,
// {
// src: ‘./customLogo.svg’,
// className: ‘w-8 h-8’,
// }
// ))
// },
// },
defaultDataSourceName: ‘dicomweb’,
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’],
},
{
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’],
},
],
};
=================================================
4. Orthanc config
{
“Name”: “Orthanc”,
“StorageDirectory”: “/var/www/html/db-v6”,
“IndexDirectory”: “/var/www/html/db-v6”,
“PathStorage”: “/var/www/html/db-v6”,
“StorageCompression”: false,
“MaximumStorageSize”: 0,
“MaximumPatientCount”: 0,
“LuaScripts”: ,
“Plugins”: [
“/usr/share/orthanc/plugins/”,
“/usr/share/orthanc/orthanc-transfers/BuildTransfers/libOrthancTransfers.so”
],
“ConcurrentJobs”: 2,
“HttpServerEnabled”: true,
“HttpPort”: 8042,
“HttpDescribeErrors”: true,
“HttpCompressionEnabled”: true,
“DicomServerEnabled”: true,
“DicomAet”: “ORTHANC”,
“DicomCheckCalledAet”: true,
“DicomPort”: 4200,
“DefaultEncoding”: “Latin1”,
“DeflatedTransferSyntaxAccepted”: true,
“JpegTransferSyntaxAccepted”: true,
“Jpeg2000TransferSyntaxAccepted”: true,
“JpegLosslessTransferSyntaxAccepted”: true,
“JpipTransferSyntaxAccepted”: true,
“Mpeg2TransferSyntaxAccepted”: true,
“RleTransferSyntaxAccepted”: true,
“UnknownSopClassAccepted”: false,
“DicomScpTimeout”: 300,
“RemoteAccessAllowed”: true,
“SslEnabled”: false,
“SslCertificate”: “certificate.pem”,
“AuthenticationEnabled”: true,
“RegisteredUsers”: { “orthanc”: “orthanc” },
“DicomModalities”: {},
“DicomModalitiesInDatabase”: true,
“DicomAlwaysAllowEcho”: true,
“DicomAlwaysAllowStore”: true,
“DicomCheckModalityHost”: false,
“DicomScuTimeout”: 30,
“OrthancPeers”: { },
“OrthancPeersInDatabase”: true,
“HttpProxy”: “”,
“HttpVerbose”: false,
“HttpTimeout”: 60,
“HttpsVerifyPeers”: true,
“HttpsCACertificates”: “”,
“UserMetadata”: {},
“UserContentType”: {},
“StableAge”: 60,
“StrictAetComparison”: false,
“StoreMD5ForAttachments”: true,
“LimitFindResults”: 0,
“LimitFindInstances”: 0,
“LimitJobs”: 10,
“LogExportedResources”: false,
“KeepAlive”: true,
“TcpNoDelay”: true,
“HttpThreadsCount”: 50,
“StoreDicom”: true,
“DicomAssociationCloseDelay”: 5,
“QueryRetrieveSize”: 100,
“CaseSensitivePN”: false,
“LoadPrivateDictionary”: true,
“Dictionary”: {},
“SynchronousCMove”: true,
“JobsHistorySize”: 10,
“SaveJobs”: true,
“OverwriteInstances”: false,
“MediaArchiveSize”: 1,
“StorageAccessOnFind”: “Always”,
“MetricsEnabled”: true,
“ExecuteLuaEnabled”: false,
“HttpRequestTimeout”: 30
}
Thanks