comparison OrthancServer/OrthancInitialization.cpp @ 1765:57b9e6890482

New configuration option: "Dictionary" to declare custom DICOM tags
author Sebastien Jodogne <s.jodogne@gmail.com>
date Thu, 29 Oct 2015 16:49:25 +0100
parents d3ba98d6b6e9
children 53e045b5a8ec
comparison
equal deleted inserted replaced
1764:9ead18ef460a 1765:57b9e6890482
309 } 309 }
310 } 310 }
311 } 311 }
312 312
313 313
314 static void LoadCustomDictionary(const Json::Value& configuration)
315 {
316 if (configuration.type() != Json::objectValue ||
317 !configuration.isMember("Dictionary") ||
318 configuration["Dictionary"].type() != Json::objectValue)
319 {
320 return;
321 }
322
323 Json::Value::Members tags(configuration["Dictionary"].getMemberNames());
324
325 for (Json::Value::ArrayIndex i = 0; i < tags.size(); i++)
326 {
327 const Json::Value& content = configuration["Dictionary"][tags[i]];
328 if (content.type() != Json::arrayValue ||
329 content.size() < 2 ||
330 content.size() > 4 ||
331 content[0].type() != Json::stringValue ||
332 content[1].type() != Json::stringValue ||
333 (content.size() >= 3 && content[2].type() != Json::intValue) ||
334 (content.size() >= 4 && content[3].type() != Json::intValue))
335 {
336 throw OrthancException(ErrorCode_BadFileFormat);
337 }
338
339 DicomTag tag(FromDcmtkBridge::ParseTag(tags[i]));
340 DcmEVR vr = FromDcmtkBridge::ParseValueRepresentation(content[0].asString());
341 std::string name = content[1].asString();
342 unsigned int minMultiplicity = (content.size() >= 2) ? content[2].asUInt() : 1;
343 unsigned int maxMultiplicity = (content.size() >= 3) ? content[3].asUInt() : 1;
344
345 FromDcmtkBridge::RegisterDictionaryTag(tag, vr, name, minMultiplicity, maxMultiplicity);
346 }
347 }
348
349
314 350
315 void OrthancInitialize(const char* configurationFile) 351 void OrthancInitialize(const char* configurationFile)
316 { 352 {
317 boost::mutex::scoped_lock lock(globalMutex_); 353 boost::mutex::scoped_lock lock(globalMutex_);
318 354
338 374
339 RegisterUserMetadata(); 375 RegisterUserMetadata();
340 RegisterUserContentType(); 376 RegisterUserContentType();
341 377
342 FromDcmtkBridge::InitializeDictionary(); 378 FromDcmtkBridge::InitializeDictionary();
379 LoadCustomDictionary(configuration_);
343 380
344 #if ORTHANC_JPEG_LOSSLESS_ENABLED == 1 381 #if ORTHANC_JPEG_LOSSLESS_ENABLED == 1
345 LOG(WARNING) << "Registering JPEG Lossless codecs"; 382 LOG(WARNING) << "Registering JPEG Lossless codecs";
346 DJLSDecoderRegistration::registerCodecs(); 383 DJLSDecoderRegistration::registerCodecs();
347 #endif 384 #endif