@ohif/app 3.13.0-beta.113 → 3.13.0-beta.115

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (45) hide show
  1. package/dist/{100.bundle.1e7f2ba6d6ed33e3.js → 100.bundle.035bd530ed70dd3a.js} +2 -2
  2. package/dist/{1180.bundle.bb27058985d5740b.js → 1180.bundle.cd693bf1778988e5.js} +2 -2
  3. package/dist/{1206.bundle.79ed23079c78f18d.js → 1206.bundle.ecd5aaaca8466ba5.js} +2 -2
  4. package/dist/{1602.bundle.8e39d785591d90e6.js → 1602.bundle.fbca1a90e1493555.js} +4 -4
  5. package/dist/{2779.bundle.7097223e679de243.js → 2779.bundle.37dc7ddc085858b1.js} +2 -2
  6. package/dist/{3500.bundle.e914b320238105da.js → 3500.bundle.48f2de01d8c645ed.js} +3 -3
  7. package/dist/{3760.bundle.a879875c6b24ae95.js → 3760.bundle.cfecd5e3a3284c7a.js} +4 -4
  8. package/dist/419.bundle.19d9788d62569ec7.js +655 -0
  9. package/dist/{4834.bundle.63b105e0bedff005.js → 4834.bundle.e0e26ec9f1421cb2.js} +2 -2
  10. package/dist/{5189.bundle.86d3023e7ec28a8f.js → 5189.bundle.bf053e2e1c064914.js} +2 -2
  11. package/dist/{5448.bundle.8cda5b8e4baea275.js → 5448.bundle.1e50777e4c4e122a.js} +1 -1
  12. package/dist/{5696.bundle.b7def2862ca04c3e.js → 5696.bundle.04f16de39c05e393.js} +3 -3
  13. package/dist/{5708.bundle.692571d1d6197715.js → 5708.bundle.11a7422bd81705fc.js} +4 -4
  14. package/dist/{5910.bundle.c1199bd45e450735.js → 5910.bundle.5561806884c95754.js} +4 -4
  15. package/dist/{6001.bundle.1e17f446db27ab06.js → 6001.bundle.c3d1d7477b3173c9.js} +4 -4
  16. package/dist/{7231.bundle.791409f68df0de05.js → 7231.bundle.32e096be83a5dece.js} +8 -6
  17. package/dist/{7248.bundle.e45e26eeff5bc0ab.js → 7248.bundle.81fd80535e9b7e77.js} +5 -5
  18. package/dist/{7295.bundle.61edd77d1b86b799.js → 7295.bundle.231040ddfcde9f72.js} +6 -6
  19. package/dist/{7463.bundle.afe57ad10829df20.js → 7463.bundle.40668aa8d083d077.js} +2 -2
  20. package/dist/{414.bundle.098d66591e6368f4.js → 7701.bundle.2a0e55d235e87630.js} +665 -17
  21. package/dist/{8007.bundle.bc2856ea25d6acdd.js → 8007.bundle.3c124044acfcbb0c.js} +18 -12
  22. package/dist/{8423.bundle.075e8b5b25da4d47.js → 8423.bundle.ea4957f1ce64487a.js} +2 -2
  23. package/dist/{8832.bundle.1527b17becc2b22b.js → 8832.bundle.7c9292f59d3eb033.js} +3 -3
  24. package/dist/{899.bundle.6f855ae8df39327e.js → 899.bundle.221329ac8cec3022.js} +2 -2
  25. package/dist/{9068.bundle.29adebcfccb4bc8e.js → 9068.bundle.cd36fcb4e15a153e.js} +4 -4
  26. package/dist/{9116.bundle.ee35c08c265f0df3.js → 9116.bundle.164eb4cacb8b0f8f.js} +2 -2
  27. package/dist/{9415.bundle.f5c741386f7992f2.js → 9415.bundle.4ac6ceb3a8bc509a.js} +4 -4
  28. package/dist/{9437.bundle.58944991bfee599b.js → 9437.bundle.be34e21e666a7bcc.js} +2 -2
  29. package/dist/app-config.js +42 -251
  30. package/dist/{app.bundle.0880918724f7f488.js → app.bundle.9c8087b3a0d9b2ba.js} +2470 -148
  31. package/dist/customizations/ctPresets.jsonc +21 -0
  32. package/dist/customizations/measurementLabels.jsonc +23 -0
  33. package/dist/customizations/patientBirthDate.jsonc +34 -0
  34. package/dist/customizations/smoothRotate.jsonc +42 -0
  35. package/dist/customizations/veterinary.jsonc +5 -0
  36. package/dist/customizations/veterinaryOverlay.jsonc +56 -0
  37. package/dist/index.html +1 -1
  38. package/dist/sw.js +2 -2
  39. package/package.json +5 -5
  40. package/dist/2666.bundle.ab47b38f402e29c6.js +0 -1271
  41. /package/dist/{379.bundle.75b0fb722268f037.js → 379.bundle.4b932c0de4372bc3.js} +0 -0
  42. /package/dist/{4556.bundle.b9c2595d0c6be8a1.js → 4556.bundle.ccdf4244832f50e3.js} +0 -0
  43. /package/dist/{4683.bundle.d6a79bb4ed36a3a2.js → 4683.bundle.90596a310b9feaad.js} +0 -0
  44. /package/dist/{6650.bundle.defab1d01ae0dcba.js → 6650.bundle.ac76eb90d6f8a353.js} +0 -0
  45. /package/dist/{9290.bundle.c9088a82d7624c95.js → 9290.bundle.4fab16e015cc0858.js} +0 -0
