diff --git a/smash/web/templates/doctors/change_password.html b/smash/web/templates/doctors/change_password.html
new file mode 100644
index 0000000000000000000000000000000000000000..17ee498118c8860f6066cb80b3513694ccab0e8c
--- /dev/null
+++ b/smash/web/templates/doctors/change_password.html
@@ -0,0 +1,51 @@
+{% extends "_base.html" %}
+{% load static %}
+{% load filters %}
+
+{% block styles %}
+    {{ block.super }}
+    <!-- DataTables -->
+    <link rel="stylesheet" href="{% static 'AdminLTE/plugins/datatables/dataTables.bootstrap.css' %}">
+    <style type="text/css">
+        .hidden_form_field{
+            display: none;
+        }
+        form.password_change{
+        	display: grid;
+    		max-width: 400px;
+        }
+        button[type=submit]{
+        	margin-top: 15px;
+        }
+    </style>
+{% endblock styles %}
+
+{% block ui_active_tab %}'workers'{% endblock ui_active_tab %}
+
+{% block title %}{{ block.super }} - Change password {% endblock %}
+
+{% block page_header %} Changing password for worker <b>{{ worker }}</b> with username: <b>{{ user }}</b> {% endblock page_header %}
+
+{% block breadcrumb %}
+    {% include "doctors/breadcrumb.html" %}
+{% endblock breadcrumb %}
+
+{% block maincontent %}
+
+    {% block content %}
+
+<form class="password_change" method="post">
+  {% csrf_token %}
+  {{ form }}
+  <button type="submit">Save changes</button>
+</form>
+
+
+{% endblock %}
+
+{% endblock maincontent %}
+
+{% block scripts %}
+    {{ block.super }}
+
+{% endblock scripts %}
\ No newline at end of file
diff --git a/smash/web/urls.py b/smash/web/urls.py
index 7fd886c2015f8e689d7ba0360a30171b36ec6ba2..9535617e2553ac24623eb791e74bd2704f9ae726 100644
--- a/smash/web/urls.py
+++ b/smash/web/urls.py
@@ -33,6 +33,8 @@ urlpatterns = [
         {'exception': Exception('Not Found')}
     ),
 
+    url(r'^change_password/$', views.password.change_password, name='change_password'),
+
     ####################
     #   APPOINTMENTS   #
     ####################
diff --git a/smash/web/views/__init__.py b/smash/web/views/__init__.py
index fa58ba75a4ac649f8e573ce6a4cc339583d5c402..782032798442c842718a20158a2fcebab43614c4 100644
--- a/smash/web/views/__init__.py
+++ b/smash/web/views/__init__.py
@@ -97,3 +97,4 @@ import redcap
 import rooms
 import uploaded_files
 import study
+import password
\ No newline at end of file
diff --git a/smash/web/views/password.py b/smash/web/views/password.py
new file mode 100644
index 0000000000000000000000000000000000000000..51550730a69b1cc7d72c0fefa162ac62d9237eb8
--- /dev/null
+++ b/smash/web/views/password.py
@@ -0,0 +1,22 @@
+from django.contrib import messages
+from django.contrib.auth import update_session_auth_hash
+from django.contrib.auth.forms import PasswordChangeForm
+from django.shortcuts import render, redirect
+from . import wrap_response
+from web.models.worker import Worker
+
+def change_password(request):
+    if request.method == 'POST':
+        form = PasswordChangeForm(request.user, request.POST)
+        if form.is_valid():
+            user = form.save()
+            update_session_auth_hash(request, user)  # Important!
+            messages.success(request, 'The password for {} was successfully updated!'.format(request.user))
+            return redirect('web.views.workers')
+        else:
+            messages.error(request, 'Please correct the error below.')
+    else:
+        form = PasswordChangeForm(request.user)
+
+    worker = Worker.get_by_user(request.user)
+    return wrap_response(request, 'doctors/change_password.html', {'form': form, 'worker': worker})
\ No newline at end of file