GDCM  2.2.0
ManipulateSequence.py
############################################################################
#
# 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 explicitely recompute the length otherwise)
"""
import sys
import gdcm
if __name__ == "__main__":
file1 = sys.argv[1]
file2 = sys.argv[2]
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.SetByteValue( mystr, gdcm.VL( len(mystr) ) )
w.SetFile( f )
w.SetFileName( file2 )
if not w.Write():
sys.exit(1)

Generated on Wed Jun 13 2012 20:40:36 for GDCM by doxygen 1.8.1
SourceForge.net Logo