GDCM  2.2.6
Public Member Functions | Static Public Member Functions | Protected Member Functions | List of all members
gdcm::Anonymizer Class Reference

Anonymizer This class is a multi purpose anonymizer. It can work in 2 mode: More...

#include <gdcmAnonymizer.h>

Inheritance diagram for gdcm::Anonymizer:
Inheritance graph
[legend]
Collaboration diagram for gdcm::Anonymizer:
Collaboration graph
[legend]

Public Member Functions

 Anonymizer ()
 
 ~Anonymizer ()
 
bool BasicApplicationLevelConfidentialityProfile (bool deidentify=true)
 
bool Empty (Tag const &t)
 
const CryptographicMessageSyntaxGetCryptographicMessageSyntax () const
 
FileGetFile ()
 
bool Remove (Tag const &t)
 
bool RemoveGroupLength ()
 Main function that loop over all elements and remove group length. More...
 
bool RemovePrivateTags ()
 Main function that loop over all elements and remove private tags. More...
 
bool RemoveRetired ()
 Main function that loop over all elements and remove retired element. More...
 
bool Replace (Tag const &t, const char *value)
 
bool Replace (Tag const &t, const char *value, VL const &vl)
 
void SetCryptographicMessageSyntax (CryptographicMessageSyntax *cms)
 Set/Get CMS key that will be used to encrypt the dataset within BasicApplicationLevelConfidentialityProfile. More...
 
void SetFile (const File &f)
 Set/Get File. More...
 
- Public Member Functions inherited from gdcm::Subject
 Subject ()
 
 ~Subject ()
 
unsigned long AddObserver (const Event &event, Command *)
 
unsigned long AddObserver (const Event &event, Command *) const
 
CommandGetCommand (unsigned long tag)
 
bool HasObserver (const Event &event) const
 
void InvokeEvent (const Event &)
 
void InvokeEvent (const Event &) const
 
void RemoveAllObservers ()
 
void RemoveObserver (unsigned long tag)
 
- Public Member Functions inherited from gdcm::Object
 Object ()
 
 Object (const Object &)
 Special requirement for copy/cstor, assigment operator. More...
 
virtual ~Object ()
 
void operator= (const Object &)
 
virtual void Print (std::ostream &) const
 

Static Public Member Functions

static std::vector< TagGetBasicApplicationLevelConfidentialityProfileAttributes ()
 Return the list of Tag that will be considered when anonymizing a DICOM file. More...
 
static SmartPointer< AnonymizerNew ()
 for wrapped language: instantiate a reference counted object More...
 

Protected Member Functions

bool BALCPProtect (DataSet &ds, Tag const &tag, const IOD &iod)
 
bool CanEmptyTag (Tag const &tag, const IOD &iod) const
 
void RecurseDataSet (DataSet &ds)
 
- Protected Member Functions inherited from gdcm::Object
void Register ()
 
void UnRegister ()
 

Detailed Description

Anonymizer This class is a multi purpose anonymizer. It can work in 2 mode:

  1. dumb mode This is a dumb anonymizer implementation. All it allows user is simple operation such as:

Tag based functions:

DataSet based functions:

All function calls actually execute the user specified request. Previous implementation were calling a general Anonymize function but traversing a std::set is O(n) operation, while a simple user specified request is O(log(n)) operation. So 'm' user interaction is O(m*log(n)) which is < O(n) complexity.

  1. smart mode this mode implements the Basic Application Level Confidentiality Profile (DICOM PS 3.15-2008) In this case, it is extremely important to use the same gdcm::Anonymizer class when anonymizing a FileSet. Once the gdcm::Anonymizer is destroyed its memory of known (already processed) UIDs will be lost. which will make the anonymizer behaves incorrectly for attributes such as Series UID Study UID where user want some consistency. When attribute is Type 1 / Type 1C, a dummy generator will take in the existing value and produce a dummy value (a sha1 representation). sha1 algorithm is considered to be cryptographically strong (compared to md5sum) so that we meet the following two conditions:
    • Produce the same dummy value for the same input value
    • do not provide an easy way to retrieve the original value from the sha1 generated value

This class implement the Subject/Observer pattern trigger the following event:

See Also
CryptographicMessageSyntax
Examples:
ClinicalTrialAnnotate.cxx, CreateJPIPDataSet.cxx, and EncapsulateFileInRawData.cxx.

Constructor & Destructor Documentation

gdcm::Anonymizer::Anonymizer ( )
inline
gdcm::Anonymizer::~Anonymizer ( )

Member Function Documentation

bool gdcm::Anonymizer::BALCPProtect ( DataSet ds,
Tag const &  tag,
const IOD iod 
)
protected
bool gdcm::Anonymizer::BasicApplicationLevelConfidentialityProfile ( bool  deidentify = true)

PS 3.15 / E.1.1 De-Identifier An Application may claim conformance to the Basic Application Level Confidentiality Profile as a deidentifier if it protects all Attributes that might be used by unauthorized entities to identify the patient. NOT THREAD SAFE

bool gdcm::Anonymizer::CanEmptyTag ( Tag const &  tag,
const IOD iod 
) const
protected
bool gdcm::Anonymizer::Empty ( Tag const &  t)

Make Tag t empty (if not found tag will be created) Warning: does not handle SQ element

Examples:
CreateJPIPDataSet.cxx.
static std::vector<Tag> gdcm::Anonymizer::GetBasicApplicationLevelConfidentialityProfileAttributes ( )
static

Return the list of Tag that will be considered when anonymizing a DICOM file.

Examples:
GenFakeIdentifyFile.cxx, and TraverseModules.cxx.
const CryptographicMessageSyntax* gdcm::Anonymizer::GetCryptographicMessageSyntax ( ) const
File& gdcm::Anonymizer::GetFile ( )
inline
static SmartPointer<Anonymizer> gdcm::Anonymizer::New ( )
inlinestatic

for wrapped language: instantiate a reference counted object

void gdcm::Anonymizer::RecurseDataSet ( DataSet ds)
protected
bool gdcm::Anonymizer::Remove ( Tag const &  t)

remove a tag (even a SQ can be removed) Return code is false when tag t cannot be found

bool gdcm::Anonymizer::RemoveGroupLength ( )

Main function that loop over all elements and remove group length.

Examples:
ClinicalTrialAnnotate.cxx.
bool gdcm::Anonymizer::RemovePrivateTags ( )

Main function that loop over all elements and remove private tags.

Examples:
ClinicalTrialAnnotate.cxx.
bool gdcm::Anonymizer::RemoveRetired ( )

Main function that loop over all elements and remove retired element.

bool gdcm::Anonymizer::Replace ( Tag const &  t,
const char *  value 
)

Replace tag with another value, if tag is not found it will be created: WARNING: this function can only execute if tag is a VRASCII

Examples:
ClinicalTrialAnnotate.cxx, CreateJPIPDataSet.cxx, and EncapsulateFileInRawData.cxx.
bool gdcm::Anonymizer::Replace ( Tag const &  t,
const char *  value,
VL const &  vl 
)

when the value contains \0, it is a good idea to specify the length. This function is required when dealing with VRBINARY tag

void gdcm::Anonymizer::SetCryptographicMessageSyntax ( CryptographicMessageSyntax cms)

Set/Get CMS key that will be used to encrypt the dataset within BasicApplicationLevelConfidentialityProfile.

void gdcm::Anonymizer::SetFile ( const File f)
inline

The documentation for this class was generated from the following file:

Generated on Sat Dec 21 2013 05:56:20 for GDCM by doxygen 1.8.5
SourceForge.net Logo