diff --git a/smash/web/api_views/subject.py b/smash/web/api_views/subject.py
index 94785aef3e1207de7b2f9431725a8b39ad636599..ab558c01959f748304588899bebd91204d84ced0 100644
--- a/smash/web/api_views/subject.py
+++ b/smash/web/api_views/subject.py
@@ -31,12 +31,14 @@ def referrals(request):
     })
 
 
-def add_column(result, name, field_name, column_list, param, columns_used_in_study=None):
+def add_column(result, name, field_name, column_list, param, columns_used_in_study=None, visible_param=None):
     add = True
     if columns_used_in_study:
         add = getattr(columns_used_in_study, field_name)
     if add:
-        if column_list is None:
+        if visible_param is not None:
+            visible = visible_param
+        elif column_list is None:
             visible = True
         else:
             visible = getattr(column_list, field_name)
@@ -79,14 +81,10 @@ def get_subject_columns(request, subject_list_type):
     add_column(result, "Info sent", "information_sent", study_subject_columns, "yes_no_filter", study.columns)
     add_column(result, "Type", "type", study_subject_columns, "type_filter", study.columns)
     add_column(result, "Edit", "edit", None, None)
-    add_column(result, "Visit 1", "visit_1", None, "visit_filter")
-    add_column(result, "Visit 2", "visit_2", None, "visit_filter")
-    add_column(result, "Visit 3", "visit_3", None, "visit_filter")
-    add_column(result, "Visit 4", "visit_4", None, "visit_filter")
-    add_column(result, "Visit 5", "visit_5", None, "visit_filter")
-    add_column(result, "Visit 6", "visit_6", None, "visit_filter")
-    add_column(result, "Visit 7", "visit_7", None, "visit_filter")
-    add_column(result, "Visit 8", "visit_8", None, "visit_filter")
+    for visit_number in range(1, 9):
+        visit_key = "visit_" + str(visit_number)
+        add_column(result, "Visit " + str(visit_number), visit_key, None, "visit_filter",
+                   visible_param=study_subject_list.visits)
 
     return JsonResponse({"columns": result})
 
diff --git a/smash/web/migrations/0081_studysubjectlist_last_contact_attempt.py b/smash/web/migrations/0081_studysubjectlist_last_contact_attempt.py
index 571ce6737560d8d0f74f5689d790ff29202f8867..f08fc38f8c309472850c83f755bc79c5ed3742dd 100644
--- a/smash/web/migrations/0081_studysubjectlist_last_contact_attempt.py
+++ b/smash/web/migrations/0081_studysubjectlist_last_contact_attempt.py
@@ -5,16 +5,81 @@ from __future__ import unicode_literals
 from django.db import migrations, models
 
 
+# noinspection PyUnusedLocal
+# noinspection PyPep8Naming
+def create_default_columns_for_SUBJECT_LIST_NO_VISIT(apps, schema_editor):
+    # We can't import the Study model directly as it may be a newer
+    # version than this migration expects. We use the historical version.
+    SubjectColumns = apps.get_model("web", "SubjectColumns")
+    subject_columns = SubjectColumns.objects.create()
+    subject_columns.sex = False
+    subject_columns.first_name = True
+    subject_columns.last_name = True
+    subject_columns.languages = False
+    subject_columns.default_written_communication_language = False
+    subject_columns.phone_number = False
+    subject_columns.phone_number_2 = False
+    subject_columns.phone_number_3 = False
+    subject_columns.email = False
+    subject_columns.date_born = False
+    subject_columns.address = False
+    subject_columns.postal_code = False
+    subject_columns.city = False
+    subject_columns.country = False
+    subject_columns.dead = False
+    subject_columns.save()
+
+    StudyColumns = apps.get_model("web", "StudyColumns")
+    study_columns = StudyColumns.objects.create()
+    study_columns.postponed = False
+    study_columns.datetime_contact_reminder = False
+    study_columns.type = True
+    study_columns.default_location = True
+    study_columns.flying_team = True
+    study_columns.screening_number = True
+    study_columns.nd_number = False
+    study_columns.mpower_id = False
+    study_columns.comments = False
+    study_columns.referral = True
+    study_columns.diagnosis = False
+    study_columns.year_of_diagnosis = False
+    study_columns.information_sent = True
+    study_columns.pd_in_family = False
+    study_columns.resigned = False
+    study_columns.resign_reason = False
+    study_columns.save()
+
+
 class Migration(migrations.Migration):
     dependencies = [
         ('web', '0080_auto_20171204_1341'),
     ]
 
     operations = [
+        migrations.AddField(
+            model_name='studysubjectlist',
+            name='visits',
+            field=models.BooleanField(default=True, verbose_name=b'Visits summary'),
+        ),
         migrations.AddField(
             model_name='studysubjectlist',
             name='last_contact_attempt',
             field=models.BooleanField(default=False, verbose_name=b'Last contact attempt'),
         ),
-        migrations.RunSQL("UPDATE web_studysubjectlist SET last_contact_attempt=TRUE WHERE type='REQUIRE_CONTACT'"),
+        migrations.RunPython(create_default_columns_for_SUBJECT_LIST_NO_VISIT),
+
+        migrations.RunSQL('INSERT INTO web_studysubjectlist (' +
+                          'study_id, ' +
+                          'visible_subject_study_columns_id, ' +
+                          'visible_subject_columns_id, ' +
+                          'last_contact_attempt,'
+                          'visits,'
+                          'type) ' +
+                          "SELECT " +
+                          "1, " +
+                          "max(web_studycolumns.id), " +
+                          "max(web_subjectcolumns.id), " +
+                          "false, " +
+                          "false, " +
+                          "'NO_VISIT' FROM web_studycolumns, web_subjectcolumns;"),
     ]
diff --git a/smash/web/migrations/0082_studysubjectlist_visits.py b/smash/web/migrations/0082_studysubjectlist_visits.py
new file mode 100644
index 0000000000000000000000000000000000000000..a14a9f01e6749a562a5d3d03802c23e9d80741da
--- /dev/null
+++ b/smash/web/migrations/0082_studysubjectlist_visits.py
@@ -0,0 +1,15 @@
+# -*- coding: utf-8 -*-
+# Generated by Django 1.10.7 on 2017-12-04 16:47
+from __future__ import unicode_literals
+
+from django.db import migrations, models
+
+
+class Migration(migrations.Migration):
+
+    dependencies = [
+        ('web', '0081_studysubjectlist_last_contact_attempt'),
+    ]
+
+    operations = [
+    ]
diff --git a/smash/web/models/study_subject_list.py b/smash/web/models/study_subject_list.py
index 887f7719e46aa3b7951909693ddbbf3465e89840..1b09054fd1391f85de1bbaccf8a390c63bc2a09c 100644
--- a/smash/web/models/study_subject_list.py
+++ b/smash/web/models/study_subject_list.py
@@ -41,6 +41,11 @@ class StudySubjectList(models.Model):
         verbose_name='Last contact attempt'
     )
 
+    visits = models.BooleanField(
+        default=True,
+        verbose_name='Visits summary'
+    )
+
     type = models.CharField(max_length=50,
                             choices=SUBJECT_LIST_CHOICES.items(),
                             verbose_name='Type o list',