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 {