Mercurial > hg > orthanc
diff OrthancServer/FromDcmtkBridge.cpp @ 2216:9a8fab016145
sample worklist plugin fine-tuning the C-Find query
author | Sebastien Jodogne <s.jodogne@gmail.com> |
---|---|
date | Mon, 12 Dec 2016 11:01:09 +0100 |
parents | e3fd5bc429a2 |
children | 3eefb84ac0bd |
line wrap: on
line diff
--- a/OrthancServer/FromDcmtkBridge.cpp Sat Dec 10 11:41:17 2016 +0100 +++ b/OrthancServer/FromDcmtkBridge.cpp Mon Dec 12 11:01:09 2016 +0100 @@ -1646,7 +1646,9 @@ if (!ok) { - throw OrthancException(ErrorCode_InternalError); + LOG(ERROR) << "While creating a DICOM instance, tag (" << tag.Format() + << ") has out-of-range value: \"" << *decoded << "\""; + throw OrthancException(ErrorCode_BadFileFormat); } } @@ -1665,6 +1667,11 @@ FillElementWithString(*element, tag, value.asString(), decodeDataUriScheme, dicomEncoding); break; + case Json::nullValue: + element.reset(CreateElementForTag(tag)); + FillElementWithString(*element, tag, "", decodeDataUriScheme, dicomEncoding); + break; + case Json::arrayValue: { DcmTag key(tag.GetGroup(), tag.GetElement()); @@ -1742,11 +1749,17 @@ { const Json::Value& value = json[tags[i]]; if (value.type() != Json::stringValue || - !GetDicomEncoding(encoding, value.asCString())) + (value.asString().length() != 0 && + !GetDicomEncoding(encoding, value.asCString()))) { LOG(ERROR) << "Unknown encoding while creating DICOM from JSON: " << value; throw OrthancException(ErrorCode_BadRequest); } + + if (value.asString().length() == 0) + { + return defaultEncoding; + } } }