/*========================================================================= 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: * $ export LD_LIBRARY_PATH=$HOME/Projects/gdcm/debug-gcc/bin * $ mono bin/NewSequence.exe gdcmData/012345.002.050.dcm out.dcm */ using System; //using gdcm; public class NewSequence { public static byte[] StrToByteArray(string str) { System.Text.ASCIIEncoding encoding=new System.Text.ASCIIEncoding(); return encoding.GetBytes(str); } public static int Main(string[] argv) { string file1 = argv[0]; string file2 = argv[1]; gdcm.Reader r = new gdcm.Reader(); r.SetFileName( file1 ); if ( ! r.Read() ) { return 1; } gdcm.File f = r.GetFile(); gdcm.DataSet ds = f.GetDataSet(); // tsis = gdcm.Tag(0x0008,0x2112) # SourceImageSequence // Create a dataelement gdcm.DataElement de = new gdcm.DataElement(new gdcm.Tag(0x0010, 0x2180)); string occ = "Occupation"; de.SetByteValue( StrToByteArray(occ), new gdcm.VL((uint)occ.Length)); de.SetVR(new gdcm.VR(gdcm.VR.VRType.SH)); // Create an item gdcm.Item it = new gdcm.Item(); it.SetVLToUndefined(); // Needed to not popup error message //it.InsertDataElement(de) gdcm.DataSet nds = it.GetNestedDataSet(); nds.Insert(de); // Create a Sequence gdcm.SmartPtrSQ sq = gdcm.SequenceOfItems.New(); sq.SetLengthToUndefined(); sq.AddItem(it); // Insert sequence into data set gdcm.DataElement des = new gdcm.DataElement(new gdcm.Tag(0x0400,0x0550)); des.SetVR(new gdcm.VR(gdcm.VR.VRType.SQ)); des.SetValue(sq.__ref__()); des.SetVLToUndefined(); ds.Insert(des); gdcm.Writer w = new gdcm.Writer(); w.SetFile( f ); w.SetFileName( file2 ); if ( !w.Write() ) return 1; return 0; } }