protected override async Task ValidateAndSave()
        {
            PatientDetails.NotificationId = NotificationId;
            await Service.UpdatePatientFlagsAsync(PatientDetails);

            // Remove already invalidated states from modelState as rely
            // on changes made in UpdatePatientFlags
            ModelState.ClearValidationState("PatientDetails.Postcode");
            ModelState.ClearValidationState("PatientDetails.NHSNumber");
            ModelState.ClearValidationState("PatientDetails.OccupationOther");
            if (PatientDetails.UkBorn)
            {
                ModelState.ClearValidationState("PatientDetails.YearOfUkEntry");
            }

            PatientDetails.SetValidationContext(Notification);
            await FindAndSetPostcodeAsync();

            ValidationService.TrySetFormattedDate(PatientDetails, "Patient", nameof(PatientDetails.Dob), FormattedDob);

            if (TryValidateModel(PatientDetails, nameof(PatientDetails)))
            {
                await Service.UpdatePatientDetailsAsync(Notification, PatientDetails);
            }
        }