diff OrthancServer/Sources/Database/StatelessDatabaseOperations.cpp @ 4697:569d9ef165b1

Added "short", "simplify" and/or "full" options to control the format of DICOM tags wherever possible
author Sebastien Jodogne <s.jodogne@gmail.com>
date Fri, 18 Jun 2021 16:08:35 +0200
parents da1edb7d6332
children f0038043fb97 23aeffecb8cb
line wrap: on
line diff
--- a/OrthancServer/Sources/Database/StatelessDatabaseOperations.cpp	Thu Jun 17 15:47:21 2021 +0200
+++ b/OrthancServer/Sources/Database/StatelessDatabaseOperations.cpp	Fri Jun 18 16:08:35 2021 +0200
@@ -724,16 +724,22 @@
 
   bool StatelessDatabaseOperations::ExpandResource(Json::Value& target,
                                                    const std::string& publicId,
-                                                   ResourceType level)
+                                                   ResourceType level,
+                                                   DicomToJsonFormat format)
   {    
-    class Operations : public ReadOnlyOperationsT4<bool&, Json::Value&, const std::string&, ResourceType>
+    class Operations : public ReadOnlyOperationsT5<
+      bool&, Json::Value&, const std::string&, ResourceType, DicomToJsonFormat>
     {
     private:
       static void MainDicomTagsToJson(ReadOnlyTransaction& transaction,
                                       Json::Value& target,
                                       int64_t resourceId,
-                                      ResourceType resourceType)
+                                      ResourceType resourceType,
+                                      DicomToJsonFormat format)
       {
+        static const char* const MAIN_DICOM_TAGS = "MainDicomTags";
+        static const char* const PATIENT_MAIN_DICOM_TAGS = "PatientMainDicomTags";
+        
         DicomMap tags;
         transaction.GetMainDicomTags(tags, resourceId);
 
@@ -743,16 +749,16 @@
           tags.ExtractStudyInformation(t1);
           tags.ExtractPatientInformation(t2);
 
-          target["MainDicomTags"] = Json::objectValue;
-          FromDcmtkBridge::ToJson(target["MainDicomTags"], t1, true);
-
-          target["PatientMainDicomTags"] = Json::objectValue;
-          FromDcmtkBridge::ToJson(target["PatientMainDicomTags"], t2, true);
+          target[MAIN_DICOM_TAGS] = Json::objectValue;
+          FromDcmtkBridge::ToJson(target[MAIN_DICOM_TAGS], t1, format);
+
+          target[PATIENT_MAIN_DICOM_TAGS] = Json::objectValue;
+          FromDcmtkBridge::ToJson(target[PATIENT_MAIN_DICOM_TAGS], t2, format);
         }
         else
         {
-          target["MainDicomTags"] = Json::objectValue;
-          FromDcmtkBridge::ToJson(target["MainDicomTags"], tags, true);
+          target[MAIN_DICOM_TAGS] = Json::objectValue;
+          FromDcmtkBridge::ToJson(target[MAIN_DICOM_TAGS], tags, format);
         }
       }
 
@@ -949,7 +955,7 @@
 
           // Record the remaining information
           target["ID"] = tuple.get<2>();
-          MainDicomTagsToJson(transaction, target, internalId, type);
+          MainDicomTagsToJson(transaction, target, internalId, type, tuple.get<4>());
 
           std::string tmp;
 
@@ -982,7 +988,7 @@
 
     bool found;
     Operations operations;
-    operations.Apply(*this, found, target, publicId, level);
+    operations.Apply(*this, found, target, publicId, level, format);
     return found;
   }