diff OrthancServer/Sources/ServerContext.cpp @ 4506:ac69c9f76c71

refactoring ServerIndex::Store()
author Sebastien Jodogne <s.jodogne@gmail.com>
date Wed, 10 Feb 2021 17:01:44 +0100
parents 97d103b57cd1
children b4c58795f3a8
line wrap: on
line diff
--- a/OrthancServer/Sources/ServerContext.cpp	Wed Feb 10 12:07:03 2021 +0100
+++ b/OrthancServer/Sources/ServerContext.cpp	Wed Feb 10 17:01:44 2021 +0100
@@ -516,6 +516,9 @@
     uint64_t pixelDataOffset;
     hasPixelDataOffset = DicomStreamReader::LookupPixelDataOffset(
       pixelDataOffset, dicom.GetBufferData(), dicom.GetBufferSize());
+
+    std::string transferSyntax;
+    bool hasTransferSyntax = dicom.LookupTransferSyntax(transferSyntax);
         
     DicomMap summary;
     OrthancConfiguration::DefaultExtractDicomSummary(summary, dicom.GetParsedDicomFile());
@@ -525,8 +528,7 @@
       MetricsRegistry::Timer timer(GetMetricsRegistry(), "orthanc_store_dicom_duration_ms");
       StorageAccessor accessor(area_, GetMetricsRegistry());
 
-      DicomInstanceHasher hasher(summary);
-      resultPublicId = hasher.HashInstance();
+      resultPublicId = dicom.GetParsedDicomFile().GetHasher().HashInstance();
 
       Json::Value dicomAsJson;
       OrthancConfiguration::DefaultDicomDatasetToJson(dicomAsJson, dicom.GetParsedDicomFile());
@@ -590,17 +592,17 @@
 
       typedef std::map<MetadataType, std::string>  InstanceMetadata;
       InstanceMetadata  instanceMetadata;
-      StoreStatus status = index_.Store(instanceMetadata, dicom, summary, hasher, attachments,
-                                        overwrite, hasPixelDataOffset, pixelDataOffset);
+      StoreStatus status = index_.Store(
+        instanceMetadata, summary, attachments, dicom.GetMetadata(), dicom.GetOrigin(), overwrite,
+        hasTransferSyntax, transferSyntax, hasPixelDataOffset, pixelDataOffset);
 
       // Only keep the metadata for the "instance" level
-      dicom.GetMetadata().clear();
+      dicom.ClearMetadata();
 
       for (InstanceMetadata::const_iterator it = instanceMetadata.begin();
            it != instanceMetadata.end(); ++it)
       {
-        dicom.GetMetadata().insert(std::make_pair(std::make_pair(ResourceType_Instance, it->first),
-                                                  it->second));
+        dicom.AddMetadata(ResourceType_Instance, it->first, it->second);
       }
             
       if (status != StoreStatus_Success)