# HG changeset patch # User Sebastien Jodogne # Date 1444135492 -7200 # Node ID 21d31da7337473cdde8757468cb16acc32d3e093 # Parent 6414043df7d849cdff45f2aaa7503964cc061caa fix diff -r 6414043df7d8 -r 21d31da73374 OrthancServer/ResourceFinder.cpp --- a/OrthancServer/ResourceFinder.cpp Tue Oct 06 14:09:30 2015 +0200 +++ b/OrthancServer/ResourceFinder.cpp Tue Oct 06 14:44:52 2015 +0200 @@ -197,7 +197,12 @@ return; } - if (!query.HasMainDicomTagsFilter(level_)) + bool hasTagsAtThisLevel = query.HasMainDicomTagsFilter(level_); + bool hasTagsAtPatientLevel = (filterPatientTagsAtStudyLevel && + level_ == ResourceType_Study && + query.HasMainDicomTagsFilter(ResourceType_Patient)); + + if (!hasTagsAtThisLevel && !hasTagsAtPatientLevel) { return; } @@ -212,20 +217,19 @@ it = resources.begin(); it != resources.end(); ++it) { DicomMap mainTags; - if (!index_.GetMainDicomTags(mainTags, *it, level_, level_) || - !query.FilterMainDicomTags(*it, level_, mainTags)) + + if (hasTagsAtThisLevel && + (!index_.GetMainDicomTags(mainTags, *it, level_, level_) || + !query.FilterMainDicomTags(*it, level_, mainTags))) { continue; } - if (filterPatientTagsAtStudyLevel && - level_ == ResourceType_Study) + if (hasTagsAtPatientLevel && + (!index_.GetMainDicomTags(mainTags, *it, ResourceType_Study, ResourceType_Patient) || + !query.FilterMainDicomTags(*it, ResourceType_Patient, mainTags))) { - if (!index_.GetMainDicomTags(mainTags, *it, ResourceType_Study, ResourceType_Patient) || - !query.FilterMainDicomTags(*it, ResourceType_Patient, mainTags)) - { - continue; - } + continue; } filtered_.insert(*it);