work on case priors

This commit is contained in:
Ross
2025-04-28 22:36:04 +01:00
parent 5e578ca2b0
commit 6564b25250
8 changed files with 135 additions and 24 deletions
+33 -17
View File
@@ -56,6 +56,7 @@ from .forms import (
ExamGroupsForm,
FindingForm,
JsonAnswerForm,
#ModelPriorCaseForm,
PriorCaseForm,
QuestionSchemaForm,
ResourceForm,
@@ -493,7 +494,7 @@ def add_case_to_collection(request, collection_id):
return HttpResponse("Case already in collection")
print(case)
collection.add_case(case)
return HttpResponse("Case added to collection (refresh to see)")
return HttpResponse(f"Case added to collection {collection.name} (refresh to see)")
# if request.method == "POST":
@@ -1766,6 +1767,7 @@ def collection_case_priors(request, exam_id, case_id):
return HttpResponse(
"You need to enter text to describe the relationship between the cases"
)
p.prior_visibility = request.POST["prior_visibility"]
p.save()
@@ -1780,7 +1782,7 @@ def collection_case_priors(request, exam_id, case_id):
added_relation_map = {}
for prior in added_priors:
added_relation_map[prior.prior_case] = prior.relation_text
added_relation_map[prior.prior_case] = (prior.relation_text, prior.prior_visibility)
case = case_detail.case
@@ -1789,9 +1791,9 @@ def collection_case_priors(request, exam_id, case_id):
available_priors = []
for case in available_cases:
if case in added_relation_map:
available_priors.append((case, True, added_relation_map[case]))
available_priors.append((case, True, added_relation_map[case][0], added_relation_map[case][1]))
else:
available_priors.append((case, False, ""))
available_priors.append((case, False, "", "AL"))
form = PriorCaseForm()
@@ -1808,6 +1810,7 @@ def collection_case_priors(request, exam_id, case_id):
{
"case_detail": case_detail,
"form": form,
#"model_form": model_form,
# "example_form": example_form,
"collection": collection,
"case": case_detail.case,
@@ -2302,17 +2305,6 @@ def collection_case_view_take(
series_list = case.series.all().prefetch_related("images", "examination", "plane")
prior_cases = case_detail.caseprior_set.all()
series_to_load = []
for series in series_list:
series_to_load.append((series, False, ""))
for prior in prior_cases:
for series in prior.prior_case.get_series():
series_to_load.append((series, True, prior.relation_text))
previous = case_number > 0
next = case_number < (case_count - 1)
@@ -2348,6 +2340,25 @@ def collection_case_view_take(
resources = case.caseresource_set.filter(pre_review=True)
prior_cases = case_detail.caseprior_set.all()
series_to_load = []
for series in series_list:
series_to_load.append((series, False, ""))
for prior in prior_cases:
match prior.prior_visibility:
case "AL":
for series in prior.prior_case.get_series():
series_to_load.append((series, True, prior.relation_text))
case "RE":
if question_completed:
for series in prior.prior_case.get_series():
series_to_load.append((series, True, prior.relation_text))
case _:
continue
return render(
request,
"atlas/collection_case_view_take.html",
@@ -2437,11 +2448,16 @@ def use_dates_as_descriptions(request, pk):
return HttpResponse("Done")
def collection_case_dicom_json_review(request, exam_id, case_id):
return collection_case_dicom_json(request, exam_id, case_id, review=True)
def collection_case_dicom_json(request, exam_id, case_id):
def collection_case_dicom_json(request, exam_id, case_id, review=False):
case_detail = CaseDetail.objects.get(case=case_id, collection=exam_id)
priors = case_detail.caseprior_set.all()
if review:
priors = case_detail.caseprior_set.exclude(prior_visibility="NO")
else:
priors = case_detail.caseprior_set.exclude(prior_visibility__in=["NO", "RE"])
return JsonResponse(case_detail.case.get_case_dicom_json(priors=priors))