comparison OrthancServer/OrthancRestApi/OrthancRestAnonymizeModify.cpp @ 1005:84b6d7bca6db lua-scripting

refactoring of ServerContext::Store
author Sebastien Jodogne <s.jodogne@gmail.com>
date Tue, 08 Jul 2014 14:34:11 +0200
parents b067017a8a5b
children 160dfe770618
comparison
equal deleted inserted replaced
1004:a226e0959d8b 1005:84b6d7bca6db
256 **/ 256 **/
257 257
258 std::auto_ptr<ParsedDicomFile> modified(original.Clone()); 258 std::auto_ptr<ParsedDicomFile> modified(original.Clone());
259 modification.Apply(*modified); 259 modification.Apply(*modified);
260 260
261 DicomInstanceToStore toStore;
262 toStore.SetParsedDicomFile(*modified);
263
261 264
262 /** 265 /**
263 * Prepare the metadata information to associate with the 266 * Prepare the metadata information to associate with the
264 * resulting DICOM instance (AnonymizedFrom/ModifiedFrom). 267 * resulting DICOM instance (AnonymizedFrom/ModifiedFrom).
265 **/ 268 **/
266 269
267 DicomInstanceHasher modifiedHasher = modified->GetHasher(); 270 DicomInstanceHasher modifiedHasher = modified->GetHasher();
268 ServerIndex::MetadataMap metadata;
269 271
270 if (originalHasher.HashSeries() != modifiedHasher.HashSeries()) 272 if (originalHasher.HashSeries() != modifiedHasher.HashSeries())
271 { 273 {
272 metadata[std::make_pair(ResourceType_Series, metadataType)] = originalHasher.HashSeries(); 274 toStore.AddMetadata(ResourceType_Series, metadataType, originalHasher.HashSeries());
273 } 275 }
274 276
275 if (originalHasher.HashStudy() != modifiedHasher.HashStudy()) 277 if (originalHasher.HashStudy() != modifiedHasher.HashStudy())
276 { 278 {
277 metadata[std::make_pair(ResourceType_Study, metadataType)] = originalHasher.HashStudy(); 279 toStore.AddMetadata(ResourceType_Study, metadataType, originalHasher.HashStudy());
278 } 280 }
279 281
280 if (originalHasher.HashPatient() != modifiedHasher.HashPatient()) 282 if (originalHasher.HashPatient() != modifiedHasher.HashPatient())
281 { 283 {
282 metadata[std::make_pair(ResourceType_Patient, metadataType)] = originalHasher.HashPatient(); 284 toStore.AddMetadata(ResourceType_Patient, metadataType, originalHasher.HashPatient());
283 } 285 }
284 286
285 assert(*it == originalHasher.HashInstance()); 287 assert(*it == originalHasher.HashInstance());
286 metadata[std::make_pair(ResourceType_Instance, metadataType)] = *it; 288 toStore.AddMetadata(ResourceType_Instance, metadataType, *it);
287 289
288 290
289 /** 291 /**
290 * Store the resulting DICOM instance into the Orthanc store. 292 * Store the resulting DICOM instance into the Orthanc store.
291 **/ 293 **/
292 294
293 std::string modifiedInstance; 295 std::string modifiedInstance;
294 if (context.Store(modifiedInstance, *modified, metadata) != StoreStatus_Success) 296 if (context.Store(modifiedInstance, toStore) != StoreStatus_Success)
295 { 297 {
296 LOG(ERROR) << "Error while storing a modified instance " << *it; 298 LOG(ERROR) << "Error while storing a modified instance " << *it;
297 return; 299 return;
298 } 300 }
299 301
427 modification.Keep(DICOM_TAG_PIXEL_DATA); 429 modification.Keep(DICOM_TAG_PIXEL_DATA);
428 } 430 }
429 431
430 modification.Apply(dicom); 432 modification.Apply(dicom);
431 433
434 DicomInstanceToStore toStore;
435 toStore.SetParsedDicomFile(dicom);
436
432 std::string id; 437 std::string id;
433 StoreStatus status = OrthancRestApi::GetContext(call).Store(id, dicom); 438 StoreStatus status = OrthancRestApi::GetContext(call).Store(id, toStore);
434 439
435 if (status == StoreStatus_Failure) 440 if (status == StoreStatus_Failure)
436 { 441 {
437 LOG(ERROR) << "Error while storing a manually-created instance"; 442 LOG(ERROR) << "Error while storing a manually-created instance";
438 return; 443 return;