Commit d6839add0043034e36e7e1f995581388deadd439

Authored by Paulo Henrique Junqueira Amorim
1 parent 86398ac2

FIX: Fixed problem open promed-0022

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