comparison OrthancServer/Sources/ServerIndex.cpp @ 4499:6f99949b2878

reorganization
author Sebastien Jodogne <s.jodogne@gmail.com>
date Tue, 09 Feb 2021 14:25:21 +0100
parents 39192eb9b43d
children 97d103b57cd1
comparison
equal deleted inserted replaced
4498:7b99e8bb8246 4499:6f99949b2878
37 #ifndef NOMINMAX 37 #ifndef NOMINMAX
38 #define NOMINMAX 38 #define NOMINMAX
39 #endif 39 #endif
40 40
41 #include "../../OrthancFramework/Sources/DicomFormat/DicomArray.h" 41 #include "../../OrthancFramework/Sources/DicomFormat/DicomArray.h"
42 #include "../../OrthancFramework/Sources/DicomFormat/DicomStreamReader.h"
43 #include "../../OrthancFramework/Sources/DicomParsing/FromDcmtkBridge.h" 42 #include "../../OrthancFramework/Sources/DicomParsing/FromDcmtkBridge.h"
44 #include "../../OrthancFramework/Sources/DicomParsing/ParsedDicomFile.h" 43 #include "../../OrthancFramework/Sources/DicomParsing/ParsedDicomFile.h"
45 #include "../../OrthancFramework/Sources/Logging.h" 44 #include "../../OrthancFramework/Sources/Logging.h"
46 #include "../../OrthancFramework/Sources/Toolbox.h" 45 #include "../../OrthancFramework/Sources/Toolbox.h"
47 46
757 756
758 757
759 StoreStatus ServerIndex::Store(std::map<MetadataType, std::string>& instanceMetadata, 758 StoreStatus ServerIndex::Store(std::map<MetadataType, std::string>& instanceMetadata,
760 DicomInstanceToStore& instanceToStore, 759 DicomInstanceToStore& instanceToStore,
761 const Attachments& attachments, 760 const Attachments& attachments,
762 bool overwrite) 761 bool overwrite,
763 { 762 bool hasPixelDataOffset,
764 std::string pixelDataOffset; 763 uint64_t pixelDataOffset)
765 764 {
766 {
767 // Determining the pixel data offset is costly, don't do it
768 // within the mutex (new in Orthanc 1.9.1)
769 uint64_t offset;
770 if (DicomStreamReader::LookupPixelDataOffset(offset, instanceToStore.GetBufferData(),
771 instanceToStore.GetBufferSize()))
772 {
773 pixelDataOffset = boost::lexical_cast<std::string>(offset);
774 }
775 else
776 {
777 pixelDataOffset.clear();
778 }
779 }
780
781 boost::mutex::scoped_lock lock(mutex_); 765 boost::mutex::scoped_lock lock(mutex_);
782 766
783 const DicomMap& dicomSummary = instanceToStore.GetSummary(); 767 const DicomMap& dicomSummary = instanceToStore.GetSummary();
784 const ServerIndex::MetadataMap& metadata = instanceToStore.GetMetadata(); 768 const ServerIndex::MetadataMap& metadata = instanceToStore.GetMetadata();
785 769
989 } 973 }
990 } 974 }
991 975
992 // New in Orthanc 1.9.1 976 // New in Orthanc 1.9.1
993 SetInstanceMetadata(content, instanceMetadata, instanceId, 977 SetInstanceMetadata(content, instanceMetadata, instanceId,
994 MetadataType_Instance_PixelDataOffset, pixelDataOffset); 978 MetadataType_Instance_PixelDataOffset,
995 979 (hasPixelDataOffset ?
980 boost::lexical_cast<std::string>(pixelDataOffset) : ""));
996 981
997 const DicomValue* value; 982 const DicomValue* value;
998 if ((value = dicomSummary.TestAndGetValue(DICOM_TAG_SOP_CLASS_UID)) != NULL && 983 if ((value = dicomSummary.TestAndGetValue(DICOM_TAG_SOP_CLASS_UID)) != NULL &&
999 !value->IsNull() && 984 !value->IsNull() &&
1000 !value->IsBinary()) 985 !value->IsBinary())