diff 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
line wrap: on
line diff
--- a/OrthancServer/ParsedDicomFile.cpp	Mon Mar 21 16:47:28 2016 +0100
+++ b/OrthancServer/ParsedDicomFile.cpp	Tue Mar 22 15:11:53 2016 +0100
@@ -1197,32 +1197,14 @@
   ParsedDicomFile* ParsedDicomFile::CreateFromJson(const Json::Value& json,
                                                    DicomFromJsonFlags flags)
   {
-    std::string tmp = Configuration::GetGlobalStringParameter("DefaultEncoding", "Latin1");
-    Encoding encoding = StringToEncoding(tmp.c_str());
-
-    Json::Value::Members tags = json.getMemberNames();
-    
-    for (size_t i = 0; i < tags.size(); i++)
-    {
-      DicomTag tag = FromDcmtkBridge::ParseTag(tags[i]);
-      if (tag == DICOM_TAG_SPECIFIC_CHARACTER_SET)
-      {
-        const Json::Value& value = json[tags[i]];
-        if (value.type() != Json::stringValue ||
-            !GetDicomEncoding(encoding, value.asCString()))
-        {
-          LOG(ERROR) << "Unknown encoding while creating DICOM from JSON: " << value;
-          throw OrthancException(ErrorCode_BadRequest);
-        }
-      }
-    }
-
     const bool generateIdentifiers = (flags & DicomFromJsonFlags_GenerateIdentifiers);
     const bool decodeDataUriScheme = (flags & DicomFromJsonFlags_DecodeDataUriScheme);
 
     std::auto_ptr<ParsedDicomFile> result(new ParsedDicomFile(generateIdentifiers));
-    result->SetEncoding(encoding);
+    result->SetEncoding(FromDcmtkBridge::ExtractEncoding(json, Configuration::GetDefaultEncoding()));
 
+    const Json::Value::Members tags = json.getMemberNames();
+    
     for (size_t i = 0; i < tags.size(); i++)
     {
       DicomTag tag = FromDcmtkBridge::ParseTag(tags[i]);