Mercurial > hg > orthanc
comparison OrthancServer/OrthancRestApi/OrthancRestResources.cpp @ 1054:1701dcb6f554
Access patient module at the study level to cope with PatientID collisions
author | Sebastien Jodogne <s.jodogne@gmail.com> |
---|---|
date | Wed, 23 Jul 2014 17:10:08 +0200 |
parents | 83622b0f544c |
children | f167b672db94 |
comparison
equal
deleted
inserted
replaced
1053:ee5cbe6e48d3 | 1054:1701dcb6f554 |
---|---|
703 } | 703 } |
704 } | 704 } |
705 } | 705 } |
706 | 706 |
707 | 707 |
708 template <enum ResourceType resourceType> | 708 static void GetModuleInternal(RestApiGetCall& call, |
709 static void GetModule(RestApiGetCall& call) | 709 ResourceType resourceType, |
710 { | 710 ResourceType queryLevel) |
711 { | |
712 if (resourceType != queryLevel && | |
713 !(resourceType == ResourceType_Study && queryLevel == ResourceType_Patient)) | |
714 { | |
715 throw OrthancException(ErrorCode_NotImplemented); | |
716 } | |
717 | |
711 ServerContext& context = OrthancRestApi::GetContext(call); | 718 ServerContext& context = OrthancRestApi::GetContext(call); |
712 std::string publicId = call.GetUriComponent("id", ""); | 719 std::string publicId = call.GetUriComponent("id", ""); |
713 bool simplify = call.HasArgument("simplify"); | 720 bool simplify = call.HasArgument("simplify"); |
714 | 721 |
715 typedef std::set<DicomTag> Module; | 722 typedef std::set<DicomTag> Module; |
716 Module module; | 723 Module module; |
717 DicomTag::GetTagsForModule(module, resourceType); | 724 DicomTag::GetTagsForModule(module, queryLevel); |
718 | 725 |
719 Json::Value tags; | 726 Json::Value tags; |
720 | 727 |
721 if (resourceType != ResourceType_Instance) | 728 if (resourceType != ResourceType_Instance) |
722 { | 729 { |
754 call.GetOutput().AnswerJson(simplified); | 761 call.GetOutput().AnswerJson(simplified); |
755 } | 762 } |
756 else | 763 else |
757 { | 764 { |
758 call.GetOutput().AnswerJson(result); | 765 call.GetOutput().AnswerJson(result); |
759 } | 766 } |
767 } | |
768 | |
769 | |
770 | |
771 template <enum ResourceType resourceType> | |
772 static void GetModule(RestApiGetCall& call) | |
773 { | |
774 GetModuleInternal(call, resourceType, resourceType); | |
775 } | |
776 | |
777 | |
778 static void GetPatientModuleForStudy(RestApiGetCall& call) | |
779 { | |
780 GetModuleInternal(call, ResourceType_Study, ResourceType_Patient); | |
760 } | 781 } |
761 | 782 |
762 | 783 |
763 void OrthancRestApi::RegisterResources() | 784 void OrthancRestApi::RegisterResources() |
764 { | 785 { |
787 | 808 |
788 Register("/instances/{id}/module", GetModule<ResourceType_Instance>); | 809 Register("/instances/{id}/module", GetModule<ResourceType_Instance>); |
789 Register("/patients/{id}/module", GetModule<ResourceType_Patient>); | 810 Register("/patients/{id}/module", GetModule<ResourceType_Patient>); |
790 Register("/series/{id}/module", GetModule<ResourceType_Series>); | 811 Register("/series/{id}/module", GetModule<ResourceType_Series>); |
791 Register("/studies/{id}/module", GetModule<ResourceType_Study>); | 812 Register("/studies/{id}/module", GetModule<ResourceType_Study>); |
813 Register("/studies/{id}/module-patient", GetPatientModuleForStudy); | |
792 | 814 |
793 Register("/instances/{id}/file", GetInstanceFile); | 815 Register("/instances/{id}/file", GetInstanceFile); |
794 Register("/instances/{id}/export", ExportInstanceFile); | 816 Register("/instances/{id}/export", ExportInstanceFile); |
795 Register("/instances/{id}/tags", GetInstanceTagsBis); | 817 Register("/instances/{id}/tags", GetInstanceTagsBis); |
796 Register("/instances/{id}/simplified-tags", GetInstanceTags<true>); | 818 Register("/instances/{id}/simplified-tags", GetInstanceTags<true>); |