Mercurial > hg > orthanc
diff OrthancServer/OrthancRestApi/OrthancRestResources.cpp @ 1166:a921e3b5e763
bulk tags retrieval
author | Sebastien Jodogne <s.jodogne@gmail.com> |
---|---|
date | Fri, 19 Sep 2014 10:17:50 +0200 |
parents | 200fcac0deb4 |
children | 059391d3f8df |
line wrap: on
line diff
--- a/OrthancServer/OrthancRestApi/OrthancRestResources.cpp Thu Sep 18 17:48:55 2014 +0200 +++ b/OrthancServer/OrthancRestApi/OrthancRestResources.cpp Fri Sep 19 10:17:50 2014 +0200 @@ -876,6 +876,42 @@ } + static void GetChildInstancesTags(RestApiGetCall& call) + { + ServerContext& context = OrthancRestApi::GetContext(call); + std::string publicId = call.GetUriComponent("id", ""); + bool simplify = call.HasArgument("simplify"); + + // Retrieve all the instances of this patient/study/series + typedef std::list<std::string> Instances; + Instances instances; + + context.GetIndex().GetChildInstances(instances, publicId); // (*) + + Json::Value result = Json::arrayValue; + + for (Instances::const_iterator it = instances.begin(); + it != instances.end(); it++) + { + Json::Value full; + context.ReadJson(full, *it); + + if (simplify) + { + Json::Value simplified; + SimplifyTags(simplified, full); + result.append(simplified); + } + else + { + result.append(full); + } + } + + call.GetOutput().AnswerJson(result); + } + + void OrthancRestApi::RegisterResources() { @@ -954,6 +990,10 @@ Register("/studies/{id}/instances", GetChildResources<ResourceType_Study, ResourceType_Instance>); Register("/series/{id}/instances", GetChildResources<ResourceType_Series, ResourceType_Instance>); + Register("/patients/{id}/instances-tags", GetChildInstancesTags); + Register("/studies/{id}/instances-tags", GetChildInstancesTags); + Register("/series/{id}/instances-tags", GetChildInstancesTags); + Register("/instances/{id}/content/*", GetRawContent); } }