@ohif/app 3.7.0-beta.11 → 3.7.0-beta.110
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.
- package/dist/{917.bundle.b9983325adf849bff6fd.js → 12.bundle.5ea15cb6633d8028e47d.js} +6 -6
- package/dist/{295.bundle.957b1159fec14b9199a1.js → 125.bundle.253395f320b72180da63.js} +6 -6
- package/dist/{351.bundle.0742237651aef9694a65.js → 181.bundle.ceb057236403bcb630ac.js} +226 -204
- package/dist/{351.css → 181.css} +1 -1
- package/dist/{744.bundle.4c4b884f90eb70482821.js → 19.bundle.03f809886c36c388d05c.js} +240 -381
- package/dist/{606.bundle.5d876f5f3dd8287f0a28.js → 202.bundle.d3490836f71e001dd30f.js} +2089 -692
- package/dist/{926.bundle.dbc9d0e591cb9217fda2.js → 220.bundle.f7e1c96c94245e70f2be.js} +990 -400
- package/dist/221.bundle.dc6dac346d724d6baeae.js +1779 -0
- package/dist/221.css +2 -0
- package/dist/{664.bundle.09abae984223969d1bde.js → 23.bundle.e008ad788170f2ed5569.js} +5 -6
- package/dist/{976.bundle.9cc2382162214ea0af2b.js → 236.bundle.7b906cd27864d65f32c0.js} +89 -105
- package/dist/{55.bundle.550a823e75eb608e8d5e.js → 250.bundle.8084960e3318cda37317.js} +52 -36
- package/dist/{973.bundle.4584df05b320b94cace5.js → 281.bundle.c9854cc25c839e49c2c8.js} +18 -14
- package/dist/{82.bundle.9a0e7f08d4bce18d302f.js → 342.bundle.7d6c1e6bda1c67d729a7.js} +1802 -489
- package/dist/{404.bundle.3d65ff813eead20462d3.js → 359.bundle.72d017719489ff11057b.js} +47 -134
- package/dist/{192.bundle.950e5380ea63c6d635d5.js → 370.bundle.e55d75ff1bdccee16cde.js} +117 -103
- package/dist/{790.bundle.7327fec7833ceea2784b.js → 410.bundle.5b41c68cb0f210a83f13.js} +11 -9
- package/dist/{151.bundle.31ea35044218837bf73f.js → 417.bundle.af0a207c29b109f84159.js} +49 -17
- package/dist/{569.bundle.c8e771a8d28e237b32be.js → 451.bundle.9fd36f52ff69594f0669.js} +86 -106
- package/dist/{581.bundle.dc6197189f7c88c27d4c.js → 471.bundle.b3d77b83b1593c09a504.js} +78 -99
- package/dist/{199.bundle.f50ffd85a4334de2f5c1.js → 506.bundle.468dc6db2a9bfa96bb44.js} +11 -9
- package/dist/{531.bundle.2a82fb1d69e5b57cc72b.js → 530.bundle.a03b6f942ace3e1baa1e.js} +726 -447
- package/dist/579.css +1 -0
- package/dist/{935.bundle.deeffff0e4f7b528e3c3.js → 604.bundle.a51f83e64004bca5f497.js} +2 -3
- package/dist/613.bundle.74d59dec1983ef3efcdc.js +532 -0
- package/dist/{984.bundle.119557c018e6371b4628.js → 663.bundle.a6196baf5853e7d3f7c7.js} +68 -38
- package/dist/{205.bundle.b5a473c200dcf2bbcdb4.js → 686.bundle.dccef1f36e4bc79bcc48.js} +6 -6
- package/dist/{50.bundle.65ff60818862eda39d12.js → 687.bundle.e2c9c42ad3989a14d513.js} +218 -9
- package/dist/{331.bundle.bd0c13931a21d53086c9.js → 743.bundle.489f7df3a089d4d374e1.js} +26294 -21326
- package/dist/757.bundle.ec8301d8e70d2b990f65.js +17067 -0
- package/dist/{728.bundle.d13856835357400fef82.js → 774.bundle.4b2dc46a35012b898e1a.js} +95 -64
- package/dist/{381.bundle.0905e683605fcbc0895f.js → 775.bundle.2285e7e0e67878948c0d.js} +16 -16
- package/dist/{283.bundle.1015e87c3a47b1f1379c.js → 788.bundle.f4493409508bdffa7af8.js} +120 -370
- package/dist/{642.bundle.8905e515ce593e57ceb1.js → 814.bundle.10a2cbf02b044387e68b.js} +6 -6
- package/dist/{707.bundle.f774f3e4a687ddd60a32.js → 82.bundle.9c6461625afd2e38b997.js} +1203 -804
- package/dist/{799.bundle.758558e64147e5aad612.js → 822.bundle.891f2e57b1b7bc2f4cb4.js} +81 -34
- package/dist/{953.bundle.3b0189ebc11cf0946f18.js → 886.bundle.4b3a7f2079d085fdbcb3.js} +34 -29
- package/dist/945.min.worker.js +1 -1
- package/dist/945.min.worker.js.map +1 -1
- package/dist/{270.bundle.4564621556b0f963a004.js → 957.bundle.9ea4506963ef8b2d84ba.js} +7095 -979
- package/dist/{208.bundle.7f610a302dc54c4924da.js → 99.bundle.334c4bd4e4e81aaf45ad.js} +86 -105
- package/dist/_redirects +1 -1
- package/dist/app-config.js +35 -17
- package/dist/app.bundle.css +13 -12
- package/dist/{app.bundle.3d598a4738bdc22950d3.js → app.bundle.fd6ac18b8874825722a0.js} +72771 -67313
- package/dist/assets/yandex-browser-manifest.json +1 -1
- package/dist/cornerstoneDICOMImageLoader.min.js +1 -1
- package/dist/cornerstoneDICOMImageLoader.min.js.map +1 -1
- package/dist/{dicom-microscopy-viewer.bundle.aa60bdf008c32c39cfd7.js → dicom-microscopy-viewer.bundle.2c146384eb9466d02ff8.js} +5 -4
- package/dist/es6-shim.min.js +3569 -2
- package/dist/google.js +8 -7
- package/dist/index.html +2 -1
- package/dist/{index.worker.1c69152d710fa7b84bce.worker.js → index.worker.e62ecca63f1a2e124230.worker.js} +2 -2
- package/dist/index.worker.e62ecca63f1a2e124230.worker.js.map +1 -0
- package/dist/init-service-worker.js +3 -5
- package/dist/oidc-client.min.js +10857 -39
- package/dist/polyfill.min.js +184 -1
- package/dist/silent-refresh.html +18 -9
- package/dist/sw.js +1 -1
- package/package.json +21 -22
- package/dist/616.bundle.de530ae226dfa5573f6e.js +0 -685
- package/dist/780.bundle.fd0f13dc92e9caa0581e.js +0 -4769
- package/dist/index.worker.1c69152d710fa7b84bce.worker.js.map +0 -1
- /package/dist/{806.css → 19.css} +0 -0
- /package/dist/{55.css → 250.css} +0 -0
- /package/dist/{707.css → 82.css} +0 -0
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
(
|
|
2
|
+
(self["webpackChunk"] = self["webpackChunk"] || []).push([[19,579],{
|
|
3
3
|
|
|
4
|
-
/***/
|
|
4
|
+
/***/ 41832:
|
|
5
5
|
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
|
|
6
6
|
|
|
7
7
|
|
|
@@ -12,16 +12,16 @@ __webpack_require__.d(__webpack_exports__, {
|
|
|
12
12
|
});
|
|
13
13
|
|
|
14
14
|
// EXTERNAL MODULE: ../../../node_modules/react/index.js
|
|
15
|
-
var react = __webpack_require__(
|
|
15
|
+
var react = __webpack_require__(43001);
|
|
16
16
|
// EXTERNAL MODULE: ../../../node_modules/prop-types/index.js
|
|
17
|
-
var prop_types = __webpack_require__(
|
|
17
|
+
var prop_types = __webpack_require__(3827);
|
|
18
18
|
var prop_types_default = /*#__PURE__*/__webpack_require__.n(prop_types);
|
|
19
19
|
// EXTERNAL MODULE: ../../../node_modules/xstate/es/index.js + 22 modules
|
|
20
|
-
var es = __webpack_require__(
|
|
21
|
-
// EXTERNAL MODULE: ../../../node_modules/@xstate/react/
|
|
22
|
-
var
|
|
23
|
-
// EXTERNAL MODULE: ../../ui/src/index.js +
|
|
24
|
-
var src = __webpack_require__(
|
|
20
|
+
var es = __webpack_require__(261);
|
|
21
|
+
// EXTERNAL MODULE: ../../../node_modules/@xstate/react/es/index.js + 8 modules
|
|
22
|
+
var react_es = __webpack_require__(44530);
|
|
23
|
+
// EXTERNAL MODULE: ../../ui/src/index.js + 485 modules
|
|
24
|
+
var src = __webpack_require__(71783);
|
|
25
25
|
;// CONCATENATED MODULE: ../../../extensions/measurement-tracking/src/contexts/TrackedMeasurementsContext/measurementTrackingMachine.js
|
|
26
26
|
|
|
27
27
|
const RESPONSE = {
|
|
@@ -37,6 +37,7 @@ const machineConfiguration = {
|
|
|
37
37
|
id: 'measurementTracking',
|
|
38
38
|
initial: 'idle',
|
|
39
39
|
context: {
|
|
40
|
+
activeViewportId: null,
|
|
40
41
|
trackedStudy: '',
|
|
41
42
|
trackedSeries: [],
|
|
42
43
|
ignoredSeries: [],
|
|
@@ -66,7 +67,12 @@ const machineConfiguration = {
|
|
|
66
67
|
cond: 'hasNotIgnoredSRSeriesForHydration'
|
|
67
68
|
},
|
|
68
69
|
RESTORE_PROMPT_HYDRATE_SR: 'promptHydrateStructuredReport',
|
|
69
|
-
HYDRATE_SR: 'hydrateStructuredReport'
|
|
70
|
+
HYDRATE_SR: 'hydrateStructuredReport',
|
|
71
|
+
UPDATE_ACTIVE_VIEWPORT_ID: {
|
|
72
|
+
actions: (0,es/* assign */.f0)({
|
|
73
|
+
activeViewportId: (_, event) => event.activeViewportId
|
|
74
|
+
})
|
|
75
|
+
}
|
|
70
76
|
}
|
|
71
77
|
},
|
|
72
78
|
promptBeginTracking: {
|
|
@@ -247,7 +253,7 @@ const defaultOptions = {
|
|
|
247
253
|
showStructuredReportDisplaySetInActiveViewport: (ctx, evt) => {
|
|
248
254
|
console.warn('showStructuredReportDisplaySetInActiveViewport: not implemented');
|
|
249
255
|
},
|
|
250
|
-
clearContext: (0,es
|
|
256
|
+
clearContext: (0,es/* assign */.f0)({
|
|
251
257
|
trackedStudy: '',
|
|
252
258
|
trackedSeries: [],
|
|
253
259
|
ignoredSeries: [],
|
|
@@ -256,7 +262,7 @@ const defaultOptions = {
|
|
|
256
262
|
prevIgnoredSeries: []
|
|
257
263
|
}),
|
|
258
264
|
// Promise resolves w/ `evt.data.*`
|
|
259
|
-
setTrackedStudyAndSeries: (0,es
|
|
265
|
+
setTrackedStudyAndSeries: (0,es/* assign */.f0)((ctx, evt) => ({
|
|
260
266
|
prevTrackedStudy: ctx.trackedStudy,
|
|
261
267
|
prevTrackedSeries: ctx.trackedSeries.slice(),
|
|
262
268
|
prevIgnoredSeries: ctx.ignoredSeries.slice(),
|
|
@@ -265,7 +271,7 @@ const defaultOptions = {
|
|
|
265
271
|
trackedSeries: [evt.data.SeriesInstanceUID],
|
|
266
272
|
ignoredSeries: []
|
|
267
273
|
})),
|
|
268
|
-
setTrackedStudyAndMultipleSeries: (0,es
|
|
274
|
+
setTrackedStudyAndMultipleSeries: (0,es/* assign */.f0)((ctx, evt) => {
|
|
269
275
|
const studyInstanceUID = evt.StudyInstanceUID || evt.data.StudyInstanceUID;
|
|
270
276
|
const seriesInstanceUIDs = evt.SeriesInstanceUIDs || evt.data.SeriesInstanceUIDs;
|
|
271
277
|
return {
|
|
@@ -278,24 +284,24 @@ const defaultOptions = {
|
|
|
278
284
|
ignoredSeries: []
|
|
279
285
|
};
|
|
280
286
|
}),
|
|
281
|
-
setIsDirtyToClean: (0,es
|
|
287
|
+
setIsDirtyToClean: (0,es/* assign */.f0)((ctx, evt) => ({
|
|
282
288
|
isDirty: false
|
|
283
289
|
})),
|
|
284
|
-
setIsDirty: (0,es
|
|
290
|
+
setIsDirty: (0,es/* assign */.f0)((ctx, evt) => ({
|
|
285
291
|
isDirty: true
|
|
286
292
|
})),
|
|
287
|
-
ignoreSeries: (0,es
|
|
293
|
+
ignoreSeries: (0,es/* assign */.f0)((ctx, evt) => ({
|
|
288
294
|
prevIgnoredSeries: [...ctx.ignoredSeries],
|
|
289
295
|
ignoredSeries: [...ctx.ignoredSeries, evt.data.SeriesInstanceUID]
|
|
290
296
|
})),
|
|
291
|
-
ignoreHydrationForSRSeries: (0,es
|
|
297
|
+
ignoreHydrationForSRSeries: (0,es/* assign */.f0)((ctx, evt) => ({
|
|
292
298
|
ignoredSRSeriesForHydration: [...ctx.ignoredSRSeriesForHydration, evt.data.srSeriesInstanceUID]
|
|
293
299
|
})),
|
|
294
|
-
addTrackedSeries: (0,es
|
|
300
|
+
addTrackedSeries: (0,es/* assign */.f0)((ctx, evt) => ({
|
|
295
301
|
prevTrackedSeries: [...ctx.trackedSeries],
|
|
296
302
|
trackedSeries: [...ctx.trackedSeries, evt.data.SeriesInstanceUID]
|
|
297
303
|
})),
|
|
298
|
-
removeTrackedSeries: (0,es
|
|
304
|
+
removeTrackedSeries: (0,es/* assign */.f0)((ctx, evt) => ({
|
|
299
305
|
prevTrackedSeries: ctx.trackedSeries.slice().filter(ser => ser !== evt.SeriesInstanceUID),
|
|
300
306
|
trackedSeries: ctx.trackedSeries.slice().filter(ser => ser !== evt.SeriesInstanceUID)
|
|
301
307
|
}))
|
|
@@ -362,36 +368,36 @@ function promptBeginTracking(_ref, ctx, evt) {
|
|
|
362
368
|
uiViewportDialogService
|
|
363
369
|
} = servicesManager.services;
|
|
364
370
|
const {
|
|
365
|
-
|
|
371
|
+
viewportId,
|
|
366
372
|
StudyInstanceUID,
|
|
367
373
|
SeriesInstanceUID
|
|
368
374
|
} = evt;
|
|
369
375
|
return new Promise(async function (resolve, reject) {
|
|
370
|
-
let promptResult = await _askTrackMeasurements(uiViewportDialogService,
|
|
376
|
+
let promptResult = await _askTrackMeasurements(uiViewportDialogService, viewportId);
|
|
371
377
|
resolve({
|
|
372
378
|
userResponse: promptResult,
|
|
373
379
|
StudyInstanceUID,
|
|
374
380
|
SeriesInstanceUID,
|
|
375
|
-
|
|
381
|
+
viewportId
|
|
376
382
|
});
|
|
377
383
|
});
|
|
378
384
|
}
|
|
379
|
-
function _askTrackMeasurements(uiViewportDialogService,
|
|
385
|
+
function _askTrackMeasurements(uiViewportDialogService, viewportId) {
|
|
380
386
|
return new Promise(function (resolve, reject) {
|
|
381
387
|
const message = 'Track measurements for this series?';
|
|
382
388
|
const actions = [{
|
|
383
389
|
id: 'prompt-begin-tracking-cancel',
|
|
384
|
-
type: src/* ButtonEnums.type */.LZ.
|
|
390
|
+
type: src/* ButtonEnums.type */.LZ.dt.secondary,
|
|
385
391
|
text: 'No',
|
|
386
392
|
value: promptBeginTracking_RESPONSE.CANCEL
|
|
387
393
|
}, {
|
|
388
394
|
id: 'prompt-begin-tracking-no-do-not-ask-again',
|
|
389
|
-
type: src/* ButtonEnums.type */.LZ.
|
|
395
|
+
type: src/* ButtonEnums.type */.LZ.dt.secondary,
|
|
390
396
|
text: 'No, do not ask again',
|
|
391
397
|
value: promptBeginTracking_RESPONSE.NO_NEVER
|
|
392
398
|
}, {
|
|
393
399
|
id: 'prompt-begin-tracking-yes',
|
|
394
|
-
type: src/* ButtonEnums.type */.LZ.
|
|
400
|
+
type: src/* ButtonEnums.type */.LZ.dt.primary,
|
|
395
401
|
text: 'Yes',
|
|
396
402
|
value: promptBeginTracking_RESPONSE.SET_STUDY_AND_SERIES
|
|
397
403
|
}];
|
|
@@ -400,7 +406,7 @@ function _askTrackMeasurements(uiViewportDialogService, viewportIndex) {
|
|
|
400
406
|
resolve(result);
|
|
401
407
|
};
|
|
402
408
|
uiViewportDialogService.show({
|
|
403
|
-
|
|
409
|
+
viewportId,
|
|
404
410
|
id: 'measurement-tracking-prompt-begin-tracking',
|
|
405
411
|
type: 'info',
|
|
406
412
|
message,
|
|
@@ -433,37 +439,37 @@ function promptTrackNewSeries(_ref, ctx, evt) {
|
|
|
433
439
|
UIViewportDialogService
|
|
434
440
|
} = servicesManager.services;
|
|
435
441
|
const {
|
|
436
|
-
|
|
442
|
+
viewportId,
|
|
437
443
|
StudyInstanceUID,
|
|
438
444
|
SeriesInstanceUID
|
|
439
445
|
} = evt;
|
|
440
446
|
return new Promise(async function (resolve, reject) {
|
|
441
|
-
let promptResult = await _askShouldAddMeasurements(UIViewportDialogService,
|
|
447
|
+
let promptResult = await _askShouldAddMeasurements(UIViewportDialogService, viewportId);
|
|
442
448
|
if (promptResult === promptTrackNewSeries_RESPONSE.CREATE_REPORT) {
|
|
443
|
-
promptResult = ctx.isDirty ? await _askSaveDiscardOrCancel(UIViewportDialogService,
|
|
449
|
+
promptResult = ctx.isDirty ? await _askSaveDiscardOrCancel(UIViewportDialogService, viewportId) : promptTrackNewSeries_RESPONSE.SET_STUDY_AND_SERIES;
|
|
444
450
|
}
|
|
445
451
|
resolve({
|
|
446
452
|
userResponse: promptResult,
|
|
447
453
|
StudyInstanceUID,
|
|
448
454
|
SeriesInstanceUID,
|
|
449
|
-
|
|
455
|
+
viewportId,
|
|
450
456
|
isBackupSave: false
|
|
451
457
|
});
|
|
452
458
|
});
|
|
453
459
|
}
|
|
454
|
-
function _askShouldAddMeasurements(uiViewportDialogService,
|
|
460
|
+
function _askShouldAddMeasurements(uiViewportDialogService, viewportId) {
|
|
455
461
|
return new Promise(function (resolve, reject) {
|
|
456
462
|
const message = 'Do you want to add this measurement to the existing report?';
|
|
457
463
|
const actions = [{
|
|
458
|
-
type: src/* ButtonEnums.type */.LZ.
|
|
464
|
+
type: src/* ButtonEnums.type */.LZ.dt.secondary,
|
|
459
465
|
text: 'Cancel',
|
|
460
466
|
value: promptTrackNewSeries_RESPONSE.CANCEL
|
|
461
467
|
}, {
|
|
462
|
-
type: src/* ButtonEnums.type */.LZ.
|
|
468
|
+
type: src/* ButtonEnums.type */.LZ.dt.primary,
|
|
463
469
|
text: 'Create new report',
|
|
464
470
|
value: promptTrackNewSeries_RESPONSE.CREATE_REPORT
|
|
465
471
|
}, {
|
|
466
|
-
type: src/* ButtonEnums.type */.LZ.
|
|
472
|
+
type: src/* ButtonEnums.type */.LZ.dt.primary,
|
|
467
473
|
text: 'Add to existing report',
|
|
468
474
|
value: promptTrackNewSeries_RESPONSE.ADD_SERIES
|
|
469
475
|
}];
|
|
@@ -472,7 +478,7 @@ function _askShouldAddMeasurements(uiViewportDialogService, viewportIndex) {
|
|
|
472
478
|
resolve(result);
|
|
473
479
|
};
|
|
474
480
|
uiViewportDialogService.show({
|
|
475
|
-
|
|
481
|
+
viewportId,
|
|
476
482
|
type: 'info',
|
|
477
483
|
message,
|
|
478
484
|
actions,
|
|
@@ -484,7 +490,7 @@ function _askShouldAddMeasurements(uiViewportDialogService, viewportIndex) {
|
|
|
484
490
|
});
|
|
485
491
|
});
|
|
486
492
|
}
|
|
487
|
-
function _askSaveDiscardOrCancel(UIViewportDialogService,
|
|
493
|
+
function _askSaveDiscardOrCancel(UIViewportDialogService, viewportId) {
|
|
488
494
|
return new Promise(function (resolve, reject) {
|
|
489
495
|
const message = 'You have existing tracked measurements. What would you like to do with your existing tracked measurements?';
|
|
490
496
|
const actions = [{
|
|
@@ -505,7 +511,7 @@ function _askSaveDiscardOrCancel(UIViewportDialogService, viewportIndex) {
|
|
|
505
511
|
resolve(result);
|
|
506
512
|
};
|
|
507
513
|
UIViewportDialogService.show({
|
|
508
|
-
|
|
514
|
+
viewportId,
|
|
509
515
|
type: 'warning',
|
|
510
516
|
message,
|
|
511
517
|
actions,
|
|
@@ -536,25 +542,25 @@ function promptTrackNewStudy(_ref, ctx, evt) {
|
|
|
536
542
|
UIViewportDialogService
|
|
537
543
|
} = servicesManager.services;
|
|
538
544
|
const {
|
|
539
|
-
|
|
545
|
+
viewportId,
|
|
540
546
|
StudyInstanceUID,
|
|
541
547
|
SeriesInstanceUID
|
|
542
548
|
} = evt;
|
|
543
549
|
return new Promise(async function (resolve, reject) {
|
|
544
|
-
let promptResult = await promptTrackNewStudy_askTrackMeasurements(UIViewportDialogService,
|
|
550
|
+
let promptResult = await promptTrackNewStudy_askTrackMeasurements(UIViewportDialogService, viewportId);
|
|
545
551
|
if (promptResult === promptTrackNewStudy_RESPONSE.SET_STUDY_AND_SERIES) {
|
|
546
|
-
promptResult = ctx.isDirty ? await promptTrackNewStudy_askSaveDiscardOrCancel(UIViewportDialogService,
|
|
552
|
+
promptResult = ctx.isDirty ? await promptTrackNewStudy_askSaveDiscardOrCancel(UIViewportDialogService, viewportId) : promptTrackNewStudy_RESPONSE.SET_STUDY_AND_SERIES;
|
|
547
553
|
}
|
|
548
554
|
resolve({
|
|
549
555
|
userResponse: promptResult,
|
|
550
556
|
StudyInstanceUID,
|
|
551
557
|
SeriesInstanceUID,
|
|
552
|
-
|
|
558
|
+
viewportId,
|
|
553
559
|
isBackupSave: false
|
|
554
560
|
});
|
|
555
561
|
});
|
|
556
562
|
}
|
|
557
|
-
function promptTrackNewStudy_askTrackMeasurements(UIViewportDialogService,
|
|
563
|
+
function promptTrackNewStudy_askTrackMeasurements(UIViewportDialogService, viewportId) {
|
|
558
564
|
return new Promise(function (resolve, reject) {
|
|
559
565
|
const message = 'Track measurements for this series?';
|
|
560
566
|
const actions = [{
|
|
@@ -575,7 +581,7 @@ function promptTrackNewStudy_askTrackMeasurements(UIViewportDialogService, viewp
|
|
|
575
581
|
resolve(result);
|
|
576
582
|
};
|
|
577
583
|
UIViewportDialogService.show({
|
|
578
|
-
|
|
584
|
+
viewportId,
|
|
579
585
|
type: 'info',
|
|
580
586
|
message,
|
|
581
587
|
actions,
|
|
@@ -587,7 +593,7 @@ function promptTrackNewStudy_askTrackMeasurements(UIViewportDialogService, viewp
|
|
|
587
593
|
});
|
|
588
594
|
});
|
|
589
595
|
}
|
|
590
|
-
function promptTrackNewStudy_askSaveDiscardOrCancel(UIViewportDialogService,
|
|
596
|
+
function promptTrackNewStudy_askSaveDiscardOrCancel(UIViewportDialogService, viewportId) {
|
|
591
597
|
return new Promise(function (resolve, reject) {
|
|
592
598
|
const message = 'Measurements cannot span across multiple studies. Do you want to save your tracked measurements?';
|
|
593
599
|
const actions = [{
|
|
@@ -608,7 +614,7 @@ function promptTrackNewStudy_askSaveDiscardOrCancel(UIViewportDialogService, vie
|
|
|
608
614
|
resolve(result);
|
|
609
615
|
};
|
|
610
616
|
UIViewportDialogService.show({
|
|
611
|
-
|
|
617
|
+
viewportId,
|
|
612
618
|
type: 'warning',
|
|
613
619
|
message,
|
|
614
620
|
actions,
|
|
@@ -621,70 +627,17 @@ function promptTrackNewStudy_askSaveDiscardOrCancel(UIViewportDialogService, vie
|
|
|
621
627
|
});
|
|
622
628
|
}
|
|
623
629
|
/* harmony default export */ const TrackedMeasurementsContext_promptTrackNewStudy = (promptTrackNewStudy);
|
|
624
|
-
// EXTERNAL MODULE:
|
|
625
|
-
var
|
|
626
|
-
;// CONCATENATED MODULE: ../../../extensions/measurement-tracking/src/_shared/
|
|
627
|
-
|
|
628
|
-
|
|
629
|
-
|
|
630
|
-
|
|
631
|
-
|
|
632
|
-
|
|
633
|
-
|
|
634
|
-
* @param {*} measurements
|
|
635
|
-
* @param {*} options
|
|
636
|
-
* @returns {string[]} displaySetInstanceUIDs
|
|
637
|
-
*/
|
|
638
|
-
async function createReportAsync(servicesManager, commandsManager, dataSource, measurements, options) {
|
|
639
|
-
const {
|
|
640
|
-
displaySetService,
|
|
641
|
-
uiNotificationService,
|
|
642
|
-
uiDialogService
|
|
643
|
-
} = servicesManager.services;
|
|
644
|
-
const loadingDialogId = uiDialogService.create({
|
|
645
|
-
showOverlay: true,
|
|
646
|
-
isDraggable: false,
|
|
647
|
-
centralize: true,
|
|
648
|
-
// TODO: Create a loading indicator component + zeplin design?
|
|
649
|
-
content: Loading
|
|
650
|
-
});
|
|
651
|
-
try {
|
|
652
|
-
const naturalizedReport = await commandsManager.runCommand('storeMeasurements', {
|
|
653
|
-
measurementData: measurements,
|
|
654
|
-
dataSource,
|
|
655
|
-
additionalFindingTypes: ['ArrowAnnotate'],
|
|
656
|
-
options
|
|
657
|
-
}, 'CORNERSTONE_STRUCTURED_REPORT');
|
|
658
|
-
|
|
659
|
-
// The "Mode" route listens for DicomMetadataStore changes
|
|
660
|
-
// When a new instance is added, it listens and
|
|
661
|
-
// automatically calls makeDisplaySets
|
|
662
|
-
core_src.DicomMetadataStore.addInstances([naturalizedReport], true);
|
|
663
|
-
const displaySetInstanceUID = displaySetService.getMostRecentDisplaySet();
|
|
664
|
-
uiNotificationService.show({
|
|
665
|
-
title: 'Create Report',
|
|
666
|
-
message: 'Measurements saved successfully',
|
|
667
|
-
type: 'success'
|
|
668
|
-
});
|
|
669
|
-
return [displaySetInstanceUID];
|
|
670
|
-
} catch (error) {
|
|
671
|
-
uiNotificationService.show({
|
|
672
|
-
title: 'Create Report',
|
|
673
|
-
message: error.message || 'Failed to store measurements',
|
|
674
|
-
type: 'error'
|
|
675
|
-
});
|
|
676
|
-
} finally {
|
|
677
|
-
uiDialogService.dismiss({
|
|
678
|
-
id: loadingDialogId
|
|
679
|
-
});
|
|
680
|
-
}
|
|
681
|
-
}
|
|
682
|
-
function Loading() {
|
|
683
|
-
return /*#__PURE__*/react.createElement("div", {
|
|
684
|
-
className: "text-primary-active"
|
|
685
|
-
}, "Loading...");
|
|
630
|
+
// EXTERNAL MODULE: ../../../extensions/default/src/index.ts + 76 modules
|
|
631
|
+
var default_src = __webpack_require__(56342);
|
|
632
|
+
;// CONCATENATED MODULE: ../../../extensions/measurement-tracking/src/_shared/getNextSRSeriesNumber.js
|
|
633
|
+
const MIN_SR_SERIES_NUMBER = 4700;
|
|
634
|
+
function getNextSRSeriesNumber(displaySetService) {
|
|
635
|
+
const activeDisplaySets = displaySetService.getActiveDisplaySets();
|
|
636
|
+
const srDisplaySets = activeDisplaySets.filter(ds => ds.Modality === 'SR');
|
|
637
|
+
const srSeriesNumbers = srDisplaySets.map(ds => ds.SeriesNumber);
|
|
638
|
+
const maxSeriesNumber = Math.max(...srSeriesNumbers, MIN_SR_SERIES_NUMBER);
|
|
639
|
+
return maxSeriesNumber + 1;
|
|
686
640
|
}
|
|
687
|
-
/* harmony default export */ const _shared_createReportAsync = (createReportAsync);
|
|
688
641
|
;// CONCATENATED MODULE: ../../../extensions/measurement-tracking/src/_shared/PROMPT_RESPONSES.js
|
|
689
642
|
const PROMPT_RESPONSES_RESPONSE = {
|
|
690
643
|
NO_NEVER: -1,
|
|
@@ -695,138 +648,10 @@ const PROMPT_RESPONSES_RESPONSE = {
|
|
|
695
648
|
NO_NOT_FOR_SERIES: 4
|
|
696
649
|
};
|
|
697
650
|
/* harmony default export */ const PROMPT_RESPONSES = (PROMPT_RESPONSES_RESPONSE);
|
|
698
|
-
;// CONCATENATED MODULE: ../../../extensions/measurement-tracking/src/_shared/createReportDialogPrompt.tsx
|
|
699
|
-
/* eslint-disable react/display-name */
|
|
700
|
-
|
|
701
|
-
|
|
702
|
-
|
|
703
|
-
function createReportDialogPrompt(uiDialogService) {
|
|
704
|
-
return new Promise(function (resolve, reject) {
|
|
705
|
-
let dialogId = undefined;
|
|
706
|
-
const _handleClose = () => {
|
|
707
|
-
// Dismiss dialog
|
|
708
|
-
uiDialogService.dismiss({
|
|
709
|
-
id: dialogId
|
|
710
|
-
});
|
|
711
|
-
// Notify of cancel action
|
|
712
|
-
resolve({
|
|
713
|
-
action: PROMPT_RESPONSES.CANCEL,
|
|
714
|
-
value: undefined
|
|
715
|
-
});
|
|
716
|
-
};
|
|
717
|
-
|
|
718
|
-
/**
|
|
719
|
-
*
|
|
720
|
-
* @param {string} param0.action - value of action performed
|
|
721
|
-
* @param {string} param0.value - value from input field
|
|
722
|
-
*/
|
|
723
|
-
const _handleFormSubmit = _ref => {
|
|
724
|
-
let {
|
|
725
|
-
action,
|
|
726
|
-
value
|
|
727
|
-
} = _ref;
|
|
728
|
-
switch (action.id) {
|
|
729
|
-
case 'save':
|
|
730
|
-
// Only save if description is not blank otherwise ignore
|
|
731
|
-
if (value.label && value.label.trim() !== '') {
|
|
732
|
-
resolve({
|
|
733
|
-
action: PROMPT_RESPONSES.CREATE_REPORT,
|
|
734
|
-
value: value.label.trim()
|
|
735
|
-
});
|
|
736
|
-
uiDialogService.dismiss({
|
|
737
|
-
id: dialogId
|
|
738
|
-
});
|
|
739
|
-
}
|
|
740
|
-
break;
|
|
741
|
-
case 'cancel':
|
|
742
|
-
uiDialogService.dismiss({
|
|
743
|
-
id: dialogId
|
|
744
|
-
});
|
|
745
|
-
resolve({
|
|
746
|
-
action: PROMPT_RESPONSES.CANCEL,
|
|
747
|
-
value: undefined
|
|
748
|
-
});
|
|
749
|
-
break;
|
|
750
|
-
}
|
|
751
|
-
};
|
|
752
|
-
dialogId = uiDialogService.create({
|
|
753
|
-
centralize: true,
|
|
754
|
-
isDraggable: false,
|
|
755
|
-
content: src/* Dialog */.Vq,
|
|
756
|
-
useLastPosition: false,
|
|
757
|
-
showOverlay: true,
|
|
758
|
-
contentProps: {
|
|
759
|
-
title: 'Create Report',
|
|
760
|
-
value: {
|
|
761
|
-
label: ''
|
|
762
|
-
},
|
|
763
|
-
noCloseButton: true,
|
|
764
|
-
onClose: _handleClose,
|
|
765
|
-
actions: [{
|
|
766
|
-
id: 'cancel',
|
|
767
|
-
text: 'Cancel',
|
|
768
|
-
type: src/* ButtonEnums.type */.LZ.U.secondary
|
|
769
|
-
}, {
|
|
770
|
-
id: 'save',
|
|
771
|
-
text: 'Save',
|
|
772
|
-
type: src/* ButtonEnums.type */.LZ.U.primary
|
|
773
|
-
}],
|
|
774
|
-
// TODO: Should be on button press...
|
|
775
|
-
onSubmit: _handleFormSubmit,
|
|
776
|
-
body: _ref2 => {
|
|
777
|
-
let {
|
|
778
|
-
value,
|
|
779
|
-
setValue
|
|
780
|
-
} = _ref2;
|
|
781
|
-
const onChangeHandler = event => {
|
|
782
|
-
event.persist();
|
|
783
|
-
setValue(value => ({
|
|
784
|
-
...value,
|
|
785
|
-
label: event.target.value
|
|
786
|
-
}));
|
|
787
|
-
};
|
|
788
|
-
const onKeyPressHandler = event => {
|
|
789
|
-
if (event.key === 'Enter') {
|
|
790
|
-
// Trigger form submit
|
|
791
|
-
_handleFormSubmit({
|
|
792
|
-
action: {
|
|
793
|
-
id: 'save'
|
|
794
|
-
},
|
|
795
|
-
value
|
|
796
|
-
});
|
|
797
|
-
}
|
|
798
|
-
};
|
|
799
|
-
return /*#__PURE__*/react.createElement("div", {
|
|
800
|
-
className: ""
|
|
801
|
-
}, /*#__PURE__*/react.createElement(src/* Input */.II, {
|
|
802
|
-
label: "Enter the report name",
|
|
803
|
-
labelClassName: "text-white grow leading-[1.2] text-[14px]",
|
|
804
|
-
autoFocus: true,
|
|
805
|
-
className: "bg-black border-primary-main grow",
|
|
806
|
-
type: "text",
|
|
807
|
-
value: value.label,
|
|
808
|
-
onChange: onChangeHandler,
|
|
809
|
-
onKeyPress: onKeyPressHandler
|
|
810
|
-
}));
|
|
811
|
-
}
|
|
812
|
-
}
|
|
813
|
-
});
|
|
814
|
-
});
|
|
815
|
-
}
|
|
816
|
-
;// CONCATENATED MODULE: ../../../extensions/measurement-tracking/src/_shared/getNextSRSeriesNumber.js
|
|
817
|
-
const MIN_SR_SERIES_NUMBER = 4700;
|
|
818
|
-
function getNextSRSeriesNumber(displaySetService) {
|
|
819
|
-
const activeDisplaySets = displaySetService.getActiveDisplaySets();
|
|
820
|
-
const srDisplaySets = activeDisplaySets.filter(ds => ds.Modality === 'SR');
|
|
821
|
-
const srSeriesNumbers = srDisplaySets.map(ds => ds.SeriesNumber);
|
|
822
|
-
const maxSeriesNumber = Math.max(...srSeriesNumbers, MIN_SR_SERIES_NUMBER);
|
|
823
|
-
return maxSeriesNumber + 1;
|
|
824
|
-
}
|
|
825
651
|
;// CONCATENATED MODULE: ../../../extensions/measurement-tracking/src/contexts/TrackedMeasurementsContext/promptSaveReport.js
|
|
826
652
|
|
|
827
653
|
|
|
828
654
|
|
|
829
|
-
|
|
830
655
|
function promptSaveReport(_ref, ctx, evt) {
|
|
831
656
|
let {
|
|
832
657
|
servicesManager,
|
|
@@ -838,7 +663,7 @@ function promptSaveReport(_ref, ctx, evt) {
|
|
|
838
663
|
measurementService,
|
|
839
664
|
displaySetService
|
|
840
665
|
} = servicesManager.services;
|
|
841
|
-
const
|
|
666
|
+
const viewportId = evt.viewportId === undefined ? evt.data.viewportId : evt.viewportId;
|
|
842
667
|
const isBackupSave = evt.isBackupSave === undefined ? evt.data.isBackupSave : evt.isBackupSave;
|
|
843
668
|
const StudyInstanceUID = evt?.data?.StudyInstanceUID;
|
|
844
669
|
const SeriesInstanceUID = evt?.data?.SeriesInstanceUID;
|
|
@@ -849,7 +674,9 @@ function promptSaveReport(_ref, ctx, evt) {
|
|
|
849
674
|
let displaySetInstanceUIDs;
|
|
850
675
|
return new Promise(async function (resolve, reject) {
|
|
851
676
|
// TODO: Fallback if (uiDialogService) {
|
|
852
|
-
const promptResult = await createReportDialogPrompt(uiDialogService
|
|
677
|
+
const promptResult = await (0,default_src.createReportDialogPrompt)(uiDialogService, {
|
|
678
|
+
extensionManager
|
|
679
|
+
});
|
|
853
680
|
if (promptResult.action === PROMPT_RESPONSES.CREATE_REPORT) {
|
|
854
681
|
const dataSources = extensionManager.getDataSources();
|
|
855
682
|
const dataSource = dataSources[0];
|
|
@@ -861,9 +688,20 @@ function promptSaveReport(_ref, ctx, evt) {
|
|
|
861
688
|
: promptResult.value; // provided value
|
|
862
689
|
|
|
863
690
|
const SeriesNumber = getNextSRSeriesNumber(displaySetService);
|
|
864
|
-
|
|
865
|
-
|
|
866
|
-
|
|
691
|
+
const getReport = async () => {
|
|
692
|
+
return commandsManager.runCommand('storeMeasurements', {
|
|
693
|
+
measurementData: trackedMeasurements,
|
|
694
|
+
dataSource,
|
|
695
|
+
additionalFindingTypes: ['ArrowAnnotate'],
|
|
696
|
+
options: {
|
|
697
|
+
SeriesDescription,
|
|
698
|
+
SeriesNumber
|
|
699
|
+
}
|
|
700
|
+
}, 'CORNERSTONE_STRUCTURED_REPORT');
|
|
701
|
+
};
|
|
702
|
+
displaySetInstanceUIDs = await (0,default_src.createReportAsync)({
|
|
703
|
+
servicesManager,
|
|
704
|
+
getReport
|
|
867
705
|
});
|
|
868
706
|
} else if (promptResult.action === PROMPT_RESPONSES.CANCEL) {
|
|
869
707
|
// Do nothing
|
|
@@ -873,14 +711,14 @@ function promptSaveReport(_ref, ctx, evt) {
|
|
|
873
711
|
createdDisplaySetInstanceUIDs: displaySetInstanceUIDs,
|
|
874
712
|
StudyInstanceUID,
|
|
875
713
|
SeriesInstanceUID,
|
|
876
|
-
|
|
714
|
+
viewportId,
|
|
877
715
|
isBackupSave
|
|
878
716
|
});
|
|
879
717
|
});
|
|
880
718
|
}
|
|
881
719
|
/* harmony default export */ const TrackedMeasurementsContext_promptSaveReport = (promptSaveReport);
|
|
882
720
|
// EXTERNAL MODULE: ../../../extensions/cornerstone-dicom-sr/src/index.tsx + 15 modules
|
|
883
|
-
var cornerstone_dicom_sr_src = __webpack_require__(
|
|
721
|
+
var cornerstone_dicom_sr_src = __webpack_require__(42170);
|
|
884
722
|
;// CONCATENATED MODULE: ../../../extensions/measurement-tracking/src/contexts/TrackedMeasurementsContext/promptHydrateStructuredReport.js
|
|
885
723
|
|
|
886
724
|
|
|
@@ -896,19 +734,20 @@ const promptHydrateStructuredReport_RESPONSE = {
|
|
|
896
734
|
function promptHydrateStructuredReport(_ref, ctx, evt) {
|
|
897
735
|
let {
|
|
898
736
|
servicesManager,
|
|
899
|
-
extensionManager
|
|
737
|
+
extensionManager,
|
|
738
|
+
appConfig
|
|
900
739
|
} = _ref;
|
|
901
740
|
const {
|
|
902
741
|
uiViewportDialogService,
|
|
903
742
|
displaySetService
|
|
904
743
|
} = servicesManager.services;
|
|
905
744
|
const {
|
|
906
|
-
|
|
745
|
+
viewportId,
|
|
907
746
|
displaySetInstanceUID
|
|
908
747
|
} = evt;
|
|
909
748
|
const srDisplaySet = displaySetService.getDisplaySetByUID(displaySetInstanceUID);
|
|
910
749
|
return new Promise(async function (resolve, reject) {
|
|
911
|
-
const promptResult = await promptHydrateStructuredReport_askTrackMeasurements(uiViewportDialogService,
|
|
750
|
+
const promptResult = await promptHydrateStructuredReport_askTrackMeasurements(uiViewportDialogService, viewportId);
|
|
912
751
|
|
|
913
752
|
// Need to do action here... So we can set state...
|
|
914
753
|
let StudyInstanceUID, SeriesInstanceUIDs;
|
|
@@ -916,7 +755,8 @@ function promptHydrateStructuredReport(_ref, ctx, evt) {
|
|
|
916
755
|
console.warn('!! HYDRATING STRUCTURED REPORT');
|
|
917
756
|
const hydrationResult = (0,cornerstone_dicom_sr_src.hydrateStructuredReport)({
|
|
918
757
|
servicesManager,
|
|
919
|
-
extensionManager
|
|
758
|
+
extensionManager,
|
|
759
|
+
appConfig
|
|
920
760
|
}, displaySetInstanceUID);
|
|
921
761
|
StudyInstanceUID = hydrationResult.StudyInstanceUID;
|
|
922
762
|
SeriesInstanceUIDs = hydrationResult.SeriesInstanceUIDs;
|
|
@@ -925,21 +765,21 @@ function promptHydrateStructuredReport(_ref, ctx, evt) {
|
|
|
925
765
|
userResponse: promptResult,
|
|
926
766
|
displaySetInstanceUID: evt.displaySetInstanceUID,
|
|
927
767
|
srSeriesInstanceUID: srDisplaySet.SeriesInstanceUID,
|
|
928
|
-
|
|
768
|
+
viewportId,
|
|
929
769
|
StudyInstanceUID,
|
|
930
770
|
SeriesInstanceUIDs
|
|
931
771
|
});
|
|
932
772
|
});
|
|
933
773
|
}
|
|
934
|
-
function promptHydrateStructuredReport_askTrackMeasurements(uiViewportDialogService,
|
|
774
|
+
function promptHydrateStructuredReport_askTrackMeasurements(uiViewportDialogService, viewportId) {
|
|
935
775
|
return new Promise(function (resolve, reject) {
|
|
936
776
|
const message = 'Do you want to continue tracking measurements for this study?';
|
|
937
777
|
const actions = [{
|
|
938
|
-
type: src/* ButtonEnums.type */.LZ.
|
|
778
|
+
type: src/* ButtonEnums.type */.LZ.dt.secondary,
|
|
939
779
|
text: 'No',
|
|
940
780
|
value: promptHydrateStructuredReport_RESPONSE.CANCEL
|
|
941
781
|
}, {
|
|
942
|
-
type: src/* ButtonEnums.type */.LZ.
|
|
782
|
+
type: src/* ButtonEnums.type */.LZ.dt.primary,
|
|
943
783
|
text: 'Yes',
|
|
944
784
|
value: promptHydrateStructuredReport_RESPONSE.HYDRATE_REPORT
|
|
945
785
|
}];
|
|
@@ -948,7 +788,7 @@ function promptHydrateStructuredReport_askTrackMeasurements(uiViewportDialogServ
|
|
|
948
788
|
resolve(result);
|
|
949
789
|
};
|
|
950
790
|
uiViewportDialogService.show({
|
|
951
|
-
|
|
791
|
+
viewportId,
|
|
952
792
|
type: 'info',
|
|
953
793
|
message,
|
|
954
794
|
actions,
|
|
@@ -972,7 +812,7 @@ function hydrateStructuredReport(_ref, ctx, evt) {
|
|
|
972
812
|
displaySetService
|
|
973
813
|
} = servicesManager.services;
|
|
974
814
|
const {
|
|
975
|
-
|
|
815
|
+
viewportId,
|
|
976
816
|
displaySetInstanceUID
|
|
977
817
|
} = evt;
|
|
978
818
|
const srDisplaySet = displaySetService.getDisplaySetByUID(displaySetInstanceUID);
|
|
@@ -986,13 +826,15 @@ function hydrateStructuredReport(_ref, ctx, evt) {
|
|
|
986
826
|
resolve({
|
|
987
827
|
displaySetInstanceUID: evt.displaySetInstanceUID,
|
|
988
828
|
srSeriesInstanceUID: srDisplaySet.SeriesInstanceUID,
|
|
989
|
-
|
|
829
|
+
viewportId,
|
|
990
830
|
StudyInstanceUID,
|
|
991
831
|
SeriesInstanceUIDs
|
|
992
832
|
});
|
|
993
833
|
});
|
|
994
834
|
}
|
|
995
835
|
/* harmony default export */ const TrackedMeasurementsContext_hydrateStructuredReport = (hydrateStructuredReport);
|
|
836
|
+
// EXTERNAL MODULE: ./state/index.js + 1 modules
|
|
837
|
+
var state = __webpack_require__(62657);
|
|
996
838
|
;// CONCATENATED MODULE: ../../../extensions/measurement-tracking/src/contexts/TrackedMeasurementsContext/TrackedMeasurementsContext.tsx
|
|
997
839
|
|
|
998
840
|
|
|
@@ -1006,6 +848,7 @@ function hydrateStructuredReport(_ref, ctx, evt) {
|
|
|
1006
848
|
|
|
1007
849
|
|
|
1008
850
|
|
|
851
|
+
|
|
1009
852
|
const TrackedMeasurementsContext = /*#__PURE__*/react.createContext();
|
|
1010
853
|
TrackedMeasurementsContext.displayName = 'TrackedMeasurementsContext';
|
|
1011
854
|
const useTrackedMeasurements = () => (0,react.useContext)(TrackedMeasurementsContext);
|
|
@@ -1026,9 +869,10 @@ _ref2 // Component props
|
|
|
1026
869
|
let {
|
|
1027
870
|
children
|
|
1028
871
|
} = _ref2;
|
|
872
|
+
const [appConfig] = (0,state/* useAppConfig */.M)();
|
|
1029
873
|
const [viewportGrid, viewportGridService] = (0,src/* useViewportGrid */.O_)();
|
|
1030
874
|
const {
|
|
1031
|
-
|
|
875
|
+
activeViewportId,
|
|
1032
876
|
viewports
|
|
1033
877
|
} = viewportGrid;
|
|
1034
878
|
const {
|
|
@@ -1040,11 +884,12 @@ _ref2 // Component props
|
|
|
1040
884
|
jumpToFirstMeasurementInActiveViewport: (ctx, evt) => {
|
|
1041
885
|
const {
|
|
1042
886
|
trackedStudy,
|
|
1043
|
-
trackedSeries
|
|
887
|
+
trackedSeries,
|
|
888
|
+
activeViewportId
|
|
1044
889
|
} = ctx;
|
|
1045
890
|
const measurements = measurementService.getMeasurements();
|
|
1046
891
|
const trackedMeasurements = measurements.filter(m => trackedStudy === m.referenceStudyUID && trackedSeries.includes(m.referenceSeriesUID));
|
|
1047
|
-
console.log('jumping to measurement reset viewport',
|
|
892
|
+
console.log('jumping to measurement reset viewport', activeViewportId, trackedMeasurements[0]);
|
|
1048
893
|
const referencedDisplaySetUID = trackedMeasurements[0].displaySetInstanceUID;
|
|
1049
894
|
const referencedDisplaySet = displaySetService.getDisplaySetByUID(referencedDisplaySetUID);
|
|
1050
895
|
const referencedImages = referencedDisplaySet.images;
|
|
@@ -1064,7 +909,7 @@ _ref2 // Component props
|
|
|
1064
909
|
}
|
|
1065
910
|
}
|
|
1066
911
|
viewportGridService.setDisplaySetsForViewport({
|
|
1067
|
-
|
|
912
|
+
viewportId: activeViewportId,
|
|
1068
913
|
displaySetInstanceUIDs: [referencedDisplaySetUID],
|
|
1069
914
|
viewportOptions: {
|
|
1070
915
|
initialImageOptions: {
|
|
@@ -1075,9 +920,9 @@ _ref2 // Component props
|
|
|
1075
920
|
},
|
|
1076
921
|
showStructuredReportDisplaySetInActiveViewport: (ctx, evt) => {
|
|
1077
922
|
if (evt.data.createdDisplaySetInstanceUIDs.length > 0) {
|
|
1078
|
-
const StructuredReportDisplaySetInstanceUID = evt.data.createdDisplaySetInstanceUIDs[0]
|
|
923
|
+
const StructuredReportDisplaySetInstanceUID = evt.data.createdDisplaySetInstanceUIDs[0];
|
|
1079
924
|
viewportGridService.setDisplaySetsForViewport({
|
|
1080
|
-
|
|
925
|
+
viewportId: evt.data.viewportId,
|
|
1081
926
|
displaySetInstanceUIDs: [StructuredReportDisplaySetInstanceUID]
|
|
1082
927
|
});
|
|
1083
928
|
}
|
|
@@ -1101,28 +946,34 @@ _ref2 // Component props
|
|
|
1101
946
|
machineOptions.services = Object.assign({}, machineOptions.services, {
|
|
1102
947
|
promptBeginTracking: TrackedMeasurementsContext_promptBeginTracking.bind(null, {
|
|
1103
948
|
servicesManager,
|
|
1104
|
-
extensionManager
|
|
949
|
+
extensionManager,
|
|
950
|
+
appConfig
|
|
1105
951
|
}),
|
|
1106
952
|
promptTrackNewSeries: TrackedMeasurementsContext_promptTrackNewSeries.bind(null, {
|
|
1107
953
|
servicesManager,
|
|
1108
|
-
extensionManager
|
|
954
|
+
extensionManager,
|
|
955
|
+
appConfig
|
|
1109
956
|
}),
|
|
1110
957
|
promptTrackNewStudy: TrackedMeasurementsContext_promptTrackNewStudy.bind(null, {
|
|
1111
958
|
servicesManager,
|
|
1112
|
-
extensionManager
|
|
959
|
+
extensionManager,
|
|
960
|
+
appConfig
|
|
1113
961
|
}),
|
|
1114
962
|
promptSaveReport: TrackedMeasurementsContext_promptSaveReport.bind(null, {
|
|
1115
963
|
servicesManager,
|
|
1116
964
|
commandsManager,
|
|
1117
|
-
extensionManager
|
|
965
|
+
extensionManager,
|
|
966
|
+
appConfig
|
|
1118
967
|
}),
|
|
1119
968
|
promptHydrateStructuredReport: TrackedMeasurementsContext_promptHydrateStructuredReport.bind(null, {
|
|
1120
969
|
servicesManager,
|
|
1121
|
-
extensionManager
|
|
970
|
+
extensionManager,
|
|
971
|
+
appConfig
|
|
1122
972
|
}),
|
|
1123
973
|
hydrateStructuredReport: TrackedMeasurementsContext_hydrateStructuredReport.bind(null, {
|
|
1124
974
|
servicesManager,
|
|
1125
|
-
extensionManager
|
|
975
|
+
extensionManager,
|
|
976
|
+
appConfig
|
|
1126
977
|
})
|
|
1127
978
|
});
|
|
1128
979
|
|
|
@@ -1135,13 +986,19 @@ _ref2 // Component props
|
|
|
1135
986
|
// - Fix viewport border resize
|
|
1136
987
|
// - created/destroyed hooks for extensions (cornerstone measurement subscriptions in it's `init`)
|
|
1137
988
|
|
|
1138
|
-
const measurementTrackingMachine = (0,es
|
|
1139
|
-
const [trackedMeasurements, sendTrackedMeasurementsEvent
|
|
989
|
+
const measurementTrackingMachine = (0,es/* Machine */.J)(machineConfiguration, machineOptions);
|
|
990
|
+
const [trackedMeasurements, sendTrackedMeasurementsEvent] = (0,react_es/* useMachine */.eO)(measurementTrackingMachine);
|
|
991
|
+
(0,react.useEffect)(() => {
|
|
992
|
+
// Update the state machine with the active viewport ID
|
|
993
|
+
sendTrackedMeasurementsEvent('UPDATE_ACTIVE_VIEWPORT_ID', {
|
|
994
|
+
activeViewportId
|
|
995
|
+
});
|
|
996
|
+
}, [activeViewportId, sendTrackedMeasurementsEvent]);
|
|
1140
997
|
|
|
1141
998
|
// ~~ Listen for changes to ViewportGrid for potential SRs hung in panes when idle
|
|
1142
999
|
(0,react.useEffect)(() => {
|
|
1143
|
-
if (viewports.
|
|
1144
|
-
const activeViewport = viewports
|
|
1000
|
+
if (viewports.size > 0) {
|
|
1001
|
+
const activeViewport = viewports.get(activeViewportId);
|
|
1145
1002
|
if (!activeViewport || !activeViewport?.displaySetInstanceUIDs?.length) {
|
|
1146
1003
|
return;
|
|
1147
1004
|
}
|
|
@@ -1180,11 +1037,11 @@ _ref2 // Component props
|
|
|
1180
1037
|
sendTrackedMeasurementsEvent('PROMPT_HYDRATE_SR', {
|
|
1181
1038
|
displaySetInstanceUID: displaySet.displaySetInstanceUID,
|
|
1182
1039
|
SeriesInstanceUID: displaySet.SeriesInstanceUID,
|
|
1183
|
-
|
|
1040
|
+
viewportId: activeViewportId
|
|
1184
1041
|
});
|
|
1185
1042
|
}
|
|
1186
1043
|
}
|
|
1187
|
-
}, [
|
|
1044
|
+
}, [activeViewportId, sendTrackedMeasurementsEvent, servicesManager.services, viewports]);
|
|
1188
1045
|
return /*#__PURE__*/react.createElement(TrackedMeasurementsContext.Provider, {
|
|
1189
1046
|
value: [trackedMeasurements, sendTrackedMeasurementsEvent]
|
|
1190
1047
|
}, children);
|
|
@@ -1193,7 +1050,8 @@ TrackedMeasurementsContextProvider.propTypes = {
|
|
|
1193
1050
|
children: prop_types_default().oneOf([(prop_types_default()).func, (prop_types_default()).node]),
|
|
1194
1051
|
servicesManager: (prop_types_default()).object.isRequired,
|
|
1195
1052
|
commandsManager: (prop_types_default()).object.isRequired,
|
|
1196
|
-
extensionManager: (prop_types_default()).object.isRequired
|
|
1053
|
+
extensionManager: (prop_types_default()).object.isRequired,
|
|
1054
|
+
appConfig: (prop_types_default()).object
|
|
1197
1055
|
};
|
|
1198
1056
|
|
|
1199
1057
|
;// CONCATENATED MODULE: ../../../extensions/measurement-tracking/src/contexts/TrackedMeasurementsContext/index.js
|
|
@@ -1224,7 +1082,7 @@ function getContextModule(_ref) {
|
|
|
1224
1082
|
|
|
1225
1083
|
/***/ }),
|
|
1226
1084
|
|
|
1227
|
-
/***/
|
|
1085
|
+
/***/ 28030:
|
|
1228
1086
|
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
|
|
1229
1087
|
|
|
1230
1088
|
// ESM COMPAT FLAG
|
|
@@ -1235,23 +1093,29 @@ __webpack_require__.d(__webpack_exports__, {
|
|
|
1235
1093
|
"default": () => (/* binding */ measurement_tracking_src)
|
|
1236
1094
|
});
|
|
1237
1095
|
|
|
1238
|
-
// EXTERNAL MODULE: ../../../extensions/measurement-tracking/src/getContextModule.tsx +
|
|
1239
|
-
var getContextModule = __webpack_require__(
|
|
1096
|
+
// EXTERNAL MODULE: ../../../extensions/measurement-tracking/src/getContextModule.tsx + 12 modules
|
|
1097
|
+
var getContextModule = __webpack_require__(41832);
|
|
1240
1098
|
// EXTERNAL MODULE: ../../../node_modules/react/index.js
|
|
1241
|
-
var react = __webpack_require__(
|
|
1099
|
+
var react = __webpack_require__(43001);
|
|
1242
1100
|
// EXTERNAL MODULE: ../../../node_modules/prop-types/index.js
|
|
1243
|
-
var prop_types = __webpack_require__(
|
|
1101
|
+
var prop_types = __webpack_require__(3827);
|
|
1244
1102
|
var prop_types_default = /*#__PURE__*/__webpack_require__.n(prop_types);
|
|
1245
|
-
// EXTERNAL MODULE:
|
|
1246
|
-
var
|
|
1247
|
-
// EXTERNAL MODULE:
|
|
1248
|
-
var
|
|
1103
|
+
// EXTERNAL MODULE: ../node_modules/react-router-dom/dist/index.js
|
|
1104
|
+
var dist = __webpack_require__(62474);
|
|
1105
|
+
// EXTERNAL MODULE: ../../../node_modules/react-i18next/dist/es/index.js + 15 modules
|
|
1106
|
+
var es = __webpack_require__(69190);
|
|
1107
|
+
// EXTERNAL MODULE: ../../core/src/index.ts + 65 modules
|
|
1108
|
+
var src = __webpack_require__(71771);
|
|
1109
|
+
// EXTERNAL MODULE: ../../ui/src/index.js + 485 modules
|
|
1110
|
+
var ui_src = __webpack_require__(71783);
|
|
1249
1111
|
;// CONCATENATED MODULE: ../../../extensions/measurement-tracking/src/panels/PanelStudyBrowserTracking/PanelStudyBrowserTracking.tsx
|
|
1250
1112
|
|
|
1251
1113
|
|
|
1252
1114
|
|
|
1253
1115
|
|
|
1254
1116
|
|
|
1117
|
+
|
|
1118
|
+
|
|
1255
1119
|
const {
|
|
1256
1120
|
formatDate
|
|
1257
1121
|
} = src.utils;
|
|
@@ -1269,12 +1133,15 @@ function PanelStudyBrowserTracking(_ref) {
|
|
|
1269
1133
|
dataSource
|
|
1270
1134
|
} = _ref;
|
|
1271
1135
|
const {
|
|
1272
|
-
measurementService,
|
|
1273
1136
|
displaySetService,
|
|
1274
1137
|
uiDialogService,
|
|
1275
1138
|
hangingProtocolService,
|
|
1276
1139
|
uiNotificationService
|
|
1277
1140
|
} = servicesManager.services;
|
|
1141
|
+
const navigate = (0,dist/* useNavigate */.s0)();
|
|
1142
|
+
const {
|
|
1143
|
+
t
|
|
1144
|
+
} = (0,es/* useTranslation */.$G)('Common');
|
|
1278
1145
|
|
|
1279
1146
|
// Normally you nest the components so the tree isn't so deep, and the data
|
|
1280
1147
|
// doesn't have to have such an intense shape. This works well enough for now.
|
|
@@ -1283,10 +1150,8 @@ function PanelStudyBrowserTracking(_ref) {
|
|
|
1283
1150
|
StudyInstanceUIDs
|
|
1284
1151
|
} = (0,ui_src/* useImageViewer */.zG)();
|
|
1285
1152
|
const [{
|
|
1286
|
-
|
|
1287
|
-
viewports
|
|
1288
|
-
numCols,
|
|
1289
|
-
numRows
|
|
1153
|
+
activeViewportId,
|
|
1154
|
+
viewports
|
|
1290
1155
|
}, viewportGridService] = (0,ui_src/* useViewportGrid */.O_)();
|
|
1291
1156
|
const [trackedMeasurements, sendTrackedMeasurementsEvent] = (0,getContextModule/* useTrackedMeasurements */.I)();
|
|
1292
1157
|
const [activeTabName, setActiveTabName] = (0,react.useState)('primary');
|
|
@@ -1297,9 +1162,9 @@ function PanelStudyBrowserTracking(_ref) {
|
|
|
1297
1162
|
const [jumpToDisplaySet, setJumpToDisplaySet] = (0,react.useState)(null);
|
|
1298
1163
|
const onDoubleClickThumbnailHandler = displaySetInstanceUID => {
|
|
1299
1164
|
let updatedViewports = [];
|
|
1300
|
-
const
|
|
1165
|
+
const viewportId = activeViewportId;
|
|
1301
1166
|
try {
|
|
1302
|
-
updatedViewports = hangingProtocolService.getViewportsRequireUpdate(
|
|
1167
|
+
updatedViewports = hangingProtocolService.getViewportsRequireUpdate(viewportId, displaySetInstanceUID);
|
|
1303
1168
|
} catch (error) {
|
|
1304
1169
|
console.warn(error);
|
|
1305
1170
|
uiNotificationService.show({
|
|
@@ -1311,37 +1176,7 @@ function PanelStudyBrowserTracking(_ref) {
|
|
|
1311
1176
|
}
|
|
1312
1177
|
viewportGridService.setDisplaySetsForViewports(updatedViewports);
|
|
1313
1178
|
};
|
|
1314
|
-
const activeViewportDisplaySetInstanceUIDs = viewports
|
|
1315
|
-
(0,react.useEffect)(() => {
|
|
1316
|
-
const added = measurementService.EVENTS.MEASUREMENT_ADDED;
|
|
1317
|
-
const addedRaw = measurementService.EVENTS.RAW_MEASUREMENT_ADDED;
|
|
1318
|
-
const subscriptions = [];
|
|
1319
|
-
[added, addedRaw].forEach(evt => {
|
|
1320
|
-
subscriptions.push(measurementService.subscribe(evt, _ref2 => {
|
|
1321
|
-
let {
|
|
1322
|
-
source,
|
|
1323
|
-
measurement
|
|
1324
|
-
} = _ref2;
|
|
1325
|
-
const {
|
|
1326
|
-
referenceSeriesUID: SeriesInstanceUID,
|
|
1327
|
-
referenceStudyUID: StudyInstanceUID
|
|
1328
|
-
} = measurement;
|
|
1329
|
-
sendTrackedMeasurementsEvent('SET_DIRTY', {
|
|
1330
|
-
SeriesInstanceUID
|
|
1331
|
-
});
|
|
1332
|
-
sendTrackedMeasurementsEvent('TRACK_SERIES', {
|
|
1333
|
-
viewportIndex: activeViewportIndex,
|
|
1334
|
-
StudyInstanceUID,
|
|
1335
|
-
SeriesInstanceUID
|
|
1336
|
-
});
|
|
1337
|
-
}).unsubscribe);
|
|
1338
|
-
});
|
|
1339
|
-
return () => {
|
|
1340
|
-
subscriptions.forEach(unsub => {
|
|
1341
|
-
unsub();
|
|
1342
|
-
});
|
|
1343
|
-
};
|
|
1344
|
-
}, [measurementService, activeViewportIndex, sendTrackedMeasurementsEvent]);
|
|
1179
|
+
const activeViewportDisplaySetInstanceUIDs = viewports.get(activeViewportId)?.displaySetInstanceUIDs;
|
|
1345
1180
|
const {
|
|
1346
1181
|
trackedSeries
|
|
1347
1182
|
} = trackedMeasurements.context;
|
|
@@ -1354,6 +1189,10 @@ function PanelStudyBrowserTracking(_ref) {
|
|
|
1354
1189
|
const qidoForStudyUID = await dataSource.query.studies.search({
|
|
1355
1190
|
studyInstanceUid: StudyInstanceUID
|
|
1356
1191
|
});
|
|
1192
|
+
if (!qidoForStudyUID?.length) {
|
|
1193
|
+
navigate('/notfoundstudy', '_self');
|
|
1194
|
+
throw new Error('Invalid study URL');
|
|
1195
|
+
}
|
|
1357
1196
|
let qidoStudiesForPatient = qidoForStudyUID;
|
|
1358
1197
|
|
|
1359
1198
|
// try to fetch the prior studies based on the patientID if the
|
|
@@ -1367,7 +1206,7 @@ function PanelStudyBrowserTracking(_ref) {
|
|
|
1367
1206
|
const actuallyMappedStudies = mappedStudies.map(qidoStudy => {
|
|
1368
1207
|
return {
|
|
1369
1208
|
studyInstanceUid: qidoStudy.StudyInstanceUID,
|
|
1370
|
-
date: formatDate(qidoStudy.StudyDate),
|
|
1209
|
+
date: formatDate(qidoStudy.StudyDate) || t('NoStudyDate'),
|
|
1371
1210
|
description: qidoStudy.StudyDescription,
|
|
1372
1211
|
modalities: qidoStudy.ModalitiesInStudy,
|
|
1373
1212
|
numInstances: qidoStudy.NumInstances
|
|
@@ -1399,17 +1238,18 @@ function PanelStudyBrowserTracking(_ref) {
|
|
|
1399
1238
|
const imageIds = dataSource.getImageIdsForDisplaySet(displaySet);
|
|
1400
1239
|
const imageId = imageIds[Math.floor(imageIds.length / 2)];
|
|
1401
1240
|
|
|
1402
|
-
// TODO: Is it okay that imageIds are not returned here for SR
|
|
1403
|
-
if (imageId) {
|
|
1404
|
-
|
|
1405
|
-
newImageSrcEntry[dSet.displaySetInstanceUID] = await getImageSrc(imageId);
|
|
1406
|
-
setThumbnailImageSrcMap(prevState => {
|
|
1407
|
-
return {
|
|
1408
|
-
...prevState,
|
|
1409
|
-
...newImageSrcEntry
|
|
1410
|
-
};
|
|
1411
|
-
});
|
|
1241
|
+
// TODO: Is it okay that imageIds are not returned here for SR displaySets?
|
|
1242
|
+
if (!imageId || displaySet?.unsupported) {
|
|
1243
|
+
return;
|
|
1412
1244
|
}
|
|
1245
|
+
// When the image arrives, render it and store the result in the thumbnailImgSrcMap
|
|
1246
|
+
newImageSrcEntry[dSet.displaySetInstanceUID] = await getImageSrc(imageId);
|
|
1247
|
+
setThumbnailImageSrcMap(prevState => {
|
|
1248
|
+
return {
|
|
1249
|
+
...prevState,
|
|
1250
|
+
...newImageSrcEntry
|
|
1251
|
+
};
|
|
1252
|
+
});
|
|
1413
1253
|
});
|
|
1414
1254
|
}, [displaySetService, dataSource, getImageSrc]);
|
|
1415
1255
|
|
|
@@ -1436,6 +1276,9 @@ function PanelStudyBrowserTracking(_ref) {
|
|
|
1436
1276
|
const displaySetInstanceUID = dSet.displaySetInstanceUID;
|
|
1437
1277
|
const newImageSrcEntry = {};
|
|
1438
1278
|
const displaySet = displaySetService.getDisplaySetByUID(displaySetInstanceUID);
|
|
1279
|
+
if (displaySet?.unsupported) {
|
|
1280
|
+
return;
|
|
1281
|
+
}
|
|
1439
1282
|
if (options.madeInClient) {
|
|
1440
1283
|
setJumpToDisplaySet(displaySetInstanceUID);
|
|
1441
1284
|
}
|
|
@@ -1443,31 +1286,41 @@ function PanelStudyBrowserTracking(_ref) {
|
|
|
1443
1286
|
const imageId = imageIds[Math.floor(imageIds.length / 2)];
|
|
1444
1287
|
|
|
1445
1288
|
// TODO: Is it okay that imageIds are not returned here for SR displaysets?
|
|
1446
|
-
if (imageId) {
|
|
1447
|
-
|
|
1448
|
-
newImageSrcEntry[displaySetInstanceUID] = await getImageSrc(imageId);
|
|
1449
|
-
setThumbnailImageSrcMap(prevState => {
|
|
1450
|
-
return {
|
|
1451
|
-
...prevState,
|
|
1452
|
-
...newImageSrcEntry
|
|
1453
|
-
};
|
|
1454
|
-
});
|
|
1289
|
+
if (!imageId) {
|
|
1290
|
+
return;
|
|
1455
1291
|
}
|
|
1292
|
+
|
|
1293
|
+
// When the image arrives, render it and store the result in the thumbnailImgSrcMap
|
|
1294
|
+
newImageSrcEntry[displaySetInstanceUID] = await getImageSrc(imageId);
|
|
1295
|
+
setThumbnailImageSrcMap(prevState => {
|
|
1296
|
+
return {
|
|
1297
|
+
...prevState,
|
|
1298
|
+
...newImageSrcEntry
|
|
1299
|
+
};
|
|
1300
|
+
});
|
|
1456
1301
|
});
|
|
1457
1302
|
});
|
|
1458
|
-
|
|
1303
|
+
return () => {
|
|
1304
|
+
SubscriptionDisplaySetsAdded.unsubscribe();
|
|
1305
|
+
};
|
|
1306
|
+
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
1307
|
+
}, [displaySetService, dataSource, getImageSrc, thumbnailImageSrcMap, trackedSeries, viewports]);
|
|
1308
|
+
(0,react.useEffect)(() => {
|
|
1459
1309
|
// TODO: Will this always hold _all_ the displaySets we care about?
|
|
1460
1310
|
// DISPLAY_SETS_CHANGED returns `DisplaySerService.activeDisplaySets`
|
|
1461
1311
|
const SubscriptionDisplaySetsChanged = displaySetService.subscribe(displaySetService.EVENTS.DISPLAY_SETS_CHANGED, changedDisplaySets => {
|
|
1462
1312
|
const mappedDisplaySets = _mapDisplaySets(changedDisplaySets, thumbnailImageSrcMap, trackedSeries, viewports, viewportGridService, dataSource, displaySetService, uiDialogService, uiNotificationService);
|
|
1463
1313
|
setDisplaySets(mappedDisplaySets);
|
|
1464
1314
|
});
|
|
1315
|
+
const SubscriptionDisplaySetMetaDataInvalidated = displaySetService.subscribe(displaySetService.EVENTS.DISPLAY_SET_SERIES_METADATA_INVALIDATED, () => {
|
|
1316
|
+
const mappedDisplaySets = _mapDisplaySets(displaySetService.getActiveDisplaySets(), thumbnailImageSrcMap, trackedSeries, viewports, viewportGridService, dataSource, displaySetService, uiDialogService, uiNotificationService);
|
|
1317
|
+
setDisplaySets(mappedDisplaySets);
|
|
1318
|
+
});
|
|
1465
1319
|
return () => {
|
|
1466
|
-
SubscriptionDisplaySetsAdded.unsubscribe();
|
|
1467
1320
|
SubscriptionDisplaySetsChanged.unsubscribe();
|
|
1321
|
+
SubscriptionDisplaySetMetaDataInvalidated.unsubscribe();
|
|
1468
1322
|
};
|
|
1469
|
-
|
|
1470
|
-
}, [displaySetService, dataSource, getImageSrc, thumbnailImageSrcMap, trackedSeries, viewports]);
|
|
1323
|
+
}, [thumbnailImageSrcMap, trackedSeries, viewports, dataSource, displaySetService]);
|
|
1471
1324
|
const tabs = _createStudyBrowserTabs(StudyInstanceUIDs, studyDisplayList, displaySets, hangingProtocolService);
|
|
1472
1325
|
|
|
1473
1326
|
// TODO: Should not fire this on "close"
|
|
@@ -1577,14 +1430,16 @@ viewportGridService, dataSource, displaySetService, uiDialogService, uiNotificat
|
|
|
1577
1430
|
const thumbnailNoImageDisplaySets = [];
|
|
1578
1431
|
displaySets.filter(ds => !ds.excludeFromThumbnailBrowser).forEach(ds => {
|
|
1579
1432
|
const imageSrc = thumbnailImageSrcMap[ds.displaySetInstanceUID];
|
|
1580
|
-
const componentType = _getComponentType(ds
|
|
1433
|
+
const componentType = _getComponentType(ds);
|
|
1581
1434
|
const numPanes = viewportGridService.getNumViewportPanes();
|
|
1582
|
-
const viewportIdentificator =
|
|
1583
|
-
|
|
1584
|
-
|
|
1585
|
-
|
|
1586
|
-
|
|
1587
|
-
|
|
1435
|
+
const viewportIdentificator = [];
|
|
1436
|
+
if (numPanes !== 1) {
|
|
1437
|
+
viewports.forEach(viewportData => {
|
|
1438
|
+
if (viewportData?.displaySetInstanceUIDs?.includes(ds.displaySetInstanceUID)) {
|
|
1439
|
+
viewportIdentificator.push(viewportData.viewportLabel);
|
|
1440
|
+
}
|
|
1441
|
+
});
|
|
1442
|
+
}
|
|
1588
1443
|
const array = componentType === 'thumbnailTracked' ? thumbnailDisplaySets : thumbnailNoImageDisplaySets;
|
|
1589
1444
|
const {
|
|
1590
1445
|
displaySetInstanceUID
|
|
@@ -1597,6 +1452,7 @@ viewportGridService, dataSource, displaySetService, uiDialogService, uiNotificat
|
|
|
1597
1452
|
seriesDate: formatDate(ds.SeriesDate),
|
|
1598
1453
|
numInstances: ds.numImageFrames,
|
|
1599
1454
|
countIcon: ds.countIcon,
|
|
1455
|
+
messages: ds.messages,
|
|
1600
1456
|
StudyInstanceUID: ds.StudyInstanceUID,
|
|
1601
1457
|
componentType,
|
|
1602
1458
|
imageSrc,
|
|
@@ -1607,11 +1463,12 @@ viewportGridService, dataSource, displaySetService, uiDialogService, uiNotificat
|
|
|
1607
1463
|
},
|
|
1608
1464
|
|
|
1609
1465
|
isTracked: trackedSeriesInstanceUIDs.includes(ds.SeriesInstanceUID),
|
|
1466
|
+
isHydratedForDerivedDisplaySet: ds.isHydrated,
|
|
1610
1467
|
viewportIdentificator
|
|
1611
1468
|
};
|
|
1612
1469
|
if (componentType === 'thumbnailNoImage') {
|
|
1613
1470
|
if (dataSource.reject && dataSource.reject.series) {
|
|
1614
|
-
thumbnailProps.canReject =
|
|
1471
|
+
thumbnailProps.canReject = !ds?.unsupported;
|
|
1615
1472
|
thumbnailProps.onReject = () => {
|
|
1616
1473
|
uiDialogService.create({
|
|
1617
1474
|
id: 'ds-reject-sr',
|
|
@@ -1622,16 +1479,18 @@ viewportGridService, dataSource, displaySetService, uiDialogService, uiNotificat
|
|
|
1622
1479
|
contentProps: {
|
|
1623
1480
|
title: 'Delete Report',
|
|
1624
1481
|
body: () => /*#__PURE__*/react.createElement("div", {
|
|
1625
|
-
className: "p-4 text-white
|
|
1626
|
-
}, /*#__PURE__*/react.createElement("p", null, "Are you sure you want to delete this report?"), /*#__PURE__*/react.createElement("p",
|
|
1482
|
+
className: "bg-primary-dark p-4 text-white"
|
|
1483
|
+
}, /*#__PURE__*/react.createElement("p", null, "Are you sure you want to delete this report?"), /*#__PURE__*/react.createElement("p", {
|
|
1484
|
+
className: "mt-2"
|
|
1485
|
+
}, "This action cannot be undone.")),
|
|
1627
1486
|
actions: [{
|
|
1628
1487
|
id: 'cancel',
|
|
1629
1488
|
text: 'Cancel',
|
|
1630
|
-
type: ui_src/* ButtonEnums.type */.LZ.
|
|
1489
|
+
type: ui_src/* ButtonEnums.type */.LZ.dt.secondary
|
|
1631
1490
|
}, {
|
|
1632
1491
|
id: 'yes',
|
|
1633
1492
|
text: 'Yes',
|
|
1634
|
-
type: ui_src/* ButtonEnums.type */.LZ.
|
|
1493
|
+
type: ui_src/* ButtonEnums.type */.LZ.dt.primary,
|
|
1635
1494
|
classes: ['reject-yes-button']
|
|
1636
1495
|
}],
|
|
1637
1496
|
onClose: () => uiDialogService.dismiss({
|
|
@@ -1641,10 +1500,10 @@ viewportGridService, dataSource, displaySetService, uiDialogService, uiNotificat
|
|
|
1641
1500
|
const yesButton = document.querySelector('.reject-yes-button');
|
|
1642
1501
|
yesButton.focus();
|
|
1643
1502
|
},
|
|
1644
|
-
onSubmit: async
|
|
1503
|
+
onSubmit: async _ref2 => {
|
|
1645
1504
|
let {
|
|
1646
1505
|
action
|
|
1647
|
-
} =
|
|
1506
|
+
} = _ref2;
|
|
1648
1507
|
switch (action.id) {
|
|
1649
1508
|
case 'yes':
|
|
1650
1509
|
try {
|
|
@@ -1688,8 +1547,8 @@ viewportGridService, dataSource, displaySetService, uiDialogService, uiNotificat
|
|
|
1688
1547
|
return [...thumbnailDisplaySets, ...thumbnailNoImageDisplaySets];
|
|
1689
1548
|
}
|
|
1690
1549
|
const thumbnailNoImageModalities = ['SR', 'SEG', 'SM', 'RTSTRUCT', 'RTPLAN', 'RTDOSE', 'DOC', 'OT'];
|
|
1691
|
-
function _getComponentType(
|
|
1692
|
-
if (thumbnailNoImageModalities.includes(Modality)) {
|
|
1550
|
+
function _getComponentType(ds) {
|
|
1551
|
+
if (thumbnailNoImageModalities.includes(ds.Modality) || ds?.unsupported) {
|
|
1693
1552
|
return 'thumbnailNoImage';
|
|
1694
1553
|
}
|
|
1695
1554
|
return 'thumbnailTracked';
|
|
@@ -1886,10 +1745,8 @@ WrappedPanelStudyBrowserTracking.propTypes = {
|
|
|
1886
1745
|
servicesManager: (prop_types_default()).object.isRequired
|
|
1887
1746
|
};
|
|
1888
1747
|
/* harmony default export */ const panels_PanelStudyBrowserTracking = (WrappedPanelStudyBrowserTracking);
|
|
1889
|
-
// EXTERNAL MODULE: ./hooks/index.js +
|
|
1890
|
-
var hooks = __webpack_require__(
|
|
1891
|
-
// EXTERNAL MODULE: ../../../node_modules/react-i18next/dist/es/index.js + 15 modules
|
|
1892
|
-
var es = __webpack_require__(21572);
|
|
1748
|
+
// EXTERNAL MODULE: ./hooks/index.js + 1 modules
|
|
1749
|
+
var hooks = __webpack_require__(10800);
|
|
1893
1750
|
;// CONCATENATED MODULE: ../../../extensions/measurement-tracking/src/panels/PanelMeasurementTableTracking/ActionButtons.tsx
|
|
1894
1751
|
|
|
1895
1752
|
|
|
@@ -1907,13 +1764,13 @@ function ActionButtons(_ref) {
|
|
|
1907
1764
|
return /*#__PURE__*/react.createElement(react.Fragment, null, /*#__PURE__*/react.createElement(ui_src/* Button */.zx, {
|
|
1908
1765
|
onClick: onExportClick,
|
|
1909
1766
|
disabled: disabled,
|
|
1910
|
-
type: ui_src/* ButtonEnums.type */.LZ.
|
|
1911
|
-
size: ui_src/* ButtonEnums.size */.LZ.
|
|
1767
|
+
type: ui_src/* ButtonEnums.type */.LZ.dt.secondary,
|
|
1768
|
+
size: ui_src/* ButtonEnums.size */.LZ.dp.small
|
|
1912
1769
|
}, t('Export')), /*#__PURE__*/react.createElement(ui_src/* Button */.zx, {
|
|
1913
1770
|
className: "ml-2",
|
|
1914
1771
|
onClick: onCreateReportClick,
|
|
1915
|
-
type: ui_src/* ButtonEnums.type */.LZ.
|
|
1916
|
-
size: ui_src/* ButtonEnums.size */.LZ.
|
|
1772
|
+
type: ui_src/* ButtonEnums.type */.LZ.dt.secondary,
|
|
1773
|
+
size: ui_src/* ButtonEnums.size */.LZ.dp.small,
|
|
1917
1774
|
disabled: disabled
|
|
1918
1775
|
}, t('Create Report')));
|
|
1919
1776
|
}
|
|
@@ -1929,7 +1786,7 @@ ActionButtons.defaultProps = {
|
|
|
1929
1786
|
};
|
|
1930
1787
|
/* harmony default export */ const PanelMeasurementTableTracking_ActionButtons = (ActionButtons);
|
|
1931
1788
|
// EXTERNAL MODULE: ../../../node_modules/lodash.debounce/index.js
|
|
1932
|
-
var lodash_debounce = __webpack_require__(
|
|
1789
|
+
var lodash_debounce = __webpack_require__(8324);
|
|
1933
1790
|
var lodash_debounce_default = /*#__PURE__*/__webpack_require__.n(lodash_debounce);
|
|
1934
1791
|
;// CONCATENATED MODULE: ../../../extensions/measurement-tracking/src/panels/PanelMeasurementTableTracking/index.tsx
|
|
1935
1792
|
|
|
@@ -1961,9 +1818,9 @@ function PanelMeasurementTableTracking(_ref) {
|
|
|
1961
1818
|
servicesManager,
|
|
1962
1819
|
extensionManager
|
|
1963
1820
|
} = _ref;
|
|
1964
|
-
const [viewportGrid
|
|
1821
|
+
const [viewportGrid] = (0,ui_src/* useViewportGrid */.O_)();
|
|
1965
1822
|
const [measurementChangeTimestamp, setMeasurementsUpdated] = (0,react.useState)(Date.now().toString());
|
|
1966
|
-
const debouncedMeasurementChangeTimestamp = (0,hooks/* useDebounce */.
|
|
1823
|
+
const debouncedMeasurementChangeTimestamp = (0,hooks/* useDebounce */.N)(measurementChangeTimestamp, 200);
|
|
1967
1824
|
const {
|
|
1968
1825
|
measurementService,
|
|
1969
1826
|
uiDialogService,
|
|
@@ -2057,7 +1914,7 @@ function PanelMeasurementTableTracking(_ref) {
|
|
|
2057
1914
|
uid,
|
|
2058
1915
|
isActive
|
|
2059
1916
|
} = _ref2;
|
|
2060
|
-
measurementService.jumpToMeasurement(viewportGrid.
|
|
1917
|
+
measurementService.jumpToMeasurement(viewportGrid.activeViewportId, uid);
|
|
2061
1918
|
onMeasurementItemClickHandler({
|
|
2062
1919
|
uid,
|
|
2063
1920
|
isActive
|
|
@@ -2130,7 +1987,7 @@ function PanelMeasurementTableTracking(_ref) {
|
|
|
2130
1987
|
labelClassName: "text-white grow text-[14px] leading-[1.2]",
|
|
2131
1988
|
autoFocus: true,
|
|
2132
1989
|
id: "annotation",
|
|
2133
|
-
className: "
|
|
1990
|
+
className: "border-primary-main bg-black",
|
|
2134
1991
|
type: "text",
|
|
2135
1992
|
value: value.label,
|
|
2136
1993
|
onChange: onChangeHandler,
|
|
@@ -2140,11 +1997,11 @@ function PanelMeasurementTableTracking(_ref) {
|
|
|
2140
1997
|
actions: [{
|
|
2141
1998
|
id: 'cancel',
|
|
2142
1999
|
text: 'Cancel',
|
|
2143
|
-
type: ui_src/* ButtonEnums.type */.LZ.
|
|
2000
|
+
type: ui_src/* ButtonEnums.type */.LZ.dt.secondary
|
|
2144
2001
|
}, {
|
|
2145
2002
|
id: 'save',
|
|
2146
2003
|
text: 'Save',
|
|
2147
|
-
type: ui_src/* ButtonEnums.type */.LZ.
|
|
2004
|
+
type: ui_src/* ButtonEnums.type */.LZ.dt.primary
|
|
2148
2005
|
}],
|
|
2149
2006
|
onSubmit: onSubmitHandler
|
|
2150
2007
|
}
|
|
@@ -2166,7 +2023,7 @@ function PanelMeasurementTableTracking(_ref) {
|
|
|
2166
2023
|
const displayMeasurementsWithoutFindings = displayMeasurements.filter(dm => dm.measurementType !== measurementService.VALUE_TYPES.POINT);
|
|
2167
2024
|
const additionalFindings = displayMeasurements.filter(dm => dm.measurementType === measurementService.VALUE_TYPES.POINT);
|
|
2168
2025
|
return /*#__PURE__*/react.createElement(react.Fragment, null, /*#__PURE__*/react.createElement("div", {
|
|
2169
|
-
className: "
|
|
2026
|
+
className: "invisible-scrollbar overflow-y-auto overflow-x-hidden",
|
|
2170
2027
|
ref: measurementsPanelRef,
|
|
2171
2028
|
"data-cy": 'trackedMeasurements-panel'
|
|
2172
2029
|
}, displayStudySummary.key && /*#__PURE__*/react.createElement(ui_src/* StudySummary */.YL, {
|
|
@@ -2191,7 +2048,7 @@ function PanelMeasurementTableTracking(_ref) {
|
|
|
2191
2048
|
onExportClick: exportReport,
|
|
2192
2049
|
onCreateReportClick: () => {
|
|
2193
2050
|
sendTrackedMeasurementsEvent('SAVE_REPORT', {
|
|
2194
|
-
|
|
2051
|
+
viewportId: viewportGrid.activeViewportId,
|
|
2195
2052
|
isBackupSave: true
|
|
2196
2053
|
});
|
|
2197
2054
|
},
|
|
@@ -2240,7 +2097,9 @@ function _mapMeasurementToDisplay(measurement, types, displaySetService) {
|
|
|
2240
2097
|
if (findingSites) {
|
|
2241
2098
|
const siteText = [];
|
|
2242
2099
|
findingSites.forEach(site => {
|
|
2243
|
-
if (site?.text !== label)
|
|
2100
|
+
if (site?.text !== label) {
|
|
2101
|
+
siteText.push(site.text);
|
|
2102
|
+
}
|
|
2244
2103
|
});
|
|
2245
2104
|
displayText = [...siteText, ...displayText];
|
|
2246
2105
|
}
|
|
@@ -2279,7 +2138,7 @@ function getPanelModule(_ref) {
|
|
|
2279
2138
|
} = _ref;
|
|
2280
2139
|
return [{
|
|
2281
2140
|
name: 'seriesList',
|
|
2282
|
-
iconName: '
|
|
2141
|
+
iconName: 'tab-studies',
|
|
2283
2142
|
iconLabel: 'Studies',
|
|
2284
2143
|
label: 'Studies',
|
|
2285
2144
|
component: panels_PanelStudyBrowserTracking.bind(null, {
|
|
@@ -2304,7 +2163,7 @@ function getPanelModule(_ref) {
|
|
|
2304
2163
|
function _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }
|
|
2305
2164
|
|
|
2306
2165
|
const Component = /*#__PURE__*/react.lazy(() => {
|
|
2307
|
-
return __webpack_require__.e(/* import() */
|
|
2166
|
+
return __webpack_require__.e(/* import() */ 822).then(__webpack_require__.bind(__webpack_require__, 86822));
|
|
2308
2167
|
});
|
|
2309
2168
|
const OHIFCornerstoneViewport = props => {
|
|
2310
2169
|
return /*#__PURE__*/react.createElement(react.Suspense, {
|