X-Git-Url: https://git.creatis.insa-lyon.fr/pubgit/?a=blobdiff_plain;f=Example%2FAnonymizeDicomDir.cxx;h=747714b538ff476dd775f5c4c4d9f03e06177204;hb=329b5524e57929ecf64495be9fe757b69ba64613;hp=424390b5ddc444c250747ff763b2bda29b294536;hpb=94d13393e488310ea378c26380566596ef208bfd;p=gdcm.git diff --git a/Example/AnonymizeDicomDir.cxx b/Example/AnonymizeDicomDir.cxx index 424390b5..747714b5 100644 --- a/Example/AnonymizeDicomDir.cxx +++ b/Example/AnonymizeDicomDir.cxx @@ -3,8 +3,8 @@ Program: gdcm Module: $RCSfile: AnonymizeDicomDir.cxx,v $ Language: C++ - Date: $Date: 2005/06/07 11:12:10 $ - Version: $Revision: 1.2 $ + Date: $Date: 2005/10/25 14:52:26 $ + Version: $Revision: 1.9 $ Copyright (c) CREATIS (Centre de Recherche et d'Applications en Traitement de l'Image). All rights reserved. See Doc/License.txt or @@ -22,7 +22,7 @@ #include "gdcmSQItem.h" #include "gdcmSeqEntry.h" -#include "gdcmValEntry.h" +#include "gdcmDataEntry.h" #include "gdcmDocument.h" #include "gdcmFile.h" @@ -31,6 +31,10 @@ #include +/** + * \brief AnonymizeDicomDir + */ + void AnoNoLoad(gdcm::SQItem *s, std::fstream *fp, uint16_t group, uint16_t elem, std::string val); @@ -51,7 +55,7 @@ void AnoNoLoad(gdcm::SQItem *s, std::fstream *fp, if ( d == NULL) return; - if ( ! dynamic_cast(d) ) + if ( ! dynamic_cast(d) ) return; offset = d->GetOffset(); @@ -66,6 +70,7 @@ void AnoNoLoad(gdcm::SQItem *s, std::fstream *fp, fp->write( v.c_str(), lgth ); } + int main(int argc, char *argv[]) { @@ -81,7 +86,7 @@ int main(int argc, char *argv[]) // ----- Initialize Arguments Manager ------ gdcm::ArgMgr *am = new gdcm::ArgMgr(argc, argv); - if (am->ArgMgrDefined("usage")) + if (argc == 1 || am->ArgMgrDefined("usage")) { am->ArgMgrUsage(usage); // Display 'usage' delete am; @@ -90,35 +95,43 @@ int main(int argc, char *argv[]) char *fileName = am->ArgMgrWantString("filein",usage); - delete am; // we don't need Argument Manager any longer + // if unused Param we give up + if ( am->ArgMgrPrintUnusedLabels() ) + { + am->ArgMgrUsage(usage); + delete am; + return 0; + } + delete am; // --- we don't need Argument Manager any longer --- -// ============================================================ -// Read the input DICOMDIR -// ============================================================ - gdcm::File *f1 = new gdcm::File( fileName ); - if (!f1->IsReadable()) { + // Read the input DICOMDIR + gdcm::File *f; + f = gdcm::File::New( ); + f->SetLoadMode(0); + f->SetFileName( fileName ); + bool res = f->Load(); + if ( !res ) + { std::cerr << "Sorry, " << fileName <<" not a gdcm-readable " << "file" <GetDocEntry(0x0004, 0x1220); + // Look for Directory record sequence + gdcm::DocEntry *e = f->GetDocEntry(0x0004, 0x1220); if ( !e ) { std::cout << "No Directory Record Sequence (0004,1220) found" <Delete(); + return 0; } gdcm::SeqEntry *s = dynamic_cast(e); if ( !s ) { std::cout << "Element (0004,1220) is not a Sequence ?!?" <Delete(); return 0; } @@ -135,19 +148,20 @@ int main(int argc, char *argv[]) while(tmpSI) { d = tmpSI->GetDocEntry(0x0004, 0x1430); // Directory Record Type - if ( gdcm::ValEntry* valEntry = dynamic_cast(d) ) + if ( gdcm::DataEntry *dataEntry = dynamic_cast(d) ) { - v = valEntry->GetValue(); + v = dataEntry->GetString(); } else { - std::cout << "(0004,1430) not a ValEntry ?!?" << std::endl; + std::cout << "(0004,1430) not a DataEntry ?!?" << std::endl; continue; } - if( v != "PATIENT " ) + if( v != "PATIENT " ) // Work only on PATIENT { - continue; // Work only on PATIENT + tmpSI=s->GetNextSQItem(); + continue; } oss << patientNumber; @@ -163,7 +177,7 @@ int main(int argc, char *argv[]) // Telephone AnoNoLoad(tmpSI, fp, 0x0010, 0x2154, oss.str()); - // Aware use will add more Entries he wants to rubb out here + // Aware use will add here more Entries if he wants to rubb them out oss << ""; patientNumber++; @@ -175,8 +189,7 @@ int main(int argc, char *argv[]) fp->close(); delete fp; - delete e; - delete f1; + f->Delete(); return 0; }