@cornerstonejs/dicom-image-loader 2.0.0-beta.2 → 2.0.0-beta.21

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 (248) hide show
  1. package/dist/920.bundle.min.js +3 -0
  2. package/dist/920.bundle.min.js.LICENSE.txt +5 -0
  3. package/dist/920.bundle.min.js.map +1 -0
  4. package/dist/cornerstoneDICOMImageLoader.bundle.min.js +1 -1
  5. package/dist/cornerstoneDICOMImageLoader.bundle.min.js.map +1 -1
  6. package/dist/dynamic-import/{65916ef3def695744bda.wasm → 031089e563a18ada8441.wasm} +0 -0
  7. package/dist/dynamic-import/20fc4c659b85ccd2a9c0.wasm +0 -0
  8. package/dist/dynamic-import/584.min.js +2 -0
  9. package/dist/dynamic-import/584.min.js.map +1 -0
  10. package/dist/dynamic-import/610.min.js +2 -0
  11. package/dist/dynamic-import/610.min.js.map +1 -0
  12. package/dist/dynamic-import/918.min.js +2 -0
  13. package/dist/dynamic-import/918.min.js.map +1 -0
  14. package/dist/dynamic-import/958.min.js +3 -0
  15. package/dist/dynamic-import/958.min.js.LICENSE.txt +5 -0
  16. package/dist/dynamic-import/958.min.js.map +1 -0
  17. package/dist/dynamic-import/cornerstoneDICOMImageLoader.min.js +1 -1
  18. package/dist/dynamic-import/cornerstoneDICOMImageLoader.min.js.map +1 -1
  19. package/dist/esm/codecs/jpeg.d.ts +1 -0
  20. package/dist/esm/codecs/jpeg.js +890 -0
  21. package/dist/esm/codecs/jpegLossless.d.ts +7 -0
  22. package/dist/esm/codecs/jpegLossless.js +1219 -0
  23. package/dist/esm/src/constants/transferSyntaxes.d.ts +46 -0
  24. package/dist/esm/src/constants/transferSyntaxes.js +46 -0
  25. package/dist/esm/src/decodeImageFrameWorker.d.ts +1 -0
  26. package/dist/esm/src/decodeImageFrameWorker.js +262 -0
  27. package/dist/esm/src/externalModules.d.ts +5 -0
  28. package/dist/esm/src/externalModules.js +44 -0
  29. package/dist/esm/src/imageLoader/colorSpaceConverters/convertPALETTECOLOR.d.ts +3 -0
  30. package/dist/esm/src/imageLoader/colorSpaceConverters/convertPALETTECOLOR.js +77 -0
  31. package/dist/esm/src/imageLoader/colorSpaceConverters/convertRGBColorByPixel.d.ts +2 -0
  32. package/dist/esm/src/imageLoader/colorSpaceConverters/convertRGBColorByPixel.js +21 -0
  33. package/dist/esm/src/imageLoader/colorSpaceConverters/convertRGBColorByPlane.d.ts +2 -0
  34. package/dist/esm/src/imageLoader/colorSpaceConverters/convertRGBColorByPlane.js +28 -0
  35. package/dist/esm/src/imageLoader/colorSpaceConverters/convertYBRFull422ByPixel.d.ts +2 -0
  36. package/dist/esm/src/imageLoader/colorSpaceConverters/convertYBRFull422ByPixel.js +44 -0
  37. package/dist/esm/src/imageLoader/colorSpaceConverters/convertYBRFullByPixel.d.ts +2 -0
  38. package/dist/esm/src/imageLoader/colorSpaceConverters/convertYBRFullByPixel.js +33 -0
  39. package/dist/esm/src/imageLoader/colorSpaceConverters/convertYBRFullByPlane.d.ts +2 -0
  40. package/dist/esm/src/imageLoader/colorSpaceConverters/convertYBRFullByPlane.js +35 -0
  41. package/dist/esm/src/imageLoader/colorSpaceConverters/index.d.ts +7 -0
  42. package/dist/esm/src/imageLoader/colorSpaceConverters/index.js +7 -0
  43. package/dist/esm/src/imageLoader/configure.d.ts +3 -0
  44. package/dist/esm/src/imageLoader/configure.js +11 -0
  45. package/dist/esm/src/imageLoader/convertColorSpace.d.ts +1 -0
  46. package/dist/esm/src/imageLoader/convertColorSpace.js +40 -0
  47. package/dist/esm/src/imageLoader/createImage.d.ts +5 -0
  48. package/dist/esm/src/imageLoader/createImage.js +241 -0
  49. package/dist/esm/src/imageLoader/decodeImageFrame.d.ts +3 -0
  50. package/dist/esm/src/imageLoader/decodeImageFrame.js +63 -0
  51. package/dist/esm/src/imageLoader/decodeJPEGBaseline8BitColor.d.ts +4 -0
  52. package/dist/esm/src/imageLoader/decodeJPEGBaseline8BitColor.js +64 -0
  53. package/dist/esm/src/imageLoader/getImageFrame.d.ts +3 -0
  54. package/dist/esm/src/imageLoader/getImageFrame.js +26 -0
  55. package/dist/esm/src/imageLoader/getInstanceModule.d.ts +3 -0
  56. package/dist/esm/src/imageLoader/getInstanceModule.js +40 -0
  57. package/dist/esm/src/imageLoader/getMinMax.d.ts +4 -0
  58. package/dist/esm/src/imageLoader/getMinMax.js +15 -0
  59. package/dist/esm/src/imageLoader/getScalingParameters.d.ts +6 -0
  60. package/dist/esm/src/imageLoader/getScalingParameters.js +16 -0
  61. package/dist/esm/src/imageLoader/imageIdToURI.d.ts +1 -0
  62. package/dist/esm/src/imageLoader/imageIdToURI.js +4 -0
  63. package/dist/esm/src/imageLoader/index.d.ts +94 -0
  64. package/dist/esm/src/imageLoader/index.js +36 -0
  65. package/dist/esm/src/imageLoader/internal/index.d.ts +10 -0
  66. package/dist/esm/src/imageLoader/internal/index.js +10 -0
  67. package/dist/esm/src/imageLoader/internal/options.d.ts +3 -0
  68. package/dist/esm/src/imageLoader/internal/options.js +19 -0
  69. package/dist/esm/src/imageLoader/internal/rangeRequest.d.ts +9 -0
  70. package/dist/esm/src/imageLoader/internal/rangeRequest.js +121 -0
  71. package/dist/esm/src/imageLoader/internal/streamRequest.d.ts +2 -0
  72. package/dist/esm/src/imageLoader/internal/streamRequest.js +92 -0
  73. package/dist/esm/src/imageLoader/internal/xhrRequest.d.ts +3 -0
  74. package/dist/esm/src/imageLoader/internal/xhrRequest.js +102 -0
  75. package/dist/esm/src/imageLoader/isColorConversionRequired.d.ts +1 -0
  76. package/dist/esm/src/imageLoader/isColorConversionRequired.js +22 -0
  77. package/dist/esm/src/imageLoader/isJPEGBaseline8BitColor.d.ts +3 -0
  78. package/dist/esm/src/imageLoader/isJPEGBaseline8BitColor.js +9 -0
  79. package/dist/esm/src/imageLoader/isNMReconstructable.d.ts +1 -0
  80. package/dist/esm/src/imageLoader/isNMReconstructable.js +3 -0
  81. package/dist/esm/src/imageLoader/registerLoaders.d.ts +2 -0
  82. package/dist/esm/src/imageLoader/registerLoaders.js +7 -0
  83. package/dist/esm/src/imageLoader/wadors/combineFrameInstance.d.ts +12 -0
  84. package/dist/esm/src/imageLoader/wadors/combineFrameInstance.js +44 -0
  85. package/dist/esm/src/imageLoader/wadors/extractMultipart.d.ts +23 -0
  86. package/dist/esm/src/imageLoader/wadors/extractMultipart.js +73 -0
  87. package/dist/esm/src/imageLoader/wadors/findIndexOfString.d.ts +2 -0
  88. package/dist/esm/src/imageLoader/wadors/findIndexOfString.js +32 -0
  89. package/dist/esm/src/imageLoader/wadors/getImageQualityStatus.d.ts +3 -0
  90. package/dist/esm/src/imageLoader/wadors/getImageQualityStatus.js +8 -0
  91. package/dist/esm/src/imageLoader/wadors/getPixelData.d.ts +26 -0
  92. package/dist/esm/src/imageLoader/wadors/getPixelData.js +35 -0
  93. package/dist/esm/src/imageLoader/wadors/getTagValue.d.ts +1 -0
  94. package/dist/esm/src/imageLoader/wadors/getTagValue.js +9 -0
  95. package/dist/esm/src/imageLoader/wadors/index.d.ts +25 -0
  96. package/dist/esm/src/imageLoader/wadors/index.js +21 -0
  97. package/dist/esm/src/imageLoader/wadors/loadImage.d.ts +25 -0
  98. package/dist/esm/src/imageLoader/wadors/loadImage.js +125 -0
  99. package/dist/esm/src/imageLoader/wadors/loadImage_test.d.ts +1 -0
  100. package/dist/esm/src/imageLoader/wadors/loadImage_test.js +41 -0
  101. package/dist/esm/src/imageLoader/wadors/metaData/NMHelpers.d.ts +5 -0
  102. package/dist/esm/src/imageLoader/wadors/metaData/NMHelpers.js +38 -0
  103. package/dist/esm/src/imageLoader/wadors/metaData/USHelpers.d.ts +19 -0
  104. package/dist/esm/src/imageLoader/wadors/metaData/USHelpers.js +46 -0
  105. package/dist/esm/src/imageLoader/wadors/metaData/extractPositioningFromMetadata.d.ts +3 -0
  106. package/dist/esm/src/imageLoader/wadors/metaData/extractPositioningFromMetadata.js +18 -0
  107. package/dist/esm/src/imageLoader/wadors/metaData/getFirstNumberValue.d.ts +2 -0
  108. package/dist/esm/src/imageLoader/wadors/metaData/getFirstNumberValue.js +6 -0
  109. package/dist/esm/src/imageLoader/wadors/metaData/getNumberString.d.ts +3 -0
  110. package/dist/esm/src/imageLoader/wadors/metaData/getNumberString.js +9 -0
  111. package/dist/esm/src/imageLoader/wadors/metaData/getNumberValue.d.ts +3 -0
  112. package/dist/esm/src/imageLoader/wadors/metaData/getNumberValue.js +9 -0
  113. package/dist/esm/src/imageLoader/wadors/metaData/getNumberValues.d.ts +3 -0
  114. package/dist/esm/src/imageLoader/wadors/metaData/getNumberValues.js +20 -0
  115. package/dist/esm/src/imageLoader/wadors/metaData/getOverlayPlaneModule.d.ts +4 -0
  116. package/dist/esm/src/imageLoader/wadors/metaData/getOverlayPlaneModule.js +38 -0
  117. package/dist/esm/src/imageLoader/wadors/metaData/getSequenceItems.d.ts +3 -0
  118. package/dist/esm/src/imageLoader/wadors/metaData/getSequenceItems.js +14 -0
  119. package/dist/esm/src/imageLoader/wadors/metaData/getValue.d.ts +3 -0
  120. package/dist/esm/src/imageLoader/wadors/metaData/getValue.js +14 -0
  121. package/dist/esm/src/imageLoader/wadors/metaData/index.d.ts +7 -0
  122. package/dist/esm/src/imageLoader/wadors/metaData/index.js +7 -0
  123. package/dist/esm/src/imageLoader/wadors/metaData/metaDataProvider.d.ts +14 -0
  124. package/dist/esm/src/imageLoader/wadors/metaData/metaDataProvider.js +261 -0
  125. package/dist/esm/src/imageLoader/wadors/metaDataManager.d.ts +14 -0
  126. package/dist/esm/src/imageLoader/wadors/metaDataManager.js +50 -0
  127. package/dist/esm/src/imageLoader/wadors/register.d.ts +1 -0
  128. package/dist/esm/src/imageLoader/wadors/register.js +6 -0
  129. package/dist/esm/src/imageLoader/wadors/retrieveMultiframeMetadata.d.ts +15 -0
  130. package/dist/esm/src/imageLoader/wadors/retrieveMultiframeMetadata.js +26 -0
  131. package/dist/esm/src/imageLoader/wadouri/combineFrameInstanceDataset.d.ts +22 -0
  132. package/dist/esm/src/imageLoader/wadouri/combineFrameInstanceDataset.js +69 -0
  133. package/dist/esm/src/imageLoader/wadouri/dataSetCacheManager.d.ts +31 -0
  134. package/dist/esm/src/imageLoader/wadouri/dataSetCacheManager.js +142 -0
  135. package/dist/esm/src/imageLoader/wadouri/dataSetCacheManager_test.d.ts +1 -0
  136. package/dist/esm/src/imageLoader/wadouri/dataSetCacheManager_test.js +10 -0
  137. package/dist/esm/src/imageLoader/wadouri/dataset-from-partial-content.d.ts +6 -0
  138. package/dist/esm/src/imageLoader/wadouri/dataset-from-partial-content.js +56 -0
  139. package/dist/esm/src/imageLoader/wadouri/fileManager.d.ts +11 -0
  140. package/dist/esm/src/imageLoader/wadouri/fileManager.js +20 -0
  141. package/dist/esm/src/imageLoader/wadouri/getEncapsulatedImageFrame.d.ts +2 -0
  142. package/dist/esm/src/imageLoader/wadouri/getEncapsulatedImageFrame.js +33 -0
  143. package/dist/esm/src/imageLoader/wadouri/getPixelData.d.ts +3 -0
  144. package/dist/esm/src/imageLoader/wadouri/getPixelData.js +13 -0
  145. package/dist/esm/src/imageLoader/wadouri/getUncompressedImageFrame.d.ts +3 -0
  146. package/dist/esm/src/imageLoader/wadouri/getUncompressedImageFrame.js +47 -0
  147. package/dist/esm/src/imageLoader/wadouri/index.d.ts +42 -0
  148. package/dist/esm/src/imageLoader/wadouri/index.js +31 -0
  149. package/dist/esm/src/imageLoader/wadouri/loadFileRequest.d.ts +2 -0
  150. package/dist/esm/src/imageLoader/wadouri/loadFileRequest.js +17 -0
  151. package/dist/esm/src/imageLoader/wadouri/loadImage.d.ts +9 -0
  152. package/dist/esm/src/imageLoader/wadouri/loadImage.js +104 -0
  153. package/dist/esm/src/imageLoader/wadouri/metaData/USHelpers.d.ts +2 -0
  154. package/dist/esm/src/imageLoader/wadouri/metaData/USHelpers.js +44 -0
  155. package/dist/esm/src/imageLoader/wadouri/metaData/extractPositioningFromDataset.d.ts +6 -0
  156. package/dist/esm/src/imageLoader/wadouri/metaData/extractPositioningFromDataset.js +80 -0
  157. package/dist/esm/src/imageLoader/wadouri/metaData/getImagePixelModule.d.ts +4 -0
  158. package/dist/esm/src/imageLoader/wadouri/metaData/getImagePixelModule.js +79 -0
  159. package/dist/esm/src/imageLoader/wadouri/metaData/getLUTs.d.ts +4 -0
  160. package/dist/esm/src/imageLoader/wadouri/metaData/getLUTs.js +44 -0
  161. package/dist/esm/src/imageLoader/wadouri/metaData/getModalityLUTOutputPixelRepresentation.d.ts +3 -0
  162. package/dist/esm/src/imageLoader/wadouri/metaData/getModalityLUTOutputPixelRepresentation.js +30 -0
  163. package/dist/esm/src/imageLoader/wadouri/metaData/getNumberValues.d.ts +3 -0
  164. package/dist/esm/src/imageLoader/wadouri/metaData/getNumberValues.js +16 -0
  165. package/dist/esm/src/imageLoader/wadouri/metaData/getOverlayPlaneModule.d.ts +4 -0
  166. package/dist/esm/src/imageLoader/wadouri/metaData/getOverlayPlaneModule.js +36 -0
  167. package/dist/esm/src/imageLoader/wadouri/metaData/index.d.ts +5 -0
  168. package/dist/esm/src/imageLoader/wadouri/metaData/index.js +5 -0
  169. package/dist/esm/src/imageLoader/wadouri/metaData/metaDataProvider.d.ts +2 -0
  170. package/dist/esm/src/imageLoader/wadouri/metaData/metaDataProvider.js +223 -0
  171. package/dist/esm/src/imageLoader/wadouri/parseImageId.d.ts +8 -0
  172. package/dist/esm/src/imageLoader/wadouri/parseImageId.js +20 -0
  173. package/dist/esm/src/imageLoader/wadouri/register.d.ts +2 -0
  174. package/dist/esm/src/imageLoader/wadouri/register.js +8 -0
  175. package/dist/esm/src/imageLoader/wadouri/retrieveMultiframeDataset.d.ts +17 -0
  176. package/dist/esm/src/imageLoader/wadouri/retrieveMultiframeDataset.js +57 -0
  177. package/dist/esm/src/imageLoader/wadouri/unpackBinaryFrame.d.ts +3 -0
  178. package/dist/esm/src/imageLoader/wadouri/unpackBinaryFrame.js +14 -0
  179. package/dist/esm/src/shared/decoders/decodeBigEndian.d.ts +4 -0
  180. package/dist/esm/src/shared/decoders/decodeBigEndian.js +28 -0
  181. package/dist/esm/src/shared/decoders/decodeHTJ2K.d.ts +5 -0
  182. package/dist/esm/src/shared/decoders/decodeHTJ2K.js +109 -0
  183. package/dist/esm/src/shared/decoders/decodeJPEG2000.d.ts +5 -0
  184. package/dist/esm/src/shared/decoders/decodeJPEG2000.js +93 -0
  185. package/dist/esm/src/shared/decoders/decodeJPEGBaseline12Bit-js.d.ts +6 -0
  186. package/dist/esm/src/shared/decoders/decodeJPEGBaseline12Bit-js.js +34 -0
  187. package/dist/esm/src/shared/decoders/decodeJPEGBaseline12Bit-wasm-not-yet-working.d.ts +1 -0
  188. package/dist/esm/src/shared/decoders/decodeJPEGBaseline12Bit-wasm-not-yet-working.js +1 -0
  189. package/dist/esm/src/shared/decoders/decodeJPEGBaseline8Bit.d.ts +3 -0
  190. package/dist/esm/src/shared/decoders/decodeJPEGBaseline8Bit.js +62 -0
  191. package/dist/esm/src/shared/decoders/decodeJPEGLS.d.ts +5 -0
  192. package/dist/esm/src/shared/decoders/decodeJPEGLS.js +84 -0
  193. package/dist/esm/src/shared/decoders/decodeJPEGLossless.d.ts +6 -0
  194. package/dist/esm/src/shared/decoders/decodeJPEGLossless.js +39 -0
  195. package/dist/esm/src/shared/decoders/decodeLittleEndian.d.ts +4 -0
  196. package/dist/esm/src/shared/decoders/decodeLittleEndian.js +29 -0
  197. package/dist/esm/src/shared/decoders/decodeRLE.d.ts +4 -0
  198. package/dist/esm/src/shared/decoders/decodeRLE.js +128 -0
  199. package/dist/esm/src/shared/getMinMax.d.ts +6 -0
  200. package/dist/esm/src/shared/getMinMax.js +16 -0
  201. package/dist/esm/src/shared/getMinMax_test.d.ts +1 -0
  202. package/dist/esm/src/shared/getMinMax_test.js +9 -0
  203. package/dist/esm/src/shared/getPixelDataTypeFromMinMax.d.ts +2 -0
  204. package/dist/esm/src/shared/getPixelDataTypeFromMinMax.js +22 -0
  205. package/dist/esm/src/shared/isColorImage.d.ts +1 -0
  206. package/dist/esm/src/shared/isColorImage.js +10 -0
  207. package/dist/esm/src/shared/scaling/bilinear.d.ts +1 -0
  208. package/dist/esm/src/shared/scaling/bilinear.js +32 -0
  209. package/dist/esm/src/shared/scaling/replicate.d.ts +1 -0
  210. package/dist/esm/src/shared/scaling/replicate.js +20 -0
  211. package/dist/esm/src/shared/scaling/scaleArray.d.ts +2 -0
  212. package/dist/esm/src/shared/scaling/scaleArray.js +15 -0
  213. package/dist/esm/src/types/DICOMLoaderDataSetWithFetchMore.d.ts +9 -0
  214. package/dist/esm/src/types/DICOMLoaderDataSetWithFetchMore.js +1 -0
  215. package/dist/esm/src/types/DICOMLoaderIImage.d.ts +12 -0
  216. package/dist/esm/src/types/DICOMLoaderIImage.js +1 -0
  217. package/dist/esm/src/types/DICOMLoaderImageOptions.d.ts +23 -0
  218. package/dist/esm/src/types/DICOMLoaderImageOptions.js +1 -0
  219. package/dist/esm/src/types/LoadRequestFunction.d.ts +1 -0
  220. package/dist/esm/src/types/LoadRequestFunction.js +1 -0
  221. package/dist/esm/src/types/LoaderDecodeOptions.d.ts +2 -0
  222. package/dist/esm/src/types/LoaderDecodeOptions.js +1 -0
  223. package/dist/esm/src/types/LoaderOptions.d.ts +18 -0
  224. package/dist/esm/src/types/LoaderOptions.js +1 -0
  225. package/dist/esm/src/types/LutType.d.ts +6 -0
  226. package/dist/esm/src/types/LutType.js +1 -0
  227. package/dist/esm/src/types/WADORSMetaData.d.ts +4 -0
  228. package/dist/esm/src/types/WADORSMetaData.js +1 -0
  229. package/dist/esm/src/types/WebWorkerTypes.d.ts +64 -0
  230. package/dist/esm/src/types/WebWorkerTypes.js +1 -0
  231. package/dist/esm/src/types/XHRRequest.d.ts +16 -0
  232. package/dist/esm/src/types/XHRRequest.js +1 -0
  233. package/dist/esm/src/types/index.d.ts +11 -0
  234. package/dist/esm/src/types/index.js +1 -0
  235. package/dist/esm/src/version.d.ts +2 -0
  236. package/dist/esm/src/version.js +1 -0
  237. package/package.json +24 -17
  238. package/dist/cornerstoneDICOMImageLoaderNoWebWorkers.bundle.min.js +0 -2
  239. package/dist/cornerstoneDICOMImageLoaderNoWebWorkers.bundle.min.js.map +0 -1
  240. package/dist/dynamic-import/610.min.worker.js +0 -2
  241. package/dist/dynamic-import/610.min.worker.js.map +0 -1
  242. package/dist/dynamic-import/75788f12450d4c5ed494.wasm +0 -0
  243. package/dist/dynamic-import/945.min.worker.js +0 -2
  244. package/dist/dynamic-import/945.min.worker.js.map +0 -1
  245. package/dist/dynamic-import/index.worker.e62ecca63f1a2e124230.worker.js +0 -2
  246. package/dist/dynamic-import/index.worker.e62ecca63f1a2e124230.worker.js.map +0 -1
  247. package/dist/index.worker.bundle.min.worker.js +0 -2
  248. package/dist/index.worker.bundle.min.worker.js.map +0 -1
