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]"
|
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
File diff suppressed because one or more lines are too long
Reference in New Issue
Block a user