diff OrthancFramework/Sources/DicomFormat/DicomMap.cpp @ 5036:877bc3b96476

Handle Dicom sequences in ExtraMainDicomTags and save them in the 'MainDicomSequences' metadata
author Alain Mazy <am@osimis.io>
date Fri, 24 Jun 2022 15:47:10 +0200
parents 40fd2a485a84
children f8bea9c1c0fc
line wrap: on
line diff
--- a/OrthancFramework/Sources/DicomFormat/DicomMap.cpp	Wed Jun 22 15:37:08 2022 +0200
+++ b/OrthancFramework/Sources/DicomFormat/DicomMap.cpp	Fri Jun 24 15:47:10 2022 +0200
@@ -34,7 +34,7 @@
 #include "../OrthancException.h"
 #include "../Toolbox.h"
 #include "DicomArray.h"
-
+#include "../DicomParsing/FromDcmtkBridge.h"
 
 namespace Orthanc
 {
@@ -612,6 +612,13 @@
     }
   }
 
+  void DicomMap::RemoveTags(const std::set<DicomTag>& tags) 
+  {
+    for (std::set<DicomTag>::const_iterator it = tags.begin(); it != tags.end(); ++it)
+    {
+      Remove(*it);
+    }
+  }
 
   static void SetupFindTemplate(DicomMap& result,
                                 const std::map<DicomTag, std::string>& mainDicomTags)
@@ -1522,7 +1529,20 @@
 
     return true;
   }
-    
+
+  void DicomMap::ExtractSequences(std::set<DicomTag>& sequences, const std::set<DicomTag>& tags)
+  {
+    sequences.clear();
+
+    for (std::set<DicomTag>::const_iterator it = tags.begin(); it != tags.end(); ++it)
+    {
+      ValueRepresentation vr = FromDcmtkBridge::LookupValueRepresentation(*it);
+      if (vr == ValueRepresentation_Sequence)
+      {
+        sequences.insert(*it);
+      }
+    }
+  }
 
   void DicomMap::Serialize(Json::Value& target) const
   {