comparison OrthancFramework/Sources/DicomParsing/FromDcmtkBridge.cpp @ 4771:9f207131c7f4

added ParsedDicomFile::LookupSubSequence()
author Sebastien Jodogne <s.jodogne@gmail.com>
date Wed, 25 Aug 2021 17:20:21 +0200
parents 248408d2b336
children 3b78ba359db3
comparison
equal deleted inserted replaced
4770:248408d2b336 4771:9f207131c7f4
3160 { 3160 {
3161 Visitor visitor(element, mode); 3161 Visitor visitor(element, mode);
3162 IDicomPathVisitor::Apply(visitor, dataset, path); 3162 IDicomPathVisitor::Apply(visitor, dataset, path);
3163 } 3163 }
3164 } 3164 }
3165
3166
3167 bool FromDcmtkBridge::LookupSubSequence(DicomMap& target,
3168 DcmDataset& dataset,
3169 const DicomPath& path,
3170 size_t sequenceIndex)
3171 {
3172 class Visitor : public FromDcmtkBridge::IDicomPathVisitor
3173 {
3174 private:
3175 bool found_;
3176 DicomMap& target_;
3177 size_t sequenceIndex_;
3178
3179 public:
3180 Visitor(DicomMap& target,
3181 size_t sequenceIndex) :
3182 found_(false),
3183 target_(target),
3184 sequenceIndex_(sequenceIndex)
3185 {
3186 }
3187
3188 virtual void Visit(DcmItem& item,
3189 const DicomPath& path) ORTHANC_OVERRIDE
3190 {
3191 DcmTagKey tag(path.GetFinalTag().GetGroup(), path.GetFinalTag().GetElement());
3192
3193 DcmSequenceOfItems *sequence = NULL;
3194
3195 if (item.findAndGetSequence(tag, sequence).good() &&
3196 sequence != NULL &&
3197 sequenceIndex_ < sequence->card())
3198 {
3199 std::set<DicomTag> ignoreTagLength;
3200 ExtractDicomSummary(target_, *sequence->getItem(sequenceIndex_), 0, ignoreTagLength);
3201 found_ = true;
3202 }
3203 }
3204
3205 bool HasFound() const
3206 {
3207 return found_;
3208 }
3209 };
3210
3211 Visitor visitor(target, sequenceIndex);
3212 IDicomPathVisitor::Apply(visitor, dataset, path);
3213 return visitor.HasFound();
3214 }
3165 } 3215 }
3166 3216
3167 3217
3168 #include "./FromDcmtkBridge_TransferSyntaxes.impl.h" 3218 #include "./FromDcmtkBridge_TransferSyntaxes.impl.h"