@@ -133,7 +133,7 @@ def sortsession(sessionfolder: Path, dicomfiles: list[Path], folderscheme: str,
133133 dicomfile .replace (newfilename )
134134
135135
136- def sortsessions (sourcefolder : Path , subprefix : Union [str ,None ]= '' , sesprefix : str = '' , folderscheme : str = '{SeriesNumber:03d}-{SeriesDescription}' ,
136+ def sortsessions (sourcefolder : Path , subprefix : Union [str ,None ]= '' , sesprefix : Union [ str , None ] = '' , folderscheme : str = '{SeriesNumber:03d}-{SeriesDescription}' ,
137137 namescheme : str = '' , pattern : str = r'.*\.(IMA|dcm)$' , recursive : bool = True , force : bool = False , dryrun : bool = False ) -> set [Path ]:
138138 """
139139 Wrapper around sortsession() to loop over subjects and sessions and map the session DICOM files
@@ -171,7 +171,7 @@ def sortsessions(sourcefolder: Path, subprefix: Union[str,None]='', sesprefix: s
171171 LOGGER .info (f"Searching for subject/session folders in: { sourcefolder } " )
172172 for subjectfolder in lsdirs (sourcefolder , (subprefix or '' ) + '*' ):
173173 for sessionfolder in lsdirs (subjectfolder , sesprefix + '*' ) if sesprefix else [subjectfolder ]:
174- sessions .update (sortsessions (sessionfolder , '' , '' , folderscheme , namescheme , pattern , recursive , force , dryrun ))
174+ sessions .update (sortsessions (sessionfolder , '' , '' if sesprefix else None , folderscheme , namescheme , pattern , recursive , force , dryrun ))
175175
176176 # Use the DICOMDIR file if it is there
177177 elif (sourcefolder / 'DICOMDIR' ).is_file ():
@@ -183,10 +183,12 @@ def sortsessions(sourcefolder: Path, subprefix: Union[str,None]='', sesprefix: s
183183 study = dicomdir .find (PatientID = patientid , StudyInstanceUID = studyuid )
184184 dicomfiles = [Path (instance .path ) for instance in study ]
185185 if dicomfiles :
186- if subprefix == '' : # == '' -> Recursive call of sortsessions() -> Sort directly in the sourcefolder
186+ if subprefix == '' and sesprefix == '' : # -> Recursive call with sesprefix -> Sort directly in the source (=session) folder
187187 sessionfolder = sourcefolder
188- else : # CLI call -> Sort in subject/session folder
189- sessionfolder = sourcefolder / f"{ subprefix or '' } { cleanup (patient [0 ].PatientName )} " / f"{ sesprefix or '' } { n :02} -{ cleanup (study [0 ].StudyDescription )} "
188+ elif subprefix == '' and sesprefix is None : # -> Without sesprefix + unpack() -> Sort in the study (=session) subfolder
189+ sessionfolder = sourcefolder / f"{ n :02} -{ cleanup (study [0 ].StudyDescription )} "
190+ else : # -> CLI call -> Sort in patient/study (=subject/session) subfolder
191+ sessionfolder = sourcefolder / f"{ cleanup (patient [0 ].PatientName )} " / f"{ n :02} -{ cleanup (study [0 ].StudyDescription )} "
190192 sortsession (sessionfolder , dicomfiles , folderscheme , namescheme , force , dryrun )
191193 sessions .add (sessionfolder )
192194
0 commit comments