Skip to content

Commit 33b738c

Browse files
igorsimkoIgor Šimko
and
Igor Šimko
authored
feat: Add OCT normalizer (#402)
* Add OCT normalizer * Add OCT normalizer test * Reformat dicom meta dictionary --------- Co-authored-by: Igor Šimko <[email protected]>
1 parent 6840af9 commit 33b738c

File tree

3 files changed

+34
-5
lines changed

3 files changed

+34
-5
lines changed

src/DicomMetaDictionary.js

+2-1
Original file line numberDiff line numberDiff line change
@@ -383,7 +383,8 @@ DicomMetaDictionary.sopClassNamesByUID = {
383383
"1.2.840.10008.5.1.4.1.1.128": "PETImage",
384384
"1.2.840.10008.5.1.4.1.1.130": "EnhancedPETImage",
385385
"1.2.840.10008.5.1.4.1.1.128.1": "LegacyConvertedEnhancedPETImage",
386-
"1.2.840.10008.5.1.4.1.1.77.1.5.1": "OphthalmicPhotography8BitImage"
386+
"1.2.840.10008.5.1.4.1.1.77.1.5.1": "OphthalmicPhotography8BitImage",
387+
"1.2.840.10008.5.1.4.1.1.77.1.5.4": "OphthalmicTomographyImage"
387388
};
388389

389390
DicomMetaDictionary.dictionary = dictionary;

src/normalizers.js

+10-1
Original file line numberDiff line numberDiff line change
@@ -53,6 +53,7 @@ class Normalizer {
5353
sopClassUIDMap[toUID.DeformableSpatialRegistration] = DSRNormalizer;
5454
sopClassUIDMap[toUID.OphthalmicPhotography8BitImage] =
5555
OPImageNormalizer;
56+
sopClassUIDMap[toUID.OphthalmicTomographyImage] = OCTImageNormalizer;
5657
return sopClassUIDMap[sopClassUID];
5758
}
5859

@@ -68,7 +69,8 @@ class Normalizer {
6869
toUID.EnhancedPETImage,
6970
toUID.LegacyConvertedEnhancedPETImage,
7071
toUID.Segmentation,
71-
toUID.ParametricMapStorage
72+
toUID.ParametricMapStorage,
73+
toUID.OphthalmicTomographyImage
7274
];
7375
return multiframeSOPClasses.indexOf(sopClassUID) !== -1;
7476
}
@@ -539,6 +541,12 @@ class OPImageNormalizer extends Normalizer {
539541
}
540542
}
541543

544+
class OCTImageNormalizer extends ImageNormalizer {
545+
normalize() {
546+
super.normalize();
547+
}
548+
}
549+
542550
export { Normalizer };
543551
export { ImageNormalizer };
544552
export { MRImageNormalizer };
@@ -552,3 +560,4 @@ export { SEGImageNormalizer };
552560
export { PMImageNormalizer };
553561
export { DSRNormalizer };
554562
export { OPImageNormalizer };
563+
export { OCTImageNormalizer };

test/normalizers.test.js

+22-3
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@ import "regenerator-runtime/runtime.js";
22

33
import fs from "fs";
44
import { jest } from "@jest/globals";
5+
import { getTestDataset } from "./testUtils";
56
import { DicomMessage } from "../src/DicomMessage";
67
import { DicomMetaDictionary } from "../src/DicomMetaDictionary";
78
import dcmjs from "../src";
@@ -10,12 +11,30 @@ import dcmjs from "../src";
1011
jest.setTimeout(60000);
1112

1213
it("test_normalizer_op", async () => {
13-
const file = fs.readFileSync('test/sample-op.dcm');
14+
const file = fs.readFileSync("test/sample-op.dcm");
1415
const dicomDict = DicomMessage.readFile(file.buffer);
1516

1617
const dataset = DicomMetaDictionary.naturalizeDataset(dicomDict.dict);
17-
const multiframe = dcmjs.normalizers.Normalizer.normalizeToDataset([dataset]);
18+
const multiframe = dcmjs.normalizers.Normalizer.normalizeToDataset([
19+
dataset
20+
]);
1821

1922
expect(dataset.NumberOfFrames).toEqual(1);
2023
expect(multiframe.NumberOfFrames).toEqual(1);
21-
});
24+
});
25+
26+
it("test_normalizer_oct", async () => {
27+
const url =
28+
"https://github.com/dcmjs-org/data/releases/download/oct/oct.dcm";
29+
const dcmPath = await getTestDataset(url, "oct.dcm");
30+
const file = fs.readFileSync(dcmPath);
31+
const dicomDict = DicomMessage.readFile(file.buffer);
32+
33+
const dataset = DicomMetaDictionary.naturalizeDataset(dicomDict.dict);
34+
const multiframe = dcmjs.normalizers.Normalizer.normalizeToDataset([
35+
dataset
36+
]);
37+
38+
expect(dataset.NumberOfFrames).toEqual(97);
39+
expect(multiframe.NumberOfFrames).toEqual(97);
40+
});

0 commit comments

Comments
 (0)