comparison OrthancServer/OrthancRestApi.cpp @ 499:7db04aa5104f

instance-level find scu
author Sebastien Jodogne <s.jodogne@gmail.com>
date Mon, 12 Aug 2013 11:01:02 +0200
parents bdbde1fbfab3
children a8be42bcf2bb
comparison
equal deleted inserted replaced
497:26b2d71228d8 499:7db04aa5104f
177 Json::Value result; 177 Json::Value result;
178 answers.ToJson(result); 178 answers.ToJson(result);
179 call.GetOutput().AnswerJson(result); 179 call.GetOutput().AnswerJson(result);
180 } 180 }
181 181
182 static void DicomFindInstance(RestApi::PostCall& call)
183 {
184 DicomMap m;
185 DicomMap::SetupFindInstanceTemplate(m);
186 if (!MergeQueryAndTemplate(m, call.GetPostBody()))
187 {
188 return;
189 }
190
191 if ((m.GetValue(DICOM_TAG_ACCESSION_NUMBER).AsString().size() <= 2 &&
192 m.GetValue(DICOM_TAG_PATIENT_ID).AsString().size() <= 2) ||
193 m.GetValue(DICOM_TAG_STUDY_INSTANCE_UID).AsString().size() <= 2 ||
194 m.GetValue(DICOM_TAG_SERIES_INSTANCE_UID).AsString().size() <= 2)
195 {
196 return;
197 }
198
199 DicomUserConnection connection;
200 ConnectToModality(connection, call.GetUriComponent("id", ""));
201
202 DicomFindAnswers answers;
203 connection.FindInstance(answers, m);
204
205 Json::Value result;
206 answers.ToJson(result);
207 call.GetOutput().AnswerJson(result);
208 }
209
182 static void DicomFind(RestApi::PostCall& call) 210 static void DicomFind(RestApi::PostCall& call)
183 { 211 {
184 DicomMap m; 212 DicomMap m;
185 DicomMap::SetupFindPatientTemplate(m); 213 DicomMap::SetupFindPatientTemplate(m);
186 if (!MergeQueryAndTemplate(m, call.GetPostBody())) 214 if (!MergeQueryAndTemplate(m, call.GetPostBody()))
932 { 960 {
933 Json::Value result = Json::arrayValue; 961 Json::Value result = Json::arrayValue;
934 result.append("find-patient"); 962 result.append("find-patient");
935 result.append("find-study"); 963 result.append("find-study");
936 result.append("find-series"); 964 result.append("find-series");
965 result.append("find-instance");
937 result.append("find"); 966 result.append("find");
938 result.append("store"); 967 result.append("store");
939 call.GetOutput().AnswerJson(result); 968 call.GetOutput().AnswerJson(result);
940 } 969 }
941 } 970 }
1792 Register("/modalities", ListModalities); 1821 Register("/modalities", ListModalities);
1793 Register("/modalities/{id}", ListModalityOperations); 1822 Register("/modalities/{id}", ListModalityOperations);
1794 Register("/modalities/{id}/find-patient", DicomFindPatient); 1823 Register("/modalities/{id}/find-patient", DicomFindPatient);
1795 Register("/modalities/{id}/find-study", DicomFindStudy); 1824 Register("/modalities/{id}/find-study", DicomFindStudy);
1796 Register("/modalities/{id}/find-series", DicomFindSeries); 1825 Register("/modalities/{id}/find-series", DicomFindSeries);
1826 Register("/modalities/{id}/find-instance", DicomFindInstance);
1797 Register("/modalities/{id}/find", DicomFind); 1827 Register("/modalities/{id}/find", DicomFind);
1798 Register("/modalities/{id}/store", DicomStore); 1828 Register("/modalities/{id}/store", DicomStore);
1799 1829
1800 Register("/peers", ListPeers); 1830 Register("/peers", ListPeers);
1801 Register("/peers/{id}", ListPeerOperations); 1831 Register("/peers/{id}", ListPeerOperations);