diff OrthancServer/Sources/ServerContext.cpp @ 4505:97d103b57cd1

removed cached dicom summary from DicomInstanceToStore
author Sebastien Jodogne <s.jodogne@gmail.com>
date Wed, 10 Feb 2021 12:07:03 +0100
parents 7d1eabfac6e0
children ac69c9f76c71
line wrap: on
line diff
--- a/OrthancServer/Sources/ServerContext.cpp	Wed Feb 10 11:29:53 2021 +0100
+++ b/OrthancServer/Sources/ServerContext.cpp	Wed Feb 10 12:07:03 2021 +0100
@@ -512,19 +512,21 @@
         throw OrthancException(ErrorCode_ParameterOutOfRange);
     }
 
-
     bool hasPixelDataOffset;
     uint64_t pixelDataOffset;
     hasPixelDataOffset = DicomStreamReader::LookupPixelDataOffset(
       pixelDataOffset, dicom.GetBufferData(), dicom.GetBufferSize());
-    
-    
+        
+    DicomMap summary;
+    OrthancConfiguration::DefaultExtractDicomSummary(summary, dicom.GetParsedDicomFile());
+
     try
     {
       MetricsRegistry::Timer timer(GetMetricsRegistry(), "orthanc_store_dicom_duration_ms");
       StorageAccessor accessor(area_, GetMetricsRegistry());
 
-      resultPublicId = dicom.GetHasher().HashInstance();
+      DicomInstanceHasher hasher(summary);
+      resultPublicId = hasher.HashInstance();
 
       Json::Value dicomAsJson;
       OrthancConfiguration::DefaultDicomDatasetToJson(dicomAsJson, dicom.GetParsedDicomFile());
@@ -588,8 +590,8 @@
 
       typedef std::map<MetadataType, std::string>  InstanceMetadata;
       InstanceMetadata  instanceMetadata;
-      StoreStatus status = index_.Store(
-        instanceMetadata, dicom, attachments, overwrite, hasPixelDataOffset, pixelDataOffset);
+      StoreStatus status = index_.Store(instanceMetadata, dicom, summary, hasher, attachments,
+                                        overwrite, hasPixelDataOffset, pixelDataOffset);
 
       // Only keep the metadata for the "instance" level
       dicom.GetMetadata().clear();
@@ -656,9 +658,9 @@
     {
       if (e.GetErrorCode() == ErrorCode_InexistentTag)
       {
-        dicom.GetSummary().LogMissingTagsForStore();
+        summary.LogMissingTagsForStore();
       }
-
+      
       throw;
     }
   }