11"""Utilities for working with DICOM datasets
22"""
33
4- from nibabel .casting import asstr
5-
64
75def find_private_section (dcm_data , group_no , creator ):
86 """Return start element in group `group_no` given creator name `creator`
@@ -19,10 +17,10 @@ def find_private_section(dcm_data, group_no, creator):
1917 ``tag``, ``VR``, ``value``
2018 group_no : int
2119 Group number in which to search
22- creator : str or bytes or regex
23- Name of section - e.g. 'SIEMENS CSA HEADER' - or regex to search for
20+ creator : bytes or regex
21+ Name of section - e.g. b 'SIEMENS CSA HEADER' - or regex to search for
2422 section name. Regex used via ``creator.search(element_value)`` where
25- ``element_value`` is the value of the data element.
23+ ``element_value`` is the decoded value of the data element.
2624
2725 Returns
2826 -------
@@ -31,15 +29,17 @@ def find_private_section(dcm_data, group_no, creator):
3129 """
3230 if hasattr (creator , 'search' ):
3331 match_func = creator .search
34- else : # assume string / bytes
35- match_func = asstr (creator ).__eq__
32+ else : # assume bytes
33+ creator = creator .decode ('latin-1' )
34+ match_func = creator .__eq__
3635 # Group elements assumed ordered by tag (groupno, elno)
3736 for element in dcm_data .group_dataset (group_no ):
3837 elno = element .tag .elem
3938 if elno > 0xFF :
4039 break
4140 if element .VR not in ('LO' , 'OB' ):
4241 continue
43- if match_func (asstr (element .value )):
42+ val = element .value .decode ('latin-1' )
43+ if match_func (val ):
4444 return elno * 0x100
4545 return None
0 commit comments