diff --git a/oef/templates/oef/base.html b/oef/templates/oef/base.html index 9af33024..7860b478 100644 --- a/oef/templates/oef/base.html +++ b/oef/templates/oef/base.html @@ -9,4 +9,5 @@ Questions / By subspecialty / Replace Questions / + Output / {% endblock %} \ No newline at end of file diff --git a/oef/templates/oef/output.html b/oef/templates/oef/output.html index f3337297..6541a4eb 100644 --- a/oef/templates/oef/output.html +++ b/oef/templates/oef/output.html @@ -15,19 +15,23 @@ Field Label Field Name Field Status + Field Type Field Codeset -{% for format in formats %} -
  • - {{ format.name }} -apply [{{ format.get_entries.count }}] +{% for output in outputs %} -{% if request.user.is_superuser %} - (delete) - -{% endif %} - -
  • + + {{output.name}} + Order + {{output.field_seq}} + + {{output.field_label}} + {{output.field_name}} + {{output.field_status}} + {{output.field_type}} + {{output.field_codeset}} + + {% endfor %} diff --git a/oef/views.py b/oef/views.py index 60602dc1..684b0655 100644 --- a/oef/views.py +++ b/oef/views.py @@ -1,3 +1,4 @@ +from dataclasses import dataclass from difflib import HtmlDiff, SequenceMatcher from django import forms from django.http import HttpResponse, JsonResponse @@ -52,14 +53,77 @@ 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="" + + def output(request): formats = Formats.objects.all() + formats = sorted(formats, key=lambda x: len(x.format)) + + outputs = [] + + codesets = [] + codeset_start = 100000 + + for format in formats: - questions = format.format + seq = 100 + questions = format.format.strip().split("---") + + for question in questions: + print(question) + if not question: + continue + + name, *other = question.strip().splitlines() + + status = "OPTIONAL" + if name.endswith("*"): + status = "REQUIRED" + name = name[:-1] + + field_type = "" + match other: + case ["Yes", "No"]: + field_type = "YES/NO" + case ["Date/Time"]: + field_type = "DATE/TIME" + case ["Freetext"]: + field_type = "ALPHANUMERIC" + case [*codeset]: + field_type = "CODESET" + case _: + field_type = "unknown" + + o = FormatOutput(format.name, field_label=name, field_name=name, field_seq=seq, field_status=status, field_type=field_type) - return render(request, "oef/output.html", {"formats": formats}) + if field_type == "CODESET": + o.field_codeset = codeset_start + + codeset_start = codeset_start + 1 + + outputs.append(o) + + + seq = seq + 100 + + + + + + + return render(request, "oef/output.html", {"formats": formats, "outputs": outputs}) def formats_view(request): formats = Formats.objects.all()