private void SaveProvider(CoolTextBox providerEntryControl, Func <Provider, bool> providerTypeSelectorExpression, bool pcp, bool refPhys) { //always do this ProviderList providersForThisAppt = this._patient.Providers; providersForThisAppt.RemoveAll(providerTypeSelectorExpression); //break out if they set it empty string providerName = providerEntryControl.Text; int? providerId = (int?)providerEntryControl.Value; if (string.IsNullOrEmpty(providerName)) { return; } Provider selectedProvider; if (providerId.HasValue) { selectedProvider = _allProviders.Single(provider => provider.providerID == providerId); } else { //if it's a new provider, instantiate it selectedProvider = new Provider { displayName = providerName }; this._allProviders.AddToList(selectedProvider, new HraModelChangedEventArgs(null)); } selectedProvider.PCP = pcp; selectedProvider.refPhys = refPhys; //add to patient record this._patient.Providers.Add(selectedProvider); this._patient.Providers.PersistFullList(new HraModelChangedEventArgs(this)); }