@ohif/app 3.7.0-beta.5 → 3.7.0-beta.50
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.24fc5ca2280d2980bf0f.js → 12.bundle.7348933f311b7e2e7d1e.js} +6 -6
- package/dist/{295.bundle.957b1159fec14b9199a1.js → 125.bundle.1ae4c6313c31cd0502cc.js} +4 -4
- package/dist/{208.bundle.e50761cf714ac772d9cc.js → 128.bundle.d933d385a22b1ce9ac77.js} +6 -6
- package/dist/{616.bundle.cbb2e0a23b1343b6441f.js → 150.bundle.e6880fd33346f8c24f6e.js} +148 -103
- package/dist/{351.bundle.0742237651aef9694a65.js → 181.bundle.234fef330d4fe6baca8b.js} +139 -128
- package/dist/{351.css → 181.css} +1 -1
- package/dist/{606.bundle.5d876f5f3dd8287f0a28.js → 202.bundle.ac1e5e25d4daf54581b1.js} +3705 -981
- package/dist/{926.bundle.dbc9d0e591cb9217fda2.js → 220.bundle.f7e1c96c94245e70f2be.js} +990 -400
- package/dist/{664.bundle.09abae984223969d1bde.js → 23.bundle.e008ad788170f2ed5569.js} +5 -6
- package/dist/{976.bundle.3b8f97b61cdfa7dc32e3.js → 236.bundle.765f3c70e21f29ab2e89.js} +38 -24
- package/dist/{55.bundle.550a823e75eb608e8d5e.js → 250.bundle.3bcee6d765a209281ddd.js} +37 -25
- package/dist/{973.bundle.77245411064eaa3ee79a.js → 281.bundle.dcc5492f44a83edd5320.js} +18 -14
- package/dist/{744.bundle.81246dc9f043a17fde8a.js → 30.bundle.5e2f6eeb779d579fc16e.js} +77 -89
- package/dist/{192.bundle.6dc1f92074738663620f.js → 348.bundle.c2deacff008bb8c68a14.js} +18 -14
- package/dist/{404.bundle.b7b371a30ca5bc5a0554.js → 359.bundle.594d68e783da31f97c30.js} +13 -19
- package/dist/{50.bundle.135ada11018fff84d66b.js → 378.bundle.6996a4170f4f05198f23.js} +10 -8
- package/dist/{790.bundle.ca48b21507b91b675810.js → 410.bundle.c8759293de9af17687c4.js} +6 -6
- package/dist/{151.bundle.31ea35044218837bf73f.js → 417.bundle.720dc8f3a6e99f378aa9.js} +9 -11
- package/dist/{569.bundle.21f8ad57c06a210448b5.js → 451.bundle.9941d9134fcf747d452a.js} +62 -81
- package/dist/{581.bundle.dc6197189f7c88c27d4c.js → 471.bundle.c9e618aeda78362776aa.js} +43 -72
- package/dist/{199.bundle.dff92336f7bc36f2e484.js → 506.bundle.8a2562b7038f6c983884.js} +79 -15
- package/dist/{935.bundle.deeffff0e4f7b528e3c3.js → 604.bundle.a51f83e64004bca5f497.js} +2 -3
- package/dist/{984.bundle.0301a876361809048be0.js → 663.bundle.e839c4819de3e372d07b.js} +52 -34
- package/dist/{531.bundle.2a82fb1d69e5b57cc72b.js → 677.bundle.ec5f2b4707db33bd4d8e.js} +731 -447
- package/dist/{707.bundle.7068a46e5be26fe60fce.js → 678.bundle.84a43fe18483016344de.js} +237 -244
- package/dist/{205.bundle.b5a473c200dcf2bbcdb4.js → 686.bundle.70565410179f1e7d22e6.js} +4 -4
- package/dist/{331.bundle.bd0c13931a21d53086c9.js → 754.bundle.8a16fc8ad21fe00c2e15.js} +12346 -7519
- package/dist/{728.bundle.d13856835357400fef82.js → 774.bundle.8ba82ee206266eb2da5e.js} +90 -63
- package/dist/{381.bundle.0905e683605fcbc0895f.js → 775.bundle.2285e7e0e67878948c0d.js} +16 -16
- package/dist/{283.bundle.f06203ec47c287f44cea.js → 782.bundle.0ea6e2a386f4ba43d830.js} +57 -25
- package/dist/{82.bundle.0456c9e58fa89b131f14.js → 789.bundle.aad9b29b476ea70e1350.js} +522 -157
- package/dist/{642.bundle.e8d980d4ba95b0b2665f.js → 814.bundle.2e308e04f0d21b4295a9.js} +6 -6
- package/dist/{799.bundle.758558e64147e5aad612.js → 822.bundle.d40c439da659f0e8500d.js} +65 -16
- package/dist/{953.bundle.3b0189ebc11cf0946f18.js → 886.bundle.68ef58774a6837f57631.js} +11 -10
- package/dist/{270.bundle.4564621556b0f963a004.js → 925.bundle.a2f1103d968c53a2b8fb.js} +626 -544
- package/dist/945.min.worker.js +1 -1
- package/dist/945.min.worker.js.map +1 -1
- package/dist/app-config.js +7 -7
- package/dist/{app.bundle.3ab8624d0394f1b10a0d.js → app.bundle.00cc8e251524b80d3347.js} +59252 -59601
- package/dist/app.bundle.css +9 -9
- 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.44f7fedc03a58d5911d1.js} +3 -3
- package/dist/google.js +6 -5
- 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/sw.js +1 -1
- package/package.json +19 -20
- package/dist/780.bundle.fd0f13dc92e9caa0581e.js +0 -4769
- package/dist/index.worker.1c69152d710fa7b84bce.worker.js.map +0 -1
- /package/dist/{55.css → 250.css} +0 -0
- /package/dist/{806.css → 579.css} +0 -0
- /package/dist/{707.css → 678.css} +0 -0
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
(
|
|
2
|
+
(self["webpackChunk"] = self["webpackChunk"] || []).push([[789],{
|
|
3
3
|
|
|
4
|
-
/***/
|
|
4
|
+
/***/ 1789:
|
|
5
5
|
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
|
|
6
6
|
|
|
7
7
|
// ESM COMPAT FLAG
|
|
@@ -28,11 +28,11 @@ __webpack_require__.d(utils_namespaceObject, {
|
|
|
28
28
|
});
|
|
29
29
|
|
|
30
30
|
// EXTERNAL MODULE: ../../../node_modules/dicomweb-client/build/dicomweb-client.es.js
|
|
31
|
-
var dicomweb_client_es = __webpack_require__(
|
|
32
|
-
// EXTERNAL MODULE: ../../core/src/index.ts +
|
|
33
|
-
var src = __webpack_require__(
|
|
31
|
+
var dicomweb_client_es = __webpack_require__(97604);
|
|
32
|
+
// EXTERNAL MODULE: ../../core/src/index.ts + 104 modules
|
|
33
|
+
var src = __webpack_require__(24966);
|
|
34
34
|
// EXTERNAL MODULE: ../../core/src/utils/sortStudy.ts
|
|
35
|
-
var sortStudy = __webpack_require__(
|
|
35
|
+
var sortStudy = __webpack_require__(62971);
|
|
36
36
|
;// CONCATENATED MODULE: ../../../extensions/default/src/DicomWebDataSource/qido.js
|
|
37
37
|
/**
|
|
38
38
|
* QIDO - Query based on ID for DICOM Objects
|
|
@@ -378,7 +378,7 @@ function getImageId(_ref) {
|
|
|
378
378
|
}
|
|
379
379
|
}
|
|
380
380
|
// EXTERNAL MODULE: ../../../node_modules/dcmjs/build/dcmjs.es.js
|
|
381
|
-
var dcmjs_es = __webpack_require__(
|
|
381
|
+
var dcmjs_es = __webpack_require__(67540);
|
|
382
382
|
;// CONCATENATED MODULE: ../../../extensions/default/src/DicomWebDataSource/wado/retrieveMetadataLoader.js
|
|
383
383
|
/**
|
|
384
384
|
* Class to define inheritance of load retrieve strategy.
|
|
@@ -708,12 +708,16 @@ class StaticWadoClient extends dicomweb_client_es.api.DICOMwebClient {
|
|
|
708
708
|
* @returns
|
|
709
709
|
*/
|
|
710
710
|
async searchForStudies(options) {
|
|
711
|
-
if (!this.staticWado)
|
|
711
|
+
if (!this.staticWado) {
|
|
712
|
+
return super.searchForStudies(options);
|
|
713
|
+
}
|
|
712
714
|
const searchResult = await super.searchForStudies(options);
|
|
713
715
|
const {
|
|
714
716
|
queryParams
|
|
715
717
|
} = options;
|
|
716
|
-
if (!queryParams)
|
|
718
|
+
if (!queryParams) {
|
|
719
|
+
return searchResult;
|
|
720
|
+
}
|
|
717
721
|
const lowerParams = this.toLowerParams(queryParams);
|
|
718
722
|
const filtered = searchResult.filter(study => {
|
|
719
723
|
for (const key of Object.keys(StaticWadoClient.studyFilterKeys)) {
|
|
@@ -726,12 +730,16 @@ class StaticWadoClient extends dicomweb_client_es.api.DICOMwebClient {
|
|
|
726
730
|
return filtered;
|
|
727
731
|
}
|
|
728
732
|
async searchForSeries(options) {
|
|
729
|
-
if (!this.staticWado)
|
|
733
|
+
if (!this.staticWado) {
|
|
734
|
+
return super.searchForSeries(options);
|
|
735
|
+
}
|
|
730
736
|
const searchResult = await super.searchForSeries(options);
|
|
731
737
|
const {
|
|
732
738
|
queryParams
|
|
733
739
|
} = options;
|
|
734
|
-
if (!queryParams)
|
|
740
|
+
if (!queryParams) {
|
|
741
|
+
return searchResult;
|
|
742
|
+
}
|
|
735
743
|
const lowerParams = this.toLowerParams(queryParams);
|
|
736
744
|
const filtered = searchResult.filter(series => {
|
|
737
745
|
for (const key of Object.keys(StaticWadoClient.seriesFilterKeys)) {
|
|
@@ -767,8 +775,12 @@ class StaticWadoClient extends dicomweb_client_es.api.DICOMwebClient {
|
|
|
767
775
|
actual = actual.Alphabetic;
|
|
768
776
|
}
|
|
769
777
|
if (typeof actual == 'string') {
|
|
770
|
-
if (actual.length === 0)
|
|
771
|
-
|
|
778
|
+
if (actual.length === 0) {
|
|
779
|
+
return true;
|
|
780
|
+
}
|
|
781
|
+
if (desired.length === 0 || desired === '*') {
|
|
782
|
+
return true;
|
|
783
|
+
}
|
|
772
784
|
if (desired[0] === '*' && desired[desired.length - 1] === '*') {
|
|
773
785
|
// console.log(`Comparing ${actual} to ${desired.substring(1, desired.length - 1)}`)
|
|
774
786
|
return actual.indexOf(desired.substring(1, desired.length - 1)) != -1;
|
|
@@ -783,9 +795,13 @@ class StaticWadoClient extends dicomweb_client_es.api.DICOMwebClient {
|
|
|
783
795
|
|
|
784
796
|
/** Compares a pair of dates to see if the value is within the range */
|
|
785
797
|
compareDateRange(range, value) {
|
|
786
|
-
if (!value)
|
|
798
|
+
if (!value) {
|
|
799
|
+
return true;
|
|
800
|
+
}
|
|
787
801
|
const dash = range.indexOf('-');
|
|
788
|
-
if (dash === -1)
|
|
802
|
+
if (dash === -1) {
|
|
803
|
+
return this.compareValues(range, value);
|
|
804
|
+
}
|
|
789
805
|
const start = range.substring(0, dash);
|
|
790
806
|
const end = range.substring(dash + 1);
|
|
791
807
|
return (!start || value >= start) && (!end || value <= end);
|
|
@@ -802,11 +818,17 @@ class StaticWadoClient extends dicomweb_client_es.api.DICOMwebClient {
|
|
|
802
818
|
*/
|
|
803
819
|
filterItem(key, queryParams, study, sourceFilterMap) {
|
|
804
820
|
const altKey = sourceFilterMap[key] || key;
|
|
805
|
-
if (!queryParams)
|
|
821
|
+
if (!queryParams) {
|
|
822
|
+
return true;
|
|
823
|
+
}
|
|
806
824
|
const testValue = queryParams[key] || queryParams[altKey];
|
|
807
|
-
if (!testValue)
|
|
825
|
+
if (!testValue) {
|
|
826
|
+
return true;
|
|
827
|
+
}
|
|
808
828
|
const valueElem = study[key] || study[altKey];
|
|
809
|
-
if (!valueElem)
|
|
829
|
+
if (!valueElem) {
|
|
830
|
+
return false;
|
|
831
|
+
}
|
|
810
832
|
if (valueElem.vr == 'DA') {
|
|
811
833
|
return this.compareDateRange(testValue, valueElem.Value[0]);
|
|
812
834
|
}
|
|
@@ -867,8 +889,12 @@ const getDirectURL = (config, params) => {
|
|
|
867
889
|
singlepart: fetchPart = 'video'
|
|
868
890
|
} = params;
|
|
869
891
|
const value = instance[tag];
|
|
870
|
-
if (!value)
|
|
871
|
-
|
|
892
|
+
if (!value) {
|
|
893
|
+
return undefined;
|
|
894
|
+
}
|
|
895
|
+
if (value.DirectRetrieveURL) {
|
|
896
|
+
return value.DirectRetrieveURL;
|
|
897
|
+
}
|
|
872
898
|
if (value.InlineBinary) {
|
|
873
899
|
const blob = src.utils.b64toBlob(value.InlineBinary, defaultType);
|
|
874
900
|
value.DirectRetrieveURL = URL.createObjectURL(blob);
|
|
@@ -991,65 +1017,69 @@ const metadataProvider = src.classes.MetadataProvider;
|
|
|
991
1017
|
* @param {string|bool} singlepart - indicates of the retrieves can fetch singlepart. Options are bulkdata, video, image or boolean true
|
|
992
1018
|
*/
|
|
993
1019
|
function createDicomWebApi(dicomWebConfig, userAuthenticationService) {
|
|
994
|
-
|
|
995
|
-
qidoRoot,
|
|
996
|
-
wadoRoot,
|
|
997
|
-
enableStudyLazyLoad,
|
|
998
|
-
supportsFuzzyMatching,
|
|
999
|
-
supportsWildcard,
|
|
1000
|
-
supportsReject,
|
|
1001
|
-
staticWado,
|
|
1002
|
-
singlepart
|
|
1003
|
-
} = dicomWebConfig;
|
|
1004
|
-
const dicomWebConfigCopy = JSON.parse(JSON.stringify(dicomWebConfig));
|
|
1005
|
-
const qidoConfig = {
|
|
1006
|
-
url: qidoRoot,
|
|
1007
|
-
staticWado,
|
|
1008
|
-
singlepart,
|
|
1009
|
-
headers: userAuthenticationService.getAuthorizationHeader(),
|
|
1010
|
-
errorInterceptor: src/* errorHandler */.Po.getHTTPErrorHandler()
|
|
1011
|
-
};
|
|
1012
|
-
const wadoConfig = {
|
|
1013
|
-
url: wadoRoot,
|
|
1014
|
-
staticWado,
|
|
1015
|
-
singlepart,
|
|
1016
|
-
headers: userAuthenticationService.getAuthorizationHeader(),
|
|
1017
|
-
errorInterceptor: src/* errorHandler */.Po.getHTTPErrorHandler()
|
|
1018
|
-
};
|
|
1019
|
-
|
|
1020
|
-
// TODO -> Two clients sucks, but its better than 1000.
|
|
1021
|
-
// TODO -> We'll need to merge auth later.
|
|
1022
|
-
const qidoDicomWebClient = staticWado ? new StaticWadoClient(qidoConfig) : new dicomweb_client_es.api.DICOMwebClient(qidoConfig);
|
|
1023
|
-
const wadoDicomWebClient = staticWado ? new StaticWadoClient(wadoConfig) : new dicomweb_client_es.api.DICOMwebClient(wadoConfig);
|
|
1020
|
+
let dicomWebConfigCopy, qidoConfig, wadoConfig, qidoDicomWebClient, wadoDicomWebClient, getAuthrorizationHeader, generateWadoHeader;
|
|
1024
1021
|
const implementation = {
|
|
1025
1022
|
initialize: _ref => {
|
|
1026
1023
|
let {
|
|
1027
1024
|
params,
|
|
1028
1025
|
query
|
|
1029
1026
|
} = _ref;
|
|
1030
|
-
|
|
1031
|
-
|
|
1032
|
-
|
|
1033
|
-
|
|
1034
|
-
|
|
1035
|
-
|
|
1036
|
-
|
|
1027
|
+
if (dicomWebConfig.onConfiguration && typeof dicomWebConfig.onConfiguration === 'function') {
|
|
1028
|
+
dicomWebConfig = dicomWebConfig.onConfiguration(dicomWebConfig, {
|
|
1029
|
+
params,
|
|
1030
|
+
query
|
|
1031
|
+
});
|
|
1032
|
+
}
|
|
1033
|
+
dicomWebConfigCopy = JSON.parse(JSON.stringify(dicomWebConfig));
|
|
1034
|
+
getAuthrorizationHeader = () => {
|
|
1035
|
+
const xhrRequestHeaders = {};
|
|
1036
|
+
const authHeaders = userAuthenticationService.getAuthorizationHeader();
|
|
1037
|
+
if (authHeaders && authHeaders.Authorization) {
|
|
1038
|
+
xhrRequestHeaders.Authorization = authHeaders.Authorization;
|
|
1039
|
+
}
|
|
1040
|
+
return xhrRequestHeaders;
|
|
1041
|
+
};
|
|
1042
|
+
generateWadoHeader = () => {
|
|
1043
|
+
let authorizationHeader = getAuthrorizationHeader();
|
|
1044
|
+
//Generate accept header depending on config params
|
|
1045
|
+
let formattedAcceptHeader = src.utils.generateAcceptHeader(dicomWebConfig.acceptHeader, dicomWebConfig.requestTransferSyntaxUID, dicomWebConfig.omitQuotationForMultipartRequest);
|
|
1046
|
+
return {
|
|
1047
|
+
...authorizationHeader,
|
|
1048
|
+
Accept: formattedAcceptHeader
|
|
1049
|
+
};
|
|
1050
|
+
};
|
|
1051
|
+
qidoConfig = {
|
|
1052
|
+
url: dicomWebConfig.qidoRoot,
|
|
1053
|
+
staticWado: dicomWebConfig.staticWado,
|
|
1054
|
+
singlepart: dicomWebConfig.singlepart,
|
|
1055
|
+
headers: userAuthenticationService.getAuthorizationHeader(),
|
|
1056
|
+
errorInterceptor: src/* errorHandler */.Po.getHTTPErrorHandler()
|
|
1057
|
+
};
|
|
1058
|
+
wadoConfig = {
|
|
1059
|
+
url: dicomWebConfig.wadoRoot,
|
|
1060
|
+
staticWado: dicomWebConfig.staticWado,
|
|
1061
|
+
singlepart: dicomWebConfig.singlepart,
|
|
1062
|
+
headers: userAuthenticationService.getAuthorizationHeader(),
|
|
1063
|
+
errorInterceptor: src/* errorHandler */.Po.getHTTPErrorHandler()
|
|
1064
|
+
};
|
|
1065
|
+
|
|
1066
|
+
// TODO -> Two clients sucks, but its better than 1000.
|
|
1067
|
+
// TODO -> We'll need to merge auth later.
|
|
1068
|
+
qidoDicomWebClient = dicomWebConfig.staticWado ? new StaticWadoClient(qidoConfig) : new dicomweb_client_es.api.DICOMwebClient(qidoConfig);
|
|
1069
|
+
wadoDicomWebClient = dicomWebConfig.staticWado ? new StaticWadoClient(wadoConfig) : new dicomweb_client_es.api.DICOMwebClient(wadoConfig);
|
|
1037
1070
|
},
|
|
1038
1071
|
query: {
|
|
1039
1072
|
studies: {
|
|
1040
1073
|
mapParams: mapParams.bind(),
|
|
1041
1074
|
search: async function (origParams) {
|
|
1042
|
-
|
|
1043
|
-
if (headers) {
|
|
1044
|
-
qidoDicomWebClient.headers = headers;
|
|
1045
|
-
}
|
|
1075
|
+
qidoDicomWebClient.headers = getAuthrorizationHeader();
|
|
1046
1076
|
const {
|
|
1047
1077
|
studyInstanceUid,
|
|
1048
1078
|
seriesInstanceUid,
|
|
1049
1079
|
...mappedParams
|
|
1050
1080
|
} = mapParams(origParams, {
|
|
1051
|
-
supportsFuzzyMatching,
|
|
1052
|
-
supportsWildcard
|
|
1081
|
+
supportsFuzzyMatching: dicomWebConfig.supportsFuzzyMatching,
|
|
1082
|
+
supportsWildcard: dicomWebConfig.supportsWildcard
|
|
1053
1083
|
}) || {};
|
|
1054
1084
|
const results = await search(qidoDicomWebClient, undefined, undefined, mappedParams);
|
|
1055
1085
|
return processResults(results);
|
|
@@ -1059,10 +1089,7 @@ function createDicomWebApi(dicomWebConfig, userAuthenticationService) {
|
|
|
1059
1089
|
series: {
|
|
1060
1090
|
// mapParams: mapParams.bind(),
|
|
1061
1091
|
search: async function (studyInstanceUid) {
|
|
1062
|
-
|
|
1063
|
-
if (headers) {
|
|
1064
|
-
qidoDicomWebClient.headers = headers;
|
|
1065
|
-
}
|
|
1092
|
+
qidoDicomWebClient.headers = getAuthrorizationHeader();
|
|
1066
1093
|
const results = await seriesInStudy(qidoDicomWebClient, studyInstanceUid);
|
|
1067
1094
|
return processSeriesResults(results);
|
|
1068
1095
|
}
|
|
@@ -1071,10 +1098,7 @@ function createDicomWebApi(dicomWebConfig, userAuthenticationService) {
|
|
|
1071
1098
|
|
|
1072
1099
|
instances: {
|
|
1073
1100
|
search: (studyInstanceUid, queryParameters) => {
|
|
1074
|
-
|
|
1075
|
-
if (headers) {
|
|
1076
|
-
qidoDicomWebClient.headers = headers;
|
|
1077
|
-
}
|
|
1101
|
+
qidoDicomWebClient.headers = getAuthrorizationHeader();
|
|
1078
1102
|
search.call(undefined, qidoDicomWebClient, studyInstanceUid, null, queryParameters);
|
|
1079
1103
|
}
|
|
1080
1104
|
}
|
|
@@ -1093,8 +1117,8 @@ function createDicomWebApi(dicomWebConfig, userAuthenticationService) {
|
|
|
1093
1117
|
*/
|
|
1094
1118
|
directURL: params => {
|
|
1095
1119
|
return utils_getDirectURL({
|
|
1096
|
-
wadoRoot,
|
|
1097
|
-
singlepart
|
|
1120
|
+
wadoRoot: dicomWebConfig.wadoRoot,
|
|
1121
|
+
singlepart: dicomWebConfig.singlepart
|
|
1098
1122
|
}, params);
|
|
1099
1123
|
},
|
|
1100
1124
|
bulkDataURI: async _ref2 => {
|
|
@@ -1102,6 +1126,7 @@ function createDicomWebApi(dicomWebConfig, userAuthenticationService) {
|
|
|
1102
1126
|
StudyInstanceUID,
|
|
1103
1127
|
BulkDataURI
|
|
1104
1128
|
} = _ref2;
|
|
1129
|
+
qidoDicomWebClient.headers = getAuthrorizationHeader();
|
|
1105
1130
|
const options = {
|
|
1106
1131
|
multipart: false,
|
|
1107
1132
|
BulkDataURI,
|
|
@@ -1121,14 +1146,10 @@ function createDicomWebApi(dicomWebConfig, userAuthenticationService) {
|
|
|
1121
1146
|
sortFunction,
|
|
1122
1147
|
madeInClient = false
|
|
1123
1148
|
} = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
|
|
1124
|
-
const headers = userAuthenticationService.getAuthorizationHeader();
|
|
1125
|
-
if (headers) {
|
|
1126
|
-
wadoDicomWebClient.headers = headers;
|
|
1127
|
-
}
|
|
1128
1149
|
if (!StudyInstanceUID) {
|
|
1129
1150
|
throw new Error('Unable to query for SeriesMetadata without StudyInstanceUID');
|
|
1130
1151
|
}
|
|
1131
|
-
if (enableStudyLazyLoad) {
|
|
1152
|
+
if (dicomWebConfig.enableStudyLazyLoad) {
|
|
1132
1153
|
return implementation._retrieveSeriesMetadataAsync(StudyInstanceUID, filters, sortCriteria, sortFunction, madeInClient);
|
|
1133
1154
|
}
|
|
1134
1155
|
return implementation._retrieveSeriesMetadataSync(StudyInstanceUID, filters, sortCriteria, sortFunction, madeInClient);
|
|
@@ -1137,10 +1158,7 @@ function createDicomWebApi(dicomWebConfig, userAuthenticationService) {
|
|
|
1137
1158
|
},
|
|
1138
1159
|
store: {
|
|
1139
1160
|
dicom: async (dataset, request) => {
|
|
1140
|
-
|
|
1141
|
-
if (headers) {
|
|
1142
|
-
wadoDicomWebClient.headers = headers;
|
|
1143
|
-
}
|
|
1161
|
+
wadoDicomWebClient.headers = getAuthrorizationHeader();
|
|
1144
1162
|
if (dataset instanceof ArrayBuffer) {
|
|
1145
1163
|
const options = {
|
|
1146
1164
|
datasets: [dataset],
|
|
@@ -1170,7 +1188,7 @@ function createDicomWebApi(dicomWebConfig, userAuthenticationService) {
|
|
|
1170
1188
|
},
|
|
1171
1189
|
_retrieveSeriesMetadataSync: async (StudyInstanceUID, filters, sortCriteria, sortFunction, madeInClient) => {
|
|
1172
1190
|
const enableStudyLazyLoad = false;
|
|
1173
|
-
|
|
1191
|
+
wadoDicomWebClient.headers = generateWadoHeader();
|
|
1174
1192
|
// data is all SOPInstanceUIDs
|
|
1175
1193
|
const data = await retrieveStudyMetadata(wadoDicomWebClient, StudyInstanceUID, enableStudyLazyLoad, filters, sortCriteria, sortFunction);
|
|
1176
1194
|
|
|
@@ -1215,6 +1233,7 @@ function createDicomWebApi(dicomWebConfig, userAuthenticationService) {
|
|
|
1215
1233
|
_retrieveSeriesMetadataAsync: async function (StudyInstanceUID, filters, sortCriteria, sortFunction) {
|
|
1216
1234
|
let madeInClient = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : false;
|
|
1217
1235
|
const enableStudyLazyLoad = true;
|
|
1236
|
+
wadoDicomWebClient.headers = generateWadoHeader();
|
|
1218
1237
|
// Get Series
|
|
1219
1238
|
const {
|
|
1220
1239
|
preLoadData: seriesSummaryMetadata,
|
|
@@ -1356,10 +1375,23 @@ function createDicomWebApi(dicomWebConfig, userAuthenticationService) {
|
|
|
1356
1375
|
},
|
|
1357
1376
|
getConfig() {
|
|
1358
1377
|
return dicomWebConfigCopy;
|
|
1378
|
+
},
|
|
1379
|
+
getStudyInstanceUIDs(_ref4) {
|
|
1380
|
+
let {
|
|
1381
|
+
params,
|
|
1382
|
+
query
|
|
1383
|
+
} = _ref4;
|
|
1384
|
+
const {
|
|
1385
|
+
StudyInstanceUIDs: paramsStudyInstanceUIDs
|
|
1386
|
+
} = params;
|
|
1387
|
+
const queryStudyInstanceUIDs = src.utils.splitComma(query.getAll('StudyInstanceUIDs'));
|
|
1388
|
+
const StudyInstanceUIDs = queryStudyInstanceUIDs.length && queryStudyInstanceUIDs || paramsStudyInstanceUIDs;
|
|
1389
|
+
const StudyInstanceUIDsAsArray = StudyInstanceUIDs && Array.isArray(StudyInstanceUIDs) ? StudyInstanceUIDs : [StudyInstanceUIDs];
|
|
1390
|
+
return StudyInstanceUIDsAsArray;
|
|
1359
1391
|
}
|
|
1360
1392
|
};
|
|
1361
|
-
if (supportsReject) {
|
|
1362
|
-
implementation.reject = dcm4cheeReject(wadoRoot);
|
|
1393
|
+
if (dicomWebConfig.supportsReject) {
|
|
1394
|
+
implementation.reject = dcm4cheeReject(dicomWebConfig.wadoRoot);
|
|
1363
1395
|
}
|
|
1364
1396
|
return src/* IWebApiDataSource */.Is.create(implementation);
|
|
1365
1397
|
}
|
|
@@ -1375,7 +1407,8 @@ const mappings = {
|
|
|
1375
1407
|
patientId: 'PatientID'
|
|
1376
1408
|
};
|
|
1377
1409
|
let _store = {
|
|
1378
|
-
urls: []
|
|
1410
|
+
urls: [],
|
|
1411
|
+
studyInstanceUIDMap: new Map() // map of urls to array of study instance UIDs
|
|
1379
1412
|
// {
|
|
1380
1413
|
// url: url1
|
|
1381
1414
|
// studies: [Study1, Study2], // if multiple studies
|
|
@@ -1403,17 +1436,17 @@ const findStudies = (key, value) => {
|
|
|
1403
1436
|
};
|
|
1404
1437
|
function createDicomJSONApi(dicomJsonConfig) {
|
|
1405
1438
|
const {
|
|
1406
|
-
name,
|
|
1407
1439
|
wadoRoot
|
|
1408
1440
|
} = dicomJsonConfig;
|
|
1409
1441
|
const implementation = {
|
|
1410
1442
|
initialize: async _ref => {
|
|
1411
1443
|
let {
|
|
1412
|
-
params,
|
|
1413
1444
|
query,
|
|
1414
1445
|
url
|
|
1415
1446
|
} = _ref;
|
|
1416
|
-
if (!url)
|
|
1447
|
+
if (!url) {
|
|
1448
|
+
url = query.get('url');
|
|
1449
|
+
}
|
|
1417
1450
|
let metaData = getMetaDataByURL(url);
|
|
1418
1451
|
|
|
1419
1452
|
// if we have already cached the data from this specific url
|
|
@@ -1425,8 +1458,7 @@ function createDicomJSONApi(dicomJsonConfig) {
|
|
|
1425
1458
|
});
|
|
1426
1459
|
}
|
|
1427
1460
|
const response = await fetch(url);
|
|
1428
|
-
|
|
1429
|
-
const studyInstanceUIDs = data.studies.map(study => study.StudyInstanceUID);
|
|
1461
|
+
const data = await response.json();
|
|
1430
1462
|
let StudyInstanceUID;
|
|
1431
1463
|
let SeriesInstanceUID;
|
|
1432
1464
|
data.studies.forEach(study => {
|
|
@@ -1452,7 +1484,7 @@ function createDicomJSONApi(dicomJsonConfig) {
|
|
|
1452
1484
|
url,
|
|
1453
1485
|
studies: [...data.studies]
|
|
1454
1486
|
});
|
|
1455
|
-
|
|
1487
|
+
_store.studyInstanceUIDMap.set(url, data.studies.map(study => study.StudyInstanceUID));
|
|
1456
1488
|
},
|
|
1457
1489
|
query: {
|
|
1458
1490
|
studies: {
|
|
@@ -1561,7 +1593,9 @@ function createDicomJSONApi(dicomJsonConfig) {
|
|
|
1561
1593
|
return obj;
|
|
1562
1594
|
});
|
|
1563
1595
|
storeInstances(instances);
|
|
1564
|
-
if (index === numberOfSeries - 1)
|
|
1596
|
+
if (index === numberOfSeries - 1) {
|
|
1597
|
+
setSuccessFlag();
|
|
1598
|
+
}
|
|
1565
1599
|
});
|
|
1566
1600
|
}
|
|
1567
1601
|
}
|
|
@@ -1608,6 +1642,14 @@ function createDicomJSONApi(dicomJsonConfig) {
|
|
|
1608
1642
|
frame
|
|
1609
1643
|
});
|
|
1610
1644
|
return imageIds;
|
|
1645
|
+
},
|
|
1646
|
+
getStudyInstanceUIDs: _ref3 => {
|
|
1647
|
+
let {
|
|
1648
|
+
params,
|
|
1649
|
+
query
|
|
1650
|
+
} = _ref3;
|
|
1651
|
+
const url = query.get('url');
|
|
1652
|
+
return _store.studyInstanceUIDMap.get(url);
|
|
1611
1653
|
}
|
|
1612
1654
|
};
|
|
1613
1655
|
return src/* IWebApiDataSource */.Is.create(implementation);
|
|
@@ -1628,8 +1670,12 @@ const END_MODALITIES = {
|
|
|
1628
1670
|
};
|
|
1629
1671
|
const compareValue = function (v1, v2) {
|
|
1630
1672
|
let def = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 0;
|
|
1631
|
-
if (v1 === v2)
|
|
1632
|
-
|
|
1673
|
+
if (v1 === v2) {
|
|
1674
|
+
return def;
|
|
1675
|
+
}
|
|
1676
|
+
if (v1 < v2) {
|
|
1677
|
+
return -1;
|
|
1678
|
+
}
|
|
1633
1679
|
return 1;
|
|
1634
1680
|
};
|
|
1635
1681
|
|
|
@@ -1660,19 +1706,6 @@ function createDicomLocalApi(dicomLocalConfig) {
|
|
|
1660
1706
|
params,
|
|
1661
1707
|
query
|
|
1662
1708
|
} = _ref;
|
|
1663
|
-
const {
|
|
1664
|
-
StudyInstanceUIDs: paramsStudyInstanceUIDs
|
|
1665
|
-
} = params;
|
|
1666
|
-
const queryStudyInstanceUIDs = query.getAll('StudyInstanceUIDs');
|
|
1667
|
-
const StudyInstanceUIDs = queryStudyInstanceUIDs || paramsStudyInstanceUIDs;
|
|
1668
|
-
const StudyInstanceUIDsAsArray = StudyInstanceUIDs && Array.isArray(StudyInstanceUIDs) ? StudyInstanceUIDs : [StudyInstanceUIDs];
|
|
1669
|
-
|
|
1670
|
-
// Put SRs at the end of series list to make sure images are loaded first
|
|
1671
|
-
StudyInstanceUIDsAsArray.forEach(StudyInstanceUID => {
|
|
1672
|
-
const study = src.DicomMetadataStore.getStudy(StudyInstanceUID);
|
|
1673
|
-
study.series = study.series.sort(customSort);
|
|
1674
|
-
});
|
|
1675
|
-
return StudyInstanceUIDsAsArray;
|
|
1676
1709
|
},
|
|
1677
1710
|
query: {
|
|
1678
1711
|
studies: {
|
|
@@ -1854,6 +1887,29 @@ function createDicomLocalApi(dicomLocalConfig) {
|
|
|
1854
1887
|
},
|
|
1855
1888
|
deleteStudyMetadataPromise() {
|
|
1856
1889
|
console.log('deleteStudyMetadataPromise not implemented');
|
|
1890
|
+
},
|
|
1891
|
+
getStudyInstanceUIDs: _ref3 => {
|
|
1892
|
+
let {
|
|
1893
|
+
params,
|
|
1894
|
+
query
|
|
1895
|
+
} = _ref3;
|
|
1896
|
+
const {
|
|
1897
|
+
StudyInstanceUIDs: paramsStudyInstanceUIDs
|
|
1898
|
+
} = params;
|
|
1899
|
+
const queryStudyInstanceUIDs = query.getAll('StudyInstanceUIDs');
|
|
1900
|
+
const StudyInstanceUIDs = queryStudyInstanceUIDs || paramsStudyInstanceUIDs;
|
|
1901
|
+
const StudyInstanceUIDsAsArray = StudyInstanceUIDs && Array.isArray(StudyInstanceUIDs) ? StudyInstanceUIDs : [StudyInstanceUIDs];
|
|
1902
|
+
|
|
1903
|
+
// Put SRs at the end of series list to make sure images are loaded first
|
|
1904
|
+
let isStudyInCache = false;
|
|
1905
|
+
StudyInstanceUIDsAsArray.forEach(StudyInstanceUID => {
|
|
1906
|
+
const study = src.DicomMetadataStore.getStudy(StudyInstanceUID);
|
|
1907
|
+
if (study) {
|
|
1908
|
+
study.series = study.series.sort(customSort);
|
|
1909
|
+
isStudyInCache = true;
|
|
1910
|
+
}
|
|
1911
|
+
});
|
|
1912
|
+
return isStudyInCache ? StudyInstanceUIDsAsArray : [];
|
|
1857
1913
|
}
|
|
1858
1914
|
};
|
|
1859
1915
|
return src/* IWebApiDataSource */.Is.create(implementation);
|
|
@@ -1882,13 +1938,6 @@ function createDicomWebProxyApi(dicomWebProxyConfig, UserAuthenticationService)
|
|
|
1882
1938
|
params,
|
|
1883
1939
|
query
|
|
1884
1940
|
} = _ref;
|
|
1885
|
-
let studyInstanceUIDs = [];
|
|
1886
|
-
|
|
1887
|
-
// there seem to be a couple of variations of the case for this parameter
|
|
1888
|
-
const queryStudyInstanceUIDs = query.get('studyInstanceUIDs') || query.get('studyInstanceUids');
|
|
1889
|
-
if (!queryStudyInstanceUIDs) {
|
|
1890
|
-
throw new Error(`No studyInstanceUids in request for '${name}'`);
|
|
1891
|
-
}
|
|
1892
1941
|
const url = query.get('url');
|
|
1893
1942
|
if (!url) {
|
|
1894
1943
|
throw new Error(`No url for '${name}'`);
|
|
@@ -1898,10 +1947,12 @@ function createDicomWebProxyApi(dicomWebProxyConfig, UserAuthenticationService)
|
|
|
1898
1947
|
if (!data.servers?.dicomWeb?.[0]) {
|
|
1899
1948
|
throw new Error('Invalid configuration returned by url');
|
|
1900
1949
|
}
|
|
1901
|
-
dicomWebDelegate = createDicomWebApi(data.servers.dicomWeb[0], UserAuthenticationService);
|
|
1902
|
-
|
|
1950
|
+
dicomWebDelegate = createDicomWebApi(data.servers.dicomWeb[0].configuration, UserAuthenticationService);
|
|
1951
|
+
dicomWebDelegate.initialize({
|
|
1952
|
+
params,
|
|
1953
|
+
query
|
|
1954
|
+
});
|
|
1903
1955
|
}
|
|
1904
|
-
return studyInstanceUIDs;
|
|
1905
1956
|
},
|
|
1906
1957
|
query: {
|
|
1907
1958
|
studies: {
|
|
@@ -1939,6 +1990,21 @@ function createDicomWebProxyApi(dicomWebProxyConfig, UserAuthenticationService)
|
|
|
1939
1990
|
},
|
|
1940
1991
|
getImageIdsForInstance: function () {
|
|
1941
1992
|
return dicomWebDelegate.getImageIdsForInstance(...arguments);
|
|
1993
|
+
},
|
|
1994
|
+
getStudyInstanceUIDs(_ref2) {
|
|
1995
|
+
let {
|
|
1996
|
+
params,
|
|
1997
|
+
query
|
|
1998
|
+
} = _ref2;
|
|
1999
|
+
let studyInstanceUIDs = [];
|
|
2000
|
+
|
|
2001
|
+
// there seem to be a couple of variations of the case for this parameter
|
|
2002
|
+
const queryStudyInstanceUIDs = query.get('studyInstanceUIDs') || query.get('studyInstanceUids');
|
|
2003
|
+
if (!queryStudyInstanceUIDs) {
|
|
2004
|
+
throw new Error(`No studyInstanceUids in request for '${name}'`);
|
|
2005
|
+
}
|
|
2006
|
+
studyInstanceUIDs = queryStudyInstanceUIDs.split(';');
|
|
2007
|
+
return studyInstanceUIDs;
|
|
1942
2008
|
}
|
|
1943
2009
|
};
|
|
1944
2010
|
return src/* IWebApiDataSource */.Is.create(implementation);
|
|
@@ -1978,24 +2044,24 @@ function getDataSourcesModule() {
|
|
|
1978
2044
|
}
|
|
1979
2045
|
/* harmony default export */ const src_getDataSourcesModule = (getDataSourcesModule);
|
|
1980
2046
|
// EXTERNAL MODULE: ../../../node_modules/react/index.js
|
|
1981
|
-
var react = __webpack_require__(
|
|
2047
|
+
var react = __webpack_require__(43001);
|
|
1982
2048
|
// EXTERNAL MODULE: ../../../node_modules/prop-types/index.js
|
|
1983
|
-
var prop_types = __webpack_require__(
|
|
2049
|
+
var prop_types = __webpack_require__(3827);
|
|
1984
2050
|
var prop_types_default = /*#__PURE__*/__webpack_require__.n(prop_types);
|
|
1985
2051
|
// EXTERNAL MODULE: ../node_modules/react-router-dom/dist/index.js
|
|
1986
|
-
var dist = __webpack_require__(
|
|
2052
|
+
var dist = __webpack_require__(62474);
|
|
1987
2053
|
// EXTERNAL MODULE: ../../../node_modules/react-i18next/dist/es/index.js + 15 modules
|
|
1988
|
-
var es = __webpack_require__(
|
|
2054
|
+
var es = __webpack_require__(69190);
|
|
1989
2055
|
// EXTERNAL MODULE: ../node_modules/react-router/dist/index.js
|
|
1990
|
-
var react_router_dist = __webpack_require__(
|
|
1991
|
-
// EXTERNAL MODULE: ../../ui/src/index.js +
|
|
1992
|
-
var ui_src = __webpack_require__(
|
|
1993
|
-
// EXTERNAL MODULE: ../../i18n/src/index.js +
|
|
1994
|
-
var i18n_src = __webpack_require__(
|
|
2056
|
+
var react_router_dist = __webpack_require__(85066);
|
|
2057
|
+
// EXTERNAL MODULE: ../../ui/src/index.js + 456 modules
|
|
2058
|
+
var ui_src = __webpack_require__(60082);
|
|
2059
|
+
// EXTERNAL MODULE: ../../i18n/src/index.js + 97 modules
|
|
2060
|
+
var i18n_src = __webpack_require__(24908);
|
|
1995
2061
|
// EXTERNAL MODULE: ./state/index.js + 1 modules
|
|
1996
|
-
var state = __webpack_require__(
|
|
2062
|
+
var state = __webpack_require__(62657);
|
|
1997
2063
|
// EXTERNAL MODULE: ../../../node_modules/classnames/index.js
|
|
1998
|
-
var classnames = __webpack_require__(
|
|
2064
|
+
var classnames = __webpack_require__(44921);
|
|
1999
2065
|
var classnames_default = /*#__PURE__*/__webpack_require__.n(classnames);
|
|
2000
2066
|
;// CONCATENATED MODULE: ../../../extensions/default/src/Toolbar/Toolbar.tsx
|
|
2001
2067
|
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); }
|
|
@@ -2030,7 +2096,7 @@ function Toolbar(_ref) {
|
|
|
2030
2096
|
unsub2();
|
|
2031
2097
|
};
|
|
2032
2098
|
}, [toolbarService]);
|
|
2033
|
-
return /*#__PURE__*/react.createElement(react.Fragment, null, toolbarButtons.map(
|
|
2099
|
+
return /*#__PURE__*/react.createElement(react.Fragment, null, toolbarButtons.map(toolDef => {
|
|
2034
2100
|
const {
|
|
2035
2101
|
id,
|
|
2036
2102
|
Component,
|
|
@@ -2116,8 +2182,10 @@ function ViewerLayout(_ref) {
|
|
|
2116
2182
|
// Todo: Handle parameters in a better way.
|
|
2117
2183
|
const query = new URLSearchParams(window.location.search);
|
|
2118
2184
|
const configUrl = query.get('configUrl');
|
|
2185
|
+
const dataSourceName = pathname.substring(dataSourceIdx + 1);
|
|
2186
|
+
const existingDataSource = extensionManager.getDataSources(dataSourceName);
|
|
2119
2187
|
const searchQuery = new URLSearchParams();
|
|
2120
|
-
if (dataSourceIdx !== -1) {
|
|
2188
|
+
if (dataSourceIdx !== -1 && existingDataSource) {
|
|
2121
2189
|
searchQuery.append('datasources', pathname.substring(dataSourceIdx + 1));
|
|
2122
2190
|
}
|
|
2123
2191
|
if (configUrl) {
|
|
@@ -2143,8 +2211,8 @@ function ViewerLayout(_ref) {
|
|
|
2143
2211
|
hotkeyDefinitions,
|
|
2144
2212
|
hotkeyDefaults
|
|
2145
2213
|
} = hotkeysManager;
|
|
2146
|
-
const versionNumber = "3.7.0-beta.
|
|
2147
|
-
const commitHash = "
|
|
2214
|
+
const versionNumber = "3.7.0-beta.50";
|
|
2215
|
+
const commitHash = "19408c987fa705aa8782a30820c0c012d0f3132f";
|
|
2148
2216
|
const menuOptions = [{
|
|
2149
2217
|
title: t('Header:About'),
|
|
2150
2218
|
icon: 'info',
|
|
@@ -2364,6 +2432,7 @@ ViewerLayout.propTypes = {
|
|
|
2364
2432
|
|
|
2365
2433
|
|
|
2366
2434
|
|
|
2435
|
+
|
|
2367
2436
|
const {
|
|
2368
2437
|
sortStudyInstances,
|
|
2369
2438
|
formatDate
|
|
@@ -2386,6 +2455,8 @@ function PanelStudyBrowser(_ref) {
|
|
|
2386
2455
|
displaySetService,
|
|
2387
2456
|
uiNotificationService
|
|
2388
2457
|
} = servicesManager.services;
|
|
2458
|
+
const navigate = (0,dist/* useNavigate */.s0)();
|
|
2459
|
+
|
|
2389
2460
|
// Normally you nest the components so the tree isn't so deep, and the data
|
|
2390
2461
|
// doesn't have to have such an intense shape. This works well enough for now.
|
|
2391
2462
|
// Tabs --> Studies --> DisplaySets --> Thumbnails
|
|
@@ -2427,6 +2498,10 @@ function PanelStudyBrowser(_ref) {
|
|
|
2427
2498
|
const qidoForStudyUID = await dataSource.query.studies.search({
|
|
2428
2499
|
studyInstanceUid: StudyInstanceUID
|
|
2429
2500
|
});
|
|
2501
|
+
if (!qidoForStudyUID?.length) {
|
|
2502
|
+
navigate('/notfoundstudy', '_self');
|
|
2503
|
+
throw new Error('Invalid study URL');
|
|
2504
|
+
}
|
|
2430
2505
|
let qidoStudiesForPatient = qidoForStudyUID;
|
|
2431
2506
|
|
|
2432
2507
|
// try to fetch the prior studies based on the patientID if the
|
|
@@ -2617,6 +2692,7 @@ function _mapDisplaySets(displaySets, thumbnailImageSrcMap) {
|
|
|
2617
2692
|
numInstances: ds.numImageFrames,
|
|
2618
2693
|
countIcon: ds.countIcon,
|
|
2619
2694
|
StudyInstanceUID: ds.StudyInstanceUID,
|
|
2695
|
+
messages: ds.messages,
|
|
2620
2696
|
componentType,
|
|
2621
2697
|
imageSrc,
|
|
2622
2698
|
dragData: {
|
|
@@ -2819,7 +2895,7 @@ ActionButtons.defaultProps = {
|
|
|
2819
2895
|
};
|
|
2820
2896
|
/* harmony default export */ const Panels_ActionButtons = (ActionButtons);
|
|
2821
2897
|
// EXTERNAL MODULE: ../../../node_modules/lodash.debounce/index.js
|
|
2822
|
-
var lodash_debounce = __webpack_require__(
|
|
2898
|
+
var lodash_debounce = __webpack_require__(8324);
|
|
2823
2899
|
var lodash_debounce_default = /*#__PURE__*/__webpack_require__.n(lodash_debounce);
|
|
2824
2900
|
;// CONCATENATED MODULE: ../../../extensions/default/src/Panels/createReportDialogPrompt.tsx
|
|
2825
2901
|
/* eslint-disable react/display-name */
|
|
@@ -3336,7 +3412,9 @@ function _mapMeasurementToDisplay(measurement, index, types) {
|
|
|
3336
3412
|
if (findingSites) {
|
|
3337
3413
|
const siteText = [];
|
|
3338
3414
|
findingSites.forEach(site => {
|
|
3339
|
-
if (site?.text !== label)
|
|
3415
|
+
if (site?.text !== label) {
|
|
3416
|
+
siteText.push(site.text);
|
|
3417
|
+
}
|
|
3340
3418
|
});
|
|
3341
3419
|
displayText = [...siteText, ...displayText];
|
|
3342
3420
|
}
|
|
@@ -3403,25 +3481,297 @@ function getPanelModule(_ref) {
|
|
|
3403
3481
|
}
|
|
3404
3482
|
/* harmony default export */ const src_getPanelModule = (getPanelModule);
|
|
3405
3483
|
// EXTERNAL MODULE: ../../core/src/utils/isImage.js
|
|
3406
|
-
var isImage = __webpack_require__(
|
|
3484
|
+
var isImage = __webpack_require__(11835);
|
|
3407
3485
|
// EXTERNAL MODULE: ../../core/src/utils/sopClassDictionary.js
|
|
3408
|
-
var sopClassDictionary = __webpack_require__(
|
|
3486
|
+
var sopClassDictionary = __webpack_require__(24369);
|
|
3409
3487
|
// EXTERNAL MODULE: ../../core/src/classes/ImageSet.ts
|
|
3410
|
-
var ImageSet = __webpack_require__(
|
|
3488
|
+
var ImageSet = __webpack_require__(13950);
|
|
3411
3489
|
// EXTERNAL MODULE: ../../core/src/utils/isDisplaySetReconstructable.js
|
|
3412
|
-
var isDisplaySetReconstructable = __webpack_require__(
|
|
3490
|
+
var isDisplaySetReconstructable = __webpack_require__(89359);
|
|
3413
3491
|
;// CONCATENATED MODULE: ../../../extensions/default/package.json
|
|
3414
3492
|
const package_namespaceObject = JSON.parse('{"u2":"@ohif/extension-default"}');
|
|
3415
3493
|
;// CONCATENATED MODULE: ../../../extensions/default/src/id.js
|
|
3416
3494
|
|
|
3417
3495
|
const id = package_namespaceObject.u2;
|
|
3418
3496
|
|
|
3497
|
+
// EXTERNAL MODULE: ../../core/src/utils/sortInstancesByPosition.ts
|
|
3498
|
+
var sortInstancesByPosition = __webpack_require__(87425);
|
|
3499
|
+
;// CONCATENATED MODULE: ../../../extensions/default/src/utils/validations/checkMultiframe.ts
|
|
3500
|
+
|
|
3501
|
+
|
|
3502
|
+
|
|
3503
|
+
/**
|
|
3504
|
+
* Check various multi frame issues. It calls OHIF core functions
|
|
3505
|
+
* @param {*} multiFrameInstance
|
|
3506
|
+
* @param {*} warnings
|
|
3507
|
+
*/
|
|
3508
|
+
function checkMultiFrame(multiFrameInstance, messages) {
|
|
3509
|
+
if (!(0,isDisplaySetReconstructable/* hasPixelMeasurements */.hu)(multiFrameInstance)) {
|
|
3510
|
+
messages.addMessage(src/* DisplaySetMessage */.Lt.CODES.MULTIFRAME_NO_PIXEL_MEASUREMENTS);
|
|
3511
|
+
}
|
|
3512
|
+
if (!(0,isDisplaySetReconstructable/* hasOrientation */.sb)(multiFrameInstance)) {
|
|
3513
|
+
messages.addMessage(src/* DisplaySetMessage */.Lt.CODES.MULTIFRAME_NO_ORIENTATION);
|
|
3514
|
+
}
|
|
3515
|
+
if (!(0,isDisplaySetReconstructable/* hasPosition */.kN)(multiFrameInstance)) {
|
|
3516
|
+
messages.addMessage(src/* DisplaySetMessage */.Lt.CODES.MULTIFRAME_NO_POSITION_INFORMATION);
|
|
3517
|
+
}
|
|
3518
|
+
}
|
|
3519
|
+
// EXTERNAL MODULE: ../../core/src/utils/toNumber.js
|
|
3520
|
+
var toNumber = __webpack_require__(94972);
|
|
3521
|
+
;// CONCATENATED MODULE: ../../../extensions/default/src/utils/validations/areAllImageDimensionsEqual.ts
|
|
3522
|
+
|
|
3523
|
+
|
|
3524
|
+
/**
|
|
3525
|
+
* Check if the frames in a series has different dimensions
|
|
3526
|
+
* @param {*} instances
|
|
3527
|
+
* @returns
|
|
3528
|
+
*/
|
|
3529
|
+
function areAllImageDimensionsEqual(instances) {
|
|
3530
|
+
if (!instances?.length) {
|
|
3531
|
+
return false;
|
|
3532
|
+
}
|
|
3533
|
+
const firstImage = instances[0];
|
|
3534
|
+
const firstImageRows = (0,toNumber/* default */.Z)(firstImage.Rows);
|
|
3535
|
+
const firstImageColumns = (0,toNumber/* default */.Z)(firstImage.Columns);
|
|
3536
|
+
for (let i = 1; i < instances.length; i++) {
|
|
3537
|
+
const instance = instances[i];
|
|
3538
|
+
const {
|
|
3539
|
+
Rows,
|
|
3540
|
+
Columns
|
|
3541
|
+
} = instance;
|
|
3542
|
+
if (Rows !== firstImageRows || Columns !== firstImageColumns) {
|
|
3543
|
+
return false;
|
|
3544
|
+
}
|
|
3545
|
+
}
|
|
3546
|
+
return true;
|
|
3547
|
+
}
|
|
3548
|
+
;// CONCATENATED MODULE: ../../../extensions/default/src/utils/validations/areAllImageComponentsEqual.ts
|
|
3549
|
+
|
|
3550
|
+
|
|
3551
|
+
/**
|
|
3552
|
+
* Check if all voxels in series images has same number of components (samplesPerPixel)
|
|
3553
|
+
* @param {*} instances
|
|
3554
|
+
* @returns
|
|
3555
|
+
*/
|
|
3556
|
+
function areAllImageComponentsEqual(instances) {
|
|
3557
|
+
if (!instances?.length) {
|
|
3558
|
+
return false;
|
|
3559
|
+
}
|
|
3560
|
+
const firstImage = instances[0];
|
|
3561
|
+
const firstImageSamplesPerPixel = (0,toNumber/* default */.Z)(firstImage.SamplesPerPixel);
|
|
3562
|
+
for (let i = 1; i < instances.length; i++) {
|
|
3563
|
+
const instance = instances[i];
|
|
3564
|
+
const {
|
|
3565
|
+
SamplesPerPixel
|
|
3566
|
+
} = instance;
|
|
3567
|
+
if (SamplesPerPixel !== firstImageSamplesPerPixel) {
|
|
3568
|
+
return false;
|
|
3569
|
+
}
|
|
3570
|
+
}
|
|
3571
|
+
return true;
|
|
3572
|
+
}
|
|
3573
|
+
;// CONCATENATED MODULE: ../../../extensions/default/src/utils/validations/areAllImageOrientationsEqual.ts
|
|
3574
|
+
|
|
3575
|
+
|
|
3576
|
+
|
|
3577
|
+
/**
|
|
3578
|
+
* Check is the series has frames with different orientations
|
|
3579
|
+
* @param {*} instances
|
|
3580
|
+
* @returns
|
|
3581
|
+
*/
|
|
3582
|
+
function areAllImageOrientationsEqual(instances) {
|
|
3583
|
+
if (!instances?.length) {
|
|
3584
|
+
return false;
|
|
3585
|
+
}
|
|
3586
|
+
const firstImage = instances[0];
|
|
3587
|
+
const firstImageOrientationPatient = (0,toNumber/* default */.Z)(firstImage.ImageOrientationPatient);
|
|
3588
|
+
for (let i = 1; i < instances.length; i++) {
|
|
3589
|
+
const instance = instances[i];
|
|
3590
|
+
const imageOrientationPatient = (0,toNumber/* default */.Z)(instance.ImageOrientationPatient);
|
|
3591
|
+
if (!(0,isDisplaySetReconstructable/* _isSameOrientation */.NB)(imageOrientationPatient, firstImageOrientationPatient)) {
|
|
3592
|
+
return false;
|
|
3593
|
+
}
|
|
3594
|
+
}
|
|
3595
|
+
return true;
|
|
3596
|
+
}
|
|
3597
|
+
// EXTERNAL MODULE: ../../../node_modules/gl-matrix/esm/index.js + 10 modules
|
|
3598
|
+
var esm = __webpack_require__(45451);
|
|
3599
|
+
;// CONCATENATED MODULE: ../../../extensions/default/src/utils/calculateScanAxisNormal.ts
|
|
3600
|
+
|
|
3601
|
+
|
|
3602
|
+
/**
|
|
3603
|
+
* Calculates the scanAxisNormal based on a image orientation vector extract from a frame
|
|
3604
|
+
* @param {*} imageOrientation
|
|
3605
|
+
* @returns
|
|
3606
|
+
*/
|
|
3607
|
+
function calculateScanAxisNormal(imageOrientation) {
|
|
3608
|
+
const rowCosineVec = esm/* vec3.fromValues */.R3.fromValues(imageOrientation[0], imageOrientation[1], imageOrientation[2]);
|
|
3609
|
+
const colCosineVec = esm/* vec3.fromValues */.R3.fromValues(imageOrientation[3], imageOrientation[4], imageOrientation[5]);
|
|
3610
|
+
return esm/* vec3.cross */.R3.cross(esm/* vec3.create */.R3.create(), rowCosineVec, colCosineVec);
|
|
3611
|
+
}
|
|
3612
|
+
;// CONCATENATED MODULE: ../../../extensions/default/src/utils/validations/areAllImagePositionsEqual.ts
|
|
3613
|
+
|
|
3614
|
+
|
|
3615
|
+
|
|
3616
|
+
|
|
3617
|
+
|
|
3618
|
+
/**
|
|
3619
|
+
* Checks if there is a position shift between consecutive frames
|
|
3620
|
+
* @param {*} previousPosition
|
|
3621
|
+
* @param {*} actualPosition
|
|
3622
|
+
* @param {*} scanAxisNormal
|
|
3623
|
+
* @param {*} averageSpacingBetweenFrames
|
|
3624
|
+
* @returns
|
|
3625
|
+
*/
|
|
3626
|
+
function _checkSeriesPositionShift(previousPosition, actualPosition, scanAxisNormal, averageSpacingBetweenFrames) {
|
|
3627
|
+
// predicted position should be the previous position added by the multiplication
|
|
3628
|
+
// of the scanAxisNormal and the average spacing between frames
|
|
3629
|
+
const predictedPosition = esm/* vec3.scaleAndAdd */.R3.scaleAndAdd(esm/* vec3.create */.R3.create(), previousPosition, scanAxisNormal, averageSpacingBetweenFrames);
|
|
3630
|
+
return esm/* vec3.distance */.R3.distance(actualPosition, predictedPosition) > averageSpacingBetweenFrames;
|
|
3631
|
+
}
|
|
3632
|
+
|
|
3633
|
+
/**
|
|
3634
|
+
* Checks if a series has position shifts between consecutive frames
|
|
3635
|
+
* @param {*} instances
|
|
3636
|
+
* @returns
|
|
3637
|
+
*/
|
|
3638
|
+
function areAllImagePositionsEqual(instances) {
|
|
3639
|
+
if (!instances?.length) {
|
|
3640
|
+
return false;
|
|
3641
|
+
}
|
|
3642
|
+
const firstImageOrientationPatient = (0,toNumber/* default */.Z)(instances[0].ImageOrientationPatient);
|
|
3643
|
+
const scanAxisNormal = calculateScanAxisNormal(firstImageOrientationPatient);
|
|
3644
|
+
const firstImagePositionPatient = (0,toNumber/* default */.Z)(instances[0].ImagePositionPatient);
|
|
3645
|
+
const lastIpp = (0,toNumber/* default */.Z)(instances[instances.length - 1].ImagePositionPatient);
|
|
3646
|
+
const averageSpacingBetweenFrames = (0,isDisplaySetReconstructable/* _getPerpendicularDistance */.Xn)(firstImagePositionPatient, lastIpp) / (instances.length - 1);
|
|
3647
|
+
let previousImagePositionPatient = firstImagePositionPatient;
|
|
3648
|
+
for (let i = 1; i < instances.length; i++) {
|
|
3649
|
+
const instance = instances[i];
|
|
3650
|
+
const imagePositionPatient = (0,toNumber/* default */.Z)(instance.ImagePositionPatient);
|
|
3651
|
+
if (_checkSeriesPositionShift(previousImagePositionPatient, imagePositionPatient, scanAxisNormal, averageSpacingBetweenFrames)) {
|
|
3652
|
+
return false;
|
|
3653
|
+
}
|
|
3654
|
+
previousImagePositionPatient = imagePositionPatient;
|
|
3655
|
+
}
|
|
3656
|
+
return true;
|
|
3657
|
+
}
|
|
3658
|
+
;// CONCATENATED MODULE: ../../../extensions/default/src/utils/validations/areAllImageSpacingEqual.ts
|
|
3659
|
+
|
|
3660
|
+
|
|
3661
|
+
|
|
3662
|
+
/**
|
|
3663
|
+
* Checks if series has spacing issues
|
|
3664
|
+
* @param {*} instances
|
|
3665
|
+
* @param {*} warnings
|
|
3666
|
+
*/
|
|
3667
|
+
function areAllImageSpacingEqual(instances, messages) {
|
|
3668
|
+
if (!instances?.length) {
|
|
3669
|
+
return;
|
|
3670
|
+
}
|
|
3671
|
+
const firstImagePositionPatient = (0,toNumber/* default */.Z)(instances[0].ImagePositionPatient);
|
|
3672
|
+
const lastIpp = (0,toNumber/* default */.Z)(instances[instances.length - 1].ImagePositionPatient);
|
|
3673
|
+
const averageSpacingBetweenFrames = (0,isDisplaySetReconstructable/* _getPerpendicularDistance */.Xn)(firstImagePositionPatient, lastIpp) / (instances.length - 1);
|
|
3674
|
+
let previousImagePositionPatient = firstImagePositionPatient;
|
|
3675
|
+
const issuesFound = [];
|
|
3676
|
+
for (let i = 1; i < instances.length; i++) {
|
|
3677
|
+
const instance = instances[i];
|
|
3678
|
+
const imagePositionPatient = (0,toNumber/* default */.Z)(instance.ImagePositionPatient);
|
|
3679
|
+
const spacingBetweenFrames = (0,isDisplaySetReconstructable/* _getPerpendicularDistance */.Xn)(imagePositionPatient, previousImagePositionPatient);
|
|
3680
|
+
const spacingIssue = (0,isDisplaySetReconstructable/* _getSpacingIssue */.bg)(spacingBetweenFrames, averageSpacingBetweenFrames);
|
|
3681
|
+
if (spacingIssue) {
|
|
3682
|
+
const issue = spacingIssue.issue;
|
|
3683
|
+
|
|
3684
|
+
// avoid multiple warning of the same thing
|
|
3685
|
+
if (!issuesFound.includes(issue)) {
|
|
3686
|
+
issuesFound.push(issue);
|
|
3687
|
+
if (issue === isDisplaySetReconstructable/* reconstructionIssues */.e1.MISSING_FRAMES) {
|
|
3688
|
+
messages.addMessage(src/* DisplaySetMessage */.Lt.CODES.MISSING_FRAMES);
|
|
3689
|
+
} else if (issue === isDisplaySetReconstructable/* reconstructionIssues */.e1.IRREGULAR_SPACING) {
|
|
3690
|
+
messages.addMessage(src/* DisplaySetMessage */.Lt.CODES.IRREGULAR_SPACING);
|
|
3691
|
+
}
|
|
3692
|
+
}
|
|
3693
|
+
// we just want to find issues not how many
|
|
3694
|
+
if (issuesFound.length > 1) {
|
|
3695
|
+
break;
|
|
3696
|
+
}
|
|
3697
|
+
}
|
|
3698
|
+
previousImagePositionPatient = imagePositionPatient;
|
|
3699
|
+
}
|
|
3700
|
+
}
|
|
3701
|
+
;// CONCATENATED MODULE: ../../../extensions/default/src/utils/validations/checkSingleFrames.ts
|
|
3702
|
+
|
|
3703
|
+
|
|
3704
|
+
|
|
3705
|
+
|
|
3706
|
+
|
|
3707
|
+
|
|
3708
|
+
|
|
3709
|
+
/**
|
|
3710
|
+
* Runs various checks in a single frame series
|
|
3711
|
+
* @param {*} instances
|
|
3712
|
+
* @param {*} warnings
|
|
3713
|
+
*/
|
|
3714
|
+
function checkSingleFrames(instances, messages) {
|
|
3715
|
+
if (instances.length > 2) {
|
|
3716
|
+
if (!areAllImageDimensionsEqual(instances)) {
|
|
3717
|
+
messages.addMessage(src/* DisplaySetMessage */.Lt.CODES.INCONSISTENT_DIMENSIONS);
|
|
3718
|
+
}
|
|
3719
|
+
if (!areAllImageComponentsEqual(instances)) {
|
|
3720
|
+
messages.addMessage(src/* DisplaySetMessage */.Lt.CODES.INCONSISTENT_COMPONENTS);
|
|
3721
|
+
}
|
|
3722
|
+
if (!areAllImageOrientationsEqual(instances)) {
|
|
3723
|
+
messages.addMessage(src/* DisplaySetMessage */.Lt.CODES.INCONSISTENT_ORIENTATIONS);
|
|
3724
|
+
}
|
|
3725
|
+
if (!areAllImagePositionsEqual(instances)) {
|
|
3726
|
+
messages.addMessage(src/* DisplaySetMessage */.Lt.CODES.INCONSISTENT_POSITION_INFORMATION);
|
|
3727
|
+
}
|
|
3728
|
+
areAllImageSpacingEqual(instances, messages);
|
|
3729
|
+
}
|
|
3730
|
+
}
|
|
3731
|
+
;// CONCATENATED MODULE: ../../../extensions/default/src/getDisplaySetMessages.ts
|
|
3732
|
+
|
|
3733
|
+
|
|
3734
|
+
|
|
3735
|
+
|
|
3736
|
+
|
|
3737
|
+
/**
|
|
3738
|
+
* Checks if a series is reconstructable to a 3D volume.
|
|
3739
|
+
*
|
|
3740
|
+
* @param {Object[]} instances An array of `OHIFInstanceMetadata` objects.
|
|
3741
|
+
*/
|
|
3742
|
+
function getDisplaySetMessages(instances, isReconstructable) {
|
|
3743
|
+
const messages = new src/* DisplaySetMessageList */.iK();
|
|
3744
|
+
if (!instances.length) {
|
|
3745
|
+
messages.addMessage(src/* DisplaySetMessage */.Lt.CODES.NO_VALID_INSTANCES);
|
|
3746
|
+
}
|
|
3747
|
+
const firstInstance = instances[0];
|
|
3748
|
+
// Due to current requirements, LOCALIZER series doesn't have any messages
|
|
3749
|
+
if (firstInstance.ImageType.includes('LOCALIZER')) {
|
|
3750
|
+
return messages;
|
|
3751
|
+
}
|
|
3752
|
+
const Modality = firstInstance.Modality;
|
|
3753
|
+
if (!isDisplaySetReconstructable/* constructableModalities */.M6.includes(Modality)) {
|
|
3754
|
+
return messages;
|
|
3755
|
+
}
|
|
3756
|
+
const isMultiframe = firstInstance.NumberOfFrames > 1;
|
|
3757
|
+
// Can't reconstruct if all instances don't have the ImagePositionPatient.
|
|
3758
|
+
if (!isMultiframe && !instances.every(instance => instance.ImagePositionPatient)) {
|
|
3759
|
+
messages.addMessage(src/* DisplaySetMessage */.Lt.CODES.NO_POSITION_INFORMATION);
|
|
3760
|
+
}
|
|
3761
|
+
const sortedInstances = (0,sortInstancesByPosition/* default */.Z)(instances);
|
|
3762
|
+
isMultiframe ? checkMultiFrame(sortedInstances[0], messages) : checkSingleFrames(sortedInstances, messages);
|
|
3763
|
+
if (!isReconstructable) {
|
|
3764
|
+
messages.addMessage(src/* DisplaySetMessage */.Lt.CODES.NOT_RECONSTRUCTABLE);
|
|
3765
|
+
}
|
|
3766
|
+
return messages;
|
|
3767
|
+
}
|
|
3419
3768
|
;// CONCATENATED MODULE: ../../../extensions/default/src/getSopClassHandlerModule.js
|
|
3420
3769
|
|
|
3421
3770
|
|
|
3422
3771
|
|
|
3423
3772
|
|
|
3424
3773
|
|
|
3774
|
+
|
|
3425
3775
|
const sopClassHandlerName = 'stack';
|
|
3426
3776
|
const isMultiFrame = instance => {
|
|
3427
3777
|
return instance.NumberOfFrames > 1;
|
|
@@ -3432,9 +3782,9 @@ const makeDisplaySet = instances => {
|
|
|
3432
3782
|
const {
|
|
3433
3783
|
value: isReconstructable,
|
|
3434
3784
|
averageSpacingBetweenFrames
|
|
3435
|
-
} = (0,isDisplaySetReconstructable/* default */.
|
|
3436
|
-
|
|
3785
|
+
} = (0,isDisplaySetReconstructable/* default */.ZP)(instances);
|
|
3437
3786
|
// set appropriate attributes to image set...
|
|
3787
|
+
const messages = getDisplaySetMessages(instances, isReconstructable);
|
|
3438
3788
|
imageSet.setAttributes({
|
|
3439
3789
|
displaySetInstanceUID: imageSet.uid,
|
|
3440
3790
|
// create a local alias for the imageSet UID
|
|
@@ -3452,6 +3802,7 @@ const makeDisplaySet = instances => {
|
|
|
3452
3802
|
numImageFrames: instances.length,
|
|
3453
3803
|
SOPClassHandlerId: `${id}.sopClassHandlerModule.${sopClassHandlerName}`,
|
|
3454
3804
|
isReconstructable,
|
|
3805
|
+
messages,
|
|
3455
3806
|
averageSpacingBetweenFrames: averageSpacingBetweenFrames || null
|
|
3456
3807
|
});
|
|
3457
3808
|
|
|
@@ -3856,7 +4207,7 @@ function adaptItem(item, subProps) {
|
|
|
3856
4207
|
return newItem;
|
|
3857
4208
|
}
|
|
3858
4209
|
// EXTERNAL MODULE: ../../ui/src/components/ContextMenu/ContextMenu.tsx
|
|
3859
|
-
var ContextMenu = __webpack_require__(
|
|
4210
|
+
var ContextMenu = __webpack_require__(5638);
|
|
3860
4211
|
;// CONCATENATED MODULE: ../../../extensions/default/src/CustomizableContextMenu/ContextMenuController.tsx
|
|
3861
4212
|
|
|
3862
4213
|
|
|
@@ -4065,10 +4416,10 @@ const defaultContextMenu = {
|
|
|
4065
4416
|
|
|
4066
4417
|
|
|
4067
4418
|
// EXTERNAL MODULE: ../../../node_modules/moment/moment.js
|
|
4068
|
-
var moment = __webpack_require__(
|
|
4419
|
+
var moment = __webpack_require__(71271);
|
|
4069
4420
|
var moment_default = /*#__PURE__*/__webpack_require__.n(moment);
|
|
4070
4421
|
// EXTERNAL MODULE: ../../../node_modules/react-window/dist/index.esm.js
|
|
4071
|
-
var index_esm = __webpack_require__(
|
|
4422
|
+
var index_esm = __webpack_require__(94614);
|
|
4072
4423
|
;// CONCATENATED MODULE: ../../../extensions/default/src/DicomTagBrowser/DicomTagTable.tsx
|
|
4073
4424
|
|
|
4074
4425
|
|
|
@@ -4637,10 +4988,14 @@ const reuseCachedLayout = (state, hangingProtocolService, syncService) => {
|
|
|
4637
4988
|
displaySetOptions,
|
|
4638
4989
|
displaySetInstanceUIDs
|
|
4639
4990
|
} = viewport;
|
|
4640
|
-
if (!displaySetOptions)
|
|
4991
|
+
if (!displaySetOptions) {
|
|
4992
|
+
continue;
|
|
4993
|
+
}
|
|
4641
4994
|
for (let i = 0; i < displaySetOptions.length; i++) {
|
|
4642
4995
|
const displaySetUID = displaySetInstanceUIDs[i];
|
|
4643
|
-
if (!displaySetUID)
|
|
4996
|
+
if (!displaySetUID) {
|
|
4997
|
+
continue;
|
|
4998
|
+
}
|
|
4644
4999
|
if (idx === activeViewportIndex && i === 0) {
|
|
4645
5000
|
displaySetSelectorMap[`${activeStudyUID}:activeDisplaySet:0`] = displaySetUID;
|
|
4646
5001
|
}
|
|
@@ -4673,9 +5028,11 @@ const reuseCachedLayout = (state, hangingProtocolService, syncService) => {
|
|
|
4673
5028
|
*/
|
|
4674
5029
|
const findViewportsByPosition_findOrCreateViewport = (hangingProtocolService, viewportsByPosition, viewportIndex, positionId, options) => {
|
|
4675
5030
|
const byPositionViewport = viewportsByPosition?.[positionId];
|
|
4676
|
-
if (byPositionViewport)
|
|
4677
|
-
|
|
4678
|
-
|
|
5031
|
+
if (byPositionViewport) {
|
|
5032
|
+
return {
|
|
5033
|
+
...byPositionViewport
|
|
5034
|
+
};
|
|
5035
|
+
}
|
|
4679
5036
|
const {
|
|
4680
5037
|
protocolId,
|
|
4681
5038
|
stageIndex
|
|
@@ -4756,8 +5113,8 @@ const findViewportsByPosition = (state, _ref, syncService) => {
|
|
|
4756
5113
|
};
|
|
4757
5114
|
};
|
|
4758
5115
|
/* harmony default export */ const src_findViewportsByPosition = (findViewportsByPosition);
|
|
4759
|
-
// EXTERNAL MODULE: ./index.js +
|
|
4760
|
-
var index = __webpack_require__(
|
|
5116
|
+
// EXTERNAL MODULE: ./index.js + 33 modules
|
|
5117
|
+
var index = __webpack_require__(59754);
|
|
4761
5118
|
;// CONCATENATED MODULE: ../../../extensions/default/src/commandsModule.ts
|
|
4762
5119
|
|
|
4763
5120
|
|
|
@@ -4859,7 +5216,9 @@ const commandsModule = _ref => {
|
|
|
4859
5216
|
stage
|
|
4860
5217
|
} = hangingProtocolService.getActiveProtocol();
|
|
4861
5218
|
const enableListener = button => {
|
|
4862
|
-
if (!button.id)
|
|
5219
|
+
if (!button.id) {
|
|
5220
|
+
return;
|
|
5221
|
+
}
|
|
4863
5222
|
const {
|
|
4864
5223
|
commands,
|
|
4865
5224
|
items
|
|
@@ -4868,7 +5227,9 @@ const commandsModule = _ref => {
|
|
|
4868
5227
|
items.forEach(enableListener);
|
|
4869
5228
|
}
|
|
4870
5229
|
const hpCommand = commands?.find?.(isHangingProtocolCommand);
|
|
4871
|
-
if (!hpCommand)
|
|
5230
|
+
if (!hpCommand) {
|
|
5231
|
+
return;
|
|
5232
|
+
}
|
|
4872
5233
|
const {
|
|
4873
5234
|
protocolId,
|
|
4874
5235
|
stageIndex,
|
|
@@ -5743,7 +6104,7 @@ function DataSourceSelector() {
|
|
|
5743
6104
|
key: ds.sourceName
|
|
5744
6105
|
}, /*#__PURE__*/react.createElement("h1", {
|
|
5745
6106
|
className: "text-white"
|
|
5746
|
-
}, ds.friendlyName), /*#__PURE__*/react.createElement(ui_src/* Button */.zx, {
|
|
6107
|
+
}, ds.configuration?.friendlyName || ds.friendlyName), /*#__PURE__*/react.createElement(ui_src/* Button */.zx, {
|
|
5747
6108
|
type: ui_src/* ButtonEnums.type */.LZ.U.primary,
|
|
5748
6109
|
className: classnames_default()('ml-2'),
|
|
5749
6110
|
onClick: () => {
|
|
@@ -5835,12 +6196,16 @@ function getCustomizationModule() {
|
|
|
5835
6196
|
{
|
|
5836
6197
|
id: 'ohif.overlayItem',
|
|
5837
6198
|
content: function (props) {
|
|
5838
|
-
if (this.condition && !this.condition(props))
|
|
6199
|
+
if (this.condition && !this.condition(props)) {
|
|
6200
|
+
return null;
|
|
6201
|
+
}
|
|
5839
6202
|
const {
|
|
5840
6203
|
instance
|
|
5841
6204
|
} = props;
|
|
5842
6205
|
const value = instance && this.attribute ? instance[this.attribute] : this.contentF && typeof this.contentF === 'function' ? this.contentF(props) : null;
|
|
5843
|
-
if (!value)
|
|
6206
|
+
if (!value) {
|
|
6207
|
+
return null;
|
|
6208
|
+
}
|
|
5844
6209
|
return /*#__PURE__*/react.createElement("span", {
|
|
5845
6210
|
className: "overlay-item flex flex-row",
|
|
5846
6211
|
style: {
|
|
@@ -5882,7 +6247,7 @@ function getCustomizationModule() {
|
|
|
5882
6247
|
}];
|
|
5883
6248
|
}
|
|
5884
6249
|
// EXTERNAL MODULE: ../../../node_modules/@cornerstonejs/calculate-suv/dist/calculate-suv.esm.js
|
|
5885
|
-
var calculate_suv_esm = __webpack_require__(
|
|
6250
|
+
var calculate_suv_esm = __webpack_require__(15747);
|
|
5886
6251
|
;// CONCATENATED MODULE: ../../../extensions/default/src/getPTImageIdInstanceMetadata.ts
|
|
5887
6252
|
|
|
5888
6253
|
const getPTImageIdInstanceMetadata_metadataProvider = src["default"].classes.MetadataProvider;
|