pixelbridge-orthanc/config/ohif/ohif.js
2025-01-27 10:29:39 +06:00

257 lines
7.0 KiB
JavaScript

/**
* SPDX-FileCopyrightText: 2023-2024 Sebastien Jodogne, UCLouvain, Belgium,
* and 2018-2024 Open Health Imaging Foundation
* SPDX-License-Identifier: MIT
*/
window.config = {
extensions: [],
modes: [],
customizationService: {
// Shows a custom route -access via http://localhost:3000/custom
// helloPage: '@ohif/extension-default.customizationModule.helloPage',
},
showStudyList: false,
investigationalUseDialog: {
option: 'never',
},
whiteLabeling: {
/* Used to replace the default Logo */
createLogoComponentFn: function (React) {
return React.createElement("a", {
target: "_self",
rel: "noopener noreferrer",
className: "header-brand",
href: "/",
style: {
display: "block",
background: "url(logo.png)",
backgroundSize: "contain",
backgroundRepeat: "no-repeat",
width: "200px",
},
});
},
},
customizationService: {
cornerstoneOverlayTopLeft: {
id: 'cornerstoneOverlayTopLeft',
items: [
{
id: 'WindowLevel',
customizationType: 'ohif.overlayItem.windowLevel',
},
{
id: 'PatientName',
customizationType: 'ohif.overlayItem',
label: 'Pt:',
color: 'white',
condition: ({ instance }) =>
instance &&
instance.PatientName &&
instance.PatientName.Alphabetic,
contentF: ({ instance, formatters: { formatPN } }) => {
if (instance && instance.PatientName && instance.PatientName.Alphabetic) {
return formatPN(instance.PatientName.Alphabetic) + ' ' + (instance.PatientSex ? '(' + instance.PatientSex + ')' : '');
} else {
return 'N/A';
}
},
},
{
id: 'PatientAge',
customizationType: 'ohif.overlayItem',
label: 'Age:',
color: 'white',
title: "Patient's Age",
condition: ({ instance }) => instance && instance.PatientAge,
contentF: ({ instance }) => instance.PatientAge,
},
{
id: 'ID',
customizationType: 'ohif.overlayItem',
label: 'ID:',
color: 'white',
title: 'Patient PID',
condition: ({ instance }) => instance && instance.PatientID,
contentF: ({ instance }) => instance.PatientID,
},
],
},
},
// some windows systems have issues with more than 3 web workers
maxNumberOfWebWorkers: 3,
// below flag is for performance reasons, but it might not work for all servers
omitQuotationForMultipartRequest: true,
showWarningMessageForCrossOrigin: true,
showCPUFallbackMessage: true,
showLoadingIndicator: true,
strictZSpacingForVolumeViewport: true,
maxNumRequests: {
interaction: 100,
thumbnail: 75,
// Prefetch number is dependent on the http protocol. For http 2 or
// above, the number of requests can be go a lot higher.
prefetch: 25,
},
// filterQueryParam: false,
httpErrorHandler: error => {
// This is 429 when rejected from the public idc sandbox too often.
if (error.status) {
console.warn(error.status);
} else {
console.warn(error);
}
},
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'],
},
],
};
/**
* SPDX-FileCopyrightText: 2023-2024 Sebastien Jodogne, UCLouvain, Belgium,
* and 2018-2024 Open Health Imaging Foundation
* SPDX-License-Identifier: MIT
*/
window.config.routerBasename = '/ohif/';
if (true) {
window.config.dataSources = [
{
friendlyName: 'Orthanc DICOMweb',
namespace: '@ohif/extension-default.dataSourcesModule.dicomweb',
sourceName: 'dicomweb',
configuration: {
name: 'orthanc',
wadoUriRoot: '../dicom-web',
qidoRoot: '../dicom-web',
wadoRoot: '../dicom-web',
qidoSupportsIncludeField: false,
supportsReject: false,
imageRendering: 'wadors',
thumbnailRendering: 'wadors',
enableStudyLazyLoad: true,
supportsFuzzyMatching: false,
supportsWildcard: true,
staticWado: true,
singlepart: 'bulkdata,pdf,video',
acceptHeader: ['multipart/related; type=application/octet-stream; transfer-syntax=*']
}
}
];
window.config.defaultDataSourceName = 'dicomweb';
} else {
window.config.showStudyList = false;
window.config.dataSources = [
{
friendlyName: 'Orthanc DICOM JSON',
namespace: '@ohif/extension-default.dataSourcesModule.dicomjson',
sourceName: 'dicomjson',
configuration: {
name: 'json',
},
}
];
window.config.defaultDataSourceName = 'dicomjson';
}