enable priors in atlas
This commit is contained in:
+89
-2
@@ -49,6 +49,7 @@ from .forms import (
|
||||
ConditionForm,
|
||||
FindingForm,
|
||||
JsonAnswerForm,
|
||||
PriorCaseForm,
|
||||
QuestionSchemaForm,
|
||||
ResourceForm,
|
||||
SelfReviewForm,
|
||||
@@ -66,6 +67,7 @@ from .models import (
|
||||
Case,
|
||||
CaseCollection,
|
||||
CaseDetail,
|
||||
CasePrior,
|
||||
CidReportAnswer,
|
||||
Condition,
|
||||
Differential,
|
||||
@@ -1631,6 +1633,78 @@ def collection_take_start(request, pk):
|
||||
request, "atlas/collection_review_start.html", template_variables
|
||||
)
|
||||
|
||||
@user_is_collection_author_or_atlas_editor
|
||||
def collection_case_priors(request, exam_id, case_id):
|
||||
case_detail = CaseDetail.objects.get(case=case_id, collection=exam_id)
|
||||
|
||||
|
||||
if request.htmx:
|
||||
if "remove" in request.POST:
|
||||
p = CasePrior.objects.get(case_detail=case_detail, prior_case=request.POST["remove"])
|
||||
p.delete()
|
||||
return HttpResponse(f"Case removed")
|
||||
elif "prior_case_id" in request.POST:
|
||||
prior_case = Case.objects.get(pk=request.POST["prior_case_id"])
|
||||
p, created = CasePrior.objects.get_or_create(case_detail=case_detail, prior_case=prior_case)
|
||||
p.relation_text=request.POST["relation"]
|
||||
|
||||
if not p.relation_text:
|
||||
return HttpResponse("You need to enter text to describe the relationship between the cases")
|
||||
|
||||
p.save()
|
||||
|
||||
return HttpResponse(f"Case added")
|
||||
else:
|
||||
return HttpResponse("False")
|
||||
raise Http404()
|
||||
|
||||
collection = case_detail.collection
|
||||
|
||||
added_priors = CasePrior.objects.filter(case_detail=case_detail)
|
||||
|
||||
added_relation_map = {}
|
||||
for prior in added_priors:
|
||||
added_relation_map[prior.prior_case] = prior.relation_text
|
||||
|
||||
case = case_detail.case
|
||||
|
||||
available_cases = case.get_all_prior_cases()
|
||||
|
||||
available_priors = []
|
||||
for case in available_cases:
|
||||
if case in added_relation_map:
|
||||
available_priors.append((case, True, added_relation_map[case]))
|
||||
else:
|
||||
available_priors.append((case, False, ""))
|
||||
|
||||
|
||||
form = PriorCaseForm()
|
||||
|
||||
case_number, case_count = collection.get_index_of_case(
|
||||
case_detail.case, case_count=True
|
||||
)
|
||||
|
||||
previous = collection.get_previous_case(case_detail.case)
|
||||
next = collection.get_next_case(case_detail.case)
|
||||
|
||||
|
||||
return render(
|
||||
request,
|
||||
"atlas/collection_case_priors.html",
|
||||
{
|
||||
"case_detail": case_detail,
|
||||
"form": form,
|
||||
#"example_form": example_form,
|
||||
"collection": collection,
|
||||
"case": case_detail.case,
|
||||
"previous": previous,
|
||||
"next": next,
|
||||
"collection_length": case_count,
|
||||
"case_number": case_number,
|
||||
"added_priors": added_priors,
|
||||
"available_priors": available_priors,
|
||||
},
|
||||
)
|
||||
|
||||
@user_is_collection_author_or_atlas_editor
|
||||
def collection_case_details(request, exam_id, case_id):
|
||||
@@ -2039,8 +2113,8 @@ def collection_case_view_take(
|
||||
cid_user_exam.start_time = timezone.now()
|
||||
cid_user_exam.save()
|
||||
|
||||
case_detail = CaseDetail.objects.get(case=case, collection=collection)
|
||||
if not collection.review_only():
|
||||
case_detail = CaseDetail.objects.get(case=case, collection=collection)
|
||||
if collection.collection_type == "REP":
|
||||
if cid is not None:
|
||||
answer = case_detail.cidreportanswer_set.filter(cid=cid).first()
|
||||
@@ -2116,7 +2190,19 @@ def collection_case_view_take(
|
||||
|
||||
series_list = case.series.all().prefetch_related("images", "examination", "plane")
|
||||
|
||||
print("case_no")
|
||||
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)
|
||||
|
||||
@@ -2160,6 +2246,7 @@ def collection_case_view_take(
|
||||
"collection": collection,
|
||||
"case": case,
|
||||
"series_list": series_list,
|
||||
"series_to_load": series_to_load,
|
||||
"case_number": case_number,
|
||||
"previous": previous,
|
||||
"next": next,
|
||||
|
||||
Reference in New Issue
Block a user