drtis-dicom-image-loader 2.19.7

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 (225) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +173 -0
  3. package/dist/esm/codecs/jpeg.d.ts +29 -0
  4. package/dist/esm/codecs/jpeg.js +884 -0
  5. package/dist/esm/codecs/jpegLossless.d.ts +157 -0
  6. package/dist/esm/codecs/jpegLossless.js +808 -0
  7. package/dist/esm/constants/index.d.ts +2 -0
  8. package/dist/esm/constants/index.js +2 -0
  9. package/dist/esm/constants/transferSyntaxes.d.ts +46 -0
  10. package/dist/esm/constants/transferSyntaxes.js +46 -0
  11. package/dist/esm/decodeImageFrameWorker.d.ts +1 -0
  12. package/dist/esm/decodeImageFrameWorker.js +269 -0
  13. package/dist/esm/imageLoader/colorSpaceConverters/convertPALETTECOLOR.d.ts +3 -0
  14. package/dist/esm/imageLoader/colorSpaceConverters/convertPALETTECOLOR.js +77 -0
  15. package/dist/esm/imageLoader/colorSpaceConverters/convertRGBColorByPixel.d.ts +2 -0
  16. package/dist/esm/imageLoader/colorSpaceConverters/convertRGBColorByPixel.js +21 -0
  17. package/dist/esm/imageLoader/colorSpaceConverters/convertRGBColorByPlane.d.ts +2 -0
  18. package/dist/esm/imageLoader/colorSpaceConverters/convertRGBColorByPlane.js +28 -0
  19. package/dist/esm/imageLoader/colorSpaceConverters/convertYBRFull422ByPixel.d.ts +2 -0
  20. package/dist/esm/imageLoader/colorSpaceConverters/convertYBRFull422ByPixel.js +44 -0
  21. package/dist/esm/imageLoader/colorSpaceConverters/convertYBRFullByPixel.d.ts +2 -0
  22. package/dist/esm/imageLoader/colorSpaceConverters/convertYBRFullByPixel.js +33 -0
  23. package/dist/esm/imageLoader/colorSpaceConverters/convertYBRFullByPlane.d.ts +2 -0
  24. package/dist/esm/imageLoader/colorSpaceConverters/convertYBRFullByPlane.js +35 -0
  25. package/dist/esm/imageLoader/colorSpaceConverters/index.d.ts +7 -0
  26. package/dist/esm/imageLoader/colorSpaceConverters/index.js +7 -0
  27. package/dist/esm/imageLoader/convertColorSpace.d.ts +1 -0
  28. package/dist/esm/imageLoader/convertColorSpace.js +40 -0
  29. package/dist/esm/imageLoader/createImage.d.ts +5 -0
  30. package/dist/esm/imageLoader/createImage.js +245 -0
  31. package/dist/esm/imageLoader/decodeImageFrame.d.ts +3 -0
  32. package/dist/esm/imageLoader/decodeImageFrame.js +63 -0
  33. package/dist/esm/imageLoader/decodeJPEGBaseline8BitColor.d.ts +4 -0
  34. package/dist/esm/imageLoader/decodeJPEGBaseline8BitColor.js +64 -0
  35. package/dist/esm/imageLoader/getImageFrame.d.ts +3 -0
  36. package/dist/esm/imageLoader/getImageFrame.js +25 -0
  37. package/dist/esm/imageLoader/getInstanceModule.d.ts +3 -0
  38. package/dist/esm/imageLoader/getInstanceModule.js +40 -0
  39. package/dist/esm/imageLoader/getMinMax.d.ts +4 -0
  40. package/dist/esm/imageLoader/getMinMax.js +15 -0
  41. package/dist/esm/imageLoader/getScalingParameters.d.ts +6 -0
  42. package/dist/esm/imageLoader/getScalingParameters.js +16 -0
  43. package/dist/esm/imageLoader/imageIdToURI.d.ts +1 -0
  44. package/dist/esm/imageLoader/imageIdToURI.js +4 -0
  45. package/dist/esm/imageLoader/index.d.ts +91 -0
  46. package/dist/esm/imageLoader/index.js +34 -0
  47. package/dist/esm/imageLoader/internal/index.d.ts +10 -0
  48. package/dist/esm/imageLoader/internal/index.js +10 -0
  49. package/dist/esm/imageLoader/internal/options.d.ts +3 -0
  50. package/dist/esm/imageLoader/internal/options.js +19 -0
  51. package/dist/esm/imageLoader/internal/rangeRequest.d.ts +9 -0
  52. package/dist/esm/imageLoader/internal/rangeRequest.js +121 -0
  53. package/dist/esm/imageLoader/internal/streamRequest.d.ts +2 -0
  54. package/dist/esm/imageLoader/internal/streamRequest.js +93 -0
  55. package/dist/esm/imageLoader/internal/xhrRequest.d.ts +3 -0
  56. package/dist/esm/imageLoader/internal/xhrRequest.js +108 -0
  57. package/dist/esm/imageLoader/isColorConversionRequired.d.ts +1 -0
  58. package/dist/esm/imageLoader/isColorConversionRequired.js +25 -0
  59. package/dist/esm/imageLoader/isJPEGBaseline8BitColor.d.ts +3 -0
  60. package/dist/esm/imageLoader/isJPEGBaseline8BitColor.js +9 -0
  61. package/dist/esm/imageLoader/isNMReconstructable.d.ts +1 -0
  62. package/dist/esm/imageLoader/isNMReconstructable.js +3 -0
  63. package/dist/esm/imageLoader/registerLoaders.d.ts +2 -0
  64. package/dist/esm/imageLoader/registerLoaders.js +7 -0
  65. package/dist/esm/imageLoader/wadors/combineFrameInstance.d.ts +12 -0
  66. package/dist/esm/imageLoader/wadors/combineFrameInstance.js +44 -0
  67. package/dist/esm/imageLoader/wadors/extractMultipart.d.ts +23 -0
  68. package/dist/esm/imageLoader/wadors/extractMultipart.js +73 -0
  69. package/dist/esm/imageLoader/wadors/findIndexOfString.d.ts +2 -0
  70. package/dist/esm/imageLoader/wadors/findIndexOfString.js +32 -0
  71. package/dist/esm/imageLoader/wadors/getImageQualityStatus.d.ts +3 -0
  72. package/dist/esm/imageLoader/wadors/getImageQualityStatus.js +8 -0
  73. package/dist/esm/imageLoader/wadors/getPixelData.d.ts +26 -0
  74. package/dist/esm/imageLoader/wadors/getPixelData.js +35 -0
  75. package/dist/esm/imageLoader/wadors/getTagValue.d.ts +1 -0
  76. package/dist/esm/imageLoader/wadors/getTagValue.js +9 -0
  77. package/dist/esm/imageLoader/wadors/index.d.ts +38 -0
  78. package/dist/esm/imageLoader/wadors/index.js +26 -0
  79. package/dist/esm/imageLoader/wadors/loadImage.d.ts +25 -0
  80. package/dist/esm/imageLoader/wadors/loadImage.js +124 -0
  81. package/dist/esm/imageLoader/wadors/loadImage_test.d.ts +1 -0
  82. package/dist/esm/imageLoader/wadors/loadImage_test.js +41 -0
  83. package/dist/esm/imageLoader/wadors/metaData/NMHelpers.d.ts +5 -0
  84. package/dist/esm/imageLoader/wadors/metaData/NMHelpers.js +38 -0
  85. package/dist/esm/imageLoader/wadors/metaData/USHelpers.d.ts +19 -0
  86. package/dist/esm/imageLoader/wadors/metaData/USHelpers.js +46 -0
  87. package/dist/esm/imageLoader/wadors/metaData/extractPositioningFromMetadata.d.ts +3 -0
  88. package/dist/esm/imageLoader/wadors/metaData/extractPositioningFromMetadata.js +18 -0
  89. package/dist/esm/imageLoader/wadors/metaData/getFirstNumberValue.d.ts +2 -0
  90. package/dist/esm/imageLoader/wadors/metaData/getFirstNumberValue.js +6 -0
  91. package/dist/esm/imageLoader/wadors/metaData/getNumberString.d.ts +3 -0
  92. package/dist/esm/imageLoader/wadors/metaData/getNumberString.js +9 -0
  93. package/dist/esm/imageLoader/wadors/metaData/getNumberValue.d.ts +3 -0
  94. package/dist/esm/imageLoader/wadors/metaData/getNumberValue.js +9 -0
  95. package/dist/esm/imageLoader/wadors/metaData/getNumberValues.d.ts +3 -0
  96. package/dist/esm/imageLoader/wadors/metaData/getNumberValues.js +20 -0
  97. package/dist/esm/imageLoader/wadors/metaData/getOverlayPlaneModule.d.ts +4 -0
  98. package/dist/esm/imageLoader/wadors/metaData/getOverlayPlaneModule.js +38 -0
  99. package/dist/esm/imageLoader/wadors/metaData/getSequenceItems.d.ts +3 -0
  100. package/dist/esm/imageLoader/wadors/metaData/getSequenceItems.js +14 -0
  101. package/dist/esm/imageLoader/wadors/metaData/getValue.d.ts +3 -0
  102. package/dist/esm/imageLoader/wadors/metaData/getValue.js +14 -0
  103. package/dist/esm/imageLoader/wadors/metaData/index.d.ts +7 -0
  104. package/dist/esm/imageLoader/wadors/metaData/index.js +7 -0
  105. package/dist/esm/imageLoader/wadors/metaData/metaDataProvider.d.ts +14 -0
  106. package/dist/esm/imageLoader/wadors/metaData/metaDataProvider.js +278 -0
  107. package/dist/esm/imageLoader/wadors/metaDataManager.d.ts +19 -0
  108. package/dist/esm/imageLoader/wadors/metaDataManager.js +68 -0
  109. package/dist/esm/imageLoader/wadors/register.d.ts +1 -0
  110. package/dist/esm/imageLoader/wadors/register.js +7 -0
  111. package/dist/esm/imageLoader/wadouri/combineFrameInstanceDataset.d.ts +22 -0
  112. package/dist/esm/imageLoader/wadouri/combineFrameInstanceDataset.js +69 -0
  113. package/dist/esm/imageLoader/wadouri/dataSetCacheManager.d.ts +28 -0
  114. package/dist/esm/imageLoader/wadouri/dataSetCacheManager.js +141 -0
  115. package/dist/esm/imageLoader/wadouri/dataSetCacheManager_test.d.ts +1 -0
  116. package/dist/esm/imageLoader/wadouri/dataSetCacheManager_test.js +10 -0
  117. package/dist/esm/imageLoader/wadouri/dataset-from-partial-content.d.ts +6 -0
  118. package/dist/esm/imageLoader/wadouri/dataset-from-partial-content.js +55 -0
  119. package/dist/esm/imageLoader/wadouri/fileManager.d.ts +11 -0
  120. package/dist/esm/imageLoader/wadouri/fileManager.js +20 -0
  121. package/dist/esm/imageLoader/wadouri/getEncapsulatedImageFrame.d.ts +2 -0
  122. package/dist/esm/imageLoader/wadouri/getEncapsulatedImageFrame.js +31 -0
  123. package/dist/esm/imageLoader/wadouri/getPixelData.d.ts +3 -0
  124. package/dist/esm/imageLoader/wadouri/getPixelData.js +13 -0
  125. package/dist/esm/imageLoader/wadouri/getUncompressedImageFrame.d.ts +3 -0
  126. package/dist/esm/imageLoader/wadouri/getUncompressedImageFrame.js +47 -0
  127. package/dist/esm/imageLoader/wadouri/index.d.ts +56 -0
  128. package/dist/esm/imageLoader/wadouri/index.js +35 -0
  129. package/dist/esm/imageLoader/wadouri/loadFileRequest.d.ts +2 -0
  130. package/dist/esm/imageLoader/wadouri/loadFileRequest.js +17 -0
  131. package/dist/esm/imageLoader/wadouri/loadImage.d.ts +9 -0
  132. package/dist/esm/imageLoader/wadouri/loadImage.js +108 -0
  133. package/dist/esm/imageLoader/wadouri/loadedDataSets.d.ts +7 -0
  134. package/dist/esm/imageLoader/wadouri/loadedDataSets.js +5 -0
  135. package/dist/esm/imageLoader/wadouri/metaData/USHelpers.d.ts +2 -0
  136. package/dist/esm/imageLoader/wadouri/metaData/USHelpers.js +44 -0
  137. package/dist/esm/imageLoader/wadouri/metaData/extractPositioningFromDataset.d.ts +6 -0
  138. package/dist/esm/imageLoader/wadouri/metaData/extractPositioningFromDataset.js +80 -0
  139. package/dist/esm/imageLoader/wadouri/metaData/getImagePixelModule.d.ts +4 -0
  140. package/dist/esm/imageLoader/wadouri/metaData/getImagePixelModule.js +79 -0
  141. package/dist/esm/imageLoader/wadouri/metaData/getLUTs.d.ts +4 -0
  142. package/dist/esm/imageLoader/wadouri/metaData/getLUTs.js +44 -0
  143. package/dist/esm/imageLoader/wadouri/metaData/getModalityLUTOutputPixelRepresentation.d.ts +3 -0
  144. package/dist/esm/imageLoader/wadouri/metaData/getModalityLUTOutputPixelRepresentation.js +30 -0
  145. package/dist/esm/imageLoader/wadouri/metaData/getNumberValues.d.ts +3 -0
  146. package/dist/esm/imageLoader/wadouri/metaData/getNumberValues.js +16 -0
  147. package/dist/esm/imageLoader/wadouri/metaData/getOverlayPlaneModule.d.ts +4 -0
  148. package/dist/esm/imageLoader/wadouri/metaData/getOverlayPlaneModule.js +36 -0
  149. package/dist/esm/imageLoader/wadouri/metaData/index.d.ts +5 -0
  150. package/dist/esm/imageLoader/wadouri/metaData/index.js +5 -0
  151. package/dist/esm/imageLoader/wadouri/metaData/metaDataProvider.d.ts +4 -0
  152. package/dist/esm/imageLoader/wadouri/metaData/metaDataProvider.js +228 -0
  153. package/dist/esm/imageLoader/wadouri/parseImageId.d.ts +8 -0
  154. package/dist/esm/imageLoader/wadouri/parseImageId.js +20 -0
  155. package/dist/esm/imageLoader/wadouri/register.d.ts +1 -0
  156. package/dist/esm/imageLoader/wadouri/register.js +9 -0
  157. package/dist/esm/imageLoader/wadouri/retrieveMultiframeDataset.d.ts +17 -0
  158. package/dist/esm/imageLoader/wadouri/retrieveMultiframeDataset.js +57 -0
  159. package/dist/esm/imageLoader/wadouri/unpackBinaryFrame.d.ts +3 -0
  160. package/dist/esm/imageLoader/wadouri/unpackBinaryFrame.js +14 -0
  161. package/dist/esm/index.d.ts +97 -0
  162. package/dist/esm/index.js +38 -0
  163. package/dist/esm/init.d.ts +3 -0
  164. package/dist/esm/init.js +23 -0
  165. package/dist/esm/shared/decoders/decodeBigEndian.d.ts +4 -0
  166. package/dist/esm/shared/decoders/decodeBigEndian.js +28 -0
  167. package/dist/esm/shared/decoders/decodeHTJ2K.d.ts +5 -0
  168. package/dist/esm/shared/decoders/decodeHTJ2K.js +109 -0
  169. package/dist/esm/shared/decoders/decodeJPEG2000.d.ts +5 -0
  170. package/dist/esm/shared/decoders/decodeJPEG2000.js +93 -0
  171. package/dist/esm/shared/decoders/decodeJPEGBaseline12Bit-js.d.ts +6 -0
  172. package/dist/esm/shared/decoders/decodeJPEGBaseline12Bit-js.js +36 -0
  173. package/dist/esm/shared/decoders/decodeJPEGBaseline12Bit-wasm-not-yet-working.d.ts +1 -0
  174. package/dist/esm/shared/decoders/decodeJPEGBaseline12Bit-wasm-not-yet-working.js +0 -0
  175. package/dist/esm/shared/decoders/decodeJPEGBaseline8Bit.d.ts +3 -0
  176. package/dist/esm/shared/decoders/decodeJPEGBaseline8Bit.js +62 -0
  177. package/dist/esm/shared/decoders/decodeJPEGLS.d.ts +5 -0
  178. package/dist/esm/shared/decoders/decodeJPEGLS.js +84 -0
  179. package/dist/esm/shared/decoders/decodeJPEGLossless copy.d.ts +6 -0
  180. package/dist/esm/shared/decoders/decodeJPEGLossless copy.js +39 -0
  181. package/dist/esm/shared/decoders/decodeJPEGLossless.d.ts +6 -0
  182. package/dist/esm/shared/decoders/decodeJPEGLossless.js +39 -0
  183. package/dist/esm/shared/decoders/decodeLittleEndian.d.ts +4 -0
  184. package/dist/esm/shared/decoders/decodeLittleEndian.js +29 -0
  185. package/dist/esm/shared/decoders/decodeRLE.d.ts +4 -0
  186. package/dist/esm/shared/decoders/decodeRLE.js +128 -0
  187. package/dist/esm/shared/getMinMax.d.ts +6 -0
  188. package/dist/esm/shared/getMinMax.js +16 -0
  189. package/dist/esm/shared/getMinMax_test.d.ts +1 -0
  190. package/dist/esm/shared/getMinMax_test.js +9 -0
  191. package/dist/esm/shared/getPixelDataTypeFromMinMax.d.ts +3 -0
  192. package/dist/esm/shared/getPixelDataTypeFromMinMax.js +26 -0
  193. package/dist/esm/shared/isColorImage.d.ts +1 -0
  194. package/dist/esm/shared/isColorImage.js +10 -0
  195. package/dist/esm/shared/scaling/bilinear.d.ts +1 -0
  196. package/dist/esm/shared/scaling/bilinear.js +32 -0
  197. package/dist/esm/shared/scaling/replicate.d.ts +1 -0
  198. package/dist/esm/shared/scaling/replicate.js +20 -0
  199. package/dist/esm/shared/scaling/scaleArray.d.ts +2 -0
  200. package/dist/esm/shared/scaling/scaleArray.js +17 -0
  201. package/dist/esm/types/DICOMLoaderDataSetWithFetchMore.d.ts +9 -0
  202. package/dist/esm/types/DICOMLoaderDataSetWithFetchMore.js +0 -0
  203. package/dist/esm/types/DICOMLoaderIImage.d.ts +11 -0
  204. package/dist/esm/types/DICOMLoaderIImage.js +0 -0
  205. package/dist/esm/types/DICOMLoaderImageOptions.d.ts +23 -0
  206. package/dist/esm/types/DICOMLoaderImageOptions.js +0 -0
  207. package/dist/esm/types/LoadRequestFunction.d.ts +1 -0
  208. package/dist/esm/types/LoadRequestFunction.js +0 -0
  209. package/dist/esm/types/LoaderDecodeOptions.d.ts +2 -0
  210. package/dist/esm/types/LoaderDecodeOptions.js +0 -0
  211. package/dist/esm/types/LoaderOptions.d.ts +16 -0
  212. package/dist/esm/types/LoaderOptions.js +0 -0
  213. package/dist/esm/types/LutType.d.ts +6 -0
  214. package/dist/esm/types/LutType.js +0 -0
  215. package/dist/esm/types/WADORSMetaData.d.ts +4 -0
  216. package/dist/esm/types/WADORSMetaData.js +0 -0
  217. package/dist/esm/types/WebWorkerTypes.d.ts +64 -0
  218. package/dist/esm/types/WebWorkerTypes.js +0 -0
  219. package/dist/esm/types/XHRRequest.d.ts +16 -0
  220. package/dist/esm/types/XHRRequest.js +0 -0
  221. package/dist/esm/types/index.d.ts +11 -0
  222. package/dist/esm/types/index.js +0 -0
  223. package/dist/esm/version.d.ts +2 -0
  224. package/dist/esm/version.js +1 -0
  225. package/package.json +134 -0
