public bool Equals(ProviderQueryRequestBase other)
 {
     return base.Equals(other)
         && DescendantOption == other.DescendantOption
         && ProviderId == other.ProviderId
         && Enumerable.SequenceEqual(FilteringOrgUnitIds ?? new string[] { }, other.FilteringOrgUnitIds ?? new string[] { })
         && ForceAlphabetizeResults == other.ForceAlphabetizeResults
         && GenderId == other.GenderId
         && InsuranceId == other.InsuranceId
         && AffiliationId == other.AffiliationId
         && LanguageId == other.LanguageId
         && ClinicalInterestId == other.ClinicalInterestId
         && string.Equals(InsuranceName, other.InsuranceName, StringComparison.OrdinalIgnoreCase)
         && string.Equals(AffiliationName, other.AffiliationName, StringComparison.OrdinalIgnoreCase)
         && string.Equals(LocationName, other.LocationName, StringComparison.OrdinalIgnoreCase)
         && string.Equals(GenderName, other.GenderName, StringComparison.OrdinalIgnoreCase)
         && string.Equals(OrgUnitName, other.OrgUnitName, StringComparison.OrdinalIgnoreCase)
         && IsAcceptingNewPatients == other.IsAcceptingNewPatients
         && Enumerable.SequenceEqual(LanguageIds ?? new string[] { }, other.LanguageIds ?? new string[] { })
         && Enumerable.SequenceEqual(ClinicalInterestIds ?? new string[] { }, other.ClinicalInterestIds ?? new string[] { })
         && Enumerable.SequenceEqual(ProviderTypeIds ?? new string[] { }, other.ProviderTypeIds ?? new string[] { })
         && LinkedOption == other.LinkedOption
         && OrgUnitId == other.OrgUnitId
         && OrgUnitTypeId == other.OrgUnitTypeId
         && string.Equals(PostalCode, other.PostalCode)
         && string.Equals(ProviderName, other.ProviderName, StringComparison.OrdinalIgnoreCase)
         && string.Equals(Letter, other.Letter, StringComparison.OrdinalIgnoreCase)
         && Enumerable.SequenceEqual(SpecialtyIds ?? new string[] { }, other.SpecialtyIds ?? new string[] { })
         && string.Equals(SpecialtyName, other.SpecialtyName, StringComparison.OrdinalIgnoreCase)
         && ParentSpecialtyId == other.ParentSpecialtyId
         && Enumerable.SequenceEqual(ConditionIds ?? new string[] { }, other.ConditionIds ?? new string[] { })
         && string.Equals(ConditionName, other.ConditionName, StringComparison.OrdinalIgnoreCase)
         && ParentConditionId == other.ParentConditionId
         && string.Equals(LanguageName, other.LanguageName, StringComparison.OrdinalIgnoreCase)
         && string.Equals(ClinicalInterestName, other.ClinicalInterestName, StringComparison.OrdinalIgnoreCase)
         && string.Equals(ProviderTypeName, other.ProviderTypeName, StringComparison.OrdinalIgnoreCase)
         && string.Equals(City, other.City, StringComparison.OrdinalIgnoreCase)
         && string.Equals(State, other.State, StringComparison.OrdinalIgnoreCase)
         && RandomSortSeed == other.RandomSortSeed
         && UseNameAsKeyword == other.UseNameAsKeyword
         && Enumerable.SequenceEqual(AllowedProviderGroups ?? new string[] { }, other.AllowedProviderGroups ?? new string[] { })
         && string.Equals(Keyword, other.Keyword, StringComparison.OrdinalIgnoreCase)
         && Enumerable.SequenceEqual(DynamicColumns ?? new string[] { }, other.DynamicColumns ?? new string[] { })
         && SearchPattern == other.SearchPattern
         && PatientRating == other.PatientRating;
 }
 /// <summary>
 /// Retrieves the provider cache data.
 /// </summary>
 /// <param name="request"></param>
 /// <returns></returns>
 public IEnumerable<ProviderCacheView> GetData(ProviderQueryRequestBase request)
 {
     return GetData(request.OrgUnitId, request.OrgUnitContextKey, request.DescendantOption, request.LinkedOption);
 }