Mercurial > hg > orthanc
comparison OrthancServer/ParsedDicomFile.cpp @ 1934:72a2fd7fed8b
FromDcmtkBridge::FromJson
author | Sebastien Jodogne <s.jodogne@gmail.com> |
---|---|
date | Tue, 22 Mar 2016 15:11:53 +0100 |
parents | cda5b0ab4ce5 |
children | e251606c1433 |
comparison
equal
deleted
inserted
replaced
1933:ff11ba08e5d0 | 1934:72a2fd7fed8b |
---|---|
1195 | 1195 |
1196 | 1196 |
1197 ParsedDicomFile* ParsedDicomFile::CreateFromJson(const Json::Value& json, | 1197 ParsedDicomFile* ParsedDicomFile::CreateFromJson(const Json::Value& json, |
1198 DicomFromJsonFlags flags) | 1198 DicomFromJsonFlags flags) |
1199 { | 1199 { |
1200 std::string tmp = Configuration::GetGlobalStringParameter("DefaultEncoding", "Latin1"); | |
1201 Encoding encoding = StringToEncoding(tmp.c_str()); | |
1202 | |
1203 Json::Value::Members tags = json.getMemberNames(); | |
1204 | |
1205 for (size_t i = 0; i < tags.size(); i++) | |
1206 { | |
1207 DicomTag tag = FromDcmtkBridge::ParseTag(tags[i]); | |
1208 if (tag == DICOM_TAG_SPECIFIC_CHARACTER_SET) | |
1209 { | |
1210 const Json::Value& value = json[tags[i]]; | |
1211 if (value.type() != Json::stringValue || | |
1212 !GetDicomEncoding(encoding, value.asCString())) | |
1213 { | |
1214 LOG(ERROR) << "Unknown encoding while creating DICOM from JSON: " << value; | |
1215 throw OrthancException(ErrorCode_BadRequest); | |
1216 } | |
1217 } | |
1218 } | |
1219 | |
1220 const bool generateIdentifiers = (flags & DicomFromJsonFlags_GenerateIdentifiers); | 1200 const bool generateIdentifiers = (flags & DicomFromJsonFlags_GenerateIdentifiers); |
1221 const bool decodeDataUriScheme = (flags & DicomFromJsonFlags_DecodeDataUriScheme); | 1201 const bool decodeDataUriScheme = (flags & DicomFromJsonFlags_DecodeDataUriScheme); |
1222 | 1202 |
1223 std::auto_ptr<ParsedDicomFile> result(new ParsedDicomFile(generateIdentifiers)); | 1203 std::auto_ptr<ParsedDicomFile> result(new ParsedDicomFile(generateIdentifiers)); |
1224 result->SetEncoding(encoding); | 1204 result->SetEncoding(FromDcmtkBridge::ExtractEncoding(json, Configuration::GetDefaultEncoding())); |
1225 | 1205 |
1206 const Json::Value::Members tags = json.getMemberNames(); | |
1207 | |
1226 for (size_t i = 0; i < tags.size(); i++) | 1208 for (size_t i = 0; i < tags.size(); i++) |
1227 { | 1209 { |
1228 DicomTag tag = FromDcmtkBridge::ParseTag(tags[i]); | 1210 DicomTag tag = FromDcmtkBridge::ParseTag(tags[i]); |
1229 const Json::Value& value = json[tags[i]]; | 1211 const Json::Value& value = json[tags[i]]; |
1230 | 1212 |