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()