Mercurial > hg > orthanc
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 |