Commit f879b8b886f8f5ed5bd62b27e70c64b5901795cf

Authored by Paulo Henrique Junqueira Amorim
1 parent 107e6ffc

ENH: Added conversion between DICOM and Python encoding

invesalius/constants.py
... ... @@ -441,7 +441,8 @@ VTK_WARNING = 0
441 441  
442 442 [ID_DICOM_IMPORT, ID_PROJECT_OPEN, ID_PROJECT_SAVE_AS, ID_PROJECT_SAVE,
443 443 ID_PROJECT_CLOSE, ID_PROJECT_INFO, ID_SAVE_SCREENSHOT, ID_DICOM_LOAD_NET,
444   -ID_PRINT_SCREENSHOT, ID_EXIT, ID_IMPORT_OTHERS_FILES, ID_ANALYZE_IMPORT, ID_PREFERENCES] = [wx.NewId() for number in range(13)]
  444 +ID_PRINT_SCREENSHOT, ID_EXIT, ID_IMPORT_OTHERS_FILES, ID_ANALYZE_IMPORT, ID_PREFERENCES,
  445 +ID_DICOM_NETWORK] = [wx.NewId() for number in range(14)]
445 446  
446 447  
447 448 [ID_EDIT_UNDO, ID_EDIT_REDO, ID_EDIT_LIST] =\
... ... @@ -509,3 +510,22 @@ STYLE_LEVEL = {SLICE_STATE_EDITOR: 1,
509 510 RENDERING = 0
510 511 SURFACE_INTERPOLATION = 1
511 512 LANGUAGE = 2
  513 +
  514 +
  515 +#Correlaction extracted from pyDicom
  516 +DICOM_ENCODING_TO_PYTHON = {
  517 + 'None':'iso8859',
  518 + None:'iso8859',
  519 + '': 'iso8859',
  520 + 'ISO_IR 6': 'iso8859',
  521 + 'ISO_IR 100': 'latin_1',
  522 + 'ISO 2022 IR 87': 'iso2022_jp',
  523 + 'ISO 2022 IR 13': 'iso2022_jp',
  524 + 'ISO 2022 IR 149': 'euc_kr',
  525 + 'ISO_IR 192': 'UTF8',
  526 + 'GB18030': 'GB18030',
  527 + 'ISO_IR 126': 'iso_ir_126',
  528 + 'ISO_IR 127': 'iso_ir_127',
  529 + 'ISO_IR 138': 'iso_ir_138',
  530 + 'ISO_IR 144': 'iso_ir_144',
  531 + }
... ...
invesalius/reader/dicom.py
... ... @@ -22,7 +22,7 @@ import time
22 22 #import vtkgdcm
23 23 import sys
24 24 import utils
25   -
  25 +import constants as const
26 26 # In DICOM file format, if multiple values are present for the
27 27 # "Window Center" (Level) and "Window Width", both attributes
28 28 # shall have the same number of values and shall be considered as
... ... @@ -204,7 +204,7 @@ class Parser():
204 204 to the number of columns on the image.
205 205 Return "" if not defined.
206 206 """
207   - data = self.data_image[0x028][0x011]
  207 + data = self.data_image[str(0x028)][str(0x011)]
208 208 if (data):
209 209 return int(str(data))
210 210 return ""
... ... @@ -216,7 +216,7 @@ class Parser():
216 216 to the number of rows on the image.
217 217 Return "" if not defined.
218 218 """
219   - data = self.data_image[0x028][0x010]
  219 + data = self.data_image[str(0x028)][str(0x010)]
220 220 if (data):
221 221 return int(str(data))
222 222 return ""
... ... @@ -303,7 +303,7 @@ class Parser():
303 303 """
304 304 # TODO: internationalize data
305 305 try:
306   - date = self.data_image[0x0008][0x0022]
  306 + date = self.data_image[str(0x0008)][str(0x0022)]
307 307 except(KeyError):
308 308 return ""
309 309  
... ... @@ -318,7 +318,7 @@ class Parser():
318 318  
319 319 DICOM standard tag (0x0020, 0x0012) was used.
320 320 """
321   - data = self.data_image[0x0020][0x0012]
  321 + data = self.data_image[str(0x0020)][str(0x0012)]
322 322 if (data):
323 323 return int(str(data))
324 324 return ""
... ... @@ -329,7 +329,8 @@ class Parser():
329 329  
330 330 DICOM standard tag (0x0008, 0x0050) was used.
331 331 """
332   - data = self.data_image[0x008][0x050]
  332 + #data = self.data_image[0x008][0x050]
  333 + return ""
333 334 if (data):
334 335 try:
335 336 value = int(str(data))
... ... @@ -346,7 +347,7 @@ class Parser():
346 347  
347 348 DICOM standard tag (0x0008,0x0032) was used.
348 349 """
349   - data = self.data_image[0x008][0x032]
  350 + data = self.data_image[str(0x008)][str(0x032)]
350 351 if (data) and (data != ''):
351 352 return self.__format_time(str(data))
352 353 return ""
... ... @@ -381,7 +382,7 @@ class Parser():
381 382 DICOM standard tag (0x0028,0x1050) was used.
382 383 """
383 384 try:
384   - data = self.data_image[0x028][0x1050]
  385 + data = self.data_image[str(0x028)][str(0x1050)]
385 386 except(KeyError):
386 387 return "300"
387 388 if (data):
... ... @@ -413,7 +414,7 @@ class Parser():
413 414 DICOM standard tag (0x0028,0x1051) was used.
414 415 """
415 416 try:
416   - data = self.data_image[0x028][0x1051]
  417 + data = self.data_image[str(0x028)][str(0x1051)]
417 418 except(KeyError):
418 419 return "2000"
419 420  
... ... @@ -442,7 +443,7 @@ class Parser():
442 443 DICOM standard tag (0x0020, 0x0032) was used.
443 444 """
444 445 try:
445   - data = self.data_image[0x020][0x032]
  446 + data = self.data_image[str(0x020)][str(0x032)]
446 447 except(KeyError):
447 448 return ""
448 449 if (data):
... ... @@ -457,7 +458,7 @@ class Parser():
457 458  
458 459 DICOM standard tag (0x0020, 0x0032) was used.
459 460 """
460   - data = self.data_image[0x020][0x1041]
  461 + data = self.data_image[str(0x020)][str(0x1041)]
461 462 if (data):
462 463 return eval(data)
463 464 return ""
... ... @@ -470,7 +471,7 @@ class Parser():
470 471 DICOM standard tag (0x7fe0, 0x0010) was used.
471 472 """
472 473 try:
473   - data = self.data_image[0x7fe0][0x0010]
  474 + data = self.data_image[str(0x7fe0)][str(0x0010)]
474 475 except(KeyError):
475 476 return ""
476 477  
... ... @@ -488,7 +489,7 @@ class Parser():
488 489 DICOM standard tag (0x0020, 0x0011) was used.
489 490 """
490 491 try:
491   - data = self.data_image[0x020][0x011]
  492 + data = self.data_image[str(0x020)][str(0x011)]
492 493 except(KeyError):
493 494 return ""
494 495  
... ... @@ -508,7 +509,7 @@ class Parser():
508 509 DICOM standard tag (0x0028, 0x0030) was used.
509 510 """
510 511 try:
511   - data = self.data_image[0x0028][0x0030]
  512 + data = self.data_image[str(0x0028)][str(0x0030)]
512 513 except(KeyError):
513 514 return ""
514 515 if (data):
... ... @@ -523,7 +524,7 @@ class Parser():
523 524 DICOM standard tag (0x0010, 0x1030) was used.
524 525 """
525 526 try:
526   - data = self.data_image[0x0010][0x1030]
  527 + data = self.data_image[str(0x0010)][str(0x1030)]
527 528 except(KeyError):
528 529 return ""
529 530  
... ... @@ -539,7 +540,7 @@ class Parser():
539 540 DICOM standard tag (0x0010, 0x1030) was used.
540 541 """
541 542 try:
542   - data = self.data_image[0x010][0x1020]
  543 + data = self.data_image[str(0x010)][str(0x1020)]
543 544 except(KeyError):
544 545 return ""
545 546  
... ... @@ -554,7 +555,7 @@ class Parser():
554 555 DICOM standard tag (0x0010, 0x1040) was used.
555 556 """
556 557 try:
557   - data = self.data_image[0x010][0x1040]
  558 + data = self.data_image[str(0x010)][str(0x1040)]
558 559 except(KeyError):
559 560 return ""
560 561 if (data):
... ... @@ -569,7 +570,7 @@ class Parser():
569 570 DICOM standard tag (0x0010, 0x1080) was used.
570 571 """
571 572 try:
572   - data = self.data_image[0x010][0x1080]
  573 + data = self.data_image[str(0x010)][str(0x1080)]
573 574 except(KeyError):
574 575 return ""
575 576 if (data):
... ... @@ -586,7 +587,7 @@ class Parser():
586 587 DICOM standard tag (0x0010, 0x1081) was used.
587 588 """
588 589 try:
589   - data = self.data_image[0x010][0x1081]
  590 + data = self.data_image[str(0x010)][str(0x1081)]
590 591 except(KeyError):
591 592 return ""
592 593 if (data):
... ... @@ -602,7 +603,7 @@ class Parser():
602 603 DICOM standard tag (0x0010, 0x2150) was used.
603 604 """
604 605 try:
605   - data = self.data_image[0x0010][0x2150]
  606 + data = self.data_image[str(0x0010)][str(0x2150)]
606 607 except(KeyError):
607 608 return ""
608 609  
... ... @@ -619,7 +620,7 @@ class Parser():
619 620 DICOM standard tag (0x0010, 0x2152) was used.
620 621 """
621 622 try:
622   - data = self.data_image[0x0010][0x2152]
  623 + data = self.data_image[str(0x0010)][str(0x2152)]
623 624 except(KeyError):
624 625 return ""
625 626  
... ... @@ -635,7 +636,7 @@ class Parser():
635 636 DICOM standard tag (0x0010, 0x2154) was used.
636 637 """
637 638 try:
638   - data = self.data_image[0x0010][0x2154]
  639 + data = self.data_image[str(0x0010)][str(0x2154)]
639 640 except(KeyError):
640 641 return ""
641 642  
... ... @@ -652,7 +653,7 @@ class Parser():
652 653 DICOM standard tag (0x0010, 0x2297) was used.
653 654 """
654 655 try:
655   - data = self.data_image[0x0010][0x2297]
  656 + data = self.data_image[str(0x0010)][str(0x2297)]
656 657 except(KeyError):
657 658 return ""
658 659  
... ... @@ -669,7 +670,7 @@ class Parser():
669 670 DICOM standard tag (0x0010, 0x2298) was used.
670 671 """
671 672 try:
672   - data = self.data_image[0x0010][0x2298]
  673 + data = self.data_image[str(0x0010)][str(0x2298)]
673 674 except(KeyError):
674 675 return ""
675 676  
... ... @@ -686,7 +687,7 @@ class Parser():
686 687 DICOM standard tag (0x0010, 0x2299) was used.
687 688 """
688 689 try:
689   - data = self.data_image[0x0010][0x2299]
  690 + data = self.data_image[str(0x0010)][str(0x2299)]
690 691 except(KeyError):
691 692 return ""
692 693  
... ... @@ -703,7 +704,7 @@ class Parser():
703 704 DICOM standard tag (0x0010, 0x2000) was used.
704 705 """
705 706 try:
706   - data = self.data_image[0x0010][0x2000]
  707 + data = self.data_image[str(0x0010)][str(0x2000)]
707 708 except(KeyError):
708 709 return ""
709 710  
... ... @@ -720,7 +721,7 @@ class Parser():
720 721 DICOM standard tag (0x0008, 0x2110) was used.
721 722 """
722 723 try:
723   - data = self.data_image[0x0008][0x2110]
  724 + data = self.data_image[str(0x0008)][str(0x2110)]
724 725 except(KeyError):
725 726 return ""
726 727  
... ... @@ -738,7 +739,7 @@ class Parser():
738 739 DICOM standard tag (0x0008, 0x0090) was used.
739 740 """
740 741 try:
741   - data = self.data_image[0x0008][0x0090]
  742 + data = self.data_image[str(0x0008)][str(0x0090)]
742 743 except(KeyError):
743 744 return ""
744 745  
... ... @@ -757,7 +758,7 @@ class Parser():
757 758 DICOM standard tag (0x0008, 0x0092) was used.
758 759 """
759 760 try:
760   - data = self.data_image[0x0008][0x0092]
  761 + data = self.data_image[str(0x0008)][str(0x0092)]
761 762 except(KeyError):
762 763 return ""
763 764  
... ... @@ -773,7 +774,7 @@ class Parser():
773 774 DICOM standard tag (0x0008, 0x0094) was used.
774 775 """
775 776 try:
776   - data = self.data_image[0x0008][0x0094]
  777 + data = self.data_image[str(0x0008)][str(0x0094)]
777 778 except(KeyError):
778 779 return ""
779 780  
... ... @@ -789,7 +790,7 @@ class Parser():
789 790 DICOM standard tag (0x0018, 0x1030) was used.
790 791 """
791 792 try:
792   - data = self.data_image[0x0018][0x1030]
  793 + data = self.data_image[str(0x0018)][str(0x1030)]
793 794 except(KeyError):
794 795 return None
795 796  
... ... @@ -807,7 +808,7 @@ class Parser():
807 808 Critical DICOM tag (0x0008, 0x0008). Cannot be editted.
808 809 """
809 810 try:
810   - data = self.data_image[0x008][0x008]
  811 + data = self.data_image[str(0x008)][str(0x008)]
811 812 except(IndexError):
812 813 return []
813 814  
... ... @@ -827,7 +828,7 @@ class Parser():
827 828 Critical DICOM tag (0x0008, 0x0016). Cannot be edited.
828 829 """
829 830 try:
830   - data = self.data_image[0x0008][0x0016]
  831 + data = self.data_image[str(0x0008)][str(0x0016)]
831 832 except(KeyError):
832 833 return ""
833 834  
... ... @@ -844,7 +845,7 @@ class Parser():
844 845 Critical DICOM tag (0x0008, 0x0018). Cannot be edited.
845 846 """
846 847 try:
847   - data = self.data_image[0x0008][0x0018]
  848 + data = self.data_image[str(0x0008)][str(0x0018)]
848 849 except(KeyError):
849 850 return ""
850 851  
... ... @@ -861,7 +862,7 @@ class Parser():
861 862 Critical DICOM Tag (0x0020,0x000D). Cannot be edited.
862 863 """
863 864 try:
864   - data = self.data_image[0x0020][0x000D]
  865 + data = self.data_image[str(0x0020)][str(0x000D)]
865 866 except(KeyError):
866 867 return ""
867 868  
... ... @@ -881,7 +882,7 @@ class Parser():
881 882 Critical DICOM tag (0x0020,0x0037). Cannot be edited.
882 883 """
883 884 try:
884   - data = self.data_image[0x0020][0x0037]
  885 + data = self.data_image[str(0x0020)][str(0x0037)]
885 886 except(KeyError):
886 887 return [1.0, 0.0, 0.0, 0.0, 1.0, 0.0]
887 888  
... ... @@ -899,7 +900,7 @@ class Parser():
899 900 Critical DICOM tag (0x0020,0x0037). Cannot be edited.
900 901 """
901 902 try:
902   - data = self.data_image[0x0020][0x0037]
  903 + data = self.data_image[str(0x0020)][str(0x0037)]
903 904 except(KeyError):
904 905 return [0.0, 1.0, 0.0]
905 906  
... ... @@ -917,7 +918,7 @@ class Parser():
917 918 Critical DICOM tag (0x0020,0x0037). Cannot be edited.
918 919 """
919 920 try:
920   - data = self.data_image[0x0020][0x0037]
  921 + data = self.data_image[str(0x0020)][str(0x0037)]
921 922 except(KeyError):
922 923 return [1.0, 0.0, 0.0]
923 924  
... ... @@ -933,7 +934,7 @@ class Parser():
933 934 Critical DICOM tag (0x0020,0x0052). Cannot be edited.
934 935 """
935 936 try:
936   - data = self.data_image[0x0020][0x0052]
  937 + data = self.data_image[str(0x0020)][str(0x0052)]
937 938 except(KeyError):
938 939 return ""
939 940  
... ... @@ -1013,7 +1014,7 @@ class Parser():
1013 1014 DICOM standard tag (0x0018, 0x1030) was used.
1014 1015 """
1015 1016 try:
1016   - data = self.data_image[0x0018][0x1030]
  1017 + data = self.data_image[str(0x0018)][str(0x1030)]
1017 1018 if (data):
1018 1019 return data
1019 1020 except(KeyError):
... ... @@ -1037,7 +1038,7 @@ class Parser():
1037 1038 Critical DICOM tag (0x0018, 0x0020). Cannot be edited.
1038 1039 """
1039 1040 try:
1040   - data = self.data_image[0x0018][0x0020]
  1041 + data = self.data_image[str(0x0018)][str(0x0020)]
1041 1042 except(KeyError):
1042 1043 return ""
1043 1044  
... ... @@ -1053,7 +1054,7 @@ class Parser():
1053 1054 DICOM standard tag (0x0008, 0x0080) was used.
1054 1055 """
1055 1056 try:
1056   - data = self.data_image[0x0008][0x0080]
  1057 + data = self.data_image[str(0x0008)][str(0x0080)]
1057 1058 except(KeyError):
1058 1059 return ""
1059 1060  
... ... @@ -1071,7 +1072,7 @@ class Parser():
1071 1072 DICOM standard tag (0x0008, 0x0081) was used.
1072 1073 """
1073 1074 try:
1074   - data = self.data_image[0x0008][0x0081]
  1075 + data = self.data_image[str(0x0008)][str(0x0081)]
1075 1076 except(KeyError):
1076 1077 return ""
1077 1078  
... ... @@ -1088,7 +1089,7 @@ class Parser():
1088 1089 Critical DICOM tag (0x0020, 0x000D). Cannot be edited.
1089 1090 """
1090 1091 try:
1091   - data = self.data_image[0x0020][0x000D]
  1092 + data = self.data_image[str(0x0020)][str(0x000D)]
1092 1093 except(KeyError):
1093 1094 return ""
1094 1095  
... ... @@ -1104,7 +1105,7 @@ class Parser():
1104 1105 DICOM standard tag (0x0010,0x2180) was used.
1105 1106 """
1106 1107 try:
1107   - data = self.data_image[0x0010][0x2180]
  1108 + data = self.data_image[str(0x0010)][str(0x2180)]
1108 1109 except(KeyError):
1109 1110 return ""
1110 1111  
... ... @@ -1142,7 +1143,7 @@ class Parser():
1142 1143 #sf.SetFile(self.gdcm_reader.GetFile())
1143 1144 #res = sf.ToStringPair(tag)
1144 1145 try:
1145   - data = self.data_image[0x0028][0x0100]
  1146 + data = self.data_image[str(0x0028)][str(0x0100)]
1146 1147 except(KeyError):
1147 1148 return ""
1148 1149  
... ... @@ -1161,7 +1162,7 @@ class Parser():
1161 1162 """
1162 1163 # TODO: internationalize data
1163 1164 try:
1164   - data = self.data_image[0x0010][0x0030]
  1165 + data = self.data_image[str(0x0010)][str(0x0030)]
1165 1166 except(KeyError):
1166 1167 return ""
1167 1168  
... ... @@ -1178,7 +1179,7 @@ class Parser():
1178 1179 DICOM standard tag (0x0020,0x0010) was used.
1179 1180 """
1180 1181 try:
1181   - data = self.data_image[0x0020][0x0010]
  1182 + data = self.data_image[str(0x0020)][str(0x0010)]
1182 1183 except(KeyError):
1183 1184 return ""
1184 1185  
... ... @@ -1195,7 +1196,7 @@ class Parser():
1195 1196 DICOM standard tag (0x0018,0x1120) was used.
1196 1197 """
1197 1198 try:
1198   - data = self.data_image[0x0018][0x1120]
  1199 + data = self.data_image[str(0x0018)][str(0x1120)]
1199 1200 except(KeyError):
1200 1201 return 0.0
1201 1202  
... ... @@ -1214,7 +1215,7 @@ class Parser():
1214 1215 DICOM standard tag (0x0010,0x0040) was used.
1215 1216 """
1216 1217 try:
1217   - data = self.data_image[0x0010][0x0040]
  1218 + data = self.data_image[str(0x0010)][str(0x0040)]
1218 1219 except(KeyError):
1219 1220 return ""
1220 1221  
... ... @@ -1231,7 +1232,7 @@ class Parser():
1231 1232 DICOM standard tag (0x0010, 0x1010) was used.
1232 1233 """
1233 1234 try:
1234   - data = self.data_image[0x0010][0x1010]
  1235 + data = self.data_image[str(0x0010)][str(0x1010)]
1235 1236 except(KeyError):
1236 1237 return ""
1237 1238  
... ... @@ -1251,7 +1252,7 @@ class Parser():
1251 1252 DICOM standard tag (0x0010,0x0010) was used.
1252 1253 """
1253 1254 try:
1254   - data = self.data_image[0x0010][0x0010]
  1255 + data = self.data_image[str(0x0010)][str(0x0010)]
1255 1256 except(KeyError):
1256 1257 return ""
1257 1258  
... ... @@ -1271,7 +1272,7 @@ class Parser():
1271 1272 DICOM standard tag (0x0010,0x0020) was used.
1272 1273 """
1273 1274 try:
1274   - data = self.data_image[0x0010][0x0020]
  1275 + data = self.data_image[str(0x0010)][str(0x0020)]
1275 1276 except(KeyError):
1276 1277 return ""
1277 1278  
... ... @@ -1291,7 +1292,7 @@ class Parser():
1291 1292 DICOM standard tag (0x0018,0x1151) was used.
1292 1293 """
1293 1294 try:
1294   - data = self.data_image[0x0018][0x1151]
  1295 + data = self.data_image[str(0x0018)][str(0x1151)]
1295 1296 except(KeyError):
1296 1297 return ""
1297 1298  
... ... @@ -1308,7 +1309,7 @@ class Parser():
1308 1309 DICOM standard tag (0x0018, 0x1152) was used.
1309 1310 """
1310 1311 try:
1311   - data = self.data_image[0x0018][0x1152]
  1312 + data = self.data_image[str(0x0018)][str(0x1152)]
1312 1313 except(KeyError):
1313 1314 return ""
1314 1315  
... ... @@ -1325,7 +1326,7 @@ class Parser():
1325 1326 DICOM standard tag (0x0018,0x0060) was used.
1326 1327 """
1327 1328 try:
1328   - data = self.data_image[0x0018][0x0060]
  1329 + data = self.data_image[str(0x0018)][str(0x0060)]
1329 1330 except(KeyError):
1330 1331 return ""
1331 1332  
... ... @@ -1342,7 +1343,7 @@ class Parser():
1342 1343 DICOM standard tag (0x0018,0x0050) was used.
1343 1344 """
1344 1345 try:
1345   - data = self.data_image[0x0018][0x0050]
  1346 + data = self.data_image[str(0x0018)][str(0x0050)]
1346 1347 except(KeyError):
1347 1348 return 0
1348 1349 if (data):
... ... @@ -1360,7 +1361,7 @@ class Parser():
1360 1361 DICOM standard tag (0x0018,0x1210) was used.
1361 1362 """
1362 1363 try:
1363   - data = self.data_image[0x0018][0x1210]
  1364 + data = self.data_image[str(0x0018)][str(0x1210)]
1364 1365 except(KeyError):
1365 1366 return ""
1366 1367  
... ... @@ -1377,7 +1378,7 @@ class Parser():
1377 1378 DICOM standard tag (0x0008,0x0080) was used.
1378 1379 """
1379 1380 try:
1380   - data = self.data_image[0x0008][0x0080]
  1381 + data = self.data_image[str(0x0008)][str(0x0080)]
1381 1382 except(KeyError):
1382 1383 return ""
1383 1384  
... ... @@ -1394,7 +1395,7 @@ class Parser():
1394 1395 DICOM standard tag (0x0008, 0x1010) was used.
1395 1396 """
1396 1397 try:
1397   - data = self.data_image[0x0008][0x1010]
  1398 + data = self.data_image[str(0x0008)][str(0x1010)]
1398 1399 except(KeyError):
1399 1400 return ""
1400 1401  
... ... @@ -1411,7 +1412,7 @@ class Parser():
1411 1412 DICOM standard tag (0x0008,0x1090) was used.
1412 1413 """
1413 1414 try:
1414   - data = self.data_image[0x0008][0x1090]
  1415 + data = self.data_image[str(0x0008)][str(0x1090)]
1415 1416 except(KeyError):
1416 1417 return ""
1417 1418  
... ... @@ -1427,7 +1428,7 @@ class Parser():
1427 1428 DICOM standard tag (0x0008, 0x1010) was used.
1428 1429 """
1429 1430 try:
1430   - data = self.data_image[0x0008][0x1010]
  1431 + data = self.data_image[str(0x0008)][str(0x1010)]
1431 1432 except(KeyError):
1432 1433 return ""
1433 1434  
... ... @@ -1445,7 +1446,7 @@ class Parser():
1445 1446 DICOM standard tag (0x0008,0x0060) was used.
1446 1447 """
1447 1448 try:
1448   - data = self.data_image[0x0008][0x0060]
  1449 + data = self.data_image[str(0x0008)][str(0x0060)]
1449 1450 except(KeyError):
1450 1451 return ""
1451 1452  
... ... @@ -1462,7 +1463,7 @@ class Parser():
1462 1463 DICOM standard tag (0x0020,0x0013) was used.
1463 1464 """
1464 1465 try:
1465   - data = self.data_image[0x0020][0x0013]
  1466 + data = self.data_image[str(0x0020)][str(0x0013)]
1466 1467 except(KeyError):
1467 1468 return ""
1468 1469  
... ... @@ -1478,7 +1479,7 @@ class Parser():
1478 1479 DICOM standard tag (0x0008,0x1030) was used.
1479 1480 """
1480 1481 try:
1481   - data = self.data_image[0x0008][0x1030]
  1482 + data = self.data_image[str(0x0008)][str(0x1030)]
1482 1483 if (data):
1483 1484 encoding = self.GetEncoding()
1484 1485 return data.decode(encoding)
... ... @@ -1509,7 +1510,7 @@ class Parser():
1509 1510 DICOM standard tag (0x0008, 0x103E) was used.
1510 1511 """
1511 1512 try:
1512   - data = self.data_image[0x0008][0x103E]
  1513 + data = self.data_image[str(0x0008)][str(0x103E)]
1513 1514 if data == "None":
1514 1515 return _("unnamed")
1515 1516 if (data):
... ... @@ -1525,7 +1526,7 @@ class Parser():
1525 1526 DICOM standard tag (0x0008,0x0033) was used.
1526 1527 """
1527 1528 try:
1528   - data = self.data_image[0x0008][0x0033]
  1529 + data = self.data_image[str(0x0008)][str(0x0033)]
1529 1530 except(KeyError):
1530 1531 return ""
1531 1532  
... ... @@ -1539,7 +1540,7 @@ class Parser():
1539 1540 DICOM standard tag (0x0008,0x032) was used.
1540 1541 """
1541 1542 try:
1542   - data = self.data_image[0x0008][0x0032]
  1543 + data = self.data_image[str(0x0008)][str(0x0032)]
1543 1544 except(KeyError):
1544 1545 return ""
1545 1546  
... ... @@ -1553,7 +1554,7 @@ class Parser():
1553 1554 DICOM standard tag (0x0020, 0x0011) was used.
1554 1555 """
1555 1556 try:
1556   - data = self.data_image[0x0020][0x0011]
  1557 + data = self.data_image[str(0x0020)][str(0x0011)]
1557 1558 except(KeyError):
1558 1559 return ""
1559 1560  
... ... @@ -1567,20 +1568,11 @@ class Parser():
1567 1568 DICOM standard tag (0x0008, 0x0005) was used.
1568 1569 """
1569 1570 try:
1570   - encoding = self.data_image[0x0008][0x0005]
  1571 + encoding_value = self.data_image[str(0x0008)][str(0x0005)]
  1572 + return const.DICOM_ENCODING_TO_PYTHON[encoding_value]
1571 1573 except(KeyError):
1572 1574 return 'ISO_IR_100'
1573 1575  
1574   - if encoding is None or encoding == "None" or not encoding.strip():
1575   - return 'ISO_IR 100'
1576   - else:
1577   - #Problem with 0051 anonymized
1578   - if (encoding.split(":"))[0] == "Loaded":
1579   - return 'ISO_IR 100'
1580   - else:
1581   - return encoding
1582   - return 'ISO_IR 100'
1583   -
1584 1576  
1585 1577 class DicomWriter:
1586 1578  
... ...
invesalius/reader/dicom_reader.py
... ... @@ -100,7 +100,6 @@ class LoadDicom:
100 100 def run(self):
101 101  
102 102 grouper = self.grouper
103   -
104 103 reader = gdcm.ImageReader()
105 104 reader.SetFileName(self.filepath)
106 105 if (reader.Read()):
... ... @@ -120,11 +119,13 @@ class LoadDicom:
120 119 tag = gdcm.Tag(0x0008, 0x0005)
121 120 ds = reader.GetFile().GetDataSet()
122 121 if ds.FindDataElement(tag):
123   - encoding = str(ds.GetDataElement(tag).GetValue())
124   - if encoding is None or encoding == "None" or encoding.startswith("Loaded"):
  122 + encoding_value = str(ds.GetDataElement(tag).GetValue())
  123 +
  124 + if encoding_value.startswith("Loaded"):
125 125 encoding = "ISO_IR 100"
126   - else:
127   - encoding = "ISO_IR_100"
  126 + else:
  127 + encoding = const.DICOM_ENCODING_TO_PYTHON[encoding_value]
  128 +
128 129 # Iterate through the Header
129 130 iterator = header.GetDES().begin()
130 131 while (not iterator.equal(header.GetDES().end())):
... ... @@ -134,8 +135,8 @@ class LoadDicom:
134 135 data = stf.ToStringPair(tag)
135 136 stag = tag.PrintAsPipeSeparatedString()
136 137  
137   - group = tag.GetGroup()
138   - field = tag.GetElement()
  138 + group = str(tag.GetGroup())
  139 + field = str(tag.GetElement())
139 140  
140 141 tag_labels[stag] = data[0]
141 142  
... ... @@ -158,8 +159,8 @@ class LoadDicom:
158 159 data = stf.ToStringPair(tag)
159 160 stag = tag.PrintAsPipeSeparatedString()
160 161  
161   - group = tag.GetGroup()
162   - field = tag.GetElement()
  162 + group = str(tag.GetGroup())
  163 + field = str(tag.GetElement())
163 164  
164 165 tag_labels[stag] = data[0]
165 166  
... ... @@ -179,9 +180,9 @@ class LoadDicom:
179 180 rvtk.Update()
180 181  
181 182 try:
182   - data = data_dict[0x028][0x1050]
  183 + data = data_dict[str(0x028)][str(0x1050)]
183 184 level = [float(value) for value in data.split('\\')][0]
184   - data = data_dict[0x028][0x1051]
  185 + data = data_dict[str(0x028)][str(0x1051)]
185 186 window = [float(value) for value in data.split('\\')][0]
186 187 except(KeyError):
187 188 level = 300.0
... ... @@ -229,7 +230,7 @@ class LoadDicom:
229 230 #---------- Verify is DICOMDir -------------------------------
230 231 is_dicom_dir = 1
231 232 try:
232   - if (data_dict[0x002][0x002] != "1.2.840.10008.1.3.10"): #DICOMDIR
  233 + if (data_dict[str(0x002)][str(0x002)] != "1.2.840.10008.1.3.10"): #DICOMDIR
233 234 is_dicom_dir = 0
234 235 except(KeyError):
235 236 is_dicom_dir = 0
... ... @@ -244,13 +245,16 @@ class LoadDicom:
244 245 grouper.AddFile(dcm)
245 246  
246 247 #self.l.release()
247   -
248   - #========== used in test =======================================
249   - #main_dict = dict(
250   - # data = dict_file,
251   - # labels = tag_labels)
252   -
253   - #plistlib.writePlist(main_dict, ".//teste.plist")"""
  248 +
  249 +
  250 + #========== used in test =======================================
  251 + #print dict_file
  252 + #main_dict = dict(
  253 + # data = dict_file,
  254 + # labels = tag_labels)
  255 + #print main_dict
  256 + #print "\n"
  257 + #plistlib.writePlist(main_dict, ".//teste.plist")
254 258  
255 259  
256 260 def yGetDicomGroups(directory, recursive=True, gui=True):
... ... @@ -338,7 +342,7 @@ class ProgressDicomReader:
338 342 fow.SetFileName(log_path)
339 343 ow = vtk.vtkOutputWindow()
340 344 ow.SetInstance(fow)
341   -
  345 +
342 346 y = yGetDicomGroups(path, recursive)
343 347 for value_progress in y:
344 348 if not self.running:
... ... @@ -354,3 +358,4 @@ class ProgressDicomReader:
354 358 self.UpdateLoadFileProgress(None)
355 359 self.stoped = False
356 360  
  361 +
... ...