Refactor code structure for improved readability and maintainability

This commit is contained in:
Ross
2025-09-22 10:45:21 +01:00
parent ee42d5c1c2
commit 990907f8f5
3 changed files with 207 additions and 169 deletions
+40 -3
View File
@@ -1233,18 +1233,55 @@ class CaseDetail(models.Model):
return "[Redacted]" return "[Redacted]"
if self.override_history and self.override_history != "": if self.override_history and self.override_history != "":
return self.override_history return self.override_history
return self.case.history return self.case.history or "No history provided"
return "" return ""
def get_case_series_nested(self, include_priors=True): def get_case_series_nested(self, include_priors=True):
case_series_images = self.case.get_series_images_nested(as_json=False) case_series_images = self.case.get_series_images_nested(as_json=False)
if include_priors: if include_priors:
for prior in self.case.prior_case.all(): logger.debug(f"Checking for prior cases for case {self.case}")
case_series_images.extend(prior.get_series_images_nested(as_json=False)) logger.debug(f"Found {self.case.prior_case.count()} prior cases for case {self.case}")
for prior in self.caseprior_set.all():
logger.debug(f"Adding prior case {prior.prior_case} to case {self.case}")
case_series_images.extend(prior.prior_case.get_series_images_nested(as_json=False))
return json.dumps(case_series_images) return json.dumps(case_series_images)
def get_case_named_stacks(self, include_priors=True):
def build_stacks_for(case_obj, prefix=None):
stacks = []
for series in case_obj.get_ordered_series():
images = [f"{REMOTE_URL}{img.image.url}" for img in series.images.all()]
name = f"{prefix}: {series}" if prefix else str(series)
stacks.append({"name": name, "imageIds": images})
return stacks
results = []
# main case entry
results.append(
{
"caseId": f"CASE-{self.case.pk}",
"studyId": f"Current Case",
"stacks": build_stacks_for(self.case, prefix=None),
}
)
# include priors as separate entries
if include_priors:
for prior in self.caseprior_set.all():
prior_case = prior.prior_case
results.append(
{
"caseId": f"CASE-{prior_case.pk}",
"studyId": f"Prior: {prior.relation_text}",
"stacks": build_stacks_for(prior_case, prefix="Prior"),
}
)
return json.dumps(results)
class CasePrior(models.Model): class CasePrior(models.Model):
case_detail = models.ForeignKey(CaseDetail, on_delete=models.CASCADE) case_detail = models.ForeignKey(CaseDetail, on_delete=models.CASCADE)
@@ -74,11 +74,12 @@
<details id="dicom-viewer-details"> <details id="dicom-viewer-details">
<summary>Viewer</summary> <summary>Viewer</summary>
Named stacks
<div id="main_viewer" class="dicom-viewer-root" <div id="main_viewer" class="dicom-viewer-root"
style="box-sizing: border-box; background: #222; width: 100%; height: 600px;" style="box-sizing: border-box; background: #222; width: 100%; height: 600px;"
data-auto-cache-stack="false" data-auto-cache-stack="false"
data-images='{{case_detail.get_case_series_nested}}' data-named-stacks='{{case_detail.get_case_named_stacks}}'
></div> ></div>
</details> </details>
+165 -165
View File
File diff suppressed because one or more lines are too long