Commit f879b8b886f8f5ed5bd62b27e70c64b5901795cf
1 parent
107e6ffc
Exists in
master
and in
67 other branches
ENH: Added conversion between DICOM and Python encoding
Showing
3 changed files
with
118 additions
and
101 deletions
Show diff stats
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 | + | ... | ... |