comparison OrthancServer/Sources/ServerJobs/MergeStudyJob.cpp @ 4508:8f9090b137f1

Optimization in C-STORE SCP by avoiding an unnecessary DICOM parsing
author Sebastien Jodogne <s.jodogne@gmail.com>
date Thu, 11 Feb 2021 11:00:05 +0100
parents d9473bd5ed43
children f0038043fb97 fb98db281d1d
comparison
equal deleted inserted replaced
4507:b4c58795f3a8 4508:8f9090b137f1
145 modified->ReplacePlainString(DICOM_TAG_SERIES_INSTANCE_UID, targetSeriesUid->second); 145 modified->ReplacePlainString(DICOM_TAG_SERIES_INSTANCE_UID, targetSeriesUid->second);
146 146
147 // Fix since Orthanc 1.5.8: Assign new "SOPInstanceUID", as the instance has been modified 147 // Fix since Orthanc 1.5.8: Assign new "SOPInstanceUID", as the instance has been modified
148 modified->ReplacePlainString(DICOM_TAG_SOP_INSTANCE_UID, FromDcmtkBridge::GenerateUniqueIdentifier(ResourceType_Instance)); 148 modified->ReplacePlainString(DICOM_TAG_SOP_INSTANCE_UID, FromDcmtkBridge::GenerateUniqueIdentifier(ResourceType_Instance));
149 149
150 DicomInstanceToStore toStore; 150 std::unique_ptr<DicomInstanceToStore> toStore(DicomInstanceToStore::CreateFromParsedDicomFile(*modified));
151 toStore.SetOrigin(origin_); 151 toStore->SetOrigin(origin_);
152 toStore.SetParsedDicomFile(*modified);
153 152
154 std::string modifiedInstance; 153 std::string modifiedInstance;
155 if (GetContext().Store(modifiedInstance, toStore, 154 if (GetContext().Store(modifiedInstance, *toStore,
156 StoreInstanceMode_Default) != StoreStatus_Success) 155 StoreInstanceMode_Default) != StoreStatus_Success)
157 { 156 {
158 LOG(ERROR) << "Error while storing a modified instance " << instance; 157 LOG(ERROR) << "Error while storing a modified instance " << instance;
159 return false; 158 return false;
160 } 159 }