comparison OrthancExplorer/explorer.js @ 80:6212bf978584

status of series
author Sebastien Jodogne <s.jodogne@gmail.com>
date Thu, 20 Sep 2012 15:18:12 +0200
parents 4bc019d2f969
children 9eb40cad7935
comparison
equal deleted inserted replaced
79:297bad4e1019 80:6212bf978584
83 else 83 else
84 return d.toString('dddd, MMMM d, yyyy'); 84 return d.toString('dddd, MMMM d, yyyy');
85 } 85 }
86 86
87 87
88 88 function Sort(arr, fieldExtractor, isInteger, reverse)
89 function SortOnDicomTag(arr, tag, isInteger, reverse)
90 { 89 {
91 var defaultValue; 90 var defaultValue;
92 if (isInteger) 91 if (isInteger)
93 defaultValue = 0; 92 defaultValue = 0;
94 else 93 else
95 defaultValue = ''; 94 defaultValue = '';
96 95
97 arr.sort(function(a, b) { 96 arr.sort(function(a, b) {
98 var ta = a.MainDicomTags[tag]; 97 var ta = fieldExtractor(a);
99 var tb = b.MainDicomTags[tag]; 98 var tb = fieldExtractor(b);
100 var order; 99 var order;
101 100
102 if (ta == undefined) 101 if (ta == undefined)
103 ta = defaultValue; 102 ta = defaultValue;
104 103
124 if (reverse) 123 if (reverse)
125 return -order; 124 return -order;
126 else 125 else
127 return order; 126 return order;
128 }); 127 });
128 }
129
130
131 function SortOnDicomTag(arr, tag, isInteger, reverse)
132 {
133 return Sort(arr, function(a) {
134 return a.MainDicomTags[tag];
135 }, isInteger, reverse);
129 } 136 }
130 137
131 138
132 139
133 function GetSingleResource(type, uuid, callback) 140 function GetSingleResource(type, uuid, callback)
264 271
265 272
266 273
267 function FormatSeries(series, link, isReverse) 274 function FormatSeries(series, link, isReverse)
268 { 275 {
269 var s = ('<h3>{0}</h3>{1}' + 276 var c;
270 '<span class="ui-li-count">{2}</span>').format 277 if (series.Instances.length == series.ExpectedNumberOfInstances)
278 {
279 c = series.ExpectedNumberOfInstances;
280 }
281 else
282 {
283 c = series.Instances.length + '/' + series.ExpectedNumberOfInstances;
284 }
285
286 var s = ('<h3>{0}</h3>' +
287 '<p><em>Status: <strong>{1}</strong></em></p>{2}' +
288 '<span class="ui-li-count">{3}</span>').format
271 (series.MainDicomTags.SeriesDescription, 289 (series.MainDicomTags.SeriesDescription,
290 series.Status,
272 FormatMainDicomTags(series.MainDicomTags, [ 291 FormatMainDicomTags(series.MainDicomTags, [
273 "SeriesDescription", 292 "SeriesDescription",
274 "SeriesTime", 293 "SeriesTime",
275 "Manufacturer", 294 "Manufacturer",
276 "ImagesInAcquisition", 295 "ImagesInAcquisition",
277 "SeriesDate" 296 "SeriesDate"
278 ]), 297 ]),
279 series.Instances.length 298 c
280 ); 299 );
281 300
282 return CompleteFormatting(s, link, isReverse); 301 return CompleteFormatting(s, link, isReverse);
283 } 302 }
284 303
285 304
286 function FormatInstance(instance, link, isReverse) 305 function FormatInstance(instance, link, isReverse)
287 { 306 {
288 var s = ('<h3>Instance {0}</h3>{1}').format 307 var s = ('<h3>Instance {0}</h3>{1}').format
289 (instance.MainDicomTags.InstanceNumber, 308 (instance.IndexInSeries,
290 FormatMainDicomTags(instance.MainDicomTags, [ 309 FormatMainDicomTags(instance.MainDicomTags, [
291 "AcquisitionNumber", 310 "AcquisitionNumber",
292 "InstanceNumber", 311 "InstanceNumber",
293 "InstanceCreationDate", 312 "InstanceCreationDate",
294 "InstanceCreationTime" 313 "InstanceCreationTime"
388 if ($.mobile.pageData) { 407 if ($.mobile.pageData) {
389 GetSingleResource('series', $.mobile.pageData.uuid, function(series) { 408 GetSingleResource('series', $.mobile.pageData.uuid, function(series) {
390 GetSingleResource('studies', series.ParentStudy, function(study) { 409 GetSingleResource('studies', series.ParentStudy, function(study) {
391 GetSingleResource('patients', study.ParentPatient, function(patient) { 410 GetSingleResource('patients', study.ParentPatient, function(patient) {
392 GetMultipleResources('instances', series.Instances, function(instances) { 411 GetMultipleResources('instances', series.Instances, function(instances) {
393 SortOnDicomTag(instances, 'InstanceNumber', true, false); 412 Sort(instances, function(x) { return x.IndexInSeries; }, true, false);
394 413
395 $('#series-info li').remove(); 414 $('#series-info li').remove();
396 $('#series-info') 415 $('#series-info')
397 .append('<li data-role="list-divider">Patient</li>') 416 .append('<li data-role="list-divider">Patient</li>')
398 .append(FormatPatient(patient, '#patient?uuid=' + patient.ID, true)) 417 .append(FormatPatient(patient, '#patient?uuid=' + patient.ID, true))
620 639
621 $('#series-preview').live('click', function(e) { 640 $('#series-preview').live('click', function(e) {
622 if ($.mobile.pageData) { 641 if ($.mobile.pageData) {
623 GetSingleResource('series', $.mobile.pageData.uuid, function(series) { 642 GetSingleResource('series', $.mobile.pageData.uuid, function(series) {
624 GetMultipleResources('instances', series.Instances, function(instances) { 643 GetMultipleResources('instances', series.Instances, function(instances) {
625 SortOnDicomTag(instances, 'InstanceNumber', true, false); 644 Sort(instances, function(x) { return x.IndexInSeries; }, true, false);
626 645
627 var images = []; 646 var images = [];
628 for (var i = 0; i < instances.length; i++) { 647 for (var i = 0; i < instances.length; i++) {
629 images.push([ '/instances/' + instances[i].ID + '/preview', 648 images.push([ '/instances/' + instances[i].ID + '/preview',
630 '{0}/{1}'.format(i + 1, instances.length) ]) 649 '{0}/{1}'.format(i + 1, instances.length) ])