Mercurial > hg > orthanc
comparison OrthancServer/ParsedDicomFile.cpp @ 991:2f76b92addd4
keep private tags during anonymization
author | Sebastien Jodogne <s.jodogne@gmail.com> |
---|---|
date | Wed, 02 Jul 2014 11:56:08 +0200 |
parents | 2fd5a163776d |
children | af014624dac1 a226e0959d8b |
comparison
equal
deleted
inserted
replaced
990:7cbcd580cd21 | 991:2f76b92addd4 |
---|---|
754 } | 754 } |
755 } | 755 } |
756 | 756 |
757 | 757 |
758 | 758 |
759 void ParsedDicomFile::RemovePrivateTags() | 759 void ParsedDicomFile::RemovePrivateTagsInternal(const std::set<DicomTag>* toKeep) |
760 { | 760 { |
761 DcmDataset& dataset = *pimpl_->file_->getDataset(); | |
762 | |
763 // Loop over the dataset to detect its private tags | |
761 typedef std::list<DcmElement*> Tags; | 764 typedef std::list<DcmElement*> Tags; |
762 | |
763 Tags privateTags; | 765 Tags privateTags; |
764 | 766 |
765 DcmDataset& dataset = *pimpl_->file_->getDataset(); | |
766 for (unsigned long i = 0; i < dataset.card(); i++) | 767 for (unsigned long i = 0; i < dataset.card(); i++) |
767 { | 768 { |
768 DcmElement* element = dataset.getElement(i); | 769 DcmElement* element = dataset.getElement(i); |
769 DcmTag tag(element->getTag()); | 770 DcmTag tag(element->getTag()); |
770 if (!strcmp("PrivateCreator", tag.getTagName()) || // TODO - This may change with future versions of DCMTK | 771 |
771 tag.getPrivateCreator() != NULL) | 772 // Is this a private tag? |
772 { | 773 if (FromDcmtkBridge::IsPrivateTag(tag)) |
773 privateTags.push_back(element); | 774 { |
774 } | 775 bool remove = true; |
775 } | 776 |
776 | 777 // Check whether this private tag is to be kept |
778 if (toKeep != NULL) | |
779 { | |
780 DicomTag tmp = FromDcmtkBridge::Convert(tag); | |
781 if (toKeep->find(tmp) != toKeep->end()) | |
782 { | |
783 remove = false; // Keep it | |
784 } | |
785 } | |
786 | |
787 if (remove) | |
788 { | |
789 privateTags.push_back(element); | |
790 } | |
791 } | |
792 } | |
793 | |
794 // Loop over the detected private tags to remove them | |
777 for (Tags::iterator it = privateTags.begin(); | 795 for (Tags::iterator it = privateTags.begin(); |
778 it != privateTags.end(); ++it) | 796 it != privateTags.end(); ++it) |
779 { | 797 { |
780 DcmElement* tmp = dataset.remove(*it); | 798 DcmElement* tmp = dataset.remove(*it); |
781 if (tmp != NULL) | 799 if (tmp != NULL) |