@cornerstonejs/dicom-image-loader 2.0.0-beta.7 → 2.0.0

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 (245) hide show
  1. package/dist/dynamic-import/{65916ef3def695744bda.wasm → 031089e563a18ada8441.wasm} +0 -0
  2. package/dist/dynamic-import/54.min.js +2 -0
  3. package/dist/dynamic-import/54.min.js.map +1 -0
  4. package/dist/dynamic-import/548.min.js +2 -0
  5. package/dist/dynamic-import/548.min.js.map +1 -0
  6. package/dist/dynamic-import/918.min.js +2 -0
  7. package/dist/dynamic-import/918.min.js.map +1 -0
  8. package/dist/dynamic-import/958.min.js +3 -0
  9. package/dist/dynamic-import/958.min.js.LICENSE.txt +5 -0
  10. package/dist/dynamic-import/958.min.js.map +1 -0
  11. package/dist/dynamic-import/cornerstoneDICOMImageLoader.min.js +1 -1
  12. package/dist/dynamic-import/cornerstoneDICOMImageLoader.min.js.map +1 -1
  13. package/dist/esm/codecs/jpeg.d.ts +1 -0
  14. package/dist/esm/codecs/jpeg.js +889 -0
  15. package/dist/esm/codecs/jpegLossless.d.ts +7 -0
  16. package/dist/esm/codecs/jpegLossless.js +1218 -0
  17. package/dist/esm/constants/index.d.ts +2 -0
  18. package/dist/esm/constants/index.js +2 -0
  19. package/dist/esm/constants/transferSyntaxes.d.ts +46 -0
  20. package/dist/esm/constants/transferSyntaxes.js +46 -0
  21. package/dist/esm/decodeImageFrameWorker.d.ts +1 -0
  22. package/dist/esm/decodeImageFrameWorker.js +263 -0
  23. package/dist/esm/imageLoader/colorSpaceConverters/convertPALETTECOLOR.d.ts +3 -0
  24. package/dist/esm/imageLoader/colorSpaceConverters/convertPALETTECOLOR.js +77 -0
  25. package/dist/esm/imageLoader/colorSpaceConverters/convertRGBColorByPixel.d.ts +2 -0
  26. package/dist/esm/imageLoader/colorSpaceConverters/convertRGBColorByPixel.js +21 -0
  27. package/dist/esm/imageLoader/colorSpaceConverters/convertRGBColorByPlane.d.ts +2 -0
  28. package/dist/esm/imageLoader/colorSpaceConverters/convertRGBColorByPlane.js +28 -0
  29. package/dist/esm/imageLoader/colorSpaceConverters/convertYBRFull422ByPixel.d.ts +2 -0
  30. package/dist/esm/imageLoader/colorSpaceConverters/convertYBRFull422ByPixel.js +44 -0
  31. package/dist/esm/imageLoader/colorSpaceConverters/convertYBRFullByPixel.d.ts +2 -0
  32. package/dist/esm/imageLoader/colorSpaceConverters/convertYBRFullByPixel.js +33 -0
  33. package/dist/esm/imageLoader/colorSpaceConverters/convertYBRFullByPlane.d.ts +2 -0
  34. package/dist/esm/imageLoader/colorSpaceConverters/convertYBRFullByPlane.js +35 -0
  35. package/dist/esm/imageLoader/colorSpaceConverters/index.d.ts +7 -0
  36. package/dist/esm/imageLoader/colorSpaceConverters/index.js +7 -0
  37. package/dist/esm/imageLoader/convertColorSpace.d.ts +1 -0
  38. package/dist/esm/imageLoader/convertColorSpace.js +40 -0
  39. package/dist/esm/imageLoader/createImage.d.ts +5 -0
  40. package/dist/esm/imageLoader/createImage.js +245 -0
  41. package/dist/esm/imageLoader/decodeImageFrame.d.ts +3 -0
  42. package/dist/esm/imageLoader/decodeImageFrame.js +63 -0
  43. package/dist/esm/imageLoader/decodeJPEGBaseline8BitColor.d.ts +4 -0
  44. package/dist/esm/imageLoader/decodeJPEGBaseline8BitColor.js +64 -0
  45. package/dist/esm/imageLoader/getImageFrame.d.ts +3 -0
  46. package/dist/esm/imageLoader/getImageFrame.js +25 -0
  47. package/dist/esm/imageLoader/getInstanceModule.d.ts +3 -0
  48. package/dist/esm/imageLoader/getInstanceModule.js +40 -0
  49. package/dist/esm/imageLoader/getMinMax.d.ts +4 -0
  50. package/dist/esm/imageLoader/getMinMax.js +15 -0
  51. package/dist/esm/imageLoader/getScalingParameters.d.ts +6 -0
  52. package/dist/esm/imageLoader/getScalingParameters.js +16 -0
  53. package/dist/esm/imageLoader/imageIdToURI.d.ts +1 -0
  54. package/dist/esm/imageLoader/imageIdToURI.js +4 -0
  55. package/dist/esm/imageLoader/index.d.ts +91 -0
  56. package/dist/esm/imageLoader/index.js +34 -0
  57. package/dist/esm/imageLoader/init.d.ts +3 -0
  58. package/dist/esm/imageLoader/init.js +23 -0
  59. package/dist/esm/imageLoader/internal/index.d.ts +10 -0
  60. package/dist/esm/imageLoader/internal/index.js +10 -0
  61. package/dist/esm/imageLoader/internal/options.d.ts +3 -0
  62. package/dist/esm/imageLoader/internal/options.js +19 -0
  63. package/dist/esm/imageLoader/internal/rangeRequest.d.ts +9 -0
  64. package/dist/esm/imageLoader/internal/rangeRequest.js +121 -0
  65. package/dist/esm/imageLoader/internal/streamRequest.d.ts +2 -0
  66. package/dist/esm/imageLoader/internal/streamRequest.js +93 -0
  67. package/dist/esm/imageLoader/internal/xhrRequest.d.ts +3 -0
  68. package/dist/esm/imageLoader/internal/xhrRequest.js +101 -0
  69. package/dist/esm/imageLoader/isColorConversionRequired.d.ts +1 -0
  70. package/dist/esm/imageLoader/isColorConversionRequired.js +22 -0
  71. package/dist/esm/imageLoader/isJPEGBaseline8BitColor.d.ts +3 -0
  72. package/dist/esm/imageLoader/isJPEGBaseline8BitColor.js +9 -0
  73. package/dist/esm/imageLoader/isNMReconstructable.d.ts +1 -0
  74. package/dist/esm/imageLoader/isNMReconstructable.js +3 -0
  75. package/dist/esm/imageLoader/registerLoaders.d.ts +2 -0
  76. package/dist/esm/imageLoader/registerLoaders.js +7 -0
  77. package/dist/esm/imageLoader/wadors/combineFrameInstance.d.ts +12 -0
  78. package/dist/esm/imageLoader/wadors/combineFrameInstance.js +44 -0
  79. package/dist/esm/imageLoader/wadors/extractMultipart.d.ts +23 -0
  80. package/dist/esm/imageLoader/wadors/extractMultipart.js +73 -0
  81. package/dist/esm/imageLoader/wadors/findIndexOfString.d.ts +2 -0
  82. package/dist/esm/imageLoader/wadors/findIndexOfString.js +32 -0
  83. package/dist/esm/imageLoader/wadors/getImageQualityStatus.d.ts +3 -0
  84. package/dist/esm/imageLoader/wadors/getImageQualityStatus.js +8 -0
  85. package/dist/esm/imageLoader/wadors/getPixelData.d.ts +26 -0
  86. package/dist/esm/imageLoader/wadors/getPixelData.js +35 -0
  87. package/dist/esm/imageLoader/wadors/getTagValue.d.ts +1 -0
  88. package/dist/esm/imageLoader/wadors/getTagValue.js +9 -0
  89. package/dist/esm/imageLoader/wadors/index.d.ts +29 -0
  90. package/dist/esm/imageLoader/wadors/index.js +25 -0
  91. package/dist/esm/imageLoader/wadors/loadImage.d.ts +25 -0
  92. package/dist/esm/imageLoader/wadors/loadImage.js +124 -0
  93. package/dist/esm/imageLoader/wadors/loadImage_test.d.ts +1 -0
  94. package/dist/esm/imageLoader/wadors/loadImage_test.js +41 -0
  95. package/dist/esm/imageLoader/wadors/metaData/NMHelpers.d.ts +5 -0
  96. package/dist/esm/imageLoader/wadors/metaData/NMHelpers.js +38 -0
  97. package/dist/esm/imageLoader/wadors/metaData/USHelpers.d.ts +19 -0
  98. package/dist/esm/imageLoader/wadors/metaData/USHelpers.js +46 -0
  99. package/dist/esm/imageLoader/wadors/metaData/extractPositioningFromMetadata.d.ts +3 -0
  100. package/dist/esm/imageLoader/wadors/metaData/extractPositioningFromMetadata.js +18 -0
  101. package/dist/esm/imageLoader/wadors/metaData/getFirstNumberValue.d.ts +2 -0
  102. package/dist/esm/imageLoader/wadors/metaData/getFirstNumberValue.js +6 -0
  103. package/dist/esm/imageLoader/wadors/metaData/getNumberString.d.ts +3 -0
  104. package/dist/esm/imageLoader/wadors/metaData/getNumberString.js +9 -0
  105. package/dist/esm/imageLoader/wadors/metaData/getNumberValue.d.ts +3 -0
  106. package/dist/esm/imageLoader/wadors/metaData/getNumberValue.js +9 -0
  107. package/dist/esm/imageLoader/wadors/metaData/getNumberValues.d.ts +3 -0
  108. package/dist/esm/imageLoader/wadors/metaData/getNumberValues.js +20 -0
  109. package/dist/esm/imageLoader/wadors/metaData/getOverlayPlaneModule.d.ts +4 -0
  110. package/dist/esm/imageLoader/wadors/metaData/getOverlayPlaneModule.js +38 -0
  111. package/dist/esm/imageLoader/wadors/metaData/getSequenceItems.d.ts +3 -0
  112. package/dist/esm/imageLoader/wadors/metaData/getSequenceItems.js +14 -0
  113. package/dist/esm/imageLoader/wadors/metaData/getValue.d.ts +3 -0
  114. package/dist/esm/imageLoader/wadors/metaData/getValue.js +14 -0
  115. package/dist/esm/imageLoader/wadors/metaData/index.d.ts +7 -0
  116. package/dist/esm/imageLoader/wadors/metaData/index.js +7 -0
  117. package/dist/esm/imageLoader/wadors/metaData/metaDataProvider.d.ts +14 -0
  118. package/dist/esm/imageLoader/wadors/metaData/metaDataProvider.js +277 -0
  119. package/dist/esm/imageLoader/wadors/metaDataManager.d.ts +19 -0
  120. package/dist/esm/imageLoader/wadors/metaDataManager.js +68 -0
  121. package/dist/esm/imageLoader/wadors/register.d.ts +1 -0
  122. package/dist/esm/imageLoader/wadors/register.js +7 -0
  123. package/dist/esm/imageLoader/wadouri/combineFrameInstanceDataset.d.ts +22 -0
  124. package/dist/esm/imageLoader/wadouri/combineFrameInstanceDataset.js +69 -0
  125. package/dist/esm/imageLoader/wadouri/dataSetCacheManager.d.ts +28 -0
  126. package/dist/esm/imageLoader/wadouri/dataSetCacheManager.js +141 -0
  127. package/dist/esm/imageLoader/wadouri/dataSetCacheManager_test.d.ts +1 -0
  128. package/dist/esm/imageLoader/wadouri/dataSetCacheManager_test.js +10 -0
  129. package/dist/esm/imageLoader/wadouri/dataset-from-partial-content.d.ts +6 -0
  130. package/dist/esm/imageLoader/wadouri/dataset-from-partial-content.js +55 -0
  131. package/dist/esm/imageLoader/wadouri/fileManager.d.ts +11 -0
  132. package/dist/esm/imageLoader/wadouri/fileManager.js +20 -0
  133. package/dist/esm/imageLoader/wadouri/getEncapsulatedImageFrame.d.ts +2 -0
  134. package/dist/esm/imageLoader/wadouri/getEncapsulatedImageFrame.js +31 -0
  135. package/dist/esm/imageLoader/wadouri/getPixelData.d.ts +3 -0
  136. package/dist/esm/imageLoader/wadouri/getPixelData.js +13 -0
  137. package/dist/esm/imageLoader/wadouri/getUncompressedImageFrame.d.ts +3 -0
  138. package/dist/esm/imageLoader/wadouri/getUncompressedImageFrame.js +47 -0
  139. package/dist/esm/imageLoader/wadouri/index.d.ts +45 -0
  140. package/dist/esm/imageLoader/wadouri/index.js +34 -0
  141. package/dist/esm/imageLoader/wadouri/loadFileRequest.d.ts +2 -0
  142. package/dist/esm/imageLoader/wadouri/loadFileRequest.js +17 -0
  143. package/dist/esm/imageLoader/wadouri/loadImage.d.ts +9 -0
  144. package/dist/esm/imageLoader/wadouri/loadImage.js +104 -0
  145. package/dist/esm/imageLoader/wadouri/loadedDataSets.d.ts +7 -0
  146. package/dist/esm/imageLoader/wadouri/loadedDataSets.js +5 -0
  147. package/dist/esm/imageLoader/wadouri/metaData/USHelpers.d.ts +2 -0
  148. package/dist/esm/imageLoader/wadouri/metaData/USHelpers.js +44 -0
  149. package/dist/esm/imageLoader/wadouri/metaData/extractPositioningFromDataset.d.ts +6 -0
  150. package/dist/esm/imageLoader/wadouri/metaData/extractPositioningFromDataset.js +80 -0
  151. package/dist/esm/imageLoader/wadouri/metaData/getImagePixelModule.d.ts +4 -0
  152. package/dist/esm/imageLoader/wadouri/metaData/getImagePixelModule.js +79 -0
  153. package/dist/esm/imageLoader/wadouri/metaData/getLUTs.d.ts +4 -0
  154. package/dist/esm/imageLoader/wadouri/metaData/getLUTs.js +44 -0
  155. package/dist/esm/imageLoader/wadouri/metaData/getModalityLUTOutputPixelRepresentation.d.ts +3 -0
  156. package/dist/esm/imageLoader/wadouri/metaData/getModalityLUTOutputPixelRepresentation.js +30 -0
  157. package/dist/esm/imageLoader/wadouri/metaData/getNumberValues.d.ts +3 -0
  158. package/dist/esm/imageLoader/wadouri/metaData/getNumberValues.js +16 -0
  159. package/dist/esm/imageLoader/wadouri/metaData/getOverlayPlaneModule.d.ts +4 -0
  160. package/dist/esm/imageLoader/wadouri/metaData/getOverlayPlaneModule.js +36 -0
  161. package/dist/esm/imageLoader/wadouri/metaData/index.d.ts +5 -0
  162. package/dist/esm/imageLoader/wadouri/metaData/index.js +5 -0
  163. package/dist/esm/imageLoader/wadouri/metaData/metaDataProvider.d.ts +4 -0
  164. package/dist/esm/imageLoader/wadouri/metaData/metaDataProvider.js +227 -0
  165. package/dist/esm/imageLoader/wadouri/parseImageId.d.ts +8 -0
  166. package/dist/esm/imageLoader/wadouri/parseImageId.js +20 -0
  167. package/dist/esm/imageLoader/wadouri/register.d.ts +1 -0
  168. package/dist/esm/imageLoader/wadouri/register.js +9 -0
  169. package/dist/esm/imageLoader/wadouri/retrieveMultiframeDataset.d.ts +17 -0
  170. package/dist/esm/imageLoader/wadouri/retrieveMultiframeDataset.js +57 -0
  171. package/dist/esm/imageLoader/wadouri/unpackBinaryFrame.d.ts +3 -0
  172. package/dist/esm/imageLoader/wadouri/unpackBinaryFrame.js +14 -0
  173. package/dist/esm/index.d.ts +95 -0
  174. package/dist/esm/index.js +36 -0
  175. package/dist/esm/shared/decoders/decodeBigEndian.d.ts +4 -0
  176. package/dist/esm/shared/decoders/decodeBigEndian.js +28 -0
  177. package/dist/esm/shared/decoders/decodeHTJ2K.d.ts +5 -0
  178. package/dist/esm/shared/decoders/decodeHTJ2K.js +109 -0
  179. package/dist/esm/shared/decoders/decodeJPEG2000.d.ts +5 -0
  180. package/dist/esm/shared/decoders/decodeJPEG2000.js +93 -0
  181. package/dist/esm/shared/decoders/decodeJPEGBaseline12Bit-js.d.ts +6 -0
  182. package/dist/esm/shared/decoders/decodeJPEGBaseline12Bit-js.js +34 -0
  183. package/dist/esm/shared/decoders/decodeJPEGBaseline12Bit-wasm-not-yet-working.d.ts +1 -0
  184. package/dist/esm/shared/decoders/decodeJPEGBaseline12Bit-wasm-not-yet-working.js +0 -0
  185. package/dist/esm/shared/decoders/decodeJPEGBaseline8Bit.d.ts +3 -0
  186. package/dist/esm/shared/decoders/decodeJPEGBaseline8Bit.js +62 -0
  187. package/dist/esm/shared/decoders/decodeJPEGLS.d.ts +5 -0
  188. package/dist/esm/shared/decoders/decodeJPEGLS.js +84 -0
  189. package/dist/esm/shared/decoders/decodeJPEGLossless.d.ts +6 -0
  190. package/dist/esm/shared/decoders/decodeJPEGLossless.js +39 -0
  191. package/dist/esm/shared/decoders/decodeLittleEndian.d.ts +4 -0
  192. package/dist/esm/shared/decoders/decodeLittleEndian.js +29 -0
  193. package/dist/esm/shared/decoders/decodeRLE.d.ts +4 -0
  194. package/dist/esm/shared/decoders/decodeRLE.js +128 -0
  195. package/dist/esm/shared/getMinMax.d.ts +6 -0
  196. package/dist/esm/shared/getMinMax.js +16 -0
  197. package/dist/esm/shared/getMinMax_test.d.ts +1 -0
  198. package/dist/esm/shared/getMinMax_test.js +9 -0
  199. package/dist/esm/shared/getPixelDataTypeFromMinMax.d.ts +2 -0
  200. package/dist/esm/shared/getPixelDataTypeFromMinMax.js +22 -0
  201. package/dist/esm/shared/isColorImage.d.ts +1 -0
  202. package/dist/esm/shared/isColorImage.js +10 -0
  203. package/dist/esm/shared/scaling/bilinear.d.ts +1 -0
  204. package/dist/esm/shared/scaling/bilinear.js +32 -0
  205. package/dist/esm/shared/scaling/replicate.d.ts +1 -0
  206. package/dist/esm/shared/scaling/replicate.js +20 -0
  207. package/dist/esm/shared/scaling/scaleArray.d.ts +2 -0
  208. package/dist/esm/shared/scaling/scaleArray.js +17 -0
  209. package/dist/esm/types/DICOMLoaderDataSetWithFetchMore.d.ts +9 -0
  210. package/dist/esm/types/DICOMLoaderDataSetWithFetchMore.js +0 -0
  211. package/dist/esm/types/DICOMLoaderIImage.d.ts +12 -0
  212. package/dist/esm/types/DICOMLoaderIImage.js +0 -0
  213. package/dist/esm/types/DICOMLoaderImageOptions.d.ts +23 -0
  214. package/dist/esm/types/DICOMLoaderImageOptions.js +0 -0
  215. package/dist/esm/types/LoadRequestFunction.d.ts +1 -0
  216. package/dist/esm/types/LoadRequestFunction.js +0 -0
  217. package/dist/esm/types/LoaderDecodeOptions.d.ts +2 -0
  218. package/dist/esm/types/LoaderDecodeOptions.js +0 -0
  219. package/dist/esm/types/LoaderOptions.d.ts +16 -0
  220. package/dist/esm/types/LoaderOptions.js +0 -0
  221. package/dist/esm/types/LutType.d.ts +6 -0
  222. package/dist/esm/types/LutType.js +0 -0
  223. package/dist/esm/types/WADORSMetaData.d.ts +4 -0
  224. package/dist/esm/types/WADORSMetaData.js +0 -0
  225. package/dist/esm/types/WebWorkerTypes.d.ts +64 -0
  226. package/dist/esm/types/WebWorkerTypes.js +0 -0
  227. package/dist/esm/types/XHRRequest.d.ts +16 -0
  228. package/dist/esm/types/XHRRequest.js +0 -0
  229. package/dist/esm/types/index.d.ts +11 -0
  230. package/dist/esm/types/index.js +0 -0
  231. package/dist/esm/version.d.ts +2 -0
  232. package/dist/esm/version.js +1 -0
  233. package/package.json +62 -18
  234. package/dist/cornerstoneDICOMImageLoader.bundle.min.js +0 -2
  235. package/dist/cornerstoneDICOMImageLoader.bundle.min.js.map +0 -1
  236. package/dist/cornerstoneDICOMImageLoaderNoWebWorkers.bundle.min.js +0 -2
  237. package/dist/cornerstoneDICOMImageLoaderNoWebWorkers.bundle.min.js.map +0 -1
  238. package/dist/dynamic-import/610.min.worker.js +0 -2
  239. package/dist/dynamic-import/610.min.worker.js.map +0 -1
  240. package/dist/dynamic-import/945.min.worker.js +0 -2
  241. package/dist/dynamic-import/945.min.worker.js.map +0 -1
  242. package/dist/dynamic-import/index.worker.f4bda803c15bc6359d5f.worker.js +0 -2
  243. package/dist/dynamic-import/index.worker.f4bda803c15bc6359d5f.worker.js.map +0 -1
  244. package/dist/index.worker.bundle.min.worker.js +0 -2
  245. package/dist/index.worker.bundle.min.worker.js.map +0 -1
