def description(self): """Return the DICOM dictionary name for the element.""" if dictionary_has_tag(self.tag) or repeater_has_tag(self.tag): name = dictionary_description(self.tag) elif self.tag.is_private: name = "Private tag data" # default if hasattr(self, 'private_creator'): try: # If have name from private dictionary, use it, but # but put in square brackets so is differentiated, # and clear that cannot access it by name name = private_dictionary_description( self.tag, self.private_creator) name = "[%s]" % (name) except KeyError: pass elif self.tag.elem >> 8 == 0: name = "Private Creator" # implied Group Length dicom versions < 3 elif self.tag.element == 0: name = "Group Length" else: name = "" return name
def absorb_delimiter_item( fp: BinaryIO, is_little_endian: bool, delimiter: BaseTag ) -> None: """Read (and ignore) undefined length sequence or item terminators.""" if is_little_endian: struct_format = "<HHL" else: struct_format = ">HHL" group, elem, length = unpack(struct_format, fp.read(8)) tag = TupleTag((group, elem)) if tag != delimiter: logger.warn( "Did not find expected delimiter " f"'{dictionary_description(delimiter)}', instead found " f"{tag} at file position 0x{fp.tell() - 8:X}" ) fp.seek(fp.tell() - 8) return logger.debug("%04x: Found Delimiter '%s'", fp.tell() - 8, dictionary_description(delimiter)) if length == 0: logger.debug("%04x: Read 0 bytes after delimiter", fp.tell() - 4) else: logger.debug("%04x: Expected 0x00000000 after delimiter, found 0x%x", fp.tell() - 4, length)
def description(self): """Return the DICOM dictionary name for the element.""" if self.tag.is_private: name = "Private tag data" # default if hasattr(self, 'private_creator'): try: # If have name from private dictionary, use it, but # but put in square brackets so is differentiated, # and clear that cannot access it by name name = private_dictionary_description( self.tag, self.private_creator) name = "[%s]" % (name) except KeyError: pass elif self.tag.elem >> 8 == 0: name = "Private Creator" elif dictionary_has_tag(self.tag) or repeater_has_tag(self.tag): name = dictionary_description(self.tag) # implied Group Length dicom versions < 3 elif self.tag.element == 0: name = "Group Length" else: name = "" return name
def subfix_AddOrChangeAttrib(ds: Dataset, log: list, error_regexp: str, fix_message: str, keyword: str, value) -> bool: fixed = False t = Dictionary.tag_for_keyword(keyword) if t is None: return False desc = Dictionary.dictionary_description(t) ErrorOccured = False log_l = len(log) for i in range(0, log_l): if re.match(error_regexp, log[i]) is not None: msg = mesgtext_cc.ErrorInfo(log[i], fix_message) log[i] = msg.getWholeMessage() ErrorOccured = True if ErrorOccured: if keyword in ds: ds[keyword].value = value # just modify fixed = True else: vr = Dictionary.dictionary_VR(t) vm = 1 elem = DataElementX(t, vr, value) ds[keyword] = elem fixed = True return fixed
def tag2str(ttag: BaseTag): if Dictionary.dictionary_has_tag(ttag): desc = Dictionary.dictionary_description(ttag) vr = Dictionary.dictionary_VR(ttag) txt = "->{}:{}".format(desc, vr) else: txt = '' msg = "(0x{:0>4x}, 0x{:0>4x})".format(ttag.group, ttag.element, txt) return msg
def absorb_delimiter_item(fp, is_little_endian, delimiter): """Read (and ignore) undefined length sequence or item terminators.""" if is_little_endian: struct_format = "<HHL" else: struct_format = ">HHL" group, elem, length = unpack(struct_format, fp.read(8)) tag = TupleTag((group, elem)) if tag != delimiter: msg = "Did not find expected delimiter '%s'" % dictionary_description(delimiter) msg += ", instead found %s at file position 0x%x" % (str(tag), fp.tell() - 8) logger.warn(msg) fp.seek(fp.tell() - 8) return logger.debug("%04x: Found Delimiter '%s'", fp.tell() - 8, dictionary_description(delimiter)) if length == 0: logger.debug("%04x: Read 0 bytes after delimiter", fp.tell() - 4) else: logger.debug("%04x: Expected 0x00000000 after delimiter, found 0x%x", fp.tell() - 4, length)
def subfix_RemoveAttrib(ds: Dataset, log: list, error_regexp: str, keyword: str) -> bool: fixed = False t = Dictionary.tag_for_keyword(keyword) if t is None: return False desc = Dictionary.dictionary_description(t) ErrorOccured = False log_l = len(log) for i in range(0, log_l): if re.match(error_regexp, log[i]) is not None: msg = mesgtext_cc.ErrorInfo(log[i], "fixed by removing the attribute") log[i] = msg.getWholeMessage() ErrorOccured = True if ErrorOccured: del ds[keyword] fixed = True return fixed
def name(self) -> str: """Return the DICOM dictionary name for the element as :class:`str`. Returns ------- str * For officially registered DICOM Data Elements this will be the *Name* as given in :dcm:`Table 6-1<part06/chapter_6.html#table_6-1>`. * For private elements known to *pydicom* this will be the *Name* in the format ``'[name]'``. * For unknown private elements this will be ``'Private tag data'``. * Otherwise returns an empty string ``''``. """ if self.tag.is_private: if self.private_creator: try: # If have name from private dictionary, use it, but # but put in square brackets so is differentiated, # and clear that cannot access it by name name = private_dictionary_description( self.tag, self.private_creator) return f"[{name}]" except KeyError: pass elif self.tag.element >> 8 == 0: return "Private Creator" return "Private tag data" # default if dictionary_has_tag(self.tag) or repeater_has_tag(self.tag): return dictionary_description(self.tag) # implied Group Length dicom versions < 3 if self.tag.element == 0: return "Group Length" return ""
def testRepeaters(self): """dicom_dictionary: Tags with "x" return correct dict info........""" self.assertEqual(dictionary_description(0x280400), 'Transform Label') self.assertEqual(dictionary_description(0x280410), 'Rows For Nth Order Coefficients')
def test_repeaters(self): """dicom_dictionary: Tags with "x" return correct dict info........""" assert 'Transform Label' == dictionary_description(0x280400) assert ('Rows For Nth Order Coefficients' == dictionary_description( 0x280410))
def test_repeaters(self): """dicom_dictionary: Tags with "x" return correct dict info........""" assert 'Transform Label' == dictionary_description(0x280400) assert ('Rows For Nth Order Coefficients' == dictionary_description(0x280410))