Exemple #1
0
def test_dcm_dt_strings():

    for _t in testv:

        assert dicom_time(_t["dt"]) == _t["dcm_tm"].split(".")[0]
        assert dicom_date(_t["dt"]) == _t["dcm_dt"]
        assert dicom_datetime(_t["dt"]) == (_t["dcm_dt"],
                                            _t["dcm_tm"].split(".")[0])
Exemple #2
0
    def __attrs_post_init__(self):

        self.meta = {
            **self.parent.meta, "InstanceDateTime": self.inst_datetime
        }
        self.tags = {
            **self.parent.tags, "InstanceNumber": self.inst_num,
            "SOPInstanceUID": self.instuid,
            "InstanceCreationDate": dicom_date(self.inst_datetime),
            "InstanceCreationTime": dicom_time(self.inst_datetime)
        }
Exemple #3
0
    def __attrs_post_init__(self):

        self.meta = {
            **self.parent.meta, "SeriesDateTime": self.series_datetime
        }
        self.tags = {
            **self.parent.tags, "SeriesDescription": self.ser_desc,
            "SeriesNumber": self.ser_num,
            "SeriesInstanceUID": self.seruid,
            "SeriesDate": dicom_date(self.series_datetime),
            "SeriesTime": dicom_time(self.series_datetime)
        }

        for i in range(1, self.n_instances + 1):
            self.children.append(MockInstance(parent=self, inst_num=i))
Exemple #4
0
    def __attrs_post_init__(self):

        name_seed = _R.random()
        gender = _R.choice(["M", "F"])
        age = _R.randint(18, 85)
        # logging.debug(name_seed)
        # logging.debug(gender)
        # logging.debug(age)

        patient_info = GUIDMint.get_sham_id(name=name_seed,
                                            age=age,
                                            gender=gender,
                                            reference_date=self.study_datetime)
        hash_str = patient_info["ID"] + self.study_datetime.isoformat()
        accession_num = md5(hash_str.encode("UTF-8")).hexdigest()

        self.stuid = dcm_mint.uid(patient_info["ID"], accession_num)

        self.meta = {"StudyDateTime": self.study_datetime}
        self.tags = {
            "AccessionNumber": accession_num,
            "PatientName": dicom_name(patient_info["Name"]),
            "PatientID": patient_info["ID"],
            "PatientSex": gender,
            "PatientBirthDate": dicom_date(patient_info["BirthDate"]),
            "StudyInstanceUID": self.stuid,
            "StudyDescription": self.study_description,
            "StationName": self.station_name,
            "Manufacturer": "Device Manufacturer",
            "ManufacturerModelName": "Device Model Name",
            "Institution": self.site_name,
            "Modality": self.modality,
            "StudyDate": dicom_date(self.study_datetime),
            "StudyTime": dicom_time(self.study_datetime)
        }

        distribution = {
            # Mod  SeriesDesc    NSer  NInst  P of at least one
            "CT": [("Localizer", 2, 2, 1, 1), ("Volume", 1, 3, 30, 200),
                   ("Fluoro", 0, 1, 10, 50, 0.2),
                   ("Reformat", 0, 2, 100, 200, 0.2),
                   ("Dose Report", 1, 1, 1, 1)],
            "MR": [("Localizer", 1, 3, 1, 1), ("Sequence", 3, 6, 10, 50),
                   ("Diffusion Map", 0, 1, 1, 1, 0.2)],
            "CR": [("PA", 1, 1, 1, 1), ("Lateral", 1, 1, 1, 1),
                   ("Bx", 0, 1, 1, 2, 0.2)],
            "US": [("Transverse", 3, 6, 1, 1), ("Sagittal", 3, 6, 1, 1),
                   ("Cine", 1, 3, 30, 50), ("Doppler", 0, 3, 1, 3, 0.2),
                   ("Bx", 0, 2, 3, 5, 0.2)]
        }

        series_defs = distribution[self.modality]

        ser_num = 0
        for s in series_defs:

            if s[0] == 0:
                if _R.random() < s[5]:
                    num_series_this_type = 1
                else:
                    num_series_this_type = 0
            else:
                num_series_this_type = _R.randint(s[1], s[2])

            for i in range(1, num_series_this_type + 1):

                ser_num += 1

                if num_series_this_type > 1:
                    ser_desc = "{} {}".format(s[0], i)
                else:
                    ser_desc = s[0]

                n_instances = _R.randint(s[3], s[4])

                S = MockSeries(parent=self,
                               ser_num=ser_num,
                               ser_desc=ser_desc,
                               n_instances=n_instances)
                self.children.append(S)