1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81
|
/*=========================================================================
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;
}
}
|