diff OrthancServer/Sources/OrthancRestApi/OrthancRestSystem.cpp @ 5204:08e0c9c0ab39

added UserMetadata in /system
author Alain Mazy <am@osimis.io>
date Wed, 29 Mar 2023 19:24:09 +0200
parents f8f1c4a9a216
children 367e8af46cfd
line wrap: on
line diff
--- a/OrthancServer/Sources/OrthancRestApi/OrthancRestSystem.cpp	Wed Mar 29 11:23:37 2023 +0200
+++ b/OrthancServer/Sources/OrthancRestApi/OrthancRestSystem.cpp	Wed Mar 29 19:24:09 2023 +0200
@@ -50,14 +50,23 @@
 
   static void GetMainDicomTagsConfiguration(Json::Value& result)
   {
-      Json::Value v;
-      
       result["Patient"] = DicomMap::GetMainDicomTagsSignature(ResourceType_Patient);
       result["Study"] = DicomMap::GetMainDicomTagsSignature(ResourceType_Study);
       result["Series"] = DicomMap::GetMainDicomTagsSignature(ResourceType_Series);
       result["Instance"] = DicomMap::GetMainDicomTagsSignature(ResourceType_Instance);
   }
 
+  static void GetUserMetadataConfiguration(Json::Value& result)
+  {
+    std::map<std::string, int> userMetadata;
+    Orthanc::GetRegisteredUserMetadata(userMetadata);
+
+    for (std::map<std::string, int>::const_iterator it = userMetadata.begin(); it != userMetadata.end(); ++it)
+    {
+      result[it->first] = it->second;
+    }
+  }
+
   static void GetSystemInformation(RestApiGetCall& call)
   {
     static const char* const API_VERSION = "ApiVersion";
@@ -79,6 +88,7 @@
     static const char* const INGEST_TRANSCODING = "IngestTranscoding";
     static const char* const MAXIMUM_STORAGE_SIZE = "MaximumStorageSize";
     static const char* const MAXIMUM_STORAGE_MODE = "MaximumStorageMode";
+    static const char* const USER_METADATA = "UserMetadata";
 
     if (call.IsDocumentation())
     {
@@ -119,6 +129,8 @@
                         "The configured MaximumStorageSize in MB (new in Orthanc 1.11.3)")
         .SetAnswerField(MAXIMUM_STORAGE_MODE, RestApiCallDocumentation::Type_String,
                         "The configured MaximumStorageMode (new in Orthanc 1.11.3)")
+        .SetAnswerField(USER_METADATA, RestApiCallDocumentation::Type_JsonObject,
+                        "The configured UserMetadata (new in Orthanc 1.12.0)")
         .SetHttpGetSample("https://demo.orthanc-server.com/system", true);
       return;
     }
@@ -172,6 +184,9 @@
     result[MAIN_DICOM_TAGS] = Json::objectValue;
     GetMainDicomTagsConfiguration(result[MAIN_DICOM_TAGS]);
 
+    result[USER_METADATA] = Json::objectValue;
+    GetUserMetadataConfiguration(result[USER_METADATA]);
+
     call.GetOutput().AnswerJson(result);
   }