start working on case_study bulk editiing and add relative dates to the model

This commit is contained in:
Ross
2026-06-01 10:23:57 +01:00
parent 6aada9f991
commit 40cea43578
8 changed files with 584 additions and 195 deletions
+41
View File
@@ -840,6 +840,12 @@ class Case(models.Model, AuthorMixin, QuestionMixin):
cimar_uuid = models.CharField(max_length=255, null=True, blank=True)
study_date = models.DateField(
null=True,
blank=True,
help_text="Optional manually overridden study date for linked case series.",
)
def get_ordered_series_details(self):
cached = getattr(self, "_ordered_series_details_cache", None)
if cached is not None:
@@ -873,6 +879,41 @@ class Case(models.Model, AuthorMixin, QuestionMixin):
self._ordered_series_cache = ordered
return ordered
@staticmethod
def _parse_dicom_date(value):
if not value:
return None
try:
return datetime.datetime.strptime(str(value), "%Y%m%d").date()
except (TypeError, ValueError):
return None
def get_effective_study_date(self):
if self.study_date:
return self.study_date
for series in self.get_ordered_series():
image = series.images.filter(removed=False).first()
if not image:
continue
try:
ds = image.get_dicom_data()
except Exception:
ds = None
if not ds:
continue
raw_date = (
getattr(ds, "StudyDate", None)
or getattr(ds, "AcquisitionDate", None)
or getattr(ds, "SeriesDate", None)
)
parsed = self._parse_dicom_date(raw_date)
if parsed:
return parsed
return None
def get_app_name(self):
return "atlas"