diff OrthancServer/FromDcmtkBridge.cpp @ 1735:a001f6226c7c

primitives for flags in dicom-to-json conversions
author Sebastien Jodogne <s.jodogne@gmail.com>
date Wed, 21 Oct 2015 16:25:09 +0200
parents 18c02c6987d5
children b953c6eef28d
line wrap: on
line diff
--- a/OrthancServer/FromDcmtkBridge.cpp	Wed Oct 21 14:28:57 2015 +0200
+++ b/OrthancServer/FromDcmtkBridge.cpp	Wed Oct 21 16:25:09 2015 +0200
@@ -678,6 +678,7 @@
   static void DatasetToJson(Json::Value& parent,
                             DcmItem& item,
                             DicomToJsonFormat format,
+                            DicomToJsonFlags flags,
                             unsigned int maxStringLength,
                             Encoding encoding);
 
@@ -685,6 +686,7 @@
   void FromDcmtkBridge::ToJson(Json::Value& parent,
                                DcmElement& element,
                                DicomToJsonFormat format,
+                               DicomToJsonFlags flags,
                                unsigned int maxStringLength,
                                Encoding encoding)
   {
@@ -715,7 +717,7 @@
       {
         DcmItem* child = sequence.getItem(i);
         Json::Value& v = target.append(Json::objectValue);
-        DatasetToJson(v, *child, format, maxStringLength, encoding);
+        DatasetToJson(v, *child, format, flags, maxStringLength, encoding);
       }
     }
   }
@@ -724,6 +726,7 @@
   static void DatasetToJson(Json::Value& parent,
                             DcmItem& item,
                             DicomToJsonFormat format,
+                            DicomToJsonFlags flags,
                             unsigned int maxStringLength,
                             Encoding encoding)
   {
@@ -732,7 +735,16 @@
     for (unsigned long i = 0; i < item.card(); i++)
     {
       DcmElement* element = item.getElement(i);
-      FromDcmtkBridge::ToJson(parent, *element, format, maxStringLength, encoding);
+      if (element == NULL)
+      {
+        throw OrthancException(ErrorCode_InternalError);
+      }
+
+      if ((flags & DicomToJsonFlags_IncludePrivateTags) ||
+          !element->getTag().isPrivate())
+      {
+        FromDcmtkBridge::ToJson(parent, *element, format, flags, maxStringLength, encoding);
+      }
     }
   }
 
@@ -740,10 +752,11 @@
   void FromDcmtkBridge::ToJson(Json::Value& target, 
                                DcmDataset& dataset,
                                DicomToJsonFormat format,
+                               DicomToJsonFlags flags,
                                unsigned int maxStringLength)
   {
     target = Json::objectValue;
-    DatasetToJson(target, dataset, format, maxStringLength, DetectEncoding(dataset));
+    DatasetToJson(target, dataset, format, flags, maxStringLength, DetectEncoding(dataset));
   }