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); } }