[Dcmlib] AnonymizeNoLoad() (BIS)

Jean-Pierre Roux jpr at creatis.insa-lyon.fr
Mon Nov 13 09:14:15 CET 2006


Greg Book wrote:

> So, I'm still having this problem... Has anyone seen this problem 
> before? I'm wondering if it's something I'm doing wrong, or if its a 
> bug? And, if it is a bug, will it be fixed in version 2.0?
>
Now, your code looks very much like a copy-paste of  
Example/AnonymizeNoLoad.cxx, and AnonymizeNoLoad seems bug free ...

Here, we use gdcm1.3, but it worked at gdcm1.2 time (there's an API 
breaking modif between 1.2 and 1.3 : we use a reference counting, 
therefore, we must write      
f = gdcm::File::New( );
and
f->Delete();
instead of
f = new gdcm::File();
and
delete f;

gdcm2.0  will be something quite different, and was developed by 
Mathieu, when he has some time left.
No date can be anounced for the first gdcm2 'stable release' (Mathieu : 
any comment?)
Could you send me one of your files : I would like to check if there is 
nothing 'strange' in the header that would break somewhere in gdcm ?
Thx
Jean-Pierre Roux

> Thanks,
> Greg
>
>
>
> Greg Book wrote:
>
>> I finally got around to working on it last night. I now have the 
>> following code, but the dicom file is not anonymized. I put in a 
>> break point, and the file object has the correct anonymize elements.
>>
>>         f = new gdcm::File();
>>         f->SetLoadMode(gdcm::LD_ALL);
>>         f->SetFileName(filelist.Item(i).c_str());
>>         if (!f->Load()) {
>>             delete f;
>>             continue;
>>         }
>>
>>         f->AddAnonymizeElement( 0x0010, 0x0010, "Non^Person");
>>
>>         f->AnonymizeNoLoad();
>>         f->ClearAnonymizeList();
>>         delete f;
>>
>> -Greg
>>
>>
>>
>> Jean-Pierre Roux wrote:
>>
>>> Greg Book wrote:
>>>
>>>> I added f->Load(), but still nothing happens. This is on Windows 
>>>> XP, using gdcm 1.2.2 downloaded from sourceforge. Here is the new 
>>>> code:
>>>>
>>>>     for (i=0;i<filelist.Count();i++) {
>>>>         /* open dicom file */
>>>>         f = new gdcm::File();
>>>>         f->SetLoadMode(gdcm::LD_ALL);
>>>>         f->SetFileName(filelist.Item(i).c_str());
>>>>         /* determine which fields to anonymize */
>>>
>>>
>>>
>>> --> I'm not sure of what you want to do here :
>>> --> What is chkPatientName?
>>> --> When I replace, in your code the following lines by :
>>>        f->AddAnonymizeElement( 0x0010, 0x0010, "g^Fantomas" );
>>>        f->AddAnonymizeElement( 0x0010, 0x0030,"11111111" );
>>>        f->AddAnonymizeElement( 0x0008, 0x0020, "11111111");
>>> etc
>>> the file is anonymized ?!?
>>>
>>> Jean-Pierre
>>>
>>>>         if (chkPatientName->GetValue())
>>>>             f->AddAnonymizeElement( 0x0010, 0x0010, 
>>>> txtPatientName->GetValue().c_str());
>>>>         if (chkPatientBirthdate->GetValue())
>>>>             f->AddAnonymizeElement( 0x0010, 0x0030, 
>>>> txtPatientBirthdate->GetValue().c_str());
>>>>         if (chkStudyDate->GetValue())
>>>>             f->AddAnonymizeElement( 0x0008, 0x0020, 
>>>> txtStudyDate->GetValue().c_str());
>>>>         if (chkSeriesDate->GetValue())
>>>>             f->AddAnonymizeElement( 0x0008, 0x0021, 
>>>> txtSeriesDate->GetValue().c_str());
>>>>                if (!f->Load()) {
>>>>             delete f;
>>>>             continue;
>>>>         }
>>>>         f->AnonymizeNoLoad();
>>>>         f->ClearAnonymizeList();
>>>>         /* close the file */
>>>>         delete f;
>>>>     }
>>>>
>>>> -Greg
>>>>
>>>>
>>>>
>>>>
>>>> Jean-Pierre Roux wrote:
>>>>
>>>>> Jean-Pierre Roux wrote:
>>>>>
>>>>>> Greg Book wrote:
>>>>>>
>>>>>>  
>>>>>>
>>>>>>> I'm attempting to anonymize a file using 
>>>>>>> gdcm::File::AnonymizeNoLoad(). I use the following code, but the 
>>>>>>> file is not anonymized, the file date is not changed either.
>>>>>>> What might be happening?
>>>>>>>   
>>>>>>
>>>>>>
>>>>>>
>>>>>>  
>>>>>>
>>>>> --> OK : my answer may look strange
>>>>> Please use
>>>>>
>>>>> f->Load()
>>>>> juste before using f->AnonymizeNoLoad()
>>>>>
>>>>> This is not a mistake, just a stupid name for AnonymizeNoLoad :
>>>>> NoLoad was *not* "don't load the file header", but "don't load the 
>>>>> pixels in memory".
>>>>> The right name should be : AnonymizeNoGetData
>>>>>
>>>>>
>>>>> Jean-Pierre Roux
>>>>>
>>>>>>> Thanks,
>>>>>>> Greg
>>>>>>>
>>>>>>>        /* open dicom file */
>>>>>>>        f = new gdcm::File();
>>>>>>>        f->SetLoadMode(gdcm::LD_ALL);
>>>>>>>        f->SetFileName(filelist.Item(i).c_str());
>>>>>>>   
>>>>>>
>>>>>>
>>>>>>
>>>>>> I'm not on my PC, and I cannot check, but I think you should Load 
>>>>>> the gdcm::File  here.
>>>>>>
>>>>>>      if ( !f->Load() )
>>>>>>      {
>>>>>>          std::cout << "[" << fileName << "] is not a 
>>>>>> gdcm-readable file"
>>>>>>              << std::endl;
>>>>>>           f->Delete();
>>>>>>           return 1;
>>>>>>      }
>>>>>>
>>>>>> (Have a look at Example/AnonymizeNoLoad.xx)
>>>>>> HTH
>>>>>> Jean-Pierre Roux
>>>>>>
>>>>>>  
>>>>>>
>>>>>>>        /* determine which fields to anonymize */
>>>>>>>        if (chkPatientName->GetValue())
>>>>>>>            f->AddAnonymizeElement( 0x0010, 0x0010, 
>>>>>>> txtPatientName->GetValue().c_str());
>>>>>>>        if (chkPatientBirthdate->GetValue())
>>>>>>>            f->AddAnonymizeElement( 0x0010, 0x0030, 
>>>>>>> txtPatientBirthdate->GetValue().c_str());
>>>>>>>        if (chkStudyDate->GetValue())
>>>>>>>            f->AddAnonymizeElement( 0x0008, 0x0020, 
>>>>>>> txtStudyDate->GetValue().c_str());
>>>>>>>        if (chkSeriesDate->GetValue())
>>>>>>>            f->AddAnonymizeElement( 0x0008, 0x0021, 
>>>>>>> txtSeriesDate->GetValue().c_str());
>>>>>>>              /* close the file */
>>>>>>>        f->AnonymizeNoLoad();
>>>>>>>        f->ClearAnonymizeList();
>>>>>>>        delete f;
>>>>>>>
>>>>>>> ------------------------------------------------------------------------ 
>>>>>>>
>>>>>>>
>>>>>>> _______________________________________________
>>>>>>> Dcmlib mailing list
>>>>>>> Dcmlib at creatis.insa-lyon.fr
>>>>>>> http://www.creatis.insa-lyon.fr/mailman/listinfo/dcmlib
>>>>>>>
>>>>>>>   
>>>>>>
>>>>>>
>>>>>> _______________________________________________
>>>>>> Dcmlib mailing list
>>>>>> Dcmlib at creatis.insa-lyon.fr
>>>>>> http://www.creatis.insa-lyon.fr/mailman/listinfo/dcmlib
>>>>>>
>>>>>>  
>>>>>>
>>>>>
>>>>
>>>
>>
>>------------------------------------------------------------------------
>>
>>_______________________________________________
>>Dcmlib mailing list
>>Dcmlib at creatis.insa-lyon.fr
>>http://www.creatis.insa-lyon.fr/mailman/listinfo/dcmlib
>>
>
>------------------------------------------------------------------------
>
>_______________________________________________
>Dcmlib mailing list
>Dcmlib at creatis.insa-lyon.fr
>http://www.creatis.insa-lyon.fr/mailman/listinfo/dcmlib
>



More information about the Dcmlib mailing list