Mercurial > hg > orthanc
comparison OrthancServer/ServerJobs/ResourceModificationJob.cpp @ 3942:5b882ad2ffd0 transcoding
"/{patients|studies|series}/.../modify": New option "KeepSource"
author | Sebastien Jodogne <s.jodogne@gmail.com> |
---|---|
date | Mon, 18 May 2020 19:09:06 +0200 |
parents | 54dbebbcc032 |
children | b26d25d3c1c7 |
comparison
equal
deleted
inserted
replaced
3941:771dbd9eb3bd | 3942:5b882ad2ffd0 |
---|---|
150 std::unique_ptr<DicomInstanceHasher> originalHasher; | 150 std::unique_ptr<DicomInstanceHasher> originalHasher; |
151 std::unique_ptr<ParsedDicomFile> modified; | 151 std::unique_ptr<ParsedDicomFile> modified; |
152 | 152 |
153 try | 153 try |
154 { | 154 { |
155 ServerContext::DicomCacheLocker locker(context_, instance); | 155 ServerContext::DicomCacheLocker locker(GetContext(), instance); |
156 ParsedDicomFile& original = locker.GetDicom(); | 156 ParsedDicomFile& original = locker.GetDicom(); |
157 | 157 |
158 originalHasher.reset(new DicomInstanceHasher(original.GetHasher())); | 158 originalHasher.reset(new DicomInstanceHasher(original.GetHasher())); |
159 modified.reset(original.Clone(true)); | 159 modified.reset(original.Clone(true)); |
160 } | 160 } |
209 /** | 209 /** |
210 * Store the resulting DICOM instance into the Orthanc store. | 210 * Store the resulting DICOM instance into the Orthanc store. |
211 **/ | 211 **/ |
212 | 212 |
213 std::string modifiedInstance; | 213 std::string modifiedInstance; |
214 if (context_.Store(modifiedInstance, toStore, | 214 if (GetContext().Store(modifiedInstance, toStore, |
215 StoreInstanceMode_Default) != StoreStatus_Success) | 215 StoreInstanceMode_Default) != StoreStatus_Success) |
216 { | 216 { |
217 throw OrthancException(ErrorCode_CannotStoreInstance, | 217 throw OrthancException(ErrorCode_CannotStoreInstance, |
218 "Error while storing a modified instance " + instance); | 218 "Error while storing a modified instance " + instance); |
219 } | 219 } |
220 | 220 |
228 output_->Update(modifiedHasher); | 228 output_->Update(modifiedHasher); |
229 | 229 |
230 return true; | 230 return true; |
231 } | 231 } |
232 | 232 |
233 | |
234 bool ResourceModificationJob::HandleTrailingStep() | |
235 { | |
236 throw OrthancException(ErrorCode_InternalError); | |
237 } | |
238 | |
239 | 233 |
240 void ResourceModificationJob::SetModification(DicomModification* modification, | 234 void ResourceModificationJob::SetModification(DicomModification* modification, |
241 ResourceType level, | 235 ResourceType level, |
242 bool isAnonymization) | 236 bool isAnonymization) |
243 { | 237 { |
290 } | 284 } |
291 | 285 |
292 | 286 |
293 void ResourceModificationJob::GetPublicContent(Json::Value& value) | 287 void ResourceModificationJob::GetPublicContent(Json::Value& value) |
294 { | 288 { |
295 SetOfInstancesJob::GetPublicContent(value); | 289 CleaningInstancesJob::GetPublicContent(value); |
296 | 290 |
297 value["IsAnonymization"] = isAnonymization_; | 291 value["IsAnonymization"] = isAnonymization_; |
298 | 292 |
299 if (output_.get() != NULL) | 293 if (output_.get() != NULL) |
300 { | 294 { |
308 static const char* IS_ANONYMIZATION = "IsAnonymization"; | 302 static const char* IS_ANONYMIZATION = "IsAnonymization"; |
309 | 303 |
310 | 304 |
311 ResourceModificationJob::ResourceModificationJob(ServerContext& context, | 305 ResourceModificationJob::ResourceModificationJob(ServerContext& context, |
312 const Json::Value& serialized) : | 306 const Json::Value& serialized) : |
313 SetOfInstancesJob(serialized), | 307 CleaningInstancesJob(context, serialized, true /* by default, keep source */) |
314 context_(context) | |
315 { | 308 { |
316 isAnonymization_ = SerializationToolbox::ReadBoolean(serialized, IS_ANONYMIZATION); | 309 isAnonymization_ = SerializationToolbox::ReadBoolean(serialized, IS_ANONYMIZATION); |
317 origin_ = DicomInstanceOrigin(serialized[ORIGIN]); | 310 origin_ = DicomInstanceOrigin(serialized[ORIGIN]); |
318 modification_.reset(new DicomModification(serialized[MODIFICATION])); | 311 modification_.reset(new DicomModification(serialized[MODIFICATION])); |
319 } | 312 } |
320 | 313 |
321 bool ResourceModificationJob::Serialize(Json::Value& value) | 314 bool ResourceModificationJob::Serialize(Json::Value& value) |
322 { | 315 { |
323 if (!SetOfInstancesJob::Serialize(value)) | 316 if (!CleaningInstancesJob::Serialize(value)) |
324 { | 317 { |
325 return false; | 318 return false; |
326 } | 319 } |
327 else | 320 else |
328 { | 321 { |