This commit is contained in:
Ross
2024-10-28 10:34:03 +00:00
parent 7981684005
commit 21fa4739ee
3 changed files with 33 additions and 8 deletions
+8
View File
@@ -31,6 +31,14 @@ def get_assessor(request):
return queryset return queryset
class OutcomeFilter(django_filters.FilterSet):
class Meta:
model = Item
fields = {
"outcome": ["exact"],
}
class ItemFilter(django_filters.FilterSet): class ItemFilter(django_filters.FilterSet):
assigned_to_radiology = django_filters.ModelMultipleChoiceFilter( assigned_to_radiology = django_filters.ModelMultipleChoiceFilter(
queryset=get_rad, null_label="No user" queryset=get_rad, null_label="No user"
+15 -5
View File
@@ -3,9 +3,19 @@
{% block content %} {% block content %}
<h1>Radiology Gap Analysis</h1> <h1>Radiology Gap Analysis</h1>
<details>
<summary>Filter</summary>
<form method="get">
{{ item_filter.form.as_p }}
<input type="submit" />
</form>
</details>
<p>This page lists all of the radiology categories and the items that exist within them. The items are grouped by category.</p> <p>This page lists all of the radiology categories and the items that exist within them. The items are grouped by category.</p>
<button _='on click toggle .visible on .id'> Toggle IDs</button> <button _='on click toggle .visible on .id'> Toggle IDs</button>
<br/> {% comment %} <br/>
Show outcomes Show outcomes
{% for outcome in outcomes %} {% for outcome in outcomes %}
@@ -13,12 +23,12 @@ Show outcomes
<label for="{{outcome.name}}">{{outcome.name}}</label><input type="checkbox" name="{{outcome.name}}" value="{{outcome}}" checked <label for="{{outcome.name}}">{{outcome.name}}</label><input type="checkbox" name="{{outcome.name}}" value="{{outcome}}" checked
_="on click if me.checked show .outcome-{{outcome.id}} else hide .outcome-{{outcome.id}} end"> _="on click if me.checked show .outcome-{{outcome.id}} else hide .outcome-{{outcome.id}} end">
</span> </span>
{% endfor %} {% endfor %} {% endcomment %}
{% for category in categories %} {% for category, items in filtered_categories %}
<h2>{{category.name}}</h2> <h2>{{category.name}}</h2>
@@ -33,7 +43,7 @@ _="on click if me.checked show .outcome-{{outcome.id}} else hide .outcome-{{outc
<th>Radiology condition</th> <th>Radiology condition</th>
</tr> </tr>
{% for item in category.items_radiology.all %} {% for item in items %}
<tr class="outcome-{{item.outcome.id}}"> <tr class="outcome-{{item.outcome.id}}">
<td class="id">{{item.rcr_platform_id}}</td> <td class="id">{{item.rcr_platform_id}}</td>
<td>{{item.name}}</td> <td>{{item.name}}</td>
@@ -47,7 +57,7 @@ _="on click if me.checked show .outcome-{{outcome.id}} else hide .outcome-{{outc
</table> </table>
<p> <p>
Item count: {{category.items_radiology.count}} Item count: {{items.count}}
</p> </p>
{% endfor %} {% endfor %}
+10 -3
View File
@@ -11,7 +11,7 @@ from django.contrib.auth.models import User
from django.contrib.auth.decorators import user_passes_test from django.contrib.auth.decorators import user_passes_test
from django.db.models import Q from django.db.models import Q
from rcr.filters import ItemFilter from rcr.filters import ItemFilter, OutcomeFilter
from rcr.models import Item, Outcome, RadiologyCategory from rcr.models import Item, Outcome, RadiologyCategory
from rcr.forms import AssessorAssignmentForm, ItemForm from rcr.forms import AssessorAssignmentForm, ItemForm
@@ -76,17 +76,24 @@ def radiology_review(request):
def radiology_gap(request): def radiology_gap(request):
#items = Item.objects.all().prefetch_related("assessed_by") #items = Item.objects.all().prefetch_related("assessed_by")
item_filter = ItemFilter(request.GET, queryset=Item.objects.all().prefetch_related("assessed_by")) item_filter = OutcomeFilter(request.GET, queryset=Item.objects.all().prefetch_related("assessed_by"))
items = item_filter.qs.prefetch_related("assessed_by") items = item_filter.qs
categories = RadiologyCategory.objects.all().order_by("name").prefetch_related("items_radiology", "items_radiology__level", "items_radiology__radiology_condition") categories = RadiologyCategory.objects.all().order_by("name").prefetch_related("items_radiology", "items_radiology__level", "items_radiology__radiology_condition")
filtered_categories = []
for category in categories:
filtered_categories.append((category, item_filter.qs.intersection(category.items_radiology.all())))
conditions = Condition.objects.all().order_by("name") conditions = Condition.objects.all().order_by("name")
outcomes = Outcome.objects.all().order_by("name") outcomes = Outcome.objects.all().order_by("name")
return render(request, "rcr/gap.html", {"items": items, return render(request, "rcr/gap.html", {"items": items,
"item_filter": item_filter, "item_filter": item_filter,
"filtered_categories": filtered_categories,
"categories": categories, "categories": categories,
"conditions": conditions, "conditions": conditions,
"outcomes": outcomes, "outcomes": outcomes,