Mercurial > hg > orthanc-tests
comparison Tests/Tests.py @ 10:5f73008bb873
tests
author | Sebastien Jodogne <s.jodogne@gmail.com> |
---|---|
date | Thu, 18 Jun 2015 13:38:32 +0200 |
parents | f8d781d1d267 |
children | c660a64ce2dd |
comparison
equal
deleted
inserted
replaced
9:3670535fbd4b | 10:5f73008bb873 |
---|---|
359 a = subprocess.check_output([ 'dcm2xml', '/tmp/DICOMDIR' ]) | 359 a = subprocess.check_output([ 'dcm2xml', '/tmp/DICOMDIR' ]) |
360 self.assertTrue(re.search('1.3.46.670589.11.17521.5.0.3124.2008081908590448738', a) != None) | 360 self.assertTrue(re.search('1.3.46.670589.11.17521.5.0.3124.2008081908590448738', a) != None) |
361 self.assertTrue(re.search('1.3.46.670589.11.17521.5.0.3124.2008081909113806560', a) != None) | 361 self.assertTrue(re.search('1.3.46.670589.11.17521.5.0.3124.2008081909113806560', a) != None) |
362 | 362 |
363 os.remove('/tmp/DICOMDIR') | 363 os.remove('/tmp/DICOMDIR') |
364 | |
365 | |
366 def test_protection(self): | |
367 UploadInstance(_REMOTE, 'Knee/T1/IM-0001-0001.dcm') | |
368 UploadInstance(_REMOTE, 'Brainix/Flair/IM-0001-0001.dcm') | |
369 self.assertEqual(2, len(DoGet(_REMOTE, '/patients'))) | |
370 a = DoGet(_REMOTE, '/patients')[0] | |
371 b = DoGet(_REMOTE, '/patients')[1] | |
372 self.assertEqual(0, DoGet(_REMOTE, '/patients/%s/protected' % a)) | |
373 DoPut(_REMOTE, '/patients/%s/protected' % a, '0', 'text/plain') | |
374 self.assertEqual(0, DoGet(_REMOTE, '/patients/%s/protected' % a)) | |
375 DoPut(_REMOTE, '/patients/%s/protected' % a, '1', 'text/plain') | |
376 self.assertEqual(1, DoGet(_REMOTE, '/patients/%s/protected' % a)) | |
377 DoPut(_REMOTE, '/patients/%s/protected' % a, '0', 'text/plain') | |
378 self.assertEqual(0, DoGet(_REMOTE, '/patients/%s/protected' % a)) | |
379 | |
380 | |
381 def test_private_tags(self): | |
382 i = UploadInstance(_REMOTE, 'PrivateTags.dcm')['ID'] | |
383 | |
384 dicom = DoGet(_REMOTE, '/instances/%s/file' % i) | |
385 self.assertEqual('1a7c56cb02d6e742cc9c856a8ac182e3', ComputeMD5(dicom)) | |
386 | |
387 s = '/instances/%s/content/' % i | |
388 | |
389 self.assertEqual('LOGIQBOOK', DoGet(_REMOTE, s + '0008-1010').strip()) | |
390 self.assertRaises(Exception, lambda: DoGet(_REMOTE, s + '0008-1011')) | |
391 | |
392 self.assertEqual('Abdomen', DoGet(_REMOTE, s + '7fe1-1001/0/7fe1-1008/0/7fe1-1057').strip()) | |
393 self.assertEqual('cla_3c', DoGet(_REMOTE, s + '7fe1-1001/0/7fe1-1008/8/7fe1-1057').strip()) | |
394 | |
395 | |
396 def test_sop_instance_uid(self): | |
397 UploadInstance(_REMOTE, 'Brainix/Epi/IM-0001-0001.dcm') | |
398 UploadInstance(_REMOTE, 'Brainix/Flair/IM-0001-0001.dcm') | |
399 UploadInstance(_REMOTE, 'Knee/T1/IM-0001-0001.dcm') | |
400 UploadInstance(_REMOTE, 'Knee/T2/IM-0001-0001.dcm') | |
401 | |
402 for i in DoGet(_REMOTE, '/instances'): | |
403 aid = DoGet(_REMOTE, '/instances/%s' % i)['MainDicomTags']['SOPInstanceUID'] | |
404 self.assertEqual(aid, DoGet(_REMOTE, '/instances/%s/content/0008-0018' % i).replace(chr(0), '')) | |
405 | |
406 | |
407 def test_raw_tags_mdn(self): | |
408 # Bug reported by Cyril Paulus | |
409 i = UploadInstance(_REMOTE, 'PrivateMDNTags.dcm')['ID'] | |
410 self.assertAlmostEqual(0.000027, DoGet(_REMOTE, '/instances/%s/content/7053-1000' % i)) | |
411 | |
412 | |
413 def test_modify_instance(self): | |
414 i = UploadInstance(_REMOTE, 'PrivateTags.dcm')['ID'] | |
415 modified = DoPost(_REMOTE, '/instances/%s/modify' % i, | |
416 json.dumps({ | |
417 "Replace" : { | |
418 "PatientName" : "hello", | |
419 #"PatientID" : "world" | |
420 }, | |
421 "Remove" : [ "StationName" ], | |
422 "RemovePrivateTags" : None | |
423 }), | |
424 'application/json') | |
425 j = DoPost(_REMOTE, '/instances', modified, 'application/dicom')['ID'] | |
426 | |
427 self.assertNotEqual('hello', DoGet(_REMOTE, '/instances/%s/content/0010-0010' % i).strip()) | |
428 #self.assertNotEqual('world', DoGet(_REMOTE, '/instances/%s/content/0010-0020' % i).strip()) | |
429 self.assertEqual('LOGIQBOOK', DoGet(_REMOTE, '/instances/%s/content/0008-1010' % i).strip()) | |
430 DoGet(_REMOTE, '/instances/%s/content/6003-1010' % i) # Some private tag | |
431 | |
432 self.assertEqual('hello', DoGet(_REMOTE, '/instances/%s/content/0010-0010' % j).strip()) | |
433 #self.assertEqual('world', DoGet(_REMOTE, '/instances/%s/content/0010-0020' % j).strip()) | |
434 self.assertRaises(Exception, lambda: DoGet(_REMOTE, '/instances/%s/content/0008-1010' % j)) | |
435 self.assertRaises(Exception, lambda: DoGet(_REMOTE, '/instances/%s/content/6003-1010' % j)) | |
436 | |
437 | |
438 def test_modify_series(self): | |
439 # Upload 4 images from the same series | |
440 for i in range(4): | |
441 UploadInstance(_REMOTE, 'Brainix/Epi/IM-0001-000%d.dcm' % (i + 1)) | |
442 | |
443 origSeries = DoGet(_REMOTE, '/series')[0] | |
444 newSeries = DoPost(_REMOTE, '/series/%s/modify' % origSeries, | |
445 '{"Replace":{"PatientName":"Jodogne"}}', | |
446 'application/json')['ID'] | |
447 | |
448 self.assertEqual(origSeries, DoGet(_REMOTE, '/series/%s' % newSeries)['ModifiedFrom']) | |
449 instances = DoGet(_REMOTE, '/series/%s' % newSeries)['Instances'] | |
450 self.assertEqual(4, len(instances)) | |
451 for i in instances: | |
452 j = DoGet(_REMOTE, '/instances/%s' % i)['ModifiedFrom'] | |
453 self.assertEqual(newSeries, DoGet(_REMOTE, '/instances/%s' % i)['ParentSeries']) | |
454 self.assertEqual(origSeries, DoGet(_REMOTE, '/instances/%s' % j)['ParentSeries']) | |
455 | |
456 self.assertEqual('Jodogne', DoGet(_REMOTE, '/instances/%s/content/0010-0010' % i).strip()) | |
457 self.assertNotEqual('Jodogne', DoGet(_REMOTE, '/instances/%s/content/0010-0010' % j).strip()) | |
458 | |
459 | |
460 def test_modify_study(self): | |
461 # Upload 4 images from the 2 series of the same study | |
462 for i in range(4): | |
463 UploadInstance(_REMOTE, 'Brainix/Flair/IM-0001-000%d.dcm' % (i + 1)) | |
464 UploadInstance(_REMOTE, 'Brainix/Epi/IM-0001-000%d.dcm' % (i + 1)) | |
465 | |
466 origStudy = DoGet(_REMOTE, '/studies')[0] | |
467 newStudy = DoPost(_REMOTE, '/studies/%s/modify' % origStudy, | |
468 '{"Replace":{"PatientName":"Jodogne"}}', | |
469 'application/json')['ID'] | |
470 | |
471 self.assertEqual(origStudy, DoGet(_REMOTE, '/studies/%s' % newStudy)['ModifiedFrom']) | |
472 series = DoGet(_REMOTE, '/studies/%s' % newStudy)['Series'] | |
473 self.assertEqual(2, len(series)) | |
474 for s in series: | |
475 ss = DoGet(_REMOTE, '/series/%s' % s)['ModifiedFrom'] | |
476 self.assertEqual(newStudy, DoGet(_REMOTE, '/series/%s' % s)['ParentStudy']) | |
477 self.assertEqual(origStudy, DoGet(_REMOTE, '/series/%s' % ss)['ParentStudy']) | |
478 | |
479 instances = DoGet(_REMOTE, '/series/%s' % s)['Instances'] | |
480 for i in instances: | |
481 j = DoGet(_REMOTE, '/instances/%s' % i)['ModifiedFrom'] | |
482 self.assertEqual(s, DoGet(_REMOTE, '/instances/%s' % i)['ParentSeries']) | |
483 self.assertEqual(ss, DoGet(_REMOTE, '/instances/%s' % j)['ParentSeries']) | |
484 | |
485 self.assertEqual('Jodogne', DoGet(_REMOTE, '/instances/%s/content/0010-0010' % i).strip()) | |
486 self.assertNotEqual('Jodogne', DoGet(_REMOTE, '/instances/%s/content/0010-0010' % j).strip()) | |
487 | |
488 | |
489 def test_anonymize_series(self): | |
490 # Upload 4 images from the same series | |
491 for i in range(4): | |
492 UploadInstance(_REMOTE, 'Brainix/Epi/IM-0001-000%d.dcm' % (i + 1)) | |
493 | |
494 origSeries = DoGet(_REMOTE, '/series')[0] | |
495 newSeries = DoPost(_REMOTE, '/series/%s/anonymize' % origSeries, | |
496 '{}', | |
497 'application/json')['ID'] | |
498 | |
499 self.assertEqual(origSeries, DoGet(_REMOTE, '/series/%s' % newSeries)['AnonymizedFrom']) | |
500 instances = DoGet(_REMOTE, '/series/%s' % newSeries)['Instances'] | |
501 self.assertEqual(4, len(instances)) | |
502 for i in instances: | |
503 j = DoGet(_REMOTE, '/instances/%s' % i)['AnonymizedFrom'] | |
504 self.assertEqual(newSeries, DoGet(_REMOTE, '/instances/%s' % i)['ParentSeries']) | |
505 self.assertEqual(origSeries, DoGet(_REMOTE, '/instances/%s' % j)['ParentSeries']) | |
506 | |
507 DoGet(_REMOTE, '/instances/%s/content/0008-1010' % j) | |
508 self.assertRaises(Exception, lambda: DoGet(_REMOTE, '/instances/%s/content/0008-1010' % i)) | |
509 | |
510 | |
511 def test_anonymize_study(self): | |
512 # Upload 4 images from the 2 series of the same study | |
513 for i in range(4): | |
514 UploadInstance(_REMOTE, 'Brainix/Flair/IM-0001-000%d.dcm' % (i + 1)) | |
515 UploadInstance(_REMOTE, 'Brainix/Epi/IM-0001-000%d.dcm' % (i + 1)) | |
516 | |
517 origStudy = DoGet(_REMOTE, '/studies')[0] | |
518 newStudy = DoPost(_REMOTE,'/studies/%s/anonymize' % origStudy, | |
519 '{"Replace":{"PatientName":"Jodogne"}}', | |
520 'application/json')['ID'] | |
521 | |
522 self.assertEqual(origStudy, DoGet(_REMOTE, '/studies/%s' % newStudy)['AnonymizedFrom']) | |
523 series = DoGet(_REMOTE, '/studies/%s' % newStudy)['Series'] | |
524 self.assertEqual(2, len(series)) | |
525 for s in series: | |
526 ss = DoGet(_REMOTE, '/series/%s' % s)['AnonymizedFrom'] | |
527 self.assertEqual(newStudy, DoGet(_REMOTE, '/series/%s' % s)['ParentStudy']) | |
528 self.assertEqual(origStudy, DoGet(_REMOTE, '/series/%s' % ss)['ParentStudy']) | |
529 | |
530 instances = DoGet(_REMOTE, '/series/%s' % s)['Instances'] | |
531 for i in instances: | |
532 j = DoGet(_REMOTE, '/instances/%s' % i)['AnonymizedFrom'] | |
533 self.assertEqual(s, DoGet(_REMOTE, '/instances/%s' % i)['ParentSeries']) | |
534 self.assertEqual(ss, DoGet(_REMOTE, '/instances/%s' % j)['ParentSeries']) | |
535 | |
536 self.assertEqual('Jodogne', DoGet(_REMOTE, '/instances/%s/content/0010-0010' % i).strip()) | |
537 self.assertNotEqual('Jodogne', DoGet(_REMOTE, '/instances/%s/content/0010-0010' % j).strip()) |