diff --git a/smash/web/models/worker.py b/smash/web/models/worker.py
index c631fd4e12d048cabf23b3c48529a1e477dffa57..deafccc087d108c25c133c0bafe0048f6cbbef83 100644
--- a/smash/web/models/worker.py
+++ b/smash/web/models/worker.py
@@ -7,7 +7,7 @@ from django.db import models
 
 from web.models.constants import GLOBAL_STUDY_ID, COUNTRY_OTHER_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
+    VOUCHER_PARTNER_ROLE_CHOICES, WORKER_STAFF, WORKER_HEALTH_PARTNER, WORKER_VOUCHER_PARTNER, ROLE_CHOICES
 
 logger = logging.getLogger(__name__)
 
@@ -161,6 +161,16 @@ class Worker(models.Model):
         else:
             return False
 
+    @property
+    def role(self):
+        roles = self.roles.filter(study=GLOBAL_STUDY_ID)
+        if roles.count() == 0:
+            return WORKER_STAFF
+        role = roles[0].role
+        if role not in [role_type for role_type, _ in ROLE_CHOICES]:
+            raise TypeError("Unknown worker role")
+        return role
+
     @staticmethod
     def get_by_user(the_user):
         if isinstance(the_user, User):
diff --git a/smash/web/templates/doctors/index.html b/smash/web/templates/doctors/index.html
index 6960412e877ef7582b29e6dd3bb01060f1ffff44..93d2bf58d6a0e86f891afa629cab2fadd74b8459 100644
--- a/smash/web/templates/doctors/index.html
+++ b/smash/web/templates/doctors/index.html
@@ -38,6 +38,7 @@
                     <th>First name</th>
                     <th>Last name</th>
                     <th>Unit</th>
+                    <th>Role</th>
                 {% else %}
                     <th>Name</th>
                 {% endif %}
@@ -57,6 +58,7 @@
                         <td>{{ worker.first_name }}</td>
                         <td>{{ worker.last_name }}</td>
                         <td>{{ worker.unit }}</td>
+                        <td>{{ worker.role }}</td>
                     {% else %}
                         <td>{{ worker.name }}</td>
                     {% endif %}
diff --git a/smash/web/tests/models/test_worker.py b/smash/web/tests/models/test_worker.py
index 1b479467a673a15eb108e2ba61aaf519fde703f2..338ef668e0ca0b9befe465f28e17884ba7613f98 100644
--- a/smash/web/tests/models/test_worker.py
+++ b/smash/web/tests/models/test_worker.py
@@ -91,3 +91,29 @@ class WorkerModelTests(TestCase):
         worker.roles.update(role="unk")
         with self.assertRaises(Exception):
             worker_type_by_worker(worker)
+
+    #worker role tests
+
+    def test_worker_role_by_worker_without_role(self):
+        self.assertEqual(WORKER_STAFF, Worker().role)
+
+    def test_worker_role_by_worker_with_secretary_role(self):
+        worker = create_worker()
+        worker.roles.update(role=ROLE_CHOICES_SECRETARY)
+        self.assertEqual(ROLE_CHOICES_SECRETARY, worker.role)
+
+    def test_worker_role_by_worker_with_health_partner_role(self):
+        worker = create_worker()
+        worker.roles.update(role=ROLE_CHOICES_HEALTH_PARTNER)
+        self.assertEqual(ROLE_CHOICES_HEALTH_PARTNER, worker.role)
+
+    def test_worker_role_by_worker_with_voucher_partner_role(self):
+        worker = create_worker()
+        worker.roles.update(role=ROLE_CHOICES_VOUCHER_PARTNER)
+        self.assertEqual(ROLE_CHOICES_VOUCHER_PARTNER, worker.role)
+
+    def test_worker_role_by_worker_with_invalid_role(self):
+        worker = create_worker()
+        worker.roles.update(role="unk")
+        with self.assertRaises(Exception):
+            worker.role