# FixCommaBug.py

    ############################################################################
    #
    #  Program: GDCM (Grassroots DICOM). A DICOM library
    #  Module:  $URL$
    #
    #  Copyright (c) 2006-2009 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.
    #
    ############################################################################

    """
    Using LC_NUMERIC set to something not compatible with "C" it is possible to write out "," instead of
    "." as required by the DICOM standard
    Issue is still current (IMHO) with gdcm 2.0.9
    """

    import gdcm
    import sys

    filename = sys.argv[1]
    outname = sys.argv[2]

    # read
    r = gdcm.Reader()
    r.SetFileName( filename )
    if not r.Read():
      print "not valid"
      sys.exit(1)

    file = r.GetFile()
    dataset = file.GetDataSet()

    ano = gdcm.Anonymizer()
    ano.SetFile( file )

    tags = [
    gdcm.Tag(0x0018,0x1164),
    gdcm.Tag(0x0018,0x0088),
    gdcm.Tag(0x0018,0x0050),
    gdcm.Tag(0x0028,0x0030),
    ]

    for tag in tags:
      print tag
      pixelspacing = dataset.GetDataElement( tag )
      #print pixelspacing
      bv = pixelspacing.GetByteValue()
      str = bv.GetPointer() # return a pointer and not a PyString !
      #print bv.GetLength()
      new_str = str.replace(",",".")
      # Need to explicitly pass bv.GetLength() to remove any trailing garbage
      ano.Replace( tag, new_str, bv.GetLength() )

    #print dataset

    w = gdcm.Writer()
    w.SetFile( file )
    w.SetFileName( outname )
    if not w.Write():
      print "Cannot write"
      sys.exit(1)

    # paranoid:
    image_reader = gdcm.ImageReader()
    image_reader.SetFileName( outname )
    if not image_reader.Read():
      print "there is still a comma"
      sys.exit(1)

    print "Sucess!"
    sys.exit(0) # success