Mercurial > hg > orthanc
changeset 499:7db04aa5104f
instance-level find scu
author | Sebastien Jodogne <s.jodogne@gmail.com> |
---|---|
date | Mon, 12 Aug 2013 11:01:02 +0200 |
parents | 26b2d71228d8 |
children | 7395fbb17c07 |
files | OrthancServer/OrthancRestApi.cpp |
diffstat | 1 files changed, 30 insertions(+), 0 deletions(-) [+] |
line wrap: on
line diff
--- a/OrthancServer/OrthancRestApi.cpp Fri Jul 19 16:48:59 2013 +0200 +++ b/OrthancServer/OrthancRestApi.cpp Mon Aug 12 11:01:02 2013 +0200 @@ -179,6 +179,34 @@ call.GetOutput().AnswerJson(result); } + static void DicomFindInstance(RestApi::PostCall& call) + { + DicomMap m; + DicomMap::SetupFindInstanceTemplate(m); + if (!MergeQueryAndTemplate(m, call.GetPostBody())) + { + return; + } + + if ((m.GetValue(DICOM_TAG_ACCESSION_NUMBER).AsString().size() <= 2 && + m.GetValue(DICOM_TAG_PATIENT_ID).AsString().size() <= 2) || + m.GetValue(DICOM_TAG_STUDY_INSTANCE_UID).AsString().size() <= 2 || + m.GetValue(DICOM_TAG_SERIES_INSTANCE_UID).AsString().size() <= 2) + { + return; + } + + DicomUserConnection connection; + ConnectToModality(connection, call.GetUriComponent("id", "")); + + DicomFindAnswers answers; + connection.FindInstance(answers, m); + + Json::Value result; + answers.ToJson(result); + call.GetOutput().AnswerJson(result); + } + static void DicomFind(RestApi::PostCall& call) { DicomMap m; @@ -934,6 +962,7 @@ result.append("find-patient"); result.append("find-study"); result.append("find-series"); + result.append("find-instance"); result.append("find"); result.append("store"); call.GetOutput().AnswerJson(result); @@ -1794,6 +1823,7 @@ Register("/modalities/{id}/find-patient", DicomFindPatient); Register("/modalities/{id}/find-study", DicomFindStudy); Register("/modalities/{id}/find-series", DicomFindSeries); + Register("/modalities/{id}/find-instance", DicomFindInstance); Register("/modalities/{id}/find", DicomFind); Register("/modalities/{id}/store", DicomStore);