Mercurial > hg > orthanc
comparison OrthancExplorer/query-retrieve.js @ 2119:e0517f25919e
Improved robustness of Orthanc Explorer wrt. query/retrieve (maybe fix issue #24)
author | Sebastien Jodogne <s.jodogne@gmail.com> |
---|---|
date | Sun, 06 Nov 2016 11:39:04 +0100 |
parents | aaf368280f5a |
children | 3eefb84ac0bd |
comparison
equal
deleted
inserted
replaced
2118:9cf176bc21ad | 2119:e0517f25919e |
---|---|
115 async: false, | 115 async: false, |
116 error: function() { | 116 error: function() { |
117 alert('Error during query (C-Find)'); | 117 alert('Error during query (C-Find)'); |
118 }, | 118 }, |
119 success: function(result) { | 119 success: function(result) { |
120 window.location.assign('explorer.html#query-retrieve-2?server=' + server + '&uuid=' + result['ID']); | 120 ChangePage('query-retrieve-2', { |
121 'server' : server, | |
122 'uuid' : result['ID'] | |
123 }); | |
121 } | 124 } |
122 }); | 125 }); |
123 | 126 |
124 return false; | 127 return false; |
125 }); | 128 }); |
126 | |
127 | |
128 | |
129 function Retrieve(url) | |
130 { | |
131 $.ajax({ | |
132 url: '../system', | |
133 dataType: 'json', | |
134 async: false, | |
135 success: function(system) { | |
136 $('<div>').simpledialog2({ | |
137 mode: 'button', | |
138 headerText: 'Target', | |
139 headerClose: true, | |
140 buttonPrompt: 'Enter Application Entity Title (AET):', | |
141 buttonInput: true, | |
142 buttonInputDefault: system['DicomAet'], | |
143 buttons : { | |
144 'OK': { | |
145 click: function () { | |
146 var aet = $.mobile.sdLastInput; | |
147 if (aet.length == 0) | |
148 aet = system['DicomAet']; | |
149 | |
150 $.ajax({ | |
151 url: url, | |
152 type: 'POST', | |
153 async: true, // Necessary to block UI | |
154 dataType: 'text', | |
155 data: aet, | |
156 beforeSend: function() { | |
157 $.blockUI({ message: $('#info-retrieve') }); | |
158 }, | |
159 complete: function(s) { | |
160 $.unblockUI(); | |
161 }, | |
162 error: function() { | |
163 alert('Error during retrieve'); | |
164 } | |
165 }); | |
166 } | |
167 } | |
168 } | |
169 }); | |
170 } | |
171 }); | |
172 } | |
173 | |
174 | 129 |
175 | 130 |
176 | 131 |
177 $('#query-retrieve-2').live('pagebeforeshow', function() { | 132 $('#query-retrieve-2').live('pagebeforeshow', function() { |
178 if ($.mobile.pageData) { | 133 if ($.mobile.pageData) { |
179 var uri = '../queries/' + $.mobile.pageData.uuid + '/answers'; | 134 var pageData = DeepCopy($.mobile.pageData); |
135 | |
136 var uri = '../queries/' + pageData.uuid + '/answers'; | |
180 | 137 |
181 $.ajax({ | 138 $.ajax({ |
182 url: uri, | 139 url: uri, |
183 dataType: 'json', | 140 dataType: 'json', |
184 async: false, | 141 async: false, |
190 $.ajax({ | 147 $.ajax({ |
191 url: uri + '/' + answers[i] + '/content?simplify', | 148 url: uri + '/' + answers[i] + '/content?simplify', |
192 dataType: 'json', | 149 dataType: 'json', |
193 async: false, | 150 async: false, |
194 success: function(study) { | 151 success: function(study) { |
195 var series = '#query-retrieve-3?server=' + $.mobile.pageData.server + '&uuid=' + study['StudyInstanceUID']; | 152 var series = '#query-retrieve-3?server=' + pageData.server + '&uuid=' + study['StudyInstanceUID']; |
196 var info = $('<a>').attr('href', series).html( | 153 var info = $('<a>').attr('href', series).html( |
197 ('<h3>{0} - {1}</h3>' + | 154 ('<h3>{0} - {1}</h3>' + |
198 '<p>Accession number: <b>{2}</b></p>' + | 155 '<p>Accession number: <b>{2}</b></p>' + |
199 '<p>Birth date: <b>{3}</b></p>' + | 156 '<p>Birth date: <b>{3}</b></p>' + |
200 '<p>Patient sex: <b>{4}</b></p>' + | 157 '<p>Patient sex: <b>{4}</b></p>' + |
206 FormatDicomDate(study['PatientBirthDate']), | 163 FormatDicomDate(study['PatientBirthDate']), |
207 study['PatientSex'], | 164 study['PatientSex'], |
208 study['StudyDescription'], | 165 study['StudyDescription'], |
209 FormatDicomDate(study['StudyDate']))); | 166 FormatDicomDate(study['StudyDate']))); |
210 | 167 |
211 var studyUri = uri + '/' + answers[i] + '/retrieve'; | 168 var answerId = answers[i]; |
212 var retrieve = $('<a>').text('Retrieve').click(function() { | 169 var retrieve = $('<a>').text('Retrieve all study').click(function() { |
213 Retrieve(studyUri); | 170 ChangePage('query-retrieve-4', { |
171 'query' : pageData.uuid, | |
172 'answer' : answerId, | |
173 'server' : pageData.server | |
174 }); | |
214 }); | 175 }); |
215 | 176 |
216 target.append($('<li>').append(info).append(retrieve)); | 177 target.append($('<li>').append(info).append(retrieve)); |
217 } | 178 } |
218 }); | 179 }); |
225 }); | 186 }); |
226 | 187 |
227 | 188 |
228 $('#query-retrieve-3').live('pagebeforeshow', function() { | 189 $('#query-retrieve-3').live('pagebeforeshow', function() { |
229 if ($.mobile.pageData) { | 190 if ($.mobile.pageData) { |
191 var pageData = DeepCopy($.mobile.pageData); | |
192 | |
230 var query = { | 193 var query = { |
231 'Level' : 'Series', | 194 'Level' : 'Series', |
232 'Query' : { | 195 'Query' : { |
233 'Modality' : '*', | 196 'Modality' : '*', |
234 'ProtocolName' : '*', | 197 'ProtocolName' : '*', |
235 'SeriesDescription' : '*', | 198 'SeriesDescription' : '*', |
236 'SeriesInstanceUID' : '*', | 199 'SeriesInstanceUID' : '*', |
237 'StudyInstanceUID' : $.mobile.pageData.uuid | 200 'StudyInstanceUID' : pageData.uuid |
238 } | 201 } |
239 }; | 202 }; |
240 | 203 |
241 $.ajax({ | 204 $.ajax({ |
242 url: '../modalities/' + $.mobile.pageData.server + '/query', | 205 url: '../modalities/' + pageData.server + '/query', |
243 type: 'POST', | 206 type: 'POST', |
244 data: JSON.stringify(query), | 207 data: JSON.stringify(query), |
245 dataType: 'json', | 208 dataType: 'json', |
246 async: false, | 209 async: false, |
247 error: function() { | 210 error: function() { |
248 alert('Error during query (C-Find)'); | 211 alert('Error during query (C-Find)'); |
249 }, | 212 }, |
250 success: function(answer) { | 213 success: function(answer) { |
214 var queryUuid = answer['ID']; | |
251 var uri = '../queries/' + answer['ID'] + '/answers'; | 215 var uri = '../queries/' + answer['ID'] + '/answers'; |
252 | 216 |
253 $.ajax({ | 217 $.ajax({ |
254 url: uri, | 218 url: uri, |
255 dataType: 'json', | 219 dataType: 'json', |
273 series['SeriesDescription'], | 237 series['SeriesDescription'], |
274 series['Modality'], | 238 series['Modality'], |
275 series['ProtocolName'] | 239 series['ProtocolName'] |
276 )); | 240 )); |
277 | 241 |
278 var seriesUri = uri + '/' + answers[i] + '/retrieve'; | 242 var answerId = answers[i]; |
279 var retrieve = $('<a>').text('Retrieve').click(function() { | 243 info.click(function() { |
280 Retrieve(seriesUri); | 244 ChangePage('query-retrieve-4', { |
245 'query' : queryUuid, | |
246 'study' : pageData.uuid, | |
247 'answer' : answerId, | |
248 'server' : pageData.server | |
249 }); | |
281 }); | 250 }); |
282 | 251 |
283 target.append($('<li>').append(info).append(retrieve)); | 252 target.append($('<li>').attr('data-icon', 'arrow-d').append(info)); |
284 } | 253 } |
285 }); | 254 }); |
286 } | 255 } |
287 | 256 |
288 target.listview('refresh'); | 257 target.listview('refresh'); |
290 }); | 259 }); |
291 } | 260 } |
292 }); | 261 }); |
293 } | 262 } |
294 }); | 263 }); |
264 | |
265 | |
266 | |
267 $('#query-retrieve-4').live('pagebeforeshow', function() { | |
268 if ($.mobile.pageData) { | |
269 var pageData = DeepCopy($.mobile.pageData); | |
270 var uri = '../queries/' + pageData.query + '/answers/' + pageData.answer + '/retrieve'; | |
271 | |
272 $.ajax({ | |
273 url: '../system', | |
274 dataType: 'json', | |
275 async: false, | |
276 cache: false, | |
277 success: function(system) { | |
278 $('#retrieve-target').val(system['DicomAet']); | |
279 | |
280 $('#retrieve-form').submit(function(event) { | |
281 event.preventDefault(); | |
282 | |
283 var aet = $('#retrieve-target').val(); | |
284 if (aet.length == 0) { | |
285 aet = system['DicomAet']; | |
286 } | |
287 | |
288 $.ajax({ | |
289 url: uri, | |
290 type: 'POST', | |
291 async: true, // Necessary to block UI | |
292 dataType: 'text', | |
293 data: aet, | |
294 beforeSend: function() { | |
295 $.blockUI({ message: $('#info-retrieve') }); | |
296 }, | |
297 complete: function(s) { | |
298 $.unblockUI(); | |
299 }, | |
300 success: function() { | |
301 if (pageData.study) { | |
302 // Go back to the list of series | |
303 ChangePage('query-retrieve-3', { | |
304 'server' : pageData.server, | |
305 'uuid' : pageData.study | |
306 }); | |
307 } else { | |
308 // Go back to the list of studies | |
309 ChangePage('query-retrieve-2', { | |
310 'server' : pageData.server, | |
311 'uuid' : pageData.query | |
312 }); | |
313 } | |
314 }, | |
315 error: function() { | |
316 alert('Error during retrieve'); | |
317 } | |
318 }); | |
319 }); | |
320 } | |
321 }); | |
322 } | |
323 }); |