Beispiel #1
0
def TestAnonymizer(filename, verbose=False):
    r = gdcm.Reader()
    r.SetFileName(filename)
    sucess = r.Read()
    if (not sucess): return 1
    #print r.GetFile().GetDataSet()

    ano = gdcm.Anonymizer()
    ano.SetFile(r.GetFile())
    # 1. Replace with another value
    ano.Replace(gdcm.Tag(0x0010, 0x0010), "Test^Anonymize")
    # 2. Remove a tag (even a SQ)
    ano.Remove(gdcm.Tag(0x0008, 0x2112))
    # 3. Make a tag empty
    ano.Empty(gdcm.Tag(0x0008, 0x0070))
    # Call the main function:
    sucess = ano.RemovePrivateTags()  # do it !
    if (not sucess): return 1

    # Check we can also change value from binary field
    #ano.Replace( gdcm.Tag(0x0010,0x0010), "16", gdcm. )

    # Let's check if our anonymization worked:
    if verbose:
        print(ano.GetFile().GetDataSet())

    # So at that point r.GetFile() was modified, let's simply passed it to the Writer:
    # First find a place where to write it out:
    subdir = "TestAnonymizerPython"
    tmpdir = gdcm.Testing.GetTempDirectory(subdir)
    if not gdcm.System.FileIsDirectory(tmpdir):
        gdcm.System.MakeDirectory(tmpdir)
    # Ok directory does exist now, extract the name of the input file, and merge it in
    # our newly created tmpdir:
    outfilename = gdcm.Testing.GetTempFilename(filename, subdir)

    w = gdcm.Writer()
    w.SetFileName(outfilename)
    w.SetFile(r.GetFile())
    w.SetCheckFileMetaInformation(False)
    sucess = w.Write()
    if (not sucess): return 1

    if verbose:
        print("Success to write: %s" % outfilename)

    return sucess
Beispiel #2
0
    def anonymizeOneFile(self, fin, fout):
        reader = gdcm.Reader()
        reader.SetFileName(fin)
        ret = reader.Read()

        if not ret:
            return (False, "File could not been read")

        (ar, af) = self._anonymizeOneFile(reader.GetFile())

        if not ar:
            return (False, "Error while anonymizing")

        writer = gdcm.Writer()
        writer.SetFileName(fout)
        writer.SetFile(af)
        writer.Write()
        return (True, "OK")
Beispiel #3
0
def example1():

    b = Gdcmanon.Gdcmanon(key = 'openssl/key.key', cert = 'openssl/cert.pem', \
                          salt = '55')

    anon = b.getInstance()

    r = gdcm.Reader()
    r.SetFileName('input.dcm')
    r.Read()

    anon.SetFile(r.GetFile())
    if not anon.BasicApplicationLevelConfidentialityProfile(
            True):  # False to decrypt
        print("Error during anonymization", file=sys.stderr)
    else:
        w = gdcm.Writer()
        w.SetFileName('out.dcm')
        w.SetFile(anon.GetFile())
        w.Write()
Beispiel #4
0
    def save_as(self, fname, obj=None):
        """ Save DICOM file given a GDCM DICOM object.
        Examples of a GDCM DICOM object:
        * gdcm.Writer()
        * gdcm.Reader()
        * gdcm.Anonymizer()

        :param fname: DICOM file name to be saved
        :param obj: DICOM object to be saved, if None, Anonymizer() is used
        """
        writer = gdcm.Writer()
        writer.SetFileName(fname)
        if obj is None and self._anon_obj:
            obj = self._anon_obj
        else:
            raise ValueError("Need DICOM object, e.g. obj=gdcm.Anonymizer()")
        writer.SetFile(obj.GetFile())
        if not writer.Write():
            raise IOError("Could not save DICOM file")
        return True
Beispiel #5
0
        return "MyTP"


if __name__ == "__main__":
    import sys
    gdcm.FileMetaInformation.SetSourceApplicationEntityTitle("DumbAnonymizer")
    gdcm.UIDGenerator.SetRoot(THERALYS_ORG_ROOT)

    r = gdcm.Reader()
    filename = sys.argv[1]
    r.SetFileName(filename)
    if not r.Read(): sys.exit(1)

    obj = MyAnon()

    w = gdcm.Writer()
    ano = gdcm.Anonymizer()
    ano.SetFile(r.GetFile())
    ano.RemoveGroupLength()
    for tag, rule in tag_rules.items():
        if rule[0] == 'Value':
            print tag, rule
            ano.Replace(gdcm.Tag(tag[0], tag[1]), rule[1])
        elif rule[0] == 'Method':
            print tag, rule
            # result = locals()[rule[1]]()
            methodname = rule[1]
            if hasattr(obj, methodname):
                _member = getattr(obj, methodname)
                result = _member()
                ano.Replace(gdcm.Tag(tag[0], tag[1]), result)
Beispiel #6
0
    ano.Remove( tag )

  # special handling
  gen = gdcm.UIDGenerator()
  ano.Replace( gdcm.Tag(0x0008,0x9123), gen.Generate() )
  #ano.Empty( gdcm.Tag(0x0040,0x0555) )


#
#  uid = gen.Generate()
#  de.SetTag( gdcm.Tag(0x0008,0x0018) )
#  de.SetByteStringValue( uid )
#  ds.Insert( de )

  # init FMI now:
  #fmi = f.GetHeader()
  #ts = gdcm.TransferSyntax()
  #print ts
  #fmi.SetDataSetTransferSyntax( ts ) # default
  #print fmi.GetDataSetTransferSyntax()
  #de.SetTag( gdcm.Tag(0x0002,0x0010) )
  #uid = "1.2.840.10008.1.2"
  #de.SetByteStringValue( uid )
  #fmi.Insert( de )
#  f.SetHeader( r.GetFile().GetHeader() )

  writer = gdcm.Writer()
  writer.SetFile( ano.GetFile() )
  writer.SetFileName( "rawstorage.dcm" );
  writer.Write()