Mercurial > hg > orthanc
diff OrthancServer/OrthancRestApi/OrthancRestResources.cpp @ 1276:6164f7200c43
refactoring modules
author | Sebastien Jodogne <s.jodogne@gmail.com> |
---|---|
date | Fri, 23 Jan 2015 14:42:33 +0100 |
parents | 09aa7c126be9 |
children | 8dac11c78d71 |
line wrap: on
line diff
--- a/OrthancServer/OrthancRestApi/OrthancRestResources.cpp Wed Jan 21 17:47:27 2015 +0100 +++ b/OrthancServer/OrthancRestApi/OrthancRestResources.cpp Fri Jan 23 14:42:33 2015 +0100 @@ -713,10 +713,14 @@ static void GetModuleInternal(RestApiGetCall& call, ResourceType resourceType, - ResourceType queryLevel) + DicomModule module) { - if (resourceType != queryLevel && - !(resourceType == ResourceType_Study && queryLevel == ResourceType_Patient)) + if (!((resourceType == ResourceType_Patient && module == DicomModule_Patient) || + (resourceType == ResourceType_Study && module == DicomModule_Patient) || + (resourceType == ResourceType_Study && module == DicomModule_Study) || + (resourceType == ResourceType_Series && module == DicomModule_Series) || + (resourceType == ResourceType_Instance && module == DicomModule_Instance) || + (resourceType == ResourceType_Instance && module == DicomModule_Image))) { throw OrthancException(ErrorCode_NotImplemented); } @@ -725,9 +729,9 @@ std::string publicId = call.GetUriComponent("id", ""); bool simplify = call.HasArgument("simplify"); - typedef std::set<DicomTag> Module; - Module module; - DicomTag::GetTagsForModule(module, queryLevel); + typedef std::set<DicomTag> ModuleTags; + ModuleTags moduleTags; + DicomTag::GetTagsForModule(moduleTags, module); Json::Value tags; @@ -751,9 +755,9 @@ // Filter the tags of the instance according to the module Json::Value result = Json::objectValue; - for (Module::const_iterator it = module.begin(); it != module.end(); it++) + for (ModuleTags::const_iterator tag = moduleTags.begin(); tag != moduleTags.end(); tag++) { - std::string s = it->Format(); + std::string s = tag->Format(); if (tags.isMember(s)) { result[s] = tags[s]; @@ -774,16 +778,11 @@ - template <enum ResourceType resourceType> + template <enum ResourceType resourceType, + enum DicomModule module> static void GetModule(RestApiGetCall& call) { - GetModuleInternal(call, resourceType, resourceType); - } - - - static void GetPatientModuleForStudy(RestApiGetCall& call) - { - GetModuleInternal(call, ResourceType_Study, ResourceType_Patient); + GetModuleInternal(call, resourceType, module); } @@ -938,11 +937,11 @@ Register("/series/{id}/shared-tags", GetSharedTags); Register("/studies/{id}/shared-tags", GetSharedTags); - Register("/instances/{id}/module", GetModule<ResourceType_Instance>); - Register("/patients/{id}/module", GetModule<ResourceType_Patient>); - Register("/series/{id}/module", GetModule<ResourceType_Series>); - Register("/studies/{id}/module", GetModule<ResourceType_Study>); - Register("/studies/{id}/module-patient", GetPatientModuleForStudy); + Register("/instances/{id}/module", GetModule<ResourceType_Instance, DicomModule_Instance>); + Register("/patients/{id}/module", GetModule<ResourceType_Patient, DicomModule_Patient>); + Register("/series/{id}/module", GetModule<ResourceType_Series, DicomModule_Series>); + Register("/studies/{id}/module", GetModule<ResourceType_Study, DicomModule_Study>); + Register("/studies/{id}/module-patient", GetModule<ResourceType_Study, DicomModule_Patient>); Register("/instances/{id}/file", GetInstanceFile); Register("/instances/{id}/export", ExportInstanceFile);