Commit 3ec3d69b2db78a540c6b22dbec6c33fdc60f9fec
1 parent
1702e940
Exists in
master
and in
68 other branches
ENH: Add new's DICOM's tags
Showing
1 changed file
with
66 additions
and
28 deletions
Show diff stats
invesalius/reader/dicom.py
| ... | ... | @@ -124,6 +124,20 @@ class Parser(): |
| 124 | 124 | return int(str(data)) |
| 125 | 125 | return None |
| 126 | 126 | |
| 127 | + def GetAccessionNumber(self): | |
| 128 | + """ | |
| 129 | + Return integer related to acession number | |
| 130 | + | |
| 131 | + DICOM standard tag (0x0008, 0x0050) was used. | |
| 132 | + """ | |
| 133 | + tag = gdcm.Tag(0x0008, 0x0050) | |
| 134 | + ds = self.gdcm_reader.GetFile().GetDataSet() | |
| 135 | + if ds.FindDataElement(tag): | |
| 136 | + data = ds.GetDataElement(tag).GetValue() | |
| 137 | + if (data): | |
| 138 | + return int(str(data)) | |
| 139 | + return None | |
| 140 | + | |
| 127 | 141 | def GetAcquisitionTime(self): |
| 128 | 142 | """ |
| 129 | 143 | Return string containing the acquisition time using the |
| ... | ... | @@ -582,16 +596,16 @@ class Parser(): |
| 582 | 596 | return data |
| 583 | 597 | return None |
| 584 | 598 | |
| 585 | - def GetPhysicianName(self): | |
| 599 | + | |
| 600 | + def GetPhysicianReferringName(self): | |
| 586 | 601 | """ |
| 587 | - Return string containing patient's primary (reffering) | |
| 588 | - physician. | |
| 602 | + Return string containing physician | |
| 603 | + of the patient. | |
| 589 | 604 | Return None if field is not defined. |
| 590 | 605 | |
| 591 | 606 | DICOM standard tag (0x0008, 0x0090) was used. |
| 592 | 607 | """ |
| 593 | - #tag = gdcm.Tag(0x0008, 0x0090) | |
| 594 | - tag = gdcm.Tag(0x0008,0x1060) | |
| 608 | + tag = gdcm.Tag(0x0008,0x0090) | |
| 595 | 609 | ds = self.gdcm_reader.GetFile().GetDataSet() |
| 596 | 610 | if ds.FindDataElement(tag): |
| 597 | 611 | data = str(ds.GetDataElement(tag).GetValue()) |
| ... | ... | @@ -599,7 +613,8 @@ class Parser(): |
| 599 | 613 | return data |
| 600 | 614 | return "" |
| 601 | 615 | |
| 602 | - def GetPhysicianAddress(self): | |
| 616 | + | |
| 617 | + def GetPhysicianReferringAddress(self): | |
| 603 | 618 | """ |
| 604 | 619 | Return string containing physician's address. |
| 605 | 620 | Return None if field is not defined. |
| ... | ... | @@ -614,7 +629,7 @@ class Parser(): |
| 614 | 629 | return data |
| 615 | 630 | return None |
| 616 | 631 | |
| 617 | - def GetPhysicianTelephone(self): | |
| 632 | + def GetPhysicianeReferringTelephone(self): | |
| 618 | 633 | """ |
| 619 | 634 | Return string containing physician's telephone. |
| 620 | 635 | Return None if field is not defined. |
| ... | ... | @@ -679,6 +694,20 @@ class Parser(): |
| 679 | 694 | return data |
| 680 | 695 | return None |
| 681 | 696 | |
| 697 | + def GetSeriesDescription(self): | |
| 698 | + """ | |
| 699 | + Return string containing Series description. | |
| 700 | + | |
| 701 | + DICOM tag (0x0008, 0x1030). Cannot be edited. | |
| 702 | + """ | |
| 703 | + tag = gdcm.Tag(0x0008, 0x1030) | |
| 704 | + ds = self.gdcm_reader.GetFile().GetDataSet() | |
| 705 | + if ds.FindDataElement(tag): | |
| 706 | + data = str(ds.GetDataElement(tag).GetValue()) | |
| 707 | + if (data): | |
| 708 | + return data | |
| 709 | + return None | |
| 710 | + | |
| 682 | 711 | def GetStudyInstanceUID(self): |
| 683 | 712 | """ |
| 684 | 713 | Return string containing Unique Identifier of the |
| ... | ... | @@ -1655,8 +1684,13 @@ class Patient(object): |
| 1655 | 1684 | |
| 1656 | 1685 | def SetParser(self, parser): |
| 1657 | 1686 | self.name = parser.GetPatientName() |
| 1658 | - self.physician = parser.GetPhysicianName() | |
| 1659 | - | |
| 1687 | + self.id = parser.GetPatientID() | |
| 1688 | + self.age = parser.GetPatientAge() | |
| 1689 | + self.birthdate = parser.GetPatientBirthDate() | |
| 1690 | + self.gender = parser.GetPatientGender() | |
| 1691 | + self.physician = parser.GetPhysicianReferringName() | |
| 1692 | + | |
| 1693 | + | |
| 1660 | 1694 | class Acquisition(object): |
| 1661 | 1695 | |
| 1662 | 1696 | def __init__(self): |
| ... | ... | @@ -1669,7 +1703,13 @@ class Acquisition(object): |
| 1669 | 1703 | self.serie_number = parser.GetImageSeriesNumber() |
| 1670 | 1704 | self.id_study = parser.GetStudyID() |
| 1671 | 1705 | self.modality = parser.GetAcquisitionModality() |
| 1672 | - | |
| 1706 | + self.study_description = parser.GetStudyDescription() | |
| 1707 | + self.acquisition_date = parser.GetAcquisitionDate() | |
| 1708 | + self.institution = parser.GetInstitutionName() | |
| 1709 | + self.date = parser.GetAcquisitionDate() | |
| 1710 | + self.acession_number = parser.GetAccessionNumber() | |
| 1711 | + self.series_description = parser.GetSeriesDescription() | |
| 1712 | + | |
| 1673 | 1713 | class Image(object): |
| 1674 | 1714 | |
| 1675 | 1715 | def __init__(self): |
| ... | ... | @@ -1684,30 +1724,28 @@ class Image(object): |
| 1684 | 1724 | self.position = [1, 1, 1] |
| 1685 | 1725 | |
| 1686 | 1726 | self.number = parser.GetImageNumber() |
| 1687 | - print "*****************" | |
| 1688 | 1727 | self.spacing = spacing = parser.GetPixelSpacing() |
| 1689 | - print "Spacing:", spacing | |
| 1690 | 1728 | self.orientation_label = parser.GetImageOrientationLabel() |
| 1691 | 1729 | self.file = parser.filename |
| 1692 | 1730 | |
| 1693 | - if self.spacing: | |
| 1694 | - print "Thickness:", parser.GetImageThickness() | |
| 1695 | - # If the image is "alone", we set thickness as z axis | |
| 1696 | - if (parser.GetImageThickness()): | |
| 1697 | - spacing.append(parser.GetImageThickness()) | |
| 1698 | - else: | |
| 1699 | - try: | |
| 1700 | - spacing.append(1.5) | |
| 1701 | - except(AttributeError): | |
| 1702 | - spacing = [1, 1, 1] | |
| 1703 | - | |
| 1704 | - # If there are too many float digits | |
| 1705 | - spacing[0] = round(spacing[0],2) | |
| 1706 | - spacing[1] = round(spacing[1],2) | |
| 1707 | - spacing[2] = round(spacing[2],2) | |
| 1708 | - self.spacing = spacing | |
| 1731 | + if (parser.GetImageThickness()): | |
| 1732 | + try: | |
| 1733 | + spacing.append(parser.GetImageThickness()) | |
| 1734 | + except(AttributeError): | |
| 1735 | + spacing = [1, 1, 1] | |
| 1736 | + else: | |
| 1737 | + try: | |
| 1738 | + spacing.append(1.5) | |
| 1739 | + except(AttributeError): | |
| 1740 | + spacing = [1, 1, 1] | |
| 1741 | + | |
| 1742 | + spacing[0] = round(spacing[0],2) | |
| 1743 | + spacing[1] = round(spacing[1],2) | |
| 1744 | + spacing[2] = round(spacing[2],2) | |
| 1745 | + self.spacing = spacing | |
| 1709 | 1746 | |
| 1710 | 1747 | try: |
| 1711 | 1748 | self.type = parser.GetImageType()[2] |
| 1712 | 1749 | except(IndexError): |
| 1713 | 1750 | self.type = None |
| 1751 | + | ... | ... |