@@ -0,0 +1,80 @@
1
+ import getNumberValues from './getNumberValues';
2
+ import isNMReconstructable from '../../isNMReconstructable';
3
+ function getImageTypeSubItemFromDataset(dataSet, index) {
4
+ const imageType = dataSet.string('x00080008');
5
+ if (imageType) {
6
+ const subTypes = imageType.split('\\');
7
+ if (subTypes.length > index) {
8
+ return subTypes[index];
9
+ }
10
+ }
11
+ return undefined;
12
+ }
13
+ function extractOrientationFromNMMultiframeDataset(dataSet) {
14
+ let imageOrientationPatient;
15
+ const modality = dataSet.string('x00080060');
16
+ if (modality?.includes('NM')) {
17
+ const imageSubType = getImageTypeSubItemFromDataset(dataSet, 2);
18
+ if (imageSubType && isNMReconstructable(imageSubType)) {
19
+ if (dataSet.elements.x00540022) {
20
+ imageOrientationPatient = getNumberValues(dataSet.elements.x00540022.items[0].dataSet, 'x00200037', 6);
21
+ }
22
+ }
23
+ }
24
+ return imageOrientationPatient;
25
+ }
26
+ function extractPositionFromNMMultiframeDataset(dataSet) {
27
+ let imagePositionPatient;
28
+ const modality = dataSet.string('x00080060');
29
+ if (modality?.includes('NM')) {
30
+ const imageSubType = getImageTypeSubItemFromDataset(dataSet, 2);
31
+ if (imageSubType && isNMReconstructable(imageSubType)) {
32
+ if (dataSet.elements.x00540022) {
33
+ imagePositionPatient = getNumberValues(dataSet.elements.x00540022.items[0].dataSet, 'x00200032', 3);
34
+ }
35
+ }
36
+ }
37
+ return imagePositionPatient;
38
+ }
39
+ function extractOrientationFromDataset(dataSet) {
40
+ let imageOrientationPatient = getNumberValues(dataSet, 'x00200037', 6);
41
+ if (!imageOrientationPatient && dataSet.elements.x00209116) {
42
+ imageOrientationPatient = getNumberValues(dataSet.elements.x00209116.items[0].dataSet, 'x00200037', 6);
43
+ }
44
+ if (!imageOrientationPatient) {
45
+ imageOrientationPatient =
46
+ extractOrientationFromNMMultiframeDataset(dataSet);
47
+ }
48
+ return imageOrientationPatient;
49
+ }
50
+ function extractPositionFromDataset(dataSet) {
51
+ let imagePositionPatient = getNumberValues(dataSet, 'x00200032', 3);
52
+ if (!imagePositionPatient && dataSet.elements.x00209113) {
53
+ imagePositionPatient = getNumberValues(dataSet.elements.x00209113.items[0].dataSet, 'x00200032', 3);
54
+ }
55
+ if (!imagePositionPatient) {
56
+ imagePositionPatient = extractPositionFromNMMultiframeDataset(dataSet);
57
+ }
58
+ return imagePositionPatient;
59
+ }
60
+ function extractSpacingFromDataset(dataSet) {
61
+ let pixelSpacing = getNumberValues(dataSet, 'x00280030', 2);
62
+ if (!pixelSpacing && dataSet.elements.x00289110) {
63
+ pixelSpacing = getNumberValues(dataSet.elements.x00289110.items[0].dataSet, 'x00280030', 2);
64
+ }
65
+ return pixelSpacing;
66
+ }
67
+ function extractSliceThicknessFromDataset(dataSet) {
68
+ let sliceThickness;
69
+ if (dataSet.elements.x00180050) {
70
+ sliceThickness = dataSet.floatString('x00180050');
71
+ }
72
+ else if (dataSet.elements.x00289110 &&
73
+ dataSet.elements.x00289110.items.length &&
74
+ dataSet.elements.x00289110.items[0].dataSet.elements.x00180050) {
75
+ sliceThickness =
76
+ dataSet.elements.x00289110.items[0].dataSet.floatString('x00180050');
77
+ }
78
+ return sliceThickness;
79
+ }
80
+ export { getImageTypeSubItemFromDataset, extractOrientationFromDataset, extractPositionFromDataset, extractSpacingFromDataset, extractSliceThicknessFromDataset, };
@@ -0,0 +1,4 @@
1
+ import type { Types } from '@cornerstonejs/core';
2
+ import type { DataSet } from 'dicom-parser';
3
+ declare function getImagePixelModule(dataSet: DataSet): Types.ImagePixelModuleMetadata;
4
+ export default getImagePixelModule;
@@ -0,0 +1,79 @@
1
+ function getLutDescriptor(dataSet, tag) {
2
+ if (!dataSet.elements[tag] || dataSet.elements[tag].length !== 6) {
3
+ return;
4
+ }
5
+ return [
6
+ dataSet.uint16(tag, 0),
7
+ dataSet.uint16(tag, 1),
8
+ dataSet.uint16(tag, 2),
9
+ ];
10
+ }
11
+ function getLutData(lutDataSet, tag, lutDescriptor) {
12
+ const lut = [];
13
+ const lutData = lutDataSet.elements[tag];
14
+ for (let i = 0; i < lutDescriptor[0]; i++) {
15
+ if (lutDescriptor[2] === 16) {
16
+ lut[i] = lutDataSet.uint16(tag, i);
17
+ }
18
+ else {
19
+ lut[i] = lutDataSet.byteArray[i + lutData.dataOffset];
20
+ }
21
+ }
22
+ return lut;
23
+ }
24
+ function populatePaletteColorLut(dataSet, imagePixelModule) {
25
+ imagePixelModule.redPaletteColorLookupTableDescriptor = getLutDescriptor(dataSet, 'x00281101');
26
+ imagePixelModule.greenPaletteColorLookupTableDescriptor = getLutDescriptor(dataSet, 'x00281102');
27
+ imagePixelModule.bluePaletteColorLookupTableDescriptor = getLutDescriptor(dataSet, 'x00281103');
28
+ if (imagePixelModule.redPaletteColorLookupTableDescriptor[0] === 0) {
29
+ imagePixelModule.redPaletteColorLookupTableDescriptor[0] = 65536;
30
+ imagePixelModule.greenPaletteColorLookupTableDescriptor[0] = 65536;
31
+ imagePixelModule.bluePaletteColorLookupTableDescriptor[0] = 65536;
32
+ }
33
+ const numLutEntries = imagePixelModule.redPaletteColorLookupTableDescriptor[0];
34
+ const lutData = dataSet.elements.x00281201;
35
+ const lutBitsAllocated = lutData.length === numLutEntries ? 8 : 16;
36
+ if (imagePixelModule.redPaletteColorLookupTableDescriptor[2] !==
37
+ lutBitsAllocated) {
38
+ imagePixelModule.redPaletteColorLookupTableDescriptor[2] = lutBitsAllocated;
39
+ imagePixelModule.greenPaletteColorLookupTableDescriptor[2] =
40
+ lutBitsAllocated;
41
+ imagePixelModule.bluePaletteColorLookupTableDescriptor[2] =
42
+ lutBitsAllocated;
43
+ }
44
+ imagePixelModule.redPaletteColorLookupTableData = getLutData(dataSet, 'x00281201', imagePixelModule.redPaletteColorLookupTableDescriptor);
45
+ imagePixelModule.greenPaletteColorLookupTableData = getLutData(dataSet, 'x00281202', imagePixelModule.greenPaletteColorLookupTableDescriptor);
46
+ imagePixelModule.bluePaletteColorLookupTableData = getLutData(dataSet, 'x00281203', imagePixelModule.bluePaletteColorLookupTableDescriptor);
47
+ }
48
+ function populateSmallestLargestPixelValues(dataSet, imagePixelModule) {
49
+ const pixelRepresentation = dataSet.uint16('x00280103');
50
+ if (pixelRepresentation === 0) {
51
+ imagePixelModule.smallestPixelValue = dataSet.uint16('x00280106');
52
+ imagePixelModule.largestPixelValue = dataSet.uint16('x00280107');
53
+ }
54
+ else {
55
+ imagePixelModule.smallestPixelValue = dataSet.int16('x00280106');
56
+ imagePixelModule.largestPixelValue = dataSet.int16('x00280107');
57
+ }
58
+ }
59
+ function getImagePixelModule(dataSet) {
60
+ const imagePixelModule = {
61
+ samplesPerPixel: dataSet.uint16('x00280002'),
62
+ photometricInterpretation: dataSet.string('x00280004'),
63
+ rows: dataSet.uint16('x00280010'),
64
+ columns: dataSet.uint16('x00280011'),
65
+ bitsAllocated: dataSet.uint16('x00280100'),
66
+ bitsStored: dataSet.uint16('x00280101'),
67
+ highBit: dataSet.uint16('x00280102'),
68
+ pixelRepresentation: dataSet.uint16('x00280103'),
69
+ planarConfiguration: dataSet.uint16('x00280006'),
70
+ pixelAspectRatio: dataSet.string('x00280034'),
71
+ };
72
+ populateSmallestLargestPixelValues(dataSet, imagePixelModule);
73
+ if (imagePixelModule.photometricInterpretation === 'PALETTE COLOR' &&
74
+ dataSet.elements.x00281101) {
75
+ populatePaletteColorLut(dataSet, imagePixelModule);
76
+ }
77
+ return imagePixelModule;
78
+ }
79
+ export default getImagePixelModule;
@@ -0,0 +1,4 @@
1
+ import type { Element } from 'dicom-parser';
2
+ import type { LutType } from '../../../types';
3
+ declare function getLUTs(pixelRepresentation: number, lutSequence: Element): LutType[];
4
+ export default getLUTs;
@@ -0,0 +1,44 @@
1
+ function getLUT(pixelRepresentation, lutDataSet) {
2
+ let numLUTEntries = lutDataSet.uint16('x00283002', 0);
3
+ if (numLUTEntries === 0) {
4
+ numLUTEntries = 65535;
5
+ }
6
+ let firstValueMapped = 0;
7
+ if (pixelRepresentation === 0) {
8
+ firstValueMapped = lutDataSet.uint16('x00283002', 1);
9
+ }
10
+ else {
11
+ firstValueMapped = lutDataSet.int16('x00283002', 1);
12
+ }
13
+ const numBitsPerEntry = lutDataSet.uint16('x00283002', 2);
14
+ const lut = {
15
+ id: '1',
16
+ firstValueMapped,
17
+ numBitsPerEntry,
18
+ lut: [],
19
+ };
20
+ for (let i = 0; i < numLUTEntries; i++) {
21
+ if (pixelRepresentation === 0) {
22
+ lut.lut[i] = lutDataSet.uint16('x00283006', i);
23
+ }
24
+ else {
25
+ lut.lut[i] = lutDataSet.int16('x00283006', i);
26
+ }
27
+ }
28
+ return lut;
29
+ }
30
+ function getLUTs(pixelRepresentation, lutSequence) {
31
+ if (!lutSequence || !lutSequence.items || !lutSequence.items.length) {
32
+ return;
33
+ }
34
+ const luts = [];
35
+ for (let i = 0; i < lutSequence.items.length; i++) {
36
+ const lutDataSet = lutSequence.items[i].dataSet;
37
+ const lut = getLUT(pixelRepresentation, lutDataSet);
38
+ if (lut) {
39
+ luts.push(lut);
40
+ }
41
+ }
42
+ return luts;
43
+ }
44
+ export default getLUTs;
@@ -0,0 +1,3 @@
1
+ import type { DataSet } from 'dicom-parser';
2
+ declare function getModalityLUTOutputPixelRepresentation(dataSet: DataSet): number;
3
+ export default getModalityLUTOutputPixelRepresentation;
@@ -0,0 +1,30 @@
1
+ function getMinStoredPixelValue(dataSet) {
2
+ const pixelRepresentation = dataSet.uint16('x00280103');
3
+ const bitsStored = dataSet.uint16('x00280101');
4
+ if (pixelRepresentation === 0) {
5
+ return 0;
6
+ }
7
+ return -1 << (bitsStored - 1);
8
+ }
9
+ function getModalityLUTOutputPixelRepresentation(dataSet) {
10
+ const sopClassUID = dataSet.string('x00080016');
11
+ if (sopClassUID === '1.2.840.10008.5.1.4.1.1.2' ||
12
+ sopClassUID === '1.2.840.10008.5.1.4.1.1.2.1') {
13
+ return 1;
14
+ }
15
+ const rescaleIntercept = dataSet.floatString('x00281052');
16
+ const rescaleSlope = dataSet.floatString('x00281053');
17
+ if (rescaleIntercept !== undefined && rescaleSlope !== undefined) {
18
+ const minStoredPixelValue = getMinStoredPixelValue(dataSet);
19
+ const minModalityLutValue = minStoredPixelValue * rescaleSlope + rescaleIntercept;
20
+ if (minModalityLutValue < 0) {
21
+ return 1;
22
+ }
23
+ return 0;
24
+ }
25
+ if (dataSet.elements.x00283000 && dataSet.elements.x00283000.length > 0) {
26
+ return 0;
27
+ }
28
+ return dataSet.uint16('x00280103');
29
+ }
30
+ export default getModalityLUTOutputPixelRepresentation;
@@ -0,0 +1,3 @@
1
+ import type { DataSet } from 'dicom-parser';
2
+ declare function getNumberValues(dataSet: DataSet, tag: string, minimumLength: number): number[];
3
+ export default getNumberValues;
@@ -0,0 +1,16 @@
1
+ function getNumberValues(dataSet, tag, minimumLength) {
2
+ const values = [];
3
+ const valueAsString = dataSet.string(tag);
4
+ if (!valueAsString) {
5
+ return;
6
+ }
7
+ const split = valueAsString.split('\\');
8
+ if (minimumLength && split.length < minimumLength) {
9
+ return;
10
+ }
11
+ for (let i = 0; i < split.length; i++) {
12
+ values.push(parseFloat(split[i]));
13
+ }
14
+ return values;
15
+ }
16
+ export default getNumberValues;
@@ -0,0 +1,4 @@
1
+ import type { DataSet } from 'dicom-parser';
2
+ export default function getOverlayPlaneModule(dataSet: DataSet): {
3
+ overlays: any[];
4
+ };
@@ -0,0 +1,36 @@
1
+ export default function getOverlayPlaneModule(dataSet) {
2
+ const overlays = [];
3
+ for (let overlayGroup = 0x00; overlayGroup <= 0x1e; overlayGroup += 0x02) {
4
+ let groupStr = `x60${overlayGroup.toString(16)}`;
5
+ if (groupStr.length === 4) {
6
+ groupStr = `x600${overlayGroup.toString(16)}`;
7
+ }
8
+ const data = dataSet.elements[`${groupStr}3000`];
9
+ if (!data) {
10
+ continue;
11
+ }
12
+ const pixelData = [];
13
+ for (let i = 0; i < data.length; i++) {
14
+ for (let k = 0; k < 8; k++) {
15
+ const byte_as_int = dataSet.byteArray[data.dataOffset + i];
16
+ pixelData[i * 8 + k] = (byte_as_int >> k) & 0b1;
17
+ }
18
+ }
19
+ overlays.push({
20
+ rows: dataSet.uint16(`${groupStr}0010`),
21
+ columns: dataSet.uint16(`${groupStr}0011`),
22
+ type: dataSet.string(`${groupStr}0040`),
23
+ x: dataSet.int16(`${groupStr}0050`, 1) - 1,
24
+ y: dataSet.int16(`${groupStr}0050`, 0) - 1,
25
+ pixelData,
26
+ description: dataSet.string(`${groupStr}0022`),
27
+ label: dataSet.string(`${groupStr}1500`),
28
+ roiArea: dataSet.string(`${groupStr}1301`),
29
+ roiMean: dataSet.string(`${groupStr}1302`),
30
+ roiStandardDeviation: dataSet.string(`${groupStr}1303`),
31
+ });
32
+ }
33
+ return {
34
+ overlays,
35
+ };
36
+ }
@@ -0,0 +1,5 @@
1
+ export { default as getImagePixelModule } from './getImagePixelModule';
2
+ export { default as getLUTs } from './getLUTs';
3
+ export { default as getModalityLUTOutputPixelRepresentation } from './getModalityLUTOutputPixelRepresentation';
4
+ export { default as getNumberValues } from './getNumberValues';
5
+ export { default as metaDataProvider } from './metaDataProvider';
@@ -0,0 +1,5 @@
1
+ export { default as getImagePixelModule } from './getImagePixelModule';
2
+ export { default as getLUTs } from './getLUTs';
3
+ export { default as getModalityLUTOutputPixelRepresentation } from './getModalityLUTOutputPixelRepresentation';
4
+ export { default as getNumberValues } from './getNumberValues';
5
+ export { default as metaDataProvider } from './metaDataProvider';
@@ -0,0 +1,2 @@
1
+ declare function metaDataProvider(type: any, imageId: any): any;
2
+ export default metaDataProvider;
@@ -0,0 +1,223 @@
1
+ import external from '../../../externalModules';
2
+ import getNumberValues from './getNumberValues';
3
+ import parseImageId from '../parseImageId';
4
+ import dataSetCacheManager from '../dataSetCacheManager';
5
+ import getImagePixelModule from './getImagePixelModule';
6
+ import getOverlayPlaneModule from './getOverlayPlaneModule';
7
+ import getLUTs from './getLUTs';
8
+ import getModalityLUTOutputPixelRepresentation from './getModalityLUTOutputPixelRepresentation';
9
+ import { getDirectFrameInformation } from '../combineFrameInstanceDataset';
10
+ import multiframeDataset from '../retrieveMultiframeDataset';
11
+ import { getImageTypeSubItemFromDataset, extractOrientationFromDataset, extractPositionFromDataset, extractSpacingFromDataset, extractSliceThicknessFromDataset, } from './extractPositioningFromDataset';
12
+ import isNMReconstructable from '../../isNMReconstructable';
13
+ import { getInstanceModule, instanceModuleNames, } from '../../getInstanceModule';
14
+ import { getUSEnhancedRegions } from './USHelpers';
15
+ function metaDataProvider(type, imageId) {
16
+ const { MetadataModules } = external.cornerstone.Enums;
17
+ const { dicomParser } = external;
18
+ if (Array.isArray(imageId)) {
19
+ return;
20
+ }
21
+ const parsedImageId = parseImageId(imageId);
22
+ if (type === MetadataModules.MULTIFRAME) {
23
+ const multiframeData = multiframeDataset.retrieveMultiframeDataset(parsedImageId.url);
24
+ if (!multiframeData.dataSet) {
25
+ return;
26
+ }
27
+ const multiframeInfo = getDirectFrameInformation(multiframeData.dataSet, multiframeData.frame);
28
+ return multiframeInfo;
29
+ }
30
+ let url = parsedImageId.url;
31
+ if (parsedImageId.frame) {
32
+ url = `${url}&frame=${parsedImageId.frame}`;
33
+ }
34
+ const dataSet = dataSetCacheManager.get(url);
35
+ if (!dataSet) {
36
+ return;
37
+ }
38
+ if (type === MetadataModules.GENERAL_STUDY) {
39
+ return {
40
+ studyDescription: dataSet.string('x00081030'),
41
+ studyDate: dicomParser.parseDA(dataSet.string('x00080020')),
42
+ studyTime: dicomParser.parseTM(dataSet.string('x00080030') || ''),
43
+ accessionNumber: dataSet.string('x00080050'),
44
+ };
45
+ }
46
+ if (type === MetadataModules.GENERAL_SERIES) {
47
+ return {
48
+ modality: dataSet.string('x00080060'),
49
+ seriesInstanceUID: dataSet.string('x0020000e'),
50
+ seriesNumber: dataSet.intString('x00200011'),
51
+ studyInstanceUID: dataSet.string('x0020000d'),
52
+ seriesDate: dicomParser.parseDA(dataSet.string('x00080021')),
53
+ seriesTime: dicomParser.parseTM(dataSet.string('x00080031') || ''),
54
+ acquisitionDate: dicomParser.parseDA(dataSet.string('x00080022')),
55
+ acquisitionTime: dicomParser.parseTM(dataSet.string('x00080032') || ''),
56
+ };
57
+ }
58
+ if (type === MetadataModules.GENERAL_IMAGE) {
59
+ return {
60
+ sopInstanceUID: dataSet.string('x00080018'),
61
+ instanceNumber: dataSet.intString('x00200013'),
62
+ lossyImageCompression: dataSet.string('x00282110'),
63
+ lossyImageCompressionRatio: dataSet.floatString('x00282112'),
64
+ lossyImageCompressionMethod: dataSet.string('x00282114'),
65
+ };
66
+ }
67
+ if (type === MetadataModules.PATIENT) {
68
+ return {
69
+ patientID: dataSet.string('x00100020'),
70
+ patientName: dataSet.string('x00100010'),
71
+ };
72
+ }
73
+ if (type === MetadataModules.PATIENT_STUDY) {
74
+ return {
75
+ patientAge: dataSet.intString('x00101010'),
76
+ patientSize: dataSet.floatString('x00101020'),
77
+ patientSex: dataSet.string('x00100040'),
78
+ patientWeight: dataSet.floatString('x00101030'),
79
+ };
80
+ }
81
+ if (type === MetadataModules.NM_MULTIFRAME_GEOMETRY) {
82
+ const modality = dataSet.string('x00080060');
83
+ const imageSubType = getImageTypeSubItemFromDataset(dataSet, 2);
84
+ return {
85
+ modality,
86
+ imageType: dataSet.string('x00080008'),
87
+ imageSubType,
88
+ imageOrientationPatient: extractOrientationFromDataset(dataSet),
89
+ imagePositionPatient: extractPositionFromDataset(dataSet),
90
+ sliceThickness: extractSliceThicknessFromDataset(dataSet),
91
+ pixelSpacing: extractSpacingFromDataset(dataSet),
92
+ numberOfFrames: dataSet.uint16('x00280008'),
93
+ isNMReconstructable: isNMReconstructable(imageSubType) && modality.includes('NM'),
94
+ };
95
+ }
96
+ if (type === MetadataModules.IMAGE_PLANE) {
97
+ const imageOrientationPatient = extractOrientationFromDataset(dataSet);
98
+ const imagePositionPatient = extractPositionFromDataset(dataSet);
99
+ const pixelSpacing = extractSpacingFromDataset(dataSet);
100
+ const sliceThickness = extractSliceThicknessFromDataset(dataSet);
101
+ let columnPixelSpacing = null;
102
+ let rowPixelSpacing = null;
103
+ if (pixelSpacing) {
104
+ rowPixelSpacing = pixelSpacing[0];
105
+ columnPixelSpacing = pixelSpacing[1];
106
+ }
107
+ let rowCosines = null;
108
+ let columnCosines = null;
109
+ if (imageOrientationPatient) {
110
+ rowCosines = [
111
+ parseFloat(imageOrientationPatient[0]),
112
+ parseFloat(imageOrientationPatient[1]),
113
+ parseFloat(imageOrientationPatient[2]),
114
+ ];
115
+ columnCosines = [
116
+ parseFloat(imageOrientationPatient[3]),
117
+ parseFloat(imageOrientationPatient[4]),
118
+ parseFloat(imageOrientationPatient[5]),
119
+ ];
120
+ }
121
+ return {
122
+ frameOfReferenceUID: dataSet.string('x00200052'),
123
+ rows: dataSet.uint16('x00280010'),
124
+ columns: dataSet.uint16('x00280011'),
125
+ imageOrientationPatient,
126
+ rowCosines,
127
+ columnCosines,
128
+ imagePositionPatient,
129
+ sliceThickness,
130
+ sliceLocation: dataSet.floatString('x00201041'),
131
+ pixelSpacing,
132
+ rowPixelSpacing,
133
+ columnPixelSpacing,
134
+ };
135
+ }
136
+ if (type === MetadataModules.CINE) {
137
+ return {
138
+ frameTime: dataSet.floatString('x00181063'),
139
+ };
140
+ }
141
+ if (type === MetadataModules.IMAGE_PIXEL) {
142
+ return getImagePixelModule(dataSet);
143
+ }
144
+ if (type === MetadataModules.VOI_LUT) {
145
+ const modalityLUTOutputPixelRepresentation = getModalityLUTOutputPixelRepresentation(dataSet);
146
+ return {
147
+ windowCenter: getNumberValues(dataSet, 'x00281050', 1),
148
+ windowWidth: getNumberValues(dataSet, 'x00281051', 1),
149
+ voiLUTSequence: getLUTs(modalityLUTOutputPixelRepresentation, dataSet.elements.x00283010),
150
+ };
151
+ }
152
+ if (type === MetadataModules.MODALITY_LUT) {
153
+ return {
154
+ rescaleIntercept: dataSet.floatString('x00281052'),
155
+ rescaleSlope: dataSet.floatString('x00281053'),
156
+ rescaleType: dataSet.string('x00281054'),
157
+ modalityLUTSequence: getLUTs(dataSet.uint16('x00280103'), dataSet.elements.x00283000),
158
+ };
159
+ }
160
+ if (type === MetadataModules.SOP_COMMON) {
161
+ return {
162
+ sopClassUID: dataSet.string('x00080016'),
163
+ sopInstanceUID: dataSet.string('x00080018'),
164
+ };
165
+ }
166
+ if (type === MetadataModules.PET_ISOTOPE) {
167
+ const radiopharmaceuticalInfo = dataSet.elements.x00540016;
168
+ if (radiopharmaceuticalInfo === undefined) {
169
+ return;
170
+ }
171
+ const firstRadiopharmaceuticalInfoDataSet = radiopharmaceuticalInfo.items[0].dataSet;
172
+ return {
173
+ radiopharmaceuticalInfo: {
174
+ radiopharmaceuticalStartTime: dicomParser.parseTM(firstRadiopharmaceuticalInfoDataSet.string('x00181072') || ''),
175
+ radionuclideTotalDose: firstRadiopharmaceuticalInfoDataSet.floatString('x00181074'),
176
+ radionuclideHalfLife: firstRadiopharmaceuticalInfoDataSet.floatString('x00181075'),
177
+ },
178
+ };
179
+ }
180
+ if (type === MetadataModules.OVERLAY_PLANE) {
181
+ return getOverlayPlaneModule(dataSet);
182
+ }
183
+ if (type === 'transferSyntax') {
184
+ let transferSyntaxUID;
185
+ try {
186
+ transferSyntaxUID = dataSet.string('x00020010');
187
+ }
188
+ catch (error) {
189
+ }
190
+ return {
191
+ transferSyntaxUID,
192
+ };
193
+ }
194
+ if (type === MetadataModules.PET_SERIES) {
195
+ return {
196
+ correctedImage: dataSet.string('x00280051'),
197
+ units: dataSet.string('x00541001'),
198
+ decayCorrection: dataSet.string('x00541102'),
199
+ };
200
+ }
201
+ if (type === MetadataModules.PET_IMAGE) {
202
+ return {
203
+ frameReferenceTime: dataSet.floatString(dataSet.string('x00541300') || ''),
204
+ actualFrameDuration: dataSet.intString(dataSet.string('x00181242')),
205
+ };
206
+ }
207
+ if (type === MetadataModules.ULTRASOUND_ENHANCED_REGION) {
208
+ return getUSEnhancedRegions(dataSet);
209
+ }
210
+ if (type === MetadataModules.CALIBRATION) {
211
+ const modality = dataSet.string('x00080060');
212
+ if (modality === 'US') {
213
+ const enhancedRegion = getUSEnhancedRegions(dataSet);
214
+ return {
215
+ sequenceOfUltrasoundRegions: enhancedRegion,
216
+ };
217
+ }
218
+ }
219
+ if (type === 'instance') {
220
+ return getInstanceModule(imageId, metaDataProvider, instanceModuleNames);
221
+ }
222
+ }
223
+ export default metaDataProvider;
@@ -0,0 +1,8 @@
1
+ export interface CornerstoneImageUrl {
2
+ scheme: string;
3
+ url: string;
4
+ frame: number;
5
+ pixelDataFrame: number;
6
+ }
7
+ declare function parseImageId(imageId: string): CornerstoneImageUrl;
8
+ export default parseImageId;
@@ -0,0 +1,20 @@
1
+ function parseImageId(imageId) {
2
+ const firstColonIndex = imageId.indexOf(':');
3
+ let url = imageId.substring(firstColonIndex + 1);
4
+ const frameIndex = url.indexOf('frame=');
5
+ let frame;
6
+ if (frameIndex !== -1) {
7
+ const frameStr = url.substring(frameIndex + 6);
8
+ frame = parseInt(frameStr, 10);
9
+ url = url.substring(0, frameIndex - 1);
10
+ }
11
+ const scheme = imageId.substring(0, firstColonIndex);
12
+ const adjustedFrame = frame !== undefined ? frame - 1 : undefined;
13
+ return {
14
+ scheme,
15
+ url,
16
+ frame,
17
+ pixelDataFrame: adjustedFrame,
18
+ };
19
+ }
20
+ export default parseImageId;
@@ -0,0 +1,2 @@
1
+ import type * as cornerstoneImport from '@cornerstonejs/core';
2
+ export default function (cornerstone: typeof cornerstoneImport): void;
@@ -0,0 +1,8 @@
1
+ import { loadImage } from './loadImage';
2
+ import { metaDataProvider } from './metaData/index';
3
+ export default function (cornerstone) {
4
+ cornerstone.registerImageLoader('dicomweb', loadImage);
5
+ cornerstone.registerImageLoader('wadouri', loadImage);
6
+ cornerstone.registerImageLoader('dicomfile', loadImage);
7
+ cornerstone.metaData.addProvider(metaDataProvider);
8
+ }
@@ -0,0 +1,17 @@
1
+ declare function _get(uri: any): {
2
+ dataSet: import("dicom-parser").DataSet;
3
+ cacheCount: number;
4
+ };
5
+ declare function isMultiframeDataset(uri: any): boolean;
6
+ declare function retrieveMultiframeDataset(uri: any): {
7
+ dataSet: any;
8
+ frame: number;
9
+ };
10
+ declare function generateMultiframeWADOURIs(uri: any): any[];
11
+ declare const _default: {
12
+ _get: typeof _get;
13
+ generateMultiframeWADOURIs: typeof generateMultiframeWADOURIs;
14
+ retrieveMultiframeDataset: typeof retrieveMultiframeDataset;
15
+ isMultiframeDataset: typeof isMultiframeDataset;
16
+ };
17
+ export default _default;