Mercurial > hg > orthanc
comparison OrthancServer/OrthancRestApi/OrthancRestAnonymizeModify.cpp @ 2853:52b017d22a4f
New URI: "/studies/.../merge" to merge a study
author | Sebastien Jodogne <s.jodogne@gmail.com> |
---|---|
date | Tue, 02 Oct 2018 17:05:07 +0200 |
parents | 99863d6245b2 |
children | 8b00e4cb4a6b |
comparison
equal
deleted
inserted
replaced
2851:859e880ac9a8 | 2853:52b017d22a4f |
---|---|
36 | 36 |
37 #include "../../Core/DicomParsing/FromDcmtkBridge.h" | 37 #include "../../Core/DicomParsing/FromDcmtkBridge.h" |
38 #include "../../Core/Logging.h" | 38 #include "../../Core/Logging.h" |
39 #include "../../Core/SerializationToolbox.h" | 39 #include "../../Core/SerializationToolbox.h" |
40 #include "../ServerContext.h" | 40 #include "../ServerContext.h" |
41 #include "../ServerJobs/MergeStudyJob.h" | |
41 #include "../ServerJobs/ResourceModificationJob.h" | 42 #include "../ServerJobs/ResourceModificationJob.h" |
42 #include "../ServerJobs/SplitStudyJob.h" | 43 #include "../ServerJobs/SplitStudyJob.h" |
43 | 44 |
44 #include <boost/lexical_cast.hpp> | 45 #include <boost/lexical_cast.hpp> |
45 #include <boost/algorithm/string/predicate.hpp> | 46 #include <boost/algorithm/string/predicate.hpp> |
739 v["ID"] = id; | 740 v["ID"] = id; |
740 call.GetOutput().AnswerJson(v); | 741 call.GetOutput().AnswerJson(v); |
741 } | 742 } |
742 | 743 |
743 | 744 |
745 static void MergeStudy(RestApiPostCall& call) | |
746 { | |
747 ServerContext& context = OrthancRestApi::GetContext(call); | |
748 | |
749 Json::Value request; | |
750 if (!call.ParseJsonRequest(request)) | |
751 { | |
752 // Bad JSON request | |
753 throw OrthancException(ErrorCode_BadFileFormat); | |
754 } | |
755 | |
756 const std::string study = call.GetUriComponent("id", ""); | |
757 int priority = Toolbox::GetJsonIntegerField(request, "Priority", 0); | |
758 | |
759 std::auto_ptr<MergeStudyJob> job(new MergeStudyJob(context, study)); | |
760 job->SetOrigin(call); | |
761 job->SetDescription("REST API"); | |
762 | |
763 std::vector<std::string> resources; | |
764 SerializationToolbox::ReadArrayOfStrings(resources, request, "Resources"); | |
765 | |
766 for (size_t i = 0; i < resources.size(); i++) | |
767 { | |
768 job->AddSource(resources[i]); | |
769 } | |
770 | |
771 static const char* KEEP_SOURCE = "KeepSource"; | |
772 if (request.isMember(KEEP_SOURCE)) | |
773 { | |
774 job->SetKeepSource(SerializationToolbox::ReadBoolean(request, KEEP_SOURCE)); | |
775 } | |
776 | |
777 std::string id; | |
778 context.GetJobsEngine().GetRegistry().Submit(id, job.release(), priority); | |
779 | |
780 Json::Value v; | |
781 v["ID"] = id; | |
782 call.GetOutput().AnswerJson(v); | |
783 } | |
784 | |
785 | |
744 void OrthancRestApi::RegisterAnonymizeModify() | 786 void OrthancRestApi::RegisterAnonymizeModify() |
745 { | 787 { |
746 Register("/instances/{id}/modify", ModifyInstance); | 788 Register("/instances/{id}/modify", ModifyInstance); |
747 Register("/series/{id}/modify", ModifyResource<ResourceType_Series>); | 789 Register("/series/{id}/modify", ModifyResource<ResourceType_Series>); |
748 Register("/studies/{id}/modify", ModifyResource<ResourceType_Study>); | 790 Register("/studies/{id}/modify", ModifyResource<ResourceType_Study>); |
754 Register("/patients/{id}/anonymize", AnonymizeResource<ResourceType_Patient>); | 796 Register("/patients/{id}/anonymize", AnonymizeResource<ResourceType_Patient>); |
755 | 797 |
756 Register("/tools/create-dicom", CreateDicom); | 798 Register("/tools/create-dicom", CreateDicom); |
757 | 799 |
758 Register("/studies/{id}/split", SplitStudy); | 800 Register("/studies/{id}/split", SplitStudy); |
801 Register("/studies/{id}/merge", MergeStudy); | |
759 } | 802 } |
760 } | 803 } |