diff --git a/django/website/hid/tests/views_tests.py b/django/website/hid/tests/views_tests.py
index 9ce9cd1399d6e3f3db448ad387049d98572b856e..d6c65db3e74a2b9248134ed0d57962ee58904e87 100644
--- a/django/website/hid/tests/views_tests.py
+++ b/django/website/hid/tests/views_tests.py
@@ -128,7 +128,7 @@ def test_get_category_options_uses_terms():
     )
 
     view = ViewItems()
-    options = view.get_category_options(ebola_questions.id)
+    options = view.get_category_options(ebola_questions.slug)
 
     assert (type_1.name, type_1.long_name) in options
     assert (type_2.name, type_2.long_name) in options
@@ -174,7 +174,7 @@ def test_get_category_options_orders_by_lowercase_name():
         )
 
     view = ViewItems()
-    options = view.get_category_options(ebola_questions.id)
+    options = view.get_category_options(ebola_questions.slug)
     # Make sure we are only comparing with out test values!
     options = [o for o in options if o in test_term_values]
 
diff --git a/django/website/hid/views.py b/django/website/hid/views.py
index 3dffd8269d33c23e3cc4997b1c4c3496d070aac8..a027f650a5a6d0b18d3180e4d93ce75624e0f320 100644
--- a/django/website/hid/views.py
+++ b/django/website/hid/views.py
@@ -13,7 +13,6 @@ from django.views.generic.base import TemplateView
 from django_tables2 import SingleTableView
 
 from chn_spreadsheet.importer import Importer, SheetImportException
-from data_layer.models import Term
 import transport
 from transport.exceptions import TransportException
 from .assets import require_assets
@@ -89,26 +88,18 @@ class ViewItems(SingleTableView):
     def get_queryset(self):
         return transport.items.list()
 
-    def get_category_options(self, categories_id=None):
-        # TODO: Use data layer
-        terms = self.get_matching_terms(categories_id)
-        return tuple((t.name, t.long_name) for t in terms)
-
-    def get_matching_terms(self, categories_id):
-        if categories_id is None:
-            return (Term.objects
-                    .extra(select={'name_lower': 'lower(name)'})
-                    .order_by('name_lower')
-                    .all())
-
-        return (Term.objects
-                .extra(select={'name_lower': 'lower(name)'})
-                .order_by('name_lower')
-                .filter(taxonomy__id=categories_id))
+    def get_category_options(self, taxonomy_slug=None):
+        if taxonomy_slug is not None:
+            terms = transport.terms.list(taxonomy=taxonomy_slug)
+        else:
+            terms = transport.terms.list()
+        terms.sort(key=lambda e: e['name'].lower())
+        return tuple((t['name'], t['long_name']) for t in terms)
 
     def get_table(self, **kwargs):
-        # TODO: Filter on taxonomy
-        kwargs['categories'] = self.get_category_options()
+        kwargs['categories'] = self.get_category_options(
+            QUESTION_TYPE_TAXONOMY
+        )
         return super(ViewItems, self).get_table(**kwargs)
 
     def get_context_data(self, **kwargs):
@@ -127,7 +118,7 @@ class ViewItems(SingleTableView):
                 label=_('Set question type'),
                 items=[(short_name, short_name)
                        for short_name, long_name
-                       in self.get_category_options()],
+                       in self.get_category_options(QUESTION_TYPE_TAXONOMY)],
                 prefix=ADD_CATEGORY_PREFIX
             )
         ]