Exams
+
Create Question
{% block navigation %}
{% endblock %}
diff --git a/anatomy/templates/anatomy/create_simple.html b/anatomy/templates/anatomy/create_simple.html
new file mode 100644
index 00000000..14e906af
--- /dev/null
+++ b/anatomy/templates/anatomy/create_simple.html
@@ -0,0 +1,5 @@
+
Add new {{name}}
+
\ No newline at end of file
diff --git a/anatomy/templates/anatomy/question_detail.html b/anatomy/templates/anatomy/question_detail.html
index 3a1d8b75..923c1be7 100644
--- a/anatomy/templates/anatomy/question_detail.html
+++ b/anatomy/templates/anatomy/question_detail.html
@@ -8,6 +8,8 @@
+
Edit
+
Admin Edit
Created: {{ question.created_date }}
@@ -21,6 +23,12 @@
{{ exam.name }}
{% endfor %}
+
+ Modality: {{ question.modality }}
+
+
+ Region: {{ question.region }}
+
Annotation JSON: {{ question.image_annotations }}
diff --git a/anatomy/urls.py b/anatomy/urls.py
index 1f70a860..db990615 100644
--- a/anatomy/urls.py
+++ b/anatomy/urls.py
@@ -8,7 +8,7 @@ urlpatterns = [
path("", views.index, name="index"),
path("question/
/", views.question_detail, name="question_detail"),
path("question/create/", views.AnatomyQuestionCreate.as_view(), name="anatomy_question_create"),
- path("question//update", views.AnatomyQuestionUpdate.as_view(), name="anatomy_question_create"),
+ path("question//update", views.AnatomyQuestionUpdate.as_view(), name="anatomy_question_update"),
path("question//save_annotation", views.question_save_annotation, name="question_save_annotation"),
path("question//answer/",
views.answer_question,
@@ -29,4 +29,20 @@ urlpatterns = [
path("exam/json//recreate", views.exam_json_recreate, name="exam_json_recreate"),
path("cid//scores", views.cid_scores, name="cid_scores"),
path("ajax/exam/flag/", views.flag_question, name="flag_question"),
+ path("body_part/create/", views.create_body_part, name="create_body_part"),
+ path("body_part/ajax/get_body_part_id",
+ views.get_body_part_id,
+ name="get_body_part_id"),
+ path("structure/create/",
+ views.create_structure,
+ name="create_structure"),
+ path("structure/ajax/get_structure_id",
+ views.get_structure_id,
+ name="get_structure_id"),
+ path("examination/create/",
+ views.create_examination,
+ name="create_examination"),
+ path("examination/ajax/get_examination_id",
+ views.get_examination_id,
+ name="get_examination_id"),
]
diff --git a/anatomy/views.py b/anatomy/views.py
index c2bbf47c..f9c052d8 100644
--- a/anatomy/views.py
+++ b/anatomy/views.py
@@ -21,10 +21,10 @@ from django.http import Http404, JsonResponse
from django.http import HttpResponseRedirect, HttpResponse
-from .forms import AnatomyAnswerForm, AnswerFormSet, MarkAnatomyQuestionForm, AnatomyQuestionForm
+from .forms import AnatomyAnswerForm, AnswerFormSet, AnswerUpdateFormSet, BodyPartForm, ExaminationForm, MarkAnatomyQuestionForm, AnatomyQuestionForm, StructureForm
from .models import (
- AnatomyQuestion,
- CidUserAnswer,
+ AnatomyQuestion, BodyPart,
+ CidUserAnswer, Examination, Structure,
UserAnswer,
Exam,
Answer,
@@ -828,19 +828,15 @@ class AnatomyQuestionUpdate(LoginRequiredMixin, UpdateView):
model = AnatomyQuestion
form_class = AnatomyQuestionForm
- # fields = '__all__'
- # #fields = [ 'condition' ]
- # #initial = {'date_of_death': '05/01/2018'}
- # exclude = [ 'created_date', 'published_date' ]
def get_context_data(self, **kwargs):
context = super(AnatomyQuestionUpdate, self).get_context_data(**kwargs)
if self.request.POST:
- context['answer_formset'] = AnswerFormSet(self.request.POST,
+ context['answer_formset'] = AnswerUpdateFormSet(self.request.POST,
self.request.FILES,
instance=self.object)
context['answer_formset'].full_clean()
else:
- context['answer_formset'] = AnswerFormSet(instance=self.object)
+ context['answer_formset'] = AnswerUpdateFormSet(instance=self.object)
return context
def form_valid(self, form):
@@ -859,4 +855,81 @@ class AnatomyQuestionUpdate(LoginRequiredMixin, UpdateView):
formset.save()
return response
else:
- return super().form_invalid(form)
\ No newline at end of file
+ return super().form_invalid(form)
+
+@login_required
+def create_body_part(request):
+ form = BodyPartForm(request.POST or None)
+ if form.is_valid():
+ instance = form.save()
+ return HttpResponse(
+ ''
+ % (instance.pk, instance))
+ return render(request, "anatomy/create_simple.html", {
+ 'form': form,
+ 'name': "BodyPart"
+ })
+
+
+@csrf_exempt
+def get_body_part_id(request):
+ if request.is_ajax():
+ body_part_name = request.GET['body_part_name']
+ body_part_id = BodyPart.objects.get(name=body_part_name).id
+ data = {
+ 'body_part_id': body_part_id,
+ }
+ return HttpResponse(json.dumps(data), content_type='application/json')
+ return HttpResponse("/")
+
+
+@login_required
+def create_examination(request):
+ form = ExaminationForm(request.POST or None)
+ if form.is_valid():
+ instance = form.save()
+ return HttpResponse(
+ ''
+ % (instance.pk, instance))
+ return render(request, "anatomy/create_simple.html", {
+ 'form': form,
+ 'name': "Examination"
+ })
+
+
+@csrf_exempt
+def get_examination_id(request):
+ if request.is_ajax():
+ examination_name = request.GET['examination_name']
+ examination_id = Examination.objects.get(name=examination_name).id
+ data = {
+ 'examination_id': examination_id,
+ }
+ return HttpResponse(json.dumps(data), content_type='application/json')
+ return HttpResponse("/")
+
+
+@login_required
+def create_structure(request):
+ form = StructureForm(request.POST or None)
+ if form.is_valid():
+ instance = form.save()
+ return HttpResponse(
+ ''
+ % (instance.pk, instance))
+ return render(request, "anatomy/create_simple.html", {
+ 'form': form,
+ 'name': "Structure"
+ })
+
+
+@csrf_exempt
+def get_structure_id(request):
+ if request.is_ajax():
+ structure_name = request.GET['structure_name']
+ structure_id = Structure.objects.get(name=structure_name).id
+ data = {
+ 'structure_id': structure_id,
+ }
+ return HttpResponse(json.dumps(data), content_type='application/json')
+ return HttpResponse("/")
\ No newline at end of file