@ohif/app 3.9.0-beta.23 → 3.9.0-beta.25

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.
Files changed (32) hide show
  1. package/dist/{117.bundle.772ce244eee25d9b7316.js → 117.bundle.ba41cf7978afb629dcff.js} +16 -3
  2. package/dist/{164.bundle.3221590f5e6855086889.js → 164.bundle.79cc35bc3e6b792636cd.js} +16 -3
  3. package/dist/{236.bundle.d3a631d79ee8952e3c60.js → 236.bundle.343bcd0be60d0ae61901.js} +8 -1
  4. package/dist/{363.bundle.7dd957eeb0177cdb808c.js → 363.bundle.5cb502c3332360678f5c.js} +88 -91
  5. package/dist/{370.bundle.baa389d217c390b0e92b.js → 370.bundle.02108fbb881fbe75b59c.js} +1 -1
  6. package/dist/{461.bundle.b44727b0b162f4b10b5e.js → 461.bundle.f8616212d433f5a2dc2e.js} +2 -2
  7. package/dist/{501.bundle.7d5003758fa3ffbb344b.js → 501.bundle.3dcc63f03d9c252a9bee.js} +135 -65
  8. package/dist/{717.bundle.06a976a9200c0c4fa395.js → 717.bundle.cbdf952e4ee65e11a893.js} +16 -7
  9. package/dist/{app.bundle.cf75c45a89282dfe58a9.js → app.bundle.8ee8d8f9bc73c9611cbe.js} +149 -73
  10. package/dist/cornerstoneDICOMImageLoader.min.js +1 -1
  11. package/dist/cornerstoneDICOMImageLoader.min.js.map +1 -1
  12. package/dist/index.html +1 -1
  13. package/dist/{polySeg.bundle.b0392069f29e128b4efa.js → polySeg.bundle.cc8400971fca41347b25.js} +1 -1
  14. package/dist/{suv-peak-worker.bundle.8a7a3a0ab00929f3f6fd.js → suv-peak-worker.bundle.59ea76ac47db7a736234.js} +1 -1
  15. package/dist/sw.js +1 -1
  16. package/package.json +19 -19
  17. /package/dist/{121.bundle.0772f52e6bec8eb92dfa.js → 121.bundle.a6b56c0f71b118cbc968.js} +0 -0
  18. /package/dist/{129.bundle.4dd38a22e6d9f79d834e.js → 129.bundle.6b1da740bdbb6aa2f79b.js} +0 -0
  19. /package/dist/{14.bundle.4aa15daa6d5a84f58826.js → 14.bundle.5a19903d4093178680ac.js} +0 -0
  20. /package/dist/{140.bundle.70e79ec0e0d41b05b09d.js → 140.bundle.d9e775c2154d2c07737b.js} +0 -0
  21. /package/dist/{194.bundle.179e4233aeb2ea81728a.js → 194.bundle.4134f419487af7c36f88.js} +0 -0
  22. /package/dist/{211.bundle.56463a11e29c6304c2f9.js → 211.bundle.5d9fbf4fc72720d8b7d6.js} +0 -0
  23. /package/dist/{218.bundle.e495b3659417ef205b05.js → 218.bundle.5e36a053adb7726b84b9.js} +0 -0
  24. /package/dist/{382.bundle.4c3a26805bb21e47a701.js → 382.bundle.f2d45210d14bc2ea8954.js} +0 -0
  25. /package/dist/{444.bundle.dc50143843f2284792b2.js → 444.bundle.6672b9db197783dfda0a.js} +0 -0
  26. /package/dist/{552.bundle.64b1b393ef9ac41329ad.js → 552.bundle.10814ae6ca362abf5690.js} +0 -0
  27. /package/dist/{555.bundle.4c85d276f397d7f1fb4d.js → 555.bundle.853f178654ae3a2b711e.js} +0 -0
  28. /package/dist/{799.bundle.1e13a8cb94b834736230.js → 799.bundle.c183ef90be837d35b4e1.js} +0 -0
  29. /package/dist/{806.bundle.9bcf6087464cfced7555.js → 806.bundle.e9abca59699a6c17b225.js} +0 -0
  30. /package/dist/{853.bundle.b36c9d4b53215b761167.js → 853.bundle.0134f2684ca8feafe6b9.js} +0 -0
  31. /package/dist/{920.bundle.69dd8ef2300c1d97fe2c.js → 920.bundle.7ceaea855550a98070ff.js} +0 -0
  32. /package/dist/{989.bundle.84fdab7bf00463e08e18.js → 989.bundle.45acbd78a5e38cc1610d.js} +0 -0
@@ -959,12 +959,12 @@ const Length = {
959
959
  SOPInstanceUID,
960
960
  SeriesInstanceUID,
961
961
  StudyInstanceUID
962
- } = (0,getSOPInstanceAttributes/* default */.A)(referencedImageId, cornerstoneViewportService, viewportId);
962
+ } = (0,getSOPInstanceAttributes/* default */.A)(referencedImageId, displaySetService, annotation);
963
963
  let displaySet;
