@ohif/app 3.7.0-beta.9 → 3.7.0-beta.91
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.0edb40e9d9467dd3a189.js → 12.bundle.e8d2ae45df74384fd980.js} +6 -6
- package/dist/{295.bundle.957b1159fec14b9199a1.js → 125.bundle.253395f320b72180da63.js} +6 -6
- package/dist/{351.bundle.0742237651aef9694a65.js → 181.bundle.73fc96c6b3ab1fabedc8.js} +226 -204
- package/dist/{351.css → 181.css} +1 -1
- package/dist/{744.bundle.c459c690581bc8a522d8.js → 19.bundle.839e1ef2a3468da3ae6e.js} +240 -375
- 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.39ad5abb775af5702ddb.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.3f8bfb620791f4508420.js → 236.bundle.a24efa76d228c38e56d0.js} +88 -104
- package/dist/{55.bundle.550a823e75eb608e8d5e.js → 250.bundle.4bebed43526c7e06344f.js} +52 -36
- package/dist/{973.bundle.5aa91607481865ead93f.js → 281.bundle.b50f5766fb3f79b2ed9d.js} +18 -14
- package/dist/{82.bundle.978be6f7595202cd342b.js → 342.bundle.40cf206d7cddf20933eb.js} +1765 -476
- package/dist/{404.bundle.83acdec604ed84f4b772.js → 359.bundle.b13a62377d68750cbf34.js} +46 -131
- package/dist/{192.bundle.655fc9c5aeff41110aa9.js → 370.bundle.f25928b95a42ac10c7a7.js} +113 -99
- package/dist/{790.bundle.08e37fd3b64af8dd8e78.js → 410.bundle.cc5008512de45d69e1cb.js} +11 -9
- package/dist/{151.bundle.31ea35044218837bf73f.js → 417.bundle.af0a207c29b109f84159.js} +49 -17
- package/dist/{569.bundle.c8e771a8d28e237b32be.js → 451.bundle.1c714bfb8b66d3a5adfb.js} +86 -106
- package/dist/{581.bundle.dc6197189f7c88c27d4c.js → 471.bundle.4aaec34d87b0c93687c1.js} +78 -99
- package/dist/{199.bundle.251f86c6e2eee85c49a5.js → 506.bundle.817e9b84a97639aa147d.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.37227666b898dfdfe9c1.js +532 -0
- package/dist/{984.bundle.0c8b7d8388a662ad5ebc.js → 663.bundle.73495b93aa8cb540241c.js} +68 -38
- package/dist/{205.bundle.b5a473c200dcf2bbcdb4.js → 686.bundle.dccef1f36e4bc79bcc48.js} +6 -6
- package/dist/{50.bundle.bec52570fe00c2ccced8.js → 687.bundle.3d415b0f43c3e19ef6ef.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.b43e001c27e02b0199aa.js → 782.bundle.4bf97e067cf8067f2239.js} +117 -67
- package/dist/{642.bundle.1ab1e9ea67caeaedb189.js → 814.bundle.9d5edb8094787e02f22f.js} +6 -6
- package/dist/{799.bundle.758558e64147e5aad612.js → 822.bundle.00de6455c18be0307b41.js} +81 -34
- package/dist/831.bundle.83658f62fcc769043605.js +16700 -0
- package/dist/{707.bundle.9622c314b0ea3488d69a.js → 877.bundle.b83c182be6ee497d2df7.js} +1022 -708
- package/dist/{953.bundle.3b0189ebc11cf0946f18.js → 886.bundle.7324d84913daffb6a4c4.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.8c09a01840ab8aa32734.js} +7093 -987
- package/dist/{208.bundle.05451122c341d80d3c22.js → 99.bundle.e6844ea7f331fd2ae35a.js} +85 -104
- package/dist/_redirects +1 -1
- package/dist/app-config.js +35 -17
- package/dist/{app.bundle.d2ebd2fcc8b88864ebeb.js → app.bundle.6c7d9f72689fc7c05040.js} +71939 -66734
- package/dist/app.bundle.css +13 -12
- 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 +1 -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.d0581701281977bea39b.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 → 877.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,132 +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
|
-
uiDialogService.dismiss({
|
|
729
|
-
id: dialogId
|
|
730
|
-
});
|
|
731
|
-
switch (action.id) {
|
|
732
|
-
case 'save':
|
|
733
|
-
resolve({
|
|
734
|
-
action: PROMPT_RESPONSES.CREATE_REPORT,
|
|
735
|
-
value: value.label
|
|
736
|
-
});
|
|
737
|
-
break;
|
|
738
|
-
case 'cancel':
|
|
739
|
-
resolve({
|
|
740
|
-
action: PROMPT_RESPONSES.CANCEL,
|
|
741
|
-
value: undefined
|
|
742
|
-
});
|
|
743
|
-
break;
|
|
744
|
-
}
|
|
745
|
-
};
|
|
746
|
-
dialogId = uiDialogService.create({
|
|
747
|
-
centralize: true,
|
|
748
|
-
isDraggable: false,
|
|
749
|
-
content: src/* Dialog */.Vq,
|
|
750
|
-
useLastPosition: false,
|
|
751
|
-
showOverlay: true,
|
|
752
|
-
contentProps: {
|
|
753
|
-
title: 'Create Report',
|
|
754
|
-
value: {
|
|
755
|
-
label: ''
|
|
756
|
-
},
|
|
757
|
-
noCloseButton: true,
|
|
758
|
-
onClose: _handleClose,
|
|
759
|
-
actions: [{
|
|
760
|
-
id: 'cancel',
|
|
761
|
-
text: 'Cancel',
|
|
762
|
-
type: src/* ButtonEnums.type */.LZ.U.secondary
|
|
763
|
-
}, {
|
|
764
|
-
id: 'save',
|
|
765
|
-
text: 'Save',
|
|
766
|
-
type: src/* ButtonEnums.type */.LZ.U.primary
|
|
767
|
-
}],
|
|
768
|
-
// TODO: Should be on button press...
|
|
769
|
-
onSubmit: _handleFormSubmit,
|
|
770
|
-
body: _ref2 => {
|
|
771
|
-
let {
|
|
772
|
-
value,
|
|
773
|
-
setValue
|
|
774
|
-
} = _ref2;
|
|
775
|
-
const onChangeHandler = event => {
|
|
776
|
-
event.persist();
|
|
777
|
-
setValue(value => ({
|
|
778
|
-
...value,
|
|
779
|
-
label: event.target.value
|
|
780
|
-
}));
|
|
781
|
-
};
|
|
782
|
-
const onKeyPressHandler = event => {
|
|
783
|
-
if (event.key === 'Enter') {
|
|
784
|
-
uiDialogService.dismiss({
|
|
785
|
-
id: dialogId
|
|
786
|
-
});
|
|
787
|
-
resolve({
|
|
788
|
-
action: PROMPT_RESPONSES.CREATE_REPORT,
|
|
789
|
-
value: value.label
|
|
790
|
-
});
|
|
791
|
-
}
|
|
792
|
-
};
|
|
793
|
-
return /*#__PURE__*/react.createElement("div", {
|
|
794
|
-
className: ""
|
|
795
|
-
}, /*#__PURE__*/react.createElement(src/* Input */.II, {
|
|
796
|
-
label: "Enter the report name",
|
|
797
|
-
labelClassName: "text-white grow leading-[1.2] text-[14px]",
|
|
798
|
-
autoFocus: true,
|
|
799
|
-
className: "bg-black border-primary-main grow",
|
|
800
|
-
type: "text",
|
|
801
|
-
value: value.label,
|
|
802
|
-
onChange: onChangeHandler,
|
|
803
|
-
onKeyPress: onKeyPressHandler
|
|
804
|
-
}));
|
|
805
|
-
}
|
|
806
|
-
}
|
|
807
|
-
});
|
|
808
|
-
});
|
|
809
|
-
}
|
|
810
|
-
;// CONCATENATED MODULE: ../../../extensions/measurement-tracking/src/_shared/getNextSRSeriesNumber.js
|
|
811
|
-
const MIN_SR_SERIES_NUMBER = 4700;
|
|
812
|
-
function getNextSRSeriesNumber(displaySetService) {
|
|
813
|
-
const activeDisplaySets = displaySetService.getActiveDisplaySets();
|
|
814
|
-
const srDisplaySets = activeDisplaySets.filter(ds => ds.Modality === 'SR');
|
|
815
|
-
const srSeriesNumbers = srDisplaySets.map(ds => ds.SeriesNumber);
|
|
816
|
-
const maxSeriesNumber = Math.max(...srSeriesNumbers, MIN_SR_SERIES_NUMBER);
|
|
817
|
-
return maxSeriesNumber + 1;
|
|
818
|
-
}
|
|
819
651
|
;// CONCATENATED MODULE: ../../../extensions/measurement-tracking/src/contexts/TrackedMeasurementsContext/promptSaveReport.js
|
|
820
652
|
|
|
821
653
|
|
|
822
654
|
|
|
823
|
-
|
|
824
655
|
function promptSaveReport(_ref, ctx, evt) {
|
|
825
656
|
let {
|
|
826
657
|
servicesManager,
|
|
@@ -832,7 +663,7 @@ function promptSaveReport(_ref, ctx, evt) {
|
|
|
832
663
|
measurementService,
|
|
833
664
|
displaySetService
|
|
834
665
|
} = servicesManager.services;
|
|
835
|
-
const
|
|
666
|
+
const viewportId = evt.viewportId === undefined ? evt.data.viewportId : evt.viewportId;
|
|
836
667
|
const isBackupSave = evt.isBackupSave === undefined ? evt.data.isBackupSave : evt.isBackupSave;
|
|
837
668
|
const StudyInstanceUID = evt?.data?.StudyInstanceUID;
|
|
838
669
|
const SeriesInstanceUID = evt?.data?.SeriesInstanceUID;
|
|
@@ -843,7 +674,9 @@ function promptSaveReport(_ref, ctx, evt) {
|
|
|
843
674
|
let displaySetInstanceUIDs;
|
|
844
675
|
return new Promise(async function (resolve, reject) {
|
|
845
676
|
// TODO: Fallback if (uiDialogService) {
|
|
846
|
-
const promptResult = await createReportDialogPrompt(uiDialogService
|
|
677
|
+
const promptResult = await (0,default_src.createReportDialogPrompt)(uiDialogService, {
|
|
678
|
+
extensionManager
|
|
679
|
+
});
|
|
847
680
|
if (promptResult.action === PROMPT_RESPONSES.CREATE_REPORT) {
|
|
848
681
|
const dataSources = extensionManager.getDataSources();
|
|
849
682
|
const dataSource = dataSources[0];
|
|
@@ -855,9 +688,20 @@ function promptSaveReport(_ref, ctx, evt) {
|
|
|
855
688
|
: promptResult.value; // provided value
|
|
856
689
|
|
|
857
690
|
const SeriesNumber = getNextSRSeriesNumber(displaySetService);
|
|
858
|
-
|
|
859
|
-
|
|
860
|
-
|
|
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
|
|
861
705
|
});
|
|
862
706
|
} else if (promptResult.action === PROMPT_RESPONSES.CANCEL) {
|
|
863
707
|
// Do nothing
|
|
@@ -867,14 +711,14 @@ function promptSaveReport(_ref, ctx, evt) {
|
|
|
867
711
|
createdDisplaySetInstanceUIDs: displaySetInstanceUIDs,
|
|
868
712
|
StudyInstanceUID,
|
|
869
713
|
SeriesInstanceUID,
|
|
870
|
-
|
|
714
|
+
viewportId,
|
|
871
715
|
isBackupSave
|
|
872
716
|
});
|
|
873
717
|
});
|
|
874
718
|
}
|
|
875
719
|
/* harmony default export */ const TrackedMeasurementsContext_promptSaveReport = (promptSaveReport);
|
|
876
720
|
// EXTERNAL MODULE: ../../../extensions/cornerstone-dicom-sr/src/index.tsx + 15 modules
|
|
877
|
-
var cornerstone_dicom_sr_src = __webpack_require__(
|
|
721
|
+
var cornerstone_dicom_sr_src = __webpack_require__(42170);
|
|
878
722
|
;// CONCATENATED MODULE: ../../../extensions/measurement-tracking/src/contexts/TrackedMeasurementsContext/promptHydrateStructuredReport.js
|
|
879
723
|
|
|
880
724
|
|
|
@@ -890,19 +734,20 @@ const promptHydrateStructuredReport_RESPONSE = {
|
|
|
890
734
|
function promptHydrateStructuredReport(_ref, ctx, evt) {
|
|
891
735
|
let {
|
|
892
736
|
servicesManager,
|
|
893
|
-
extensionManager
|
|
737
|
+
extensionManager,
|
|
738
|
+
appConfig
|
|
894
739
|
} = _ref;
|
|
895
740
|
const {
|
|
896
741
|
uiViewportDialogService,
|
|
897
742
|
displaySetService
|
|
898
743
|
} = servicesManager.services;
|
|
899
744
|
const {
|
|
900
|
-
|
|
745
|
+
viewportId,
|
|
901
746
|
displaySetInstanceUID
|
|
902
747
|
} = evt;
|
|
903
748
|
const srDisplaySet = displaySetService.getDisplaySetByUID(displaySetInstanceUID);
|
|
904
749
|
return new Promise(async function (resolve, reject) {
|
|
905
|
-
const promptResult = await promptHydrateStructuredReport_askTrackMeasurements(uiViewportDialogService,
|
|
750
|
+
const promptResult = await promptHydrateStructuredReport_askTrackMeasurements(uiViewportDialogService, viewportId);
|
|
906
751
|
|
|
907
752
|
// Need to do action here... So we can set state...
|
|
908
753
|
let StudyInstanceUID, SeriesInstanceUIDs;
|
|
@@ -910,7 +755,8 @@ function promptHydrateStructuredReport(_ref, ctx, evt) {
|
|
|
910
755
|
console.warn('!! HYDRATING STRUCTURED REPORT');
|
|
911
756
|
const hydrationResult = (0,cornerstone_dicom_sr_src.hydrateStructuredReport)({
|
|
912
757
|
servicesManager,
|
|
913
|
-
extensionManager
|
|
758
|
+
extensionManager,
|
|
759
|
+
appConfig
|
|
914
760
|
}, displaySetInstanceUID);
|
|
915
761
|
StudyInstanceUID = hydrationResult.StudyInstanceUID;
|
|
916
762
|
SeriesInstanceUIDs = hydrationResult.SeriesInstanceUIDs;
|
|
@@ -919,21 +765,21 @@ function promptHydrateStructuredReport(_ref, ctx, evt) {
|
|
|
919
765
|
userResponse: promptResult,
|
|
920
766
|
displaySetInstanceUID: evt.displaySetInstanceUID,
|
|
921
767
|
srSeriesInstanceUID: srDisplaySet.SeriesInstanceUID,
|
|
922
|
-
|
|
768
|
+
viewportId,
|
|
923
769
|
StudyInstanceUID,
|
|
924
770
|
SeriesInstanceUIDs
|
|
925
771
|
});
|
|
926
772
|
});
|
|
927
773
|
}
|
|
928
|
-
function promptHydrateStructuredReport_askTrackMeasurements(uiViewportDialogService,
|
|
774
|
+
function promptHydrateStructuredReport_askTrackMeasurements(uiViewportDialogService, viewportId) {
|
|
929
775
|
return new Promise(function (resolve, reject) {
|
|
930
776
|
const message = 'Do you want to continue tracking measurements for this study?';
|
|
931
777
|
const actions = [{
|
|
932
|
-
type: src/* ButtonEnums.type */.LZ.
|
|
778
|
+
type: src/* ButtonEnums.type */.LZ.dt.secondary,
|
|
933
779
|
text: 'No',
|
|
934
780
|
value: promptHydrateStructuredReport_RESPONSE.CANCEL
|
|
935
781
|
}, {
|
|
936
|
-
type: src/* ButtonEnums.type */.LZ.
|
|
782
|
+
type: src/* ButtonEnums.type */.LZ.dt.primary,
|
|
937
783
|
text: 'Yes',
|
|
938
784
|
value: promptHydrateStructuredReport_RESPONSE.HYDRATE_REPORT
|
|
939
785
|
}];
|
|
@@ -942,7 +788,7 @@ function promptHydrateStructuredReport_askTrackMeasurements(uiViewportDialogServ
|
|
|
942
788
|
resolve(result);
|
|
943
789
|
};
|
|
944
790
|
uiViewportDialogService.show({
|
|
945
|
-
|
|
791
|
+
viewportId,
|
|
946
792
|
type: 'info',
|
|
947
793
|
message,
|
|
948
794
|
actions,
|
|
@@ -966,7 +812,7 @@ function hydrateStructuredReport(_ref, ctx, evt) {
|
|
|
966
812
|
displaySetService
|
|
967
813
|
} = servicesManager.services;
|
|
968
814
|
const {
|
|
969
|
-
|
|
815
|
+
viewportId,
|
|
970
816
|
displaySetInstanceUID
|
|
971
817
|
} = evt;
|
|
972
818
|
const srDisplaySet = displaySetService.getDisplaySetByUID(displaySetInstanceUID);
|
|
@@ -980,13 +826,15 @@ function hydrateStructuredReport(_ref, ctx, evt) {
|
|
|
980
826
|
resolve({
|
|
981
827
|
displaySetInstanceUID: evt.displaySetInstanceUID,
|
|
982
828
|
srSeriesInstanceUID: srDisplaySet.SeriesInstanceUID,
|
|
983
|
-
|
|
829
|
+
viewportId,
|
|
984
830
|
StudyInstanceUID,
|
|
985
831
|
SeriesInstanceUIDs
|
|
986
832
|
});
|
|
987
833
|
});
|
|
988
834
|
}
|
|
989
835
|
/* harmony default export */ const TrackedMeasurementsContext_hydrateStructuredReport = (hydrateStructuredReport);
|
|
836
|
+
// EXTERNAL MODULE: ./state/index.js + 1 modules
|
|
837
|
+
var state = __webpack_require__(62657);
|
|
990
838
|
;// CONCATENATED MODULE: ../../../extensions/measurement-tracking/src/contexts/TrackedMeasurementsContext/TrackedMeasurementsContext.tsx
|
|
991
839
|
|
|
992
840
|
|
|
@@ -1000,6 +848,7 @@ function hydrateStructuredReport(_ref, ctx, evt) {
|
|
|
1000
848
|
|
|
1001
849
|
|
|
1002
850
|
|
|
851
|
+
|
|
1003
852
|
const TrackedMeasurementsContext = /*#__PURE__*/react.createContext();
|
|
1004
853
|
TrackedMeasurementsContext.displayName = 'TrackedMeasurementsContext';
|
|
1005
854
|
const useTrackedMeasurements = () => (0,react.useContext)(TrackedMeasurementsContext);
|
|
@@ -1020,9 +869,10 @@ _ref2 // Component props
|
|
|
1020
869
|
let {
|
|
1021
870
|
children
|
|
1022
871
|
} = _ref2;
|
|
872
|
+
const [appConfig] = (0,state/* useAppConfig */.M)();
|
|
1023
873
|
const [viewportGrid, viewportGridService] = (0,src/* useViewportGrid */.O_)();
|
|
1024
874
|
const {
|
|
1025
|
-
|
|
875
|
+
activeViewportId,
|
|
1026
876
|
viewports
|
|
1027
877
|
} = viewportGrid;
|
|
1028
878
|
const {
|
|
@@ -1034,11 +884,12 @@ _ref2 // Component props
|
|
|
1034
884
|
jumpToFirstMeasurementInActiveViewport: (ctx, evt) => {
|
|
1035
885
|
const {
|
|
1036
886
|
trackedStudy,
|
|
1037
|
-
trackedSeries
|
|
887
|
+
trackedSeries,
|
|
888
|
+
activeViewportId
|
|
1038
889
|
} = ctx;
|
|
1039
890
|
const measurements = measurementService.getMeasurements();
|
|
1040
891
|
const trackedMeasurements = measurements.filter(m => trackedStudy === m.referenceStudyUID && trackedSeries.includes(m.referenceSeriesUID));
|
|
1041
|
-
console.log('jumping to measurement reset viewport',
|
|
892
|
+
console.log('jumping to measurement reset viewport', activeViewportId, trackedMeasurements[0]);
|
|
1042
893
|
const referencedDisplaySetUID = trackedMeasurements[0].displaySetInstanceUID;
|
|
1043
894
|
const referencedDisplaySet = displaySetService.getDisplaySetByUID(referencedDisplaySetUID);
|
|
1044
895
|
const referencedImages = referencedDisplaySet.images;
|
|
@@ -1058,7 +909,7 @@ _ref2 // Component props
|
|
|
1058
909
|
}
|
|
1059
910
|
}
|
|
1060
911
|
viewportGridService.setDisplaySetsForViewport({
|
|
1061
|
-
|
|
912
|
+
viewportId: activeViewportId,
|
|
1062
913
|
displaySetInstanceUIDs: [referencedDisplaySetUID],
|
|
1063
914
|
viewportOptions: {
|
|
1064
915
|
initialImageOptions: {
|
|
@@ -1069,9 +920,9 @@ _ref2 // Component props
|
|
|
1069
920
|
},
|
|
1070
921
|
showStructuredReportDisplaySetInActiveViewport: (ctx, evt) => {
|
|
1071
922
|
if (evt.data.createdDisplaySetInstanceUIDs.length > 0) {
|
|
1072
|
-
const StructuredReportDisplaySetInstanceUID = evt.data.createdDisplaySetInstanceUIDs[0]
|
|
923
|
+
const StructuredReportDisplaySetInstanceUID = evt.data.createdDisplaySetInstanceUIDs[0];
|
|
1073
924
|
viewportGridService.setDisplaySetsForViewport({
|
|
1074
|
-
|
|
925
|
+
viewportId: evt.data.viewportId,
|
|
1075
926
|
displaySetInstanceUIDs: [StructuredReportDisplaySetInstanceUID]
|
|
1076
927
|
});
|
|
1077
928
|
}
|
|
@@ -1095,28 +946,34 @@ _ref2 // Component props
|
|
|
1095
946
|
machineOptions.services = Object.assign({}, machineOptions.services, {
|
|
1096
947
|
promptBeginTracking: TrackedMeasurementsContext_promptBeginTracking.bind(null, {
|
|
1097
948
|
servicesManager,
|
|
1098
|
-
extensionManager
|
|
949
|
+
extensionManager,
|
|
950
|
+
appConfig
|
|
1099
951
|
}),
|
|
1100
952
|
promptTrackNewSeries: TrackedMeasurementsContext_promptTrackNewSeries.bind(null, {
|
|
1101
953
|
servicesManager,
|
|
1102
|
-
extensionManager
|
|
954
|
+
extensionManager,
|
|
955
|
+
appConfig
|
|
1103
956
|
}),
|
|
1104
957
|
promptTrackNewStudy: TrackedMeasurementsContext_promptTrackNewStudy.bind(null, {
|
|
1105
958
|
servicesManager,
|
|
1106
|
-
extensionManager
|
|
959
|
+
extensionManager,
|
|
960
|
+
appConfig
|
|
1107
961
|
}),
|
|
1108
962
|
promptSaveReport: TrackedMeasurementsContext_promptSaveReport.bind(null, {
|
|
1109
963
|
servicesManager,
|
|
1110
964
|
commandsManager,
|
|
1111
|
-
extensionManager
|
|
965
|
+
extensionManager,
|
|
966
|
+
appConfig
|
|
1112
967
|
}),
|
|
1113
968
|
promptHydrateStructuredReport: TrackedMeasurementsContext_promptHydrateStructuredReport.bind(null, {
|
|
1114
969
|
servicesManager,
|
|
1115
|
-
extensionManager
|
|
970
|
+
extensionManager,
|
|
971
|
+
appConfig
|
|
1116
972
|
}),
|
|
1117
973
|
hydrateStructuredReport: TrackedMeasurementsContext_hydrateStructuredReport.bind(null, {
|
|
1118
974
|
servicesManager,
|
|
1119
|
-
extensionManager
|
|
975
|
+
extensionManager,
|
|
976
|
+
appConfig
|
|
1120
977
|
})
|
|
1121
978
|
});
|
|
1122
979
|
|
|
@@ -1129,13 +986,19 @@ _ref2 // Component props
|
|
|
1129
986
|
// - Fix viewport border resize
|
|
1130
987
|
// - created/destroyed hooks for extensions (cornerstone measurement subscriptions in it's `init`)
|
|
1131
988
|
|
|
1132
|
-
const measurementTrackingMachine = (0,es
|
|
1133
|
-
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]);
|
|
1134
997
|
|
|
1135
998
|
// ~~ Listen for changes to ViewportGrid for potential SRs hung in panes when idle
|
|
1136
999
|
(0,react.useEffect)(() => {
|
|
1137
|
-
if (viewports.
|
|
1138
|
-
const activeViewport = viewports
|
|
1000
|
+
if (viewports.size > 0) {
|
|
1001
|
+
const activeViewport = viewports.get(activeViewportId);
|
|
1139
1002
|
if (!activeViewport || !activeViewport?.displaySetInstanceUIDs?.length) {
|
|
1140
1003
|
return;
|
|
1141
1004
|
}
|
|
@@ -1174,11 +1037,11 @@ _ref2 // Component props
|
|
|
1174
1037
|
sendTrackedMeasurementsEvent('PROMPT_HYDRATE_SR', {
|
|
1175
1038
|
displaySetInstanceUID: displaySet.displaySetInstanceUID,
|
|
1176
1039
|
SeriesInstanceUID: displaySet.SeriesInstanceUID,
|
|
1177
|
-
|
|
1040
|
+
viewportId: activeViewportId
|
|
1178
1041
|
});
|
|
1179
1042
|
}
|
|
1180
1043
|
}
|
|
1181
|
-
}, [
|
|
1044
|
+
}, [activeViewportId, sendTrackedMeasurementsEvent, servicesManager.services, viewports]);
|
|
1182
1045
|
return /*#__PURE__*/react.createElement(TrackedMeasurementsContext.Provider, {
|
|
1183
1046
|
value: [trackedMeasurements, sendTrackedMeasurementsEvent]
|
|
1184
1047
|
}, children);
|
|
@@ -1187,7 +1050,8 @@ TrackedMeasurementsContextProvider.propTypes = {
|
|
|
1187
1050
|
children: prop_types_default().oneOf([(prop_types_default()).func, (prop_types_default()).node]),
|
|
1188
1051
|
servicesManager: (prop_types_default()).object.isRequired,
|
|
1189
1052
|
commandsManager: (prop_types_default()).object.isRequired,
|
|
1190
|
-
extensionManager: (prop_types_default()).object.isRequired
|
|
1053
|
+
extensionManager: (prop_types_default()).object.isRequired,
|
|
1054
|
+
appConfig: (prop_types_default()).object
|
|
1191
1055
|
};
|
|
1192
1056
|
|
|
1193
1057
|
;// CONCATENATED MODULE: ../../../extensions/measurement-tracking/src/contexts/TrackedMeasurementsContext/index.js
|
|
@@ -1218,7 +1082,7 @@ function getContextModule(_ref) {
|
|
|
1218
1082
|
|
|
1219
1083
|
/***/ }),
|
|
1220
1084
|
|
|
1221
|
-
/***/
|
|
1085
|
+
/***/ 28030:
|
|
1222
1086
|
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
|
|
1223
1087
|
|
|
1224
1088
|
// ESM COMPAT FLAG
|
|
@@ -1229,23 +1093,29 @@ __webpack_require__.d(__webpack_exports__, {
|
|
|
1229
1093
|
"default": () => (/* binding */ measurement_tracking_src)
|
|
1230
1094
|
});
|
|
1231
1095
|
|
|
1232
|
-
// EXTERNAL MODULE: ../../../extensions/measurement-tracking/src/getContextModule.tsx +
|
|
1233
|
-
var getContextModule = __webpack_require__(
|
|
1096
|
+
// EXTERNAL MODULE: ../../../extensions/measurement-tracking/src/getContextModule.tsx + 12 modules
|
|
1097
|
+
var getContextModule = __webpack_require__(41832);
|
|
1234
1098
|
// EXTERNAL MODULE: ../../../node_modules/react/index.js
|
|
1235
|
-
var react = __webpack_require__(
|
|
1099
|
+
var react = __webpack_require__(43001);
|
|
1236
1100
|
// EXTERNAL MODULE: ../../../node_modules/prop-types/index.js
|
|
1237
|
-
var prop_types = __webpack_require__(
|
|
1101
|
+
var prop_types = __webpack_require__(3827);
|
|
1238
1102
|
var prop_types_default = /*#__PURE__*/__webpack_require__.n(prop_types);
|
|
1239
|
-
// EXTERNAL MODULE:
|
|
1240
|
-
var
|
|
1241
|
-
// EXTERNAL MODULE:
|
|
1242
|
-
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 + 64 modules
|
|
1108
|
+
var src = __webpack_require__(67869);
|
|
1109
|
+
// EXTERNAL MODULE: ../../ui/src/index.js + 485 modules
|
|
1110
|
+
var ui_src = __webpack_require__(71783);
|
|
1243
1111
|
;// CONCATENATED MODULE: ../../../extensions/measurement-tracking/src/panels/PanelStudyBrowserTracking/PanelStudyBrowserTracking.tsx
|
|
1244
1112
|
|
|
1245
1113
|
|
|
1246
1114
|
|
|
1247
1115
|
|
|
1248
1116
|
|
|
1117
|
+
|
|
1118
|
+
|
|
1249
1119
|
const {
|
|
1250
1120
|
formatDate
|
|
1251
1121
|
} = src.utils;
|
|
@@ -1263,12 +1133,15 @@ function PanelStudyBrowserTracking(_ref) {
|
|
|
1263
1133
|
dataSource
|
|
1264
1134
|
} = _ref;
|
|
1265
1135
|
const {
|
|
1266
|
-
measurementService,
|
|
1267
1136
|
displaySetService,
|
|
1268
1137
|
uiDialogService,
|
|
1269
1138
|
hangingProtocolService,
|
|
1270
1139
|
uiNotificationService
|
|
1271
1140
|
} = servicesManager.services;
|
|
1141
|
+
const navigate = (0,dist/* useNavigate */.s0)();
|
|
1142
|
+
const {
|
|
1143
|
+
t
|
|
1144
|
+
} = (0,es/* useTranslation */.$G)('Common');
|
|
1272
1145
|
|
|
1273
1146
|
// Normally you nest the components so the tree isn't so deep, and the data
|
|
1274
1147
|
// doesn't have to have such an intense shape. This works well enough for now.
|
|
@@ -1277,10 +1150,8 @@ function PanelStudyBrowserTracking(_ref) {
|
|
|
1277
1150
|
StudyInstanceUIDs
|
|
1278
1151
|
} = (0,ui_src/* useImageViewer */.zG)();
|
|
1279
1152
|
const [{
|
|
1280
|
-
|
|
1281
|
-
viewports
|
|
1282
|
-
numCols,
|
|
1283
|
-
numRows
|
|
1153
|
+
activeViewportId,
|
|
1154
|
+
viewports
|
|
1284
1155
|
}, viewportGridService] = (0,ui_src/* useViewportGrid */.O_)();
|
|
1285
1156
|
const [trackedMeasurements, sendTrackedMeasurementsEvent] = (0,getContextModule/* useTrackedMeasurements */.I)();
|
|
1286
1157
|
const [activeTabName, setActiveTabName] = (0,react.useState)('primary');
|
|
@@ -1291,9 +1162,9 @@ function PanelStudyBrowserTracking(_ref) {
|
|
|
1291
1162
|
const [jumpToDisplaySet, setJumpToDisplaySet] = (0,react.useState)(null);
|
|
1292
1163
|
const onDoubleClickThumbnailHandler = displaySetInstanceUID => {
|
|
1293
1164
|
let updatedViewports = [];
|
|
1294
|
-
const
|
|
1165
|
+
const viewportId = activeViewportId;
|
|
1295
1166
|
try {
|
|
1296
|
-
updatedViewports = hangingProtocolService.getViewportsRequireUpdate(
|
|
1167
|
+
updatedViewports = hangingProtocolService.getViewportsRequireUpdate(viewportId, displaySetInstanceUID);
|
|
1297
1168
|
} catch (error) {
|
|
1298
1169
|
console.warn(error);
|
|
1299
1170
|
uiNotificationService.show({
|
|
@@ -1305,37 +1176,7 @@ function PanelStudyBrowserTracking(_ref) {
|
|
|
1305
1176
|
}
|
|
1306
1177
|
viewportGridService.setDisplaySetsForViewports(updatedViewports);
|
|
1307
1178
|
};
|
|
1308
|
-
const activeViewportDisplaySetInstanceUIDs = viewports
|
|
1309
|
-
(0,react.useEffect)(() => {
|
|
1310
|
-
const added = measurementService.EVENTS.MEASUREMENT_ADDED;
|
|
1311
|
-
const addedRaw = measurementService.EVENTS.RAW_MEASUREMENT_ADDED;
|
|
1312
|
-
const subscriptions = [];
|
|
1313
|
-
[added, addedRaw].forEach(evt => {
|
|
1314
|
-
subscriptions.push(measurementService.subscribe(evt, _ref2 => {
|
|
1315
|
-
let {
|
|
1316
|
-
source,
|
|
1317
|
-
measurement
|
|
1318
|
-
} = _ref2;
|
|
1319
|
-
const {
|
|
1320
|
-
referenceSeriesUID: SeriesInstanceUID,
|
|
1321
|
-
referenceStudyUID: StudyInstanceUID
|
|
1322
|
-
} = measurement;
|
|
1323
|
-
sendTrackedMeasurementsEvent('SET_DIRTY', {
|
|
1324
|
-
SeriesInstanceUID
|
|
1325
|
-
});
|
|
1326
|
-
sendTrackedMeasurementsEvent('TRACK_SERIES', {
|
|
1327
|
-
viewportIndex: activeViewportIndex,
|
|
1328
|
-
StudyInstanceUID,
|
|
1329
|
-
SeriesInstanceUID
|
|
1330
|
-
});
|
|
1331
|
-
}).unsubscribe);
|
|
1332
|
-
});
|
|
1333
|
-
return () => {
|
|
1334
|
-
subscriptions.forEach(unsub => {
|
|
1335
|
-
unsub();
|
|
1336
|
-
});
|
|
1337
|
-
};
|
|
1338
|
-
}, [measurementService, activeViewportIndex, sendTrackedMeasurementsEvent]);
|
|
1179
|
+
const activeViewportDisplaySetInstanceUIDs = viewports.get(activeViewportId)?.displaySetInstanceUIDs;
|
|
1339
1180
|
const {
|
|
1340
1181
|
trackedSeries
|
|
1341
1182
|
} = trackedMeasurements.context;
|
|
@@ -1348,6 +1189,10 @@ function PanelStudyBrowserTracking(_ref) {
|
|
|
1348
1189
|
const qidoForStudyUID = await dataSource.query.studies.search({
|
|
1349
1190
|
studyInstanceUid: StudyInstanceUID
|
|
1350
1191
|
});
|
|
1192
|
+
if (!qidoForStudyUID?.length) {
|
|
1193
|
+
navigate('/notfoundstudy', '_self');
|
|
1194
|
+
throw new Error('Invalid study URL');
|
|
1195
|
+
}
|
|
1351
1196
|
let qidoStudiesForPatient = qidoForStudyUID;
|
|
1352
1197
|
|
|
1353
1198
|
// try to fetch the prior studies based on the patientID if the
|
|
@@ -1361,7 +1206,7 @@ function PanelStudyBrowserTracking(_ref) {
|
|
|
1361
1206
|
const actuallyMappedStudies = mappedStudies.map(qidoStudy => {
|
|
1362
1207
|
return {
|
|
1363
1208
|
studyInstanceUid: qidoStudy.StudyInstanceUID,
|
|
1364
|
-
date: formatDate(qidoStudy.StudyDate),
|
|
1209
|
+
date: formatDate(qidoStudy.StudyDate) || t('NoStudyDate'),
|
|
1365
1210
|
description: qidoStudy.StudyDescription,
|
|
1366
1211
|
modalities: qidoStudy.ModalitiesInStudy,
|
|
1367
1212
|
numInstances: qidoStudy.NumInstances
|
|
@@ -1393,17 +1238,18 @@ function PanelStudyBrowserTracking(_ref) {
|
|
|
1393
1238
|
const imageIds = dataSource.getImageIdsForDisplaySet(displaySet);
|
|
1394
1239
|
const imageId = imageIds[Math.floor(imageIds.length / 2)];
|
|
1395
1240
|
|
|
1396
|
-
// TODO: Is it okay that imageIds are not returned here for SR
|
|
1397
|
-
if (imageId) {
|
|
1398
|
-
|
|
1399
|
-
newImageSrcEntry[dSet.displaySetInstanceUID] = await getImageSrc(imageId);
|
|
1400
|
-
setThumbnailImageSrcMap(prevState => {
|
|
1401
|
-
return {
|
|
1402
|
-
...prevState,
|
|
1403
|
-
...newImageSrcEntry
|
|
1404
|
-
};
|
|
1405
|
-
});
|
|
1241
|
+
// TODO: Is it okay that imageIds are not returned here for SR displaySets?
|
|
1242
|
+
if (!imageId || displaySet?.unsupported) {
|
|
1243
|
+
return;
|
|
1406
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
|
+
});
|
|
1407
1253
|
});
|
|
1408
1254
|
}, [displaySetService, dataSource, getImageSrc]);
|
|
1409
1255
|
|
|
@@ -1430,6 +1276,9 @@ function PanelStudyBrowserTracking(_ref) {
|
|
|
1430
1276
|
const displaySetInstanceUID = dSet.displaySetInstanceUID;
|
|
1431
1277
|
const newImageSrcEntry = {};
|
|
1432
1278
|
const displaySet = displaySetService.getDisplaySetByUID(displaySetInstanceUID);
|
|
1279
|
+
if (displaySet?.unsupported) {
|
|
1280
|
+
return;
|
|
1281
|
+
}
|
|
1433
1282
|
if (options.madeInClient) {
|
|
1434
1283
|
setJumpToDisplaySet(displaySetInstanceUID);
|
|
1435
1284
|
}
|
|
@@ -1437,31 +1286,41 @@ function PanelStudyBrowserTracking(_ref) {
|
|
|
1437
1286
|
const imageId = imageIds[Math.floor(imageIds.length / 2)];
|
|
1438
1287
|
|
|
1439
1288
|
// TODO: Is it okay that imageIds are not returned here for SR displaysets?
|
|
1440
|
-
if (imageId) {
|
|
1441
|
-
|
|
1442
|
-
newImageSrcEntry[displaySetInstanceUID] = await getImageSrc(imageId);
|
|
1443
|
-
setThumbnailImageSrcMap(prevState => {
|
|
1444
|
-
return {
|
|
1445
|
-
...prevState,
|
|
1446
|
-
...newImageSrcEntry
|
|
1447
|
-
};
|
|
1448
|
-
});
|
|
1289
|
+
if (!imageId) {
|
|
1290
|
+
return;
|
|
1449
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
|
+
});
|
|
1450
1301
|
});
|
|
1451
1302
|
});
|
|
1452
|
-
|
|
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)(() => {
|
|
1453
1309
|
// TODO: Will this always hold _all_ the displaySets we care about?
|
|
1454
1310
|
// DISPLAY_SETS_CHANGED returns `DisplaySerService.activeDisplaySets`
|
|
1455
1311
|
const SubscriptionDisplaySetsChanged = displaySetService.subscribe(displaySetService.EVENTS.DISPLAY_SETS_CHANGED, changedDisplaySets => {
|
|
1456
1312
|
const mappedDisplaySets = _mapDisplaySets(changedDisplaySets, thumbnailImageSrcMap, trackedSeries, viewports, viewportGridService, dataSource, displaySetService, uiDialogService, uiNotificationService);
|
|
1457
1313
|
setDisplaySets(mappedDisplaySets);
|
|
1458
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
|
+
});
|
|
1459
1319
|
return () => {
|
|
1460
|
-
SubscriptionDisplaySetsAdded.unsubscribe();
|
|
1461
1320
|
SubscriptionDisplaySetsChanged.unsubscribe();
|
|
1321
|
+
SubscriptionDisplaySetMetaDataInvalidated.unsubscribe();
|
|
1462
1322
|
};
|
|
1463
|
-
|
|
1464
|
-
}, [displaySetService, dataSource, getImageSrc, thumbnailImageSrcMap, trackedSeries, viewports]);
|
|
1323
|
+
}, [thumbnailImageSrcMap, trackedSeries, viewports, dataSource, displaySetService]);
|
|
1465
1324
|
const tabs = _createStudyBrowserTabs(StudyInstanceUIDs, studyDisplayList, displaySets, hangingProtocolService);
|
|
1466
1325
|
|
|
1467
1326
|
// TODO: Should not fire this on "close"
|
|
@@ -1571,14 +1430,16 @@ viewportGridService, dataSource, displaySetService, uiDialogService, uiNotificat
|
|
|
1571
1430
|
const thumbnailNoImageDisplaySets = [];
|
|
1572
1431
|
displaySets.filter(ds => !ds.excludeFromThumbnailBrowser).forEach(ds => {
|
|
1573
1432
|
const imageSrc = thumbnailImageSrcMap[ds.displaySetInstanceUID];
|
|
1574
|
-
const componentType = _getComponentType(ds
|
|
1433
|
+
const componentType = _getComponentType(ds);
|
|
1575
1434
|
const numPanes = viewportGridService.getNumViewportPanes();
|
|
1576
|
-
const viewportIdentificator =
|
|
1577
|
-
|
|
1578
|
-
|
|
1579
|
-
|
|
1580
|
-
|
|
1581
|
-
|
|
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
|
+
}
|
|
1582
1443
|
const array = componentType === 'thumbnailTracked' ? thumbnailDisplaySets : thumbnailNoImageDisplaySets;
|
|
1583
1444
|
const {
|
|
1584
1445
|
displaySetInstanceUID
|
|
@@ -1591,6 +1452,7 @@ viewportGridService, dataSource, displaySetService, uiDialogService, uiNotificat
|
|
|
1591
1452
|
seriesDate: formatDate(ds.SeriesDate),
|
|
1592
1453
|
numInstances: ds.numImageFrames,
|
|
1593
1454
|
countIcon: ds.countIcon,
|
|
1455
|
+
messages: ds.messages,
|
|
1594
1456
|
StudyInstanceUID: ds.StudyInstanceUID,
|
|
1595
1457
|
componentType,
|
|
1596
1458
|
imageSrc,
|
|
@@ -1601,11 +1463,12 @@ viewportGridService, dataSource, displaySetService, uiDialogService, uiNotificat
|
|
|
1601
1463
|
},
|
|
1602
1464
|
|
|
1603
1465
|
isTracked: trackedSeriesInstanceUIDs.includes(ds.SeriesInstanceUID),
|
|
1466
|
+
isHydratedForDerivedDisplaySet: ds.isHydrated,
|
|
1604
1467
|
viewportIdentificator
|
|
1605
1468
|
};
|
|
1606
1469
|
if (componentType === 'thumbnailNoImage') {
|
|
1607
1470
|
if (dataSource.reject && dataSource.reject.series) {
|
|
1608
|
-
thumbnailProps.canReject =
|
|
1471
|
+
thumbnailProps.canReject = !ds?.unsupported;
|
|
1609
1472
|
thumbnailProps.onReject = () => {
|
|
1610
1473
|
uiDialogService.create({
|
|
1611
1474
|
id: 'ds-reject-sr',
|
|
@@ -1616,16 +1479,18 @@ viewportGridService, dataSource, displaySetService, uiDialogService, uiNotificat
|
|
|
1616
1479
|
contentProps: {
|
|
1617
1480
|
title: 'Delete Report',
|
|
1618
1481
|
body: () => /*#__PURE__*/react.createElement("div", {
|
|
1619
|
-
className: "p-4 text-white
|
|
1620
|
-
}, /*#__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.")),
|
|
1621
1486
|
actions: [{
|
|
1622
1487
|
id: 'cancel',
|
|
1623
1488
|
text: 'Cancel',
|
|
1624
|
-
type: ui_src/* ButtonEnums.type */.LZ.
|
|
1489
|
+
type: ui_src/* ButtonEnums.type */.LZ.dt.secondary
|
|
1625
1490
|
}, {
|
|
1626
1491
|
id: 'yes',
|
|
1627
1492
|
text: 'Yes',
|
|
1628
|
-
type: ui_src/* ButtonEnums.type */.LZ.
|
|
1493
|
+
type: ui_src/* ButtonEnums.type */.LZ.dt.primary,
|
|
1629
1494
|
classes: ['reject-yes-button']
|
|
1630
1495
|
}],
|
|
1631
1496
|
onClose: () => uiDialogService.dismiss({
|
|
@@ -1635,10 +1500,10 @@ viewportGridService, dataSource, displaySetService, uiDialogService, uiNotificat
|
|
|
1635
1500
|
const yesButton = document.querySelector('.reject-yes-button');
|
|
1636
1501
|
yesButton.focus();
|
|
1637
1502
|
},
|
|
1638
|
-
onSubmit: async
|
|
1503
|
+
onSubmit: async _ref2 => {
|
|
1639
1504
|
let {
|
|
1640
1505
|
action
|
|
1641
|
-
} =
|
|
1506
|
+
} = _ref2;
|
|
1642
1507
|
switch (action.id) {
|
|
1643
1508
|
case 'yes':
|
|
1644
1509
|
try {
|
|
@@ -1682,8 +1547,8 @@ viewportGridService, dataSource, displaySetService, uiDialogService, uiNotificat
|
|
|
1682
1547
|
return [...thumbnailDisplaySets, ...thumbnailNoImageDisplaySets];
|
|
1683
1548
|
}
|
|
1684
1549
|
const thumbnailNoImageModalities = ['SR', 'SEG', 'SM', 'RTSTRUCT', 'RTPLAN', 'RTDOSE', 'DOC', 'OT'];
|
|
1685
|
-
function _getComponentType(
|
|
1686
|
-
if (thumbnailNoImageModalities.includes(Modality)) {
|
|
1550
|
+
function _getComponentType(ds) {
|
|
1551
|
+
if (thumbnailNoImageModalities.includes(ds.Modality) || ds?.unsupported) {
|
|
1687
1552
|
return 'thumbnailNoImage';
|
|
1688
1553
|
}
|
|
1689
1554
|
return 'thumbnailTracked';
|
|
@@ -1880,10 +1745,8 @@ WrappedPanelStudyBrowserTracking.propTypes = {
|
|
|
1880
1745
|
servicesManager: (prop_types_default()).object.isRequired
|
|
1881
1746
|
};
|
|
1882
1747
|
/* harmony default export */ const panels_PanelStudyBrowserTracking = (WrappedPanelStudyBrowserTracking);
|
|
1883
|
-
// EXTERNAL MODULE: ./hooks/index.js +
|
|
1884
|
-
var hooks = __webpack_require__(
|
|
1885
|
-
// EXTERNAL MODULE: ../../../node_modules/react-i18next/dist/es/index.js + 15 modules
|
|
1886
|
-
var es = __webpack_require__(21572);
|
|
1748
|
+
// EXTERNAL MODULE: ./hooks/index.js + 1 modules
|
|
1749
|
+
var hooks = __webpack_require__(10800);
|
|
1887
1750
|
;// CONCATENATED MODULE: ../../../extensions/measurement-tracking/src/panels/PanelMeasurementTableTracking/ActionButtons.tsx
|
|
1888
1751
|
|
|
1889
1752
|
|
|
@@ -1901,13 +1764,13 @@ function ActionButtons(_ref) {
|
|
|
1901
1764
|
return /*#__PURE__*/react.createElement(react.Fragment, null, /*#__PURE__*/react.createElement(ui_src/* Button */.zx, {
|
|
1902
1765
|
onClick: onExportClick,
|
|
1903
1766
|
disabled: disabled,
|
|
1904
|
-
type: ui_src/* ButtonEnums.type */.LZ.
|
|
1905
|
-
size: ui_src/* ButtonEnums.size */.LZ.
|
|
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
1770
|
className: "ml-2",
|
|
1908
1771
|
onClick: onCreateReportClick,
|
|
1909
|
-
type: ui_src/* ButtonEnums.type */.LZ.
|
|
1910
|
-
size: ui_src/* ButtonEnums.size */.LZ.
|
|
1772
|
+
type: ui_src/* ButtonEnums.type */.LZ.dt.secondary,
|
|
1773
|
+
size: ui_src/* ButtonEnums.size */.LZ.dp.small,
|
|
1911
1774
|
disabled: disabled
|
|
1912
1775
|
}, t('Create Report')));
|
|
1913
1776
|
}
|
|
@@ -1923,7 +1786,7 @@ ActionButtons.defaultProps = {
|
|
|
1923
1786
|
};
|
|
1924
1787
|
/* harmony default export */ const PanelMeasurementTableTracking_ActionButtons = (ActionButtons);
|
|
1925
1788
|
// EXTERNAL MODULE: ../../../node_modules/lodash.debounce/index.js
|
|
1926
|
-
var lodash_debounce = __webpack_require__(
|
|
1789
|
+
var lodash_debounce = __webpack_require__(8324);
|
|
1927
1790
|
var lodash_debounce_default = /*#__PURE__*/__webpack_require__.n(lodash_debounce);
|
|
1928
1791
|
;// CONCATENATED MODULE: ../../../extensions/measurement-tracking/src/panels/PanelMeasurementTableTracking/index.tsx
|
|
1929
1792
|
|
|
@@ -1955,9 +1818,9 @@ function PanelMeasurementTableTracking(_ref) {
|
|
|
1955
1818
|
servicesManager,
|
|
1956
1819
|
extensionManager
|
|
1957
1820
|
} = _ref;
|
|
1958
|
-
const [viewportGrid
|
|
1821
|
+
const [viewportGrid] = (0,ui_src/* useViewportGrid */.O_)();
|
|
1959
1822
|
const [measurementChangeTimestamp, setMeasurementsUpdated] = (0,react.useState)(Date.now().toString());
|
|
1960
|
-
const debouncedMeasurementChangeTimestamp = (0,hooks/* useDebounce */.
|
|
1823
|
+
const debouncedMeasurementChangeTimestamp = (0,hooks/* useDebounce */.N)(measurementChangeTimestamp, 200);
|
|
1961
1824
|
const {
|
|
1962
1825
|
measurementService,
|
|
1963
1826
|
uiDialogService,
|
|
@@ -2051,7 +1914,7 @@ function PanelMeasurementTableTracking(_ref) {
|
|
|
2051
1914
|
uid,
|
|
2052
1915
|
isActive
|
|
2053
1916
|
} = _ref2;
|
|
2054
|
-
measurementService.jumpToMeasurement(viewportGrid.
|
|
1917
|
+
measurementService.jumpToMeasurement(viewportGrid.activeViewportId, uid);
|
|
2055
1918
|
onMeasurementItemClickHandler({
|
|
2056
1919
|
uid,
|
|
2057
1920
|
isActive
|
|
@@ -2124,7 +1987,7 @@ function PanelMeasurementTableTracking(_ref) {
|
|
|
2124
1987
|
labelClassName: "text-white grow text-[14px] leading-[1.2]",
|
|
2125
1988
|
autoFocus: true,
|
|
2126
1989
|
id: "annotation",
|
|
2127
|
-
className: "
|
|
1990
|
+
className: "border-primary-main bg-black",
|
|
2128
1991
|
type: "text",
|
|
2129
1992
|
value: value.label,
|
|
2130
1993
|
onChange: onChangeHandler,
|
|
@@ -2134,11 +1997,11 @@ function PanelMeasurementTableTracking(_ref) {
|
|
|
2134
1997
|
actions: [{
|
|
2135
1998
|
id: 'cancel',
|
|
2136
1999
|
text: 'Cancel',
|
|
2137
|
-
type: ui_src/* ButtonEnums.type */.LZ.
|
|
2000
|
+
type: ui_src/* ButtonEnums.type */.LZ.dt.secondary
|
|
2138
2001
|
}, {
|
|
2139
2002
|
id: 'save',
|
|
2140
2003
|
text: 'Save',
|
|
2141
|
-
type: ui_src/* ButtonEnums.type */.LZ.
|
|
2004
|
+
type: ui_src/* ButtonEnums.type */.LZ.dt.primary
|
|
2142
2005
|
}],
|
|
2143
2006
|
onSubmit: onSubmitHandler
|
|
2144
2007
|
}
|
|
@@ -2160,7 +2023,7 @@ function PanelMeasurementTableTracking(_ref) {
|
|
|
2160
2023
|
const displayMeasurementsWithoutFindings = displayMeasurements.filter(dm => dm.measurementType !== measurementService.VALUE_TYPES.POINT);
|
|
2161
2024
|
const additionalFindings = displayMeasurements.filter(dm => dm.measurementType === measurementService.VALUE_TYPES.POINT);
|
|
2162
2025
|
return /*#__PURE__*/react.createElement(react.Fragment, null, /*#__PURE__*/react.createElement("div", {
|
|
2163
|
-
className: "
|
|
2026
|
+
className: "invisible-scrollbar overflow-y-auto overflow-x-hidden",
|
|
2164
2027
|
ref: measurementsPanelRef,
|
|
2165
2028
|
"data-cy": 'trackedMeasurements-panel'
|
|
2166
2029
|
}, displayStudySummary.key && /*#__PURE__*/react.createElement(ui_src/* StudySummary */.YL, {
|
|
@@ -2185,7 +2048,7 @@ function PanelMeasurementTableTracking(_ref) {
|
|
|
2185
2048
|
onExportClick: exportReport,
|
|
2186
2049
|
onCreateReportClick: () => {
|
|
2187
2050
|
sendTrackedMeasurementsEvent('SAVE_REPORT', {
|
|
2188
|
-
|
|
2051
|
+
viewportId: viewportGrid.activeViewportId,
|
|
2189
2052
|
isBackupSave: true
|
|
2190
2053
|
});
|
|
2191
2054
|
},
|
|
@@ -2234,7 +2097,9 @@ function _mapMeasurementToDisplay(measurement, types, displaySetService) {
|
|
|
2234
2097
|
if (findingSites) {
|
|
2235
2098
|
const siteText = [];
|
|
2236
2099
|
findingSites.forEach(site => {
|
|
2237
|
-
if (site?.text !== label)
|
|
2100
|
+
if (site?.text !== label) {
|
|
2101
|
+
siteText.push(site.text);
|
|
2102
|
+
}
|
|
2238
2103
|
});
|
|
2239
2104
|
displayText = [...siteText, ...displayText];
|
|
2240
2105
|
}
|
|
@@ -2273,7 +2138,7 @@ function getPanelModule(_ref) {
|
|
|
2273
2138
|
} = _ref;
|
|
2274
2139
|
return [{
|
|
2275
2140
|
name: 'seriesList',
|
|
2276
|
-
iconName: '
|
|
2141
|
+
iconName: 'tab-studies',
|
|
2277
2142
|
iconLabel: 'Studies',
|
|
2278
2143
|
label: 'Studies',
|
|
2279
2144
|
component: panels_PanelStudyBrowserTracking.bind(null, {
|
|
@@ -2298,7 +2163,7 @@ function getPanelModule(_ref) {
|
|
|
2298
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); }
|
|
2299
2164
|
|
|
2300
2165
|
const Component = /*#__PURE__*/react.lazy(() => {
|
|
2301
|
-
return __webpack_require__.e(/* import() */
|
|
2166
|
+
return __webpack_require__.e(/* import() */ 822).then(__webpack_require__.bind(__webpack_require__, 86822));
|
|
2302
2167
|
});
|
|
2303
2168
|
const OHIFCornerstoneViewport = props => {
|
|
2304
2169
|
return /*#__PURE__*/react.createElement(react.Suspense, {
|