comparison OrthancServer/OrthancRestApi/OrthancRestModalities.cpp @ 2626:e09021ddc00d jobs

cleanup
author Sebastien Jodogne <s.jodogne@gmail.com>
date Fri, 25 May 2018 11:25:33 +0200
parents 714dcddeb65f
children 3fc310ceb6d4
comparison
equal deleted inserted replaced
2625:5469dda691cd 2626:e09021ddc00d
605 /*************************************************************************** 605 /***************************************************************************
606 * DICOM C-Store SCU 606 * DICOM C-Store SCU
607 ***************************************************************************/ 607 ***************************************************************************/
608 608
609 static bool GetInstancesToExport(Json::Value& otherArguments, 609 static bool GetInstancesToExport(Json::Value& otherArguments,
610 std::list<std::string>& instances, 610 SetOfInstancesJob& job,
611 const std::string& remote, 611 const std::string& remote,
612 RestApiPostCall& call) 612 RestApiPostCall& call)
613 { 613 {
614 otherArguments = Json::objectValue; 614 otherArguments = Json::objectValue;
615 ServerContext& context = OrthancRestApi::GetContext(call); 615 ServerContext& context = OrthancRestApi::GetContext(call);
679 679
680 if (Configuration::GetGlobalBoolParameter("LogExportedResources", true)) 680 if (Configuration::GetGlobalBoolParameter("LogExportedResources", true))
681 { 681 {
682 context.GetIndex().LogExportedResource(stripped, remote); 682 context.GetIndex().LogExportedResource(stripped, remote);
683 } 683 }
684 684
685 std::list<std::string> tmp; 685 context.AddChildInstances(job, stripped);
686 context.GetIndex().GetChildInstances(tmp, stripped);
687
688 for (std::list<std::string>::const_iterator
689 it = tmp.begin(); it != tmp.end(); ++it)
690 {
691 instances.push_back(*it);
692 }
693 } 686 }
694 687
695 return true; 688 return true;
696 } 689 }
697 690
698 691
699 static void SubmitJob(RestApiPostCall& call, 692 static void SubmitJob(RestApiPostCall& call,
700 const Json::Value& request, 693 const Json::Value& request,
701 const std::list<std::string>& instances,
702 SetOfInstancesJob* jobRaw) 694 SetOfInstancesJob* jobRaw)
703 { 695 {
704 std::auto_ptr<SetOfInstancesJob> job(jobRaw); 696 std::auto_ptr<SetOfInstancesJob> job(jobRaw);
705 697
706 if (job.get() == NULL) 698 if (job.get() == NULL)
713 bool permissive = Toolbox::GetJsonBooleanField(request, "Permissive", true); 705 bool permissive = Toolbox::GetJsonBooleanField(request, "Permissive", true);
714 bool asynchronous = Toolbox::GetJsonBooleanField(request, "Asynchronous", false); 706 bool asynchronous = Toolbox::GetJsonBooleanField(request, "Asynchronous", false);
715 int priority = Toolbox::GetJsonIntegerField(request, "Priority", 0); 707 int priority = Toolbox::GetJsonIntegerField(request, "Priority", 0);
716 708
717 job->SetPermissive(permissive); 709 job->SetPermissive(permissive);
718 job->Reserve(instances.size());
719
720 for (std::list<std::string>::const_iterator
721 it = instances.begin(); it != instances.end(); ++it)
722 {
723 job->AddInstance(*it);
724 }
725 710
726 if (asynchronous) 711 if (asynchronous)
727 { 712 {
728 // Asynchronous mode: Submit the job, but don't wait for its completion 713 // Asynchronous mode: Submit the job, but don't wait for its completion
729 std::string id; 714 std::string id;
750 ServerContext& context = OrthancRestApi::GetContext(call); 735 ServerContext& context = OrthancRestApi::GetContext(call);
751 736
752 std::string remote = call.GetUriComponent("id", ""); 737 std::string remote = call.GetUriComponent("id", "");
753 738
754 Json::Value request; 739 Json::Value request;
755 std::list<std::string> instances;
756 if (!GetInstancesToExport(request, instances, remote, call))
757 {
758 return;
759 }
760
761 std::string localAet = Toolbox::GetJsonStringField
762 (request, "LocalAet", context.GetDefaultLocalApplicationEntityTitle());
763 std::string moveOriginatorAET = Toolbox::GetJsonStringField
764 (request, "MoveOriginatorAet", context.GetDefaultLocalApplicationEntityTitle());
765 int moveOriginatorID = Toolbox::GetJsonIntegerField
766 (request, "MoveOriginatorID", 0 /* By default, not a C-MOVE */);
767
768 RemoteModalityParameters p = Configuration::GetModalityUsingSymbolicName(remote);
769
770 std::auto_ptr<DicomModalityStoreJob> job(new DicomModalityStoreJob(context)); 740 std::auto_ptr<DicomModalityStoreJob> job(new DicomModalityStoreJob(context));
771 job->SetDescription("REST API"); 741
772 job->SetLocalAet(localAet); 742 if (GetInstancesToExport(request, *job, remote, call))
773 job->SetRemoteModality(p); 743 {
774 744 std::string localAet = Toolbox::GetJsonStringField
775 if (moveOriginatorID != 0) 745 (request, "LocalAet", context.GetDefaultLocalApplicationEntityTitle());
776 { 746 std::string moveOriginatorAET = Toolbox::GetJsonStringField
777 job->SetMoveOriginator(moveOriginatorAET, moveOriginatorID); 747 (request, "MoveOriginatorAet", context.GetDefaultLocalApplicationEntityTitle());
778 } 748 int moveOriginatorID = Toolbox::GetJsonIntegerField
779 749 (request, "MoveOriginatorID", 0 /* By default, not a C-MOVE */);
780 SubmitJob(call, request, instances, job.release()); 750
751 RemoteModalityParameters p = Configuration::GetModalityUsingSymbolicName(remote);
752
753 job->SetDescription("REST API");
754 job->SetLocalAet(localAet);
755 job->SetRemoteModality(p);
756
757 if (moveOriginatorID != 0)
758 {
759 job->SetMoveOriginator(moveOriginatorAET, moveOriginatorID);
760 }
761
762 SubmitJob(call, request, job.release());
763 }
781 } 764 }
782 765
783 766
784 /*************************************************************************** 767 /***************************************************************************
785 * DICOM C-Move SCU 768 * DICOM C-Move SCU
896 ServerContext& context = OrthancRestApi::GetContext(call); 879 ServerContext& context = OrthancRestApi::GetContext(call);
897 880
898 std::string remote = call.GetUriComponent("id", ""); 881 std::string remote = call.GetUriComponent("id", "");
899 882
900 Json::Value request; 883 Json::Value request;
901 std::list<std::string> instances;
902 if (!GetInstancesToExport(request, instances, remote, call))
903 {
904 return;
905 }
906
907 WebServiceParameters peer;
908 Configuration::GetOrthancPeer(peer, remote);
909
910 std::auto_ptr<OrthancPeerStoreJob> job(new OrthancPeerStoreJob(context)); 884 std::auto_ptr<OrthancPeerStoreJob> job(new OrthancPeerStoreJob(context));
911 job->SetDescription("REST API"); 885
912 job->SetPeer(peer); 886 if (GetInstancesToExport(request, *job, remote, call))
913 887 {
914 SubmitJob(call, request, instances, job.release()); 888 WebServiceParameters peer;
889 Configuration::GetOrthancPeer(peer, remote);
890
891 job->SetDescription("REST API");
892 job->SetPeer(peer);
893
894 SubmitJob(call, request, job.release());
895 }
915 } 896 }
916 897
917 898
918 // DICOM bridge ------------------------------------------------------------- 899 // DICOM bridge -------------------------------------------------------------
919 900