コード例 #1
0
def TestModifyFields(filename):
    outfilename = filename + ".rewrite"
    r = gdcm.Reader()
    r.SetFileName(filename)
    sucess = r.Read()
    #print r.GetFile().GetDataSet()

    ds = r.GetFile().GetDataSet()
    #print dir(ds)
    # eg, let's remove a tag
    removetag = gdcm.Tag(0x0043, 0x106f)
    if ds.FindDataElement(removetag):
        ds.Remove(removetag)

    # let's replace a value:
    replacetag = gdcm.Tag(0x0010, 0x0010)
    if ds.FindDataElement(replacetag):
        de = ds.GetDataElement(replacetag)
        #print dir(de)
        patname = "This^is^an^example"
        vl = gdcm.VL(len(patname))
        de.SetByteValue(patname, vl)

    # let's insert a new dataelement
    # <entry group="0012" element="0062" vr="CS" vm="1" name="Patient Identity Removed"/>
    pir = gdcm.DataElement(gdcm.Tag(0x0012, 0x0062))
    pir.SetVR(gdcm.VR(gdcm.VR.CS))  # specify the VR explicitely
    yes = "YES"
    pir.SetByteValue(yes, gdcm.VL(len(yes)))
    ds.Insert(pir)

    # try again but pretend we don't know the VR
    # <entry group="0012" element="0063" vr="LO" vm="1-n" name="De-identification Method"/>
    deidmethod = gdcm.Tag(0x0012, 0x0063)
    # retrieve the supreme global instance, sum of all knowledge in da whole universe:
    dicomdicts = gdcm.GlobalInstance.GetDicts()
    dictel = dicomdicts.GetDictEntry(deidmethod)
    #print dictel.GetVR()
    deid = gdcm.DataElement(deidmethod)
    deid.SetVR(dictel.GetVR())
    methodstr = "Well known Company"
    #deid.SetByteValue( methodstr, gdcm.VL(len(methodstr)) )
    deid.SetByteValue(methodstr, gdcm.VL(len(methodstr)))
    ds.Insert(deid)

    #w = gdcm.Writer()
    #w.SetFileName( outfilename )
    #w.SetFile( r.GetFile() )
    #sucess = w.Write()
    return sucess
コード例 #2
0
def remove_grouplengths(f, ds):
    it = ds.GetDES().begin()
    while not it.equal(ds.GetDES().end()):
        de = it.next()
        t = de.GetTag()
        if t.IsGroupLength():
            ds.GetDES().erase(it)
        else:
            vr = gdcm.DataSetHelper.ComputeVR(f, ds, t)
            if (vr.Compatible(gdcm.VR(gdcm.VR.SQ))):
                sq = de.GetValueAsSQ()
                if sq is not None \
                   and sq.GetNumberOfItems() > 0:
                    n = sq.GetNumberOfItems()
                    for i in range(1, n + 1):
                        item = sq.GetItem(i)
                        nested = item.GetNestedDataSet()
                        remove_grouplengths(f, nested)
                    de.SetValue(sq.GetPointer())
                    de.SetVLToUndefined()
                    ds.Replace(de)
コード例 #3
0
  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

  # Create a dataelement
  de = gdcm.DataElement(gdcm.Tag(0x0010, 0x2180))
  de.SetByteStringValue("Occupation")
  de.SetVR(gdcm.VR(gdcm.VR.SH))

  # Create an item
  it=gdcm.Item()
  it.SetVLToUndefined()      # Needed to not popup error message
  #it.InsertDataElement(de)
  nds=it.GetNestedDataSet()
  nds.Insert(de)

  # Create a Sequence
  sq=gdcm.SequenceOfItems().New()
  sq.SetLengthToUndefined()
  sq.AddItem(it)

  # Insert sequence into data set
  des=gdcm.DataElement(gdcm.Tag(0x0400,0x0550))
コード例 #4
0
if __name__ == "__main__":
  r = gdcm.Reader()
  # Will require Testing...
  dataroot = gdcm.Testing.GetDataRoot()
  filename = os.path.join( dataroot, '012345.002.050.dcm' )
  r.SetFileName( filename )
  r.Read()
  f = r.GetFile()
  ds = f.GetDataSet()

  uid = "1.2.840.10008.5.1.4.1.1.66"
#  f = gdcm.File()
#  ds = f.GetDataSet()
  de = gdcm.DataElement( gdcm.Tag(0x0008,0x0016) )
  de.SetByteStringValue( uid )
  vr = gdcm.VR( gdcm.VR.UI )
  de.SetVR( vr )
  ds.Replace( de )

  ano = gdcm.Anonymizer()
  ano.SetFile( r.GetFile() )
  ano.RemovePrivateTags()
  ano.RemoveGroupLength()
  taglist = [
  gdcm.Tag(0x0008,0x0008),
  gdcm.Tag(0x0008,0x0022),
  gdcm.Tag(0x0008,0x0032),
  gdcm.Tag(0x0008,0x2111),
  gdcm.Tag(0x0008,0x1150),
  gdcm.Tag(0x0008,0x1155),
  gdcm.Tag(0x0008,0x0100),
コード例 #5
0
"""

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()

    # Create a dataelement
    de = gdcm.DataElement(gdcm.Tag(0x0051, 0x1011))
    de.SetByteStringValue("p2")
    de.SetVR(gdcm.VR(gdcm.VR.SH))

    ds.Insert(de)

    w = gdcm.Writer()
    w.SetFile(f)
    w.SetFileName(file2)
    if not w.Write():
        sys.exit(1)