---
title: SAIF.Business.View.Provider business rules
summary: Enumerated business rules with per-rule trigger, enforcement, and outcomes.
status: draft
owner: SAIF Doc Gen
last_reviewed: 2026-07-24
library: SAIF.Business.View.Provider
reference_type: package
---

# SAIF.Business.View.Provider business rules

This page captures business rules enforced by this library.

## BR-001: Provider type read-only criteria

| Field | Value |
| --- | --- |
| **Statement** | Provider type criteria exposes retrieval only and rejects create, insert, update, and delete SQL accessors. |
| **Trigger** | A caller requests a non-retrieve SQL property from provider type criteria. |
| **Enforcement** | `clsProviderType.Criteria` throws `ApplicationException(clsConstants.Messages.InvalidSQLProperty)` for non-retrieve SQL properties. |
| **Outcome** | Provider type reference data can be read but not modified through this library. |
| **Confidence** | Verified |
| **Tables** | [PROVIDER_TYPE_CODE](database-tables.md#provider_type_code) |
| **SQL** | [SQL-019](sql/SQL-019-saif-business-view-provider.md), [SQL-020](sql/SQL-020-saif-business-view-provider.md) |
| **Source** | `Business\SAIF.Business.View.Provider\clsProviderType.vb`<br>`Business\SAIF.Business.View.Provider\clsProviderTypeCollection.vb` |
---
## BR-002: Provider service contract expiration window

| Field | Value |
| --- | --- |
| **Statement** | Provider service contracts are active only when `EXP_DATE` is null or later than `SYSDATE - :Offset`. |
| **Trigger** | A caller constructs a provider service contract list. |
| **Enforcement** | `clsProviderServiceContractList.New` appends the expiration predicate in `SQL-016`. |
| **Outcome** | Expired contracts outside the offset grace window are excluded from results. |
| **Confidence** | Verified |
| **Tables** | [PROVIDER_SERVICE_CONTRACT](database-tables.md#provider_service_contract) |
| **SQL** | [SQL-016](sql/SQL-016-saif-business-view-provider.md) |
| **Source** | `Business\SAIF.Business.View.Provider\clsProviderServiceContract.vb` |
---
## BR-003: Provider search dynamic join filtering

| Field | Value |
| --- | --- |
| **Statement** | Provider search adds joins and predicates only for filters the caller supplies. |
| **Trigger** | A caller invokes `searchForProvider()` with populated search criteria. |
| **Enforcement** | `clsProviderSearch.searchForProvider()` conditionally appends joins and predicates inside `SQL-015`. |
| **Outcome** | Search results are narrowed only by supplied criteria. |
| **Confidence** | Verified |
| **Tables** | [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** | [SQL-015](sql/SQL-015-saif-business-view-provider.md) |
| **Source** | `Business\SAIF.Business.View.Provider\clsProviderSearch.vb` |
---
## BR-004: Provider tax ID retrieve-only access

| Field | Value |
| --- | --- |
| **Statement** | Provider tax ID data is exposed through a retrieve-only collection contract.* |
| **Trigger** | A caller requests provider tax IDs through `GetProviderTaxIDs(...)`. |
| **Enforcement** | `clsProviderTaxIDCollection.Criteria` inherits `clsRetrieveOnlyBusinessCriteria` and sets only retrieve SQL.* |
| **Outcome** | Provider tax ID rows can be read but are not modified through this component. |
| **Confidence** | Inferred |
| **Tables** | [PROVIDER_TAX_ID](database-tables.md#provider_tax_id) |
| **SQL** | [SQL-018](sql/SQL-018-saif-business-view-provider.md) |
| **Source** | `Business\SAIF.Business.View.Provider\clsProviderTaxIDCollection.vb` |

## Related documentation
- [Index](index.md)
- [Overview](overview.md)
- [Architecture](architecture.md)
- [Dependencies](dependencies.md)
- [Operations and processes](operations-processes.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.
## Sources
- `Business\SAIF.Business.View.Provider\clsProviderSearch.vb`
- `Business\SAIF.Business.View.Provider\clsProviderServiceContract.vb`
- `Business\SAIF.Business.View.Provider\clsProviderTaxIDCollection.vb`
- `Business\SAIF.Business.View.Provider\clsProviderType.vb`
- `Business\SAIF.Business.View.Provider\clsProviderTypeCollection.vb`