964
964
  if (SOPInstanceUID) {
965
965
  displaySet = displaySetService.getDisplaySetForSOPInstanceUID(SOPInstanceUID, SeriesInstanceUID);
966
966
  } else {
967
- displaySet = displaySetService.getDisplaySetsForSeries(SeriesInstanceUID);
967
+ displaySet = displaySetService.getDisplaySetsForSeries(SeriesInstanceUID)[0];
968
968
  }
969
969
  const {
970
970
  points,
@@ -982,6 +982,7 @@ const Length = {
982
982
  metadata,
983
983
  referenceSeriesUID: SeriesInstanceUID,
984
984
  referenceStudyUID: StudyInstanceUID,
985
+ referencedImageId,
985
986
  frameNumber: mappedAnnotations[0]?.frameNumber || 1,
986
987
  toolName: metadata.toolName,
987
988
  displaySetInstanceUID: displaySet.displaySetInstanceUID,
@@ -1011,15 +1012,12 @@ function getMappedAnnotations(annotation, displaySetService) {
1011
1012
  const annotations = [];
1012
1013
  Object.keys(cachedStats).forEach(targetId => {
1013
1014
  const targetStats = cachedStats[targetId];
1014
- if (!referencedImageId) {
1015
- throw new Error('Non-acquisition plane measurement mapping not supported');
1016
- }
1017
1015
  const {
1018
1016
  SOPInstanceUID,
1019
1017
  SeriesInstanceUID,
1020
1018
  frameNumber
1021
- } = (0,getSOPInstanceAttributes/* default */.A)(referencedImageId);
1022
- const displaySet = displaySetService.getDisplaySetForSOPInstanceUID(SOPInstanceUID, SeriesInstanceUID, frameNumber);
1019
+ } = (0,getSOPInstanceAttributes/* default */.A)(referencedImageId, displaySetService, annotation);
1020
+ const displaySet = displaySetService.getDisplaySetsForSeries(SeriesInstanceUID)[0];
1023
1021
  const {
1024
1022
  SeriesNumber
1025
1023
  } = displaySet;
@@ -1198,12 +1196,12 @@ const Bidirectional = {
1198
1196
  SOPInstanceUID,
1199
1197
  SeriesInstanceUID,
1200
1198
  StudyInstanceUID
1201
- } = (0,getSOPInstanceAttributes/* default */.A)(referencedImageId, cornerstoneViewportService, viewportId);
1199
+ } = (0,getSOPInstanceAttributes/* default */.A)(referencedImageId, displaySetService, annotation);
1202
1200
  let displaySet;
1203
1201
  if (SOPInstanceUID) {
1204
1202
  displaySet = displaySetService.getDisplaySetForSOPInstanceUID(SOPInstanceUID, SeriesInstanceUID);
1205
1203
  } else {
1206
- displaySet = displaySetService.getDisplaySetsForSeries(SeriesInstanceUID);
1204
+ displaySet = displaySetService.getDisplaySetsForSeries(SeriesInstanceUID)[0];
1207
1205
  }
1208
1206
  const {
1209
1207
  points,
@@ -1221,6 +1219,7 @@ const Bidirectional = {
1221
1219
  metadata,
1222
1220
  referenceSeriesUID: SeriesInstanceUID,
1223
1221
  referenceStudyUID: StudyInstanceUID,
1222
+ referencedImageId,
1224
1223
  frameNumber: mappedAnnotations[0]?.frameNumber || 1,
1225
1224
  toolName: metadata.toolName,
1226
1225
  displaySetInstanceUID: displaySet.displaySetInstanceUID,
@@ -1251,15 +1250,12 @@ function Bidirectional_getMappedAnnotations(annotation, displaySetService) {
1251
1250
  const annotations = [];
1252
1251
  Object.keys(cachedStats).forEach(targetId => {
1253
1252
  const targetStats = cachedStats[targetId];
1254
- if (!referencedImageId) {
1255
- throw new Error('Non-acquisition plane measurement mapping not supported');
1256
- }
1257
1253
  const {
1258
1254
  SOPInstanceUID,
1259
1255
  SeriesInstanceUID,
1260
1256
  frameNumber
1261
- } = (0,getSOPInstanceAttributes/* default */.A)(referencedImageId);
1262
- const displaySet = displaySetService.getDisplaySetForSOPInstanceUID(SOPInstanceUID, SeriesInstanceUID, frameNumber);
1257
+ } = (0,getSOPInstanceAttributes/* default */.A)(referencedImageId, displaySetService, annotation);
1258
+ const displaySet = displaySetService.getDisplaySetsForSeries(SeriesInstanceUID)[0];
1263
1259
  const {
1264
1260
  SeriesNumber
1265
1261
  } = displaySet;
@@ -1393,12 +1389,12 @@ const EllipticalROI = {
1393
1389
  SOPInstanceUID,
1394
1390
  SeriesInstanceUID,
1395
1391
  StudyInstanceUID
1396
- } = (0,getSOPInstanceAttributes/* default */.A)(referencedImageId, cornerstoneViewportService, viewportId);
1392
+ } = (0,getSOPInstanceAttributes/* default */.A)(referencedImageId, displaySetService, annotation);
1397
1393
  let displaySet;
1398
1394
  if (SOPInstanceUID) {
1399
1395
  displaySet = displaySetService.getDisplaySetForSOPInstanceUID(SOPInstanceUID, SeriesInstanceUID);
1400
1396
  } else {
1401
- displaySet = displaySetService.getDisplaySetsForSeries(SeriesInstanceUID);
1397
+ displaySet = displaySetService.getDisplaySetsForSeries(SeriesInstanceUID)[0];
1402
1398
  }
1403
1399
  const {
1404
1400
  points,
@@ -1416,6 +1412,7 @@ const EllipticalROI = {
1416
1412
  metadata,
1417
1413
  referenceSeriesUID: SeriesInstanceUID,
1418
1414
  referenceStudyUID: StudyInstanceUID,
1415
+ referencedImageId,
1419
1416
  frameNumber: mappedAnnotations[0]?.frameNumber || 1,
1420
1417
  toolName: metadata.toolName,
1421
1418
  displaySetInstanceUID: displaySet.displaySetInstanceUID,
@@ -1445,16 +1442,12 @@ function EllipticalROI_getMappedAnnotations(annotation, displaySetService) {
1445
1442
  const annotations = [];
1446
1443
  Object.keys(cachedStats).forEach(targetId => {
1447
1444
  const targetStats = cachedStats[targetId];
1448
- if (!referencedImageId) {
1449
- // Todo: Non-acquisition plane measurement mapping not supported yet
1450
- throw new Error('Non-acquisition plane measurement mapping not supported');
1451
- }
1452
1445
  const {
1453
1446
  SOPInstanceUID,
1454
1447
  SeriesInstanceUID,
1455
1448
  frameNumber
1456
- } = (0,getSOPInstanceAttributes/* default */.A)(referencedImageId);
1457
- const displaySet = displaySetService.getDisplaySetForSOPInstanceUID(SOPInstanceUID, SeriesInstanceUID, frameNumber);
1449
+ } = (0,getSOPInstanceAttributes/* default */.A)(referencedImageId, displaySetService, annotation);
1450
+ const displaySet = displaySetService.getDisplaySetsForSeries(SeriesInstanceUID)[0];
1458
1451
  const {
1459
1452
  SeriesNumber
1460
1453
  } = displaySet;
@@ -1574,7 +1567,7 @@ function EllipticalROI_getDisplayText(mappedAnnotations, displaySet, customizati
1574
1567
 
1575
1568
  const CircleROI = {
1576
1569
  toAnnotation: measurement => {},
1577
- toMeasurement: (csToolsEventDetail, DisplaySetService, CornerstoneViewportService, getValueTypeFromToolType, customizationService) => {
1570
+ toMeasurement: (csToolsEventDetail, displaySetService, CornerstoneViewportService, getValueTypeFromToolType, customizationService) => {
1578
1571
  const {
1579
1572
  annotation,
1580
1573
  viewportId
@@ -1601,18 +1594,18 @@ const CircleROI = {
1601
1594
  SOPInstanceUID,
1602
1595
  SeriesInstanceUID,
1603
1596
  StudyInstanceUID
1604
- } = (0,getSOPInstanceAttributes/* default */.A)(referencedImageId, CornerstoneViewportService, viewportId);
1597
+ } = (0,getSOPInstanceAttributes/* default */.A)(referencedImageId, displaySetService, annotation);
1605
1598
  let displaySet;
1606
1599
  if (SOPInstanceUID) {
1607
- displaySet = DisplaySetService.getDisplaySetForSOPInstanceUID(SOPInstanceUID, SeriesInstanceUID);
1600
+ displaySet = displaySetService.getDisplaySetForSOPInstanceUID(SOPInstanceUID, SeriesInstanceUID);
1608
1601
  } else {
1609
- displaySet = DisplaySetService.getDisplaySetsForSeries(SeriesInstanceUID);
1602
+ displaySet = displaySetService.getDisplaySetsForSeries(SeriesInstanceUID)[0];
1610
1603
  }
1611
1604
  const {
1612
1605
  points,
1613
1606
  textBox
1614
1607
  } = data.handles;
1615
- const mappedAnnotations = CircleROI_getMappedAnnotations(annotation, DisplaySetService);
1608
+ const mappedAnnotations = CircleROI_getMappedAnnotations(annotation, displaySetService);
1616
1609
  const displayText = CircleROI_getDisplayText(mappedAnnotations, displaySet, customizationService);
1617
1610
  const getReport = () => CircleROI_getReport(mappedAnnotations, points, FrameOfReferenceUID, customizationService);
1618
1611
  return {
@@ -1624,6 +1617,7 @@ const CircleROI = {
1624
1617
  metadata,
1625
1618
  referenceSeriesUID: SeriesInstanceUID,
1626
1619
  referenceStudyUID: StudyInstanceUID,
1620
+ referencedImageId,
1627
1621
  frameNumber: mappedAnnotations[0]?.frameNumber || 1,
1628
1622
  toolName: metadata.toolName,
1629
1623
  displaySetInstanceUID: displaySet.displaySetInstanceUID,
@@ -1635,7 +1629,7 @@ const CircleROI = {
1635
1629
  };
1636
1630
  }
1637
1631
  };
1638
- function CircleROI_getMappedAnnotations(annotation, DisplaySetService) {
1632
+ function CircleROI_getMappedAnnotations(annotation, displaySetService) {
1639
1633
  const {
1640
1634
  metadata,
1641
1635
  data
@@ -1653,16 +1647,12 @@ function CircleROI_getMappedAnnotations(annotation, DisplaySetService) {
1653
1647
  const annotations = [];
1654
1648
  Object.keys(cachedStats).forEach(targetId => {
1655
1649
  const targetStats = cachedStats[targetId];
1656
- if (!referencedImageId) {
1657
- // Todo: Non-acquisition plane measurement mapping not supported yet
1658
- throw new Error('Non-acquisition plane measurement mapping not supported');
1659
- }
1660
1650
  const {
1661
1651
  SOPInstanceUID,
1662
1652
  SeriesInstanceUID,
1663
1653
  frameNumber
1664
- } = (0,getSOPInstanceAttributes/* default */.A)(referencedImageId);
1665
- const displaySet = DisplaySetService.getDisplaySetForSOPInstanceUID(SOPInstanceUID, SeriesInstanceUID, frameNumber);
1654
+ } = (0,getSOPInstanceAttributes/* default */.A)(referencedImageId, displaySetService, annotation);
1655
+ const displaySet = displaySetService.getDisplaySetsForSeries(SeriesInstanceUID)[0];
1666
1656
  const {
1667
1657
  SeriesNumber
1668
1658
  } = displaySet;
@@ -1814,12 +1804,12 @@ const ArrowAnnotate_Length = {
1814
1804
  SOPInstanceUID,
1815
1805
  SeriesInstanceUID,
1816
1806
  StudyInstanceUID
1817
- } = (0,getSOPInstanceAttributes/* default */.A)(referencedImageId, cornerstoneViewportService, viewportId);
1807
+ } = (0,getSOPInstanceAttributes/* default */.A)(referencedImageId, displaySetService, annotation);
1818
1808
  let displaySet;
1819
1809
  if (SOPInstanceUID) {
1820
1810
  displaySet = displaySetService.getDisplaySetForSOPInstanceUID(SOPInstanceUID, SeriesInstanceUID);
1821
1811
  } else {
1822
- displaySet = displaySetService.getDisplaySetsForSeries(SeriesInstanceUID);
1812
+ displaySet = displaySetService.getDisplaySetsForSeries(SeriesInstanceUID)[0];
1823
1813
  }
1824
1814
  const {
1825
1815
  points,
@@ -1836,6 +1826,7 @@ const ArrowAnnotate_Length = {
1836
1826
  metadata,
1837
1827
  referenceSeriesUID: SeriesInstanceUID,
1838
1828
  referenceStudyUID: StudyInstanceUID,
1829
+ referencedImageId,
1839
1830
  frameNumber: mappedAnnotations[0]?.frameNumber || 1,
1840
1831
  toolName: metadata.toolName,
1841
1832
  displaySetInstanceUID: displaySet.displaySetInstanceUID,
@@ -1865,8 +1856,8 @@ function ArrowAnnotate_getMappedAnnotations(annotation, displaySetService) {
1865
1856
  SOPInstanceUID,
1866
1857
  SeriesInstanceUID,
1867
1858
  frameNumber
1868
- } = (0,getSOPInstanceAttributes/* default */.A)(referencedImageId);
1869
- const displaySet = displaySetService.getDisplaySetForSOPInstanceUID(SOPInstanceUID, SeriesInstanceUID, frameNumber);
1859
+ } = (0,getSOPInstanceAttributes/* default */.A)(referencedImageId, displaySetService, annotation);
1860
+ const displaySet = displaySetService.getDisplaySetsForSeries(SeriesInstanceUID)[0];
1870
1861
  const {
1871
1862
  SeriesNumber
1872
1863
  } = displaySet;
@@ -1942,12 +1933,12 @@ const CobbAngle = {
1942
1933
  SOPInstanceUID,
1943
1934
  SeriesInstanceUID,
1944
1935
  StudyInstanceUID
1945
- } = (0,getSOPInstanceAttributes/* default */.A)(referencedImageId, CornerstoneViewportService, viewportId);
1936
+ } = (0,getSOPInstanceAttributes/* default */.A)(referencedImageId, displaySetService, annotation);
1946
1937
  let displaySet;
1947
1938
  if (SOPInstanceUID) {
1948
1939
  displaySet = displaySetService.getDisplaySetForSOPInstanceUID(SOPInstanceUID, SeriesInstanceUID);
1949
1940
  } else {
1950
- displaySet = displaySetService.getDisplaySetsForSeries(SeriesInstanceUID);
1941
+ displaySet = displaySetService.getDisplaySetsForSeries(SeriesInstanceUID)[0];
1951
1942
  }
1952
1943
  const {
1953
1944
  points,
@@ -1965,6 +1956,7 @@ const CobbAngle = {
1965
1956
  metadata,
1966
1957
  referenceSeriesUID: SeriesInstanceUID,
1967
1958
  referenceStudyUID: StudyInstanceUID,
1959
+ referencedImageId,
1968
1960
  frameNumber: mappedAnnotations?.[0]?.frameNumber || 1,
1969
1961
  toolName: metadata.toolName,
1970
1962
  displaySetInstanceUID: displaySet.displaySetInstanceUID,
@@ -1976,7 +1968,7 @@ const CobbAngle = {
1976
1968
  };
1977
1969
  }
1978
1970
  };
1979
- function CobbAngle_getMappedAnnotations(annotation, DisplaySetService) {
1971
+ function CobbAngle_getMappedAnnotations(annotation, displaySetService) {
1980
1972
  const {
1981
1973
  metadata,
1982
1974
  data
@@ -1994,15 +1986,12 @@ function CobbAngle_getMappedAnnotations(annotation, DisplaySetService) {
1994
1986
  const annotations = [];
1995
1987
  Object.keys(cachedStats).forEach(targetId => {
1996
1988
  const targetStats = cachedStats[targetId];
1997
- if (!referencedImageId) {
1998
- throw new Error('Non-acquisition plane measurement mapping not supported');
1999
- }
2000
1989
  const {
2001
1990
  SOPInstanceUID,
2002
1991
  SeriesInstanceUID,
2003
1992
  frameNumber
2004
- } = (0,getSOPInstanceAttributes/* default */.A)(referencedImageId);
2005
- const displaySet = DisplaySetService.getDisplaySetForSOPInstanceUID(SOPInstanceUID, SeriesInstanceUID, frameNumber);
1993
+ } = (0,getSOPInstanceAttributes/* default */.A)(referencedImageId, displaySetService, annotation);
1994
+ const displaySet = displaySetService.getDisplaySetsForSeries(SeriesInstanceUID)[0];
2006
1995
  const {
2007
1996
  SeriesNumber
2008
1997
  } = displaySet;
@@ -2127,12 +2116,12 @@ const Angle = {
2127
2116
  SOPInstanceUID,
2128
2117
  SeriesInstanceUID,
2129
2118
  StudyInstanceUID
2130
- } = (0,getSOPInstanceAttributes/* default */.A)(referencedImageId, CornerstoneViewportService, viewportId);
2119
+ } = (0,getSOPInstanceAttributes/* default */.A)(referencedImageId, displaySetService, annotation);
2131
2120
  let displaySet;
2132
2121
  if (SOPInstanceUID) {
2133
2122
  displaySet = displaySetService.getDisplaySetForSOPInstanceUID(SOPInstanceUID, SeriesInstanceUID);
2134
2123
  } else {
2135
- displaySet = displaySetService.getDisplaySetsForSeries(SeriesInstanceUID);
2124
+ displaySet = displaySetService.getDisplaySetsForSeries(SeriesInstanceUID)[0];
2136
2125
  }
2137
2126
  const {
2138
2127
  points,
@@ -2157,11 +2146,12 @@ const Angle = {
2157
2146
  displayText: displayText,
2158
2147
  data: data.cachedStats,
2159
2148
  type: getValueTypeFromToolType(toolName),
2160
- getReport
2149
+ getReport,
2150
+ referencedImageId
2161
2151
  };
2162
2152
  }
2163
2153
  };
2164
- function Angle_getMappedAnnotations(annotation, DisplaySetService) {
2154
+ function Angle_getMappedAnnotations(annotation, displaySetService) {
2165
2155
  const {
2166
2156
  metadata,
2167
2157
  data
@@ -2179,15 +2169,12 @@ function Angle_getMappedAnnotations(annotation, DisplaySetService) {
2179
2169
  const annotations = [];
2180
2170
  Object.keys(cachedStats).forEach(targetId => {
2181
2171
  const targetStats = cachedStats[targetId];
2182
- if (!referencedImageId) {
2183
- throw new Error('Non-acquisition plane measurement mapping not supported');
2184
- }
2185
2172
  const {
2186
2173
  SOPInstanceUID,
2187
2174
  SeriesInstanceUID,
2188
2175
  frameNumber
2189
- } = (0,getSOPInstanceAttributes/* default */.A)(referencedImageId);
2190
- const displaySet = DisplaySetService.getDisplaySetForSOPInstanceUID(SOPInstanceUID, SeriesInstanceUID, frameNumber);
2176
+ } = (0,getSOPInstanceAttributes/* default */.A)(referencedImageId, displaySetService, annotation);
2177
+ const displaySet = displaySetService.getDisplaySetsForSeries(SeriesInstanceUID)[0];
2191
2178
  const {
2192
2179
  SeriesNumber
2193
2180
  } = displaySet;
@@ -2291,7 +2278,7 @@ const PlanarFreehandROI = {
2291
2278
  * @param {Function} getValueTypeFromToolType Function to get value type from tool type
2292
2279
  * @returns {Measurement} Measurement instance
2293
2280
  */
2294
- toMeasurement: (csToolsEventDetail, DisplaySetService, CornerstoneViewportService, getValueTypeFromToolType, customizationService) => {
2281
+ toMeasurement: (csToolsEventDetail, displaySetService, CornerstoneViewportService, getValueTypeFromToolType, customizationService) => {
2295
2282
  const {
2296
2283
  annotation
2297
2284
  } = csToolsEventDetail;
@@ -2318,12 +2305,12 @@ const PlanarFreehandROI = {
2318
2305
  SeriesInstanceUID,
2319
2306
  frameNumber,
2320
2307
  StudyInstanceUID
2321
- } = (0,getSOPInstanceAttributes/* default */.A)(referencedImageId);
2308
+ } = (0,getSOPInstanceAttributes/* default */.A)(referencedImageId, displaySetService, annotation);
2322
2309
  let displaySet;
2323
2310
  if (SOPInstanceUID) {
2324
- displaySet = DisplaySetService.getDisplaySetForSOPInstanceUID(SOPInstanceUID, SeriesInstanceUID);
2311
+ displaySet = displaySetService.getDisplaySetForSOPInstanceUID(SOPInstanceUID, SeriesInstanceUID);
2325
2312
  } else {
2326
- displaySet = DisplaySetService.getDisplaySetsForSeries(SeriesInstanceUID);
2313
+ displaySet = displaySetService.getDisplaySetsForSeries(SeriesInstanceUID)[0];
2327
2314
  }
2328
2315
  return {
2329
2316
  uid: annotationUID,
@@ -2335,10 +2322,11 @@ const PlanarFreehandROI = {
2335
2322
  frameNumber,
2336
2323
  referenceSeriesUID: SeriesInstanceUID,
2337
2324
  referenceStudyUID: StudyInstanceUID,
2325
+ referencedImageId,
2338
2326
  toolName: metadata.toolName,
2339
2327
  displaySetInstanceUID: displaySet.displaySetInstanceUID,
2340
2328
  label: data.label,
2341
- displayText: PlanarFreehandROI_getDisplayText(annotation, displaySet, customizationService),
2329
+ displayText: PlanarFreehandROI_getDisplayText(annotation, displaySet, customizationService, displaySetService),
2342
2330
  data: data.cachedStats,
2343
2331
  type: getValueTypeFromToolType(toolName),
2344
2332
  getReport: () => getColumnValueReport(annotation, customizationService)
@@ -2406,7 +2394,7 @@ function getColumnValueReport(annotation, customizationService) {
2406
2394
  * @param {Object} displaySet - The display set object.
2407
2395
  * @returns {string[]} - An array of display text.
2408
2396
  */
2409
- function PlanarFreehandROI_getDisplayText(annotation, displaySet, customizationService) {
2397
+ function PlanarFreehandROI_getDisplayText(annotation, displaySet, customizationService, displaySetService) {
2410
2398
  const {
2411
2399
  PlanarFreehandROI
2412
2400
  } = customizationService.get('cornerstone.measurements');
@@ -2417,13 +2405,10 @@ function PlanarFreehandROI_getDisplayText(annotation, displaySet, customizationS
2417
2405
  metadata,
2418
2406
  data
2419
2407
  } = annotation;
2420
- if (!data.cachedStats || !data.cachedStats[`imageId:${metadata.referencedImageId}`]) {
2421
- return [];
2422
- }
2423
2408
  const {
2424
2409
  SOPInstanceUID,
2425
2410
  frameNumber
2426
- } = (0,getSOPInstanceAttributes/* default */.A)(metadata.referencedImageId);
2411
+ } = (0,getSOPInstanceAttributes/* default */.A)(metadata.referencedImageId, displaySetService, annotation);
2427
2412
  const displayTextArray = [];
2428
2413
  const instance = displaySet.images.find(image => image.SOPInstanceUID === SOPInstanceUID);
2429
2414
  let InstanceNumber;
@@ -2438,17 +2423,20 @@ function PlanarFreehandROI_getDisplayText(annotation, displaySet, customizationS
2438
2423
  if (SeriesNumber) {
2439
2424
  displayTextArray.push(`S: ${SeriesNumber}${instanceText}${frameText}`);
2440
2425
  }
2441
- const stats = data.cachedStats[`imageId:${metadata.referencedImageId}`];
2426
+ const stats = data.cachedStats[`imageId:${metadata.referencedImageId}`] || Array.from(Object.values(data.cachedStats))[0];
2427
+ if (!stats) {
2428
+ return displayTextArray;
2429
+ }
2442
2430
  const roundValues = values => {
2443
2431
  if (Array.isArray(values)) {
2444
2432
  return values.map(value => {
2445
2433
  if (isNaN(value)) {
2446
2434
  return value;
2447
2435
  }
2448
- return src.utils.roundNumber(value);
2436
+ return src.utils.roundNumber(value, 2);
2449
2437
  });
2450
2438
  }
2451
- return isNaN(values) ? values : src.utils.roundNumber(values);
2439
+ return isNaN(values) ? values : src.utils.roundNumber(values, 2);
2452
2440
  };
2453
2441
  const findUnitForValue = (displayTextItems, value) => displayTextItems.find(({
2454
2442
  type,
@@ -2477,7 +2465,7 @@ function PlanarFreehandROI_getDisplayText(annotation, displaySet, customizationS
2477
2465
 
2478
2466
  const RectangleROI = {
2479
2467
  toAnnotation: measurement => {},
2480
- toMeasurement: (csToolsEventDetail, DisplaySetService, CornerstoneViewportService, getValueTypeFromToolType, customizationService) => {
2468
+ toMeasurement: (csToolsEventDetail, displaySetService, CornerstoneViewportService, getValueTypeFromToolType, customizationService) => {
2481
2469
  const {
2482
2470
  annotation,
2483
2471
  viewportId
@@ -2504,18 +2492,18 @@ const RectangleROI = {
2504
2492
  SOPInstanceUID,
2505
2493
  SeriesInstanceUID,
2506
2494
  StudyInstanceUID
2507
- } = (0,getSOPInstanceAttributes/* default */.A)(referencedImageId, CornerstoneViewportService, viewportId);
2495
+ } = (0,getSOPInstanceAttributes/* default */.A)(referencedImageId, displaySetService, annotation);
2508
2496
  let displaySet;
2509
2497
  if (SOPInstanceUID) {
2510
- displaySet = DisplaySetService.getDisplaySetForSOPInstanceUID(SOPInstanceUID, SeriesInstanceUID);
2498
+ displaySet = displaySetService.getDisplaySetForSOPInstanceUID(SOPInstanceUID, SeriesInstanceUID);
2511
2499
  } else {
2512
- displaySet = DisplaySetService.getDisplaySetsForSeries(SeriesInstanceUID);
2500
+ displaySet = displaySetService.getDisplaySetsForSeries(SeriesInstanceUID)[0];
2513
2501
  }
2514
2502
  const {
2515
2503
  points,
2516
2504
  textBox
2517
2505
  } = data.handles;
2518
- const mappedAnnotations = RectangleROI_getMappedAnnotations(annotation, DisplaySetService);
2506
+ const mappedAnnotations = RectangleROI_getMappedAnnotations(annotation, displaySetService);
2519
2507
  const displayText = RectangleROI_getDisplayText(mappedAnnotations, displaySet, customizationService);
2520
2508
  const getReport = () => RectangleROI_getReport(mappedAnnotations, points, FrameOfReferenceUID, customizationService);
2521
2509
  return {
@@ -2527,6 +2515,7 @@ const RectangleROI = {
2527
2515
  metadata,
2528
2516
  referenceSeriesUID: SeriesInstanceUID,
2529
2517
  referenceStudyUID: StudyInstanceUID,
2518
+ referencedImageId,
2530
2519
  frameNumber: mappedAnnotations[0]?.frameNumber || 1,
2531
2520
  toolName: metadata.toolName,
2532
2521
  displaySetInstanceUID: displaySet.displaySetInstanceUID,
@@ -2538,7 +2527,7 @@ const RectangleROI = {
2538
2527
  };
2539
2528
  }
2540
2529
  };
2541
- function RectangleROI_getMappedAnnotations(annotation, DisplaySetService) {
2530
+ function RectangleROI_getMappedAnnotations(annotation, displaySetService) {
2542
2531
  const {
2543
2532
  metadata,
2544
2533
  data
@@ -2556,16 +2545,12 @@ function RectangleROI_getMappedAnnotations(annotation, DisplaySetService) {
2556
2545
  const annotations = [];
2557
2546
  Object.keys(cachedStats).forEach(targetId => {
2558
2547
  const targetStats = cachedStats[targetId];
2559
- if (!referencedImageId) {
2560
- // Todo: Non-acquisition plane measurement mapping not supported yet
2561
- throw new Error('Non-acquisition plane measurement mapping not supported');
2562
- }
2563
2548
  const {
2564
2549
  SOPInstanceUID,
2565
2550
  SeriesInstanceUID,
2566
2551
  frameNumber
2567
- } = (0,getSOPInstanceAttributes/* default */.A)(referencedImageId);
2568
- const displaySet = DisplaySetService.getDisplaySetForSOPInstanceUID(SOPInstanceUID, SeriesInstanceUID, frameNumber);
2552
+ } = (0,getSOPInstanceAttributes/* default */.A)(referencedImageId, displaySetService, annotation);
2553
+ const displaySet = displaySetService.getDisplaySetsForSeries(SeriesInstanceUID)[0];
2569
2554
  const {
2570
2555
  SeriesNumber
2571
2556
  } = displaySet;
@@ -3089,12 +3074,12 @@ const Probe = {
3089
3074
  SOPInstanceUID,
3090
3075
  SeriesInstanceUID,
3091
3076
  StudyInstanceUID
3092
- } = (0,getSOPInstanceAttributes/* default */.A)(referencedImageId);
3077
+ } = (0,getSOPInstanceAttributes/* default */.A)(referencedImageId, displaySetService, annotation);
3093
3078
  let displaySet;
3094
3079
  if (SOPInstanceUID) {
3095
3080
  displaySet = displaySetService.getDisplaySetForSOPInstanceUID(SOPInstanceUID, SeriesInstanceUID);
3096
3081
  } else {
3097
- displaySet = displaySetService.getDisplaySetsForSeries(SeriesInstanceUID);
3082
+ displaySet = displaySetService.getDisplaySetsForSeries(SeriesInstanceUID)[0];
3098
3083
  }
3099
3084
  const {
3100
3085
  points
@@ -3110,6 +3095,7 @@ const Probe = {
3110
3095
  metadata,
3111
3096
  referenceSeriesUID: SeriesInstanceUID,
3112
3097
  referenceStudyUID: StudyInstanceUID,
3098
+ referencedImageId,
3113
3099
  frameNumber: mappedAnnotations?.[0]?.frameNumber || 1,
3114
3100
  toolName: metadata.toolName,
3115
3101
  displaySetInstanceUID: displaySet.displaySetInstanceUID,
@@ -3121,7 +3107,7 @@ const Probe = {
3121
3107
  };
3122
3108
  }
3123
3109
  };
3124
- function Probe_getMappedAnnotations(annotation, DisplaySetService) {
3110
+ function Probe_getMappedAnnotations(annotation, displaySetService) {
3125
3111
  const {
3126
3112
  metadata,
3127
3113
  data
@@ -3139,15 +3125,12 @@ function Probe_getMappedAnnotations(annotation, DisplaySetService) {
3139
3125
  const annotations = [];
3140
3126
  Object.keys(cachedStats).forEach(targetId => {
3141
3127
  const targetStats = cachedStats[targetId];
3142
- if (!referencedImageId) {
3143
- throw new Error('Non-acquisition plane measurement mapping not supported');
3144
- }
3145
3128
  const {
3146
3129
  SOPInstanceUID,
3147
3130
  SeriesInstanceUID,
3148
3131
  frameNumber
3149
- } = (0,getSOPInstanceAttributes/* default */.A)(referencedImageId);
3150
- const displaySet = DisplaySetService.getDisplaySetForSOPInstanceUID(SOPInstanceUID, SeriesInstanceUID, frameNumber);
3132
+ } = (0,getSOPInstanceAttributes/* default */.A)(referencedImageId, displaySetService, annotation);
3133
+ const displaySet = displaySetService.getDisplaySetsForSeries(SeriesInstanceUID)[0];
3151
3134
  const {
3152
3135
  SeriesNumber
3153
3136
  } = displaySet;
@@ -13391,12 +13374,26 @@ const reset = () => {
13391
13374
  * @param {string} imageId The image id of the referenced image
13392
13375
  * @returns
13393
13376
  */
13394
- function getSOPInstanceAttributes(imageId) {
13377
+ function getSOPInstanceAttributes(imageId, displaySetService, annotation) {
13395
13378
  if (imageId) {
13396
13379
  return _getUIDFromImageID(imageId);
13397
13380
  }
13398
-
13399
- // Todo: implement for volume viewports and use the referencedSeriesInstanceUID
13381
+ const {
13382
+ metadata
13383
+ } = annotation;
13384
+ const {
13385
+ volumeId
13386
+ } = metadata;
13387
+ const displaySet = displaySetService.getDisplaySetsBy(displaySet => volumeId.includes(displaySet.uid))[0];
13388
+ const {
13389
+ StudyInstanceUID,
13390
+ SeriesInstanceUID
13391
+ } = displaySet;
13392
+ return {
13393
+ SOPInstanceUID: undefined,
13394
+ SeriesInstanceUID,
13395
+ StudyInstanceUID
13396
+ };
13400
13397
  }
13401
13398
  function _getUIDFromImageID(imageId) {
13402
13399
  const instance = _cornerstonejs_core__WEBPACK_IMPORTED_MODULE_0__.metaData.get('instance', imageId);
@@ -5502,7 +5502,7 @@ async function addLabelmapToElement(element, labelMapData, segmentationRepresent
5502
5502
  actorUID: segmentationRepresentationUID,
5503
5503
  },
5504
5504
  ];
5505
- await (0,_cornerstonejs_core__WEBPACK_IMPORTED_MODULE_0__.addImageSlicesToViewports)(renderingEngine, stackInputs, [viewportId], immediateRender, suppressEvents);
5505
+ await (0,_cornerstonejs_core__WEBPACK_IMPORTED_MODULE_0__.addImageSlicesToViewports)(renderingEngine, stackInputs, [viewportId]);
5506
5506
  }
5507
5507
  }
5508
5508
  /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (addLabelmapToElement);
@@ -2757,8 +2757,8 @@ function ViewerHeader({
2757
2757
  hotkeyDefinitions,
2758
2758
  hotkeyDefaults
2759
2759
  } = hotkeysManager;
2760
- const versionNumber = "3.9.0-beta.23";
2761
- const commitHash = "7745c092bb3edf0090f32fbbbae2f0776128d5a2";
2760
+ const versionNumber = "3.9.0-beta.25";
2761
+ const commitHash = "75a71db7f89840250ad1c2b35df5a35aceb8be7d";
2762
2762
  const menuOptions = [{
2763
2763
  title: t('Header:About'),
2764
2764
  icon: 'info',