Refactor code structure for improved readability and maintainability
This commit is contained in:
+40
-3
@@ -1233,18 +1233,55 @@ class CaseDetail(models.Model):
|
||||
return "[Redacted]"
|
||||
if self.override_history and self.override_history != "":
|
||||
return self.override_history
|
||||
return self.case.history
|
||||
return self.case.history or "No history provided"
|
||||
return ""
|
||||
|
||||
def get_case_series_nested(self, include_priors=True):
|
||||
case_series_images = self.case.get_series_images_nested(as_json=False)
|
||||
|
||||
if include_priors:
|
||||
for prior in self.case.prior_case.all():
|
||||
case_series_images.extend(prior.get_series_images_nested(as_json=False))
|
||||
logger.debug(f"Checking for prior cases for case {self.case}")
|
||||
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)
|
||||
|
||||
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):
|
||||
case_detail = models.ForeignKey(CaseDetail, on_delete=models.CASCADE)
|
||||
|
||||
@@ -74,11 +74,12 @@
|
||||
|
||||
<details id="dicom-viewer-details">
|
||||
<summary>Viewer</summary>
|
||||
Named stacks
|
||||
|
||||
<div id="main_viewer" class="dicom-viewer-root"
|
||||
style="box-sizing: border-box; background: #222; width: 100%; height: 600px;"
|
||||
data-auto-cache-stack="false"
|
||||
data-images='{{case_detail.get_case_series_nested}}'
|
||||
data-named-stacks='{{case_detail.get_case_named_stacks}}'
|
||||
></div>
|
||||
</details>
|
||||
|
||||
|
||||
Reference in New Issue
Block a user