comparison OrthancServer/OrthancRestApi/OrthancRestAnonymizeModify.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 b99acc213937
children b26d25d3c1c7
comparison
equal deleted inserted replaced
3941:771dbd9eb3bd 3942:5b882ad2ffd0
210 AnonymizeOrModifyInstance(modification, call, false /* no transcoding */, 210 AnonymizeOrModifyInstance(modification, call, false /* no transcoding */,
211 DicomTransferSyntax_LittleEndianImplicit /* unused */); 211 DicomTransferSyntax_LittleEndianImplicit /* unused */);
212 } 212 }
213 213
214 214
215 static void SetKeepSource(CleaningInstancesJob& job,
216 const Json::Value& body)
217 {
218 static const char* KEEP_SOURCE = "KeepSource";
219 if (body.isMember(KEEP_SOURCE))
220 {
221 job.SetKeepSource(SerializationToolbox::ReadBoolean(body, KEEP_SOURCE));
222 }
223 }
224
225
215 static void SubmitModificationJob(std::unique_ptr<DicomModification>& modification, 226 static void SubmitModificationJob(std::unique_ptr<DicomModification>& modification,
216 bool isAnonymization, 227 bool isAnonymization,
217 RestApiPostCall& call, 228 RestApiPostCall& call,
218 const Json::Value& body, 229 const Json::Value& body,
219 ResourceType level) 230 ResourceType level)
220 { 231 {
221 ServerContext& context = OrthancRestApi::GetContext(call); 232 ServerContext& context = OrthancRestApi::GetContext(call);
222 233
223 std::unique_ptr<ResourceModificationJob> job(new ResourceModificationJob(context)); 234 std::unique_ptr<ResourceModificationJob> job(new ResourceModificationJob(context));
224 235
225 job->SetModification(modification.release(), level, isAnonymization); 236 job->SetModification(modification.release(), level, isAnonymization);
226 job->SetOrigin(call); 237 job->SetOrigin(call);
238 SetKeepSource(*job, body);
227 239
228 context.AddChildInstances(*job, call.GetUriComponent("id", "")); 240 context.AddChildInstances(*job, call.GetUriComponent("id", ""));
241 job->AddTrailingStep();
229 242
230 OrthancRestApi::GetApi(call).SubmitCommandsJob 243 OrthancRestApi::GetApi(call).SubmitCommandsJob
231 (call, job.release(), true /* synchronous by default */, body); 244 (call, job.release(), true /* synchronous by default */, body);
232 } 245 }
233 246
719 732
720 for (size_t i = 0; i < series.size(); i++) 733 for (size_t i = 0; i < series.size(); i++)
721 { 734 {
722 job->AddSourceSeries(series[i]); 735 job->AddSourceSeries(series[i]);
723 } 736 }
724 737
725 job->AddTrailingStep(); 738 job->AddTrailingStep();
726 739
727 static const char* KEEP_SOURCE = "KeepSource"; 740 SetKeepSource(*job, request);
728 if (request.isMember(KEEP_SOURCE))
729 {
730 job->SetKeepSource(SerializationToolbox::ReadBoolean(request, KEEP_SOURCE));
731 }
732 741
733 static const char* REMOVE = "Remove"; 742 static const char* REMOVE = "Remove";
734 if (request.isMember(REMOVE)) 743 if (request.isMember(REMOVE))
735 { 744 {
736 if (request[REMOVE].type() != Json::arrayValue) 745 if (request[REMOVE].type() != Json::arrayValue)
805 job->AddSource(resources[i]); 814 job->AddSource(resources[i]);
806 } 815 }
807 816
808 job->AddTrailingStep(); 817 job->AddTrailingStep();
809 818
810 static const char* KEEP_SOURCE = "KeepSource"; 819 SetKeepSource(*job, request);
811 if (request.isMember(KEEP_SOURCE))
812 {
813 job->SetKeepSource(SerializationToolbox::ReadBoolean(request, KEEP_SOURCE));
814 }
815 820
816 OrthancRestApi::GetApi(call).SubmitCommandsJob 821 OrthancRestApi::GetApi(call).SubmitCommandsJob
817 (call, job.release(), true /* synchronous by default */, request); 822 (call, job.release(), true /* synchronous by default */, request);
818 } 823 }
819 824