@@ -390,9 +390,20 @@ class Nifti1DicomExtension(Nifti1Extension):
390
390
"""
391
391
def __init__ (self , code , content ):
392
392
self ._code = code
393
- self ._raw_content = content
394
- self ._is_implicit_VR = self ._guess_implicit_VR ()
395
- self ._content = self ._unmangle (content )
393
+ if content .__class__ == Dataset :
394
+ self ._is_implicit_VR = False
395
+ self ._is_little_endian = True
396
+ self ._raw_content = self ._mangle (content )
397
+ self ._content = content
398
+ elif len (content ): # Got a byte string - unmangle it
399
+ self ._raw_content = content
400
+ self ._is_implicit_VR = self ._guess_implicit_VR ()
401
+ self ._is_little_endian = self ._guess_little_endian ()
402
+ self ._content = self ._unmangle (content )
403
+ else :
404
+ self ._is_implicit_VR = False
405
+ self ._is_little_endian = True
406
+ self ._content = Dataset ()
396
407
397
408
def _guess_implicit_VR (self ):
398
409
"""Without a DICOM Transfer Syntax, it's difficult to tell if Value
@@ -406,20 +417,20 @@ def _guess_implicit_VR(self):
406
417
implicit_VR = True
407
418
return implicit_VR
408
419
409
- def _is_little_endian (self ):
420
+ def _guess_little_endian (self ):
410
421
return True
411
422
412
423
def _unmangle (self ,value ):
413
424
bio = BytesIO (value )
414
425
ds = read_dataset (bio ,self ._is_implicit_VR ,self ._is_little_endian )
415
426
return ds
416
427
417
- def _mangle (self , value ):
428
+ def _mangle (self , dataset ):
418
429
bio = BytesIO ()
419
430
dio = DicomFileLike (bio )
420
431
dio .is_implicit_VR = self ._is_implicit_VR
421
432
dio .is_little_endian = self ._is_little_endian
422
- ds_len = write_dataset (dio ,value )
433
+ ds_len = write_dataset (dio ,dataset )
423
434
dio .seek (0 )
424
435
return dio .read (ds_len )
425
436
@@ -428,6 +439,7 @@ def _mangle(self, value):
428
439
from dicom .filereader import read_dataset
429
440
from dicom .filewriter import write_dataset
430
441
from dicom .filebase import DicomFileLike
442
+ from dicom .dataset import Dataset
431
443
from dicom .values import converters as dicom_converters
432
444
from io import BytesIO
433
445
except ImportError :
0 commit comments