@ohif/app 3.7.0-beta.1 → 3.7.0-beta.100
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.06cb87cf1c42b9f20bd2.js → 12.bundle.34050abb042540a90a3a.js} +6 -6
- package/dist/{295.bundle.957b1159fec14b9199a1.js → 125.bundle.253395f320b72180da63.js} +6 -6
- package/dist/{351.bundle.2d4bc19d8b493879dbbe.js → 181.bundle.169383e9b1a0358b44e8.js} +227 -205
- package/dist/{351.css → 181.css} +1 -1
- package/dist/{744.bundle.392a124e4ee20ad6a657.js → 19.bundle.eef637102334f1832ba9.js} +246 -385
- package/dist/{606.bundle.5d876f5f3dd8287f0a28.js → 202.bundle.96bbb4547a346fe3921f.js} +1420 -750
- package/dist/{926.bundle.dbc9d0e591cb9217fda2.js → 220.bundle.f7e1c96c94245e70f2be.js} +990 -400
- package/dist/221.bundle.0b9f7401294213262852.js +1723 -0
- package/dist/221.css +2 -0
- package/dist/{664.bundle.09abae984223969d1bde.js → 23.bundle.e008ad788170f2ed5569.js} +5 -6
- package/dist/{976.bundle.2305e2f8244de8ccbaee.js → 236.bundle.7768b3e29b1fd618b9ec.js} +89 -105
- package/dist/{55.bundle.5f5e5ef9087b0beee35c.js → 250.bundle.8084960e3318cda37317.js} +52 -36
- package/dist/{973.bundle.a51bb5b329263c9e75e2.js → 281.bundle.39cb630582cf8114fd5e.js} +18 -14
- package/dist/{82.bundle.da0c036b2e572719dbc5.js → 342.bundle.6edc7ac022b4218ec99f.js} +1776 -482
- package/dist/{404.bundle.902c664e3e581335a5d2.js → 359.bundle.a8f6cf2f90fe05fc346d.js} +46 -131
- package/dist/{192.bundle.4fee0d418ae32bb7ab30.js → 370.bundle.4e1276530ba7757347f5.js} +113 -99
- package/dist/{790.bundle.aa7a8bebec3483d90f3f.js → 410.bundle.5a330214c0c31cbf2551.js} +11 -9
- package/dist/{151.bundle.31ea35044218837bf73f.js → 417.bundle.af0a207c29b109f84159.js} +49 -17
- package/dist/{569.bundle.0ed8d8178ffd43fe1c34.js → 451.bundle.9fd36f52ff69594f0669.js} +98 -107
- package/dist/{581.bundle.360d26f97b37da8faec3.js → 471.bundle.b3d77b83b1593c09a504.js} +78 -98
- package/dist/{199.bundle.290ef76d4ab8358e29bb.js → 506.bundle.ac385e382f79bbf4f306.js} +11 -14
- 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.f75fd669ddfe4ecf9c1b.js +532 -0
- package/dist/{984.bundle.4e002ef9b3468bddb68b.js → 663.bundle.3863ac49f85320c8ca96.js} +68 -38
- package/dist/{205.bundle.b5a473c200dcf2bbcdb4.js → 686.bundle.dccef1f36e4bc79bcc48.js} +6 -6
- package/dist/{50.bundle.03f455d441f2138ce49e.js → 687.bundle.ebd1260565c31ab9ad08.js} +218 -9
- package/dist/{331.bundle.bd0c13931a21d53086c9.js → 743.bundle.4bfe6e562ffb2c22708f.js} +26281 -21326
- package/dist/{728.bundle.d13856835357400fef82.js → 774.bundle.7528cba56a1407357144.js} +95 -64
- package/dist/{381.bundle.0905e683605fcbc0895f.js → 775.bundle.2285e7e0e67878948c0d.js} +16 -16
- package/dist/{283.bundle.7cf0fabc69d49a8a2c5d.js → 782.bundle.8c17030f76b75035564c.js} +123 -80
- package/dist/{642.bundle.89f15ef57fbad2a1019b.js → 814.bundle.cc0ed4fc75cb16e34f02.js} +6 -6
- package/dist/{707.bundle.832f50366089fd23e93b.js → 82.bundle.7a89cd8b81eb7e1e5c66.js} +1187 -808
- package/dist/{799.bundle.ca18bdf4abe4d9abea26.js → 822.bundle.0545d6dbb49515aa04ee.js} +81 -34
- package/dist/831.bundle.83658f62fcc769043605.js +16700 -0
- package/dist/{953.bundle.9e3a7225f07336bfcb41.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.71558794566041f37a92.js} +7110 -997
- package/dist/{208.bundle.29fe1842c33000edc75d.js → 99.bundle.c6876aaaa3ff2f1b08a1.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.3ad961046deb5f47678a.js → app.bundle.dc0e89948c4f4568fe20.js} +73720 -68191
- 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 +20 -22
- package/dist/616.bundle.b76c70aeeed8b142593c.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
|
}))
|
|
@@ -345,6 +351,7 @@ const defaultOptions = {
|
|
|
345
351
|
};
|
|
346
352
|
|
|
347
353
|
;// CONCATENATED MODULE: ../../../extensions/measurement-tracking/src/contexts/TrackedMeasurementsContext/promptBeginTracking.js
|
|
354
|
+
|
|
348
355
|
const promptBeginTracking_RESPONSE = {
|
|
349
356
|
NO_NEVER: -1,
|
|
350
357
|
CANCEL: 0,
|
|
@@ -361,36 +368,36 @@ function promptBeginTracking(_ref, ctx, evt) {
|
|
|
361
368
|
uiViewportDialogService
|
|
362
369
|
} = servicesManager.services;
|
|
363
370
|
const {
|
|
364
|
-
|
|
371
|
+
viewportId,
|
|
365
372
|
StudyInstanceUID,
|
|
366
373
|
SeriesInstanceUID
|
|
367
374
|
} = evt;
|
|
368
375
|
return new Promise(async function (resolve, reject) {
|
|
369
|
-
let promptResult = await _askTrackMeasurements(uiViewportDialogService,
|
|
376
|
+
let promptResult = await _askTrackMeasurements(uiViewportDialogService, viewportId);
|
|
370
377
|
resolve({
|
|
371
378
|
userResponse: promptResult,
|
|
372
379
|
StudyInstanceUID,
|
|
373
380
|
SeriesInstanceUID,
|
|
374
|
-
|
|
381
|
+
viewportId
|
|
375
382
|
});
|
|
376
383
|
});
|
|
377
384
|
}
|
|
378
|
-
function _askTrackMeasurements(uiViewportDialogService,
|
|
385
|
+
function _askTrackMeasurements(uiViewportDialogService, viewportId) {
|
|
379
386
|
return new Promise(function (resolve, reject) {
|
|
380
387
|
const message = 'Track measurements for this series?';
|
|
381
388
|
const actions = [{
|
|
382
389
|
id: 'prompt-begin-tracking-cancel',
|
|
383
|
-
type:
|
|
390
|
+
type: src/* ButtonEnums.type */.LZ.dt.secondary,
|
|
384
391
|
text: 'No',
|
|
385
392
|
value: promptBeginTracking_RESPONSE.CANCEL
|
|
386
393
|
}, {
|
|
387
394
|
id: 'prompt-begin-tracking-no-do-not-ask-again',
|
|
388
|
-
type:
|
|
395
|
+
type: src/* ButtonEnums.type */.LZ.dt.secondary,
|
|
389
396
|
text: 'No, do not ask again',
|
|
390
397
|
value: promptBeginTracking_RESPONSE.NO_NEVER
|
|
391
398
|
}, {
|
|
392
399
|
id: 'prompt-begin-tracking-yes',
|
|
393
|
-
type:
|
|
400
|
+
type: src/* ButtonEnums.type */.LZ.dt.primary,
|
|
394
401
|
text: 'Yes',
|
|
395
402
|
value: promptBeginTracking_RESPONSE.SET_STUDY_AND_SERIES
|
|
396
403
|
}];
|
|
@@ -399,7 +406,7 @@ function _askTrackMeasurements(uiViewportDialogService, viewportIndex) {
|
|
|
399
406
|
resolve(result);
|
|
400
407
|
};
|
|
401
408
|
uiViewportDialogService.show({
|
|
402
|
-
|
|
409
|
+
viewportId,
|
|
403
410
|
id: 'measurement-tracking-prompt-begin-tracking',
|
|
404
411
|
type: 'info',
|
|
405
412
|
message,
|
|
@@ -414,6 +421,7 @@ function _askTrackMeasurements(uiViewportDialogService, viewportIndex) {
|
|
|
414
421
|
}
|
|
415
422
|
/* harmony default export */ const TrackedMeasurementsContext_promptBeginTracking = (promptBeginTracking);
|
|
416
423
|
;// CONCATENATED MODULE: ../../../extensions/measurement-tracking/src/contexts/TrackedMeasurementsContext/promptTrackNewSeries.js
|
|
424
|
+
|
|
417
425
|
const promptTrackNewSeries_RESPONSE = {
|
|
418
426
|
NO_NEVER: -1,
|
|
419
427
|
CANCEL: 0,
|
|
@@ -431,37 +439,37 @@ function promptTrackNewSeries(_ref, ctx, evt) {
|
|
|
431
439
|
UIViewportDialogService
|
|
432
440
|
} = servicesManager.services;
|
|
433
441
|
const {
|
|
434
|
-
|
|
442
|
+
viewportId,
|
|
435
443
|
StudyInstanceUID,
|
|
436
444
|
SeriesInstanceUID
|
|
437
445
|
} = evt;
|
|
438
446
|
return new Promise(async function (resolve, reject) {
|
|
439
|
-
let promptResult = await _askShouldAddMeasurements(UIViewportDialogService,
|
|
447
|
+
let promptResult = await _askShouldAddMeasurements(UIViewportDialogService, viewportId);
|
|
440
448
|
if (promptResult === promptTrackNewSeries_RESPONSE.CREATE_REPORT) {
|
|
441
|
-
promptResult = ctx.isDirty ? await _askSaveDiscardOrCancel(UIViewportDialogService,
|
|
449
|
+
promptResult = ctx.isDirty ? await _askSaveDiscardOrCancel(UIViewportDialogService, viewportId) : promptTrackNewSeries_RESPONSE.SET_STUDY_AND_SERIES;
|
|
442
450
|
}
|
|
443
451
|
resolve({
|
|
444
452
|
userResponse: promptResult,
|
|
445
453
|
StudyInstanceUID,
|
|
446
454
|
SeriesInstanceUID,
|
|
447
|
-
|
|
455
|
+
viewportId,
|
|
448
456
|
isBackupSave: false
|
|
449
457
|
});
|
|
450
458
|
});
|
|
451
459
|
}
|
|
452
|
-
function _askShouldAddMeasurements(uiViewportDialogService,
|
|
460
|
+
function _askShouldAddMeasurements(uiViewportDialogService, viewportId) {
|
|
453
461
|
return new Promise(function (resolve, reject) {
|
|
454
462
|
const message = 'Do you want to add this measurement to the existing report?';
|
|
455
463
|
const actions = [{
|
|
456
|
-
type:
|
|
464
|
+
type: src/* ButtonEnums.type */.LZ.dt.secondary,
|
|
457
465
|
text: 'Cancel',
|
|
458
466
|
value: promptTrackNewSeries_RESPONSE.CANCEL
|
|
459
467
|
}, {
|
|
460
|
-
type:
|
|
468
|
+
type: src/* ButtonEnums.type */.LZ.dt.primary,
|
|
461
469
|
text: 'Create new report',
|
|
462
470
|
value: promptTrackNewSeries_RESPONSE.CREATE_REPORT
|
|
463
471
|
}, {
|
|
464
|
-
type:
|
|
472
|
+
type: src/* ButtonEnums.type */.LZ.dt.primary,
|
|
465
473
|
text: 'Add to existing report',
|
|
466
474
|
value: promptTrackNewSeries_RESPONSE.ADD_SERIES
|
|
467
475
|
}];
|
|
@@ -470,7 +478,7 @@ function _askShouldAddMeasurements(uiViewportDialogService, viewportIndex) {
|
|
|
470
478
|
resolve(result);
|
|
471
479
|
};
|
|
472
480
|
uiViewportDialogService.show({
|
|
473
|
-
|
|
481
|
+
viewportId,
|
|
474
482
|
type: 'info',
|
|
475
483
|
message,
|
|
476
484
|
actions,
|
|
@@ -482,7 +490,7 @@ function _askShouldAddMeasurements(uiViewportDialogService, viewportIndex) {
|
|
|
482
490
|
});
|
|
483
491
|
});
|
|
484
492
|
}
|
|
485
|
-
function _askSaveDiscardOrCancel(UIViewportDialogService,
|
|
493
|
+
function _askSaveDiscardOrCancel(UIViewportDialogService, viewportId) {
|
|
486
494
|
return new Promise(function (resolve, reject) {
|
|
487
495
|
const message = 'You have existing tracked measurements. What would you like to do with your existing tracked measurements?';
|
|
488
496
|
const actions = [{
|
|
@@ -503,7 +511,7 @@ function _askSaveDiscardOrCancel(UIViewportDialogService, viewportIndex) {
|
|
|
503
511
|
resolve(result);
|
|
504
512
|
};
|
|
505
513
|
UIViewportDialogService.show({
|
|
506
|
-
|
|
514
|
+
viewportId,
|
|
507
515
|
type: 'warning',
|
|
508
516
|
message,
|
|
509
517
|
actions,
|
|
@@ -534,25 +542,25 @@ function promptTrackNewStudy(_ref, ctx, evt) {
|
|
|
534
542
|
UIViewportDialogService
|
|
535
543
|
} = servicesManager.services;
|
|
536
544
|
const {
|
|
537
|
-
|
|
545
|
+
viewportId,
|
|
538
546
|
StudyInstanceUID,
|
|
539
547
|
SeriesInstanceUID
|
|
540
548
|
} = evt;
|
|
541
549
|
return new Promise(async function (resolve, reject) {
|
|
542
|
-
let promptResult = await promptTrackNewStudy_askTrackMeasurements(UIViewportDialogService,
|
|
550
|
+
let promptResult = await promptTrackNewStudy_askTrackMeasurements(UIViewportDialogService, viewportId);
|
|
543
551
|
if (promptResult === promptTrackNewStudy_RESPONSE.SET_STUDY_AND_SERIES) {
|
|
544
|
-
promptResult = ctx.isDirty ? await promptTrackNewStudy_askSaveDiscardOrCancel(UIViewportDialogService,
|
|
552
|
+
promptResult = ctx.isDirty ? await promptTrackNewStudy_askSaveDiscardOrCancel(UIViewportDialogService, viewportId) : promptTrackNewStudy_RESPONSE.SET_STUDY_AND_SERIES;
|
|
545
553
|
}
|
|
546
554
|
resolve({
|
|
547
555
|
userResponse: promptResult,
|
|
548
556
|
StudyInstanceUID,
|
|
549
557
|
SeriesInstanceUID,
|
|
550
|
-
|
|
558
|
+
viewportId,
|
|
551
559
|
isBackupSave: false
|
|
552
560
|
});
|
|
553
561
|
});
|
|
554
562
|
}
|
|
555
|
-
function promptTrackNewStudy_askTrackMeasurements(UIViewportDialogService,
|
|
563
|
+
function promptTrackNewStudy_askTrackMeasurements(UIViewportDialogService, viewportId) {
|
|
556
564
|
return new Promise(function (resolve, reject) {
|
|
557
565
|
const message = 'Track measurements for this series?';
|
|
558
566
|
const actions = [{
|
|
@@ -573,7 +581,7 @@ function promptTrackNewStudy_askTrackMeasurements(UIViewportDialogService, viewp
|
|
|
573
581
|
resolve(result);
|
|
574
582
|
};
|
|
575
583
|
UIViewportDialogService.show({
|
|
576
|
-
|
|
584
|
+
viewportId,
|
|
577
585
|
type: 'info',
|
|
578
586
|
message,
|
|
579
587
|
actions,
|
|
@@ -585,7 +593,7 @@ function promptTrackNewStudy_askTrackMeasurements(UIViewportDialogService, viewp
|
|
|
585
593
|
});
|
|
586
594
|
});
|
|
587
595
|
}
|
|
588
|
-
function promptTrackNewStudy_askSaveDiscardOrCancel(UIViewportDialogService,
|
|
596
|
+
function promptTrackNewStudy_askSaveDiscardOrCancel(UIViewportDialogService, viewportId) {
|
|
589
597
|
return new Promise(function (resolve, reject) {
|
|
590
598
|
const message = 'Measurements cannot span across multiple studies. Do you want to save your tracked measurements?';
|
|
591
599
|
const actions = [{
|
|
@@ -606,7 +614,7 @@ function promptTrackNewStudy_askSaveDiscardOrCancel(UIViewportDialogService, vie
|
|
|
606
614
|
resolve(result);
|
|
607
615
|
};
|
|
608
616
|
UIViewportDialogService.show({
|
|
609
|
-
|
|
617
|
+
viewportId,
|
|
610
618
|
type: 'warning',
|
|
611
619
|
message,
|
|
612
620
|
actions,
|
|
@@ -619,70 +627,17 @@ function promptTrackNewStudy_askSaveDiscardOrCancel(UIViewportDialogService, vie
|
|
|
619
627
|
});
|
|
620
628
|
}
|
|
621
629
|
/* harmony default export */ const TrackedMeasurementsContext_promptTrackNewStudy = (promptTrackNewStudy);
|
|
622
|
-
// EXTERNAL MODULE:
|
|
623
|
-
var
|
|
624
|
-
;// CONCATENATED MODULE: ../../../extensions/measurement-tracking/src/_shared/
|
|
625
|
-
|
|
626
|
-
|
|
627
|
-
|
|
628
|
-
|
|
629
|
-
|
|
630
|
-
|
|
631
|
-
|
|
632
|
-
* @param {*} measurements
|
|
633
|
-
* @param {*} options
|
|
634
|
-
* @returns {string[]} displaySetInstanceUIDs
|
|
635
|
-
*/
|
|
636
|
-
async function createReportAsync(servicesManager, commandsManager, dataSource, measurements, options) {
|
|
637
|
-
const {
|
|
638
|
-
displaySetService,
|
|
639
|
-
uiNotificationService,
|
|
640
|
-
uiDialogService
|
|
641
|
-
} = servicesManager.services;
|
|
642
|
-
const loadingDialogId = uiDialogService.create({
|
|
643
|
-
showOverlay: true,
|
|
644
|
-
isDraggable: false,
|
|
645
|
-
centralize: true,
|
|
646
|
-
// TODO: Create a loading indicator component + zeplin design?
|
|
647
|
-
content: Loading
|
|
648
|
-
});
|
|
649
|
-
try {
|
|
650
|
-
const naturalizedReport = await commandsManager.runCommand('storeMeasurements', {
|
|
651
|
-
measurementData: measurements,
|
|
652
|
-
dataSource,
|
|
653
|
-
additionalFindingTypes: ['ArrowAnnotate'],
|
|
654
|
-
options
|
|
655
|
-
}, 'CORNERSTONE_STRUCTURED_REPORT');
|
|
656
|
-
|
|
657
|
-
// The "Mode" route listens for DicomMetadataStore changes
|
|
658
|
-
// When a new instance is added, it listens and
|
|
659
|
-
// automatically calls makeDisplaySets
|
|
660
|
-
core_src.DicomMetadataStore.addInstances([naturalizedReport], true);
|
|
661
|
-
const displaySetInstanceUID = displaySetService.getMostRecentDisplaySet();
|
|
662
|
-
uiNotificationService.show({
|
|
663
|
-
title: 'Create Report',
|
|
664
|
-
message: 'Measurements saved successfully',
|
|
665
|
-
type: 'success'
|
|
666
|
-
});
|
|
667
|
-
return [displaySetInstanceUID];
|
|
668
|
-
} catch (error) {
|
|
669
|
-
uiNotificationService.show({
|
|
670
|
-
title: 'Create Report',
|
|
671
|
-
message: error.message || 'Failed to store measurements',
|
|
672
|
-
type: 'error'
|
|
673
|
-
});
|
|
674
|
-
} finally {
|
|
675
|
-
uiDialogService.dismiss({
|
|
676
|
-
id: loadingDialogId
|
|
677
|
-
});
|
|
678
|
-
}
|
|
679
|
-
}
|
|
680
|
-
function Loading() {
|
|
681
|
-
return /*#__PURE__*/react.createElement("div", {
|
|
682
|
-
className: "text-primary-active"
|
|
683
|
-
}, "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;
|
|
684
640
|
}
|
|
685
|
-
/* harmony default export */ const _shared_createReportAsync = (createReportAsync);
|
|
686
641
|
;// CONCATENATED MODULE: ../../../extensions/measurement-tracking/src/_shared/PROMPT_RESPONSES.js
|
|
687
642
|
const PROMPT_RESPONSES_RESPONSE = {
|
|
688
643
|
NO_NEVER: -1,
|
|
@@ -693,132 +648,10 @@ const PROMPT_RESPONSES_RESPONSE = {
|
|
|
693
648
|
NO_NOT_FOR_SERIES: 4
|
|
694
649
|
};
|
|
695
650
|
/* harmony default export */ const PROMPT_RESPONSES = (PROMPT_RESPONSES_RESPONSE);
|
|
696
|
-
;// CONCATENATED MODULE: ../../../extensions/measurement-tracking/src/_shared/createReportDialogPrompt.tsx
|
|
697
|
-
/* eslint-disable react/display-name */
|
|
698
|
-
|
|
699
|
-
|
|
700
|
-
|
|
701
|
-
function createReportDialogPrompt(uiDialogService) {
|
|
702
|
-
return new Promise(function (resolve, reject) {
|
|
703
|
-
let dialogId = undefined;
|
|
704
|
-
const _handleClose = () => {
|
|
705
|
-
// Dismiss dialog
|
|
706
|
-
uiDialogService.dismiss({
|
|
707
|
-
id: dialogId
|
|
708
|
-
});
|
|
709
|
-
// Notify of cancel action
|
|
710
|
-
resolve({
|
|
711
|
-
action: PROMPT_RESPONSES.CANCEL,
|
|
712
|
-
value: undefined
|
|
713
|
-
});
|
|
714
|
-
};
|
|
715
|
-
|
|
716
|
-
/**
|
|
717
|
-
*
|
|
718
|
-
* @param {string} param0.action - value of action performed
|
|
719
|
-
* @param {string} param0.value - value from input field
|
|
720
|
-
*/
|
|
721
|
-
const _handleFormSubmit = _ref => {
|
|
722
|
-
let {
|
|
723
|
-
action,
|
|
724
|
-
value
|
|
725
|
-
} = _ref;
|
|
726
|
-
uiDialogService.dismiss({
|
|
727
|
-
id: dialogId
|
|
728
|
-
});
|
|
729
|
-
switch (action.id) {
|
|
730
|
-
case 'save':
|
|
731
|
-
resolve({
|
|
732
|
-
action: PROMPT_RESPONSES.CREATE_REPORT,
|
|
733
|
-
value: value.label
|
|
734
|
-
});
|
|
735
|
-
break;
|
|
736
|
-
case 'cancel':
|
|
737
|
-
resolve({
|
|
738
|
-
action: PROMPT_RESPONSES.CANCEL,
|
|
739
|
-
value: undefined
|
|
740
|
-
});
|
|
741
|
-
break;
|
|
742
|
-
}
|
|
743
|
-
};
|
|
744
|
-
dialogId = uiDialogService.create({
|
|
745
|
-
centralize: true,
|
|
746
|
-
isDraggable: false,
|
|
747
|
-
content: src/* Dialog */.Vq,
|
|
748
|
-
useLastPosition: false,
|
|
749
|
-
showOverlay: true,
|
|
750
|
-
contentProps: {
|
|
751
|
-
title: 'Create Report',
|
|
752
|
-
value: {
|
|
753
|
-
label: ''
|
|
754
|
-
},
|
|
755
|
-
noCloseButton: true,
|
|
756
|
-
onClose: _handleClose,
|
|
757
|
-
actions: [{
|
|
758
|
-
id: 'cancel',
|
|
759
|
-
text: 'Cancel',
|
|
760
|
-
type: 'primary'
|
|
761
|
-
}, {
|
|
762
|
-
id: 'save',
|
|
763
|
-
text: 'Save',
|
|
764
|
-
type: 'secondary'
|
|
765
|
-
}],
|
|
766
|
-
// TODO: Should be on button press...
|
|
767
|
-
onSubmit: _handleFormSubmit,
|
|
768
|
-
body: _ref2 => {
|
|
769
|
-
let {
|
|
770
|
-
value,
|
|
771
|
-
setValue
|
|
772
|
-
} = _ref2;
|
|
773
|
-
const onChangeHandler = event => {
|
|
774
|
-
event.persist();
|
|
775
|
-
setValue(value => ({
|
|
776
|
-
...value,
|
|
777
|
-
label: event.target.value
|
|
778
|
-
}));
|
|
779
|
-
};
|
|
780
|
-
const onKeyPressHandler = event => {
|
|
781
|
-
if (event.key === 'Enter') {
|
|
782
|
-
uiDialogService.dismiss({
|
|
783
|
-
id: dialogId
|
|
784
|
-
});
|
|
785
|
-
resolve({
|
|
786
|
-
action: PROMPT_RESPONSES.CREATE_REPORT,
|
|
787
|
-
value: value.label
|
|
788
|
-
});
|
|
789
|
-
}
|
|
790
|
-
};
|
|
791
|
-
return /*#__PURE__*/react.createElement("div", {
|
|
792
|
-
className: ""
|
|
793
|
-
}, /*#__PURE__*/react.createElement(src/* Input */.II, {
|
|
794
|
-
label: "Enter the report name",
|
|
795
|
-
labelClassName: "text-white grow leading-[1.2] text-[14px]",
|
|
796
|
-
autoFocus: true,
|
|
797
|
-
className: "bg-black border-primary-main grow",
|
|
798
|
-
type: "text",
|
|
799
|
-
value: value.label,
|
|
800
|
-
onChange: onChangeHandler,
|
|
801
|
-
onKeyPress: onKeyPressHandler
|
|
802
|
-
}));
|
|
803
|
-
}
|
|
804
|
-
}
|
|
805
|
-
});
|
|
806
|
-
});
|
|
807
|
-
}
|
|
808
|
-
;// CONCATENATED MODULE: ../../../extensions/measurement-tracking/src/_shared/getNextSRSeriesNumber.js
|
|
809
|
-
const MIN_SR_SERIES_NUMBER = 4700;
|
|
810
|
-
function getNextSRSeriesNumber(displaySetService) {
|
|
811
|
-
const activeDisplaySets = displaySetService.getActiveDisplaySets();
|
|
812
|
-
const srDisplaySets = activeDisplaySets.filter(ds => ds.Modality === 'SR');
|
|
813
|
-
const srSeriesNumbers = srDisplaySets.map(ds => ds.SeriesNumber);
|
|
814
|
-
const maxSeriesNumber = Math.max(...srSeriesNumbers, MIN_SR_SERIES_NUMBER);
|
|
815
|
-
return maxSeriesNumber + 1;
|
|
816
|
-
}
|
|
817
651
|
;// CONCATENATED MODULE: ../../../extensions/measurement-tracking/src/contexts/TrackedMeasurementsContext/promptSaveReport.js
|
|
818
652
|
|
|
819
653
|
|
|
820
654
|
|
|
821
|
-
|
|
822
655
|
function promptSaveReport(_ref, ctx, evt) {
|
|
823
656
|
let {
|
|
824
657
|
servicesManager,
|
|
@@ -830,7 +663,7 @@ function promptSaveReport(_ref, ctx, evt) {
|
|
|
830
663
|
measurementService,
|
|
831
664
|
displaySetService
|
|
832
665
|
} = servicesManager.services;
|
|
833
|
-
const
|
|
666
|
+
const viewportId = evt.viewportId === undefined ? evt.data.viewportId : evt.viewportId;
|
|
834
667
|
const isBackupSave = evt.isBackupSave === undefined ? evt.data.isBackupSave : evt.isBackupSave;
|
|
835
668
|
const StudyInstanceUID = evt?.data?.StudyInstanceUID;
|
|
836
669
|
const SeriesInstanceUID = evt?.data?.SeriesInstanceUID;
|
|
@@ -841,7 +674,9 @@ function promptSaveReport(_ref, ctx, evt) {
|
|
|
841
674
|
let displaySetInstanceUIDs;
|
|
842
675
|
return new Promise(async function (resolve, reject) {
|
|
843
676
|
// TODO: Fallback if (uiDialogService) {
|
|
844
|
-
const promptResult = await createReportDialogPrompt(uiDialogService
|
|
677
|
+
const promptResult = await (0,default_src.createReportDialogPrompt)(uiDialogService, {
|
|
678
|
+
extensionManager
|
|
679
|
+
});
|
|
845
680
|
if (promptResult.action === PROMPT_RESPONSES.CREATE_REPORT) {
|
|
846
681
|
const dataSources = extensionManager.getDataSources();
|
|
847
682
|
const dataSource = dataSources[0];
|
|
@@ -853,9 +688,20 @@ function promptSaveReport(_ref, ctx, evt) {
|
|
|
853
688
|
: promptResult.value; // provided value
|
|
854
689
|
|
|
855
690
|
const SeriesNumber = getNextSRSeriesNumber(displaySetService);
|
|
856
|
-
|
|
857
|
-
|
|
858
|
-
|
|
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
|
|
859
705
|
});
|
|
860
706
|
} else if (promptResult.action === PROMPT_RESPONSES.CANCEL) {
|
|
861
707
|
// Do nothing
|
|
@@ -865,16 +711,17 @@ function promptSaveReport(_ref, ctx, evt) {
|
|
|
865
711
|
createdDisplaySetInstanceUIDs: displaySetInstanceUIDs,
|
|
866
712
|
StudyInstanceUID,
|
|
867
713
|
SeriesInstanceUID,
|
|
868
|
-
|
|
714
|
+
viewportId,
|
|
869
715
|
isBackupSave
|
|
870
716
|
});
|
|
871
717
|
});
|
|
872
718
|
}
|
|
873
719
|
/* harmony default export */ const TrackedMeasurementsContext_promptSaveReport = (promptSaveReport);
|
|
874
720
|
// EXTERNAL MODULE: ../../../extensions/cornerstone-dicom-sr/src/index.tsx + 15 modules
|
|
875
|
-
var cornerstone_dicom_sr_src = __webpack_require__(
|
|
721
|
+
var cornerstone_dicom_sr_src = __webpack_require__(42170);
|
|
876
722
|
;// CONCATENATED MODULE: ../../../extensions/measurement-tracking/src/contexts/TrackedMeasurementsContext/promptHydrateStructuredReport.js
|
|
877
723
|
|
|
724
|
+
|
|
878
725
|
const promptHydrateStructuredReport_RESPONSE = {
|
|
879
726
|
NO_NEVER: -1,
|
|
880
727
|
CANCEL: 0,
|
|
@@ -887,19 +734,20 @@ const promptHydrateStructuredReport_RESPONSE = {
|
|
|
887
734
|
function promptHydrateStructuredReport(_ref, ctx, evt) {
|
|
888
735
|
let {
|
|
889
736
|
servicesManager,
|
|
890
|
-
extensionManager
|
|
737
|
+
extensionManager,
|
|
738
|
+
appConfig
|
|
891
739
|
} = _ref;
|
|
892
740
|
const {
|
|
893
741
|
uiViewportDialogService,
|
|
894
742
|
displaySetService
|
|
895
743
|
} = servicesManager.services;
|
|
896
744
|
const {
|
|
897
|
-
|
|
745
|
+
viewportId,
|
|
898
746
|
displaySetInstanceUID
|
|
899
747
|
} = evt;
|
|
900
748
|
const srDisplaySet = displaySetService.getDisplaySetByUID(displaySetInstanceUID);
|
|
901
749
|
return new Promise(async function (resolve, reject) {
|
|
902
|
-
const promptResult = await promptHydrateStructuredReport_askTrackMeasurements(uiViewportDialogService,
|
|
750
|
+
const promptResult = await promptHydrateStructuredReport_askTrackMeasurements(uiViewportDialogService, viewportId);
|
|
903
751
|
|
|
904
752
|
// Need to do action here... So we can set state...
|
|
905
753
|
let StudyInstanceUID, SeriesInstanceUIDs;
|
|
@@ -907,7 +755,8 @@ function promptHydrateStructuredReport(_ref, ctx, evt) {
|
|
|
907
755
|
console.warn('!! HYDRATING STRUCTURED REPORT');
|
|
908
756
|
const hydrationResult = (0,cornerstone_dicom_sr_src.hydrateStructuredReport)({
|
|
909
757
|
servicesManager,
|
|
910
|
-
extensionManager
|
|
758
|
+
extensionManager,
|
|
759
|
+
appConfig
|
|
911
760
|
}, displaySetInstanceUID);
|
|
912
761
|
StudyInstanceUID = hydrationResult.StudyInstanceUID;
|
|
913
762
|
SeriesInstanceUIDs = hydrationResult.SeriesInstanceUIDs;
|
|
@@ -916,21 +765,21 @@ function promptHydrateStructuredReport(_ref, ctx, evt) {
|
|
|
916
765
|
userResponse: promptResult,
|
|
917
766
|
displaySetInstanceUID: evt.displaySetInstanceUID,
|
|
918
767
|
srSeriesInstanceUID: srDisplaySet.SeriesInstanceUID,
|
|
919
|
-
|
|
768
|
+
viewportId,
|
|
920
769
|
StudyInstanceUID,
|
|
921
770
|
SeriesInstanceUIDs
|
|
922
771
|
});
|
|
923
772
|
});
|
|
924
773
|
}
|
|
925
|
-
function promptHydrateStructuredReport_askTrackMeasurements(uiViewportDialogService,
|
|
774
|
+
function promptHydrateStructuredReport_askTrackMeasurements(uiViewportDialogService, viewportId) {
|
|
926
775
|
return new Promise(function (resolve, reject) {
|
|
927
776
|
const message = 'Do you want to continue tracking measurements for this study?';
|
|
928
777
|
const actions = [{
|
|
929
|
-
type:
|
|
778
|
+
type: src/* ButtonEnums.type */.LZ.dt.secondary,
|
|
930
779
|
text: 'No',
|
|
931
780
|
value: promptHydrateStructuredReport_RESPONSE.CANCEL
|
|
932
781
|
}, {
|
|
933
|
-
type:
|
|
782
|
+
type: src/* ButtonEnums.type */.LZ.dt.primary,
|
|
934
783
|
text: 'Yes',
|
|
935
784
|
value: promptHydrateStructuredReport_RESPONSE.HYDRATE_REPORT
|
|
936
785
|
}];
|
|
@@ -939,7 +788,7 @@ function promptHydrateStructuredReport_askTrackMeasurements(uiViewportDialogServ
|
|
|
939
788
|
resolve(result);
|
|
940
789
|
};
|
|
941
790
|
uiViewportDialogService.show({
|
|
942
|
-
|
|
791
|
+
viewportId,
|
|
943
792
|
type: 'info',
|
|
944
793
|
message,
|
|
945
794
|
actions,
|
|
@@ -963,7 +812,7 @@ function hydrateStructuredReport(_ref, ctx, evt) {
|
|
|
963
812
|
displaySetService
|
|
964
813
|
} = servicesManager.services;
|
|
965
814
|
const {
|
|
966
|
-
|
|
815
|
+
viewportId,
|
|
967
816
|
displaySetInstanceUID
|
|
968
817
|
} = evt;
|
|
969
818
|
const srDisplaySet = displaySetService.getDisplaySetByUID(displaySetInstanceUID);
|
|
@@ -977,13 +826,15 @@ function hydrateStructuredReport(_ref, ctx, evt) {
|
|
|
977
826
|
resolve({
|
|
978
827
|
displaySetInstanceUID: evt.displaySetInstanceUID,
|
|
979
828
|
srSeriesInstanceUID: srDisplaySet.SeriesInstanceUID,
|
|
980
|
-
|
|
829
|
+
viewportId,
|
|
981
830
|
StudyInstanceUID,
|
|
982
831
|
SeriesInstanceUIDs
|
|
983
832
|
});
|
|
984
833
|
});
|
|
985
834
|
}
|
|
986
835
|
/* harmony default export */ const TrackedMeasurementsContext_hydrateStructuredReport = (hydrateStructuredReport);
|
|
836
|
+
// EXTERNAL MODULE: ./state/index.js + 1 modules
|
|
837
|
+
var state = __webpack_require__(62657);
|
|
987
838
|
;// CONCATENATED MODULE: ../../../extensions/measurement-tracking/src/contexts/TrackedMeasurementsContext/TrackedMeasurementsContext.tsx
|
|
988
839
|
|
|
989
840
|
|
|
@@ -997,6 +848,7 @@ function hydrateStructuredReport(_ref, ctx, evt) {
|
|
|
997
848
|
|
|
998
849
|
|
|
999
850
|
|
|
851
|
+
|
|
1000
852
|
const TrackedMeasurementsContext = /*#__PURE__*/react.createContext();
|
|
1001
853
|
TrackedMeasurementsContext.displayName = 'TrackedMeasurementsContext';
|
|
1002
854
|
const useTrackedMeasurements = () => (0,react.useContext)(TrackedMeasurementsContext);
|
|
@@ -1017,9 +869,10 @@ _ref2 // Component props
|
|
|
1017
869
|
let {
|
|
1018
870
|
children
|
|
1019
871
|
} = _ref2;
|
|
872
|
+
const [appConfig] = (0,state/* useAppConfig */.M)();
|
|
1020
873
|
const [viewportGrid, viewportGridService] = (0,src/* useViewportGrid */.O_)();
|
|
1021
874
|
const {
|
|
1022
|
-
|
|
875
|
+
activeViewportId,
|
|
1023
876
|
viewports
|
|
1024
877
|
} = viewportGrid;
|
|
1025
878
|
const {
|
|
@@ -1031,11 +884,12 @@ _ref2 // Component props
|
|
|
1031
884
|
jumpToFirstMeasurementInActiveViewport: (ctx, evt) => {
|
|
1032
885
|
const {
|
|
1033
886
|
trackedStudy,
|
|
1034
|
-
trackedSeries
|
|
887
|
+
trackedSeries,
|
|
888
|
+
activeViewportId
|
|
1035
889
|
} = ctx;
|
|
1036
890
|
const measurements = measurementService.getMeasurements();
|
|
1037
891
|
const trackedMeasurements = measurements.filter(m => trackedStudy === m.referenceStudyUID && trackedSeries.includes(m.referenceSeriesUID));
|
|
1038
|
-
console.log('jumping to measurement reset viewport',
|
|
892
|
+
console.log('jumping to measurement reset viewport', activeViewportId, trackedMeasurements[0]);
|
|
1039
893
|
const referencedDisplaySetUID = trackedMeasurements[0].displaySetInstanceUID;
|
|
1040
894
|
const referencedDisplaySet = displaySetService.getDisplaySetByUID(referencedDisplaySetUID);
|
|
1041
895
|
const referencedImages = referencedDisplaySet.images;
|
|
@@ -1055,7 +909,7 @@ _ref2 // Component props
|
|
|
1055
909
|
}
|
|
1056
910
|
}
|
|
1057
911
|
viewportGridService.setDisplaySetsForViewport({
|
|
1058
|
-
|
|
912
|
+
viewportId: activeViewportId,
|
|
1059
913
|
displaySetInstanceUIDs: [referencedDisplaySetUID],
|
|
1060
914
|
viewportOptions: {
|
|
1061
915
|
initialImageOptions: {
|
|
@@ -1066,9 +920,9 @@ _ref2 // Component props
|
|
|
1066
920
|
},
|
|
1067
921
|
showStructuredReportDisplaySetInActiveViewport: (ctx, evt) => {
|
|
1068
922
|
if (evt.data.createdDisplaySetInstanceUIDs.length > 0) {
|
|
1069
|
-
const StructuredReportDisplaySetInstanceUID = evt.data.createdDisplaySetInstanceUIDs[0]
|
|
923
|
+
const StructuredReportDisplaySetInstanceUID = evt.data.createdDisplaySetInstanceUIDs[0];
|
|
1070
924
|
viewportGridService.setDisplaySetsForViewport({
|
|
1071
|
-
|
|
925
|
+
viewportId: evt.data.viewportId,
|
|
1072
926
|
displaySetInstanceUIDs: [StructuredReportDisplaySetInstanceUID]
|
|
1073
927
|
});
|
|
1074
928
|
}
|
|
@@ -1092,28 +946,34 @@ _ref2 // Component props
|
|
|
1092
946
|
machineOptions.services = Object.assign({}, machineOptions.services, {
|
|
1093
947
|
promptBeginTracking: TrackedMeasurementsContext_promptBeginTracking.bind(null, {
|
|
1094
948
|
servicesManager,
|
|
1095
|
-
extensionManager
|
|
949
|
+
extensionManager,
|
|
950
|
+
appConfig
|
|
1096
951
|
}),
|
|
1097
952
|
promptTrackNewSeries: TrackedMeasurementsContext_promptTrackNewSeries.bind(null, {
|
|
1098
953
|
servicesManager,
|
|
1099
|
-
extensionManager
|
|
954
|
+
extensionManager,
|
|
955
|
+
appConfig
|
|
1100
956
|
}),
|
|
1101
957
|
promptTrackNewStudy: TrackedMeasurementsContext_promptTrackNewStudy.bind(null, {
|
|
1102
958
|
servicesManager,
|
|
1103
|
-
extensionManager
|
|
959
|
+
extensionManager,
|
|
960
|
+
appConfig
|
|
1104
961
|
}),
|
|
1105
962
|
promptSaveReport: TrackedMeasurementsContext_promptSaveReport.bind(null, {
|
|
1106
963
|
servicesManager,
|
|
1107
964
|
commandsManager,
|
|
1108
|
-
extensionManager
|
|
965
|
+
extensionManager,
|
|
966
|
+
appConfig
|
|
1109
967
|
}),
|
|
1110
968
|
promptHydrateStructuredReport: TrackedMeasurementsContext_promptHydrateStructuredReport.bind(null, {
|
|
1111
969
|
servicesManager,
|
|
1112
|
-
extensionManager
|
|
970
|
+
extensionManager,
|
|
971
|
+
appConfig
|
|
1113
972
|
}),
|
|
1114
973
|
hydrateStructuredReport: TrackedMeasurementsContext_hydrateStructuredReport.bind(null, {
|
|
1115
974
|
servicesManager,
|
|
1116
|
-
extensionManager
|
|
975
|
+
extensionManager,
|
|
976
|
+
appConfig
|
|
1117
977
|
})
|
|
1118
978
|
});
|
|
1119
979
|
|
|
@@ -1126,13 +986,19 @@ _ref2 // Component props
|
|
|
1126
986
|
// - Fix viewport border resize
|
|
1127
987
|
// - created/destroyed hooks for extensions (cornerstone measurement subscriptions in it's `init`)
|
|
1128
988
|
|
|
1129
|
-
const measurementTrackingMachine = (0,es
|
|
1130
|
-
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]);
|
|
1131
997
|
|
|
1132
998
|
// ~~ Listen for changes to ViewportGrid for potential SRs hung in panes when idle
|
|
1133
999
|
(0,react.useEffect)(() => {
|
|
1134
|
-
if (viewports.
|
|
1135
|
-
const activeViewport = viewports
|
|
1000
|
+
if (viewports.size > 0) {
|
|
1001
|
+
const activeViewport = viewports.get(activeViewportId);
|
|
1136
1002
|
if (!activeViewport || !activeViewport?.displaySetInstanceUIDs?.length) {
|
|
1137
1003
|
return;
|
|
1138
1004
|
}
|
|
@@ -1171,11 +1037,11 @@ _ref2 // Component props
|
|
|
1171
1037
|
sendTrackedMeasurementsEvent('PROMPT_HYDRATE_SR', {
|
|
1172
1038
|
displaySetInstanceUID: displaySet.displaySetInstanceUID,
|
|
1173
1039
|
SeriesInstanceUID: displaySet.SeriesInstanceUID,
|
|
1174
|
-
|
|
1040
|
+
viewportId: activeViewportId
|
|
1175
1041
|
});
|
|
1176
1042
|
}
|
|
1177
1043
|
}
|
|
1178
|
-
}, [
|
|
1044
|
+
}, [activeViewportId, sendTrackedMeasurementsEvent, servicesManager.services, viewports]);
|
|
1179
1045
|
return /*#__PURE__*/react.createElement(TrackedMeasurementsContext.Provider, {
|
|
1180
1046
|
value: [trackedMeasurements, sendTrackedMeasurementsEvent]
|
|
1181
1047
|
}, children);
|
|
@@ -1184,7 +1050,8 @@ TrackedMeasurementsContextProvider.propTypes = {
|
|
|
1184
1050
|
children: prop_types_default().oneOf([(prop_types_default()).func, (prop_types_default()).node]),
|
|
1185
1051
|
servicesManager: (prop_types_default()).object.isRequired,
|
|
1186
1052
|
commandsManager: (prop_types_default()).object.isRequired,
|
|
1187
|
-
extensionManager: (prop_types_default()).object.isRequired
|
|
1053
|
+
extensionManager: (prop_types_default()).object.isRequired,
|
|
1054
|
+
appConfig: (prop_types_default()).object
|
|
1188
1055
|
};
|
|
1189
1056
|
|
|
1190
1057
|
;// CONCATENATED MODULE: ../../../extensions/measurement-tracking/src/contexts/TrackedMeasurementsContext/index.js
|
|
@@ -1215,7 +1082,7 @@ function getContextModule(_ref) {
|
|
|
1215
1082
|
|
|
1216
1083
|
/***/ }),
|
|
1217
1084
|
|
|
1218
|
-
/***/
|
|
1085
|
+
/***/ 28030:
|
|
1219
1086
|
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
|
|
1220
1087
|
|
|
1221
1088
|
// ESM COMPAT FLAG
|
|
@@ -1226,23 +1093,29 @@ __webpack_require__.d(__webpack_exports__, {
|
|
|
1226
1093
|
"default": () => (/* binding */ measurement_tracking_src)
|
|
1227
1094
|
});
|
|
1228
1095
|
|
|
1229
|
-
// EXTERNAL MODULE: ../../../extensions/measurement-tracking/src/getContextModule.tsx +
|
|
1230
|
-
var getContextModule = __webpack_require__(
|
|
1096
|
+
// EXTERNAL MODULE: ../../../extensions/measurement-tracking/src/getContextModule.tsx + 12 modules
|
|
1097
|
+
var getContextModule = __webpack_require__(41832);
|
|
1231
1098
|
// EXTERNAL MODULE: ../../../node_modules/react/index.js
|
|
1232
|
-
var react = __webpack_require__(
|
|
1099
|
+
var react = __webpack_require__(43001);
|
|
1233
1100
|
// EXTERNAL MODULE: ../../../node_modules/prop-types/index.js
|
|
1234
|
-
var prop_types = __webpack_require__(
|
|
1101
|
+
var prop_types = __webpack_require__(3827);
|
|
1235
1102
|
var prop_types_default = /*#__PURE__*/__webpack_require__.n(prop_types);
|
|
1236
|
-
// EXTERNAL MODULE:
|
|
1237
|
-
var
|
|
1238
|
-
// EXTERNAL MODULE:
|
|
1239
|
-
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);
|
|
1240
1111
|
;// CONCATENATED MODULE: ../../../extensions/measurement-tracking/src/panels/PanelStudyBrowserTracking/PanelStudyBrowserTracking.tsx
|
|
1241
1112
|
|
|
1242
1113
|
|
|
1243
1114
|
|
|
1244
1115
|
|
|
1245
1116
|
|
|
1117
|
+
|
|
1118
|
+
|
|
1246
1119
|
const {
|
|
1247
1120
|
formatDate
|
|
1248
1121
|
} = src.utils;
|
|
@@ -1260,12 +1133,15 @@ function PanelStudyBrowserTracking(_ref) {
|
|
|
1260
1133
|
dataSource
|
|
1261
1134
|
} = _ref;
|
|
1262
1135
|
const {
|
|
1263
|
-
measurementService,
|
|
1264
1136
|
displaySetService,
|
|
1265
1137
|
uiDialogService,
|
|
1266
1138
|
hangingProtocolService,
|
|
1267
1139
|
uiNotificationService
|
|
1268
1140
|
} = servicesManager.services;
|
|
1141
|
+
const navigate = (0,dist/* useNavigate */.s0)();
|
|
1142
|
+
const {
|
|
1143
|
+
t
|
|
1144
|
+
} = (0,es/* useTranslation */.$G)('Common');
|
|
1269
1145
|
|
|
1270
1146
|
// Normally you nest the components so the tree isn't so deep, and the data
|
|
1271
1147
|
// doesn't have to have such an intense shape. This works well enough for now.
|
|
@@ -1274,10 +1150,8 @@ function PanelStudyBrowserTracking(_ref) {
|
|
|
1274
1150
|
StudyInstanceUIDs
|
|
1275
1151
|
} = (0,ui_src/* useImageViewer */.zG)();
|
|
1276
1152
|
const [{
|
|
1277
|
-
|
|
1278
|
-
viewports
|
|
1279
|
-
numCols,
|
|
1280
|
-
numRows
|
|
1153
|
+
activeViewportId,
|
|
1154
|
+
viewports
|
|
1281
1155
|
}, viewportGridService] = (0,ui_src/* useViewportGrid */.O_)();
|
|
1282
1156
|
const [trackedMeasurements, sendTrackedMeasurementsEvent] = (0,getContextModule/* useTrackedMeasurements */.I)();
|
|
1283
1157
|
const [activeTabName, setActiveTabName] = (0,react.useState)('primary');
|
|
@@ -1288,9 +1162,9 @@ function PanelStudyBrowserTracking(_ref) {
|
|
|
1288
1162
|
const [jumpToDisplaySet, setJumpToDisplaySet] = (0,react.useState)(null);
|
|
1289
1163
|
const onDoubleClickThumbnailHandler = displaySetInstanceUID => {
|
|
1290
1164
|
let updatedViewports = [];
|
|
1291
|
-
const
|
|
1165
|
+
const viewportId = activeViewportId;
|
|
1292
1166
|
try {
|
|
1293
|
-
updatedViewports = hangingProtocolService.getViewportsRequireUpdate(
|
|
1167
|
+
updatedViewports = hangingProtocolService.getViewportsRequireUpdate(viewportId, displaySetInstanceUID);
|
|
1294
1168
|
} catch (error) {
|
|
1295
1169
|
console.warn(error);
|
|
1296
1170
|
uiNotificationService.show({
|
|
@@ -1302,37 +1176,7 @@ function PanelStudyBrowserTracking(_ref) {
|
|
|
1302
1176
|
}
|
|
1303
1177
|
viewportGridService.setDisplaySetsForViewports(updatedViewports);
|
|
1304
1178
|
};
|
|
1305
|
-
const activeViewportDisplaySetInstanceUIDs = viewports
|
|
1306
|
-
(0,react.useEffect)(() => {
|
|
1307
|
-
const added = measurementService.EVENTS.MEASUREMENT_ADDED;
|
|
1308
|
-
const addedRaw = measurementService.EVENTS.RAW_MEASUREMENT_ADDED;
|
|
1309
|
-
const subscriptions = [];
|
|
1310
|
-
[added, addedRaw].forEach(evt => {
|
|
1311
|
-
subscriptions.push(measurementService.subscribe(evt, _ref2 => {
|
|
1312
|
-
let {
|
|
1313
|
-
source,
|
|
1314
|
-
measurement
|
|
1315
|
-
} = _ref2;
|
|
1316
|
-
const {
|
|
1317
|
-
referenceSeriesUID: SeriesInstanceUID,
|
|
1318
|
-
referenceStudyUID: StudyInstanceUID
|
|
1319
|
-
} = measurement;
|
|
1320
|
-
sendTrackedMeasurementsEvent('SET_DIRTY', {
|
|
1321
|
-
SeriesInstanceUID
|
|
1322
|
-
});
|
|
1323
|
-
sendTrackedMeasurementsEvent('TRACK_SERIES', {
|
|
1324
|
-
viewportIndex: activeViewportIndex,
|
|
1325
|
-
StudyInstanceUID,
|
|
1326
|
-
SeriesInstanceUID
|
|
1327
|
-
});
|
|
1328
|
-
}).unsubscribe);
|
|
1329
|
-
});
|
|
1330
|
-
return () => {
|
|
1331
|
-
subscriptions.forEach(unsub => {
|
|
1332
|
-
unsub();
|
|
1333
|
-
});
|
|
1334
|
-
};
|
|
1335
|
-
}, [measurementService, activeViewportIndex, sendTrackedMeasurementsEvent]);
|
|
1179
|
+
const activeViewportDisplaySetInstanceUIDs = viewports.get(activeViewportId)?.displaySetInstanceUIDs;
|
|
1336
1180
|
const {
|
|
1337
1181
|
trackedSeries
|
|
1338
1182
|
} = trackedMeasurements.context;
|
|
@@ -1345,6 +1189,10 @@ function PanelStudyBrowserTracking(_ref) {
|
|
|
1345
1189
|
const qidoForStudyUID = await dataSource.query.studies.search({
|
|
1346
1190
|
studyInstanceUid: StudyInstanceUID
|
|
1347
1191
|
});
|
|
1192
|
+
if (!qidoForStudyUID?.length) {
|
|
1193
|
+
navigate('/notfoundstudy', '_self');
|
|
1194
|
+
throw new Error('Invalid study URL');
|
|
1195
|
+
}
|
|
1348
1196
|
let qidoStudiesForPatient = qidoForStudyUID;
|
|
1349
1197
|
|
|
1350
1198
|
// try to fetch the prior studies based on the patientID if the
|
|
@@ -1358,7 +1206,7 @@ function PanelStudyBrowserTracking(_ref) {
|
|
|
1358
1206
|
const actuallyMappedStudies = mappedStudies.map(qidoStudy => {
|
|
1359
1207
|
return {
|
|
1360
1208
|
studyInstanceUid: qidoStudy.StudyInstanceUID,
|
|
1361
|
-
date: formatDate(qidoStudy.StudyDate),
|
|
1209
|
+
date: formatDate(qidoStudy.StudyDate) || t('NoStudyDate'),
|
|
1362
1210
|
description: qidoStudy.StudyDescription,
|
|
1363
1211
|
modalities: qidoStudy.ModalitiesInStudy,
|
|
1364
1212
|
numInstances: qidoStudy.NumInstances
|
|
@@ -1390,17 +1238,18 @@ function PanelStudyBrowserTracking(_ref) {
|
|
|
1390
1238
|
const imageIds = dataSource.getImageIdsForDisplaySet(displaySet);
|
|
1391
1239
|
const imageId = imageIds[Math.floor(imageIds.length / 2)];
|
|
1392
1240
|
|
|
1393
|
-
// TODO: Is it okay that imageIds are not returned here for SR
|
|
1394
|
-
if (imageId) {
|
|
1395
|
-
|
|
1396
|
-
newImageSrcEntry[dSet.displaySetInstanceUID] = await getImageSrc(imageId);
|
|
1397
|
-
setThumbnailImageSrcMap(prevState => {
|
|
1398
|
-
return {
|
|
1399
|
-
...prevState,
|
|
1400
|
-
...newImageSrcEntry
|
|
1401
|
-
};
|
|
1402
|
-
});
|
|
1241
|
+
// TODO: Is it okay that imageIds are not returned here for SR displaySets?
|
|
1242
|
+
if (!imageId || displaySet?.unsupported) {
|
|
1243
|
+
return;
|
|
1403
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
|
+
});
|
|
1404
1253
|
});
|
|
1405
1254
|
}, [displaySetService, dataSource, getImageSrc]);
|
|
1406
1255
|
|
|
@@ -1427,6 +1276,9 @@ function PanelStudyBrowserTracking(_ref) {
|
|
|
1427
1276
|
const displaySetInstanceUID = dSet.displaySetInstanceUID;
|
|
1428
1277
|
const newImageSrcEntry = {};
|
|
1429
1278
|
const displaySet = displaySetService.getDisplaySetByUID(displaySetInstanceUID);
|
|
1279
|
+
if (displaySet?.unsupported) {
|
|
1280
|
+
return;
|
|
1281
|
+
}
|
|
1430
1282
|
if (options.madeInClient) {
|
|
1431
1283
|
setJumpToDisplaySet(displaySetInstanceUID);
|
|
1432
1284
|
}
|
|
@@ -1434,31 +1286,41 @@ function PanelStudyBrowserTracking(_ref) {
|
|
|
1434
1286
|
const imageId = imageIds[Math.floor(imageIds.length / 2)];
|
|
1435
1287
|
|
|
1436
1288
|
// TODO: Is it okay that imageIds are not returned here for SR displaysets?
|
|
1437
|
-
if (imageId) {
|
|
1438
|
-
|
|
1439
|
-
newImageSrcEntry[displaySetInstanceUID] = await getImageSrc(imageId);
|
|
1440
|
-
setThumbnailImageSrcMap(prevState => {
|
|
1441
|
-
return {
|
|
1442
|
-
...prevState,
|
|
1443
|
-
...newImageSrcEntry
|
|
1444
|
-
};
|
|
1445
|
-
});
|
|
1289
|
+
if (!imageId) {
|
|
1290
|
+
return;
|
|
1446
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
|
+
});
|
|
1447
1301
|
});
|
|
1448
1302
|
});
|
|
1449
|
-
|
|
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)(() => {
|
|
1450
1309
|
// TODO: Will this always hold _all_ the displaySets we care about?
|
|
1451
1310
|
// DISPLAY_SETS_CHANGED returns `DisplaySerService.activeDisplaySets`
|
|
1452
1311
|
const SubscriptionDisplaySetsChanged = displaySetService.subscribe(displaySetService.EVENTS.DISPLAY_SETS_CHANGED, changedDisplaySets => {
|
|
1453
1312
|
const mappedDisplaySets = _mapDisplaySets(changedDisplaySets, thumbnailImageSrcMap, trackedSeries, viewports, viewportGridService, dataSource, displaySetService, uiDialogService, uiNotificationService);
|
|
1454
1313
|
setDisplaySets(mappedDisplaySets);
|
|
1455
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
|
+
});
|
|
1456
1319
|
return () => {
|
|
1457
|
-
SubscriptionDisplaySetsAdded.unsubscribe();
|
|
1458
1320
|
SubscriptionDisplaySetsChanged.unsubscribe();
|
|
1321
|
+
SubscriptionDisplaySetMetaDataInvalidated.unsubscribe();
|
|
1459
1322
|
};
|
|
1460
|
-
|
|
1461
|
-
}, [displaySetService, dataSource, getImageSrc, thumbnailImageSrcMap, trackedSeries, viewports]);
|
|
1323
|
+
}, [thumbnailImageSrcMap, trackedSeries, viewports, dataSource, displaySetService]);
|
|
1462
1324
|
const tabs = _createStudyBrowserTabs(StudyInstanceUIDs, studyDisplayList, displaySets, hangingProtocolService);
|
|
1463
1325
|
|
|
1464
1326
|
// TODO: Should not fire this on "close"
|
|
@@ -1568,14 +1430,16 @@ viewportGridService, dataSource, displaySetService, uiDialogService, uiNotificat
|
|
|
1568
1430
|
const thumbnailNoImageDisplaySets = [];
|
|
1569
1431
|
displaySets.filter(ds => !ds.excludeFromThumbnailBrowser).forEach(ds => {
|
|
1570
1432
|
const imageSrc = thumbnailImageSrcMap[ds.displaySetInstanceUID];
|
|
1571
|
-
const componentType = _getComponentType(ds
|
|
1433
|
+
const componentType = _getComponentType(ds);
|
|
1572
1434
|
const numPanes = viewportGridService.getNumViewportPanes();
|
|
1573
|
-
const viewportIdentificator =
|
|
1574
|
-
|
|
1575
|
-
|
|
1576
|
-
|
|
1577
|
-
|
|
1578
|
-
|
|
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
|
+
}
|
|
1579
1443
|
const array = componentType === 'thumbnailTracked' ? thumbnailDisplaySets : thumbnailNoImageDisplaySets;
|
|
1580
1444
|
const {
|
|
1581
1445
|
displaySetInstanceUID
|
|
@@ -1588,6 +1452,7 @@ viewportGridService, dataSource, displaySetService, uiDialogService, uiNotificat
|
|
|
1588
1452
|
seriesDate: formatDate(ds.SeriesDate),
|
|
1589
1453
|
numInstances: ds.numImageFrames,
|
|
1590
1454
|
countIcon: ds.countIcon,
|
|
1455
|
+
messages: ds.messages,
|
|
1591
1456
|
StudyInstanceUID: ds.StudyInstanceUID,
|
|
1592
1457
|
componentType,
|
|
1593
1458
|
imageSrc,
|
|
@@ -1598,11 +1463,12 @@ viewportGridService, dataSource, displaySetService, uiDialogService, uiNotificat
|
|
|
1598
1463
|
},
|
|
1599
1464
|
|
|
1600
1465
|
isTracked: trackedSeriesInstanceUIDs.includes(ds.SeriesInstanceUID),
|
|
1466
|
+
isHydratedForDerivedDisplaySet: ds.isHydrated,
|
|
1601
1467
|
viewportIdentificator
|
|
1602
1468
|
};
|
|
1603
1469
|
if (componentType === 'thumbnailNoImage') {
|
|
1604
1470
|
if (dataSource.reject && dataSource.reject.series) {
|
|
1605
|
-
thumbnailProps.canReject =
|
|
1471
|
+
thumbnailProps.canReject = !ds?.unsupported;
|
|
1606
1472
|
thumbnailProps.onReject = () => {
|
|
1607
1473
|
uiDialogService.create({
|
|
1608
1474
|
id: 'ds-reject-sr',
|
|
@@ -1613,16 +1479,18 @@ viewportGridService, dataSource, displaySetService, uiDialogService, uiNotificat
|
|
|
1613
1479
|
contentProps: {
|
|
1614
1480
|
title: 'Delete Report',
|
|
1615
1481
|
body: () => /*#__PURE__*/react.createElement("div", {
|
|
1616
|
-
className: "p-4 text-white
|
|
1617
|
-
}, /*#__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.")),
|
|
1618
1486
|
actions: [{
|
|
1619
1487
|
id: 'cancel',
|
|
1620
1488
|
text: 'Cancel',
|
|
1621
|
-
type:
|
|
1489
|
+
type: ui_src/* ButtonEnums.type */.LZ.dt.secondary
|
|
1622
1490
|
}, {
|
|
1623
1491
|
id: 'yes',
|
|
1624
1492
|
text: 'Yes',
|
|
1625
|
-
type:
|
|
1493
|
+
type: ui_src/* ButtonEnums.type */.LZ.dt.primary,
|
|
1626
1494
|
classes: ['reject-yes-button']
|
|
1627
1495
|
}],
|
|
1628
1496
|
onClose: () => uiDialogService.dismiss({
|
|
@@ -1632,10 +1500,10 @@ viewportGridService, dataSource, displaySetService, uiDialogService, uiNotificat
|
|
|
1632
1500
|
const yesButton = document.querySelector('.reject-yes-button');
|
|
1633
1501
|
yesButton.focus();
|
|
1634
1502
|
},
|
|
1635
|
-
onSubmit: async
|
|
1503
|
+
onSubmit: async _ref2 => {
|
|
1636
1504
|
let {
|
|
1637
1505
|
action
|
|
1638
|
-
} =
|
|
1506
|
+
} = _ref2;
|
|
1639
1507
|
switch (action.id) {
|
|
1640
1508
|
case 'yes':
|
|
1641
1509
|
try {
|
|
@@ -1679,8 +1547,8 @@ viewportGridService, dataSource, displaySetService, uiDialogService, uiNotificat
|
|
|
1679
1547
|
return [...thumbnailDisplaySets, ...thumbnailNoImageDisplaySets];
|
|
1680
1548
|
}
|
|
1681
1549
|
const thumbnailNoImageModalities = ['SR', 'SEG', 'SM', 'RTSTRUCT', 'RTPLAN', 'RTDOSE', 'DOC', 'OT'];
|
|
1682
|
-
function _getComponentType(
|
|
1683
|
-
if (thumbnailNoImageModalities.includes(Modality)) {
|
|
1550
|
+
function _getComponentType(ds) {
|
|
1551
|
+
if (thumbnailNoImageModalities.includes(ds.Modality) || ds?.unsupported) {
|
|
1684
1552
|
return 'thumbnailNoImage';
|
|
1685
1553
|
}
|
|
1686
1554
|
return 'thumbnailTracked';
|
|
@@ -1877,10 +1745,8 @@ WrappedPanelStudyBrowserTracking.propTypes = {
|
|
|
1877
1745
|
servicesManager: (prop_types_default()).object.isRequired
|
|
1878
1746
|
};
|
|
1879
1747
|
/* harmony default export */ const panels_PanelStudyBrowserTracking = (WrappedPanelStudyBrowserTracking);
|
|
1880
|
-
// EXTERNAL MODULE: ./hooks/index.js +
|
|
1881
|
-
var hooks = __webpack_require__(
|
|
1882
|
-
// EXTERNAL MODULE: ../../../node_modules/react-i18next/dist/es/index.js + 15 modules
|
|
1883
|
-
var es = __webpack_require__(21572);
|
|
1748
|
+
// EXTERNAL MODULE: ./hooks/index.js + 1 modules
|
|
1749
|
+
var hooks = __webpack_require__(10800);
|
|
1884
1750
|
;// CONCATENATED MODULE: ../../../extensions/measurement-tracking/src/panels/PanelMeasurementTableTracking/ActionButtons.tsx
|
|
1885
1751
|
|
|
1886
1752
|
|
|
@@ -1896,20 +1762,15 @@ function ActionButtons(_ref) {
|
|
|
1896
1762
|
t
|
|
1897
1763
|
} = (0,es/* useTranslation */.$G)('MeasurementTable');
|
|
1898
1764
|
return /*#__PURE__*/react.createElement(react.Fragment, null, /*#__PURE__*/react.createElement(ui_src/* Button */.zx, {
|
|
1899
|
-
className: "text-base px-2 py-2",
|
|
1900
|
-
size: "initial",
|
|
1901
|
-
variant: disabled ? 'disabled' : 'outlined',
|
|
1902
|
-
color: "black",
|
|
1903
|
-
border: "primaryActive",
|
|
1904
1765
|
onClick: onExportClick,
|
|
1905
|
-
disabled: disabled
|
|
1766
|
+
disabled: disabled,
|
|
1767
|
+
type: ui_src/* ButtonEnums.type */.LZ.dt.secondary,
|
|
1768
|
+
size: ui_src/* ButtonEnums.size */.LZ.dp.small
|
|
1906
1769
|
}, t('Export')), /*#__PURE__*/react.createElement(ui_src/* Button */.zx, {
|
|
1907
|
-
className: "ml-2
|
|
1908
|
-
variant: disabled ? 'disabled' : 'outlined',
|
|
1909
|
-
size: "initial",
|
|
1910
|
-
color: "black",
|
|
1911
|
-
border: "primaryActive",
|
|
1770
|
+
className: "ml-2",
|
|
1912
1771
|
onClick: onCreateReportClick,
|
|
1772
|
+
type: ui_src/* ButtonEnums.type */.LZ.dt.secondary,
|
|
1773
|
+
size: ui_src/* ButtonEnums.size */.LZ.dp.small,
|
|
1913
1774
|
disabled: disabled
|
|
1914
1775
|
}, t('Create Report')));
|
|
1915
1776
|
}
|
|
@@ -1925,7 +1786,7 @@ ActionButtons.defaultProps = {
|
|
|
1925
1786
|
};
|
|
1926
1787
|
/* harmony default export */ const PanelMeasurementTableTracking_ActionButtons = (ActionButtons);
|
|
1927
1788
|
// EXTERNAL MODULE: ../../../node_modules/lodash.debounce/index.js
|
|
1928
|
-
var lodash_debounce = __webpack_require__(
|
|
1789
|
+
var lodash_debounce = __webpack_require__(8324);
|
|
1929
1790
|
var lodash_debounce_default = /*#__PURE__*/__webpack_require__.n(lodash_debounce);
|
|
1930
1791
|
;// CONCATENATED MODULE: ../../../extensions/measurement-tracking/src/panels/PanelMeasurementTableTracking/index.tsx
|
|
1931
1792
|
|
|
@@ -1957,9 +1818,9 @@ function PanelMeasurementTableTracking(_ref) {
|
|
|
1957
1818
|
servicesManager,
|
|
1958
1819
|
extensionManager
|
|
1959
1820
|
} = _ref;
|
|
1960
|
-
const [viewportGrid
|
|
1821
|
+
const [viewportGrid] = (0,ui_src/* useViewportGrid */.O_)();
|
|
1961
1822
|
const [measurementChangeTimestamp, setMeasurementsUpdated] = (0,react.useState)(Date.now().toString());
|
|
1962
|
-
const debouncedMeasurementChangeTimestamp = (0,hooks/* useDebounce */.
|
|
1823
|
+
const debouncedMeasurementChangeTimestamp = (0,hooks/* useDebounce */.N)(measurementChangeTimestamp, 200);
|
|
1963
1824
|
const {
|
|
1964
1825
|
measurementService,
|
|
1965
1826
|
uiDialogService,
|
|
@@ -2053,7 +1914,7 @@ function PanelMeasurementTableTracking(_ref) {
|
|
|
2053
1914
|
uid,
|
|
2054
1915
|
isActive
|
|
2055
1916
|
} = _ref2;
|
|
2056
|
-
measurementService.jumpToMeasurement(viewportGrid.
|
|
1917
|
+
measurementService.jumpToMeasurement(viewportGrid.activeViewportId, uid);
|
|
2057
1918
|
onMeasurementItemClickHandler({
|
|
2058
1919
|
uid,
|
|
2059
1920
|
isActive
|
|
@@ -2126,23 +1987,21 @@ function PanelMeasurementTableTracking(_ref) {
|
|
|
2126
1987
|
labelClassName: "text-white grow text-[14px] leading-[1.2]",
|
|
2127
1988
|
autoFocus: true,
|
|
2128
1989
|
id: "annotation",
|
|
2129
|
-
className: "
|
|
1990
|
+
className: "border-primary-main bg-black",
|
|
2130
1991
|
type: "text",
|
|
2131
1992
|
value: value.label,
|
|
2132
1993
|
onChange: onChangeHandler,
|
|
2133
1994
|
onKeyPress: onKeyPressHandler
|
|
2134
1995
|
});
|
|
2135
1996
|
},
|
|
2136
|
-
actions: [
|
|
2137
|
-
// temp: swap button types until colors are updated
|
|
2138
|
-
{
|
|
1997
|
+
actions: [{
|
|
2139
1998
|
id: 'cancel',
|
|
2140
1999
|
text: 'Cancel',
|
|
2141
|
-
type:
|
|
2000
|
+
type: ui_src/* ButtonEnums.type */.LZ.dt.secondary
|
|
2142
2001
|
}, {
|
|
2143
2002
|
id: 'save',
|
|
2144
2003
|
text: 'Save',
|
|
2145
|
-
type:
|
|
2004
|
+
type: ui_src/* ButtonEnums.type */.LZ.dt.primary
|
|
2146
2005
|
}],
|
|
2147
2006
|
onSubmit: onSubmitHandler
|
|
2148
2007
|
}
|
|
@@ -2164,7 +2023,7 @@ function PanelMeasurementTableTracking(_ref) {
|
|
|
2164
2023
|
const displayMeasurementsWithoutFindings = displayMeasurements.filter(dm => dm.measurementType !== measurementService.VALUE_TYPES.POINT);
|
|
2165
2024
|
const additionalFindings = displayMeasurements.filter(dm => dm.measurementType === measurementService.VALUE_TYPES.POINT);
|
|
2166
2025
|
return /*#__PURE__*/react.createElement(react.Fragment, null, /*#__PURE__*/react.createElement("div", {
|
|
2167
|
-
className: "
|
|
2026
|
+
className: "invisible-scrollbar overflow-y-auto overflow-x-hidden",
|
|
2168
2027
|
ref: measurementsPanelRef,
|
|
2169
2028
|
"data-cy": 'trackedMeasurements-panel'
|
|
2170
2029
|
}, displayStudySummary.key && /*#__PURE__*/react.createElement(ui_src/* StudySummary */.YL, {
|
|
@@ -2189,7 +2048,7 @@ function PanelMeasurementTableTracking(_ref) {
|
|
|
2189
2048
|
onExportClick: exportReport,
|
|
2190
2049
|
onCreateReportClick: () => {
|
|
2191
2050
|
sendTrackedMeasurementsEvent('SAVE_REPORT', {
|
|
2192
|
-
|
|
2051
|
+
viewportId: viewportGrid.activeViewportId,
|
|
2193
2052
|
isBackupSave: true
|
|
2194
2053
|
});
|
|
2195
2054
|
},
|
|
@@ -2238,7 +2097,9 @@ function _mapMeasurementToDisplay(measurement, types, displaySetService) {
|
|
|
2238
2097
|
if (findingSites) {
|
|
2239
2098
|
const siteText = [];
|
|
2240
2099
|
findingSites.forEach(site => {
|
|
2241
|
-
if (site?.text !== label)
|
|
2100
|
+
if (site?.text !== label) {
|
|
2101
|
+
siteText.push(site.text);
|
|
2102
|
+
}
|
|
2242
2103
|
});
|
|
2243
2104
|
displayText = [...siteText, ...displayText];
|
|
2244
2105
|
}
|
|
@@ -2277,7 +2138,7 @@ function getPanelModule(_ref) {
|
|
|
2277
2138
|
} = _ref;
|
|
2278
2139
|
return [{
|
|
2279
2140
|
name: 'seriesList',
|
|
2280
|
-
iconName: '
|
|
2141
|
+
iconName: 'tab-studies',
|
|
2281
2142
|
iconLabel: 'Studies',
|
|
2282
2143
|
label: 'Studies',
|
|
2283
2144
|
component: panels_PanelStudyBrowserTracking.bind(null, {
|
|
@@ -2302,7 +2163,7 @@ function getPanelModule(_ref) {
|
|
|
2302
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); }
|
|
2303
2164
|
|
|
2304
2165
|
const Component = /*#__PURE__*/react.lazy(() => {
|
|
2305
|
-
return __webpack_require__.e(/* import() */
|
|
2166
|
+
return __webpack_require__.e(/* import() */ 822).then(__webpack_require__.bind(__webpack_require__, 86822));
|
|
2306
2167
|
});
|
|
2307
2168
|
const OHIFCornerstoneViewport = props => {
|
|
2308
2169
|
return /*#__PURE__*/react.createElement(react.Suspense, {
|