diff --git a/smash/web/forms/worker_form.py b/smash/web/forms/worker_form.py
index 90bb384110bdbd8d07a1dbb6596e4b6e3ad83b3e..43f28958daee1ca1e839ce3ef8123c972aefe61d 100644
--- a/smash/web/forms/worker_form.py
+++ b/smash/web/forms/worker_form.py
@@ -1,47 +1,10 @@
 from django import forms
 from django.forms import ModelForm
 
+from web.models.worker import role_choices_by_worker_type
 from web.models import Worker, WorkerStudyRole
 from web.models.constants import GLOBAL_STUDY_ID
-from web.models.worker_study_role import STUDY_ROLE_CHOICES, HEALTH_PARTNER_ROLE_CHOICES, VOUCHER_PARTNER_ROLE_CHOICES, \
-    WORKER_STAFF, WORKER_HEALTH_PARTNER, WORKER_VOUCHER_PARTNER
-
-
-def role_choices_by_worker_type(worker_type):
-    if worker_type == WORKER_STAFF:
-        return STUDY_ROLE_CHOICES
-    elif worker_type == WORKER_HEALTH_PARTNER:
-        return HEALTH_PARTNER_ROLE_CHOICES
-    elif worker_type == WORKER_VOUCHER_PARTNER:
-        return VOUCHER_PARTNER_ROLE_CHOICES
-    else:
-        return ()
-
-
-def worker_type_by_worker(worker):
-    roles = worker.roles.filter(study=GLOBAL_STUDY_ID)
-    if roles.count() == 0:
-        return WORKER_STAFF
-    role = roles[0]
-    for role_type, role_name in STUDY_ROLE_CHOICES.items():
-        if role_type == role:
-            return WORKER_STAFF
-    for role_type, role_name in HEALTH_PARTNER_ROLE_CHOICES.items():
-        if role_type == role:
-            return WORKER_HEALTH_PARTNER
-    for role_type, role_name in VOUCHER_PARTNER_ROLE_CHOICES.items():
-        if role_type == role:
-            return WORKER_VOUCHER_PARTNER
-    return WORKER_STAFF
-
-
-def roles_by_worker_type(worker_type):
-    role_choices = role_choices_by_worker_type(worker_type)
-    roles = []
-
-    for role_type, role_name in role_choices:
-        roles.append(role_type)
-    return roles
+from web.models.worker_study_role import WORKER_STAFF
 
 
 class WorkerForm(ModelForm):
diff --git a/smash/web/models/worker.py b/smash/web/models/worker.py
index b39603ad20052fafc20550c59387e7a980cb741c..76f369a9eee1b266d7334e1300315da9736a5e62 100644
--- a/smash/web/models/worker.py
+++ b/smash/web/models/worker.py
@@ -6,10 +6,49 @@ from django.contrib.auth.models import User, AnonymousUser
 from django.db import models
 
 from web.models.constants import GLOBAL_STUDY_ID
+from web.models.worker_study_role import STUDY_ROLE_CHOICES, HEALTH_PARTNER_ROLE_CHOICES, VOUCHER_PARTNER_ROLE_CHOICES, \
+    WORKER_STAFF, WORKER_HEALTH_PARTNER, WORKER_VOUCHER_PARTNER
 
 logger = logging.getLogger(__name__)
 
 
+def roles_by_worker_type(worker_type):
+    role_choices = role_choices_by_worker_type(worker_type)
+    roles = []
+
+    for role_type, role_name in role_choices:
+        roles.append(role_type)
+    return roles
+
+
+def role_choices_by_worker_type(worker_type):
+    if worker_type == WORKER_STAFF:
+        return STUDY_ROLE_CHOICES
+    elif worker_type == WORKER_HEALTH_PARTNER:
+        return HEALTH_PARTNER_ROLE_CHOICES
+    elif worker_type == WORKER_VOUCHER_PARTNER:
+        return VOUCHER_PARTNER_ROLE_CHOICES
+    else:
+        return ()
+
+
+def worker_type_by_worker(worker):
+    roles = worker.roles.filter(study=GLOBAL_STUDY_ID)
+    if roles.count() == 0:
+        return WORKER_STAFF
+    role = roles[0]
+    for role_type, role_name in STUDY_ROLE_CHOICES.items():
+        if role_type == role:
+            return WORKER_STAFF
+    for role_type, role_name in HEALTH_PARTNER_ROLE_CHOICES.items():
+        if role_type == role:
+            return WORKER_HEALTH_PARTNER
+    for role_type, role_name in VOUCHER_PARTNER_ROLE_CHOICES.items():
+        if role_type == role:
+            return WORKER_VOUCHER_PARTNER
+    return WORKER_STAFF
+
+
 class Worker(models.Model):
     class Meta:
         app_label = 'web'
@@ -85,6 +124,11 @@ class Worker(models.Model):
         else:
             return None
 
+    @staticmethod
+    def get_workers_by_worker_type(worker_type, study_id=GLOBAL_STUDY_ID):
+        return Worker.objects.filter(roles__study_id=study_id,
+                                     roles__role__in=roles_by_worker_type(worker_type))
+
     @staticmethod
     def get_details(the_user):
         persons = Worker.objects.filter(user=the_user)
diff --git a/smash/web/views/worker.py b/smash/web/views/worker.py
index 61eeb94da90141bdaa8484e82cb05d14a502d215..a67abe929db49674e902e0ab42d050a3eb70c397 100644
--- a/smash/web/views/worker.py
+++ b/smash/web/views/worker.py
@@ -6,9 +6,9 @@ from django.shortcuts import redirect, get_object_or_404
 
 from web.forms import AvailabilityAddForm, AvailabilityEditForm, HolidayAddForm
 from web.forms import WorkerForm
-from web.forms.worker_form import roles_by_worker_type, worker_type_by_worker
 from web.models import Worker, Availability, Holiday
 from web.models.constants import WEEKDAY_CHOICES, GLOBAL_STUDY_ID
+from web.models.worker import worker_type_by_worker
 from web.models.worker_study_role import WORKER_STAFF
 from . import wrap_response
 
@@ -16,9 +16,7 @@ logger = logging.getLogger(__name__)
 
 
 def worker_list(request, worker_type=WORKER_STAFF):
-    doctors_list = Worker.objects.filter(roles__study_id=GLOBAL_STUDY_ID,
-                                         roles__role__in=roles_by_worker_type(worker_type)).order_by(
-        '-last_name')
+    doctors_list = Worker.get_workers_by_worker_type(worker_type, study_id=GLOBAL_STUDY_ID, ).order_by('-last_name')
     context = {
         'doctors_list': doctors_list,
         'worker_type': worker_type