@@ -6,7 +6,7 @@ __webpack_require__.d(__webpack_exports__, {
6
6
  });
7
7
  /* import */ var react__rspack_import_0 = __webpack_require__(86326);
8
8
  /* import */ var _ohif_ui_next__rspack_import_1 = __webpack_require__(39987);
9
- /* import */ var _ohif_core__rspack_import_2 = __webpack_require__(62901);
9
+ /* import */ var _ohif_core__rspack_import_2 = __webpack_require__(50679);
10
10
  function _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }
11
11
 
12
12
 
@@ -119,8 +119,8 @@ __webpack_require__.d(__webpack_exports__, {
119
119
  var react = __webpack_require__(86326);
120
120
  // EXTERNAL MODULE: ../../ui-next/src/index.ts + 3682 modules
121
121
  var src = __webpack_require__(39987);
122
- // EXTERNAL MODULE: ../../core/src/index.ts + 69 modules
123
- var core_src = __webpack_require__(62901);
122
+ // EXTERNAL MODULE: ../../core/src/index.ts + 75 modules
123
+ var core_src = __webpack_require__(50679);
124
124
  // EXTERNAL MODULE: ../../../node_modules/react-router-dom/dist/index.js
125
125
  var dist = __webpack_require__(4194);
126
126
  // EXTERNAL MODULE: ../../../extensions/default/src/Panels/StudyBrowser/PanelStudyBrowserHeader.tsx
@@ -660,7 +660,7 @@ __webpack_require__.d(__webpack_exports__, {
660
660
  M: () => (Toolbar)
661
661
  });
662
662
  /* import */ var react__rspack_import_0 = __webpack_require__(86326);
663
- /* import */ var _ohif_core__rspack_import_1 = __webpack_require__(62901);
663
+ /* import */ var _ohif_core__rspack_import_1 = __webpack_require__(50679);
664
664
  function _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }
665
665
 
666
666
 
@@ -768,8 +768,8 @@ __webpack_require__.d(utils_namespaceObject, {
768
768
 
769
769
  // EXTERNAL MODULE: ../../../node_modules/dicomweb-client/build/dicomweb-client.es.js
770
770
  var dicomweb_client_es = __webpack_require__(83562);
771
- // EXTERNAL MODULE: ../../core/src/index.ts + 69 modules
772
- var src = __webpack_require__(62901);
771
+ // EXTERNAL MODULE: ../../core/src/index.ts + 75 modules
772
+ var src = __webpack_require__(50679);
773
773
  // EXTERNAL MODULE: ../../core/src/utils/sortStudy.ts
774
774
  var sortStudy = __webpack_require__(28395);
775
775
  ;// CONCATENATED MODULE: ../../../extensions/default/src/DicomWebDataSource/qido.js
@@ -831,6 +831,8 @@ function processResults(qidoStudies) {
831
831
  mrn: getString(qidoStudy['00100020']) || '',
832
832
  // medicalRecordNumber
833
833
  patientName: src/* .utils.formatPN */.Wp.formatPN(getName(qidoStudy['00100010'])) || '',
834
+ patientBirthDate: getString(qidoStudy['00100030']) || '',
835
+ // YYYYMMDD
834
836
  instances: Number(getString(qidoStudy['00201208'])) || 0,
835
837
  // number
836
838
  description: getString(qidoStudy['00081030']) || '',
@@ -925,7 +927,9 @@ function mapParams(params, options = {}) {
925
927
  // Study Description
926
928
  '00080060',
927
929
  // Modality
928
- '00080090' // Referring Physician's Name
930
+ '00080090',
931
+ // Referring Physician's Name
932
+ '00100030' // Patient's Birth Date
929
933
  // Add more fields here if you want them in the result
930
934
  ].join(',');
931
935
  const useWildcard = params?.disableWildcard !== undefined ? !params.disableWildcard : options.supportsWildcard;
@@ -4256,7 +4260,7 @@ function ViewerHeader({
4256
4260
  if (dataSourceIdx !== -1 && existingDataSource) {
4257
4261
  searchQuery.append('datasources', pathname.substring(dataSourceIdx + 1));
4258
4262
  }
4259
- (0,index_0/* .preserveQueryParameters */.Nn)(searchQuery);
4263
+ (0,index_0/* .preserveQueryParameters */.Nn)(searchQuery, customizationService);
4260
4264
  navigate({
4261
4265
  pathname: '/',
4262
4266
  search: decodeURIComponent(searchQuery.toString())
@@ -10269,6 +10273,7 @@ const {
10269
10273
  });
10270
10274
  ;// CONCATENATED MODULE: ../../../extensions/default/src/customizations/overlayItemCustomization.tsx
10271
10275
 
10276
+
10272
10277
  /* export default */ const overlayItemCustomization = ({
10273
10278
  'ohif.overlayItem': function (props) {
10274
10279
  if (this.condition && !this.condition(props)) {
@@ -10278,7 +10283,8 @@ const {
10278
10283
  instance
10279
10284
  } = props;
10280
10285
  const value = instance && this.attribute ? instance[this.attribute] : this.contentF && typeof this.contentF === 'function' ? this.contentF(props) : null;
10281
- if (!value) {
10286
+ const displayValue = src/* .utils.formatValue */.Wp.formatValue(value);
10287
+ if (!displayValue) {
10282
10288
  return null;
10283
10289
  }
10284
10290
  return /*#__PURE__*/react.createElement("span", {
@@ -10291,7 +10297,7 @@ const {
10291
10297
  className: "mr-1 shrink-0"
10292
10298
  }, this.label), /*#__PURE__*/react.createElement("span", {
10293
10299
  className: "font-light"
10294
- }, value));
10300
+ }, displayValue));
10295
10301
  }
10296
10302
  });
10297
10303
  ;// CONCATENATED MODULE: ../../../extensions/default/src/customizations/contextMenuCustomization.ts
@@ -10935,8 +10941,8 @@ function AboutModalDefault() {
10935
10941
  name
10936
10942
  } = (0,browser_detect_es5/* ["default"] */.A)();
10937
10943
  const browser = `${name[0].toUpperCase()}${name.substr(1)} ${version}`;
10938
- const versionNumber = "3.13.0-beta.113";
10939
- const commitHash = "333d73e334f1fcf466947cf6a0f6b1821d6c038e";
10944
+ const versionNumber = "3.13.0-beta.115";
10945
+ const commitHash = "1b6fa2194e390576f1411d5e6475cb0c8edb241a";
10940
10946
  const [main, beta] = versionNumber.split('-');
10941
10947
  return /*#__PURE__*/react.createElement(ui_next_src/* .AboutModal */.VTU, {
10942
10948
  className: "w-[400px]"
@@ -484,8 +484,8 @@ function getCustomizationModule() {
484
484
  /* export default */ const maxNumImageFrames = ((study, extraData) => Math.max(...(extraData?.displaySets?.map?.(ds => ds.numImageFrames ?? 0) || [0])));
485
485
  // EXTERNAL MODULE: ../../../node_modules/react/index.js
486
486
  var react = __webpack_require__(86326);
487
- // EXTERNAL MODULE: ../../../extensions/cornerstone/src/index.tsx + 197 modules
488
- var src = __webpack_require__(84461);
487
+ // EXTERNAL MODULE: ../../../extensions/cornerstone/src/index.tsx + 198 modules
488
+ var src = __webpack_require__(28772);
489
489
  ;// CONCATENATED MODULE: ../../../extensions/test-extension/src/getPanelModule.tsx
490
490
 
491
491
 
@@ -19,8 +19,8 @@ var react = __webpack_require__(86326);
19
19
  var src = __webpack_require__(39987);
20
20
  // EXTERNAL MODULE: ../../../extensions/default/src/index.ts + 144 modules
21
21
  var default_src = __webpack_require__(61610);
22
- // EXTERNAL MODULE: ../../core/src/index.ts + 69 modules
23
- var core_src = __webpack_require__(62901);
22
+ // EXTERNAL MODULE: ../../core/src/index.ts + 75 modules
23
+ var core_src = __webpack_require__(50679);
24
24
  // EXTERNAL MODULE: ../../../node_modules/react-i18next/dist/es/index.js + 29 modules
25
25
  var es = __webpack_require__(75258);
26
26
  // EXTERNAL MODULE: ../../../extensions/dicom-microscopy/node_modules/mathjs/lib/esm/index.js + 1009 modules
@@ -2765,7 +2765,7 @@ const extension = {
2765
2765
  __webpack_require__.d(__webpack_exports__, {
2766
2766
  A: () => (getDicomWebClient)
2767
2767
  });
2768
- /* import */ var _ohif_core__rspack_import_0 = __webpack_require__(62901);
2768
+ /* import */ var _ohif_core__rspack_import_0 = __webpack_require__(50679);
2769
2769
  /* import */ var _ohif_extension_default__rspack_import_1 = __webpack_require__(61610);
2770
2770
 
2771
2771
 
@@ -27,8 +27,8 @@ function createSEGToolGroupAndAddTools({
27
27
  return toolGroupService.createToolGroupAndAddTools(toolGroupId, updatedTools);
28
28
  }
29
29
  /* export default */ const initSEGToolGroup = (createSEGToolGroupAndAddTools);
30
- // EXTERNAL MODULE: ../../../extensions/cornerstone/src/index.tsx + 197 modules
31
- var cornerstone_src = __webpack_require__(84461);
30
+ // EXTERNAL MODULE: ../../../extensions/cornerstone/src/index.tsx + 198 modules
31
+ var cornerstone_src = __webpack_require__(28772);
32
32
  ;// CONCATENATED MODULE: ../../../extensions/cornerstone-dicom-seg/src/utils/promptHydrateSEG.ts
33
33
 
34
34
  function promptHydrateSEG({
@@ -14,14 +14,14 @@ var prop_types = __webpack_require__(97598);
14
14
  var prop_types_default = /*#__PURE__*/__webpack_require__.n(prop_types);
15
15
  // EXTERNAL MODULE: ../../../node_modules/react/index.js
16
16
  var react = __webpack_require__(86326);
17
- // EXTERNAL MODULE: ../../core/src/index.ts + 69 modules
18
- var src = __webpack_require__(62901);
17
+ // EXTERNAL MODULE: ../../core/src/index.ts + 75 modules
18
+ var src = __webpack_require__(50679);
19
19
  // EXTERNAL MODULE: ../../../extensions/cornerstone-dicom-sr/src/tools/modules/dicomSRModule.js
20
20
  var dicomSRModule = __webpack_require__(91473);
21
21
  // EXTERNAL MODULE: ../../../extensions/cornerstone-dicom-sr/src/utils/createReferencedImageDisplaySet.ts
22
22
  var createReferencedImageDisplaySet = __webpack_require__(81444);
23
- // EXTERNAL MODULE: ../../../extensions/cornerstone/src/index.tsx + 197 modules
24
- var cornerstone_src = __webpack_require__(84461);
23
+ // EXTERNAL MODULE: ../../../extensions/cornerstone/src/index.tsx + 198 modules
24
+ var cornerstone_src = __webpack_require__(28772);
25
25
  // EXTERNAL MODULE: ../../ui-next/src/index.ts + 3682 modules
26
26
  var ui_next_src = __webpack_require__(39987);
27
27
  // EXTERNAL MODULE: ../../core/src/contextProviders/SystemProvider.tsx
@@ -16,8 +16,8 @@ var package_namespaceObject = JSON.parse('{"UU":"@ohif/extension-dicom-pdf"}')
16
16
  const id = package_namespaceObject.UU;
17
17
  const SOPClassHandlerId = `${id}.sopClassHandlerModule.dicom-pdf`;
18
18
 
19
- // EXTERNAL MODULE: ../../core/src/index.ts + 69 modules
20
- var src = __webpack_require__(62901);
19
+ // EXTERNAL MODULE: ../../core/src/index.ts + 75 modules
20
+ var src = __webpack_require__(50679);
21
21
  // EXTERNAL MODULE: ../../i18n/src/index.js + 300 modules
22
22
  var i18n_src = __webpack_require__(90119);
23
23
  ;// CONCATENATED MODULE: ../../../extensions/dicom-pdf/src/getSopClassHandlerModule.js
@@ -17,16 +17,16 @@ const SOPClassHandlerId = `${id}.sopClassHandlerModule.${SOPClassHandlerName}`;
17
17
 
18
18
  // EXTERNAL MODULE: ../../../node_modules/react/index.js
19
19
  var react = __webpack_require__(86326);
20
- // EXTERNAL MODULE: ../../core/src/index.ts + 69 modules
21
- var src = __webpack_require__(62901);
20
+ // EXTERNAL MODULE: ../../core/src/index.ts + 75 modules
21
+ var src = __webpack_require__(50679);
22
22
  // EXTERNAL MODULE: ../../i18n/src/index.js + 300 modules
23
23
  var i18n_src = __webpack_require__(90119);
24
24
  // EXTERNAL MODULE: ../../../node_modules/@cornerstonejs/core/dist/esm/index.js + 1 modules
25
25
  var esm = __webpack_require__(70594);
26
26
  // EXTERNAL MODULE: ../../../node_modules/@cornerstonejs/adapters/dist/esm/index.js + 79 modules
27
27
  var dist_esm = __webpack_require__(7526);
28
- // EXTERNAL MODULE: ../../../extensions/cornerstone/src/index.tsx + 197 modules
29
- var cornerstone_src = __webpack_require__(84461);
28
+ // EXTERNAL MODULE: ../../../extensions/cornerstone/src/index.tsx + 198 modules
29
+ var cornerstone_src = __webpack_require__(28772);
30
30
  ;// CONCATENATED MODULE: ../../../extensions/cornerstone-dicom-pmap/src/getSopClassHandlerModule.ts
31
31
 
32
32
 
@@ -9,8 +9,8 @@ __webpack_require__.d(__webpack_exports__, {
9
9
 
10
10
  // EXTERNAL MODULE: ../../../node_modules/@cornerstonejs/core/dist/esm/index.js + 1 modules
11
11
  var esm = __webpack_require__(70594);
12
- // EXTERNAL MODULE: ../../core/src/index.ts + 69 modules
13
- var src = __webpack_require__(62901);
12
+ // EXTERNAL MODULE: ../../core/src/index.ts + 75 modules
13
+ var src = __webpack_require__(50679);
14
14
  // EXTERNAL MODULE: ../../../node_modules/i18next/dist/esm/i18next.js + 22 modules
15
15
  var i18next = __webpack_require__(26104);
16
16
  ;// CONCATENATED MODULE: ../../../modes/basic-test-mode/src/toolbarButtons.ts
@@ -1,5 +1,21 @@
1
1
  /** @type {AppTypes.Config} */
2
2
 
3
+ // Secure, minimal default configuration.
4
+ //
5
+ // This is what a plain production build with no APP_CONFIG produces, so it is
6
+ // deliberately locked down:
7
+ // - The local file data source (`dicomlocal`) and the runtime `?url=` sources
8
+ // (`dicomjson`, `dicomwebproxy`) are NOT enabled — they widen the attack
9
+ // surface of a default deployment.
10
+ // - `?customization=` URL loading is OFF: no `customizationUrlPrefixes` are
11
+ // configured, so any `?customization=` value is rejected (and aborts boot
12
+ // rather than silently loading).
13
+ // - `dangerouslyUseDynamicConfig` (the `configUrl` query parameter) is off.
14
+ //
15
+ // It does not need to "just work" untouched — point the data source below at
16
+ // your own DICOMweb server. For a fully-featured setup with every data source
17
+ // and customization loading enabled, see config/dev.js (local development) and
18
+ // config/netlify.js (the public demo deploy).
3
19
  window.config = {
4
20
  name: 'config/default.js',
5
21
  routerBasename: null,
@@ -7,6 +23,21 @@ window.config = {
7
23
  extensions: [],
8
24
  modes: [],
9
25
  customizationService: {},
26
+
27
+ // --- URL-driven customizations (?customization=) ----------------------------
28
+ // OFF by default. To allow loading customization data files from the URL, set
29
+ // `customizationUrlPrefixes` to a map of allowed prefixes. The `default` prefix
30
+ // (no slashes) is used for values with no leading slash; every other prefix
31
+ // must start AND end with a slash and is matched against the leading
32
+ // `/segment/` of the value. Files are fetched and parsed as JSONC data — they
33
+ // are never executed. Example (left disabled here on purpose):
34
+ //
35
+ // customizationUrlPrefixes: {
36
+ // default: './customizations/', // ?customization=ctPresets
37
+ // '/remote/': 'https://cdn.example.com/ohif-custom/', // ?customization=/remote/siteA
38
+ // },
39
+ // ----------------------------------------------------------------------------
40
+
10
41
  showStudyList: true,
11
42
  // some windows systems have issues with more than 3 web workers
12
43
  maxNumberOfWebWorkers: 3,
@@ -26,81 +57,13 @@ window.config = {
26
57
  prefetch: 25,
27
58
  },
28
59
  showErrorDetails: 'always', // 'always', 'dev', 'production'
29
- // filterQueryParam: false,
30
- // Defines multi-monitor layouts
31
- multimonitor: [
32
- {
33
- id: 'split',
34
- test: ({ multimonitor }) => multimonitor === 'split',
35
- screens: [
36
- {
37
- id: 'ohif0',
38
- screen: null,
39
- location: {
40
- screen: 0,
41
- width: 0.5,
42
- height: 1,
43
- left: 0,
44
- top: 0,
45
- },
46
- options: 'location=no,menubar=no,scrollbars=no,status=no,titlebar=no',
47
- },
48
- {
49
- id: 'ohif1',
50
- screen: null,
51
- location: {
52
- width: 0.5,
53
- height: 1,
54
- left: 0.5,
55
- top: 0,
56
- },
57
- options: 'location=no,menubar=no,scrollbars=no,status=no,titlebar=no',
58
- },
59
- ],
60
- },
61
-
62
- {
63
- id: '2',
64
- test: ({ multimonitor }) => multimonitor === '2',
65
- screens: [
66
- {
67
- id: 'ohif0',
68
- screen: 0,
69
- location: {
70
- width: 1,
71
- height: 1,
72
- left: 0,
73
- top: 0,
74
- },
75
- options: 'fullscreen=yes,location=no,menubar=no,scrollbars=no,status=no,titlebar=no',
76
- },
77
- {
78
- id: 'ohif1',
79
- screen: 1,
80
- location: {
81
- width: 1,
82
- height: 1,
83
- left: 0,
84
- top: 0,
85
- },
86
- options: 'fullscreen=yes,location=no,menubar=no,scrollbars=no,status=no,titlebar=no',
87
- },
88
- ],
89
- },
90
- ],
60
+ // `dangerouslyUseDynamicConfig` (load configuration from a `configUrl` query
61
+ // parameter) is intentionally left OFF in the secure default build. See
62
+ // config/dev.js for the documented shape.
91
63
  defaultDataSourceName: 'ohif',
92
- /* Dynamic config allows user to pass "configUrl" query string this allows to load config without recompiling application. The regex will ensure valid configuration source */
93
- // dangerouslyUseDynamicConfig: {
94
- // enabled: true,
95
- // // regex will ensure valid configuration source and default is /.*/ which matches any character. To use this, setup your own regex to choose a specific source of configuration only.
96
- // // Example 1, to allow numbers and letters in an absolute or sub-path only.
97
- // // regex: /(0-9A-Za-z.]+)(\/[0-9A-Za-z.]+)*/
98
- // // Example 2, to restricts to either hosptial.com or othersite.com.
99
- // // regex: /(https:\/\/hospital.com(\/[0-9A-Za-z.]+)*)|(https:\/\/othersite.com(\/[0-9A-Za-z.]+)*)/
100
- // regex: /.*/,
101
- // },
102
64
  dataSources: [
103
65
  {
66
+ // Read-only public demo server. Replace with your own DICOMweb server.
104
67
  namespace: '@ohif/extension-default.dataSourcesModule.dicomweb',
105
68
  sourceName: 'ohif',
106
69
  configuration: {
@@ -118,9 +81,6 @@ window.config = {
118
81
  supportsWildcard: true,
119
82
  staticWado: true,
120
83
  singlepart: 'bulkdata,video',
121
- // whether the data source should use retrieveBulkData to grab metadata,
122
- // and in case of relative path, what would it be relative to, options
123
- // are in the series level or study level (some servers like series some study)
124
84
  bulkDataURI: {
125
85
  enabled: true,
126
86
  relativeResolution: 'studies',
@@ -130,157 +90,13 @@ window.config = {
130
90
  },
131
91
  },
132
92
 
133
- {
134
- namespace: '@ohif/extension-default.dataSourcesModule.dicomweb',
135
- sourceName: 'ohif2',
136
- configuration: {
137
- friendlyName: 'AWS S3 Static wado secondary server',
138
- name: 'aws',
139
- wadoUriRoot: 'https://dd14fa38qiwhyfd.cloudfront.net/dicomweb',
140
- qidoRoot: 'https://dd14fa38qiwhyfd.cloudfront.net/dicomweb',
141
- wadoRoot: 'https://dd14fa38qiwhyfd.cloudfront.net/dicomweb',
142
- qidoSupportsIncludeField: false,
143
- supportsReject: false,
144
- imageRendering: 'wadors',
145
- thumbnailRendering: 'wadors',
146
- enableStudyLazyLoad: true,
147
- supportsFuzzyMatching: false,
148
- supportsWildcard: true,
149
- staticWado: true,
150
- singlepart: 'bulkdata,video',
151
- // whether the data source should use retrieveBulkData to grab metadata,
152
- // and in case of relative path, what would it be relative to, options
153
- // are in the series level or study level (some servers like series some study)
154
- bulkDataURI: {
155
- enabled: true,
156
- relativeResolution: 'studies',
157
- },
158
- omitQuotationForMultipartRequest: true,
159
- },
160
- },
161
- {
162
- namespace: '@ohif/extension-default.dataSourcesModule.dicomweb',
163
- sourceName: 'ohif3',
164
- configuration: {
165
- friendlyName: 'AWS S3 Static wado secondary server',
166
- name: 'aws',
167
- wadoUriRoot: 'https://d3t6nz73ql33tx.cloudfront.net/dicomweb',
168
- qidoRoot: 'https://d3t6nz73ql33tx.cloudfront.net/dicomweb',
169
- wadoRoot: 'https://d3t6nz73ql33tx.cloudfront.net/dicomweb',
170
- qidoSupportsIncludeField: false,
171
- supportsReject: false,
172
- imageRendering: 'wadors',
173
- thumbnailRendering: 'wadors',
174
- enableStudyLazyLoad: true,
175
- supportsFuzzyMatching: false,
176
- supportsWildcard: true,
177
- staticWado: true,
178
- singlepart: 'bulkdata,video',
179
- // whether the data source should use retrieveBulkData to grab metadata,
180
- // and in case of relative path, what would it be relative to, options
181
- // are in the series level or study level (some servers like series some study)
182
- bulkDataURI: {
183
- enabled: true,
184
- relativeResolution: 'studies',
185
- },
186
- omitQuotationForMultipartRequest: true,
187
- },
188
- },
189
-
190
- {
191
- namespace: '@ohif/extension-default.dataSourcesModule.dicomweb',
192
- sourceName: 'local5000',
193
- configuration: {
194
- friendlyName: 'Static WADO Local Data',
195
- name: 'DCM4CHEE',
196
- qidoRoot: 'http://localhost:5000/dicomweb',
197
- wadoRoot: 'http://localhost:5000/dicomweb',
198
- qidoSupportsIncludeField: false,
199
- supportsReject: true,
200
- supportsStow: true,
201
- imageRendering: 'wadors',
202
- thumbnailRendering: 'wadors',
203
- enableStudyLazyLoad: true,
204
- supportsFuzzyMatching: false,
205
- supportsWildcard: true,
206
- staticWado: true,
207
- singlepart: 'video',
208
- bulkDataURI: {
209
- enabled: true,
210
- relativeResolution: 'studies',
211
- },
212
- },
213
- },
214
- {
215
- namespace: '@ohif/extension-default.dataSourcesModule.dicomweb',
216
- sourceName: 'orthanc',
217
- configuration: {
218
- friendlyName: 'local Orthanc DICOMWeb Server',
219
- name: 'DCM4CHEE',
220
- wadoUriRoot: 'http://localhost/pacs/dicom-web',
221
- qidoRoot: 'http://localhost/pacs/dicom-web',
222
- wadoRoot: 'http://localhost/pacs/dicom-web',
223
- qidoSupportsIncludeField: true,
224
- supportsReject: true,
225
- dicomUploadEnabled: true,
226
- imageRendering: 'wadors',
227
- thumbnailRendering: 'wadors',
228
- enableStudyLazyLoad: true,
229
- supportsFuzzyMatching: true,
230
- supportsWildcard: true,
231
- omitQuotationForMultipartRequest: true,
232
- bulkDataURI: {
233
- enabled: true,
234
- // This is an example config that can be used to fix the retrieve URL
235
- // where it has the wrong prefix (eg a canned prefix). It is better to
236
- // just use the correct prefix out of the box, but that is sometimes hard
237
- // when URLs go through several systems.
238
- // Example URLS are:
239
- // "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",
240
- // when running on http://localhost:3003 with no server running on localhost. This can be corrected to:
241
- // /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
242
- // which is a valid relative URL, and will result in using the http://localhost:3003/orthanc/.... path
243
- // startsWith: 'http://localhost/',
244
- // prefixWith: '/orthanc/',
245
- },
246
- },
247
- },
248
-
249
- {
250
- namespace: '@ohif/extension-default.dataSourcesModule.dicomwebproxy',
251
- sourceName: 'dicomwebproxy',
252
- configuration: {
253
- friendlyName: 'dicomweb delegating proxy',
254
- name: 'dicomwebproxy',
255
- // Security controls for runtime ?url=... datasource loading:
256
- // In authenticated environments, runtime ?url origins must be allowlisted:
257
- // dangerouslyAllowedOriginsForAuthenticatedEnvironments: [
258
- // 'https://config.example.com',
259
- // 'http://localhost:5000',
260
- // ],
261
- },
262
- },
263
- {
264
- namespace: '@ohif/extension-default.dataSourcesModule.dicomjson',
265
- sourceName: 'dicomjson',
266
- configuration: {
267
- friendlyName: 'dicom json',
268
- name: 'json',
269
- // Security controls for runtime ?url=... datasource loading:
270
- // In authenticated environments, runtime ?url origins must be allowlisted:
271
- // dangerouslyAllowedOriginsForAuthenticatedEnvironments: [
272
- // 'https://config.example.com',
273
- // 'http://localhost:5000',
274
- // ],
275
- },
276
- },
277
- {
278
- namespace: '@ohif/extension-default.dataSourcesModule.dicomlocal',
279
- sourceName: 'dicomlocal',
280
- configuration: {
281
- friendlyName: 'dicom local',
282
- },
283
- },
93
+ // The following data sources are intentionally NOT enabled in the secure
94
+ // default because they broaden the attack surface of a default deployment.
95
+ // Enable them only in a deployment you control (see config/dev.js):
96
+ // - dicomlocal: loads DICOM files from the user's machine.
97
+ // - dicomjson: loads metadata from an arbitrary `?url=` (gate with
98
+ // `dangerouslyAllowedOriginsForAuthenticatedEnvironments`).
99
+ // - dicomwebproxy: delegating proxy driven by `?url=`.
284
100
  ],
285
101
  httpErrorHandler: error => {
286
102
  // This is 429 when rejected from the public idc sandbox too often.
@@ -289,29 +105,4 @@ window.config = {
289
105
  // Could use services manager here to bring up a dialog/modal if needed.
290
106
  console.warn('test, navigate to https://ohif.org/');
291
107
  },
292
- // segmentation: {
293
- // segmentLabel: {
294
- // enabledByDefault: true,
295
- // labelColor: [255, 255, 0, 1], // must be an array
296
- // hoverTimeout: 1,
297
- // background: 'rgba(100, 100, 100, 0.5)', // can be any valid css color
298
- // },
299
- // },
300
- // whiteLabeling: {
301
- // createLogoComponentFn: function (React) {
302
- // return React.createElement(
303
- // 'a',
304
- // {
305
- // target: '_self',
306
- // rel: 'noopener noreferrer',
307
- // className: 'text-purple-600 line-through',
308
- // href: '_X___IDC__LOGO__LINK___Y_',
309
- // },
310
- // React.createElement('img', {
311
- // src: './Logo.svg',
312
- // className: 'w-14 h-14',
313
- // })
314
- // );
315
- // },
316
- // },
317
108
  };