comparison 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
comparison
equal deleted inserted replaced
2985:32ec5078e32b 2986:b1ba0a8311b5
706 call.GetOutput().AnswerJson(answer); 706 call.GetOutput().AnswerJson(answer);
707 } 707 }
708 708
709 709
710 template <ResourceType CHILDREN_LEVEL> 710 template <ResourceType CHILDREN_LEVEL>
711 static void AnswerQueryChildren(RestApiPostCall& call) 711 static void QueryAnswerChildren(RestApiPostCall& call)
712 { 712 {
713 // New in Orthanc 1.4.3 713 // New in Orthanc 1.4.3
714 assert(CHILDREN_LEVEL == ResourceType_Study || 714 assert(CHILDREN_LEVEL == ResourceType_Study ||
715 CHILDREN_LEVEL == ResourceType_Series || 715 CHILDREN_LEVEL == ResourceType_Series ||
716 CHILDREN_LEVEL == ResourceType_Instance); 716 CHILDREN_LEVEL == ResourceType_Instance);
766 for (std::map<DicomTag, std::string>::const_iterator 766 for (std::map<DicomTag, std::string>::const_iterator
767 it = query.begin(); it != query.end(); ++it) 767 it = query.begin(); it != query.end(); ++it)
768 { 768 {
769 handler->SetQuery(it->first, it->second); 769 handler->SetQuery(it->first, it->second);
770 } 770 }
771 }
772
773 DicomMap answer;
774 parent.GetHandler().GetAnswer(answer, index);
775
776 // This switch-case mimics "DicomUserConnection::Move()"
777 switch (parent.GetHandler().GetLevel())
778 {
779 case ResourceType_Patient:
780 handler->CopyStringTag(answer, DICOM_TAG_PATIENT_ID);
781 break;
782
783 case ResourceType_Study:
784 handler->CopyStringTag(answer, DICOM_TAG_STUDY_INSTANCE_UID);
785 break;
786
787 case ResourceType_Series:
788 handler->CopyStringTag(answer, DICOM_TAG_STUDY_INSTANCE_UID);
789 handler->CopyStringTag(answer, DICOM_TAG_SERIES_INSTANCE_UID);
790 break;
791
792 case ResourceType_Instance:
793 handler->CopyStringTag(answer, DICOM_TAG_STUDY_INSTANCE_UID);
794 handler->CopyStringTag(answer, DICOM_TAG_SERIES_INSTANCE_UID);
795 handler->CopyStringTag(answer, DICOM_TAG_SOP_INSTANCE_UID);
796 break;
797
798 default:
799 throw OrthancException(ErrorCode_InternalError);
771 } 800 }
772 } 801 }
773 } 802 }
774 803
775 AnswerQueryHandler(call, handler); 804 AnswerQueryHandler(call, handler);
1232 Register("/queries/{id}/answers", ListQueryAnswers); 1261 Register("/queries/{id}/answers", ListQueryAnswers);
1233 Register("/queries/{id}/answers/{index}", ListQueryAnswerOperations); 1262 Register("/queries/{id}/answers/{index}", ListQueryAnswerOperations);
1234 Register("/queries/{id}/answers/{index}/content", GetQueryOneAnswer); 1263 Register("/queries/{id}/answers/{index}/content", GetQueryOneAnswer);
1235 Register("/queries/{id}/answers/{index}/retrieve", RetrieveOneAnswer); 1264 Register("/queries/{id}/answers/{index}/retrieve", RetrieveOneAnswer);
1236 Register("/queries/{id}/answers/{index}/query-instances", 1265 Register("/queries/{id}/answers/{index}/query-instances",
1237 AnswerQueryChildren<ResourceType_Instance>); 1266 QueryAnswerChildren<ResourceType_Instance>);
1238 Register("/queries/{id}/answers/{index}/query-series", 1267 Register("/queries/{id}/answers/{index}/query-series",
1239 AnswerQueryChildren<ResourceType_Series>); 1268 QueryAnswerChildren<ResourceType_Series>);
1240 Register("/queries/{id}/answers/{index}/query-studies", 1269 Register("/queries/{id}/answers/{index}/query-studies",
1241 AnswerQueryChildren<ResourceType_Study>); 1270 QueryAnswerChildren<ResourceType_Study>);
1242 Register("/queries/{id}/level", GetQueryLevel); 1271 Register("/queries/{id}/level", GetQueryLevel);
1243 Register("/queries/{id}/modality", GetQueryModality); 1272 Register("/queries/{id}/modality", GetQueryModality);
1244 Register("/queries/{id}/query", GetQueryArguments); 1273 Register("/queries/{id}/query", GetQueryArguments);
1245 Register("/queries/{id}/retrieve", RetrieveAllAnswers); 1274 Register("/queries/{id}/retrieve", RetrieveAllAnswers);
1246 1275