#if defined(USE_GDCM)
#include <gdcmGlobal.h>
#include <gdcmSerieHelper.h>
+#include <gdcmFileHelper.h>
+#include <gdcmUtil.h>
#include <vtkGdcmReader.h>
#endif
+////////////////////////////////////////////////////////////////////////
+void GimmickView::Anonymize(std::vector<std::string> i_filenames, int type)
+{
+ bool res = true;
+ std::vector<GDCM_NAME_SPACE::FileHelper *> filesH;
+ std::vector<std::string> suid;
+ std::map<std::string, std::string> msuid;
+ std::string tempuid = GDCM_NAME_SPACE::Util::CreateUniqueUID();
+ int i = 1;
+ std::vector<std::string>::iterator it = i_filenames.begin();
+ for(; it != i_filenames.end(); it++)
+ {
+
+ GDCM_NAME_SPACE::File *file;
+ file = GDCM_NAME_SPACE::File::New( );
+ file->SetLoadMode( GDCM_NAME_SPACE::LD_ALL );
+ file->SetFileName( (*it).c_str() );
+ res = file->Load();
+ if ( !res )
+ {
+ std::cerr << "Sorry, " << (*it).c_str() <<" not a gdcm-readable "
+ << "DICOM / ACR File" <<std::endl;
+ file ->Delete();
+ //return 0;
+ }
+ std::cout << " ... is readable " << std::endl;
+
+ // We need a gdcm::FileHelper, since we want to load the pixels
+ GDCM_NAME_SPACE::FileHelper *fh = GDCM_NAME_SPACE::FileHelper::New(file);
+
+ uint8_t *imageData = fh->GetImageData();
+
+ // Institution name
+ file->AddAnonymizeElement(0x0008, 0x0080, "*");
+ // Patient's name
+ file->AddAnonymizeElement(0x0010, 0x0010, "*");
+ // Patient's ID
+ file->AddAnonymizeElement( 0x0010, 0x0020,"1515" );
+ // Study Instance UID
+ file->AddAnonymizeElement(0x0020, 0x000d, tempuid );
+ // Telephone
+ file->AddAnonymizeElement(0x0010, 0x2154, "3615" );
+
+ // Aware user will add here more fields to anonymize here
+
+ // The gdcm::File is modified in memory
+
+ file->AnonymizeFile();
+
+
+ i++;
+ fh->SetContentType(GDCM_NAME_SPACE::UNMODIFIED_PIXELS_IMAGE);
+
+ fh->WriteDcmExplVR(file->GetFileName() +".ano1" );
+ std::cout << i <<" End Anonymize" << std::cout;
+ file->ClearAnonymizeList();
+ file->Delete();
+ fh->Delete();
+ }
+}
////////////////////////////////////////////////////////////////////////
//void GimmickView::Anonymize(std::vector<std::string> i_filenames, int type)
//{
#include <creaImageIOMultiThreadImageReader.h>
#endif
-#if defined(USE_QT4)
-#include <creaImageIOQMultiThreadImageReader.h>
+#if defined(USE_QT)
+#include "Qt/creaImageIOQMultiThreadImageReader.h"
#endif
{ GimmickError("INTERNAL ERROR : EditFields not implemented"); }
/// Anonymize or de-anonymize data
- virtual void Anonymize(std::vector<std::string> i_filenames, int type)
- { GimmickError("INTERNAL ERROR : Anonymize not implemented"); }
+ void Anonymize(std::vector<std::string> i_filenames, int type);
/// Display all Dicom Tags
virtual void DumpTags(const std::string filename)
wxMenuItem* m4Item=menuItem->Append(wxID_ANY, _T("&Display Dicom Tags"));
menuItem->AppendSubMenu(subExportMenu, wxT("&Export"));
-#if defined(USE_GDCM_ANOM)
+
wxMenuItem* m1Item=menuItem->Append(wxID_ANY, _T("&Anonymize"));
mAnonymizingID=m1Item->GetId();
- Connect( mAnonymizingID, wxEVT_COMMAND_MENU_SELECTED, wxCommandEventHandler(WxTreeView::OnAnonymize) );
-#endif
+ Connect( mAnonymizingID, wxEVT_COMMAND_MENU_SELECTED, wxCommandEventHandler(WxTreeView::OnAnonymizer) );
+
mLocalCopyID=m2Item->GetId();
mEditFieldID=m3Item->GetId();
mDumpID=m4Item->GetId();
wxBusyCursor busy;
std::vector<std::string> filesname;
std::vector<tree::Node*> nodes;
-// nodes.push_back(((ItemData*)GetCtrl(mLastRightLevel)->GetItemData(mLastRightSelected))->node);
+ nodes.push_back(((ItemData*)GetCtrl(mLastRightLevel)->GetItemData(mLastRightSelected))->node);
if(nodes.size() != 0)
{
GetFilenamesAsString(nodes,filesname);
- // GetGimmickView()->Anonymize(filesname,0);
+ GetGimmickView()->Anonymize(filesname,0);
}
}