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