@@ -0,0 +1,14 @@
1
+ function getSequenceItems(element) {
2
+ if (!element?.Value?.length) {
3
+ return [];
4
+ }
5
+ if (!Array.isArray(element.Value)) {
6
+ if (typeof element.Value === 'object') {
7
+ console.warn('Warning: Value should be an array, but an object was found. Encapsulating the object in an array.');
8
+ return [element.Value];
9
+ }
10
+ return [];
11
+ }
12
+ return element.Value;
13
+ }
14
+ export default getSequenceItems;
@@ -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,278 @@
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
+ voiLUTFunction: getValue(metaData['00281056']),
198
+ };
199
+ }
200
+ if (type === MetadataModules.MODALITY_LUT) {
201
+ return {
202
+ rescaleIntercept: getNumberValue(metaData['00281052']),
203
+ rescaleSlope: getNumberValue(metaData['00281053']),
204
+ rescaleType: getValue(metaData['00281054']),
205
+ };
206
+ }
207
+ if (type === MetadataModules.SOP_COMMON) {
208
+ return {
209
+ sopClassUID: getValue(metaData['00080016']),
210
+ sopInstanceUID: getValue(metaData['00080018']),
211
+ };
212
+ }
213
+ if (type === MetadataModules.PET_ISOTOPE) {
214
+ const radiopharmaceuticalInfo = getValue(metaData['00540016']);
215
+ if (radiopharmaceuticalInfo === undefined) {
216
+ return;
217
+ }
218
+ return {
219
+ radiopharmaceuticalInfo: {
220
+ radiopharmaceuticalStartTime: dicomParser.parseTM(getValue(radiopharmaceuticalInfo['00181072'], 0, '')),
221
+ radiopharmaceuticalStartDateTime: getValue(radiopharmaceuticalInfo['00181078'], 0, ''),
222
+ radionuclideTotalDose: getNumberValue(radiopharmaceuticalInfo['00181074']),
223
+ radionuclideHalfLife: getNumberValue(radiopharmaceuticalInfo['00181075']),
224
+ },
225
+ };
226
+ }
227
+ if (type === MetadataModules.OVERLAY_PLANE) {
228
+ return getOverlayPlaneModule(metaData);
229
+ }
230
+ if (type === 'transferSyntax') {
231
+ return getTransferSyntax(imageId, metaData);
232
+ }
233
+ if (type === MetadataModules.PET_SERIES) {
234
+ return {
235
+ correctedImage: getValue(metaData['00280051']),
236
+ units: getValue(metaData['00541001']),
237
+ decayCorrection: getValue(metaData['00541102']),
238
+ };
239
+ }
240
+ if (type === MetadataModules.PET_IMAGE) {
241
+ return {
242
+ frameReferenceTime: getNumberValue(metaData['00541300']),
243
+ actualFrameDuration: getNumberValue(metaData['00181242']),
244
+ };
245
+ }
246
+ if (type === 'instance') {
247
+ return getInstanceModule(imageId, metaDataProvider, instanceModuleNames);
248
+ }
249
+ }
250
+ export function getImageUrlModule(imageId, metaData) {
251
+ const { transferSyntaxUID } = getTransferSyntax(imageId, metaData);
252
+ const isVideo = utilities.isVideoTransferSyntax(transferSyntaxUID);
253
+ const imageUrl = imageId.substring(7);
254
+ const thumbnail = imageUrl.replace('/frames/', '/thumbnail/');
255
+ let rendered = imageUrl.replace('/frames/', '/rendered/');
256
+ if (isVideo) {
257
+ rendered = rendered.replace('/rendered/1', '/rendered');
258
+ }
259
+ return {
260
+ isVideo,
261
+ rendered,
262
+ thumbnail,
263
+ };
264
+ }
265
+ export function getCineModule(imageId, metaData) {
266
+ const cineRate = getValue(metaData['00180040']);
267
+ return {
268
+ cineRate,
269
+ numberOfFrames: getNumberValue(metaData['00280008']),
270
+ };
271
+ }
272
+ export function getTransferSyntax(imageId, metaData) {
273
+ return {
274
+ transferSyntaxUID: getValue(metaData['00020010']) ||
275
+ getValue(metaData['00083002']),
276
+ };
277
+ }
278
+ 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 };