############################################################################ # # Program: GDCM (Grassroots DICOM). A DICOM library # # Copyright (c) 2006-2011 Mathieu Malaterre # All rights reserved. # See Copyright.txt or http://gdcm.sourceforge.net/Copyright.html for details. # # This software is distributed WITHOUT ANY WARRANTY; without even # the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR # PURPOSE. See the above copyright notice for more information. # ############################################################################ """ Usage: python ManipulateSequence.py input.dcm output.dcm This was tested using: python ManipulateSequence.py gdcmData/D_CLUNIE_CT1_J2KI.dcm myoutput.dcm This is a dummy example on how to modify a value set in a nested-nested dataset WARNING: Do not use as-is in production, this is just an example This example works in an undefined length Item only (you need to explicitly recompute the length otherwise) """ import sys import gdcm if __name__ == "__main__": file1 = sys.argv[1] file2 = sys.argv[2] r = gdcm.Reader() r.SetFileName( file1 ) if not r.Read(): sys.exit(1) f = r.GetFile() ds = f.GetDataSet() tsis = gdcm.Tag(0x0008,0x2112) # SourceImageSequence if ds.FindDataElement( tsis ): sis = ds.GetDataElement( tsis ) #sqsis = sis.GetSequenceOfItems() # GetValueAsSQ handle more cases sqsis = sis.GetValueAsSQ() if sqsis.GetNumberOfItems(): item1 = sqsis.GetItem(1) nestedds = item1.GetNestedDataSet() tprcs = gdcm.Tag(0x0040,0xa170) # PurposeOfReferenceCodeSequence if nestedds.FindDataElement( tprcs ): prcs = nestedds.GetDataElement( tprcs ) sqprcs = prcs.GetSequenceOfItems() if sqprcs.GetNumberOfItems(): item2 = sqprcs.GetItem(1) nestedds2 = item2.GetNestedDataSet() # (0008,0104) LO [Uncompressed predecessor] # 24, 1 CodeMeaning tcm = gdcm.Tag(0x0008,0x0104) if nestedds2.FindDataElement( tcm ): cm = nestedds2.GetDataElement( tcm ) mystr = "GDCM was here" cm.SetByteStringValue( mystr ) w = gdcm.Writer() w.SetFile( f ) w.SetFileName( file2 ) if not w.Write(): sys.exit(1)