---
title: SAIF.Business.View.Provider operations and processes
summary: Operation catalog and cross-operation hub for provider, provider-location, and provider-reference retrieval and search.
status: draft
owner: SAIF Doc Gen
last_reviewed: 2026-07-30
library: SAIF.Business.View.Provider
reference_type: package
---

# SAIF.Business.View.Provider operations and processes

This page is the operation catalog and cross-operation hub for `SAIF.Business.View.Provider`. The library exposes nine read-only retrieval and search operations covering providers, provider locations and their addresses/relationships/ineligibility periods, provider tax IDs, provider type reference data, a dynamic provider search, and a set of provider-location ancillary reference lists (MCO enrollments, DCBS cost charges, offered services, and service contracts). Every operation in this library is retrieve-only — no operation persists changes back to the database. Each operation's detailed, step-by-step logic lives in its own page under `operations/`.

## Operation catalog

| Operation | Intent | Trigger | Inputs | Outputs | Rules | Tables | SQL |
| --- | --- | --- | --- | --- | --- | --- | --- |
| [Provider retrieval](operations/provider-retrieval.md) | Retrieve a single provider by ID or primary tax ID, or a filtered collection of providers | `clsProvider.GetProvider(dpi, providerID)`, `clsProvider.GetProvider(dpi, primaryTaxID)`, or `clsProviderCollection.GetProviderCollection`/`GetProvidersUsingWhere` | Provider ID (Decimal) or primary tax ID (String); optional dynamic `WHERE` fragment for the collection path | Populated `clsProvider` or `clsProviderCollection` | None catalogued* | [PROVIDER](database-tables.md#provider), [PROVIDER_TAX_ID](database-tables.md#provider_tax_id) | [SQL-003](sql/SQL-003-saif-business-view-provider.md), [SQL-004](sql/SQL-004-saif-business-view-provider.md), [SQL-007](sql/SQL-007-saif-business-view-provider.md) |
| [Provider location retrieval](operations/provider-location-retrieval.md) | Retrieve a single provider location by ID, or all locations for a provider or provider type, with lazy-loaded child data | `clsProviderLocation.GetProviderLocation(dpi, locationID)`, or `clsProviderLocationCollection.GetProviderLocations(dpi, providerID)`/`GetProviderLocationsByType(dpi, typeCode)` | Provider location ID, provider ID, or provider type code | Populated `clsProviderLocation` or `clsProviderLocationCollection`, with lazy-load access to address, relationship, ineligibility-period, type, and ancillary data | None catalogued* | [PROVIDER_LOCATION](database-tables.md#provider_location) | [SQL-010](sql/SQL-010-saif-business-view-provider.md), [SQL-011](sql/SQL-011-saif-business-view-provider.md), [SQL-012](sql/SQL-012-saif-business-view-provider.md) |
| [Provider address retrieval](operations/provider-address-retrieval.md) | Retrieve the address collection for a provider location, or resolve a single child/parent billing address | `clsProviderAddressCollection.GetProviderAddressCollection(dpi, locationID)`, or `clsProviderAddress.GetAddress(...)` static overloads | Provider location ID | Populated `clsProviderAddressCollection`, or a single resolved `clsProviderAddress` | None catalogued* | [PROVIDER_LOCATION](database-tables.md#provider_location), [PROVIDER_ADDRESS](database-tables.md#provider_address) | [SQL-005](sql/SQL-005-saif-business-view-provider.md), [SQL-006](sql/SQL-006-saif-business-view-provider.md) |
| [Provider relationship retrieval](operations/provider-relationship-retrieval.md) | Retrieve provider-location relationships where the given location is the parent or the child | `clsProviderRelationshipCollection.GetChildProviderRelationshipCollection(dpi, locationID)`/`GetParentProviderRelationshipCollection(dpi, locationID)` | Provider location ID | Populated `clsProviderRelationshipCollection` | None catalogued* | [PROVIDER_LOCATION](database-tables.md#provider_location), [PROVIDER_RELATIONSHIP](database-tables.md#provider_relationship) | [SQL-013](sql/SQL-013-saif-business-view-provider.md), [SQL-014](sql/SQL-014-saif-business-view-provider.md) |
| [Provider ineligibility period retrieval](operations/provider-ineligibility-period-retrieval.md) | Retrieve a single ineligibility period record, or all ineligibility periods for a provider location | `clsProviderIneligibilityPeriod.GetProviderIneligibilityPeriod(dpi, periodID)`, or `clsProviderIneligibilityPeriodCollection.GetProviderIneligibilityPeriodCollection(dpi, locationID)` | Ineligibility period ID, or provider location ID | Populated `clsProviderIneligibilityPeriod` or `clsProviderIneligibilityPeriodCollection` | None catalogued* | [PROVIDER_INELIG_PERIOD](database-tables.md#provider_inelig_period) | [SQL-008](sql/SQL-008-saif-business-view-provider.md), [SQL-009](sql/SQL-009-saif-business-view-provider.md) |
| [Provider tax ID retrieval](operations/provider-tax-id-retrieval.md) | Retrieve the tax ID records associated with a provider (retrieve-only) | `clsProviderTaxIDCollection.GetProviderTaxIDs(dpi, providerID)`, or via `clsProvider.TaxIDs` | Provider ID | Populated `clsProviderTaxIDCollection` | [BR-004](business-rules.md#br-004-provider-tax-id-retrieve-only-access) | [PROVIDER_TAX_ID](database-tables.md#provider_tax_id) | [SQL-018](sql/SQL-018-saif-business-view-provider.md) |
| [Provider type reference data](operations/provider-type-reference-data.md) | Retrieve a single provider type code, or the full provider type reference-data catalog (retrieve-only) | `clsProviderType.GetProviderType(dpi, code)`, or `clsProviderTypeCollection.GetProviderTypeCollection(dpi)` | Provider type code, or none | Populated `clsProviderType` or `clsProviderTypeCollection` | [BR-001](business-rules.md#br-001-provider-type-read-only-criteria) | [PROVIDER_TYPE_CODE](database-tables.md#provider_type_code) | [SQL-019](sql/SQL-019-saif-business-view-provider.md), [SQL-020](sql/SQL-020-saif-business-view-provider.md) |
| [Provider search](operations/provider-search.md) | Dynamically search providers/locations across service type, MCO plan, business/person flag, tax ID, other identifier, name, address, and phone filters | `clsProviderSearch.SearchCriteria` populated, then `searchForProvider()` | Service type, MCO plan, business/person flag, tax ID, other ID, provider name, type, street, city, state, zip, area code, phone (all optional) | `clsProviders` collection of `clsSearchResults`, capped at 300 rows | [BR-003](business-rules.md#br-003-provider-search-dynamic-join-filtering) | [PROVIDER_LOCATION](database-tables.md#provider_location), [PROVIDER_TYPE_CODE](database-tables.md#provider_type_code), [PROVIDER_ADDRESS](database-tables.md#provider_address), [PROVIDER_TAX_ID](database-tables.md#provider_tax_id), [PROVIDER_IDENTITY](database-tables.md#provider_identity), [PROVIDER_SERVICE](database-tables.md#provider_service), [MCO_PROVIDER](database-tables.md#mco_provider) | [SQL-015](sql/SQL-015-saif-business-view-provider.md) |
| [Provider location ancillary data retrieval](operations/provider-location-ancillary-data.md) | Retrieve MCO enrollments, DCBS cost charges, offered services, and service contracts for a provider location | `New clsMCOProviderList/clsDCBSCostChargeList/clsProviderServiceList/clsProviderServiceContractList(dpi, locationID)`, or via `clsProviderLocation` lazy-load properties | Provider location ID; optional expiration offset for service contracts | Populated `clsMCOProviderList`, `clsDCBSCostChargeList`, `clsProviderServiceList`, or `clsProviderServiceContractList` | [BR-002](business-rules.md#br-002-provider-service-contract-expiration-window) | [PROVIDER_DCBS_COST_CHARGE](database-tables.md#provider_dcbs_cost_charge), [MCO_PROVIDER](database-tables.md#mco_provider), [PROVIDER_SERVICE_CODE](database-tables.md#provider_service_code), [PROVIDER_SERVICE](database-tables.md#provider_service), [PROVIDER_SERVICE_CONTRACT](database-tables.md#provider_service_contract) | [SQL-001](sql/SQL-001-saif-business-view-provider.md), [SQL-002](sql/SQL-002-saif-business-view-provider.md), [SQL-016](sql/SQL-016-saif-business-view-provider.md), [SQL-017](sql/SQL-017-saif-business-view-provider.md) |

## Process flow diagram

The following diagram shows how the nine operations relate: a provider or provider location is retrieved first, and every other operation either resolves a related provider aspect from a location ID or runs independently as a dynamic search.

```mermaid
flowchart TD
	Start([Caller requests provider data]) --> Which{Retrieval path?}
	Which -->|By provider ID or tax ID| Provider[Provider retrieval]
	Which -->|By location, provider, or type| Location[Provider location retrieval]
	Which -->|Dynamic filters| Search[Provider search]
	Provider --> TaxID[Provider tax ID retrieval]
	Location --> Address[Provider address retrieval]
	Location --> Relationship[Provider relationship retrieval]
	Location --> Inelig[Provider ineligibility period retrieval]
	Location --> Type[Provider type reference data]
	Location --> Ancillary[Provider location ancillary data retrieval]
	Search --> Results([Capped result set returned])
	Provider --> Done1([Populated object returned])
	TaxID --> Done1
	Address --> Done2([Populated object returned])
	Relationship --> Done2
	Inelig --> Done2
	Type --> Done2
	Ancillary --> Done2
```

## Database interactions

The following table summarizes which operations read from the database. Per-step SQL and table citations live in each operation's detail page under `operations/`.

| Operation | SQL | Tables | Type |
| --- | --- | --- | --- |
| [Provider retrieval](operations/provider-retrieval.md) | [SQL-003](sql/SQL-003-saif-business-view-provider.md), [SQL-004](sql/SQL-004-saif-business-view-provider.md), [SQL-007](sql/SQL-007-saif-business-view-provider.md) | [PROVIDER](database-tables.md#provider), [PROVIDER_TAX_ID](database-tables.md#provider_tax_id) | Read only |
| [Provider location retrieval](operations/provider-location-retrieval.md) | [SQL-010](sql/SQL-010-saif-business-view-provider.md), [SQL-011](sql/SQL-011-saif-business-view-provider.md), [SQL-012](sql/SQL-012-saif-business-view-provider.md) | [PROVIDER_LOCATION](database-tables.md#provider_location) | Read only |
| [Provider address retrieval](operations/provider-address-retrieval.md) | [SQL-005](sql/SQL-005-saif-business-view-provider.md), [SQL-006](sql/SQL-006-saif-business-view-provider.md) | [PROVIDER_LOCATION](database-tables.md#provider_location), [PROVIDER_ADDRESS](database-tables.md#provider_address) | Read only |
| [Provider relationship retrieval](operations/provider-relationship-retrieval.md) | [SQL-013](sql/SQL-013-saif-business-view-provider.md), [SQL-014](sql/SQL-014-saif-business-view-provider.md) | [PROVIDER_LOCATION](database-tables.md#provider_location), [PROVIDER_RELATIONSHIP](database-tables.md#provider_relationship) | Read only |
| [Provider ineligibility period retrieval](operations/provider-ineligibility-period-retrieval.md) | [SQL-008](sql/SQL-008-saif-business-view-provider.md), [SQL-009](sql/SQL-009-saif-business-view-provider.md) | [PROVIDER_INELIG_PERIOD](database-tables.md#provider_inelig_period) | Read only |
| [Provider tax ID retrieval](operations/provider-tax-id-retrieval.md) | [SQL-018](sql/SQL-018-saif-business-view-provider.md) | [PROVIDER_TAX_ID](database-tables.md#provider_tax_id) | Read only (retrieve-only criteria) |
| [Provider type reference data](operations/provider-type-reference-data.md) | [SQL-019](sql/SQL-019-saif-business-view-provider.md), [SQL-020](sql/SQL-020-saif-business-view-provider.md) | [PROVIDER_TYPE_CODE](database-tables.md#provider_type_code) | Read only (retrieve-only criteria) |
| [Provider search](operations/provider-search.md) | [SQL-015](sql/SQL-015-saif-business-view-provider.md) | [PROVIDER_LOCATION](database-tables.md#provider_location), [PROVIDER_TYPE_CODE](database-tables.md#provider_type_code), [PROVIDER_ADDRESS](database-tables.md#provider_address), [PROVIDER_TAX_ID](database-tables.md#provider_tax_id), [PROVIDER_IDENTITY](database-tables.md#provider_identity), [PROVIDER_SERVICE](database-tables.md#provider_service), [MCO_PROVIDER](database-tables.md#mco_provider) | Read only |
| [Provider location ancillary data retrieval](operations/provider-location-ancillary-data.md) | [SQL-001](sql/SQL-001-saif-business-view-provider.md), [SQL-002](sql/SQL-002-saif-business-view-provider.md), [SQL-016](sql/SQL-016-saif-business-view-provider.md), [SQL-017](sql/SQL-017-saif-business-view-provider.md) | [PROVIDER_DCBS_COST_CHARGE](database-tables.md#provider_dcbs_cost_charge), [MCO_PROVIDER](database-tables.md#mco_provider), [PROVIDER_SERVICE_CODE](database-tables.md#provider_service_code), [PROVIDER_SERVICE](database-tables.md#provider_service), [PROVIDER_SERVICE_CONTRACT](database-tables.md#provider_service_contract) | Read only |

## Failure and edge-case behavior

- Every operation in this library is retrieve-only; none persists changes. Two operations (provider type reference data, provider tax ID retrieval) enforce this structurally by throwing from every SQL accessor except `RetrieveSQL` ([BR-001](business-rules.md#br-001-provider-type-read-only-criteria), [BR-004](business-rules.md#br-004-provider-tax-id-retrieve-only-access)); the rest simply have no create/update/delete implementation.
- Retrieve paths generally return an empty or unfilled object when no row matches, rather than raising a not-found error; callers must check the populated state themselves.
- Provider search caps its result set at 300 rows and silently truncates further matches ([BR-003](business-rules.md#br-003-provider-search-dynamic-join-filtering)); detailed behavior is documented on the [provider search](operations/provider-search.md) page.
- Provider service contract retrieval excludes contracts expired beyond a caller-adjustable offset window, defaulting to 721 days ([BR-002](business-rules.md#br-002-provider-service-contract-expiration-window)).
- The provider-location ancillary data operations resolve MCO plan references through `GetMCOInfo`, a call not defined anywhere in this library's own source; the underlying dependency could not be identified.**
- `clsProviderLocation.IneligibilityPeriods` re-retrieves from the database on every property read rather than caching, unlike the other lazy-load properties on that class.*

## Related documentation

- [Index](index.md)
- [Overview](overview.md)
- [Architecture](architecture.md)
- [Dependencies](dependencies.md)
- [Business rules](business-rules.md)
- [Database tables](database-tables.md)
- [SQL catalog](sql/index.md)
- [API reference](api/index.md)

> **Note:** Statements marked with `*` were inferred from code structure, naming
> conventions, or contextual evidence where direct confirmation was not available
> in source artifacts. Statements marked with `**` could not be confirmed; treat as
> unknown until verified.

## Sources

- `Business\SAIF.Business.View.Provider\clsProvider.vb`
- `Business\SAIF.Business.View.Provider\clsProviderCollection.vb`
- `Business\SAIF.Business.View.Provider\clsProviderAddress.vb`
- `Business\SAIF.Business.View.Provider\clsProviderAddressCollection.vb`
- `Business\SAIF.Business.View.Provider\clsProviderLocation.vb`
- `Business\SAIF.Business.View.Provider\clsProviderLocationCollection.vb`
- `Business\SAIF.Business.View.Provider\clsMCOProvider.vb`
- `Business\SAIF.Business.View.Provider\clsDCBSCostCharge.vb`
- `Business\SAIF.Business.View.Provider\clsProviderServices.vb`
- `Business\SAIF.Business.View.Provider\clsProviderServiceContract.vb`
- `Business\SAIF.Business.View.Provider\clsProviderRelationship.vb`
- `Business\SAIF.Business.View.Provider\clsProviderRelationshipCollection.vb`
- `Business\SAIF.Business.View.Provider\clsProviderIneligibilityPeriod.vb`
- `Business\SAIF.Business.View.Provider\clsProviderIneligibilityPeriodCollection.vb`
- `Business\SAIF.Business.View.Provider\clsProviderTaxID.vb`
- `Business\SAIF.Business.View.Provider\clsProviderTaxIDCollection.vb`
- `Business\SAIF.Business.View.Provider\clsProviderType.vb`
- `Business\SAIF.Business.View.Provider\clsProviderTypeCollection.vb`
- `Business\SAIF.Business.View.Provider\clsProviderSearch.vb`
