feat: Add support for study instance UID in series and enhance DICOM import functionality

This commit is contained in:
Ross
2026-05-11 10:05:39 +01:00
parent c1e351c7db
commit aaa3ee6313
8 changed files with 528 additions and 128 deletions
+6
View File
@@ -220,6 +220,7 @@ def import_dicoms_helper(request, case_id: int | None = None, dicoms=None):
for d in dicoms.iterator(): # Use iterator() to avoid loading all at once
tags = d.basic_dicom_tags
series_uid = tags["SeriesInstanceUID"]
study_uid = tags.get("StudyInstanceUID")
if series_uid not in series_map:
# Get or create Series and related objects as needed
@@ -236,6 +237,7 @@ def import_dicoms_helper(request, case_id: int | None = None, dicoms=None):
defaults={
"modality": modality,
"description": tags.get("SeriesDescription", ""),
"study_instance_uid": study_uid,
}
)
if created and tags.get("StudyDescription"):
@@ -250,6 +252,10 @@ def import_dicoms_helper(request, case_id: int | None = None, dicoms=None):
except IntegrityError:
series = Series.objects.get(series_instance_uid=series_uid)
if study_uid and not series.study_instance_uid:
series.study_instance_uid = study_uid
series.save(update_fields=["study_instance_uid"])
# Add author and case if needed
# Attach author to the series
series.author.add(request.user)