@@ -0,0 +1,3 @@
1
+ import type { WADORSMetaDataElement } from '../../../types';
2
+ declare function getValue<ReturnType = unknown>(element: WADORSMetaDataElement, index?: number, defaultValue?: ReturnType): ReturnType;
3
+ export default getValue;
@@ -0,0 +1,14 @@
1
+ function getValue(element, index, defaultValue) {
2
+ index = index || 0;
3
+ if (!element) {
4
+ return defaultValue;
5
+ }
6
+ if (!element.Value) {
7
+ return defaultValue;
8
+ }
9
+ if (Array.isArray(element.Value) && element.Value.length <= index) {
10
+ return defaultValue;
11
+ }
12
+ return element.Value[index];
13
+ }
14
+ export default getValue;
@@ -0,0 +1,7 @@
1
+ export { default as getNumberString } from './getNumberString';
2
+ export { default as getNumberValue } from './getNumberValue';
3
+ export { default as getNumberValues } from './getNumberValues';
4
+ export { default as metaDataProvider } from './metaDataProvider';
5
+ export { default as getValue } from './getValue';
6
+ export { getFirstNumberValue } from './getFirstNumberValue';
7
+ export { getUSEnhancedRegions } from './USHelpers';
@@ -0,0 +1,7 @@
1
+ export { default as getNumberString } from './getNumberString';
2
+ export { default as getNumberValue } from './getNumberValue';
3
+ export { default as getNumberValues } from './getNumberValues';
4
+ export { default as metaDataProvider } from './metaDataProvider';
5
+ export { default as getValue } from './getValue';
6
+ export { getFirstNumberValue } from './getFirstNumberValue';
7
+ export { getUSEnhancedRegions } from './USHelpers';
@@ -0,0 +1,14 @@
1
+ declare function metaDataProvider(type: any, imageId: any): {};
2
+ export declare function getImageUrlModule(imageId: any, metaData: any): {
3
+ isVideo: string | false;
4
+ rendered: any;
5
+ thumbnail: any;
6
+ };
7
+ export declare function getCineModule(imageId: any, metaData: any): {
8
+ cineRate: string;
9
+ numberOfFrames: number;
10
+ };
11
+ export declare function getTransferSyntax(imageId: any, metaData: any): {
12
+ transferSyntaxUID: string;
13
+ };
14
+ export default metaDataProvider;
@@ -0,0 +1,277 @@
1
+ import * as dicomParser from 'dicom-parser';
2
+ import { Enums, utilities } from '@cornerstonejs/core';
3
+ import getNumberValues from './getNumberValues';
4
+ import getNumberValue from './getNumberValue';
5
+ import getOverlayPlaneModule from './getOverlayPlaneModule';
6
+ import metaDataManager, { retrieveMultiframeMetadataImageId, } from '../metaDataManager';
7
+ import getValue from './getValue';
8
+ import { getMultiframeInformation, getFrameInformation, } from '../combineFrameInstance';
9
+ import { extractOrientationFromMetadata, extractPositionFromMetadata, } from './extractPositioningFromMetadata';
10
+ import { getImageTypeSubItemFromMetadata } from './NMHelpers';
11
+ import isNMReconstructable from '../../isNMReconstructable';
12
+ import { getInstanceModule, instanceModuleNames, } from '../../getInstanceModule';
13
+ import { getUSEnhancedRegions } from './USHelpers';
14
+ function metaDataProvider(type, imageId) {
15
+ const { MetadataModules } = Enums;
16
+ if (type === MetadataModules.MULTIFRAME) {
17
+ const { metadata, frame } = retrieveMultiframeMetadataImageId(imageId);
18
+ if (!metadata) {
19
+ return;
20
+ }
21
+ const { PerFrameFunctionalGroupsSequence, SharedFunctionalGroupsSequence, NumberOfFrames, } = getMultiframeInformation(metadata);
22
+ if (PerFrameFunctionalGroupsSequence || NumberOfFrames > 1) {
23
+ const { shared, perFrame } = getFrameInformation(PerFrameFunctionalGroupsSequence, SharedFunctionalGroupsSequence, frame);
24
+ return {
25
+ NumberOfFrames,
26
+ PerFrameFunctionalInformation: perFrame,
27
+ SharedFunctionalInformation: shared,
28
+ };
29
+ }
30
+ return {
31
+ NumberOfFrames,
32
+ };
33
+ }
34
+ const metaData = metaDataManager.get(imageId);
35
+ if (!metaData) {
36
+ return;
37
+ }
38
+ if (type === MetadataModules.GENERAL_STUDY) {
39
+ return {
40
+ studyDescription: getValue(metaData['00081030']),
41
+ studyDate: dicomParser.parseDA(getValue(metaData['00080020'])),
42
+ studyTime: dicomParser.parseTM(getValue(metaData['00080030'], 0, '')),
43
+ accessionNumber: getValue(metaData['00080050']),
44
+ };
45
+ }
46
+ if (type === MetadataModules.GENERAL_SERIES) {
47
+ return {
48
+ modality: getValue(metaData['00080060']),
49
+ seriesInstanceUID: getValue(metaData['0020000E']),
50
+ seriesNumber: getNumberValue(metaData['00200011']),
51
+ studyInstanceUID: getValue(metaData['0020000D']),
52
+ seriesDate: dicomParser.parseDA(getValue(metaData['00080021'])),
53
+ seriesTime: dicomParser.parseTM(getValue(metaData['00080031'], 0, '')),
54
+ acquisitionDate: dicomParser.parseDA(getValue(metaData['00080022'])),
55
+ acquisitionTime: dicomParser.parseTM(getValue(metaData['00080032'], 0, '')),
56
+ };
57
+ }
58
+ if (type === MetadataModules.GENERAL_IMAGE) {
59
+ return {
60
+ sopInstanceUID: getValue(metaData['00080018']),
61
+ instanceNumber: getNumberValue(metaData['00200013']),
62
+ lossyImageCompression: getValue(metaData['00282110']),
63
+ lossyImageCompressionRatio: getNumberValue(metaData['00282112']),
64
+ lossyImageCompressionMethod: getValue(metaData['00282114']),
65
+ };
66
+ }
67
+ if (type === MetadataModules.PATIENT) {
68
+ return {
69
+ patientID: getValue(metaData['00100020']),
70
+ patientName: getValue(metaData['00100010']),
71
+ };
72
+ }
73
+ if (type === MetadataModules.PATIENT_STUDY) {
74
+ return {
75
+ patientAge: getNumberValue(metaData['00101010']),
76
+ patientSize: getNumberValue(metaData['00101020']),
77
+ patientSex: getValue(metaData['00100040']),
78
+ patientWeight: getNumberValue(metaData['00101030']),
79
+ };
80
+ }
81
+ if (type === MetadataModules.NM_MULTIFRAME_GEOMETRY) {
82
+ const modality = getValue(metaData['00080060']);
83
+ const imageSubType = getImageTypeSubItemFromMetadata(metaData, 2);
84
+ return {
85
+ modality,
86
+ imageType: getValue(metaData['00080008']),
87
+ imageSubType,
88
+ imageOrientationPatient: extractOrientationFromMetadata(metaData),
89
+ imagePositionPatient: extractPositionFromMetadata(metaData),
90
+ sliceThickness: getNumberValue(metaData['00180050']),
91
+ spacingBetweenSlices: getNumberValue(metaData['00180088']),
92
+ pixelSpacing: getNumberValues(metaData['00280030'], 2),
93
+ numberOfFrames: getNumberValue(metaData['00280008']),
94
+ isNMReconstructable: isNMReconstructable(imageSubType) && modality.includes('NM'),
95
+ };
96
+ }
97
+ if (type === MetadataModules.IMAGE_PLANE) {
98
+ let imageOrientationPatient = extractOrientationFromMetadata(metaData);
99
+ let imagePositionPatient = extractPositionFromMetadata(metaData);
100
+ const pixelSpacing = getNumberValues(metaData['00280030'], 2);
101
+ let columnPixelSpacing = null;
102
+ let rowPixelSpacing = null;
103
+ let rowCosines = null;
104
+ let columnCosines = null;
105
+ let usingDefaultValues = false;
106
+ if (pixelSpacing) {
107
+ rowPixelSpacing = pixelSpacing[0];
108
+ columnPixelSpacing = pixelSpacing[1];
109
+ }
110
+ else {
111
+ usingDefaultValues = true;
112
+ rowPixelSpacing = 1;
113
+ columnPixelSpacing = 1;
114
+ }
115
+ if (imageOrientationPatient) {
116
+ rowCosines = [
117
+ parseFloat(imageOrientationPatient[0]),
118
+ parseFloat(imageOrientationPatient[1]),
119
+ parseFloat(imageOrientationPatient[2]),
120
+ ];
121
+ columnCosines = [
122
+ parseFloat(imageOrientationPatient[3]),
123
+ parseFloat(imageOrientationPatient[4]),
124
+ parseFloat(imageOrientationPatient[5]),
125
+ ];
126
+ }
127
+ else {
128
+ rowCosines = [0, 1, 0];
129
+ columnCosines = [0, 0, -1];
130
+ usingDefaultValues = true;
131
+ imageOrientationPatient = [...rowCosines, ...columnCosines];
132
+ }
133
+ if (!imagePositionPatient) {
134
+ imagePositionPatient = [0, 0, 0];
135
+ usingDefaultValues = true;
136
+ }
137
+ return {
138
+ frameOfReferenceUID: getValue(metaData['00200052']),
139
+ rows: getNumberValue(metaData['00280010']),
140
+ columns: getNumberValue(metaData['00280011']),
141
+ imageOrientationPatient,
142
+ rowCosines,
143
+ columnCosines,
144
+ imagePositionPatient,
145
+ sliceThickness: getNumberValue(metaData['00180050']),
146
+ sliceLocation: getNumberValue(metaData['00201041']),
147
+ pixelSpacing,
148
+ rowPixelSpacing,
149
+ columnPixelSpacing,
150
+ usingDefaultValues,
151
+ };
152
+ }
153
+ if (type === MetadataModules.ULTRASOUND_ENHANCED_REGION) {
154
+ return getUSEnhancedRegions(metaData);
155
+ }
156
+ if (type === MetadataModules.CALIBRATION) {
157
+ const modality = getValue(metaData['00080060']);
158
+ if (modality === 'US') {
159
+ const enhancedRegion = getUSEnhancedRegions(metaData);
160
+ return {
161
+ sequenceOfUltrasoundRegions: enhancedRegion,
162
+ };
163
+ }
164
+ }
165
+ if (type === MetadataModules.IMAGE_URL) {
166
+ return getImageUrlModule(imageId, metaData);
167
+ }
168
+ if (type === MetadataModules.CINE) {
169
+ return getCineModule(imageId, metaData);
170
+ }
171
+ if (type === MetadataModules.IMAGE_PIXEL) {
172
+ return {
173
+ samplesPerPixel: getNumberValue(metaData['00280002']),
174
+ photometricInterpretation: getValue(metaData['00280004']),
175
+ rows: getNumberValue(metaData['00280010']),
176
+ columns: getNumberValue(metaData['00280011']),
177
+ bitsAllocated: getNumberValue(metaData['00280100']),
178
+ bitsStored: getNumberValue(metaData['00280101']),
179
+ highBit: getValue(metaData['00280102']),
180
+ pixelRepresentation: getNumberValue(metaData['00280103']),
181
+ planarConfiguration: getNumberValue(metaData['00280006']),
182
+ pixelAspectRatio: getValue(metaData['00280034']),
183
+ smallestPixelValue: getNumberValue(metaData['00280106']),
184
+ largestPixelValue: getNumberValue(metaData['00280107']),
185
+ redPaletteColorLookupTableDescriptor: getNumberValues(metaData['00281101']),
186
+ greenPaletteColorLookupTableDescriptor: getNumberValues(metaData['00281102']),
187
+ bluePaletteColorLookupTableDescriptor: getNumberValues(metaData['00281103']),
188
+ redPaletteColorLookupTableData: getNumberValues(metaData['00281201']),
189
+ greenPaletteColorLookupTableData: getNumberValues(metaData['00281202']),
190
+ bluePaletteColorLookupTableData: getNumberValues(metaData['00281203']),
191
+ };
192
+ }
193
+ if (type === MetadataModules.VOI_LUT) {
194
+ return {
195
+ windowCenter: getNumberValues(metaData['00281050'], 1),
196
+ windowWidth: getNumberValues(metaData['00281051'], 1),
197
+ };
198
+ }
199
+ if (type === MetadataModules.MODALITY_LUT) {
200
+ return {
201
+ rescaleIntercept: getNumberValue(metaData['00281052']),
202
+ rescaleSlope: getNumberValue(metaData['00281053']),
203
+ rescaleType: getValue(metaData['00281054']),
204
+ };
205
+ }
206
+ if (type === MetadataModules.SOP_COMMON) {
207
+ return {
208
+ sopClassUID: getValue(metaData['00080016']),
209
+ sopInstanceUID: getValue(metaData['00080018']),
210
+ };
211
+ }
212
+ if (type === MetadataModules.PET_ISOTOPE) {
213
+ const radiopharmaceuticalInfo = getValue(metaData['00540016']);
214
+ if (radiopharmaceuticalInfo === undefined) {
215
+ return;
216
+ }
217
+ return {
218
+ radiopharmaceuticalInfo: {
219
+ radiopharmaceuticalStartTime: dicomParser.parseTM(getValue(radiopharmaceuticalInfo['00181072'], 0, '')),
220
+ radiopharmaceuticalStartDateTime: getValue(radiopharmaceuticalInfo['00181078'], 0, ''),
221
+ radionuclideTotalDose: getNumberValue(radiopharmaceuticalInfo['00181074']),
222
+ radionuclideHalfLife: getNumberValue(radiopharmaceuticalInfo['00181075']),
223
+ },
224
+ };
225
+ }
226
+ if (type === MetadataModules.OVERLAY_PLANE) {
227
+ return getOverlayPlaneModule(metaData);
228
+ }
229
+ if (type === 'transferSyntax') {
230
+ return getTransferSyntax(imageId, metaData);
231
+ }
232
+ if (type === MetadataModules.PET_SERIES) {
233
+ return {
234
+ correctedImage: getValue(metaData['00280051']),
235
+ units: getValue(metaData['00541001']),
236
+ decayCorrection: getValue(metaData['00541102']),
237
+ };
238
+ }
239
+ if (type === MetadataModules.PET_IMAGE) {
240
+ return {
241
+ frameReferenceTime: getNumberValue(metaData['00541300']),
242
+ actualFrameDuration: getNumberValue(metaData['00181242']),
243
+ };
244
+ }
245
+ if (type === 'instance') {
246
+ return getInstanceModule(imageId, metaDataProvider, instanceModuleNames);
247
+ }
248
+ }
249
+ export function getImageUrlModule(imageId, metaData) {
250
+ const { transferSyntaxUID } = getTransferSyntax(imageId, metaData);
251
+ const isVideo = utilities.isVideoTransferSyntax(transferSyntaxUID);
252
+ const imageUrl = imageId.substring(7);
253
+ const thumbnail = imageUrl.replace('/frames/', '/thumbnail/');
254
+ let rendered = imageUrl.replace('/frames/', '/rendered/');
255
+ if (isVideo) {
256
+ rendered = rendered.replace('/rendered/1', '/rendered');
257
+ }
258
+ return {
259
+ isVideo,
260
+ rendered,
261
+ thumbnail,
262
+ };
263
+ }
264
+ export function getCineModule(imageId, metaData) {
265
+ const cineRate = getValue(metaData['00180040']);
266
+ return {
267
+ cineRate,
268
+ numberOfFrames: getNumberValue(metaData['00280008']),
269
+ };
270
+ }
271
+ export function getTransferSyntax(imageId, metaData) {
272
+ return {
273
+ transferSyntaxUID: getValue(metaData['00020010']) ||
274
+ getValue(metaData['00083002']),
275
+ };
276
+ }
277
+ export default metaDataProvider;
@@ -0,0 +1,19 @@
1
+ import type { WADORSMetaData } from '../../types';
2
+ declare let metadataByImageURI: any[];
3
+ declare function retrieveMultiframeMetadataImageId(imageId: any): {
4
+ metadata: any;
5
+ frame: number;
6
+ };
7
+ declare function isMultiframe(metadata: any): boolean;
8
+ declare function add(imageId: string, metadata: WADORSMetaData): void;
9
+ declare function get(imageId: string): WADORSMetaData;
10
+ declare function remove(imageId: any): void;
11
+ declare function purge(): void;
12
+ export { metadataByImageURI, isMultiframe, retrieveMultiframeMetadataImageId };
13
+ declare const _default: {
14
+ add: typeof add;
15
+ get: typeof get;
16
+ remove: typeof remove;
17
+ purge: typeof purge;
18
+ };
19
+ export default _default;
@@ -0,0 +1,68 @@
1
+ import imageIdToURI from '../imageIdToURI';
2
+ import { combineFrameInstance } from './combineFrameInstance';
3
+ let metadataByImageURI = [];
4
+ let multiframeMetadataByImageURI = {};
5
+ import getValue from './metaData/getValue';
6
+ function _retrieveMultiframeMetadataImageURI(imageURI) {
7
+ const lastSlashIdx = imageURI.indexOf('/frames/') + 8;
8
+ const imageIdFrameless = imageURI.slice(0, lastSlashIdx);
9
+ const frame = parseInt(imageURI.slice(lastSlashIdx), 10);
10
+ const metadata = metadataByImageURI[`${imageIdFrameless}1`];
11
+ return {
12
+ metadata,
13
+ frame,
14
+ };
15
+ }
16
+ function retrieveMultiframeMetadataImageId(imageId) {
17
+ const imageURI = imageIdToURI(imageId);
18
+ return _retrieveMultiframeMetadataImageURI(imageURI);
19
+ }
20
+ function isMultiframe(metadata) {
21
+ const numberOfFrames = getValue(metadata['00280008']);
22
+ return numberOfFrames && numberOfFrames > 1;
23
+ }
24
+ function add(imageId, metadata) {
25
+ const imageURI = imageIdToURI(imageId);
26
+ Object.defineProperty(metadata, 'isMultiframe', {
27
+ value: isMultiframe(metadata),
28
+ enumerable: false,
29
+ });
30
+ metadataByImageURI[imageURI] = metadata;
31
+ }
32
+ function get(imageId) {
33
+ const imageURI = imageIdToURI(imageId);
34
+ const metadata = metadataByImageURI[imageURI];
35
+ if (metadata && !metadata?.isMultiframe) {
36
+ return metadata;
37
+ }
38
+ const cachedMetadata = multiframeMetadataByImageURI[imageURI];
39
+ if (cachedMetadata) {
40
+ return cachedMetadata;
41
+ }
42
+ const retrievedMetadata = _retrieveMultiframeMetadataImageURI(imageURI);
43
+ if (!retrievedMetadata || !retrievedMetadata.metadata) {
44
+ return;
45
+ }
46
+ const { metadata: firstFrameMetadata, frame } = retrievedMetadata;
47
+ if (firstFrameMetadata) {
48
+ const combined = combineFrameInstance(frame, firstFrameMetadata);
49
+ multiframeMetadataByImageURI[imageURI] = combined;
50
+ return combined;
51
+ }
52
+ }
53
+ function remove(imageId) {
54
+ const imageURI = imageIdToURI(imageId);
55
+ metadataByImageURI[imageURI] = undefined;
56
+ multiframeMetadataByImageURI[imageURI] = undefined;
57
+ }
58
+ function purge() {
59
+ metadataByImageURI = [];
60
+ multiframeMetadataByImageURI = {};
61
+ }
62
+ export { metadataByImageURI, isMultiframe, retrieveMultiframeMetadataImageId };
63
+ export default {
64
+ add,
65
+ get,
66
+ remove,
67
+ purge,
68
+ };
@@ -0,0 +1 @@
1
+ export default function (): void;
@@ -0,0 +1,7 @@
1
+ import { metaData, registerImageLoader } from '@cornerstonejs/core';
2
+ import loadImage from './loadImage';
3
+ import { metaDataProvider } from './metaData';
4
+ export default function () {
5
+ registerImageLoader('wadors', loadImage);
6
+ metaData.addProvider(metaDataProvider);
7
+ }
@@ -0,0 +1,22 @@
1
+ declare function getDirectFrameInformation(dataSet: any, frame: any): {
2
+ NumberOfFrames: any;
3
+ PerFrameFunctionalInformation: {};
4
+ SharedFunctionalInformation: {};
5
+ } | {
6
+ NumberOfFrames: any;
7
+ PerFrameFunctionalInformation?: undefined;
8
+ SharedFunctionalInformation?: undefined;
9
+ };
10
+ declare function getFrameInformation(PerFrameFunctionalGroupsSequence: any, SharedFunctionalGroupsSequence: any, frameNumber: any): {
11
+ shared: {};
12
+ perFrame: {};
13
+ };
14
+ declare function getMultiframeInformation(dataSet: any): {
15
+ NumberOfFrames: any;
16
+ PerFrameFunctionalGroupsSequence: any;
17
+ SharedFunctionalGroupsSequence: any;
18
+ otherElements: any;
19
+ otherAttributtes: any;
20
+ };
21
+ declare function combineFrameInstanceDataset(frameNumber: any, dataSet: any): any;
22
+ export { combineFrameInstanceDataset, getMultiframeInformation, getFrameInformation, getDirectFrameInformation, };
@@ -0,0 +1,69 @@
1
+ function getDirectFrameInformation(dataSet, frame) {
2
+ if (!dataSet) {
3
+ return;
4
+ }
5
+ const { NumberOfFrames, PerFrameFunctionalGroupsSequence, SharedFunctionalGroupsSequence, } = getMultiframeInformation(dataSet);
6
+ if (PerFrameFunctionalGroupsSequence || NumberOfFrames > 1) {
7
+ const { shared, perFrame } = getFrameInformation(PerFrameFunctionalGroupsSequence, SharedFunctionalGroupsSequence, frame);
8
+ return {
9
+ NumberOfFrames,
10
+ PerFrameFunctionalInformation: perFrame,
11
+ SharedFunctionalInformation: shared,
12
+ };
13
+ }
14
+ return {
15
+ NumberOfFrames,
16
+ };
17
+ }
18
+ function getFrameInformation(PerFrameFunctionalGroupsSequence, SharedFunctionalGroupsSequence, frameNumber) {
19
+ const shared = {};
20
+ (SharedFunctionalGroupsSequence
21
+ ? Object.values(SharedFunctionalGroupsSequence.items[0].dataSet.elements)
22
+ : [])
23
+ .map((it) => (shared[it.tag] = it));
24
+ const perFrame = {};
25
+ (PerFrameFunctionalGroupsSequence
26
+ ? Object.values(PerFrameFunctionalGroupsSequence.items[frameNumber - 1].dataSet.elements)
27
+ : [])
28
+ .map((it) => (perFrame[it.tag] = it));
29
+ return {
30
+ shared,
31
+ perFrame,
32
+ };
33
+ }
34
+ function getMultiframeInformation(dataSet) {
35
+ if (!dataSet) {
36
+ return;
37
+ }
38
+ const { elements, ...otherAttributtes } = dataSet;
39
+ const { x52009230: PerFrameFunctionalGroupsSequence, x52009229: SharedFunctionalGroupsSequence, ...otherElements } = elements;
40
+ const NumberOfFrames = dataSet.intString('x00280008');
41
+ return {
42
+ NumberOfFrames,
43
+ PerFrameFunctionalGroupsSequence,
44
+ SharedFunctionalGroupsSequence,
45
+ otherElements,
46
+ otherAttributtes,
47
+ };
48
+ }
49
+ function combineFrameInstanceDataset(frameNumber, dataSet) {
50
+ if (!dataSet) {
51
+ return;
52
+ }
53
+ const { NumberOfFrames, PerFrameFunctionalGroupsSequence, SharedFunctionalGroupsSequence, otherElements, } = getMultiframeInformation(dataSet);
54
+ if (PerFrameFunctionalGroupsSequence || NumberOfFrames > 1) {
55
+ const { shared, perFrame } = getFrameInformation(PerFrameFunctionalGroupsSequence, SharedFunctionalGroupsSequence, frameNumber);
56
+ const newElements = {
57
+ elements: {
58
+ ...otherElements,
59
+ ...shared,
60
+ ...perFrame,
61
+ },
62
+ };
63
+ const clonedDataset = Object.create(dataSet);
64
+ const newDataset = Object.assign(clonedDataset, newElements);
65
+ return newDataset;
66
+ }
67
+ return dataSet;
68
+ }
69
+ export { combineFrameInstanceDataset, getMultiframeInformation, getFrameInformation, getDirectFrameInformation, };
@@ -0,0 +1,28 @@
1
+ import type { DataSet } from 'dicom-parser';
2
+ import type { LoadRequestFunction, DICOMLoaderDataSetWithFetchMore } from '../../types';
3
+ import { loadedDataSets } from './loadedDataSets';
4
+ export interface CornerstoneWadoLoaderCacheManagerInfoResponse {
5
+ cacheSizeInBytes: number;
6
+ numberOfDataSetsCached: number;
7
+ }
8
+ export interface CornerstoneWadoLoaderCachedPromise extends Promise<DataSet | DICOMLoaderDataSetWithFetchMore> {
9
+ cacheCount?: number;
10
+ }
11
+ declare function isLoaded(uri: string): boolean;
12
+ declare function get(uri: string): DataSet;
13
+ declare function update(uri: string, dataSet: DataSet): void;
14
+ declare function load(uri: string, loadRequest: LoadRequestFunction, imageId: string): CornerstoneWadoLoaderCachedPromise;
15
+ declare function unload(uri: string): void;
16
+ export declare function getInfo(): CornerstoneWadoLoaderCacheManagerInfoResponse;
17
+ declare function purge(): void;
18
+ declare const _default: {
19
+ isLoaded: typeof isLoaded;
20
+ load: typeof load;
21
+ unload: typeof unload;
22
+ getInfo: typeof getInfo;
23
+ purge: typeof purge;
24
+ get: typeof get;
25
+ update: typeof update;
26
+ };
27
+ export default _default;
28
+ export { loadedDataSets };