Merge branch 'master' of ssh://161.35.163.87:/home/django/rad
This commit is contained in:
+4
-11
@@ -205,6 +205,7 @@ class Long(models.Model):
|
||||
#"feedback_image": [],
|
||||
#"annotations": [str(q.image_annotations)],
|
||||
"type": "long",
|
||||
"cached": False,
|
||||
}
|
||||
|
||||
return exam_question
|
||||
@@ -393,14 +394,10 @@ class LongSeries(models.Model):
|
||||
else:
|
||||
skipcount = skipcount + 1
|
||||
|
||||
print("skipped, no SliceLocation: {}".format(skipcount))
|
||||
print("skipped, no {}: {}".format(field, skipcount))
|
||||
|
||||
# ensure they are in the correct order
|
||||
slices = sorted(slices, key=lambda s: s[field].value)
|
||||
#if field == "SliceLocation":
|
||||
# slices = sorted(slices, key=lambda s: s.SliceLocation)
|
||||
#elif field == "InstanceNumber":
|
||||
# slices = sorted(slices, key=lambda s: s.InstanceNumber)
|
||||
|
||||
|
||||
#print(slices)
|
||||
@@ -632,12 +629,6 @@ class CidUserAnswer(models.Model):
|
||||
ans = ans.strip()
|
||||
|
||||
|
||||
# def get_compare_string(self):
|
||||
# # strip here should be unneccasry (providing clean is now working)
|
||||
# s = self.answer.lower().strip()
|
||||
# s = s.translate(str.maketrans('', '', string.punctuation))
|
||||
# return s
|
||||
|
||||
def is_marked(self):
|
||||
if self.score == "":
|
||||
return False
|
||||
@@ -645,4 +636,6 @@ class CidUserAnswer(models.Model):
|
||||
return True
|
||||
|
||||
def get_answer_score(self):
|
||||
if self.score == "":
|
||||
return ""
|
||||
return float(self.score)
|
||||
|
||||
@@ -4,13 +4,28 @@
|
||||
<div class="longs">
|
||||
<h2>Exam: {{ exam.name }}</h2>
|
||||
<h3>Candidate: {{ cid }}</h3>
|
||||
Answers:
|
||||
Scores:
|
||||
<ul>{% for score in answers_marks %}
|
||||
<li class="user-answer-li">Question {{forloop.counter}}</li>
|
||||
<span class="user-answer-score user-answer-score-{{score}}"><pre>{{ans}}</pre> ({{score}})</span>
|
||||
{% endfor %}
|
||||
</ul>
|
||||
<br /> Total mark: {{ total_score }} / {{max_score}}
|
||||
<div>
|
||||
<h4>Answers</h4>
|
||||
<ul class="long-answer">{% for a,b,c,d,e in answer_text %}
|
||||
<li class="user-answer-li"><b>Question {{forloop.counter}}</b></li>
|
||||
<ul>
|
||||
<li class="user-answer-li">Observation</br><pre>{{a}}</pre></li>
|
||||
<li class="user-answer-li">Interpretation</br><pre>{{b}}</pre></li>
|
||||
<li class="user-answer-li">Principle Diagnosis</br><pre>{{c}}</pre></li>
|
||||
<li class="user-answer-li">Differential Diagnosis</br><pre>{{d}}</pre></li>
|
||||
<li class="user-answer-li">Management</br><pre>{{e}}</pre></li>
|
||||
</ul>
|
||||
{% endfor %}
|
||||
</ul>
|
||||
|
||||
</div>
|
||||
<div>
|
||||
<a href="{% url 'cid_scores' cid %}">Other exams</a>
|
||||
</div>
|
||||
|
||||
@@ -17,6 +17,7 @@ This series is not associated with any cases.
|
||||
<div>
|
||||
<a href="{% url 'longs:long_series_order_dicom' pk=series.pk %}" title="orders dicom by slice location">Order dicoms by slice location</a>
|
||||
<a href="{% url 'longs:long_series_order_dicom_instance' pk=series.pk %}" title="orders dicom by instance number">Order dicoms by instance number</a>
|
||||
<a href="{% url 'longs:long_series_order_dicom_SeriesInstanceUID' pk=series.pk %}" title="orders dicom by instance number">Order dicoms by SeriesInstanceUID</a>
|
||||
<a href="{% url 'longs:long_series_order_upload_filename' pk=series.pk %}" title="orders dicom by uploaded filename">Order by uploaded filename</a>
|
||||
</div>
|
||||
{% for image in series.images.all %}
|
||||
|
||||
@@ -13,6 +13,7 @@ urlpatterns = [
|
||||
path("series/<int:pk>", views.long_series_detail, name="long_series_detail"),
|
||||
path("series/<int:pk>/order_dicom", views.long_series_order_dicom, name="long_series_order_dicom"),
|
||||
path("series/<int:pk>/order_dicom_instance", views.long_series_order_dicom_instance, name="long_series_order_dicom_instance"),
|
||||
path("series/<int:pk>/order_dicom_SeriesInstanceUID", views.long_series_order_dicom_SeriesInstanceUID, name="long_series_order_dicom_SeriesInstanceUID"),
|
||||
path("series/<int:pk>/order_upload_filename", views.long_series_order_upload_filename, name="long_series_order_upload_filename"),
|
||||
path("series/<int:pk>/delete", views.LongSeriesDelete.as_view(), name="long_series_delete"),
|
||||
# path("unchecked/", views.unchecked_list, name="unchecked_list"),
|
||||
|
||||
@@ -889,21 +889,27 @@ def exam_scores_cid_user(request, pk, sk):
|
||||
#answers_and_marks = []
|
||||
answers_marks = []
|
||||
#answers = []
|
||||
answer_text = []
|
||||
|
||||
for q in questions:
|
||||
# Get user answer
|
||||
user_answer = q.cid_user_answers.filter(cid=cid).first()
|
||||
|
||||
|
||||
|
||||
|
||||
if not user_answer or user_answer is None:
|
||||
# skip if no answer
|
||||
#answers_marks.append("")
|
||||
#answers.append("")
|
||||
answer_score = 4
|
||||
#ans = "Not answered"
|
||||
answer_text.append((("Not answered"),("Not answered"),("Not answered"),("Not answered"),("Not answered")))
|
||||
else:
|
||||
answer_score = user_answer.get_answer_score()
|
||||
|
||||
answer_text.append((user_answer.answer_observations, user_answer.answer_interpretation, user_answer.answer_principle_diagnosis, user_answer.answer_differential_diagnosis, user_answer.answer_management))
|
||||
|
||||
if not exam.publish_results:
|
||||
answer_score = 0
|
||||
#answers.append(ans)
|
||||
@@ -931,6 +937,7 @@ def exam_scores_cid_user(request, pk, sk):
|
||||
"answers_marks": answers_marks,
|
||||
"total_score": total_score,
|
||||
"max_score": max_score,
|
||||
"answer_text": answer_text
|
||||
#"answers_and_marks": answers_and_marks,
|
||||
},
|
||||
)
|
||||
@@ -955,6 +962,16 @@ def long_series_order_dicom_instance(request, pk):
|
||||
|
||||
return redirect("longs:long_series_detail", pk=pk)
|
||||
|
||||
@login_required
|
||||
def long_series_order_dicom_SeriesInstanceUID(request, pk):
|
||||
series = get_object_or_404(LongSeries, pk=pk)
|
||||
try:
|
||||
series.order_by_dicom("SeriesInstanceUID")
|
||||
except:
|
||||
return HttpResponse('<h1>Series does not appear to contain dicoms (or field SeriesInstanceUID)</h1>')
|
||||
|
||||
return redirect("longs:long_series_detail", pk=pk)
|
||||
|
||||
@login_required
|
||||
def long_series_order_upload_filename(request, pk):
|
||||
series = get_object_or_404(LongSeries, pk=pk)
|
||||
@@ -986,6 +1003,9 @@ def question_json(request, pk):
|
||||
|
||||
cache.set("{}_question_json_{}".format("longs", pk), question_json, 3600)
|
||||
|
||||
question.recreate_json = False
|
||||
question.save()
|
||||
|
||||
return JsonResponse(question_json)
|
||||
|
||||
@login_required
|
||||
|
||||
Reference in New Issue
Block a user