Skip to content

Commit 6840af9

Browse files
authored
feat: Add OP normalizer (#403)
1 parent e8f375c commit 6840af9

File tree

4 files changed

+32
-2
lines changed

4 files changed

+32
-2
lines changed

src/DicomMetaDictionary.js

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -382,7 +382,8 @@ DicomMetaDictionary.sopClassNamesByUID = {
382382
"1.2.840.10008.5.1.4.1.1.88.33": "ComprehensiveSR",
383383
"1.2.840.10008.5.1.4.1.1.128": "PETImage",
384384
"1.2.840.10008.5.1.4.1.1.130": "EnhancedPETImage",
385-
"1.2.840.10008.5.1.4.1.1.128.1": "LegacyConvertedEnhancedPETImage"
385+
"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"
386387
};
387388

388389
DicomMetaDictionary.dictionary = dictionary;

src/normalizers.js

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -51,6 +51,8 @@ class Normalizer {
5151
PETImageNormalizer;
5252
sopClassUIDMap[toUID.Segmentation] = SEGImageNormalizer;
5353
sopClassUIDMap[toUID.DeformableSpatialRegistration] = DSRNormalizer;
54+
sopClassUIDMap[toUID.OphthalmicPhotography8BitImage] =
55+
OPImageNormalizer;
5456
return sopClassUIDMap[sopClassUID];
5557
}
5658

@@ -531,6 +533,12 @@ class DSRNormalizer extends Normalizer {
531533
}
532534
}
533535

536+
class OPImageNormalizer extends Normalizer {
537+
normalize() {
538+
this.dataset = this.datasets[0]; // only one dataset per series and for now we assume it is normalized
539+
}
540+
}
541+
534542
export { Normalizer };
535543
export { ImageNormalizer };
536544
export { MRImageNormalizer };
@@ -543,3 +551,4 @@ export { PETImageNormalizer };
543551
export { SEGImageNormalizer };
544552
export { PMImageNormalizer };
545553
export { DSRNormalizer };
554+
export { OPImageNormalizer };

test/normalizers.test.js

Lines changed: 21 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1,21 @@
1-
it("No tests yet", () => {});
1+
import "regenerator-runtime/runtime.js";
2+
3+
import fs from "fs";
4+
import { jest } from "@jest/globals";
5+
import { DicomMessage } from "../src/DicomMessage";
6+
import { DicomMetaDictionary } from "../src/DicomMetaDictionary";
7+
import dcmjs from "../src";
8+
9+
// The asset downloads in this file might take some time on a slower connection
10+
jest.setTimeout(60000);
11+
12+
it("test_normalizer_op", async () => {
13+
const file = fs.readFileSync('test/sample-op.dcm');
14+
const dicomDict = DicomMessage.readFile(file.buffer);
15+
16+
const dataset = DicomMetaDictionary.naturalizeDataset(dicomDict.dict);
17+
const multiframe = dcmjs.normalizers.Normalizer.normalizeToDataset([dataset]);
18+
19+
expect(dataset.NumberOfFrames).toEqual(1);
20+
expect(multiframe.NumberOfFrames).toEqual(1);
21+
});

test/sample-op.dcm

101 KB
Binary file not shown.

0 commit comments

Comments
 (0)