Mercurial > hg > orthanc
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; |