Mercurial > hg > orthanc
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()) |