larvitar 1.5.4 → 1.5.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.
- package/README.md +2 -2
- package/imaging/imageLoading.js +0 -4
- package/imaging/imageUtils.js +51 -0
- package/index.js +3 -1
- package/package.json +2 -2
package/README.md
CHANGED
|
@@ -6,9 +6,9 @@
|
|
|
6
6
|
|
|
7
7
|
## Dicom Image Toolkit for CornerstoneJS
|
|
8
8
|
|
|
9
|
-
### Current version: 1.5.
|
|
9
|
+
### Current version: 1.5.7
|
|
10
10
|
|
|
11
|
-
### Latest Published Release: 1.5.
|
|
11
|
+
### Latest Published Release: 1.5.7
|
|
12
12
|
|
|
13
13
|
This library provides common DICOM functionalities to be used in web-applications: it's wrapper that simplifies the use of cornerstone-js environment.
|
|
14
14
|
Orthogonal multiplanar reformat is included as well as custom loader/exporter for nrrd files and [Vuex](https://vuex.vuejs.org/) custom integration.
|
package/imaging/imageLoading.js
CHANGED
|
@@ -34,10 +34,6 @@ const globalConfig = {
|
|
|
34
34
|
1
|
|
35
35
|
),
|
|
36
36
|
startWebWorkersOnDemand: true,
|
|
37
|
-
webWorkerTaskPaths: [
|
|
38
|
-
"https://unpkg.com/cornerstone-wado-image-loader@4.8.0/dist/610.bundle.min.worker.js",
|
|
39
|
-
"https://unpkg.com/cornerstone-wado-image-loader@4.8.0/dist/888.bundle.min.worker.js"
|
|
40
|
-
],
|
|
41
37
|
taskConfiguration: {
|
|
42
38
|
decodeTask: {
|
|
43
39
|
loadCodecsOnStartup: true,
|
package/imaging/imageUtils.js
CHANGED
|
@@ -9,6 +9,8 @@ import {
|
|
|
9
9
|
sortBy,
|
|
10
10
|
clone,
|
|
11
11
|
find,
|
|
12
|
+
filter,
|
|
13
|
+
keys,
|
|
12
14
|
has,
|
|
13
15
|
max,
|
|
14
16
|
map,
|
|
@@ -24,6 +26,7 @@ import { convertBytes } from "dicom-character-set";
|
|
|
24
26
|
// internal libraries
|
|
25
27
|
import { getDicomImageId } from "./loaders/dicomLoader";
|
|
26
28
|
import TAG_DICT from "./dataDictionary.json";
|
|
29
|
+
import { getSeriesDataFromLarvitarManager } from "./loaders/commonLoader";
|
|
27
30
|
|
|
28
31
|
// global module variables
|
|
29
32
|
// variables used to manage the reslice functionality
|
|
@@ -51,6 +54,7 @@ const resliceTable = {
|
|
|
51
54
|
* getDistanceBetweenSlices(seriesData, sliceIndex1, sliceIndex2)
|
|
52
55
|
* parseTag(dataSet, propertyName, element)
|
|
53
56
|
* isElement(o)
|
|
57
|
+
* getImageMetadata(dataSet, imageId)
|
|
54
58
|
*/
|
|
55
59
|
|
|
56
60
|
/**
|
|
@@ -848,6 +852,53 @@ export const parseTag = function (dataSet, propertyName, element) {
|
|
|
848
852
|
return value;
|
|
849
853
|
};
|
|
850
854
|
|
|
855
|
+
/**
|
|
856
|
+
* @instance
|
|
857
|
+
* @function getImageMetadata
|
|
858
|
+
* @param {String} seriesId - The seriesUID
|
|
859
|
+
* @param {String} instanceUID - The SOPInstanceUID
|
|
860
|
+
* @return {Array} - List of metadata objects: tag, name and value
|
|
861
|
+
*/
|
|
862
|
+
export const getImageMetadata = function (seriesId, instanceUID) {
|
|
863
|
+
const seriesData = getSeriesDataFromLarvitarManager(seriesId);
|
|
864
|
+
if (seriesData === undefined || seriesData === null) {
|
|
865
|
+
console.log(`Invalid Series ID: ${seriesId}`);
|
|
866
|
+
return [];
|
|
867
|
+
}
|
|
868
|
+
const imageId = seriesData.instanceUIDs[instanceUID];
|
|
869
|
+
if (imageId === undefined) {
|
|
870
|
+
console.log(`Invalid InstanceUID ID: ${instanceUID}`);
|
|
871
|
+
return [];
|
|
872
|
+
}
|
|
873
|
+
|
|
874
|
+
let metadata = seriesData.instances[imageId].metadata;
|
|
875
|
+
// get elements from metadata where the key starts with x and is length 7
|
|
876
|
+
let metadata_keys = filter(keys(metadata), function (key) {
|
|
877
|
+
return key.length === 9 && key[0] === "x";
|
|
878
|
+
});
|
|
879
|
+
// loop metadata using metadata_keys and return list of key value pairs
|
|
880
|
+
let metadata_list = map(metadata_keys, function (key) {
|
|
881
|
+
// if value is a dictionary return empty string
|
|
882
|
+
const value =
|
|
883
|
+
metadata[key] && metadata[key].constructor == Object ? "" : metadata[key];
|
|
884
|
+
// convert key removing x and adding comma at position 4
|
|
885
|
+
const tagKey = (
|
|
886
|
+
"(" +
|
|
887
|
+
key.slice(1, 5) +
|
|
888
|
+
"," +
|
|
889
|
+
key.slice(5) +
|
|
890
|
+
")"
|
|
891
|
+
).toUpperCase();
|
|
892
|
+
const name = TAG_DICT[tagKey] ? TAG_DICT[tagKey].name : "";
|
|
893
|
+
return {
|
|
894
|
+
tag: tagKey,
|
|
895
|
+
name: name,
|
|
896
|
+
value: value
|
|
897
|
+
};
|
|
898
|
+
});
|
|
899
|
+
return metadata_list;
|
|
900
|
+
};
|
|
901
|
+
|
|
851
902
|
/* Internal module functions */
|
|
852
903
|
|
|
853
904
|
/**
|
package/index.js
CHANGED
|
@@ -37,7 +37,8 @@ import {
|
|
|
37
37
|
getMeanValue,
|
|
38
38
|
getReslicedMetadata,
|
|
39
39
|
getReslicedPixeldata,
|
|
40
|
-
getDistanceBetweenSlices
|
|
40
|
+
getDistanceBetweenSlices,
|
|
41
|
+
getImageMetadata
|
|
41
42
|
} from "./imaging/imageUtils";
|
|
42
43
|
|
|
43
44
|
import {
|
|
@@ -243,6 +244,7 @@ export {
|
|
|
243
244
|
getReslicedMetadata,
|
|
244
245
|
getReslicedPixeldata,
|
|
245
246
|
getDistanceBetweenSlices,
|
|
247
|
+
getImageMetadata,
|
|
246
248
|
// imageIo
|
|
247
249
|
buildHeader,
|
|
248
250
|
getCachedPixelData,
|
package/package.json
CHANGED
|
@@ -6,7 +6,7 @@
|
|
|
6
6
|
"medical",
|
|
7
7
|
"cornerstone"
|
|
8
8
|
],
|
|
9
|
-
"version": "1.5.
|
|
9
|
+
"version": "1.5.7",
|
|
10
10
|
"description": "javascript library for parsing, loading, rendering and interacting with DICOM images",
|
|
11
11
|
"repository": {
|
|
12
12
|
"url": "https://github.com/dvisionlab/Larvitar.git",
|
|
@@ -29,7 +29,7 @@
|
|
|
29
29
|
"cornerstone-core": "^2.6.1",
|
|
30
30
|
"cornerstone-file-image-loader": "^0.3.0",
|
|
31
31
|
"cornerstone-tools": "^6.0.7",
|
|
32
|
-
"cornerstone-wado-image-loader": "^4.
|
|
32
|
+
"cornerstone-wado-image-loader": "^4.10.2",
|
|
33
33
|
"cornerstone-web-image-loader": "^2.1.1",
|
|
34
34
|
"crypto-js": "^4.1.1",
|
|
35
35
|
"dicom-character-set": "^1.0.3",
|