diff OrthancServer/OrthancFindRequestHandler.cpp @ 4007:884b55ce01f6

Private tags returned by C-FIND SCP
author Sebastien Jodogne <s.jodogne@gmail.com>
date Sat, 06 Jun 2020 14:50:21 +0200
parents 2a170a8f1faf
children 914b15dedae3
line wrap: on
line diff
--- a/OrthancServer/OrthancFindRequestHandler.cpp	Sat Jun 06 11:21:39 2020 +0200
+++ b/OrthancServer/OrthancFindRequestHandler.cpp	Sat Jun 06 14:50:21 2020 +0200
@@ -302,7 +302,8 @@
                         const Json::Value* dicomAsJson,
                         const DicomArray& query,
                         const std::list<DicomTag>& sequencesToReturn,
-                        const DicomMap* counters)
+                        const DicomMap* counters,
+                        const std::string& privateCreator)
   {
     DicomMap match;
 
@@ -371,7 +372,8 @@
     }
     else
     {
-      ParsedDicomFile dicom(result, GetDefaultDicomEncoding(), true /* be permissive, cf. issue #136 */);
+      ParsedDicomFile dicom(result, GetDefaultDicomEncoding(),
+                            true /* be permissive, cf. issue #136 */, privateCreator);
 
       for (std::list<DicomTag>::const_iterator tag = sequencesToReturn.begin();
            tag != sequencesToReturn.end(); ++tag)
@@ -394,8 +396,7 @@
             content.append(item);
           }
 
-          dicom.Replace(*tag, content, false, DicomReplaceMode_InsertIfAbsent,
-                        "" /* no private creator */);
+          dicom.Replace(*tag, content, false, DicomReplaceMode_InsertIfAbsent, privateCreator);
         }
       }
 
@@ -484,6 +485,7 @@
     const DicomMap&             query_;
     DicomArray                  queryAsArray_;
     const std::list<DicomTag>&  sequencesToReturn_;
+    std::string                 privateCreator_;
 
   public:
     LookupVisitor(DicomFindAnswers&  answers,
@@ -499,6 +501,11 @@
       sequencesToReturn_(sequencesToReturn)
     {
       answers_.SetComplete(false);
+
+      {
+        OrthancConfiguration::ReaderLock lock;
+        privateCreator_ = lock.GetConfiguration().GetDefaultPrivateCreator();
+      }
     }
 
     virtual bool IsDicomAsJsonNeeded() const
@@ -540,7 +547,7 @@
       std::unique_ptr<DicomMap> counters(ComputeCounters(context_, instanceId, level_, query_));
 
       AddAnswer(answers_, mainDicomTags, dicomAsJson,
-                queryAsArray_, sequencesToReturn_, counters.get());
+                queryAsArray_, sequencesToReturn_, counters.get(), privateCreator_);
     }
   };