/*========================================================================= Program: gdcm Module: $RCSfile: AnonymizeNoLoad.cxx,v $ Language: C++ Date: $Date: 2005/06/07 13:10:57 $ Version: $Revision: 1.1 $ Copyright (c) CREATIS (Centre de Recherche et d'Applications en Traitement de l'Image). All rights reserved. See Doc/License.txt or http://www.creatis.insa-lyon.fr/Public/Gdcm/License.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 notices for more information. =========================================================================*/ #include "gdcmFile.h" #include "gdcmFileHelper.h" #include "gdcmCommon.h" #include "gdcmDebug.h" #include "gdcmArgMgr.h" #include int main(int argc, char *argv[]) { START_USAGE(usage) " \n AnonymizeNoLOad :\n", " Anonymize a gdcm-readable Dicom image even if pixels aren't gdcm readable", " Warning : Warning : the image is overwritten", " to preserve image integrity, use a copy.", " usage: AnonymizeNoLoad filein=inputFileName fileout=[debug] ", " debug : user wants to run the program in 'debug mode' ", FINISH_USAGE // ----- Initialize Arguments Manager ------ gdcm::ArgMgr *am = new gdcm::ArgMgr(argc, argv); if (am->ArgMgrDefined("usage")) { am->ArgMgrUsage(usage); // Display 'usage' delete am; return 0; } if (am->ArgMgrDefined("debug")) gdcm::Debug::DebugOn(); char *fileName = am->ArgMgrWantString("filein",usage); int loadMode; if ( am->ArgMgrDefined("noshadow") && am->ArgMgrDefined("noseq") ) loadMode = NO_SEQ | NO_SHADOW; else if ( am->ArgMgrDefined("noshadow") ) loadMode = NO_SHADOW; else if ( am->ArgMgrDefined("noseq") ) loadMode = NO_SEQ; else loadMode = 0; delete am; // we don't need Argument Manager any longer // ============================================================ // Parse the input file. // ============================================================ gdcm::File *f1; f1 = new gdcm::File( ); f1->SetLoadMode(loadMode); int res = f1->Load(fileName); // gdcm::File::IsReadable() is no usable here, because we deal with // any kind of gdcm::Readable *document* // not only gdcm::File (as opposed to gdcm::DicomDir) if ( !res ) { std::cout <AddAnonymizeElement( 0x0008, 0x0080, "Xanadoo" ); // Patient's name f1->AddAnonymizeElement( 0x0010, 0x0010, "Fantomas" ); // Patient's ID f1->AddAnonymizeElement( 0x0010, 0x0020,"1515" ); // Patient's Birthdate f1->AddAnonymizeElement( 0x0010, 0x0030,"11.11.1111" ); // Patient's Adress f1->AddAnonymizeElement( 0x0010, 0x1040,"Sing-sing" ); // Patient's Mother's Birth Name f1->AddAnonymizeElement( 0x0010, 0x1060,"Vampirella" ); // Study Instance UID f1->AddAnonymizeElement( 0x0020, 0x000d, "9.99.999.9999" ); // Telephone f1->AddAnonymizeElement(0x0010, 0x2154, "3615" ); // Aware use will add new fields here // ============================================================ // Overwrite the file // ============================================================ std::cout <<"Let's AnonymizeNoLoad " << std::endl;; // The gdcm::File remains untouched in memory f1->AnonymizeNoLoad(); // No need to write the File : modif were done on disc ! // File was overwritten ... std::cout <<"End AnonymizeNoLoad" << std::endl; // ============================================================ // Remove the Anonymize list // ============================================================ f1->ClearAnonymizeList(); delete f1; return 0; }