X-Git-Url: https://git.creatis.insa-lyon.fr/pubgit/?a=blobdiff_plain;ds=sidebyside;f=src%2FgdcmDicomDir.cxx;h=9145817176fed5f65f028c9f21af06b5c0dd2ffc;hb=42b5b1fda1b91860c4708a5706600a913da219f3;hp=73fb51adc0554533f41789b6bca3f8404556814b;hpb=4efd58d718e072fa7909efa78e75d5dbbda3755f;p=gdcm.git diff --git a/src/gdcmDicomDir.cxx b/src/gdcmDicomDir.cxx index 73fb51ad..91458171 100644 --- a/src/gdcmDicomDir.cxx +++ b/src/gdcmDicomDir.cxx @@ -3,8 +3,8 @@ Program: gdcm Module: $RCSfile: gdcmDicomDir.cxx,v $ Language: C++ - Date: $Date: 2005/02/11 16:55:39 $ - Version: $Revision: 1.132 $ + Date: $Date: 2005/03/09 19:29:38 $ + Version: $Revision: 1.136 $ Copyright (c) CREATIS (Centre de Recherche et d'Applications en Traitement de l'Image). All rights reserved. See Doc/License.txt or @@ -55,6 +55,7 @@ // ---------------------------------------------------------------------------- // // Dicom PS 3.3 describes the relationship between Directory Records, as follow +// (see also PS 4.3, 2004, page 50 for Entity-Relationship model) // // Directory Record Type Directory Record Types which may be included // in the next lower-level directory Entity @@ -163,10 +164,12 @@ DicomDir::DicomDir(std::string const &fileName, bool parseDir ): gdcmWarningMacro( "Parse directory and create the DicomDir"); ParseDirectory(); } + /* else { // user may just call ParseDirectory() *after* constructor } + */ } // Only if user passed a DICOMDIR // ------------------------------ @@ -475,6 +478,44 @@ bool DicomDir::WriteDicomDir(std::string const &fileName) return true; } +/** + * \brief Anonymize a DICOMDIR + * @return true + */ + +bool DicomDir::AnonymizeDicomDir() +{ + ValEntry *v; + // Something clever to be found to forge the Patient names + std::ostringstream s; + int i = 1; + for(ListDicomDirPatient::iterator cc = Patients.begin(); + cc!= Patients.end(); + ++cc) + { + s << i; + v = (*cc)->GetValEntry(0x0010, 0x0010) ; // Patient's Name + if (v) + { + v->SetValue(s.str()); + } + + v = (*cc)->GetValEntry(0x0010, 0x0020) ; // Patient ID + if (v) + { + v->SetValue(" "); + } + + v = (*cc)->GetValEntry(0x0010, 0x0030) ; // Patient's BirthDate + if (v) + { + v->SetValue(" "); + } + s << ""; + i++; + } + return true; +} //----------------------------------------------------------------------------- // Protected /** @@ -640,7 +681,7 @@ void DicomDir::CreateDicomDir() } else { - gdcmWarningMacro( "Not a ValEntry."); + gdcmWarningMacro( "(0004,1430) not a ValEntry ?!?"); continue; } @@ -821,7 +862,6 @@ void DicomDir::SetElements(std::string const &path, VectDocument const &list) || first ) { SetElement(path, GDCM_DICOMDIR_SERIE, *it); - first = true; } // Always Deal with 'IMAGE' Elements