Mercurial > hg > orthanc
diff OrthancServer/OrthancRestApi/OrthancRestModalities.cpp @ 2986:b1ba0a8311b5
exploring hierarchy of C-FIND answers finished
author | Sebastien Jodogne <s.jodogne@gmail.com> |
---|---|
date | Mon, 10 Dec 2018 10:03:41 +0100 |
parents | 94c8222c52b7 |
children | 9cc3d40e389b |
line wrap: on
line diff
--- a/OrthancServer/OrthancRestApi/OrthancRestModalities.cpp Mon Dec 10 09:20:57 2018 +0100 +++ b/OrthancServer/OrthancRestApi/OrthancRestModalities.cpp Mon Dec 10 10:03:41 2018 +0100 @@ -708,7 +708,7 @@ template <ResourceType CHILDREN_LEVEL> - static void AnswerQueryChildren(RestApiPostCall& call) + static void QueryAnswerChildren(RestApiPostCall& call) { // New in Orthanc 1.4.3 assert(CHILDREN_LEVEL == ResourceType_Study || @@ -769,6 +769,35 @@ handler->SetQuery(it->first, it->second); } } + + DicomMap answer; + parent.GetHandler().GetAnswer(answer, index); + + // This switch-case mimics "DicomUserConnection::Move()" + switch (parent.GetHandler().GetLevel()) + { + case ResourceType_Patient: + handler->CopyStringTag(answer, DICOM_TAG_PATIENT_ID); + break; + + case ResourceType_Study: + handler->CopyStringTag(answer, DICOM_TAG_STUDY_INSTANCE_UID); + break; + + case ResourceType_Series: + handler->CopyStringTag(answer, DICOM_TAG_STUDY_INSTANCE_UID); + handler->CopyStringTag(answer, DICOM_TAG_SERIES_INSTANCE_UID); + break; + + case ResourceType_Instance: + handler->CopyStringTag(answer, DICOM_TAG_STUDY_INSTANCE_UID); + handler->CopyStringTag(answer, DICOM_TAG_SERIES_INSTANCE_UID); + handler->CopyStringTag(answer, DICOM_TAG_SOP_INSTANCE_UID); + break; + + default: + throw OrthancException(ErrorCode_InternalError); + } } } @@ -1234,11 +1263,11 @@ Register("/queries/{id}/answers/{index}/content", GetQueryOneAnswer); Register("/queries/{id}/answers/{index}/retrieve", RetrieveOneAnswer); Register("/queries/{id}/answers/{index}/query-instances", - AnswerQueryChildren<ResourceType_Instance>); + QueryAnswerChildren<ResourceType_Instance>); Register("/queries/{id}/answers/{index}/query-series", - AnswerQueryChildren<ResourceType_Series>); + QueryAnswerChildren<ResourceType_Series>); Register("/queries/{id}/answers/{index}/query-studies", - AnswerQueryChildren<ResourceType_Study>); + QueryAnswerChildren<ResourceType_Study>); Register("/queries/{id}/level", GetQueryLevel); Register("/queries/{id}/modality", GetQueryModality); Register("/queries/{id}/query", GetQueryArguments);