.
This commit is contained in:
@@ -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"
|
||||||
|
|||||||
@@ -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
@@ -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,
|
||||||
|
|||||||
Reference in New Issue
Block a user