comparison OrthancServer/OrthancFindRequestHandler.cpp @ 2039:e33e0ae51d7b

new configuration option AllowFindSopClassesInStudy
author Sebastien Jodogne <s.jodogne@gmail.com>
date Tue, 21 Jun 2016 15:17:49 +0200
parents 655489d9165d
children b9428d5f7eaf
comparison
equal deleted inserted replaced
2038:235319b3ddf0 2039:e33e0ae51d7b
110 static void ExtractTagFromInstances(std::set<std::string>& target, 110 static void ExtractTagFromInstances(std::set<std::string>& target,
111 ServerContext& context, 111 ServerContext& context,
112 const DicomTag& tag, 112 const DicomTag& tag,
113 const std::list<std::string>& instances) 113 const std::list<std::string>& instances)
114 { 114 {
115 // WARNING: This function is slow, as it reads the JSON file
116 // summarizing each instance of interest from the hard drive.
117
115 std::string formatted = tag.Format(); 118 std::string formatted = tag.Format();
116 119
117 for (std::list<std::string>::const_iterator 120 for (std::list<std::string>::const_iterator
118 it = instances.begin(); it != instances.end(); ++it) 121 it = instances.begin(); it != instances.end(); ++it)
119 { 122 {
221 boost::lexical_cast<std::string>(instances.size()), false); 224 boost::lexical_cast<std::string>(instances.size()), false);
222 } 225 }
223 226
224 if (query.HasTag(DICOM_TAG_SOP_CLASSES_IN_STUDY)) 227 if (query.HasTag(DICOM_TAG_SOP_CLASSES_IN_STUDY))
225 { 228 {
226 std::set<std::string> values; 229 if (Configuration::GetGlobalBoolParameter("AllowFindSopClassesInStudy", false))
227 ExtractTagFromInstances(values, context, DICOM_TAG_SOP_CLASS_UID, instances); 230 {
228 StoreSetOfStrings(result, DICOM_TAG_SOP_CLASSES_IN_STUDY, values); 231 std::set<std::string> values;
232 ExtractTagFromInstances(values, context, DICOM_TAG_SOP_CLASS_UID, instances);
233 StoreSetOfStrings(result, DICOM_TAG_SOP_CLASSES_IN_STUDY, values);
234 }
235 else
236 {
237 result.SetValue(DICOM_TAG_SOP_CLASSES_IN_STUDY, "", false);
238 LOG(WARNING) << "The handling of \"SOP Classes in Study\" (0008,0062) "
239 << "in C-FIND requests is disabled";
240 }
229 } 241 }
230 } 242 }
231 243
232 244
233 static void ComputeSeriesCounters(DicomMap& result, 245 static void ComputeSeriesCounters(DicomMap& result,