diff --git a/oef/templates/oef/output.html b/oef/templates/oef/output.html index 6541a4eb..3c7a77e8 100644 --- a/oef/templates/oef/output.html +++ b/oef/templates/oef/output.html @@ -21,7 +21,7 @@ {% for output in outputs %} - {{output.name}} + Radiology {{output.name}} Order {{output.field_seq}} @@ -35,6 +35,25 @@ {% endfor %} + +

Codesets

+ + + + + {% for codeset, options in codesets %} + + + {% for option in options %} + + + {% endfor %} + + + {% endfor %} + +
CodesetOption
{{codeset}}{{option}}
+ {% endblock content %} diff --git a/oef/views.py b/oef/views.py index 684b0655..cd389613 100644 --- a/oef/views.py +++ b/oef/views.py @@ -9,6 +9,7 @@ from django.views.generic.detail import DetailView from atlas.models import Subspecialty from .models import Entry, Formats + # Create your views here. from .tables import EntryTable from .filters import EntryFilter @@ -17,34 +18,38 @@ from django.contrib.auth.decorators import user_passes_test from django_tables2 import SingleTableView, SingleTableMixin + class EntryUpdateView(UpdateView): model = Entry template_name = "oef/entry_update_view.html" - fields = ['modality', 'exam_code', 'exam_name', 'questions', 'comments', "inactive"] + fields = ["modality", "exam_code", "exam_name", "questions", "comments", "inactive"] + class EntryDetailView(DetailView): model = Entry template_name = "oef/entry_detail_view.html" + class FormatsCreateView(CreateView): model = Formats template_name_suffix = "_update_form" - fields = ['name', 'format', 'inherits'] + fields = ["name", "format", "inherits"] class FormatsForm(forms.ModelForm): class Meta: model = Formats - fields = ['name', 'format', 'specialties', 'inherits'] - widgets = { - 'specialties': forms.CheckboxSelectMultiple()} + fields = ["name", "format", "specialties", "inherits"] + widgets = {"specialties": forms.CheckboxSelectMultiple()} + class FormatsUpdateView(UpdateView): model = Formats template_name_suffix = "_update_form" - #fields = ['name', 'format', 'specialties', 'inherits'] + # fields = ['name', 'format', 'specialties', 'inherits'] form_class = FormatsForm + class EntryTableView(SingleTableMixin, FilterView): model = Entry table_class = EntryTable @@ -53,16 +58,17 @@ class EntryTableView(SingleTableMixin, FilterView): filterset_class = EntryFilter + @dataclass class FormatOutput: name: str - action: str="" - field_seq: int=100 - field_label:str="" - field_name:str="" - field_status:str="" - field_type:str="" - field_codeset:str="" + action: str = "" + field_seq: int = 100 + field_label: str = "" + field_name: str = "" + field_status: str = "" + field_type: str = "" + field_codeset: str = "" def output(request): @@ -75,7 +81,6 @@ def output(request): codesets = [] codeset_start = 100000 - for format in formats: seq = 100 questions = format.format.strip().split("---") @@ -105,30 +110,38 @@ def output(request): case _: field_type = "unknown" - o = FormatOutput(format.name, field_label=name, field_name=name, field_seq=seq, field_status=status, field_type=field_type) - + o = FormatOutput( + format.name, + field_label=name, + field_name=name, + field_seq=seq, + field_status=status, + field_type=field_type, + ) if field_type == "CODESET": o.field_codeset = codeset_start - codeset_start = codeset_start + 1 - - outputs.append(o) + codesets.append((codeset_start, other)) + codeset_start = codeset_start + 1 + + outputs.append(o) seq = seq + 100 + return render( + request, + "oef/output.html", + {"formats": formats, "outputs": outputs, "codesets": codesets}, + ) - - - - return render(request, "oef/output.html", {"formats": formats, "outputs": outputs}) - def formats_view(request): formats = Formats.objects.all() return render(request, "oef/formats_view.html", {"formats": formats}) + @user_passes_test(lambda u: u.is_superuser) def formats_delete(request, pk): f = get_object_or_404(Formats, pk=pk) @@ -137,7 +150,6 @@ def formats_delete(request, pk): return HttpResponse("Format deleted") - def formats_apply(request, pk): format = get_object_or_404(Formats, pk=pk) @@ -148,7 +160,12 @@ def formats_apply(request, pk): entry_list = [] for entry in entries: entry_list.append((entry, entry.questions.replace(search_text, ""))) - return render(request, "oef/formats_apply.html", {"format": format, "entry_list": entry_list, "entries": entries}) + return render( + request, + "oef/formats_apply.html", + {"format": format, "entry_list": entry_list, "entries": entries}, + ) + def entry_detail_formats(request, pk): entry = get_object_or_404(Entry, pk=pk) @@ -163,7 +180,12 @@ def entry_detail_formats(request, pk): matching_formats = sorted(matching_formats, key=lambda x: len(x.get_format())) - return render(request, "oef/entry_detail_formats.html", {"entry": entry, "matching_formats": matching_formats}) + return render( + request, + "oef/entry_detail_formats.html", + {"entry": entry, "matching_formats": matching_formats}, + ) + def replace_questions(request): if request.method == "POST": @@ -191,20 +213,24 @@ def replace_questions(request): else: return render(request, "oef/replace_questions.html", {}) + def entries(request): entries = Entry.objects.all().order_by("exam_code") return render(request, "oef/entries.html", {"entries": entries}) + def format_search(request): if request.method == "POST": search = request.POST.get("search") entries = Entry.objects.filter(questions__icontains=search, inactive=False) - - return render(request, "oef/format_search_results.html", {"entries": entries}) - return render(request, "oef/format_search.html",) + return render( + request, + "oef/format_search.html", + ) + def subspecialties(request): subspecialties = Subspecialty.objects.all() @@ -217,13 +243,15 @@ def subspecialties(request): ("Nuclear Medicine", Formats.objects.filter(name__startswith="NM")) ) - return render(request, "oef/subspecialties.html", context={ - "format_map": format_map - }) + return render( + request, "oef/subspecialties.html", context={"format_map": format_map} + ) def questions(request): - questions = set(Entry.objects.filter(inactive=False).values_list("questions", flat=True)) + questions = set( + Entry.objects.filter(inactive=False).values_list("questions", flat=True) + ) questions = sorted(questions, key=lambda x: len(x)) @@ -236,7 +264,12 @@ def questions(request): format = None questions_and_formats.append((question, format)) - return render(request, "oef/questions.html", {"questions": questions, "questions_and_formats": questions_and_formats}) + return render( + request, + "oef/questions.html", + {"questions": questions, "questions_and_formats": questions_and_formats}, + ) + def entries_by_question(request): @@ -245,19 +278,23 @@ def entries_by_question(request): entries = Entry.objects.filter(questions=question, inactive=False) return render(request, "oef/entries_by_question.html", {"entries": entries}) - + return HttpResponse("Please provide a question") + def entries_by_question_codes(request): if request.method == "POST": question = request.POST.get("question") entries = Entry.objects.filter(questions=question, inactive=False) - return render(request, "oef/entries_by_question_codes.html", {"entries": entries}) - + return render( + request, "oef/entries_by_question_codes.html", {"entries": entries} + ) + return HttpResponse("Please provide a question") + def questions_diff(request): if request.method == "POST": question1 = request.POST.get("question1", False) @@ -273,12 +310,14 @@ def questions_diff(request): return HttpResponse("Please provide two questions") + def questions_sym(request): if request.method == "POST": question = request.POST.get("question") - questions = set(Entry.objects.filter(inactive=False).values_list("questions", flat=True)) - + questions = set( + Entry.objects.filter(inactive=False).values_list("questions", flat=True) + ) output = [] for q in questions: @@ -291,7 +330,6 @@ def questions_sym(request): return render(request, "oef/questions_sym.html", {"output": output}) - return HttpResponse("Please provide a question set") @@ -311,8 +349,7 @@ def formats_save(request): return HttpResponse("Format questions already exists") Formats.objects.create(name=format_name, format=question) - + return HttpResponse("Format saved") - - return HttpResponse("Please provide a question") \ No newline at end of file + return HttpResponse("Please provide a question")