Commit d6839add0043034e36e7e1f995581388deadd439
1 parent
86398ac2
Exists in
master
and in
67 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 |