4
4
import logging
5
5
from collections import OrderedDict
6
6
import tarfile
7
-
7
+ from nibabel . nicom import csareader
8
8
from heudiconv .external .pydicom import dcm
9
9
10
10
from .utils import SeqInfo , load_json , set_readonly
@@ -73,6 +73,23 @@ def group_dicoms_into_seqinfos(files, file_filter, dcmfilter, grouping):
73
73
lgr .info ("File {} is missing any StudyInstanceUID" .format (filename ))
74
74
file_studyUID = None
75
75
76
+ # Workaround for protocol name in private siemens csa header
77
+ try :
78
+ ProtocolName = mw .dcm_data .ProtocolName
79
+ except AttributeError :
80
+ mw .dcm_data .ProtocolName = ''
81
+
82
+ # try parsing Siemens csa header
83
+ try :
84
+ if mw .is_csa and mw .dcm_data .ProtocolName == '' :
85
+ csastr = csareader .get_csa_header (mw .dcm_data , 'series' )['tags' ]['MrPhoenixProtocol' ]['items' ][0 ]
86
+ #Make sure dcmstack finds beginning of header.
87
+ csastr = csastr .replace ("### ASCCONV BEGIN" , "### ASCCONV BEGIN ### " ) #Remove when dmcstack is updated
88
+ parsedhdr = ds .extract .parse_phoenix_prot ('MrPhoenixProtocol' , csastr )
89
+ mw .dcm_data .ProtocolName = parsedhdr ['tProtocolName' ].replace (" " , "" )
90
+ except :
91
+ lgr .info ("File {} is missing ProtocolName" .format (filename ))
92
+
76
93
try :
77
94
series_id = (int (mw .dcm_data .SeriesNumber ),
78
95
mw .dcm_data .ProtocolName )
@@ -208,7 +225,7 @@ def group_dicoms_into_seqinfos(files, file_filter, dcmfilter, grouping):
208
225
dcminfo .get ('PatientID' ),
209
226
dcminfo .get ('StudyDescription' ),
210
227
refphys ,
211
- dcminfo . get ( 'SeriesDescription' ),
228
+ series_desc , #We try to set this further up.
212
229
sequence_name ,
213
230
image_type ,
214
231
accession_number ,
@@ -232,7 +249,7 @@ def group_dicoms_into_seqinfos(files, file_filter, dcmfilter, grouping):
232
249
lgr .debug ("%30s %30s %27s %27s %5s nref=%-2d nsrc=%-2d %s" % (
233
250
key ,
234
251
info .series_id ,
235
- dcminfo . SeriesDescription ,
252
+ series_desc ,
236
253
dcminfo .ProtocolName ,
237
254
info .is_derived ,
238
255
len (dcminfo .get ('ReferencedImageSequence' , '' )),
0 commit comments