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