@ohif/app 3.8.0-beta.6 → 3.8.0-beta.61
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/{220.bundle.f7e1c96c94245e70f2be.js → 109.bundle.b4fee2a22b622839baf5.js} +4466 -3715
- package/dist/{471.bundle.b3d77b83b1593c09a504.js → 121.bundle.ed23e7752a11005322e6.js} +47 -51
- package/dist/{19.bundle.f6ac71d29001b0db0ec0.js → 155.bundle.3879b7d76680473fa69f.js} +198 -207
- package/dist/{687.bundle.f87fb1a36ef1ca951690.js → 164.bundle.80b2977d58cd927397c2.js} +22 -38
- package/dist/17dd54813d5acc10bf8f.wasm +0 -0
- package/dist/{506.bundle.06f5c5620d0088ec0102.js → 188.bundle.eca333a03f6b311bf2e6.js} +23 -28
- package/dist/191.bundle.4850ab82949bb6f0eb73.js +30339 -0
- package/dist/20fc4c659b85ccd2a9c0.wasm +0 -0
- package/dist/{126.bundle.cefdf26c03a5ab8d60c8.js → 250.bundle.a02414ebc6fed29530e7.js} +63 -69
- package/dist/{236.bundle.3148dc4715c254801727.js → 270.bundle.94f5c172fb943bda1d03.js} +156 -178
- package/dist/290.bundle.8b4d7dfbc7cfe418a0f1.js +8883 -0
- package/dist/{451.bundle.9fd36f52ff69594f0669.js → 295.bundle.462f3328c716cbe6c613.js} +45 -59
- package/dist/{125.bundle.253395f320b72180da63.js → 297.bundle.81d63bb0b66d63df6d86.js} +7 -8
- package/dist/{613.bundle.a0eee4dc2d2764c2f7cd.js → 317.bundle.d51f1681f4bdc829be5b.js} +83 -57
- package/dist/{788.bundle.af903bf0598f0ad618e3.js → 339.bundle.5691c7bc4504f1e4c3b2.js} +190 -239
- package/dist/{202.bundle.d3490836f71e001dd30f.js → 342.bundle.a039c24e9f661f3b884d.js} +544 -860
- package/dist/{221.bundle.3f5f700b4c1ee8b1ce94.js → 50.bundle.d3eccf1a90cad61405c0.js} +199 -189
- package/dist/{957.bundle.9ea4506963ef8b2d84ba.js → 504.bundle.aa165082e2acc5ccf080.js} +14338 -27291
- package/dist/{886.bundle.d5116d9b8ea4964b68a0.js → 530.bundle.ce13c30b93a28cc85098.js} +40 -44
- package/dist/{250.bundle.8084960e3318cda37317.js → 544.bundle.3cf20da53f349abd8d67.js} +39 -44
- package/dist/{663.bundle.e3539f14edf9214e07eb.js → 559.bundle.146b02440e81f9fffea3.js} +149 -141
- package/dist/{410.bundle.5e16274b1082de6e127e.js → 594.bundle.76e05b71ad06361c9de9.js} +31 -35
- package/dist/{774.bundle.4b2dc46a35012b898e1a.js → 644.bundle.1e77691d2eeb96a423b0.js} +1852 -8945
- package/dist/{82.bundle.ae82f6434056c8d79fec.js → 68.bundle.ccbfa216e6d60ce3824f.js} +313 -324
- package/dist/{342.bundle.e485b92bd6d91bb7cc04.js → 704.bundle.042323b2cd8a9535050c.js} +1128 -737
- package/dist/{359.bundle.dedb5b782335939bdc52.js → 724.bundle.e821b6321fec63b9375a.js} +34 -37
- package/dist/{757.bundle.ec8301d8e70d2b990f65.js → 726.bundle.2bdb443d1b5620d74e6e.js} +512 -879
- package/dist/{530.bundle.a03b6f942ace3e1baa1e.js → 835.bundle.15aff0b7433bb0dd6d6d.js} +37 -30
- package/dist/{822.bundle.891f2e57b1b7bc2f4cb4.js → 862.bundle.e3fe2aae7903cc2ae8df.js} +27 -29
- package/dist/{181.bundle.2ddc6f90740895a3949c.js → 889.bundle.6850a0b8c412e3befab5.js} +135 -107
- package/dist/{181.css → 889.css} +1 -1
- package/dist/{281.bundle.e4c37762343dc03e4fa0.js → 905.bundle.806f0e8307eb1c9d1f6e.js} +29 -31
- package/dist/{814.bundle.98e400df965d000d78e6.js → 907.bundle.84dba9f6e90672071d82.js} +16 -18
- package/dist/{417.bundle.af0a207c29b109f84159.js → 931.bundle.d270a1fda9a2836c3cc5.js} +26 -26
- package/dist/{686.bundle.dccef1f36e4bc79bcc48.js → 939.bundle.84ee0b844023d924a22b.js} +7 -8
- package/dist/{12.bundle.75c761bd89ad782675c8.js → 961.bundle.80a864ec4e08ed7bb3b7.js} +16 -18
- package/dist/{776.bundle.08eb381dc3d06708eb0f.js → 963.bundle.f9511286d05982090a14.js} +1629 -845
- package/dist/987.bundle.e7c041a6dfb4ddb41813.js +122926 -0
- package/dist/{app.bundle.eeb94536f34535b1153f.js → app.bundle.2399e4eb1c8930ab9c5e.js} +142184 -60944
- package/dist/app.bundle.css +11 -11
- package/dist/cornerstoneDICOMImageLoader.min.js +1 -1
- package/dist/cornerstoneDICOMImageLoader.min.js.map +1 -1
- package/dist/{dicom-microscopy-viewer.bundle.2c146384eb9466d02ff8.js → dicom-microscopy-viewer.bundle.d3a56dc9f62df5e11019.js} +3 -3
- package/dist/index.html +1 -1
- package/dist/{index.worker.e62ecca63f1a2e124230.worker.js → index.worker.64c896c4316fcd506666.worker.js} +2 -2
- package/dist/index.worker.64c896c4316fcd506666.worker.js.map +1 -0
- package/dist/polySeg.bundle.99be036bab9b7f011b0c.js +252 -0
- package/dist/serve.json +12 -0
- package/dist/sw.js +1 -1
- package/package.json +25 -22
- package/dist/23.bundle.e008ad788170f2ed5569.js +0 -900
- package/dist/604.bundle.a51f83e64004bca5f497.js +0 -1848
- package/dist/743.bundle.489f7df3a089d4d374e1.js +0 -78007
- package/dist/75788f12450d4c5ed494.wasm +0 -0
- package/dist/775.bundle.2285e7e0e67878948c0d.js +0 -1009
- package/dist/index.worker.e62ecca63f1a2e124230.worker.js.map +0 -1
- /package/dist/{19.css → 155.css} +0 -0
- /package/dist/{579.css → 481.css} +0 -0
- /package/dist/{221.css → 50.css} +0 -0
- /package/dist/{250.css → 544.css} +0 -0
- /package/dist/{776.css → 963.css} +0 -0
|
@@ -1,9 +1,9 @@
|
|
|
1
|
-
|
|
1
|
+
"use strict";
|
|
2
|
+
(globalThis["webpackChunk"] = globalThis["webpackChunk"] || []).push([[339],{
|
|
2
3
|
|
|
3
|
-
/***/
|
|
4
|
+
/***/ 31339:
|
|
4
5
|
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
|
|
5
6
|
|
|
6
|
-
"use strict";
|
|
7
7
|
// ESM COMPAT FLAG
|
|
8
8
|
__webpack_require__.r(__webpack_exports__);
|
|
9
9
|
|
|
@@ -13,10 +13,10 @@ __webpack_require__.d(__webpack_exports__, {
|
|
|
13
13
|
});
|
|
14
14
|
|
|
15
15
|
;// CONCATENATED MODULE: ../../../extensions/tmtv/package.json
|
|
16
|
-
const package_namespaceObject = JSON.parse('{"
|
|
16
|
+
const package_namespaceObject = /*#__PURE__*/JSON.parse('{"UU":"@ohif/extension-tmtv"}');
|
|
17
17
|
;// CONCATENATED MODULE: ../../../extensions/tmtv/src/id.js
|
|
18
18
|
|
|
19
|
-
const id = package_namespaceObject.
|
|
19
|
+
const id = package_namespaceObject.UU;
|
|
20
20
|
|
|
21
21
|
;// CONCATENATED MODULE: ../../../extensions/tmtv/src/utils/hpViewports.ts
|
|
22
22
|
const ctAXIAL = {
|
|
@@ -29,7 +29,6 @@ const ctAXIAL = {
|
|
|
29
29
|
// index: 5,
|
|
30
30
|
preset: 'first' // 'first', 'last', 'middle'
|
|
31
31
|
},
|
|
32
|
-
|
|
33
32
|
syncGroups: [{
|
|
34
33
|
type: 'cameraPosition',
|
|
35
34
|
id: 'axialSync',
|
|
@@ -101,7 +100,6 @@ const ptAXIAL = {
|
|
|
101
100
|
// index: 5,
|
|
102
101
|
preset: 'first' // 'first', 'last', 'middle'
|
|
103
102
|
},
|
|
104
|
-
|
|
105
103
|
syncGroups: [{
|
|
106
104
|
type: 'cameraPosition',
|
|
107
105
|
id: 'axialSync',
|
|
@@ -216,7 +214,6 @@ const fusionAXIAL = {
|
|
|
216
214
|
// index: 5,
|
|
217
215
|
preset: 'first' // 'first', 'last', 'middle'
|
|
218
216
|
},
|
|
219
|
-
|
|
220
217
|
syncGroups: [{
|
|
221
218
|
type: 'cameraPosition',
|
|
222
219
|
id: 'axialSync',
|
|
@@ -692,16 +689,16 @@ function getHangingProtocolModule() {
|
|
|
692
689
|
}
|
|
693
690
|
/* harmony default export */ const src_getHangingProtocolModule = (getHangingProtocolModule);
|
|
694
691
|
// EXTERNAL MODULE: ../../../node_modules/react/index.js
|
|
695
|
-
var react = __webpack_require__(
|
|
692
|
+
var react = __webpack_require__(41766);
|
|
696
693
|
// EXTERNAL MODULE: ../../../node_modules/prop-types/index.js
|
|
697
|
-
var prop_types = __webpack_require__(
|
|
694
|
+
var prop_types = __webpack_require__(11374);
|
|
698
695
|
var prop_types_default = /*#__PURE__*/__webpack_require__.n(prop_types);
|
|
699
|
-
// EXTERNAL MODULE: ../../ui/src/index.js +
|
|
700
|
-
var src = __webpack_require__(
|
|
701
|
-
// EXTERNAL MODULE: ../../core/src/index.ts +
|
|
702
|
-
var core_src = __webpack_require__(
|
|
696
|
+
// EXTERNAL MODULE: ../../ui/src/index.js + 487 modules
|
|
697
|
+
var src = __webpack_require__(55395);
|
|
698
|
+
// EXTERNAL MODULE: ../../core/src/index.ts + 66 modules
|
|
699
|
+
var core_src = __webpack_require__(14283);
|
|
703
700
|
// EXTERNAL MODULE: ../../../node_modules/react-i18next/dist/es/index.js + 15 modules
|
|
704
|
-
var es = __webpack_require__(
|
|
701
|
+
var es = __webpack_require__(80619);
|
|
705
702
|
;// CONCATENATED MODULE: ../../../extensions/tmtv/src/Panels/PanelPetSUV.tsx
|
|
706
703
|
|
|
707
704
|
|
|
@@ -726,14 +723,13 @@ const DEFAULT_MEATADATA = {
|
|
|
726
723
|
* @param param0
|
|
727
724
|
* @returns
|
|
728
725
|
*/
|
|
729
|
-
function PanelPetSUV(
|
|
730
|
-
|
|
731
|
-
|
|
732
|
-
|
|
733
|
-
} = _ref;
|
|
726
|
+
function PanelPetSUV({
|
|
727
|
+
servicesManager,
|
|
728
|
+
commandsManager
|
|
729
|
+
}) {
|
|
734
730
|
const {
|
|
735
731
|
t
|
|
736
|
-
} = (0,es/* useTranslation
|
|
732
|
+
} = (0,es/* useTranslation */.Bd)('PanelSUV');
|
|
737
733
|
const {
|
|
738
734
|
displaySetService,
|
|
739
735
|
toolGroupService,
|
|
@@ -799,10 +795,9 @@ function PanelPetSUV(_ref) {
|
|
|
799
795
|
(0,react.useEffect)(() => {
|
|
800
796
|
const {
|
|
801
797
|
unsubscribe
|
|
802
|
-
} = hangingProtocolService.subscribe(hangingProtocolService.EVENTS.PROTOCOL_CHANGED,
|
|
803
|
-
|
|
804
|
-
|
|
805
|
-
} = _ref2;
|
|
798
|
+
} = hangingProtocolService.subscribe(hangingProtocolService.EVENTS.PROTOCOL_CHANGED, ({
|
|
799
|
+
viewportMatchDetails
|
|
800
|
+
}) => {
|
|
806
801
|
const displaySetInfo = getMatchingPTDisplaySet(viewportMatchDetails);
|
|
807
802
|
if (!displaySetInfo) {
|
|
808
803
|
return;
|
|
@@ -850,7 +845,7 @@ function PanelPetSUV(_ref) {
|
|
|
850
845
|
className: "flex flex-col"
|
|
851
846
|
}, /*#__PURE__*/react.createElement("div", {
|
|
852
847
|
className: "bg-primary-dark flex flex-col space-y-4 p-4"
|
|
853
|
-
}, /*#__PURE__*/react.createElement(src/* Input */.
|
|
848
|
+
}, /*#__PURE__*/react.createElement(src/* Input */.pd, {
|
|
854
849
|
label: t('Patient Sex'),
|
|
855
850
|
labelClassName: "text-white mb-2",
|
|
856
851
|
className: "mt-1",
|
|
@@ -860,7 +855,7 @@ function PanelPetSUV(_ref) {
|
|
|
860
855
|
PatientSex: e.target.value
|
|
861
856
|
});
|
|
862
857
|
}
|
|
863
|
-
}), /*#__PURE__*/react.createElement(src/* Input */.
|
|
858
|
+
}), /*#__PURE__*/react.createElement(src/* Input */.pd, {
|
|
864
859
|
label: t('Patient Weight (kg)'),
|
|
865
860
|
labelClassName: "text-white mb-2",
|
|
866
861
|
className: "mt-1",
|
|
@@ -870,7 +865,7 @@ function PanelPetSUV(_ref) {
|
|
|
870
865
|
PatientWeight: e.target.value
|
|
871
866
|
});
|
|
872
867
|
}
|
|
873
|
-
}), /*#__PURE__*/react.createElement(src/* Input */.
|
|
868
|
+
}), /*#__PURE__*/react.createElement(src/* Input */.pd, {
|
|
874
869
|
label: t('Total Dose (bq)'),
|
|
875
870
|
labelClassName: "text-white mb-2",
|
|
876
871
|
className: "mt-1",
|
|
@@ -882,7 +877,7 @@ function PanelPetSUV(_ref) {
|
|
|
882
877
|
}
|
|
883
878
|
});
|
|
884
879
|
}
|
|
885
|
-
}), /*#__PURE__*/react.createElement(src/* Input */.
|
|
880
|
+
}), /*#__PURE__*/react.createElement(src/* Input */.pd, {
|
|
886
881
|
label: t('Half Life (s)'),
|
|
887
882
|
labelClassName: "text-white mb-2",
|
|
888
883
|
className: "mt-1",
|
|
@@ -894,7 +889,7 @@ function PanelPetSUV(_ref) {
|
|
|
894
889
|
}
|
|
895
890
|
});
|
|
896
891
|
}
|
|
897
|
-
}), /*#__PURE__*/react.createElement(src/* Input */.
|
|
892
|
+
}), /*#__PURE__*/react.createElement(src/* Input */.pd, {
|
|
898
893
|
label: t('Injection Time (s)'),
|
|
899
894
|
labelClassName: "text-white mb-2",
|
|
900
895
|
className: "mt-1",
|
|
@@ -906,13 +901,13 @@ function PanelPetSUV(_ref) {
|
|
|
906
901
|
}
|
|
907
902
|
});
|
|
908
903
|
}
|
|
909
|
-
}), /*#__PURE__*/react.createElement(src/* Input */.
|
|
904
|
+
}), /*#__PURE__*/react.createElement(src/* Input */.pd, {
|
|
910
905
|
label: t('Acquisition Time (s)'),
|
|
911
906
|
labelClassName: "text-white mb-2",
|
|
912
907
|
className: "mt-1 mb-2",
|
|
913
908
|
value: metadata.SeriesTime || '',
|
|
914
909
|
onChange: () => {}
|
|
915
|
-
}), /*#__PURE__*/react.createElement(src/* Button
|
|
910
|
+
}), /*#__PURE__*/react.createElement(src/* Button */.$n, {
|
|
916
911
|
onClick: updateMetadata
|
|
917
912
|
}, "Reload Data"))));
|
|
918
913
|
}
|
|
@@ -931,21 +926,19 @@ PanelPetSUV.propTypes = {
|
|
|
931
926
|
;// CONCATENATED MODULE: ../../../extensions/tmtv/src/Panels/PanelROIThresholdSegmentation/segmentationEditHandler.tsx
|
|
932
927
|
|
|
933
928
|
|
|
934
|
-
function segmentationItemEditHandler(
|
|
935
|
-
|
|
936
|
-
|
|
937
|
-
|
|
938
|
-
} = _ref;
|
|
929
|
+
function segmentationItemEditHandler({
|
|
930
|
+
id,
|
|
931
|
+
servicesManager
|
|
932
|
+
}) {
|
|
939
933
|
const {
|
|
940
934
|
segmentationService,
|
|
941
935
|
uiDialogService
|
|
942
936
|
} = servicesManager.services;
|
|
943
937
|
const segmentation = segmentationService.getSegmentation(id);
|
|
944
|
-
const onSubmitHandler =
|
|
945
|
-
|
|
946
|
-
|
|
947
|
-
|
|
948
|
-
} = _ref2;
|
|
938
|
+
const onSubmitHandler = ({
|
|
939
|
+
action,
|
|
940
|
+
value
|
|
941
|
+
}) => {
|
|
949
942
|
switch (action.id) {
|
|
950
943
|
case 'save':
|
|
951
944
|
{
|
|
@@ -958,7 +951,6 @@ function segmentationItemEditHandler(_ref) {
|
|
|
958
951
|
);
|
|
959
952
|
}
|
|
960
953
|
}
|
|
961
|
-
|
|
962
954
|
uiDialogService.dismiss({
|
|
963
955
|
id: 'enter-annotation'
|
|
964
956
|
});
|
|
@@ -968,18 +960,17 @@ function segmentationItemEditHandler(_ref) {
|
|
|
968
960
|
centralize: true,
|
|
969
961
|
isDraggable: false,
|
|
970
962
|
showOverlay: true,
|
|
971
|
-
content: src/* Dialog */.
|
|
963
|
+
content: src/* Dialog */.lG,
|
|
972
964
|
contentProps: {
|
|
973
965
|
title: 'Enter your Segmentation',
|
|
974
966
|
noCloseButton: true,
|
|
975
967
|
value: {
|
|
976
968
|
label: segmentation.label || ''
|
|
977
969
|
},
|
|
978
|
-
body:
|
|
979
|
-
|
|
980
|
-
|
|
981
|
-
|
|
982
|
-
} = _ref3;
|
|
970
|
+
body: ({
|
|
971
|
+
value,
|
|
972
|
+
setValue
|
|
973
|
+
}) => {
|
|
983
974
|
const onChangeHandler = event => {
|
|
984
975
|
event.persist();
|
|
985
976
|
setValue(value => ({
|
|
@@ -997,7 +988,7 @@ function segmentationItemEditHandler(_ref) {
|
|
|
997
988
|
});
|
|
998
989
|
}
|
|
999
990
|
};
|
|
1000
|
-
return /*#__PURE__*/react.createElement(src/* Input */.
|
|
991
|
+
return /*#__PURE__*/react.createElement(src/* Input */.pd, {
|
|
1001
992
|
autoFocus: true,
|
|
1002
993
|
className: "border-primary-main bg-black",
|
|
1003
994
|
type: "text",
|
|
@@ -1010,11 +1001,11 @@ function segmentationItemEditHandler(_ref) {
|
|
|
1010
1001
|
actions: [{
|
|
1011
1002
|
id: 'cancel',
|
|
1012
1003
|
text: 'Cancel',
|
|
1013
|
-
type: src/* ButtonEnums.type */.
|
|
1004
|
+
type: src/* ButtonEnums.type */.Ny.NW.secondary
|
|
1014
1005
|
}, {
|
|
1015
1006
|
id: 'save',
|
|
1016
1007
|
text: 'Save',
|
|
1017
|
-
type: src/* ButtonEnums.type */.
|
|
1008
|
+
type: src/* ButtonEnums.type */.Ny.NW.primary
|
|
1018
1009
|
}],
|
|
1019
1010
|
onSubmit: onSubmitHandler
|
|
1020
1011
|
}
|
|
@@ -1025,22 +1016,21 @@ function segmentationItemEditHandler(_ref) {
|
|
|
1025
1016
|
|
|
1026
1017
|
|
|
1027
1018
|
|
|
1028
|
-
function ExportReports(
|
|
1029
|
-
|
|
1030
|
-
|
|
1031
|
-
|
|
1032
|
-
|
|
1033
|
-
|
|
1034
|
-
} = _ref;
|
|
1019
|
+
function ExportReports({
|
|
1020
|
+
segmentations,
|
|
1021
|
+
tmtvValue,
|
|
1022
|
+
config,
|
|
1023
|
+
commandsManager
|
|
1024
|
+
}) {
|
|
1035
1025
|
const {
|
|
1036
1026
|
t
|
|
1037
|
-
} = (0,es/* useTranslation
|
|
1027
|
+
} = (0,es/* useTranslation */.Bd)('PanelSUVExport');
|
|
1038
1028
|
return /*#__PURE__*/react.createElement(react.Fragment, null, segmentations?.length ? /*#__PURE__*/react.createElement("div", {
|
|
1039
1029
|
className: "mt-4 flex justify-center space-x-2"
|
|
1040
|
-
}, /*#__PURE__*/react.createElement(src/* LegacyButtonGroup */.
|
|
1030
|
+
}, /*#__PURE__*/react.createElement(src/* LegacyButtonGroup */.xA, {
|
|
1041
1031
|
color: "black",
|
|
1042
1032
|
size: "inherit"
|
|
1043
|
-
}, /*#__PURE__*/react.createElement(src/* LegacyButton */.
|
|
1033
|
+
}, /*#__PURE__*/react.createElement(src/* LegacyButton */._H, {
|
|
1044
1034
|
className: "px-2 py-2 text-base",
|
|
1045
1035
|
disabled: tmtvValue === null,
|
|
1046
1036
|
onClick: () => {
|
|
@@ -1050,10 +1040,10 @@ function ExportReports(_ref) {
|
|
|
1050
1040
|
config
|
|
1051
1041
|
});
|
|
1052
1042
|
}
|
|
1053
|
-
}, t('Export CSV'))), /*#__PURE__*/react.createElement(src/* LegacyButtonGroup */.
|
|
1043
|
+
}, t('Export CSV'))), /*#__PURE__*/react.createElement(src/* LegacyButtonGroup */.xA, {
|
|
1054
1044
|
color: "black",
|
|
1055
1045
|
size: "inherit"
|
|
1056
|
-
}, /*#__PURE__*/react.createElement(src/* LegacyButton */.
|
|
1046
|
+
}, /*#__PURE__*/react.createElement(src/* LegacyButton */._H, {
|
|
1057
1047
|
className: "px-2 py-2 text-base",
|
|
1058
1048
|
onClick: () => {
|
|
1059
1049
|
commandsManager.runCommand('createTMTVRTReport');
|
|
@@ -1077,32 +1067,30 @@ const options = [{
|
|
|
1077
1067
|
label: 'Range',
|
|
1078
1068
|
placeHolder: 'Range'
|
|
1079
1069
|
}];
|
|
1080
|
-
function ROIThresholdConfiguration(
|
|
1081
|
-
|
|
1082
|
-
|
|
1083
|
-
|
|
1084
|
-
|
|
1085
|
-
} = _ref;
|
|
1070
|
+
function ROIThresholdConfiguration({
|
|
1071
|
+
config,
|
|
1072
|
+
dispatch,
|
|
1073
|
+
runCommand
|
|
1074
|
+
}) {
|
|
1086
1075
|
const {
|
|
1087
1076
|
t
|
|
1088
|
-
} = (0,es/* useTranslation
|
|
1077
|
+
} = (0,es/* useTranslation */.Bd)('ROIThresholdConfiguration');
|
|
1089
1078
|
return /*#__PURE__*/react.createElement("div", {
|
|
1090
1079
|
className: "bg-primary-dark flex flex-col space-y-4 px-4 py-2"
|
|
1091
1080
|
}, /*#__PURE__*/react.createElement("div", {
|
|
1092
1081
|
className: "flex items-end space-x-2"
|
|
1093
1082
|
}, /*#__PURE__*/react.createElement("div", {
|
|
1094
1083
|
className: "flex w-1/2 flex-col"
|
|
1095
|
-
}, /*#__PURE__*/react.createElement(src/* Select */.
|
|
1084
|
+
}, /*#__PURE__*/react.createElement(src/* Select */.l6, {
|
|
1096
1085
|
label: t('Strategy'),
|
|
1097
1086
|
closeMenuOnSelect: true,
|
|
1098
1087
|
className: "border-primary-main mr-2 bg-black text-white ",
|
|
1099
1088
|
options: options,
|
|
1100
1089
|
placeholder: options.find(option => option.value === config.strategy).placeHolder,
|
|
1101
1090
|
value: config.strategy,
|
|
1102
|
-
onChange:
|
|
1103
|
-
|
|
1104
|
-
|
|
1105
|
-
} = _ref2;
|
|
1091
|
+
onChange: ({
|
|
1092
|
+
value
|
|
1093
|
+
}) => {
|
|
1106
1094
|
dispatch({
|
|
1107
1095
|
type: 'setStrategy',
|
|
1108
1096
|
payload: {
|
|
@@ -1112,19 +1100,19 @@ function ROIThresholdConfiguration(_ref) {
|
|
|
1112
1100
|
}
|
|
1113
1101
|
})), /*#__PURE__*/react.createElement("div", {
|
|
1114
1102
|
className: "w-1/2"
|
|
1115
|
-
}, /*#__PURE__*/react.createElement(src/* LegacyButtonGroup */.
|
|
1103
|
+
}, /*#__PURE__*/react.createElement(src/* LegacyButtonGroup */.xA, null, /*#__PURE__*/react.createElement(src/* LegacyButton */._H, {
|
|
1116
1104
|
size: "initial",
|
|
1117
1105
|
className: "px-2 py-2 text-base text-white",
|
|
1118
1106
|
color: "primaryLight",
|
|
1119
1107
|
variant: "outlined",
|
|
1120
1108
|
onClick: () => runCommand('setStartSliceForROIThresholdTool')
|
|
1121
|
-
}, t('Start')), /*#__PURE__*/react.createElement(src/* LegacyButton */.
|
|
1109
|
+
}, t('Start')), /*#__PURE__*/react.createElement(src/* LegacyButton */._H, {
|
|
1122
1110
|
size: "initial",
|
|
1123
1111
|
color: "primaryLight",
|
|
1124
1112
|
variant: "outlined",
|
|
1125
1113
|
className: "px-2 py-2 text-base text-white",
|
|
1126
1114
|
onClick: () => runCommand('setEndSliceForROIThresholdTool')
|
|
1127
|
-
}, t('End'))))), config.strategy === ROI_STAT && /*#__PURE__*/react.createElement(src/* Input */.
|
|
1115
|
+
}, t('End'))))), config.strategy === ROI_STAT && /*#__PURE__*/react.createElement(src/* Input */.pd, {
|
|
1128
1116
|
label: t('Percentage of Max SUV'),
|
|
1129
1117
|
labelClassName: "text-white",
|
|
1130
1118
|
className: "border-primary-main mt-2 bg-black",
|
|
@@ -1146,19 +1134,19 @@ function ROIThresholdConfiguration(_ref) {
|
|
|
1146
1134
|
}, /*#__PURE__*/react.createElement("td", {
|
|
1147
1135
|
className: "pr-4 pt-2",
|
|
1148
1136
|
colSpan: "3"
|
|
1149
|
-
}, /*#__PURE__*/react.createElement(src/* Label */.
|
|
1137
|
+
}, /*#__PURE__*/react.createElement(src/* Label */.JU, {
|
|
1150
1138
|
className: "text-white",
|
|
1151
1139
|
text: "Lower & Upper Ranges"
|
|
1152
1140
|
}))), /*#__PURE__*/react.createElement("tr", {
|
|
1153
1141
|
className: "mt-2"
|
|
1154
1142
|
}, /*#__PURE__*/react.createElement("td", {
|
|
1155
1143
|
className: "pr-4 pt-2 text-center"
|
|
1156
|
-
}, /*#__PURE__*/react.createElement(src/* Label */.
|
|
1144
|
+
}, /*#__PURE__*/react.createElement(src/* Label */.JU, {
|
|
1157
1145
|
className: "text-white",
|
|
1158
1146
|
text: "CT"
|
|
1159
1147
|
})), /*#__PURE__*/react.createElement("td", null, /*#__PURE__*/react.createElement("div", {
|
|
1160
1148
|
className: "flex justify-between"
|
|
1161
|
-
}, /*#__PURE__*/react.createElement(src/* Input */.
|
|
1149
|
+
}, /*#__PURE__*/react.createElement(src/* Input */.pd, {
|
|
1162
1150
|
label: t(''),
|
|
1163
1151
|
labelClassName: "text-white",
|
|
1164
1152
|
className: "border-primary-main mt-2 bg-black",
|
|
@@ -1173,7 +1161,7 @@ function ROIThresholdConfiguration(_ref) {
|
|
|
1173
1161
|
}
|
|
1174
1162
|
});
|
|
1175
1163
|
}
|
|
1176
|
-
}), /*#__PURE__*/react.createElement(src/* Input */.
|
|
1164
|
+
}), /*#__PURE__*/react.createElement(src/* Input */.pd, {
|
|
1177
1165
|
label: t(''),
|
|
1178
1166
|
labelClassName: "text-white",
|
|
1179
1167
|
className: "border-primary-main mt-2 bg-black",
|
|
@@ -1190,12 +1178,12 @@ function ROIThresholdConfiguration(_ref) {
|
|
|
1190
1178
|
}
|
|
1191
1179
|
})))), /*#__PURE__*/react.createElement("tr", null, /*#__PURE__*/react.createElement("td", {
|
|
1192
1180
|
className: "pr-4 pt-2 text-center"
|
|
1193
|
-
}, /*#__PURE__*/react.createElement(src/* Label */.
|
|
1181
|
+
}, /*#__PURE__*/react.createElement(src/* Label */.JU, {
|
|
1194
1182
|
className: "text-white",
|
|
1195
1183
|
text: "PT"
|
|
1196
1184
|
})), /*#__PURE__*/react.createElement("td", null, /*#__PURE__*/react.createElement("div", {
|
|
1197
1185
|
className: "flex justify-between"
|
|
1198
|
-
}, /*#__PURE__*/react.createElement(src/* Input */.
|
|
1186
|
+
}, /*#__PURE__*/react.createElement(src/* Input */.pd, {
|
|
1199
1187
|
label: t(''),
|
|
1200
1188
|
labelClassName: "text-white",
|
|
1201
1189
|
className: "border-primary-main mt-2 bg-black",
|
|
@@ -1210,7 +1198,7 @@ function ROIThresholdConfiguration(_ref) {
|
|
|
1210
1198
|
}
|
|
1211
1199
|
});
|
|
1212
1200
|
}
|
|
1213
|
-
}), /*#__PURE__*/react.createElement(src/* Input */.
|
|
1201
|
+
}), /*#__PURE__*/react.createElement(src/* Input */.pd, {
|
|
1214
1202
|
label: t(''),
|
|
1215
1203
|
labelClassName: "text-white",
|
|
1216
1204
|
className: "border-primary-main mt-2 bg-black",
|
|
@@ -1277,17 +1265,16 @@ function reducer(state, action) {
|
|
|
1277
1265
|
return state;
|
|
1278
1266
|
}
|
|
1279
1267
|
}
|
|
1280
|
-
function PanelRoiThresholdSegmentation(
|
|
1281
|
-
|
|
1282
|
-
|
|
1283
|
-
|
|
1284
|
-
} = _ref;
|
|
1268
|
+
function PanelRoiThresholdSegmentation({
|
|
1269
|
+
servicesManager,
|
|
1270
|
+
commandsManager
|
|
1271
|
+
}) {
|
|
1285
1272
|
const {
|
|
1286
1273
|
segmentationService
|
|
1287
1274
|
} = servicesManager.services;
|
|
1288
1275
|
const {
|
|
1289
1276
|
t
|
|
1290
|
-
} = (0,es/* useTranslation
|
|
1277
|
+
} = (0,es/* useTranslation */.Bd)('PanelSUV');
|
|
1291
1278
|
const [showConfig, setShowConfig] = (0,react.useState)(false);
|
|
1292
1279
|
const [labelmapLoading, setLabelmapLoading] = (0,react.useState)(false);
|
|
1293
1280
|
const [selectedSegmentationId, setSelectedSegmentationId] = (0,react.useState)(null);
|
|
@@ -1301,8 +1288,7 @@ function PanelRoiThresholdSegmentation(_ref) {
|
|
|
1301
1288
|
weight: WEIGHT_DEFAULT
|
|
1302
1289
|
});
|
|
1303
1290
|
const [tmtvValue, setTmtvValue] = (0,react.useState)(null);
|
|
1304
|
-
const runCommand = (0,react.useCallback)(
|
|
1305
|
-
let commandOptions = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
|
|
1291
|
+
const runCommand = (0,react.useCallback)((commandName, commandOptions = {}) => {
|
|
1306
1292
|
return commandsManager.runCommand(commandName, commandOptions);
|
|
1307
1293
|
}, [commandsManager]);
|
|
1308
1294
|
const handleTMTVCalculation = (0,react.useCallback)(() => {
|
|
@@ -1399,7 +1385,7 @@ function PanelRoiThresholdSegmentation(_ref) {
|
|
|
1399
1385
|
className: "invisible-scrollbar overflow-y-auto overflow-x-hidden"
|
|
1400
1386
|
}, /*#__PURE__*/react.createElement("div", {
|
|
1401
1387
|
className: "mx-4 my-4 mb-4 flex space-x-4"
|
|
1402
|
-
}, /*#__PURE__*/react.createElement(src/* Button
|
|
1388
|
+
}, /*#__PURE__*/react.createElement(src/* Button */.$n, {
|
|
1403
1389
|
onClick: () => {
|
|
1404
1390
|
setLabelmapLoading(true);
|
|
1405
1391
|
setTimeout(() => {
|
|
@@ -1409,7 +1395,7 @@ function PanelRoiThresholdSegmentation(_ref) {
|
|
|
1409
1395
|
});
|
|
1410
1396
|
});
|
|
1411
1397
|
}
|
|
1412
|
-
}, labelmapLoading ? 'loading ...' : 'New Label'), /*#__PURE__*/react.createElement(src/* Button
|
|
1398
|
+
}, labelmapLoading ? 'loading ...' : 'New Label'), /*#__PURE__*/react.createElement(src/* Button */.$n, {
|
|
1413
1399
|
onClick: handleROIThresholding
|
|
1414
1400
|
}, "Run")), /*#__PURE__*/react.createElement("div", {
|
|
1415
1401
|
className: "bg-secondary-dark border-secondary-light mb-2 flex h-8 cursor-pointer select-none items-center justify-around border-t outline-none first:border-0",
|
|
@@ -1424,7 +1410,7 @@ function PanelRoiThresholdSegmentation(_ref) {
|
|
|
1424
1410
|
runCommand: runCommand
|
|
1425
1411
|
}), /*#__PURE__*/react.createElement("div", {
|
|
1426
1412
|
className: "mt-4"
|
|
1427
|
-
}, segmentations?.length ? /*#__PURE__*/react.createElement(src/* SegmentationTable */.
|
|
1413
|
+
}, segmentations?.length ? /*#__PURE__*/react.createElement(src/* SegmentationTable */.R4, {
|
|
1428
1414
|
title: t('Segmentations'),
|
|
1429
1415
|
segmentations: segmentations,
|
|
1430
1416
|
activeSegmentationId: selectedSegmentationId,
|
|
@@ -1468,7 +1454,7 @@ function PanelRoiThresholdSegmentation(_ref) {
|
|
|
1468
1454
|
// navigate to a url in a new tab
|
|
1469
1455
|
window.open('https://github.com/OHIF/Viewers/blob/master/modes/tmtv/README.md', '_blank');
|
|
1470
1456
|
}
|
|
1471
|
-
}, /*#__PURE__*/react.createElement(src/* Icon */.
|
|
1457
|
+
}, /*#__PURE__*/react.createElement(src/* Icon */.In, {
|
|
1472
1458
|
width: "15px",
|
|
1473
1459
|
height: "15px",
|
|
1474
1460
|
name: 'info',
|
|
@@ -1507,12 +1493,11 @@ PanelRoiThresholdSegmentation.propTypes = {
|
|
|
1507
1493
|
// - cancel promises when component is destroyed
|
|
1508
1494
|
// - show errors in UI for thumbnails if promise fails
|
|
1509
1495
|
|
|
1510
|
-
function getPanelModule(
|
|
1511
|
-
|
|
1512
|
-
|
|
1513
|
-
|
|
1514
|
-
|
|
1515
|
-
} = _ref;
|
|
1496
|
+
function getPanelModule({
|
|
1497
|
+
commandsManager,
|
|
1498
|
+
extensionManager,
|
|
1499
|
+
servicesManager
|
|
1500
|
+
}) {
|
|
1516
1501
|
const wrappedPanelPetSuv = () => {
|
|
1517
1502
|
return /*#__PURE__*/react.createElement(PanelPetSUV, {
|
|
1518
1503
|
commandsManager: commandsManager,
|
|
@@ -1542,10 +1527,10 @@ function getPanelModule(_ref) {
|
|
|
1542
1527
|
}];
|
|
1543
1528
|
}
|
|
1544
1529
|
/* harmony default export */ const src_getPanelModule = (getPanelModule);
|
|
1545
|
-
// EXTERNAL MODULE: ../../../node_modules/@cornerstonejs/tools/dist/esm/index.js +
|
|
1546
|
-
var esm = __webpack_require__(
|
|
1547
|
-
// EXTERNAL MODULE: ../../../node_modules/@cornerstonejs/core/dist/esm/index.js +
|
|
1548
|
-
var dist_esm = __webpack_require__(
|
|
1530
|
+
// EXTERNAL MODULE: ../../../node_modules/@cornerstonejs/tools/dist/esm/index.js + 16 modules
|
|
1531
|
+
var esm = __webpack_require__(20767);
|
|
1532
|
+
// EXTERNAL MODULE: ../../../node_modules/@cornerstonejs/core/dist/esm/index.js + 383 modules
|
|
1533
|
+
var dist_esm = __webpack_require__(50719);
|
|
1549
1534
|
;// CONCATENATED MODULE: ../../../extensions/tmtv/src/utils/measurementServiceMappings/constants/supportedTools.js
|
|
1550
1535
|
/* harmony default export */ const supportedTools = (['RectangleROIStartEndThreshold']);
|
|
1551
1536
|
;// CONCATENATED MODULE: ../../../extensions/tmtv/src/utils/measurementServiceMappings/utils/getSOPInstanceAttributes.js
|
|
@@ -1630,7 +1615,6 @@ const RectangleROIStartEndThreshold = {
|
|
|
1630
1615
|
};
|
|
1631
1616
|
}
|
|
1632
1617
|
};
|
|
1633
|
-
|
|
1634
1618
|
/* harmony default export */ const measurementServiceMappings_RectangleROIStartEndThreshold = (RectangleROIStartEndThreshold);
|
|
1635
1619
|
;// CONCATENATED MODULE: ../../../extensions/tmtv/src/utils/measurementServiceMappings/measurementServiceMappingsFactory.js
|
|
1636
1620
|
|
|
@@ -1700,11 +1684,10 @@ const CORNERSTONE_3D_TOOLS_SOURCE_VERSION = '0.1';
|
|
|
1700
1684
|
* @param {Object} configuration
|
|
1701
1685
|
* @param {Object|Array} configuration.csToolsConfig
|
|
1702
1686
|
*/
|
|
1703
|
-
function init(
|
|
1704
|
-
|
|
1705
|
-
|
|
1706
|
-
|
|
1707
|
-
} = _ref;
|
|
1687
|
+
function init({
|
|
1688
|
+
servicesManager,
|
|
1689
|
+
extensionManager
|
|
1690
|
+
}) {
|
|
1708
1691
|
const {
|
|
1709
1692
|
measurementService,
|
|
1710
1693
|
displaySetService,
|
|
@@ -1719,7 +1702,7 @@ function init(_ref) {
|
|
|
1719
1702
|
colormaps.forEach(registerColormap);
|
|
1720
1703
|
}
|
|
1721
1704
|
// EXTERNAL MODULE: ../../../node_modules/gl-matrix/esm/index.js + 10 modules
|
|
1722
|
-
var gl_matrix_esm = __webpack_require__(
|
|
1705
|
+
var gl_matrix_esm = __webpack_require__(83636);
|
|
1723
1706
|
;// CONCATENATED MODULE: ../../../extensions/tmtv/src/utils/getThresholdValue.ts
|
|
1724
1707
|
|
|
1725
1708
|
function getRoiStats(referencedVolume, annotations) {
|
|
@@ -1797,8 +1780,7 @@ function _getStrategyFn(statistic) {
|
|
|
1797
1780
|
* @param segmentIndex The index of the segment to use for masking
|
|
1798
1781
|
* @returns
|
|
1799
1782
|
*/
|
|
1800
|
-
function calculateSuvPeak(labelmap, referenceVolume, annotations) {
|
|
1801
|
-
let segmentIndex = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : 1;
|
|
1783
|
+
function calculateSuvPeak(labelmap, referenceVolume, annotations, segmentIndex = 1) {
|
|
1802
1784
|
if (referenceVolume.metadata.Modality !== 'PT') {
|
|
1803
1785
|
return;
|
|
1804
1786
|
}
|
|
@@ -1823,7 +1805,7 @@ function calculateSuvPeak(labelmap, referenceVolume, annotations) {
|
|
|
1823
1805
|
const pointsToUse = [].concat(...projectionPoints); // cannot use flat() because of typescript compiler right now
|
|
1824
1806
|
|
|
1825
1807
|
const rectangleCornersIJK = pointsToUse.map(world => {
|
|
1826
|
-
const ijk = gl_matrix_esm/* vec3.fromValues */.
|
|
1808
|
+
const ijk = gl_matrix_esm/* vec3.fromValues */.eR.fromValues(0, 0, 0);
|
|
1827
1809
|
referenceVolumeImageData.worldToIndex(world, ijk);
|
|
1828
1810
|
return ijk;
|
|
1829
1811
|
});
|
|
@@ -1832,11 +1814,10 @@ function calculateSuvPeak(labelmap, referenceVolume, annotations) {
|
|
|
1832
1814
|
let max = 0;
|
|
1833
1815
|
let maxIJK = [0, 0, 0];
|
|
1834
1816
|
let maxLPS = [0, 0, 0];
|
|
1835
|
-
const callback =
|
|
1836
|
-
|
|
1837
|
-
|
|
1838
|
-
|
|
1839
|
-
} = _ref;
|
|
1817
|
+
const callback = ({
|
|
1818
|
+
pointIJK,
|
|
1819
|
+
pointLPS
|
|
1820
|
+
}) => {
|
|
1840
1821
|
const offset = referenceVolumeImageData.computeOffsetIndex(pointIJK);
|
|
1841
1822
|
const value = labelmapData[offset];
|
|
1842
1823
|
if (value !== segmentIndex) {
|
|
@@ -1858,12 +1839,12 @@ function calculateSuvPeak(labelmap, referenceVolume, annotations) {
|
|
|
1858
1839
|
*/
|
|
1859
1840
|
const radius = Math.pow(1 / (4 / 3 * Math.PI), 1 / 3) * 10;
|
|
1860
1841
|
const diameter = radius * 2;
|
|
1861
|
-
const secondaryCircleWorld = gl_matrix_esm/* vec3.create */.
|
|
1862
|
-
const bottomWorld = gl_matrix_esm/* vec3.create */.
|
|
1863
|
-
const topWorld = gl_matrix_esm/* vec3.create */.
|
|
1842
|
+
const secondaryCircleWorld = gl_matrix_esm/* vec3.create */.eR.create();
|
|
1843
|
+
const bottomWorld = gl_matrix_esm/* vec3.create */.eR.create();
|
|
1844
|
+
const topWorld = gl_matrix_esm/* vec3.create */.eR.create();
|
|
1864
1845
|
referenceVolumeImageData.indexToWorld(maxIJK, secondaryCircleWorld);
|
|
1865
|
-
gl_matrix_esm/* vec3.scaleAndAdd */.
|
|
1866
|
-
gl_matrix_esm/* vec3.scaleAndAdd */.
|
|
1846
|
+
gl_matrix_esm/* vec3.scaleAndAdd */.eR.scaleAndAdd(bottomWorld, secondaryCircleWorld, direction, -diameter / 2);
|
|
1847
|
+
gl_matrix_esm/* vec3.scaleAndAdd */.eR.scaleAndAdd(topWorld, secondaryCircleWorld, direction, diameter / 2);
|
|
1867
1848
|
const suvPeakCirclePoints = [bottomWorld, topWorld];
|
|
1868
1849
|
|
|
1869
1850
|
/**
|
|
@@ -1872,10 +1853,9 @@ function calculateSuvPeak(labelmap, referenceVolume, annotations) {
|
|
|
1872
1853
|
*/
|
|
1873
1854
|
let count = 0;
|
|
1874
1855
|
let acc = 0;
|
|
1875
|
-
const suvPeakMeanCallback =
|
|
1876
|
-
|
|
1877
|
-
|
|
1878
|
-
} = _ref2;
|
|
1856
|
+
const suvPeakMeanCallback = ({
|
|
1857
|
+
value
|
|
1858
|
+
}) => {
|
|
1879
1859
|
acc += value;
|
|
1880
1860
|
count += 1;
|
|
1881
1861
|
};
|
|
@@ -1902,8 +1882,7 @@ function calculateSuvPeak(labelmap, referenceVolume, annotations) {
|
|
|
1902
1882
|
* @param {number} segmentIndex
|
|
1903
1883
|
* @returns {number} TMTV in ml
|
|
1904
1884
|
*/
|
|
1905
|
-
function calculateTMTV(labelmaps) {
|
|
1906
|
-
let segmentIndex = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 1;
|
|
1885
|
+
function calculateTMTV(labelmaps, segmentIndex = 1) {
|
|
1907
1886
|
const volumeId = 'mergedLabelmap';
|
|
1908
1887
|
const mergedLabelmap = esm.utilities.segmentation.createMergedLabelmapForIndex(labelmaps, segmentIndex, volumeId);
|
|
1909
1888
|
const {
|
|
@@ -1942,11 +1921,10 @@ function createAndDownloadTMTVReport(segReport, additionalReportRows) {
|
|
|
1942
1921
|
csv.push(`Patient ID,${firstReport.PatientID}`);
|
|
1943
1922
|
csv.push(`Study Date,${firstReport.StudyDate}`);
|
|
1944
1923
|
csv.push('');
|
|
1945
|
-
additionalReportRows.forEach(
|
|
1946
|
-
|
|
1947
|
-
|
|
1948
|
-
|
|
1949
|
-
} = _ref;
|
|
1924
|
+
additionalReportRows.forEach(({
|
|
1925
|
+
key,
|
|
1926
|
+
value: values
|
|
1927
|
+
}) => {
|
|
1950
1928
|
const temp = [];
|
|
1951
1929
|
temp.push(`${key}`);
|
|
1952
1930
|
Object.keys(values).forEach(k => {
|
|
@@ -1965,19 +1943,19 @@ function createAndDownloadTMTVReport(segReport, additionalReportRows) {
|
|
|
1965
1943
|
a.click();
|
|
1966
1944
|
}
|
|
1967
1945
|
// EXTERNAL MODULE: ../../../node_modules/dcmjs/build/dcmjs.es.js
|
|
1968
|
-
var dcmjs_es = __webpack_require__(
|
|
1946
|
+
var dcmjs_es = __webpack_require__(31426);
|
|
1969
1947
|
// EXTERNAL MODULE: ../../../node_modules/@cornerstonejs/adapters/dist/adapters.es.js
|
|
1970
|
-
var adapters_es = __webpack_require__(
|
|
1948
|
+
var adapters_es = __webpack_require__(83342);
|
|
1971
1949
|
;// CONCATENATED MODULE: ../../../extensions/tmtv/src/utils/dicomRTAnnotationExport/RTStructureSet/dicomRTAnnotationExport.js
|
|
1972
1950
|
|
|
1973
1951
|
|
|
1974
1952
|
|
|
1975
1953
|
const {
|
|
1976
1954
|
datasetToBlob
|
|
1977
|
-
} = dcmjs_es
|
|
1955
|
+
} = dcmjs_es/* default.data */.Ay.data;
|
|
1978
1956
|
const metadataProvider = core_src.classes.MetadataProvider;
|
|
1979
1957
|
function dicomRTAnnotationExport(annotations) {
|
|
1980
|
-
const dataset = adapters_es
|
|
1958
|
+
const dataset = adapters_es/* adaptersRT */.f_.Cornerstone3D.RTSS.generateRTSSFromAnnotations(annotations, metadataProvider, core_src.DicomMetadataStore);
|
|
1981
1959
|
const reportBlob = datasetToBlob(dataset);
|
|
1982
1960
|
|
|
1983
1961
|
//Create a URL for the binary.
|
|
@@ -2001,12 +1979,11 @@ function dicomRTAnnotationExport(annotations) {
|
|
|
2001
1979
|
const commandsModule_metadataProvider = core_src.classes.MetadataProvider;
|
|
2002
1980
|
const RECTANGLE_ROI_THRESHOLD_MANUAL = 'RectangleROIStartEndThreshold';
|
|
2003
1981
|
const LABELMAP = esm.Enums.SegmentationRepresentations.Labelmap;
|
|
2004
|
-
const commandsModule =
|
|
2005
|
-
|
|
2006
|
-
|
|
2007
|
-
|
|
2008
|
-
|
|
2009
|
-
} = _ref;
|
|
1982
|
+
const commandsModule = ({
|
|
1983
|
+
servicesManager,
|
|
1984
|
+
commandsManager,
|
|
1985
|
+
extensionManager
|
|
1986
|
+
}) => {
|
|
2010
1987
|
const {
|
|
2011
1988
|
viewportGridService,
|
|
2012
1989
|
uiNotificationService,
|
|
@@ -2049,10 +2026,9 @@ const commandsModule = _ref => {
|
|
|
2049
2026
|
return toolGroupIds;
|
|
2050
2027
|
}
|
|
2051
2028
|
const actions = {
|
|
2052
|
-
getMatchingPTDisplaySet:
|
|
2053
|
-
|
|
2054
|
-
|
|
2055
|
-
} = _ref2;
|
|
2029
|
+
getMatchingPTDisplaySet: ({
|
|
2030
|
+
viewportMatchDetails
|
|
2031
|
+
}) => {
|
|
2056
2032
|
// Todo: this is assuming that the hanging protocol has successfully matched
|
|
2057
2033
|
// the correct PT. For future, we should have a way to filter out the PTs
|
|
2058
2034
|
// that are in the viewer layout (but then we have the problem of the attenuation
|
|
@@ -2063,12 +2039,9 @@ const commandsModule = _ref => {
|
|
|
2063
2039
|
const {
|
|
2064
2040
|
displaySetsInfo
|
|
2065
2041
|
} = viewportDetails;
|
|
2066
|
-
const displaySets = displaySetsInfo.map(
|
|
2067
|
-
|
|
2068
|
-
|
|
2069
|
-
} = _ref3;
|
|
2070
|
-
return displaySetService.getDisplaySetByUID(displaySetInstanceUID);
|
|
2071
|
-
});
|
|
2042
|
+
const displaySets = displaySetsInfo.map(({
|
|
2043
|
+
displaySetInstanceUID
|
|
2044
|
+
}) => displaySetService.getDisplaySetByUID(displaySetInstanceUID));
|
|
2072
2045
|
if (!displaySets || displaySets.length === 0) {
|
|
2073
2046
|
continue;
|
|
2074
2047
|
}
|
|
@@ -2079,10 +2052,9 @@ const commandsModule = _ref => {
|
|
|
2079
2052
|
}
|
|
2080
2053
|
return ptDisplaySet;
|
|
2081
2054
|
},
|
|
2082
|
-
getPTMetadata:
|
|
2083
|
-
|
|
2084
|
-
|
|
2085
|
-
} = _ref4;
|
|
2055
|
+
getPTMetadata: ({
|
|
2056
|
+
ptDisplaySet
|
|
2057
|
+
}) => {
|
|
2086
2058
|
const dataSource = extensionManager.getDataSources()[0];
|
|
2087
2059
|
const imageIds = dataSource.getImageIdsForDisplaySet(ptDisplaySet);
|
|
2088
2060
|
const firstImageId = imageIds[0];
|
|
@@ -2129,20 +2101,18 @@ const commandsModule = _ref => {
|
|
|
2129
2101
|
}
|
|
2130
2102
|
return segmentationId;
|
|
2131
2103
|
},
|
|
2132
|
-
setSegmentationActiveForToolGroups:
|
|
2133
|
-
|
|
2134
|
-
|
|
2135
|
-
} = _ref5;
|
|
2104
|
+
setSegmentationActiveForToolGroups: ({
|
|
2105
|
+
segmentationId
|
|
2106
|
+
}) => {
|
|
2136
2107
|
const toolGroupIds = _getMatchedViewportsToolGroupIds();
|
|
2137
2108
|
toolGroupIds.forEach(toolGroupId => {
|
|
2138
2109
|
segmentationService.setActiveSegmentationForToolGroup(segmentationId, toolGroupId);
|
|
2139
2110
|
});
|
|
2140
2111
|
},
|
|
2141
|
-
thresholdSegmentationByRectangleROITool:
|
|
2142
|
-
|
|
2143
|
-
|
|
2144
|
-
|
|
2145
|
-
} = _ref6;
|
|
2112
|
+
thresholdSegmentationByRectangleROITool: ({
|
|
2113
|
+
segmentationId,
|
|
2114
|
+
config
|
|
2115
|
+
}) => {
|
|
2146
2116
|
const segmentation = esm.segmentation.state.getSegmentation(segmentationId);
|
|
2147
2117
|
const {
|
|
2148
2118
|
representationData
|
|
@@ -2197,10 +2167,9 @@ const commandsModule = _ref => {
|
|
|
2197
2167
|
overwrite: true
|
|
2198
2168
|
});
|
|
2199
2169
|
},
|
|
2200
|
-
calculateSuvPeak:
|
|
2201
|
-
|
|
2202
|
-
|
|
2203
|
-
} = _ref7;
|
|
2170
|
+
calculateSuvPeak: ({
|
|
2171
|
+
labelmap
|
|
2172
|
+
}) => {
|
|
2204
2173
|
const {
|
|
2205
2174
|
referencedVolumeId
|
|
2206
2175
|
} = labelmap;
|
|
@@ -2215,11 +2184,10 @@ const commandsModule = _ref => {
|
|
|
2215
2184
|
suvMaxLPS: suvPeak.maxLPS
|
|
2216
2185
|
};
|
|
2217
2186
|
},
|
|
2218
|
-
getLesionStats:
|
|
2219
|
-
|
|
2220
|
-
|
|
2221
|
-
|
|
2222
|
-
} = _ref8;
|
|
2187
|
+
getLesionStats: ({
|
|
2188
|
+
labelmap,
|
|
2189
|
+
segmentIndex = 1
|
|
2190
|
+
}) => {
|
|
2223
2191
|
const {
|
|
2224
2192
|
scalarData,
|
|
2225
2193
|
spacing
|
|
@@ -2253,10 +2221,9 @@ const commandsModule = _ref => {
|
|
|
2253
2221
|
};
|
|
2254
2222
|
return stats;
|
|
2255
2223
|
},
|
|
2256
|
-
calculateLesionGlycolysis:
|
|
2257
|
-
|
|
2258
|
-
|
|
2259
|
-
} = _ref9;
|
|
2224
|
+
calculateLesionGlycolysis: ({
|
|
2225
|
+
lesionStats
|
|
2226
|
+
}) => {
|
|
2260
2227
|
const {
|
|
2261
2228
|
meanValue,
|
|
2262
2229
|
volume
|
|
@@ -2265,22 +2232,20 @@ const commandsModule = _ref => {
|
|
|
2265
2232
|
lesionGlyoclysisStats: volume * meanValue
|
|
2266
2233
|
};
|
|
2267
2234
|
},
|
|
2268
|
-
calculateTMTV:
|
|
2269
|
-
|
|
2270
|
-
|
|
2271
|
-
} = _ref10;
|
|
2235
|
+
calculateTMTV: ({
|
|
2236
|
+
segmentations
|
|
2237
|
+
}) => {
|
|
2272
2238
|
const labelmaps = segmentations.map(s => segmentationService.getLabelmapVolume(s.id));
|
|
2273
2239
|
if (!labelmaps.length) {
|
|
2274
2240
|
return;
|
|
2275
2241
|
}
|
|
2276
2242
|
return utils_calculateTMTV(labelmaps);
|
|
2277
2243
|
},
|
|
2278
|
-
exportTMTVReportCSV:
|
|
2279
|
-
|
|
2280
|
-
|
|
2281
|
-
|
|
2282
|
-
|
|
2283
|
-
} = _ref11;
|
|
2244
|
+
exportTMTVReportCSV: ({
|
|
2245
|
+
segmentations,
|
|
2246
|
+
tmtv,
|
|
2247
|
+
config
|
|
2248
|
+
}) => {
|
|
2284
2249
|
const segReport = commandsManager.runCommand('getSegmentationCSVReport', {
|
|
2285
2250
|
segmentations
|
|
2286
2251
|
});
|
|
@@ -2305,10 +2270,9 @@ const commandsModule = _ref => {
|
|
|
2305
2270
|
}];
|
|
2306
2271
|
createAndDownloadTMTVReport(segReport, additionalReportRows);
|
|
2307
2272
|
},
|
|
2308
|
-
getTotalLesionGlycolysis:
|
|
2309
|
-
|
|
2310
|
-
|
|
2311
|
-
} = _ref12;
|
|
2273
|
+
getTotalLesionGlycolysis: ({
|
|
2274
|
+
segmentations
|
|
2275
|
+
}) => {
|
|
2312
2276
|
const labelmapVolumes = segmentations.map(s => segmentationService.getLabelmapVolume(s.id));
|
|
2313
2277
|
let mergedLabelmap;
|
|
2314
2278
|
// merge labelmap will through an error if labels maps are not the same size
|
|
@@ -2373,17 +2337,16 @@ const commandsModule = _ref => {
|
|
|
2373
2337
|
|
|
2374
2338
|
// distance between camera focal point and each point on the rectangle
|
|
2375
2339
|
const newPoints = points.map(point => {
|
|
2376
|
-
const distance = gl_matrix_esm/* vec3.create */.
|
|
2377
|
-
gl_matrix_esm/* vec3.subtract */.
|
|
2340
|
+
const distance = gl_matrix_esm/* vec3.create */.eR.create();
|
|
2341
|
+
gl_matrix_esm/* vec3.subtract */.eR.subtract(distance, focalPoint, point);
|
|
2378
2342
|
// distance in the direction of the viewPlaneNormal
|
|
2379
|
-
const distanceInViewPlane = gl_matrix_esm/* vec3.dot */.
|
|
2343
|
+
const distanceInViewPlane = gl_matrix_esm/* vec3.dot */.eR.dot(distance, viewPlaneNormal);
|
|
2380
2344
|
// new point is current point minus distanceInViewPlane
|
|
2381
|
-
const newPoint = gl_matrix_esm/* vec3.create */.
|
|
2382
|
-
gl_matrix_esm/* vec3.scaleAndAdd */.
|
|
2345
|
+
const newPoint = gl_matrix_esm/* vec3.create */.eR.create();
|
|
2346
|
+
gl_matrix_esm/* vec3.scaleAndAdd */.eR.scaleAndAdd(newPoint, point, viewPlaneNormal, distanceInViewPlane);
|
|
2383
2347
|
return newPoint;
|
|
2384
2348
|
//
|
|
2385
2349
|
});
|
|
2386
|
-
|
|
2387
2350
|
handles.points = newPoints;
|
|
2388
2351
|
// IMPORTANT: invalidate the toolData for the cached stat to get updated
|
|
2389
2352
|
// and re-calculate the projection points
|
|
@@ -2420,10 +2383,9 @@ const commandsModule = _ref => {
|
|
|
2420
2383
|
annotations
|
|
2421
2384
|
});
|
|
2422
2385
|
},
|
|
2423
|
-
getSegmentationCSVReport:
|
|
2424
|
-
|
|
2425
|
-
|
|
2426
|
-
} = _ref13;
|
|
2386
|
+
getSegmentationCSVReport: ({
|
|
2387
|
+
segmentations
|
|
2388
|
+
}) => {
|
|
2427
2389
|
if (!segmentations || !segmentations.length) {
|
|
2428
2390
|
segmentations = segmentationService.getSegmentations();
|
|
2429
2391
|
}
|
|
@@ -2469,7 +2431,7 @@ const commandsModule = _ref => {
|
|
|
2469
2431
|
continue;
|
|
2470
2432
|
}
|
|
2471
2433
|
const firstImageId = referencedVolume.imageIds[0];
|
|
2472
|
-
const instance = core_src
|
|
2434
|
+
const instance = core_src/* default.classes */.Ay.classes.MetadataProvider.get('instance', firstImageId);
|
|
2473
2435
|
if (!instance) {
|
|
2474
2436
|
report[id] = segReport;
|
|
2475
2437
|
continue;
|
|
@@ -2485,17 +2447,15 @@ const commandsModule = _ref => {
|
|
|
2485
2447
|
}
|
|
2486
2448
|
return report;
|
|
2487
2449
|
},
|
|
2488
|
-
exportRTReportForAnnotations:
|
|
2489
|
-
|
|
2490
|
-
|
|
2491
|
-
} = _ref14;
|
|
2450
|
+
exportRTReportForAnnotations: ({
|
|
2451
|
+
annotations
|
|
2452
|
+
}) => {
|
|
2492
2453
|
RTStructureSet(annotations);
|
|
2493
2454
|
},
|
|
2494
|
-
setFusionPTColormap:
|
|
2495
|
-
|
|
2496
|
-
|
|
2497
|
-
|
|
2498
|
-
} = _ref15;
|
|
2455
|
+
setFusionPTColormap: ({
|
|
2456
|
+
toolGroupId,
|
|
2457
|
+
colormap
|
|
2458
|
+
}) => {
|
|
2499
2459
|
const toolGroup = toolGroupService.getToolGroup(toolGroupId);
|
|
2500
2460
|
const {
|
|
2501
2461
|
viewportMatchDetails
|
|
@@ -2639,13 +2599,12 @@ const tmtvExtension = {
|
|
|
2639
2599
|
* Only required property. Should be a unique value across all extensions.
|
|
2640
2600
|
*/
|
|
2641
2601
|
id: id,
|
|
2642
|
-
preRegistration(
|
|
2643
|
-
|
|
2644
|
-
|
|
2645
|
-
|
|
2646
|
-
|
|
2647
|
-
|
|
2648
|
-
} = _ref;
|
|
2602
|
+
preRegistration({
|
|
2603
|
+
servicesManager,
|
|
2604
|
+
commandsManager,
|
|
2605
|
+
extensionManager,
|
|
2606
|
+
configuration = {}
|
|
2607
|
+
}) {
|
|
2649
2608
|
init({
|
|
2650
2609
|
servicesManager,
|
|
2651
2610
|
commandsManager,
|
|
@@ -2655,12 +2614,11 @@ const tmtvExtension = {
|
|
|
2655
2614
|
},
|
|
2656
2615
|
getPanelModule: src_getPanelModule,
|
|
2657
2616
|
getHangingProtocolModule: src_getHangingProtocolModule,
|
|
2658
|
-
getCommandsModule(
|
|
2659
|
-
|
|
2660
|
-
|
|
2661
|
-
|
|
2662
|
-
|
|
2663
|
-
} = _ref2;
|
|
2617
|
+
getCommandsModule({
|
|
2618
|
+
servicesManager,
|
|
2619
|
+
commandsManager,
|
|
2620
|
+
extensionManager
|
|
2621
|
+
}) {
|
|
2664
2622
|
return src_commandsModule({
|
|
2665
2623
|
servicesManager,
|
|
2666
2624
|
commandsManager,
|
|
@@ -2670,13 +2628,6 @@ const tmtvExtension = {
|
|
|
2670
2628
|
};
|
|
2671
2629
|
/* harmony default export */ const tmtv_src = (tmtvExtension);
|
|
2672
2630
|
|
|
2673
|
-
/***/ }),
|
|
2674
|
-
|
|
2675
|
-
/***/ 78753:
|
|
2676
|
-
/***/ (() => {
|
|
2677
|
-
|
|
2678
|
-
/* (ignored) */
|
|
2679
|
-
|
|
2680
2631
|
/***/ })
|
|
2681
2632
|
|
|
2682
2633
|
}]);
|