Commit d6839add0043034e36e7e1f995581388deadd439
1 parent
86398ac2
Exists in
master
and in
5 other branches
FIX: Fixed problem open promed-0022
Showing
2 changed files
with
275 additions
and
56 deletions
Show diff stats
invesalius/reader/dicom.py
@@ -296,7 +296,11 @@ class Parser(): | @@ -296,7 +296,11 @@ class Parser(): | ||
296 | DICOM standard tag (0x0008,0x0022) was used. | 296 | DICOM standard tag (0x0008,0x0022) was used. |
297 | """ | 297 | """ |
298 | # TODO: internationalize data | 298 | # TODO: internationalize data |
299 | - date = self.data_image['0008']['0022'] | 299 | + try: |
300 | + date = self.data_image['0008']['0022'] | ||
301 | + except(KeyError): | ||
302 | + return "" | ||
303 | + | ||
300 | if (date) and (date != ''): | 304 | if (date) and (date != ''): |
301 | return self.__format_date(str(date)) | 305 | return self.__format_date(str(date)) |
302 | return "" | 306 | return "" |
@@ -459,7 +463,11 @@ class Parser(): | @@ -459,7 +463,11 @@ class Parser(): | ||
459 | 463 | ||
460 | DICOM standard tag (0x7fe0, 0x0010) was used. | 464 | DICOM standard tag (0x7fe0, 0x0010) was used. |
461 | """ | 465 | """ |
462 | - data = self.data_image['7fe0']['0010'] | 466 | + try: |
467 | + data = self.data_image['7fe0']['0010'] | ||
468 | + except(KeyError): | ||
469 | + return "" | ||
470 | + | ||
463 | if (data): | 471 | if (data): |
464 | return int(data.split(':')[1]) | 472 | return int(data.split(':')[1]) |
465 | return "" | 473 | return "" |
@@ -473,7 +481,11 @@ class Parser(): | @@ -473,7 +481,11 @@ class Parser(): | ||
473 | 481 | ||
474 | DICOM standard tag (0x0020, 0x0011) was used. | 482 | DICOM standard tag (0x0020, 0x0011) was used. |
475 | """ | 483 | """ |
476 | - data = self.data_image['0020']['0011'] | 484 | + try: |
485 | + data = self.data_image['0020']['0011'] | ||
486 | + except(KeyError): | ||
487 | + return "" | ||
488 | + | ||
477 | if (data) and (data != '""') and (data != "None"): | 489 | if (data) and (data != '""') and (data != "None"): |
478 | return int(data) | 490 | return int(data) |
479 | return "" | 491 | return "" |
@@ -489,7 +501,10 @@ class Parser(): | @@ -489,7 +501,10 @@ class Parser(): | ||
489 | 501 | ||
490 | DICOM standard tag (0x0028, 0x0030) was used. | 502 | DICOM standard tag (0x0028, 0x0030) was used. |
491 | """ | 503 | """ |
492 | - data = self.data_image['0028']['0030'] | 504 | + try: |
505 | + data = self.data_image['0028']['0030'] | ||
506 | + except(KeyError): | ||
507 | + return "" | ||
493 | if (data): | 508 | if (data): |
494 | return [eval(value) for value in data.split('\\')] | 509 | return [eval(value) for value in data.split('\\')] |
495 | return "" | 510 | return "" |
@@ -501,7 +516,11 @@ class Parser(): | @@ -501,7 +516,11 @@ class Parser(): | ||
501 | 516 | ||
502 | DICOM standard tag (0x0010, 0x1030) was used. | 517 | DICOM standard tag (0x0010, 0x1030) was used. |
503 | """ | 518 | """ |
504 | - data = self.data_image['0010']['1030'] | 519 | + try: |
520 | + data = self.data_image['0010']['1030'] | ||
521 | + except(KeyError): | ||
522 | + return "" | ||
523 | + | ||
505 | if (data): | 524 | if (data): |
506 | return float(data) | 525 | return float(data) |
507 | return "" | 526 | return "" |
@@ -513,7 +532,11 @@ class Parser(): | @@ -513,7 +532,11 @@ class Parser(): | ||
513 | 532 | ||
514 | DICOM standard tag (0x0010, 0x1030) was used. | 533 | DICOM standard tag (0x0010, 0x1030) was used. |
515 | """ | 534 | """ |
516 | - data = self.data_image['0010']['1020'] | 535 | + try: |
536 | + data = self.data_image['0010']['1020'] | ||
537 | + except(KeyError): | ||
538 | + return "" | ||
539 | + | ||
517 | if (data): | 540 | if (data): |
518 | return float(data) | 541 | return float(data) |
519 | return "" | 542 | return "" |
@@ -524,7 +547,10 @@ class Parser(): | @@ -524,7 +547,10 @@ class Parser(): | ||
524 | 547 | ||
525 | DICOM standard tag (0x0010, 0x1040) was used. | 548 | DICOM standard tag (0x0010, 0x1040) was used. |
526 | """ | 549 | """ |
527 | - data = self.data_image['0010']['1040'] | 550 | + try: |
551 | + data = self.data_image['0010']['1040'] | ||
552 | + except(KeyError): | ||
553 | + return "" | ||
528 | if (data): | 554 | if (data): |
529 | return data | 555 | return data |
530 | return "" | 556 | return "" |
@@ -536,7 +562,10 @@ class Parser(): | @@ -536,7 +562,10 @@ class Parser(): | ||
536 | 562 | ||
537 | DICOM standard tag (0x0010, 0x1080) was used. | 563 | DICOM standard tag (0x0010, 0x1080) was used. |
538 | """ | 564 | """ |
539 | - data = self.data_image['0010']['1080'] | 565 | + try: |
566 | + data = self.data_image['0010']['1080'] | ||
567 | + except(KeyError): | ||
568 | + return "" | ||
540 | if (data): | 569 | if (data): |
541 | return data | 570 | return data |
542 | return "" | 571 | return "" |
@@ -550,7 +579,10 @@ class Parser(): | @@ -550,7 +579,10 @@ class Parser(): | ||
550 | 579 | ||
551 | DICOM standard tag (0x0010, 0x1081) was used. | 580 | DICOM standard tag (0x0010, 0x1081) was used. |
552 | """ | 581 | """ |
553 | - data = self.data_image['0010']['1081'] | 582 | + try: |
583 | + data = self.data_image['0010']['1081'] | ||
584 | + except(KeyError): | ||
585 | + return "" | ||
554 | if (data): | 586 | if (data): |
555 | return data | 587 | return data |
556 | return "" | 588 | return "" |
@@ -563,7 +595,11 @@ class Parser(): | @@ -563,7 +595,11 @@ class Parser(): | ||
563 | 595 | ||
564 | DICOM standard tag (0x0010, 0x2150) was used. | 596 | DICOM standard tag (0x0010, 0x2150) was used. |
565 | """ | 597 | """ |
566 | - data = self.data_image['0010']['2150'] | 598 | + try: |
599 | + data = self.data_image['0010']['2150'] | ||
600 | + except(KeyError): | ||
601 | + return "" | ||
602 | + | ||
567 | if (data): | 603 | if (data): |
568 | return data | 604 | return data |
569 | return "" | 605 | return "" |
@@ -576,7 +612,11 @@ class Parser(): | @@ -576,7 +612,11 @@ class Parser(): | ||
576 | 612 | ||
577 | DICOM standard tag (0x0010, 0x2152) was used. | 613 | DICOM standard tag (0x0010, 0x2152) was used. |
578 | """ | 614 | """ |
579 | - data = self.data_image['0010']['2152'] | 615 | + try: |
616 | + data = self.data_image['0010']['2152'] | ||
617 | + except(KeyError): | ||
618 | + return "" | ||
619 | + | ||
580 | if (data): | 620 | if (data): |
581 | return data | 621 | return data |
582 | return "" | 622 | return "" |
@@ -588,7 +628,11 @@ class Parser(): | @@ -588,7 +628,11 @@ class Parser(): | ||
588 | 628 | ||
589 | DICOM standard tag (0x0010, 0x2154) was used. | 629 | DICOM standard tag (0x0010, 0x2154) was used. |
590 | """ | 630 | """ |
591 | - data = self.data_image['0010']['2154'] | 631 | + try: |
632 | + data = self.data_image['0010']['2154'] | ||
633 | + except(KeyError): | ||
634 | + return "" | ||
635 | + | ||
592 | if (data): | 636 | if (data): |
593 | return data | 637 | return data |
594 | return "" | 638 | return "" |
@@ -601,7 +645,11 @@ class Parser(): | @@ -601,7 +645,11 @@ class Parser(): | ||
601 | 645 | ||
602 | DICOM standard tag (0x0010, 0x2297) was used. | 646 | DICOM standard tag (0x0010, 0x2297) was used. |
603 | """ | 647 | """ |
604 | - data = self.data_image['0010']['2297'] | 648 | + try: |
649 | + data = self.data_image['0010']['2297'] | ||
650 | + except(KeyError): | ||
651 | + return "" | ||
652 | + | ||
605 | if (data): | 653 | if (data): |
606 | return data | 654 | return data |
607 | return "" | 655 | return "" |
@@ -614,7 +662,11 @@ class Parser(): | @@ -614,7 +662,11 @@ class Parser(): | ||
614 | 662 | ||
615 | DICOM standard tag (0x0010, 0x2298) was used. | 663 | DICOM standard tag (0x0010, 0x2298) was used. |
616 | """ | 664 | """ |
617 | - data = self.data_image['0010']['2298'] | 665 | + try: |
666 | + data = self.data_image['0010']['2298'] | ||
667 | + except(KeyError): | ||
668 | + return "" | ||
669 | + | ||
618 | if (data): | 670 | if (data): |
619 | return data | 671 | return data |
620 | return "" | 672 | return "" |
@@ -627,7 +679,11 @@ class Parser(): | @@ -627,7 +679,11 @@ class Parser(): | ||
627 | 679 | ||
628 | DICOM standard tag (0x0010, 0x2299) was used. | 680 | DICOM standard tag (0x0010, 0x2299) was used. |
629 | """ | 681 | """ |
630 | - data = self.data_image['0010']['2299'] | 682 | + try: |
683 | + data = self.data_image['0010']['2299'] | ||
684 | + except(KeyError): | ||
685 | + return "" | ||
686 | + | ||
631 | if (data): | 687 | if (data): |
632 | return data | 688 | return data |
633 | return "" | 689 | return "" |
@@ -640,7 +696,11 @@ class Parser(): | @@ -640,7 +696,11 @@ class Parser(): | ||
640 | 696 | ||
641 | DICOM standard tag (0x0010, 0x2000) was used. | 697 | DICOM standard tag (0x0010, 0x2000) was used. |
642 | """ | 698 | """ |
643 | - data = self.data_image['0010']['2000'] | 699 | + try: |
700 | + data = self.data_image['0010']['2000'] | ||
701 | + except(KeyError): | ||
702 | + return "" | ||
703 | + | ||
644 | if (data): | 704 | if (data): |
645 | return data | 705 | return data |
646 | return "" | 706 | return "" |
@@ -653,7 +713,11 @@ class Parser(): | @@ -653,7 +713,11 @@ class Parser(): | ||
653 | 713 | ||
654 | DICOM standard tag (0x0008, 0x2110) was used. | 714 | DICOM standard tag (0x0008, 0x2110) was used. |
655 | """ | 715 | """ |
656 | - data = self.data_image['0008']['2110'] | 716 | + try: |
717 | + data = self.data_image['0008']['2110'] | ||
718 | + except(KeyError): | ||
719 | + return "" | ||
720 | + | ||
657 | if (data): | 721 | if (data): |
658 | return data | 722 | return data |
659 | return "" | 723 | return "" |
@@ -667,7 +731,11 @@ class Parser(): | @@ -667,7 +731,11 @@ class Parser(): | ||
667 | 731 | ||
668 | DICOM standard tag (0x0008, 0x0090) was used. | 732 | DICOM standard tag (0x0008, 0x0090) was used. |
669 | """ | 733 | """ |
670 | - data = self.data_image['0008']['0090'] | 734 | + try: |
735 | + data = self.data_image['0008']['0090'] | ||
736 | + except(KeyError): | ||
737 | + return "" | ||
738 | + | ||
671 | if data == "None": | 739 | if data == "None": |
672 | return "" | 740 | return "" |
673 | if (data): | 741 | if (data): |
@@ -682,7 +750,11 @@ class Parser(): | @@ -682,7 +750,11 @@ class Parser(): | ||
682 | 750 | ||
683 | DICOM standard tag (0x0008, 0x0092) was used. | 751 | DICOM standard tag (0x0008, 0x0092) was used. |
684 | """ | 752 | """ |
685 | - data = self.data_image['0008']['0092'] | 753 | + try: |
754 | + data = self.data_image['0008']['0092'] | ||
755 | + except(KeyError): | ||
756 | + return "" | ||
757 | + | ||
686 | if (data): | 758 | if (data): |
687 | return data | 759 | return data |
688 | return "" | 760 | return "" |
@@ -694,7 +766,11 @@ class Parser(): | @@ -694,7 +766,11 @@ class Parser(): | ||
694 | 766 | ||
695 | DICOM standard tag (0x0008, 0x0094) was used. | 767 | DICOM standard tag (0x0008, 0x0094) was used. |
696 | """ | 768 | """ |
697 | - data = self.data_image['0008']['0094'] | 769 | + try: |
770 | + data = self.data_image['0008']['0094'] | ||
771 | + except(KeyError): | ||
772 | + return "" | ||
773 | + | ||
698 | if (data): | 774 | if (data): |
699 | return data | 775 | return data |
700 | return "" | 776 | return "" |
@@ -706,7 +782,11 @@ class Parser(): | @@ -706,7 +782,11 @@ class Parser(): | ||
706 | 782 | ||
707 | DICOM standard tag (0x0018, 0x1030) was used. | 783 | DICOM standard tag (0x0018, 0x1030) was used. |
708 | """ | 784 | """ |
709 | - data = self.data_image['0018']['1030'] | 785 | + try: |
786 | + data = self.data_image['0018']['1030'] | ||
787 | + except(KeyError): | ||
788 | + return None | ||
789 | + | ||
710 | if (data): | 790 | if (data): |
711 | return data | 791 | return data |
712 | return None | 792 | return None |
@@ -740,7 +820,11 @@ class Parser(): | @@ -740,7 +820,11 @@ class Parser(): | ||
740 | 820 | ||
741 | Critical DICOM tag (0x0008, 0x0016). Cannot be edited. | 821 | Critical DICOM tag (0x0008, 0x0016). Cannot be edited. |
742 | """ | 822 | """ |
743 | - data = self.data_image['0008']['0016'] | 823 | + try: |
824 | + data = self.data_image['0008']['0016'] | ||
825 | + except(KeyError): | ||
826 | + return "" | ||
827 | + | ||
744 | if (data): | 828 | if (data): |
745 | return data | 829 | return data |
746 | return "" | 830 | return "" |
@@ -753,7 +837,11 @@ class Parser(): | @@ -753,7 +837,11 @@ class Parser(): | ||
753 | 837 | ||
754 | Critical DICOM tag (0x0008, 0x0018). Cannot be edited. | 838 | Critical DICOM tag (0x0008, 0x0018). Cannot be edited. |
755 | """ | 839 | """ |
756 | - data = self.data_image['0008']['0018'] | 840 | + try: |
841 | + data = self.data_image['0008']['0018'] | ||
842 | + except(KeyError): | ||
843 | + return "" | ||
844 | + | ||
757 | if (data): | 845 | if (data): |
758 | return data | 846 | return data |
759 | return "" | 847 | return "" |
@@ -764,7 +852,11 @@ class Parser(): | @@ -764,7 +852,11 @@ class Parser(): | ||
764 | 852 | ||
765 | DICOM tag (0x0008, 0x1030). Cannot be edited. | 853 | DICOM tag (0x0008, 0x1030). Cannot be edited. |
766 | """ | 854 | """ |
767 | - data = self.data_image['0008']['1030'] | 855 | + try: |
856 | + data = self.data_image['0008']['1030'] | ||
857 | + except(KeyError): | ||
858 | + return "" | ||
859 | + | ||
768 | if (data): | 860 | if (data): |
769 | return data | 861 | return data |
770 | return "" | 862 | return "" |
@@ -777,7 +869,11 @@ class Parser(): | @@ -777,7 +869,11 @@ class Parser(): | ||
777 | 869 | ||
778 | Critical DICOM Tag (0x0020,0x000D). Cannot be edited. | 870 | Critical DICOM Tag (0x0020,0x000D). Cannot be edited. |
779 | """ | 871 | """ |
780 | - data = self.data_image['0020']['000D'] | 872 | + try: |
873 | + data = self.data_image['0020']['000D'] | ||
874 | + except(KeyError): | ||
875 | + return "" | ||
876 | + | ||
781 | if (data): | 877 | if (data): |
782 | return data | 878 | return data |
783 | return "" | 879 | return "" |
@@ -793,7 +889,11 @@ class Parser(): | @@ -793,7 +889,11 @@ class Parser(): | ||
793 | 889 | ||
794 | Critical DICOM tag (0x0020,0x0037). Cannot be edited. | 890 | Critical DICOM tag (0x0020,0x0037). Cannot be edited. |
795 | """ | 891 | """ |
796 | - data = self.data_image['0020']['0037'] | 892 | + try: |
893 | + data = self.data_image['0020']['0037'] | ||
894 | + except(KeyError): | ||
895 | + return [1.0, 0.0, 0.0, 0.0, 1.0, 0.0] | ||
896 | + | ||
797 | if (data): | 897 | if (data): |
798 | return [float(value) for value in data.split('\\')] | 898 | return [float(value) for value in data.split('\\')] |
799 | return [1.0, 0.0, 0.0, 0.0, 1.0, 0.0] | 899 | return [1.0, 0.0, 0.0, 0.0, 1.0, 0.0] |
@@ -807,7 +907,11 @@ class Parser(): | @@ -807,7 +907,11 @@ class Parser(): | ||
807 | 907 | ||
808 | Critical DICOM tag (0x0020,0x0037). Cannot be edited. | 908 | Critical DICOM tag (0x0020,0x0037). Cannot be edited. |
809 | """ | 909 | """ |
810 | - data = self.data_image['0020']['0037'] | 910 | + try: |
911 | + data = self.data_image['0020']['0037'] | ||
912 | + except(KeyError): | ||
913 | + return [0.0, 1.0, 0.0] | ||
914 | + | ||
811 | if (data): | 915 | if (data): |
812 | return [float(value) for value in data.split('\\')[3:6]] | 916 | return [float(value) for value in data.split('\\')[3:6]] |
813 | return [0.0, 1.0, 0.0] | 917 | return [0.0, 1.0, 0.0] |
@@ -821,7 +925,11 @@ class Parser(): | @@ -821,7 +925,11 @@ class Parser(): | ||
821 | 925 | ||
822 | Critical DICOM tag (0x0020,0x0037). Cannot be edited. | 926 | Critical DICOM tag (0x0020,0x0037). Cannot be edited. |
823 | """ | 927 | """ |
824 | - data = self.data_image['0020']['0037'] | 928 | + try: |
929 | + data = self.data_image['0020']['0037'] | ||
930 | + except(KeyError): | ||
931 | + return [1.0, 0.0, 0.0] | ||
932 | + | ||
825 | if (data): | 933 | if (data): |
826 | return [float(value) for value in data.split('\\')[0:3]] | 934 | return [float(value) for value in data.split('\\')[0:3]] |
827 | return [1.0, 0.0, 0.0] | 935 | return [1.0, 0.0, 0.0] |
@@ -833,7 +941,11 @@ class Parser(): | @@ -833,7 +941,11 @@ class Parser(): | ||
833 | 941 | ||
834 | Critical DICOM tag (0x0020,0x0052). Cannot be edited. | 942 | Critical DICOM tag (0x0020,0x0052). Cannot be edited. |
835 | """ | 943 | """ |
836 | - data = self.data_image['0020']['0052'] | 944 | + try: |
945 | + data = self.data_image['0020']['0052'] | ||
946 | + except(KeyError): | ||
947 | + return "" | ||
948 | + | ||
837 | if (data): | 949 | if (data): |
838 | return data | 950 | return data |
839 | return "" | 951 | return "" |
@@ -933,7 +1045,11 @@ class Parser(): | @@ -933,7 +1045,11 @@ class Parser(): | ||
933 | 1045 | ||
934 | Critical DICOM tag (0x0018, 0x0020). Cannot be edited. | 1046 | Critical DICOM tag (0x0018, 0x0020). Cannot be edited. |
935 | """ | 1047 | """ |
936 | - data = self.data_image['0018']['0020'] | 1048 | + try: |
1049 | + data = self.data_image['0018']['0020'] | ||
1050 | + except(KeyError): | ||
1051 | + return "" | ||
1052 | + | ||
937 | if (data): | 1053 | if (data): |
938 | return data | 1054 | return data |
939 | return "" | 1055 | return "" |
@@ -945,7 +1061,11 @@ class Parser(): | @@ -945,7 +1061,11 @@ class Parser(): | ||
945 | 1061 | ||
946 | DICOM standard tag (0x0008, 0x0080) was used. | 1062 | DICOM standard tag (0x0008, 0x0080) was used. |
947 | """ | 1063 | """ |
948 | - data = self.data_image['0008']['0080'] | 1064 | + try: |
1065 | + data = self.data_image['0008']['0080'] | ||
1066 | + except(KeyError): | ||
1067 | + return "" | ||
1068 | + | ||
949 | if (data): | 1069 | if (data): |
950 | return data | 1070 | return data |
951 | return "" | 1071 | return "" |
@@ -959,7 +1079,11 @@ class Parser(): | @@ -959,7 +1079,11 @@ class Parser(): | ||
959 | 1079 | ||
960 | DICOM standard tag (0x0008, 0x0081) was used. | 1080 | DICOM standard tag (0x0008, 0x0081) was used. |
961 | """ | 1081 | """ |
962 | - data = self.data_image['0008']['0081'] | 1082 | + try: |
1083 | + data = self.data_image['0008']['0081'] | ||
1084 | + except(KeyError): | ||
1085 | + return "" | ||
1086 | + | ||
963 | if (data): | 1087 | if (data): |
964 | return data | 1088 | return data |
965 | return "" | 1089 | return "" |
@@ -972,7 +1096,11 @@ class Parser(): | @@ -972,7 +1096,11 @@ class Parser(): | ||
972 | 1096 | ||
973 | Critical DICOM tag (0x0020, 0x000D). Cannot be edited. | 1097 | Critical DICOM tag (0x0020, 0x000D). Cannot be edited. |
974 | """ | 1098 | """ |
975 | - data = self.data_image['0020']['000D'] | 1099 | + try: |
1100 | + data = self.data_image['0020']['000D'] | ||
1101 | + except(KeyError): | ||
1102 | + return "" | ||
1103 | + | ||
976 | if (data): | 1104 | if (data): |
977 | return data | 1105 | return data |
978 | return "" | 1106 | return "" |
@@ -984,7 +1112,11 @@ class Parser(): | @@ -984,7 +1112,11 @@ class Parser(): | ||
984 | 1112 | ||
985 | DICOM standard tag (0x0010,0x2180) was used. | 1113 | DICOM standard tag (0x0010,0x2180) was used. |
986 | """ | 1114 | """ |
987 | - data = self.data_image['0010']['2180'] | 1115 | + try: |
1116 | + data = self.data_image['0010']['2180'] | ||
1117 | + except(KeyError): | ||
1118 | + return "" | ||
1119 | + | ||
988 | if (data): | 1120 | if (data): |
989 | return data | 1121 | return data |
990 | return "" | 1122 | return "" |
@@ -1018,7 +1150,11 @@ class Parser(): | @@ -1018,7 +1150,11 @@ class Parser(): | ||
1018 | #sf = gdcm.StringFilter() | 1150 | #sf = gdcm.StringFilter() |
1019 | #sf.SetFile(self.gdcm_reader.GetFile()) | 1151 | #sf.SetFile(self.gdcm_reader.GetFile()) |
1020 | #res = sf.ToStringPair(tag) | 1152 | #res = sf.ToStringPair(tag) |
1021 | - data = self.data_image['0028']['0100'] | 1153 | + try: |
1154 | + data = self.data_image['0028']['0100'] | ||
1155 | + except(KeyError): | ||
1156 | + return "" | ||
1157 | + | ||
1022 | if (data): | 1158 | if (data): |
1023 | return int(data) | 1159 | return int(data) |
1024 | return "" | 1160 | return "" |
@@ -1033,7 +1169,11 @@ class Parser(): | @@ -1033,7 +1169,11 @@ class Parser(): | ||
1033 | DICOM standard tag (0x0010,0x0030) was used. | 1169 | DICOM standard tag (0x0010,0x0030) was used. |
1034 | """ | 1170 | """ |
1035 | # TODO: internationalize data | 1171 | # TODO: internationalize data |
1036 | - data = self.data_image['0010']['0030'] | 1172 | + try: |
1173 | + data = self.data_image['0010']['0030'] | ||
1174 | + except(KeyError): | ||
1175 | + return "" | ||
1176 | + | ||
1037 | if (data) and (data != 'None'): | 1177 | if (data) and (data != 'None'): |
1038 | return self.__format_date(str(data)) | 1178 | return self.__format_date(str(data)) |
1039 | return "" | 1179 | return "" |
@@ -1046,7 +1186,11 @@ class Parser(): | @@ -1046,7 +1186,11 @@ class Parser(): | ||
1046 | 1186 | ||
1047 | DICOM standard tag (0x0020,0x0010) was used. | 1187 | DICOM standard tag (0x0020,0x0010) was used. |
1048 | """ | 1188 | """ |
1049 | - data = self.data_image['0020']['0010'] | 1189 | + try: |
1190 | + data = self.data_image['0020']['0010'] | ||
1191 | + except(KeyError): | ||
1192 | + return "" | ||
1193 | + | ||
1050 | if (data): | 1194 | if (data): |
1051 | return str(data) | 1195 | return str(data) |
1052 | return "" | 1196 | return "" |
@@ -1059,7 +1203,11 @@ class Parser(): | @@ -1059,7 +1203,11 @@ class Parser(): | ||
1059 | 1203 | ||
1060 | DICOM standard tag (0x0018,0x1120) was used. | 1204 | DICOM standard tag (0x0018,0x1120) was used. |
1061 | """ | 1205 | """ |
1062 | - data = self.data_image['0018']['1120'] | 1206 | + try: |
1207 | + data = self.data_image['0018']['1120'] | ||
1208 | + except(KeyError): | ||
1209 | + return 0.0 | ||
1210 | + | ||
1063 | if (data): | 1211 | if (data): |
1064 | return float(str(data)) | 1212 | return float(str(data)) |
1065 | return 0.0 | 1213 | return 0.0 |
@@ -1074,7 +1222,11 @@ class Parser(): | @@ -1074,7 +1222,11 @@ class Parser(): | ||
1074 | 1222 | ||
1075 | DICOM standard tag (0x0010,0x0040) was used. | 1223 | DICOM standard tag (0x0010,0x0040) was used. |
1076 | """ | 1224 | """ |
1077 | - data = self.data_image['0010']['0040'] | 1225 | + try: |
1226 | + data = self.data_image['0010']['0040'] | ||
1227 | + except(KeyError): | ||
1228 | + return "" | ||
1229 | + | ||
1078 | if (data): | 1230 | if (data): |
1079 | return str(data) | 1231 | return str(data) |
1080 | return "" | 1232 | return "" |
@@ -1087,7 +1239,11 @@ class Parser(): | @@ -1087,7 +1239,11 @@ class Parser(): | ||
1087 | 1239 | ||
1088 | DICOM standard tag (0x0010, 0x1010) was used. | 1240 | DICOM standard tag (0x0010, 0x1010) was used. |
1089 | """ | 1241 | """ |
1090 | - data = self.data_image['0010']['0010'] | 1242 | + try: |
1243 | + data = self.data_image['0010']['0010'] | ||
1244 | + except(KeyError): | ||
1245 | + return "" | ||
1246 | + | ||
1091 | if (data): | 1247 | if (data): |
1092 | age = (data.split('Y')[0]) | 1248 | age = (data.split('Y')[0]) |
1093 | try: | 1249 | try: |
@@ -1103,7 +1259,11 @@ class Parser(): | @@ -1103,7 +1259,11 @@ class Parser(): | ||
1103 | 1259 | ||
1104 | DICOM standard tag (0x0010,0x0010) was used. | 1260 | DICOM standard tag (0x0010,0x0010) was used. |
1105 | """ | 1261 | """ |
1106 | - data = self.data_image['0010']['0010'] | 1262 | + try: |
1263 | + data = self.data_image['0010']['0010'] | ||
1264 | + except(KeyError): | ||
1265 | + return "" | ||
1266 | + | ||
1107 | if (data): | 1267 | if (data): |
1108 | name = data.strip() | 1268 | name = data.strip() |
1109 | encoding = self.GetEncoding() | 1269 | encoding = self.GetEncoding() |
@@ -1119,7 +1279,11 @@ class Parser(): | @@ -1119,7 +1279,11 @@ class Parser(): | ||
1119 | 1279 | ||
1120 | DICOM standard tag (0x0010,0x0020) was used. | 1280 | DICOM standard tag (0x0010,0x0020) was used. |
1121 | """ | 1281 | """ |
1122 | - data = self.data_image['0010']['0020'] | 1282 | + try: |
1283 | + data = self.data_image['0010']['0020'] | ||
1284 | + except(KeyError): | ||
1285 | + return "" | ||
1286 | + | ||
1123 | if (data): | 1287 | if (data): |
1124 | encoding = self.GetEncoding() | 1288 | encoding = self.GetEncoding() |
1125 | # Returns a unicode decoded in the own dicom encoding | 1289 | # Returns a unicode decoded in the own dicom encoding |
@@ -1135,7 +1299,11 @@ class Parser(): | @@ -1135,7 +1299,11 @@ class Parser(): | ||
1135 | 1299 | ||
1136 | DICOM standard tag (0x0018,0x1151) was used. | 1300 | DICOM standard tag (0x0018,0x1151) was used. |
1137 | """ | 1301 | """ |
1138 | - data = self.data_image['0018']['1151'] | 1302 | + try: |
1303 | + data = self.data_image['0018']['1151'] | ||
1304 | + except(KeyError): | ||
1305 | + return "" | ||
1306 | + | ||
1139 | if (data): | 1307 | if (data): |
1140 | return data | 1308 | return data |
1141 | return "" | 1309 | return "" |
@@ -1148,7 +1316,11 @@ class Parser(): | @@ -1148,7 +1316,11 @@ class Parser(): | ||
1148 | 1316 | ||
1149 | DICOM standard tag (0x0018, 0x1152) was used. | 1317 | DICOM standard tag (0x0018, 0x1152) was used. |
1150 | """ | 1318 | """ |
1151 | - data = self.data_image['0018']['1152'] | 1319 | + try: |
1320 | + data = self.data_image['0018']['1152'] | ||
1321 | + except(KeyError): | ||
1322 | + return "" | ||
1323 | + | ||
1152 | if (data): | 1324 | if (data): |
1153 | return float(data) | 1325 | return float(data) |
1154 | return "" | 1326 | return "" |
@@ -1161,7 +1333,11 @@ class Parser(): | @@ -1161,7 +1333,11 @@ class Parser(): | ||
1161 | 1333 | ||
1162 | DICOM standard tag (0x0018,0x0060) was used. | 1334 | DICOM standard tag (0x0018,0x0060) was used. |
1163 | """ | 1335 | """ |
1164 | - data = self.data_image['0018']['0060'] | 1336 | + try: |
1337 | + data = self.data_image['0018']['0060'] | ||
1338 | + except(KeyError): | ||
1339 | + return "" | ||
1340 | + | ||
1165 | if (data): | 1341 | if (data): |
1166 | return float(data) | 1342 | return float(data) |
1167 | return "" | 1343 | return "" |
@@ -1174,7 +1350,10 @@ class Parser(): | @@ -1174,7 +1350,10 @@ class Parser(): | ||
1174 | 1350 | ||
1175 | DICOM standard tag (0x0018,0x0050) was used. | 1351 | DICOM standard tag (0x0018,0x0050) was used. |
1176 | """ | 1352 | """ |
1177 | - data = self.data_image['0018']['0050'] | 1353 | + try: |
1354 | + data = self.data_image['0018']['0050'] | ||
1355 | + except(KeyError): | ||
1356 | + return 0 | ||
1178 | if (data): | 1357 | if (data): |
1179 | return float(data) | 1358 | return float(data) |
1180 | return 0 | 1359 | return 0 |
@@ -1189,7 +1368,11 @@ class Parser(): | @@ -1189,7 +1368,11 @@ class Parser(): | ||
1189 | 1368 | ||
1190 | DICOM standard tag (0x0018,0x1210) was used. | 1369 | DICOM standard tag (0x0018,0x1210) was used. |
1191 | """ | 1370 | """ |
1192 | - data = self.data_image['0018']['1210'] | 1371 | + try: |
1372 | + data = self.data_image['0018']['1210'] | ||
1373 | + except(KeyError): | ||
1374 | + return "" | ||
1375 | + | ||
1193 | if (data): | 1376 | if (data): |
1194 | return data | 1377 | return data |
1195 | return "" | 1378 | return "" |
@@ -1202,7 +1385,11 @@ class Parser(): | @@ -1202,7 +1385,11 @@ class Parser(): | ||
1202 | 1385 | ||
1203 | DICOM standard tag (0x0008,0x0080) was used. | 1386 | DICOM standard tag (0x0008,0x0080) was used. |
1204 | """ | 1387 | """ |
1205 | - data = self.data_image['0008']['0080'] | 1388 | + try: |
1389 | + data = self.data_image['0008']['0080'] | ||
1390 | + except(KeyError): | ||
1391 | + return "" | ||
1392 | + | ||
1206 | if (data): | 1393 | if (data): |
1207 | return data | 1394 | return data |
1208 | return "" | 1395 | return "" |
@@ -1215,7 +1402,11 @@ class Parser(): | @@ -1215,7 +1402,11 @@ class Parser(): | ||
1215 | 1402 | ||
1216 | DICOM standard tag (0x0008, 0x1010) was used. | 1403 | DICOM standard tag (0x0008, 0x1010) was used. |
1217 | """ | 1404 | """ |
1218 | - data = self.data_image['0008']['1010'] | 1405 | + try: |
1406 | + data = self.data_image['0008']['1010'] | ||
1407 | + except(KeyError): | ||
1408 | + return "" | ||
1409 | + | ||
1219 | if (data): | 1410 | if (data): |
1220 | return data | 1411 | return data |
1221 | return "" | 1412 | return "" |
@@ -1228,7 +1419,11 @@ class Parser(): | @@ -1228,7 +1419,11 @@ class Parser(): | ||
1228 | 1419 | ||
1229 | DICOM standard tag (0x0008,0x1090) was used. | 1420 | DICOM standard tag (0x0008,0x1090) was used. |
1230 | """ | 1421 | """ |
1231 | - data = self.data_image['0008']['1090'] | 1422 | + try: |
1423 | + data = self.data_image['0008']['1090'] | ||
1424 | + except(KeyError): | ||
1425 | + return "" | ||
1426 | + | ||
1232 | if (data): | 1427 | if (data): |
1233 | return data | 1428 | return data |
1234 | return "" | 1429 | return "" |
@@ -1240,7 +1435,11 @@ class Parser(): | @@ -1240,7 +1435,11 @@ class Parser(): | ||
1240 | 1435 | ||
1241 | DICOM standard tag (0x0008, 0x1010) was used. | 1436 | DICOM standard tag (0x0008, 0x1010) was used. |
1242 | """ | 1437 | """ |
1243 | - data = self.data_image['0008']['1010'] | 1438 | + try: |
1439 | + data = self.data_image['0008']['1010'] | ||
1440 | + except(KeyError): | ||
1441 | + return "" | ||
1442 | + | ||
1244 | if (data): | 1443 | if (data): |
1245 | return data | 1444 | return data |
1246 | return "" | 1445 | return "" |
@@ -1254,7 +1453,11 @@ class Parser(): | @@ -1254,7 +1453,11 @@ class Parser(): | ||
1254 | 1453 | ||
1255 | DICOM standard tag (0x0008,0x0060) was used. | 1454 | DICOM standard tag (0x0008,0x0060) was used. |
1256 | """ | 1455 | """ |
1257 | - data = self.data_image['0008']['0060'] | 1456 | + try: |
1457 | + data = self.data_image['0008']['0060'] | ||
1458 | + except(KeyError): | ||
1459 | + return "" | ||
1460 | + | ||
1258 | if (data): | 1461 | if (data): |
1259 | return data | 1462 | return data |
1260 | return "" | 1463 | return "" |
@@ -1342,7 +1545,11 @@ class Parser(): | @@ -1342,7 +1545,11 @@ class Parser(): | ||
1342 | Return the acquisition time. | 1545 | Return the acquisition time. |
1343 | DICOM standard tag (0x0008,0x032) was used. | 1546 | DICOM standard tag (0x0008,0x032) was used. |
1344 | """ | 1547 | """ |
1345 | - data = self.data_image['0008']['0032'] | 1548 | + try: |
1549 | + data = self.data_image['0008']['0032'] | ||
1550 | + except(KeyError): | ||
1551 | + return "" | ||
1552 | + | ||
1346 | if (data): | 1553 | if (data): |
1347 | return self.__format_time(data) | 1554 | return self.__format_time(data) |
1348 | return "" | 1555 | return "" |
@@ -1352,7 +1559,11 @@ class Parser(): | @@ -1352,7 +1559,11 @@ class Parser(): | ||
1352 | Return the serie number | 1559 | Return the serie number |
1353 | DICOM standard tag (0x0020, 0x0011) was used. | 1560 | DICOM standard tag (0x0020, 0x0011) was used. |
1354 | """ | 1561 | """ |
1355 | - data = self.data_image['0020']['0011'] | 1562 | + try: |
1563 | + data = self.data_image['0020']['0011'] | ||
1564 | + except(KeyError): | ||
1565 | + return "" | ||
1566 | + | ||
1356 | if (data): | 1567 | if (data): |
1357 | return data | 1568 | return data |
1358 | return "" | 1569 | return "" |
invesalius/reader/dicom_reader.py
@@ -259,8 +259,16 @@ def GetDicomGroups(directory, recursive=True, gui=True): | @@ -259,8 +259,16 @@ def GetDicomGroups(directory, recursive=True, gui=True): | ||
259 | # ------------------------------------------------------------- | 259 | # ------------------------------------------------------------- |
260 | filepath = os.path.abspath(filename) | 260 | filepath = os.path.abspath(filename) |
261 | dict_file[filepath] = data_dict | 261 | dict_file[filepath] = data_dict |
262 | - | ||
263 | - if (data_dict['0002']['0002'] != "1.2.840.10008.1.3.10"): #DICOMDIR | 262 | + |
263 | + #---------- Verify is DICOMDir ------------------------------- | ||
264 | + is_dicom_dir = 1 | ||
265 | + try: | ||
266 | + if (data_dict['0002']['0002'] != "1.2.840.10008.1.3.10"): #DICOMDIR | ||
267 | + is_dicom_dir = 0 | ||
268 | + except(KeyError): | ||
269 | + is_dicom_dir = 0 | ||
270 | + | ||
271 | + if not(is_dicom_dir): | ||
264 | parser = dicom.Parser() | 272 | parser = dicom.Parser() |
265 | parser.SetDataImage(dict_file[filepath], filepath) | 273 | parser.SetDataImage(dict_file[filepath], filepath) |
266 | 274 |