diff OrthancFramework/Sources/DicomParsing/FromDcmtkBridge.cpp @ 4514:5b929e6b3c36

removal of "dicom-as-json" attachments
author Sebastien Jodogne <s.jodogne@gmail.com>
date Tue, 16 Feb 2021 12:18:41 +0100
parents 11c2ddb4e2ca
children 8734caa12448
line wrap: on
line diff
--- a/OrthancFramework/Sources/DicomParsing/FromDcmtkBridge.cpp	Fri Feb 12 12:13:19 2021 +0100
+++ b/OrthancFramework/Sources/DicomParsing/FromDcmtkBridge.cpp	Tue Feb 16 12:18:41 2021 +0100
@@ -886,7 +886,8 @@
                                       unsigned int maxStringLength,
                                       Encoding encoding,
                                       bool hasCodeExtensions,
-                                      const std::set<DicomTag>& ignoreTagLength)
+                                      const std::set<DicomTag>& ignoreTagLength,
+                                      unsigned int depth)
   {
     if (parent.type() == Json::nullValue)
     {
@@ -925,7 +926,8 @@
       {
         DcmItem* child = sequence.getItem(i);
         Json::Value& v = target.append(Json::objectValue);
-        DatasetToJson(v, *child, format, flags, maxStringLength, encoding, hasCodeExtensions, ignoreTagLength);
+        DatasetToJson(v, *child, format, flags, maxStringLength, encoding, hasCodeExtensions,
+                      ignoreTagLength, depth + 1);
       }
     }
   }
@@ -938,7 +940,8 @@
                                       unsigned int maxStringLength,
                                       Encoding encoding,
                                       bool hasCodeExtensions,
-                                      const std::set<DicomTag>& ignoreTagLength)
+                                      const std::set<DicomTag>& ignoreTagLength,
+                                      unsigned int depth)
   {
     assert(parent.type() == Json::objectValue);
 
@@ -952,6 +955,14 @@
 
       DicomTag tag(FromDcmtkBridge::Convert(element->getTag()));
 
+      // New flag in Orthanc 1.9.1
+      if (depth == 0 &&
+          (flags & DicomToJsonFlags_StopAfterPixelData) &&
+          tag > DICOM_TAG_PIXEL_DATA)
+      {
+        continue;
+      }
+
       /*element->getTag().isPrivate()*/
       if (tag.IsPrivate() &&
           !(flags & DicomToJsonFlags_IncludePrivateTags))    
@@ -978,8 +989,8 @@
         }
       }
 
-      FromDcmtkBridge::ElementToJson(parent, *element, format, flags,
-                                     maxStringLength, encoding, hasCodeExtensions, ignoreTagLength);
+      FromDcmtkBridge::ElementToJson(parent, *element, format, flags, maxStringLength, encoding,
+                                     hasCodeExtensions, ignoreTagLength, depth);
     }
   }
 
@@ -997,7 +1008,7 @@
     Encoding encoding = DetectEncoding(hasCodeExtensions, dataset, defaultEncoding);
 
     target = Json::objectValue;
-    DatasetToJson(target, dataset, format, flags, maxStringLength, encoding, hasCodeExtensions, ignoreTagLength);
+    DatasetToJson(target, dataset, format, flags, maxStringLength, encoding, hasCodeExtensions, ignoreTagLength, 0);
   }
 
 
@@ -1009,7 +1020,7 @@
   {
     std::set<DicomTag> ignoreTagLength;
     target = Json::objectValue;
-    DatasetToJson(target, dataset, format, flags, maxStringLength, Encoding_Ascii, false, ignoreTagLength);
+    DatasetToJson(target, dataset, format, flags, maxStringLength, Encoding_Ascii, false, ignoreTagLength, 0);
   }