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