@ohif/app 3.8.0-beta.22 → 3.8.0-beta.23
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/{19.bundle.f2a23496a6ed93dac62d.js → 19.bundle.60717b06985980e0a237.js} +2 -2
- package/dist/{221.bundle.0ebccc22f886d1ed1c5a.js → 221.bundle.cf2ed62de0a9445c9239.js} +2 -2
- package/dist/{236.bundle.440bdc142f1470565e28.js → 236.bundle.19118b0e7881c6359804.js} +1 -1
- package/dist/{250.bundle.3f9fbb8ea16d267d6405.js → 250.bundle.6ca102e0e62885294c23.js} +2 -2
- package/dist/47.bundle.01d2751a9fd67b3d5390.js +9061 -0
- package/dist/{933.bundle.6184b84edf14c687b936.js → 661.bundle.65dd579322b265c6e321.js} +1749 -8963
- package/dist/{43.bundle.785b5eef341a551445d6.js → 738.bundle.e03f4127b014ff8ab5a5.js} +321 -10
- package/dist/{app.bundle.9b809a873945286927f8.js → app.bundle.e18399dc0b54a4851b2d.js} +23 -9
- package/dist/index.html +1 -1
- package/dist/sw.js +1 -1
- package/package.json +17 -17
- package/dist/604.bundle.a51f83e64004bca5f497.js +0 -1848
- /package/dist/{12.bundle.e08c9a68c3ae74534732.js → 12.bundle.c3dc58d8dff2e83ce920.js} +0 -0
- /package/dist/{126.bundle.c854bff61991fc4a231c.js → 126.bundle.0ebe6d5227b3e9481532.js} +0 -0
- /package/dist/{281.bundle.81b3962b3e7150734f8a.js → 281.bundle.93c845676e4645263c8d.js} +0 -0
- /package/dist/{359.bundle.1283413fe124f598e84d.js → 359.bundle.94a407fdbfcb299f2dc2.js} +0 -0
- /package/dist/{410.bundle.829305f030d3675ad5ac.js → 410.bundle.116f4a42e6b76e0a2bcb.js} +0 -0
- /package/dist/{506.bundle.6eeb56e9caff8f30bb14.js → 506.bundle.20af254ec61a959452cc.js} +0 -0
- /package/dist/{563.bundle.85b99569bb9525fd0858.js → 563.bundle.4debceb80aee325eec86.js} +0 -0
- /package/dist/{575.bundle.aa80b87d36cb65acf2f8.js → 575.bundle.b400797624d717956cfb.js} +0 -0
- /package/dist/{613.bundle.5b4451fe75f6ae1b654e.js → 613.bundle.59befe43e90034b4d879.js} +0 -0
- /package/dist/{663.bundle.dd3722f4d5a35738b322.js → 663.bundle.eae1939c22b73ea4c29f.js} +0 -0
- /package/dist/{687.bundle.dc5b172f08c41d6dfb83.js → 687.bundle.60a8d6ae5f913c189168.js} +0 -0
- /package/dist/{788.bundle.fdd78af8c874111a96fd.js → 788.bundle.57fbc328e3554d9f4659.js} +0 -0
- /package/dist/{814.bundle.8d03783d90040e3a81cd.js → 814.bundle.4b853464ad249a249029.js} +0 -0
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
(self["webpackChunk"] = self["webpackChunk"] || []).push([[
|
|
2
|
+
(self["webpackChunk"] = self["webpackChunk"] || []).push([[738],{
|
|
3
3
|
|
|
4
|
-
/***/
|
|
4
|
+
/***/ 78738:
|
|
5
5
|
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
|
|
6
6
|
|
|
7
7
|
// ESM COMPAT FLAG
|
|
@@ -704,6 +704,7 @@ const StudyMetaDataPromises = new Map();
|
|
|
704
704
|
* @returns {Promise} that will be resolved with the metadata or rejected with the error
|
|
705
705
|
*/
|
|
706
706
|
function retrieveStudyMetadata(dicomWebClient, StudyInstanceUID, enableStudyLazyLoad, filters, sortCriteria, sortFunction) {
|
|
707
|
+
let dicomWebConfig = arguments.length > 6 && arguments[6] !== undefined ? arguments[6] : {};
|
|
707
708
|
// @TODO: Whenever a study metadata request has failed, its related promise will be rejected once and for all
|
|
708
709
|
// and further requests for that metadata will always fail. On failure, we probably need to remove the
|
|
709
710
|
// corresponding promise from the "StudyMetaDataPromises" map...
|
|
@@ -714,10 +715,11 @@ function retrieveStudyMetadata(dicomWebClient, StudyInstanceUID, enableStudyLazy
|
|
|
714
715
|
if (!StudyInstanceUID) {
|
|
715
716
|
throw new Error(`${moduleName}: Required 'StudyInstanceUID' parameter not provided.`);
|
|
716
717
|
}
|
|
718
|
+
const promiseId = `${dicomWebConfig.name}:${StudyInstanceUID}`;
|
|
717
719
|
|
|
718
720
|
// Already waiting on result? Return cached promise
|
|
719
|
-
if (StudyMetaDataPromises.has(
|
|
720
|
-
return StudyMetaDataPromises.get(
|
|
721
|
+
if (StudyMetaDataPromises.has(promiseId)) {
|
|
722
|
+
return StudyMetaDataPromises.get(promiseId);
|
|
721
723
|
}
|
|
722
724
|
let promise;
|
|
723
725
|
if (filters && filters.SeriesInstanceUIDs) {
|
|
@@ -732,7 +734,7 @@ function retrieveStudyMetadata(dicomWebClient, StudyInstanceUID, enableStudyLazy
|
|
|
732
734
|
}
|
|
733
735
|
|
|
734
736
|
// Store the promise in cache
|
|
735
|
-
StudyMetaDataPromises.set(
|
|
737
|
+
StudyMetaDataPromises.set(promiseId, promise);
|
|
736
738
|
return promise;
|
|
737
739
|
}
|
|
738
740
|
|
|
@@ -1161,7 +1163,7 @@ function createDicomWebApi(dicomWebConfig, userAuthenticationService) {
|
|
|
1161
1163
|
instances: {
|
|
1162
1164
|
search: (studyInstanceUid, queryParameters) => {
|
|
1163
1165
|
qidoDicomWebClient.headers = getAuthrorizationHeader();
|
|
1164
|
-
search.call(undefined, qidoDicomWebClient, studyInstanceUid, null, queryParameters);
|
|
1166
|
+
return search.call(undefined, qidoDicomWebClient, studyInstanceUid, null, queryParameters);
|
|
1165
1167
|
}
|
|
1166
1168
|
}
|
|
1167
1169
|
},
|
|
@@ -1252,7 +1254,7 @@ function createDicomWebApi(dicomWebConfig, userAuthenticationService) {
|
|
|
1252
1254
|
const enableStudyLazyLoad = false;
|
|
1253
1255
|
wadoDicomWebClient.headers = generateWadoHeader();
|
|
1254
1256
|
// data is all SOPInstanceUIDs
|
|
1255
|
-
const data = await retrieveStudyMetadata(wadoDicomWebClient, StudyInstanceUID, enableStudyLazyLoad, filters, sortCriteria, sortFunction);
|
|
1257
|
+
const data = await retrieveStudyMetadata(wadoDicomWebClient, StudyInstanceUID, enableStudyLazyLoad, filters, sortCriteria, sortFunction, dicomWebConfig);
|
|
1256
1258
|
|
|
1257
1259
|
// first naturalize the data
|
|
1258
1260
|
const naturalizedInstancesMetadata = data.map(naturalizeDataset);
|
|
@@ -1293,6 +1295,7 @@ function createDicomWebApi(dicomWebConfig, userAuthenticationService) {
|
|
|
1293
1295
|
const seriesMetadata = Object.values(seriesSummaryMetadata);
|
|
1294
1296
|
src.DicomMetadataStore.addSeriesMetadata(seriesMetadata, madeInClient);
|
|
1295
1297
|
Object.keys(instancesPerSeries).forEach(seriesInstanceUID => src.DicomMetadataStore.addInstances(instancesPerSeries[seriesInstanceUID], madeInClient));
|
|
1298
|
+
return seriesSummaryMetadata;
|
|
1296
1299
|
},
|
|
1297
1300
|
_retrieveSeriesMetadataAsync: async function (StudyInstanceUID, filters, sortCriteria, sortFunction) {
|
|
1298
1301
|
let madeInClient = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : false;
|
|
@@ -1302,7 +1305,7 @@ function createDicomWebApi(dicomWebConfig, userAuthenticationService) {
|
|
|
1302
1305
|
const {
|
|
1303
1306
|
preLoadData: seriesSummaryMetadata,
|
|
1304
1307
|
promises: seriesPromises
|
|
1305
|
-
} = await retrieveStudyMetadata(wadoDicomWebClient, StudyInstanceUID, enableStudyLazyLoad, filters, sortCriteria, sortFunction);
|
|
1308
|
+
} = await retrieveStudyMetadata(wadoDicomWebClient, StudyInstanceUID, enableStudyLazyLoad, filters, sortCriteria, sortFunction, dicomWebConfig);
|
|
1306
1309
|
|
|
1307
1310
|
/**
|
|
1308
1311
|
* naturalizes the dataset, and adds a retrieve bulkdata method
|
|
@@ -1401,6 +1404,7 @@ function createDicomWebApi(dicomWebConfig, userAuthenticationService) {
|
|
|
1401
1404
|
}));
|
|
1402
1405
|
await Promise.all(seriesDeliveredPromises);
|
|
1403
1406
|
setSuccessFlag();
|
|
1407
|
+
return seriesSummaryMetadata;
|
|
1404
1408
|
},
|
|
1405
1409
|
deleteStudyMetadataPromise: deleteStudyMetadataPromise,
|
|
1406
1410
|
getImageIdsForDisplaySet(displaySet) {
|
|
@@ -2096,6 +2100,308 @@ function createDicomWebProxyApi(dicomWebProxyConfig, UserAuthenticationService)
|
|
|
2096
2100
|
return src/* IWebApiDataSource */.Is.create(implementation);
|
|
2097
2101
|
}
|
|
2098
2102
|
|
|
2103
|
+
// EXTERNAL MODULE: ../../../node_modules/lodash/lodash.js
|
|
2104
|
+
var lodash = __webpack_require__(44379);
|
|
2105
|
+
;// CONCATENATED MODULE: ../../../extensions/default/src/MergeDataSource/index.ts
|
|
2106
|
+
|
|
2107
|
+
|
|
2108
|
+
const mergeMap = {
|
|
2109
|
+
'query.studies.search': {
|
|
2110
|
+
mergeKey: 'studyInstanceUid',
|
|
2111
|
+
tagFunc: x => x
|
|
2112
|
+
},
|
|
2113
|
+
'query.series.search': {
|
|
2114
|
+
mergeKey: 'seriesInstanceUid',
|
|
2115
|
+
tagFunc: (series, sourceName) => {
|
|
2116
|
+
series.forEach(series => {
|
|
2117
|
+
series.RetrieveAETitle = sourceName;
|
|
2118
|
+
src.DicomMetadataStore.updateSeriesMetadata(series);
|
|
2119
|
+
});
|
|
2120
|
+
return series;
|
|
2121
|
+
}
|
|
2122
|
+
}
|
|
2123
|
+
};
|
|
2124
|
+
|
|
2125
|
+
/**
|
|
2126
|
+
* Calls all data sources asynchronously and merges the results.
|
|
2127
|
+
* @param {CallForAllDataSourcesAsyncOptions} options - The options for calling all data sources.
|
|
2128
|
+
* @param {string} options.path - The path to the function to be called on each data source.
|
|
2129
|
+
* @param {unknown[]} options.args - The arguments to be passed to the function.
|
|
2130
|
+
* @param {ExtensionManager} options.extensionManager - The extension manager.
|
|
2131
|
+
* @param {string[]} options.dataSourceNames - The names of the data sources to be called.
|
|
2132
|
+
* @returns {Promise<unknown[]>} - A promise that resolves to the merged data from all data sources.
|
|
2133
|
+
*/
|
|
2134
|
+
const callForAllDataSourcesAsync = async _ref => {
|
|
2135
|
+
let {
|
|
2136
|
+
mergeMap,
|
|
2137
|
+
path,
|
|
2138
|
+
args,
|
|
2139
|
+
extensionManager,
|
|
2140
|
+
dataSourceNames
|
|
2141
|
+
} = _ref;
|
|
2142
|
+
const {
|
|
2143
|
+
mergeKey,
|
|
2144
|
+
tagFunc
|
|
2145
|
+
} = mergeMap[path] || {
|
|
2146
|
+
tagFunc: x => x
|
|
2147
|
+
};
|
|
2148
|
+
const dataSourceDefs = Object.values(extensionManager.dataSourceDefs);
|
|
2149
|
+
const promises = [];
|
|
2150
|
+
const mergedData = [];
|
|
2151
|
+
for (const dataSourceDef of dataSourceDefs) {
|
|
2152
|
+
const {
|
|
2153
|
+
configuration,
|
|
2154
|
+
sourceName
|
|
2155
|
+
} = dataSourceDef;
|
|
2156
|
+
if (!!configuration && dataSourceNames.includes(sourceName)) {
|
|
2157
|
+
const [dataSource] = extensionManager.getDataSources(sourceName);
|
|
2158
|
+
const func = (0,lodash.get)(dataSource, path);
|
|
2159
|
+
const promise = func.apply(dataSource, args);
|
|
2160
|
+
promises.push(promise.then(data => mergedData.push(tagFunc(data, sourceName))));
|
|
2161
|
+
}
|
|
2162
|
+
}
|
|
2163
|
+
await Promise.allSettled(promises);
|
|
2164
|
+
return (0,lodash.uniqBy)(mergedData.flat(), obj => obj[mergeKey]);
|
|
2165
|
+
};
|
|
2166
|
+
|
|
2167
|
+
/**
|
|
2168
|
+
* Calls all data sources that match the provided names and merges their data.
|
|
2169
|
+
* @param options - The options for calling all data sources.
|
|
2170
|
+
* @param options.path - The path to the function to be called on each data source.
|
|
2171
|
+
* @param options.args - The arguments to be passed to the function.
|
|
2172
|
+
* @param options.extensionManager - The extension manager instance.
|
|
2173
|
+
* @param options.dataSourceNames - The names of the data sources to be called.
|
|
2174
|
+
* @returns The merged data from all the matching data sources.
|
|
2175
|
+
*/
|
|
2176
|
+
const callForAllDataSources = _ref2 => {
|
|
2177
|
+
let {
|
|
2178
|
+
path,
|
|
2179
|
+
args,
|
|
2180
|
+
extensionManager,
|
|
2181
|
+
dataSourceNames
|
|
2182
|
+
} = _ref2;
|
|
2183
|
+
const dataSourceDefs = Object.values(extensionManager.dataSourceDefs);
|
|
2184
|
+
const mergedData = [];
|
|
2185
|
+
for (const dataSourceDef of dataSourceDefs) {
|
|
2186
|
+
const {
|
|
2187
|
+
configuration,
|
|
2188
|
+
sourceName
|
|
2189
|
+
} = dataSourceDef;
|
|
2190
|
+
if (!!configuration && dataSourceNames.includes(sourceName)) {
|
|
2191
|
+
const [dataSource] = extensionManager.getDataSources(sourceName);
|
|
2192
|
+
const func = (0,lodash.get)(dataSource, path);
|
|
2193
|
+
const data = func.apply(dataSource, args);
|
|
2194
|
+
mergedData.push(data);
|
|
2195
|
+
}
|
|
2196
|
+
}
|
|
2197
|
+
return mergedData.flat();
|
|
2198
|
+
};
|
|
2199
|
+
|
|
2200
|
+
/**
|
|
2201
|
+
* Calls the default data source function specified by the given path with the provided arguments.
|
|
2202
|
+
* @param {CallForDefaultDataSourceOptions} options - The options for calling the default data source.
|
|
2203
|
+
* @param {string} options.path - The path to the function within the default data source.
|
|
2204
|
+
* @param {unknown[]} options.args - The arguments to pass to the function.
|
|
2205
|
+
* @param {string} options.defaultDataSourceName - The name of the default data source.
|
|
2206
|
+
* @param {ExtensionManager} options.extensionManager - The extension manager instance.
|
|
2207
|
+
* @returns {unknown} - The result of calling the default data source function.
|
|
2208
|
+
*/
|
|
2209
|
+
const callForDefaultDataSource = _ref3 => {
|
|
2210
|
+
let {
|
|
2211
|
+
path,
|
|
2212
|
+
args,
|
|
2213
|
+
defaultDataSourceName,
|
|
2214
|
+
extensionManager
|
|
2215
|
+
} = _ref3;
|
|
2216
|
+
const [dataSource] = extensionManager.getDataSources(defaultDataSourceName);
|
|
2217
|
+
const func = (0,lodash.get)(dataSource, path);
|
|
2218
|
+
return func.apply(dataSource, args);
|
|
2219
|
+
};
|
|
2220
|
+
|
|
2221
|
+
/**
|
|
2222
|
+
* Calls the data source specified by the RetrieveAETitle of the given display set.
|
|
2223
|
+
* @typedef {Object} CallByRetrieveAETitleOptions
|
|
2224
|
+
* @property {string} path - The path of the method to call on the data source.
|
|
2225
|
+
* @property {unknown[]} args - The arguments to pass to the method.
|
|
2226
|
+
* @property {string} defaultDataSourceName - The name of the default data source.
|
|
2227
|
+
* @property {ExtensionManager} extensionManager - The extension manager.
|
|
2228
|
+
*/
|
|
2229
|
+
const callByRetrieveAETitle = _ref4 => {
|
|
2230
|
+
let {
|
|
2231
|
+
path,
|
|
2232
|
+
args,
|
|
2233
|
+
defaultDataSourceName,
|
|
2234
|
+
extensionManager
|
|
2235
|
+
} = _ref4;
|
|
2236
|
+
const [displaySet] = args;
|
|
2237
|
+
const seriesMetadata = src.DicomMetadataStore.getSeries(displaySet.StudyInstanceUID, displaySet.SeriesInstanceUID);
|
|
2238
|
+
const [dataSource] = extensionManager.getDataSources(seriesMetadata.RetrieveAETitle || defaultDataSourceName);
|
|
2239
|
+
return dataSource[path](...args);
|
|
2240
|
+
};
|
|
2241
|
+
function createMergeDataSourceApi(mergeConfig, UserAuthenticationService, extensionManager) {
|
|
2242
|
+
const {
|
|
2243
|
+
seriesMerge
|
|
2244
|
+
} = mergeConfig;
|
|
2245
|
+
const {
|
|
2246
|
+
dataSourceNames,
|
|
2247
|
+
defaultDataSourceName
|
|
2248
|
+
} = seriesMerge;
|
|
2249
|
+
const implementation = {
|
|
2250
|
+
initialize: function () {
|
|
2251
|
+
for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
|
|
2252
|
+
args[_key] = arguments[_key];
|
|
2253
|
+
}
|
|
2254
|
+
return callForAllDataSources({
|
|
2255
|
+
path: 'initialize',
|
|
2256
|
+
args,
|
|
2257
|
+
extensionManager,
|
|
2258
|
+
dataSourceNames
|
|
2259
|
+
});
|
|
2260
|
+
},
|
|
2261
|
+
query: {
|
|
2262
|
+
studies: {
|
|
2263
|
+
search: function () {
|
|
2264
|
+
for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {
|
|
2265
|
+
args[_key2] = arguments[_key2];
|
|
2266
|
+
}
|
|
2267
|
+
return callForAllDataSourcesAsync({
|
|
2268
|
+
mergeMap,
|
|
2269
|
+
path: 'query.studies.search',
|
|
2270
|
+
args,
|
|
2271
|
+
extensionManager,
|
|
2272
|
+
dataSourceNames
|
|
2273
|
+
});
|
|
2274
|
+
}
|
|
2275
|
+
},
|
|
2276
|
+
series: {
|
|
2277
|
+
search: function () {
|
|
2278
|
+
for (var _len3 = arguments.length, args = new Array(_len3), _key3 = 0; _key3 < _len3; _key3++) {
|
|
2279
|
+
args[_key3] = arguments[_key3];
|
|
2280
|
+
}
|
|
2281
|
+
return callForAllDataSourcesAsync({
|
|
2282
|
+
mergeMap,
|
|
2283
|
+
path: 'query.series.search',
|
|
2284
|
+
args,
|
|
2285
|
+
extensionManager,
|
|
2286
|
+
dataSourceNames
|
|
2287
|
+
});
|
|
2288
|
+
}
|
|
2289
|
+
},
|
|
2290
|
+
instances: {
|
|
2291
|
+
search: function () {
|
|
2292
|
+
for (var _len4 = arguments.length, args = new Array(_len4), _key4 = 0; _key4 < _len4; _key4++) {
|
|
2293
|
+
args[_key4] = arguments[_key4];
|
|
2294
|
+
}
|
|
2295
|
+
return callForAllDataSourcesAsync({
|
|
2296
|
+
mergeMap,
|
|
2297
|
+
path: 'query.instances.search',
|
|
2298
|
+
args,
|
|
2299
|
+
extensionManager,
|
|
2300
|
+
dataSourceNames
|
|
2301
|
+
});
|
|
2302
|
+
}
|
|
2303
|
+
}
|
|
2304
|
+
},
|
|
2305
|
+
retrieve: {
|
|
2306
|
+
bulkDataURI: function () {
|
|
2307
|
+
for (var _len5 = arguments.length, args = new Array(_len5), _key5 = 0; _key5 < _len5; _key5++) {
|
|
2308
|
+
args[_key5] = arguments[_key5];
|
|
2309
|
+
}
|
|
2310
|
+
return callForAllDataSourcesAsync({
|
|
2311
|
+
mergeMap,
|
|
2312
|
+
path: 'retrieve.bulkDataURI',
|
|
2313
|
+
args,
|
|
2314
|
+
extensionManager,
|
|
2315
|
+
dataSourceNames
|
|
2316
|
+
});
|
|
2317
|
+
},
|
|
2318
|
+
directURL: function () {
|
|
2319
|
+
for (var _len6 = arguments.length, args = new Array(_len6), _key6 = 0; _key6 < _len6; _key6++) {
|
|
2320
|
+
args[_key6] = arguments[_key6];
|
|
2321
|
+
}
|
|
2322
|
+
return callForDefaultDataSource({
|
|
2323
|
+
path: 'retrieve.directURL',
|
|
2324
|
+
args,
|
|
2325
|
+
defaultDataSourceName,
|
|
2326
|
+
extensionManager
|
|
2327
|
+
});
|
|
2328
|
+
},
|
|
2329
|
+
series: {
|
|
2330
|
+
metadata: function () {
|
|
2331
|
+
for (var _len7 = arguments.length, args = new Array(_len7), _key7 = 0; _key7 < _len7; _key7++) {
|
|
2332
|
+
args[_key7] = arguments[_key7];
|
|
2333
|
+
}
|
|
2334
|
+
return callForAllDataSourcesAsync({
|
|
2335
|
+
mergeMap,
|
|
2336
|
+
path: 'retrieve.series.metadata',
|
|
2337
|
+
args,
|
|
2338
|
+
extensionManager,
|
|
2339
|
+
dataSourceNames
|
|
2340
|
+
});
|
|
2341
|
+
}
|
|
2342
|
+
}
|
|
2343
|
+
},
|
|
2344
|
+
store: {
|
|
2345
|
+
dicom: function () {
|
|
2346
|
+
for (var _len8 = arguments.length, args = new Array(_len8), _key8 = 0; _key8 < _len8; _key8++) {
|
|
2347
|
+
args[_key8] = arguments[_key8];
|
|
2348
|
+
}
|
|
2349
|
+
return callForDefaultDataSource({
|
|
2350
|
+
path: 'store.dicom',
|
|
2351
|
+
args,
|
|
2352
|
+
defaultDataSourceName,
|
|
2353
|
+
extensionManager
|
|
2354
|
+
});
|
|
2355
|
+
}
|
|
2356
|
+
},
|
|
2357
|
+
deleteStudyMetadataPromise: function () {
|
|
2358
|
+
for (var _len9 = arguments.length, args = new Array(_len9), _key9 = 0; _key9 < _len9; _key9++) {
|
|
2359
|
+
args[_key9] = arguments[_key9];
|
|
2360
|
+
}
|
|
2361
|
+
return callForAllDataSources({
|
|
2362
|
+
path: 'deleteStudyMetadataPromise',
|
|
2363
|
+
args,
|
|
2364
|
+
extensionManager,
|
|
2365
|
+
dataSourceNames
|
|
2366
|
+
});
|
|
2367
|
+
},
|
|
2368
|
+
getImageIdsForDisplaySet: function () {
|
|
2369
|
+
for (var _len10 = arguments.length, args = new Array(_len10), _key10 = 0; _key10 < _len10; _key10++) {
|
|
2370
|
+
args[_key10] = arguments[_key10];
|
|
2371
|
+
}
|
|
2372
|
+
return callByRetrieveAETitle({
|
|
2373
|
+
path: 'getImageIdsForDisplaySet',
|
|
2374
|
+
args,
|
|
2375
|
+
defaultDataSourceName,
|
|
2376
|
+
extensionManager
|
|
2377
|
+
});
|
|
2378
|
+
},
|
|
2379
|
+
getImageIdsForInstance: function () {
|
|
2380
|
+
for (var _len11 = arguments.length, args = new Array(_len11), _key11 = 0; _key11 < _len11; _key11++) {
|
|
2381
|
+
args[_key11] = arguments[_key11];
|
|
2382
|
+
}
|
|
2383
|
+
return callByRetrieveAETitle({
|
|
2384
|
+
path: 'getImageIdsForDisplaySet',
|
|
2385
|
+
args,
|
|
2386
|
+
defaultDataSourceName,
|
|
2387
|
+
extensionManager
|
|
2388
|
+
});
|
|
2389
|
+
},
|
|
2390
|
+
getStudyInstanceUIDs: function () {
|
|
2391
|
+
for (var _len12 = arguments.length, args = new Array(_len12), _key12 = 0; _key12 < _len12; _key12++) {
|
|
2392
|
+
args[_key12] = arguments[_key12];
|
|
2393
|
+
}
|
|
2394
|
+
return callForAllDataSources({
|
|
2395
|
+
path: 'getStudyInstanceUIDs',
|
|
2396
|
+
args,
|
|
2397
|
+
extensionManager,
|
|
2398
|
+
dataSourceNames
|
|
2399
|
+
});
|
|
2400
|
+
}
|
|
2401
|
+
};
|
|
2402
|
+
return src/* IWebApiDataSource */.Is.create(implementation);
|
|
2403
|
+
}
|
|
2404
|
+
|
|
2099
2405
|
;// CONCATENATED MODULE: ../../../extensions/default/src/getDataSourcesModule.js
|
|
2100
2406
|
// TODO: Pull in IWebClientApi from @ohif/core
|
|
2101
2407
|
// TODO: Use constructor to create an instance of IWebClientApi
|
|
@@ -2106,6 +2412,7 @@ function createDicomWebProxyApi(dicomWebProxyConfig, UserAuthenticationService)
|
|
|
2106
2412
|
|
|
2107
2413
|
|
|
2108
2414
|
|
|
2415
|
+
|
|
2109
2416
|
/**
|
|
2110
2417
|
*
|
|
2111
2418
|
*/
|
|
@@ -2126,6 +2433,10 @@ function getDataSourcesModule() {
|
|
|
2126
2433
|
name: 'dicomlocal',
|
|
2127
2434
|
type: 'localApi',
|
|
2128
2435
|
createDataSource: createDicomLocalApi
|
|
2436
|
+
}, {
|
|
2437
|
+
name: 'merge',
|
|
2438
|
+
type: 'mergeApi',
|
|
2439
|
+
createDataSource: createMergeDataSourceApi
|
|
2129
2440
|
}];
|
|
2130
2441
|
}
|
|
2131
2442
|
/* harmony default export */ const src_getDataSourcesModule = (getDataSourcesModule);
|
|
@@ -2255,8 +2566,8 @@ function ViewerHeader(_ref) {
|
|
|
2255
2566
|
hotkeyDefinitions,
|
|
2256
2567
|
hotkeyDefaults
|
|
2257
2568
|
} = hotkeysManager;
|
|
2258
|
-
const versionNumber = "3.8.0-beta.
|
|
2259
|
-
const commitHash = "
|
|
2569
|
+
const versionNumber = "3.8.0-beta.23";
|
|
2570
|
+
const commitHash = "c4ff2c2f09546ce8b72eab9c5e7beed611e3cab0";
|
|
2260
2571
|
const menuOptions = [{
|
|
2261
2572
|
title: t('Header:About'),
|
|
2262
2573
|
icon: 'info',
|
|
@@ -989,8 +989,8 @@ function WorkList(_ref) {
|
|
|
989
989
|
};
|
|
990
990
|
});
|
|
991
991
|
const hasStudies = numOfStudies > 0;
|
|
992
|
-
const versionNumber = "3.8.0-beta.
|
|
993
|
-
const commitHash = "
|
|
992
|
+
const versionNumber = "3.8.0-beta.23";
|
|
993
|
+
const commitHash = "c4ff2c2f09546ce8b72eab9c5e7beed611e3cab0";
|
|
994
994
|
const menuOptions = [{
|
|
995
995
|
title: t('Header:About'),
|
|
996
996
|
icon: 'info',
|
|
@@ -1943,15 +1943,15 @@ modes.push("@ohif/mode-microscopy");
|
|
|
1943
1943
|
async function loadModule(module) {
|
|
1944
1944
|
if (typeof module !== 'string') return module;
|
|
1945
1945
|
if (module === "@ohif/extension-default") {
|
|
1946
|
-
const imported = await Promise.all(/* import() */[__webpack_require__.e(
|
|
1946
|
+
const imported = await Promise.all(/* import() */[__webpack_require__.e(661), __webpack_require__.e(417), __webpack_require__.e(738), __webpack_require__.e(579)]).then(__webpack_require__.bind(__webpack_require__, 78738));
|
|
1947
1947
|
return imported.default;
|
|
1948
1948
|
}
|
|
1949
1949
|
if (module === "@ohif/extension-cornerstone") {
|
|
1950
|
-
const imported = await Promise.all(/* import() */[__webpack_require__.e(231), __webpack_require__.e(775), __webpack_require__.e(82), __webpack_require__.e(
|
|
1950
|
+
const imported = await Promise.all(/* import() */[__webpack_require__.e(231), __webpack_require__.e(775), __webpack_require__.e(82), __webpack_require__.e(661), __webpack_require__.e(47), __webpack_require__.e(575)]).then(__webpack_require__.bind(__webpack_require__, 41420));
|
|
1951
1951
|
return imported.default;
|
|
1952
1952
|
}
|
|
1953
1953
|
if (module === "@ohif/extension-measurement-tracking") {
|
|
1954
|
-
const imported = await Promise.all(/* import() */[__webpack_require__.e(231), __webpack_require__.e(775), __webpack_require__.e(82), __webpack_require__.e(
|
|
1954
|
+
const imported = await Promise.all(/* import() */[__webpack_require__.e(231), __webpack_require__.e(775), __webpack_require__.e(82), __webpack_require__.e(661), __webpack_require__.e(202), __webpack_require__.e(417), __webpack_require__.e(530), __webpack_require__.e(738), __webpack_require__.e(663), __webpack_require__.e(19)]).then(__webpack_require__.bind(__webpack_require__, 28030));
|
|
1955
1955
|
return imported.default;
|
|
1956
1956
|
}
|
|
1957
1957
|
if (module === "@ohif/extension-cornerstone-dicom-sr") {
|
|
@@ -1959,7 +1959,7 @@ async function loadModule(module) {
|
|
|
1959
1959
|
return imported.default;
|
|
1960
1960
|
}
|
|
1961
1961
|
if (module === "@ohif/extension-cornerstone-dicom-seg") {
|
|
1962
|
-
const imported = await Promise.all(/* import() */[__webpack_require__.e(231), __webpack_require__.e(775), __webpack_require__.e(82), __webpack_require__.e(
|
|
1962
|
+
const imported = await Promise.all(/* import() */[__webpack_require__.e(231), __webpack_require__.e(775), __webpack_require__.e(82), __webpack_require__.e(661), __webpack_require__.e(202), __webpack_require__.e(417), __webpack_require__.e(485), __webpack_require__.e(738), __webpack_require__.e(221)]).then(__webpack_require__.bind(__webpack_require__, 9943));
|
|
1963
1963
|
return imported.default;
|
|
1964
1964
|
}
|
|
1965
1965
|
if (module === "@ohif/extension-dicom-microscopy") {
|
|
@@ -6476,7 +6476,7 @@ const detectionOptions = {
|
|
|
6476
6476
|
}
|
|
6477
6477
|
});
|
|
6478
6478
|
;// CONCATENATED MODULE: ../../i18n/package.json
|
|
6479
|
-
const package_namespaceObject = JSON.parse('{"i8":"3.8.0-beta.
|
|
6479
|
+
const package_namespaceObject = JSON.parse('{"i8":"3.8.0-beta.22"}');
|
|
6480
6480
|
;// CONCATENATED MODULE: ../../i18n/src/utils.js
|
|
6481
6481
|
const languagesMap = {
|
|
6482
6482
|
ar: 'Arabic',
|
|
@@ -55497,7 +55497,7 @@ class ExtensionManager extends pubSubServiceInterface/* PubSubService */.h {
|
|
|
55497
55497
|
const {
|
|
55498
55498
|
userAuthenticationService
|
|
55499
55499
|
} = this._servicesManager.services;
|
|
55500
|
-
const dataSourceInstance = module.createDataSource(dataSourceDef.configuration, userAuthenticationService);
|
|
55500
|
+
const dataSourceInstance = module.createDataSource(dataSourceDef.configuration, userAuthenticationService, this);
|
|
55501
55501
|
this.dataSourceMap[dataSourceDef.sourceName] = [dataSourceInstance];
|
|
55502
55502
|
}
|
|
55503
55503
|
_initDataSourcesModule(extensionModule, extensionId) {
|
|
@@ -57753,6 +57753,20 @@ const BaseImplementation = {
|
|
|
57753
57753
|
madeInClient
|
|
57754
57754
|
});
|
|
57755
57755
|
},
|
|
57756
|
+
updateSeriesMetadata(seriesMetadata) {
|
|
57757
|
+
const {
|
|
57758
|
+
StudyInstanceUID,
|
|
57759
|
+
SeriesInstanceUID
|
|
57760
|
+
} = seriesMetadata;
|
|
57761
|
+
const series = _getSeries(StudyInstanceUID, SeriesInstanceUID);
|
|
57762
|
+
if (!series) {
|
|
57763
|
+
return;
|
|
57764
|
+
}
|
|
57765
|
+
const study = _getStudy(StudyInstanceUID);
|
|
57766
|
+
if (study) {
|
|
57767
|
+
study.setSeriesMetadata(SeriesInstanceUID, seriesMetadata);
|
|
57768
|
+
}
|
|
57769
|
+
},
|
|
57756
57770
|
addSeriesMetadata(seriesSummaryMetadata) {
|
|
57757
57771
|
let madeInClient = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;
|
|
57758
57772
|
if (!seriesSummaryMetadata || !seriesSummaryMetadata.length || !seriesSummaryMetadata[0]) {
|
|
@@ -159941,7 +159955,7 @@ var selectOrdinal = function selectOrdinal() {
|
|
|
159941
159955
|
/******/ // This function allow to reference async chunks
|
|
159942
159956
|
/******/ __webpack_require__.u = (chunkId) => {
|
|
159943
159957
|
/******/ // return url for filenames based on template
|
|
159944
|
-
/******/ return "" + (chunkId === 18 ? "dicom-microscopy-viewer" : chunkId) + ".bundle." + {"12":"
|
|
159958
|
+
/******/ return "" + (chunkId === 18 ? "dicom-microscopy-viewer" : chunkId) + ".bundle." + {"12":"c3dc58d8dff2e83ce920","18":"2c146384eb9466d02ff8","19":"60717b06985980e0a237","23":"e008ad788170f2ed5569","47":"01d2751a9fd67b3d5390","82":"122d1b58bc3e22439dd9","125":"253395f320b72180da63","126":"0ebe6d5227b3e9481532","181":"bce8ecb8af857b2513df","202":"ec714227032b22d4fa24","220":"f7e1c96c94245e70f2be","221":"cf2ed62de0a9445c9239","231":"8aad229e39e23731d6c1","236":"19118b0e7881c6359804","250":"6ca102e0e62885294c23","281":"93c845676e4645263c8d","359":"94a407fdbfcb299f2dc2","410":"116f4a42e6b76e0a2bcb","417":"af0a207c29b109f84159","451":"57c21db5d003c75e9d61","471":"49c8d281adbae4a2c4df","485":"8667a696ac2eaf99e4fa","506":"20af254ec61a959452cc","530":"a03b6f942ace3e1baa1e","563":"4debceb80aee325eec86","575":"b400797624d717956cfb","579":"8fc434a0c13d3f662d42","613":"59befe43e90034b4d879","661":"65dd579322b265c6e321","663":"eae1939c22b73ea4c29f","686":"dccef1f36e4bc79bcc48","687":"60a8d6ae5f913c189168","738":"e03f4127b014ff8ab5a5","775":"2285e7e0e67878948c0d","788":"57fbc328e3554d9f4659","814":"4b853464ad249a249029","822":"4f0424bd1dc0308bb489","886":"c8dd3ecc42a4253de278"}[chunkId] + ".js";
|
|
159945
159959
|
/******/ };
|
|
159946
159960
|
/******/ })();
|
|
159947
159961
|
/******/
|
package/dist/index.html
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
<!doctype html><html lang="en"><head><meta charset="UTF-8"/><meta name="viewport" content="width=device-width,initial-scale=1,shrink-to-fit=no"/><meta name="theme-color" content="#000000"/><meta name="mobile-web-app-capable" content="yes"/><meta name="application-name" content="OHIF Viewer"/><meta name="apple-mobile-web-app-capable" content="yes"/><meta name="apple-mobile-web-app-status-bar-style" content="black-translucent"/><meta name="apple-mobile-web-app-title" content="@ohif/app"/><meta name="msapplication-TileColor" content="#fff"/><meta name="msapplication-TileImage" content="/assets/mstile-144x144.png"/><meta name="msapplication-config" content="/assets/browserconfig.xml"/><script>console.time('scriptToView');
|
|
2
|
-
window.PUBLIC_URL = '/';</script><link rel="manifest" href="/manifest.json"/><link rel="shortcut icon" href="/assets/favicon.ico"/><link rel="icon" type="image/png" sizes="16x16" href="/assets/favicon-16x16.png"/><link rel="icon" type="image/png" sizes="32x32" href="/assets/favicon-32x32.png"/><link rel="apple-touch-icon" sizes="57x57" href="/assets/apple-touch-icon-57x57.png"/><link rel="apple-touch-icon" sizes="60x60" href="/assets/apple-touch-icon-60x60.png"/><link rel="apple-touch-icon" sizes="72x72" href="/assets/apple-touch-icon-72x72.png"/><link rel="apple-touch-icon" sizes="76x76" href="/assets/apple-touch-icon-76x76.png"/><link rel="apple-touch-icon" sizes="114x114" href="/assets/apple-touch-icon-114x114.png"/><link rel="apple-touch-icon" sizes="120x120" href="/assets/apple-touch-icon-120x120.png"/><link rel="apple-touch-icon" sizes="144x144" href="/assets/apple-touch-icon-144x144.png"/><link rel="apple-touch-icon" sizes="152x152" href="/assets/apple-touch-icon-152x152.png"/><link rel="apple-touch-icon" sizes="167x167" href="/assets/apple-touch-icon-167x167.png"/><link rel="apple-touch-icon" sizes="180x180" href="/assets/apple-touch-icon-180x180.png"/><link rel="apple-touch-icon" sizes="1024x1024" href="/assets/apple-touch-icon-1024x1024.png"/><link rel="apple-touch-startup-image" media="(device-width: 320px) and (device-height: 480px) and (-webkit-device-pixel-ratio: 1)" href="/assets/apple-touch-startup-image-320x460.png"/><link rel="apple-touch-startup-image" media="(device-width: 320px) and (device-height: 480px) and (-webkit-device-pixel-ratio: 2)" href="/assets/apple-touch-startup-image-640x920.png"/><link rel="apple-touch-startup-image" media="(device-width: 320px) and (device-height: 568px) and (-webkit-device-pixel-ratio: 2)" href="/assets/apple-touch-startup-image-640x1096.png"/><link rel="apple-touch-startup-image" media="(device-width: 375px) and (device-height: 667px) and (-webkit-device-pixel-ratio: 2)" href="/assets/apple-touch-startup-image-750x1294.png"/><link rel="apple-touch-startup-image" media="(device-width: 414px) and (device-height: 736px) and (orientation: landscape) and (-webkit-device-pixel-ratio: 3)" href="/assets/apple-touch-startup-image-1182x2208.png"/><link rel="apple-touch-startup-image" media="(device-width: 414px) and (device-height: 736px) and (orientation: portrait) and (-webkit-device-pixel-ratio: 3)" href="/assets/apple-touch-startup-image-1242x2148.png"/><link rel="apple-touch-startup-image" media="(device-width: 768px) and (device-height: 1024px) and (orientation: landscape) and (-webkit-device-pixel-ratio: 1)" href="/assets/apple-touch-startup-image-748x1024.png"/><link rel="apple-touch-startup-image" media="(device-width: 768px) and (device-height: 1024px) and (orientation: portrait) and (-webkit-device-pixel-ratio: 1)" href="/assets/apple-touch-startup-image-768x1004.png"/><link rel="apple-touch-startup-image" media="(device-width: 768px) and (device-height: 1024px) and (orientation: landscape) and (-webkit-device-pixel-ratio: 2)" href="/assets/apple-touch-startup-image-1496x2048.png"/><link rel="apple-touch-startup-image" media="(device-width: 768px) and (device-height: 1024px) and (orientation: portrait) and (-webkit-device-pixel-ratio: 2)" href="/assets/apple-touch-startup-image-1536x2008.png"/><link rel="icon" type="image/png" sizes="228x228" href="/assets/coast-228x228.png"/><link rel="yandex-tableau-widget" href="/assets/yandex-browser-manifest.json"/><script rel="preload" as="script" src="/app-config.js"></script><script rel="preload" as="script" type="module" src="/init-service-worker.js"></script><title>OHIF Viewer</title><link rel="preconnect" href="https://fonts.gstatic.com" crossorigin/><link href="https://fonts.googleapis.com/css?family=Inter:100,300,400,500,700&display=swap" rel="stylesheet" rel="preload" as="style"/><script defer="defer" src="/app.bundle.
|
|
2
|
+
window.PUBLIC_URL = '/';</script><link rel="manifest" href="/manifest.json"/><link rel="shortcut icon" href="/assets/favicon.ico"/><link rel="icon" type="image/png" sizes="16x16" href="/assets/favicon-16x16.png"/><link rel="icon" type="image/png" sizes="32x32" href="/assets/favicon-32x32.png"/><link rel="apple-touch-icon" sizes="57x57" href="/assets/apple-touch-icon-57x57.png"/><link rel="apple-touch-icon" sizes="60x60" href="/assets/apple-touch-icon-60x60.png"/><link rel="apple-touch-icon" sizes="72x72" href="/assets/apple-touch-icon-72x72.png"/><link rel="apple-touch-icon" sizes="76x76" href="/assets/apple-touch-icon-76x76.png"/><link rel="apple-touch-icon" sizes="114x114" href="/assets/apple-touch-icon-114x114.png"/><link rel="apple-touch-icon" sizes="120x120" href="/assets/apple-touch-icon-120x120.png"/><link rel="apple-touch-icon" sizes="144x144" href="/assets/apple-touch-icon-144x144.png"/><link rel="apple-touch-icon" sizes="152x152" href="/assets/apple-touch-icon-152x152.png"/><link rel="apple-touch-icon" sizes="167x167" href="/assets/apple-touch-icon-167x167.png"/><link rel="apple-touch-icon" sizes="180x180" href="/assets/apple-touch-icon-180x180.png"/><link rel="apple-touch-icon" sizes="1024x1024" href="/assets/apple-touch-icon-1024x1024.png"/><link rel="apple-touch-startup-image" media="(device-width: 320px) and (device-height: 480px) and (-webkit-device-pixel-ratio: 1)" href="/assets/apple-touch-startup-image-320x460.png"/><link rel="apple-touch-startup-image" media="(device-width: 320px) and (device-height: 480px) and (-webkit-device-pixel-ratio: 2)" href="/assets/apple-touch-startup-image-640x920.png"/><link rel="apple-touch-startup-image" media="(device-width: 320px) and (device-height: 568px) and (-webkit-device-pixel-ratio: 2)" href="/assets/apple-touch-startup-image-640x1096.png"/><link rel="apple-touch-startup-image" media="(device-width: 375px) and (device-height: 667px) and (-webkit-device-pixel-ratio: 2)" href="/assets/apple-touch-startup-image-750x1294.png"/><link rel="apple-touch-startup-image" media="(device-width: 414px) and (device-height: 736px) and (orientation: landscape) and (-webkit-device-pixel-ratio: 3)" href="/assets/apple-touch-startup-image-1182x2208.png"/><link rel="apple-touch-startup-image" media="(device-width: 414px) and (device-height: 736px) and (orientation: portrait) and (-webkit-device-pixel-ratio: 3)" href="/assets/apple-touch-startup-image-1242x2148.png"/><link rel="apple-touch-startup-image" media="(device-width: 768px) and (device-height: 1024px) and (orientation: landscape) and (-webkit-device-pixel-ratio: 1)" href="/assets/apple-touch-startup-image-748x1024.png"/><link rel="apple-touch-startup-image" media="(device-width: 768px) and (device-height: 1024px) and (orientation: portrait) and (-webkit-device-pixel-ratio: 1)" href="/assets/apple-touch-startup-image-768x1004.png"/><link rel="apple-touch-startup-image" media="(device-width: 768px) and (device-height: 1024px) and (orientation: landscape) and (-webkit-device-pixel-ratio: 2)" href="/assets/apple-touch-startup-image-1496x2048.png"/><link rel="apple-touch-startup-image" media="(device-width: 768px) and (device-height: 1024px) and (orientation: portrait) and (-webkit-device-pixel-ratio: 2)" href="/assets/apple-touch-startup-image-1536x2008.png"/><link rel="icon" type="image/png" sizes="228x228" href="/assets/coast-228x228.png"/><link rel="yandex-tableau-widget" href="/assets/yandex-browser-manifest.json"/><script rel="preload" as="script" src="/app-config.js"></script><script rel="preload" as="script" type="module" src="/init-service-worker.js"></script><title>OHIF Viewer</title><link rel="preconnect" href="https://fonts.gstatic.com" crossorigin/><link href="https://fonts.googleapis.com/css?family=Inter:100,300,400,500,700&display=swap" rel="stylesheet" rel="preload" as="style"/><script defer="defer" src="/app.bundle.e18399dc0b54a4851b2d.js"></script><link href="/app.bundle.css" rel="stylesheet"></head><body><noscript>You need to enable JavaScript to run this app.</noscript><div id="root"></div></body></html>
|
package/dist/sw.js
CHANGED
|
@@ -51,7 +51,7 @@ self.addEventListener('message', event => {
|
|
|
51
51
|
}
|
|
52
52
|
}
|
|
53
53
|
});
|
|
54
|
-
workbox.precaching.precacheAndRoute([{'revision':null,'url':'/12.bundle.
|
|
54
|
+
workbox.precaching.precacheAndRoute([{'revision':null,'url':'/12.bundle.c3dc58d8dff2e83ce920.js'},{'revision':null,'url':'/125.bundle.253395f320b72180da63.js'},{'revision':null,'url':'/126.bundle.0ebe6d5227b3e9481532.js'},{'revision':null,'url':'/181.bundle.bce8ecb8af857b2513df.js'},{'revision':'8079c6447e119ba0680e8fab5875745d','url':'/181.css'},{'revision':null,'url':'/19.bundle.60717b06985980e0a237.js'},{'revision':'51b8ed55f5b8d448837222f03bdd6de8','url':'/19.css'},{'revision':null,'url':'/202.bundle.ec714227032b22d4fa24.js'},{'revision':null,'url':'/220.bundle.f7e1c96c94245e70f2be.js'},{'revision':null,'url':'/221.bundle.cf2ed62de0a9445c9239.js'},{'revision':'aa1d1f3e32367e42fe90399144d94577','url':'/221.css'},{'revision':null,'url':'/23.bundle.e008ad788170f2ed5569.js'},{'revision':null,'url':'/231.bundle.8aad229e39e23731d6c1.js'},{'revision':null,'url':'/236.bundle.19118b0e7881c6359804.js'},{'revision':null,'url':'/250.bundle.6ca102e0e62885294c23.js'},{'revision':'0afb25509c7f072fbd7eda42c6895dbf','url':'/250.css'},{'revision':null,'url':'/281.bundle.93c845676e4645263c8d.js'},{'revision':null,'url':'/359.bundle.94a407fdbfcb299f2dc2.js'},{'revision':'c4ea120c6da08aa75348edfa3e57ece9','url':'/36785fbd89b0e17f6099.wasm'},{'revision':null,'url':'/410.bundle.116f4a42e6b76e0a2bcb.js'},{'revision':null,'url':'/417.bundle.af0a207c29b109f84159.js'},{'revision':null,'url':'/451.bundle.57c21db5d003c75e9d61.js'},{'revision':null,'url':'/47.bundle.01d2751a9fd67b3d5390.js'},{'revision':null,'url':'/471.bundle.49c8d281adbae4a2c4df.js'},{'revision':null,'url':'/485.bundle.8667a696ac2eaf99e4fa.js'},{'revision':'c377e1f5fe4a207d270c3f7a8dd3e3ca','url':'/5004fdc02f329ce53b69.wasm'},{'revision':null,'url':'/506.bundle.20af254ec61a959452cc.js'},{'revision':null,'url':'/530.bundle.a03b6f942ace3e1baa1e.js'},{'revision':null,'url':'/563.bundle.4debceb80aee325eec86.js'},{'revision':null,'url':'/575.bundle.b400797624d717956cfb.js'},{'revision':'185e5e0a10fa6ab2fc7b3c38e63d550b','url':'/575.css'},{'revision':'51b8ed55f5b8d448837222f03bdd6de8','url':'/579.css'},{'revision':'62b4ae8445d191d5aab5503ce475724d','url':'/610.min.worker.js'},{'revision':'3c2206525c18cd87dd28082949a4e43e','url':'/610.min.worker.js.map'},{'revision':null,'url':'/613.bundle.59befe43e90034b4d879.js'},{'revision':'5800265b6831396572fb5d32c6bd8eef','url':'/62ab5d58a2bea7b5a1dc.wasm'},{'revision':'ce10eced3ce34e663d86569b27f5bffb','url':'/65916ef3def695744bda.wasm'},{'revision':null,'url':'/661.bundle.65dd579322b265c6e321.js'},{'revision':null,'url':'/663.bundle.eae1939c22b73ea4c29f.js'},{'revision':null,'url':'/686.bundle.dccef1f36e4bc79bcc48.js'},{'revision':null,'url':'/687.bundle.60a8d6ae5f913c189168.js'},{'revision':null,'url':'/738.bundle.e03f4127b014ff8ab5a5.js'},{'revision':'cf3e4d4fa8884275461c195421812256','url':'/75788f12450d4c5ed494.wasm'},{'revision':'cc4a3a4da4ac1b863a714f93c66c6ef2','url':'/75a0c2dfe07b824c7d21.wasm'},{'revision':null,'url':'/775.bundle.2285e7e0e67878948c0d.js'},{'revision':null,'url':'/788.bundle.57fbc328e3554d9f4659.js'},{'revision':null,'url':'/814.bundle.4b853464ad249a249029.js'},{'revision':null,'url':'/82.bundle.122d1b58bc3e22439dd9.js'},{'revision':null,'url':'/822.bundle.4f0424bd1dc0308bb489.js'},{'revision':null,'url':'/886.bundle.c8dd3ecc42a4253de278.js'},{'revision':'74c9647440e51f149ad12923d6ead952','url':'/945.min.worker.js'},{'revision':'cdf6f0457d4af2cef04fc41816241bc1','url':'/945.min.worker.js.map'},{'revision':'d1895aa7a4595dc279c382e5a31ef9f4','url':'/_headers'},{'revision':'e3bf0f3e9c34f51ad59836ae8e8eaf43','url':'/_redirects'},{'revision':'41bb4b36a914c2db5c383a627162b3da','url':'/app-config.js'},{'revision':'4d46bdc9a3d136c920e959eb85b0f5f7','url':'/app.bundle.css'},{'revision':null,'url':'/app.bundle.e18399dc0b54a4851b2d.js'},{'revision':'cb4f64534cdf8dd88f1d7219d44490db','url':'/assets/android-chrome-144x144.png'},{'revision':'5cde390de8a619ebe55a669d2ac3effd','url':'/assets/android-chrome-192x192.png'},{'revision':'e7466a67e90471de05401e53b8fe20be','url':'/assets/android-chrome-256x256.png'},{'revision':'9bbe9b80156e930d19a4e1725aa9ddae','url':'/assets/android-chrome-36x36.png'},{'revision':'5698b2ac0c82fe06d84521fc5482df04','url':'/assets/android-chrome-384x384.png'},{'revision':'56bef3fceec344d9747f8abe9c0bba27','url':'/assets/android-chrome-48x48.png'},{'revision':'3e8b8a01290992e82c242557417b0596','url':'/assets/android-chrome-512x512.png'},{'revision':'517925e91e2ce724432d296b687d25e2','url':'/assets/android-chrome-72x72.png'},{'revision':'4c3289bc690f8519012686888e08da71','url':'/assets/android-chrome-96x96.png'},{'revision':'cf464289183184df09292f581df0fb4f','url':'/assets/apple-touch-icon-1024x1024.png'},{'revision':'0857c5282c594e4900e8b31e3bade912','url':'/assets/apple-touch-icon-114x114.png'},{'revision':'4208f41a28130a67e9392a9dfcee6011','url':'/assets/apple-touch-icon-120x120.png'},{'revision':'cb4f64534cdf8dd88f1d7219d44490db','url':'/assets/apple-touch-icon-144x144.png'},{'revision':'977d293982af7e9064ba20806b45cf35','url':'/assets/apple-touch-icon-152x152.png'},{'revision':'6de91b4d2a30600b410758405cb567b4','url':'/assets/apple-touch-icon-167x167.png'},{'revision':'87bff140e3773bd7479a620501c4aa5c','url':'/assets/apple-touch-icon-180x180.png'},{'revision':'647386c34e75f1213830ea9a38913525','url':'/assets/apple-touch-icon-57x57.png'},{'revision':'0c200fe83953738b330ea431083e7a86','url':'/assets/apple-touch-icon-60x60.png'},{'revision':'517925e91e2ce724432d296b687d25e2','url':'/assets/apple-touch-icon-72x72.png'},{'revision':'c9989a807bb18633f6dcf254b5b56124','url':'/assets/apple-touch-icon-76x76.png'},{'revision':'87bff140e3773bd7479a620501c4aa5c','url':'/assets/apple-touch-icon-precomposed.png'},{'revision':'87bff140e3773bd7479a620501c4aa5c','url':'/assets/apple-touch-icon.png'},{'revision':'05fa74ea9c1c0c3931ba96467999081d','url':'/assets/apple-touch-startup-image-1182x2208.png'},{'revision':'9e2cd03e1e6fd0520eea6846f4278018','url':'/assets/apple-touch-startup-image-1242x2148.png'},{'revision':'5591e3a1822cbc8439b99c1a40d53425','url':'/assets/apple-touch-startup-image-1496x2048.png'},{'revision':'337de578c5ca04bd7d2be19d24d83821','url':'/assets/apple-touch-startup-image-1536x2008.png'},{'revision':'cafb4ab4eafe6ef946bd229a1d88e7de','url':'/assets/apple-touch-startup-image-320x460.png'},{'revision':'d9bb9e558d729eeac5efb8be8d6111cc','url':'/assets/apple-touch-startup-image-640x1096.png'},{'revision':'038b5b02bac8b82444bf9a87602ac216','url':'/assets/apple-touch-startup-image-640x920.png'},{'revision':'2177076eb07b1d64d663d7c03268be00','url':'/assets/apple-touch-startup-image-748x1024.png'},{'revision':'4fc097443815fe92503584c4bd73c630','url':'/assets/apple-touch-startup-image-750x1294.png'},{'revision':'2e29914062dce5c5141ab47eea2fc5d9','url':'/assets/apple-touch-startup-image-768x1004.png'},{'revision':'f692ec286b3a332c17985f4ed38b1076','url':'/assets/browserconfig.xml'},{'revision':'f3d9a3b647853c45b0e132e4acd0cc4a','url':'/assets/coast-228x228.png'},{'revision':'ad6e1def5c66193d649a31474bbfe45d','url':'/assets/favicon-16x16.png'},{'revision':'84d1dcdb6cdfa55e2f46be0c80fa5698','url':'/assets/favicon-32x32.png'},{'revision':'95fb44c4998a46109e49d724c060db24','url':'/assets/favicon.ico'},{'revision':'5df2a5b0cee399ac0bc40af74ba3c2cb','url':'/assets/firefox_app_128x128.png'},{'revision':'11fd9098c4b07c8a07e1d2a1e309e046','url':'/assets/firefox_app_512x512.png'},{'revision':'27cddfc922dca3bfa27b4a00fc2f5e36','url':'/assets/firefox_app_60x60.png'},{'revision':'2017d95fae79dcf34b5a5b52586d4763','url':'/assets/manifest.webapp'},{'revision':'cb4f64534cdf8dd88f1d7219d44490db','url':'/assets/mstile-144x144.png'},{'revision':'334895225e16a7777e45d81964725a97','url':'/assets/mstile-150x150.png'},{'revision':'e295cca4af6ed0365cf7b014d91b0e9d','url':'/assets/mstile-310x150.png'},{'revision':'cbefa8c42250e5f2443819fe2c69d91e','url':'/assets/mstile-310x310.png'},{'revision':'aa411a69df2b33a1362fa38d1257fa9d','url':'/assets/mstile-70x70.png'},{'revision':'5609af4f69e40e33471aee770ea1d802','url':'/assets/yandex-browser-50x50.png'},{'revision':'dd001f21b3970d5a7f3e245cc10d21df','url':'/assets/yandex-browser-manifest.json'},{'revision':'52b9a07fe0541fe8c313d9788550bf51','url':'/b6b803111e2d06a825bd.wasm'},{'revision':'7edb59d2be7c993050cb31ded36afa31','url':'/c22b37c3488e1d6c3aa4.wasm'},{'revision':'fc2da6ec5d17fa844b0a9d67a8b39b21','url':'/cornerstoneDICOMImageLoader.min.js'},{'revision':'59eb3dc6754e4d494b27c774ba53255c','url':'/cornerstoneDICOMImageLoader.min.js.map'},{'revision':null,'url':'/dicom-microscopy-viewer.bundle.2c146384eb9466d02ff8.js'},{'revision':'9d8c85b42d04bb117a3b583d654fbb08','url':'/dicomMicroscopyViewer.min.js'},{'revision':'450494c199cf8dd8e8c34d5e98bf5334','url':'/dicomMicroscopyViewer.min.js.LICENSE.txt'},{'revision':'4acdd19a35d759ec2669f1ba9490937d','url':'/es6-shim.min.js'},{'revision':'791565db341e8852807303918f5f9939','url':'/google.js'},{'revision':'d659bd5af3e03b9186d66484e0fc431e','url':'/index.html'},{'revision':'feee2d4ed9d00c64f0e4d6a46608fecf','url':'/index.worker.e62ecca63f1a2e124230.worker.js'},{'revision':'beaf37c564436e46bbcd825f0330cdbf','url':'/index.worker.e62ecca63f1a2e124230.worker.js.map'},{'revision':'71cec55513e051f0778ad89be760c11a','url':'/index.worker.min.worker.js'},{'revision':'fd1116add443fee52a935df926396e0f','url':'/index.worker.min.worker.js.map'},{'revision':'31c0367ca4160b2c6373e905739c5719','url':'/init-service-worker.js'},{'revision':'74fc9658b62903be2048c1f82a22b4d4','url':'/manifest.json'},{'revision':'3fa71aa0af3e34b4ebd9a71eee0f4bdd','url':'/ohif-logo-light.svg'},{'revision':'7e81da785c63e75650101db6c5d7560e','url':'/ohif-logo.svg'},{'revision':'eadf8bf1d85032a029e2c0df4b8938b0','url':'/oidc-client.min.js'},{'revision':'a1aef5311245f5864315443d12246c37','url':'/polyfill.min.js'},{'revision':'b1e488d9955b62bd2858874df11d5223','url':'/silent-refresh.html'}]);
|
|
55
55
|
|
|
56
56
|
// TODO: Cache API
|
|
57
57
|
// https://developers.google.com/web/fundamentals/instant-and-offline/web-storage/cache-api
|