From 8ec7662015b71b39b5e62da3c50c4b9a08a73279 Mon Sep 17 00:00:00 2001 From: Ross Date: Mon, 7 Aug 2023 20:46:36 +0100 Subject: [PATCH] . --- atlas/models.py | 33 +++++++++++++++++++++++---------- 1 file changed, 23 insertions(+), 10 deletions(-) diff --git a/atlas/models.py b/atlas/models.py index 3c9e5693..52ba88dd 100644 --- a/atlas/models.py +++ b/atlas/models.py @@ -358,6 +358,11 @@ class SeriesImage(SeriesImageBase): "Series", related_name="images", on_delete=models.SET_NULL, null=True ) + def get_series_dicom_data(self): + print(self.image) + with pydicom.dcmread(self.image) as d: + return d + def get_image_dicom_json(self): try: with pydicom.dcmread(self.image) as ds: @@ -396,8 +401,6 @@ class SeriesImage(SeriesImageBase): else: d[key] = val - - return {"metadata": d, "url": f"dicomweb:{REMOTE_URL}{self.image.url}"} except FileNotFoundError: return [] @@ -484,17 +487,27 @@ class Series(SeriesBase): def get_series_dicom_json(self): instances = [] + series_json = {} + + to_keep = ["SeriesInstanceUID", "SeriesNumber", "Modality", "SliceThickness"] + image: SeriesImage - for image in self.images.all(): + for series_n, image in enumerate(self.images.all()): + if series_n == 0: + ds = image.get_series_dicom_data() + + for tag in to_keep: + if tag in ds: + val = ds[tag].value + + if type(val) == pydicom.multival.MultiValue: + series_json[tag] = list(val) + else: + series_json[tag] = val + instances.append(image.get_image_dicom_json()) - series_json = { - "SeriesInstanceUID": "1.3.6.1.4.1.14519.5.2.1.6279.6001.179049373636438705059720603192", - "SeriesNumber": 3000566, - "Modality": "CT", - "SliceThickness": 2.5, - "instances": instances, - } + series_json["instances"]= instances return series_json