diff --git a/smash/web/forms/study_subject_forms.py b/smash/web/forms/study_subject_forms.py
index 60a252a628b6413117352a4a65d8c1125eabed94..b6173c70a9376d1780e0fae8b28c83c17cf0cfa2 100644
--- a/smash/web/forms/study_subject_forms.py
+++ b/smash/web/forms/study_subject_forms.py
@@ -1,12 +1,11 @@
 import logging
-import re
 
+from distutils.util import strtobool
 from django import forms
 from django.forms import ModelForm
-from web.models import ConfigurationItem
-from distutils.util import strtobool
 
 from web.forms.forms import DATETIMEPICKER_DATE_ATTRS, get_worker_from_args
+from web.models import ConfigurationItem
 from web.models import StudySubject, Study, StudyColumns, VoucherType, Worker
 from web.models.constants import SCREENING_NUMBER_PREFIXES_FOR_TYPE, VISIT_SHOW_VISIT_NUMBER_FROM_ZERO
 from web.models.worker_study_role import WORKER_HEALTH_PARTNER
@@ -16,17 +15,20 @@ logger = logging.getLogger(__name__)
 
 
 class StudySubjectForm(ModelForm):
-    datetime_contact_reminder = forms.DateTimeField(label="Contact on", widget=forms.DateTimeInput(DATETIMEPICKER_DATE_ATTRS), required=False)
+    datetime_contact_reminder = forms.DateTimeField(label="Contact on",
+                                                    widget=forms.DateTimeInput(DATETIMEPICKER_DATE_ATTRS),
+                                                    required=False)
     referral_letter = forms.FileField(label='Referral letter', widget=SecuredFileWidget(), required=False)
-    voucher_types = forms.ModelMultipleChoiceField(required=False, widget=forms.CheckboxSelectMultiple, queryset=VoucherType.objects.all())
+    voucher_types = forms.ModelMultipleChoiceField(required=False, widget=forms.CheckboxSelectMultiple,
+                                                   queryset=VoucherType.objects.all())
 
     def __init__(self, *args, **kwargs):
         super(StudySubjectForm, self).__init__(*args, **kwargs)
         self.fields['health_partner'].queryset = Worker.get_workers_by_worker_type(
             WORKER_HEALTH_PARTNER)
-        
+
         visit_from_zero = ConfigurationItem.objects.get(type=VISIT_SHOW_VISIT_NUMBER_FROM_ZERO).value
-        #True values are y, yes, t, true, on and 1; false values are n, no, f, false, off and 0.
+        # True values are y, yes, t, true, on and 1; false values are n, no, f, false, off and 0.
         if strtobool(visit_from_zero):
             virus_visit_numbers = range(0, 5)
             for one_based_idx, virus_visit_number in enumerate(virus_visit_numbers, 1):
@@ -36,9 +38,7 @@ class StudySubjectForm(ModelForm):
                 self.fields[date_field].label = 'Visit {} RT-PCR date'.format(virus_visit_number)
 
 
-
 class StudySubjectAddForm(StudySubjectForm):
-
     class Meta:
         model = StudySubject
         fields = '__all__'
@@ -49,16 +49,8 @@ class StudySubjectAddForm(StudySubjectForm):
         self.study = get_study_from_args(kwargs)
 
         super(StudySubjectAddForm, self).__init__(*args, **kwargs)
-        self.fields['virus_test_1'].widget.attrs['readonly'] = True
-        self.fields['virus_test_2'].widget.attrs['readonly'] = True
-        self.fields['virus_test_3'].widget.attrs['readonly'] = True
-        self.fields['virus_test_4'].widget.attrs['readonly'] = True
-        self.fields['virus_test_5'].widget.attrs['readonly'] = True
-        self.fields['virus_test_1_updated'].widget.attrs['readonly'] = True
-        self.fields['virus_test_2_updated'].widget.attrs['readonly'] = True
-        self.fields['virus_test_3_updated'].widget.attrs['readonly'] = True
-        self.fields['virus_test_4_updated'].widget.attrs['readonly'] = True
-        self.fields['virus_test_5_updated'].widget.attrs['readonly'] = True
+        for visit_number in range(1, 6):
+            disable_virus_test_field(self, visit_number)
 
         prepare_study_subject_fields(fields=self.fields, study=self.study)
 
@@ -117,7 +109,6 @@ def get_new_screening_number(screening_number_prefix):
 
 
 class StudySubjectDetailForm(StudySubjectForm):
-
     class Meta:
         model = StudySubject
         fields = '__all__'
@@ -152,17 +143,9 @@ class StudySubjectEditForm(StudySubjectForm):
         self.fields['resigned'].disabled = was_resigned
         self.fields['endpoint_reached'].disabled = endpoint_was_reached
 
-
-        self.fields['virus_test_1'].widget.attrs['readonly'] = True
-        self.fields['virus_test_2'].widget.attrs['readonly'] = True
-        self.fields['virus_test_3'].widget.attrs['readonly'] = True
-        self.fields['virus_test_4'].widget.attrs['readonly'] = True
-        self.fields['virus_test_5'].widget.attrs['readonly'] = True
-        self.fields['virus_test_1_updated'].widget.attrs['readonly'] = True
-        self.fields['virus_test_2_updated'].widget.attrs['readonly'] = True
-        self.fields['virus_test_3_updated'].widget.attrs['readonly'] = True
-        self.fields['virus_test_4_updated'].widget.attrs['readonly'] = True
-        self.fields['virus_test_5_updated'].widget.attrs['readonly'] = True
+        for visit_number in range(1, 6):
+            disable_virus_test_field(self, visit_number)
+            self.update_virus_inconclusive_data(visit_number)
 
         prepare_study_subject_fields(fields=self.fields, study=self.study)
 
@@ -171,11 +154,31 @@ class StudySubjectEditForm(StudySubjectForm):
         validate_subject_mpower_number(self, self.cleaned_data)
         validate_subject_resign_reason(self, self.cleaned_data)
 
+    def update_virus_inconclusive_data(self, visit_number):
+        test_result_column_name = 'virus_test_{}'.format(visit_number)
+        test_date_column_name = 'virus_test_{}_updated'.format(visit_number)
+
+        self.fields[test_result_column_name].widget.choices.append(("Inc", 'Inconclusive'))
+        instance = getattr(self, 'instance', None)
+        if instance and instance.id:
+            test_result = getattr(instance, test_result_column_name)
+            test_date = getattr(instance, test_date_column_name)
+            if test_result is None and test_date is not None:
+                self.initial[test_result_column_name] = "Inc"
+
     class Meta:
         model = StudySubject
         fields = '__all__'
 
 
+def disable_virus_test_field(self, visit_number):
+    test_result_column_name = 'virus_test_{}'.format(visit_number)
+    test_date_column_name = 'virus_test_{}_updated'.format(visit_number)
+    self.fields[test_result_column_name].widget.attrs['readonly'] = True
+    self.fields[test_result_column_name].widget.attrs['disabled'] = True
+    self.fields[test_date_column_name].widget.attrs['readonly'] = True
+
+
 def get_study_from_args(kwargs):
     study = kwargs.pop('study', None)
     if study is None:
@@ -251,7 +254,8 @@ def validate_subject_nd_number(self, cleaned_data):
                 if subjects_from_db:
                     if subjects_from_db[0].screening_number != cleaned_data.get('screening_number', ''):
                         self.add_error('nd_number', "ND number already in use")
-        #else: #empty nd_number is valid
+        # else: #empty nd_number is valid
+
 
 def validate_subject_resign_reason(self, cleaned_data):
     if self.study.columns.resigned and self.study.columns.resign_reason: