From 6d0552fb96c59dcf3e39b3306a50004b24128330 Mon Sep 17 00:00:00 2001 From: Woonchan Cho Date: Wed, 9 Feb 2022 13:20:21 -0600 Subject: [PATCH] fix: Invalid VR of the private creator tag of the "Implicit VR Endian" typed DICOM file (#242) (#243) --- packages/adapters/src/DicomMessage.js | 2 ++ packages/adapters/src/Tag.js | 9 ++++++++- 2 files changed, 10 insertions(+), 1 deletion(-) diff --git a/packages/adapters/src/DicomMessage.js b/packages/adapters/src/DicomMessage.js index 79406aa50..1ab38800d 100644 --- a/packages/adapters/src/DicomMessage.js +++ b/packages/adapters/src/DicomMessage.js @@ -193,6 +193,8 @@ class DicomMessage { vrType = "OW"; } else if (vrType == "xs") { vrType = "US"; + } else if (tag.isPrivateCreator()) { + vrType = "LO"; } else { vrType = "UN"; } diff --git a/packages/adapters/src/Tag.js b/packages/adapters/src/Tag.js index 3d4993e7a..a03120270 100644 --- a/packages/adapters/src/Tag.js +++ b/packages/adapters/src/Tag.js @@ -64,6 +64,12 @@ class Tag { return this.is(0x7fe00010); } + isPrivateCreator() { + const group = this.group(); + const element = this.element(); + return group % 2 === 1 && element < 0x100 && element > 0x00; + } + static fromString(str) { var group = parseInt(str.substring(0, 4), 16), element = parseInt(str.substring(4), 16); @@ -96,7 +102,8 @@ class Tag { useSyntax == EXPLICIT_LITTLE_ENDIAN ? true : false, - isEncapsulated = this.isPixelDataTag() && DicomMessage.isEncapsulated(syntax); + isEncapsulated = + this.isPixelDataTag() && DicomMessage.isEncapsulated(syntax); var oldEndian = stream.isLittleEndian; stream.setEndian(isLittleEndian);