clsProvider¶
clsProvider is the provider aggregate root, keyed by PROVIDER_SEQ_NUM, and is retrieved read-only through the BOF data portal (clsBusinessBase + IBusinessCriteria). It implements iPayee so callers in the claim/legal layer can treat a provider as a payment recipient without knowing the underlying tax-ID/address resolution rules, and it back-navigates to a PrimaryLocation and lazily loads its ProviderLocations/TaxIDs child collections on demand, each triggering a separate database round trip.*
Purpose¶
- Resolves and exposes the payee address for a provider by preferring the address of the tax-ID record active today over the primary location's payment address (BR-PRV-002).
- Enforces that a provider's primary tax ID is a 9-digit numeric value via the rule engine (BR-PRV-001).
- Always reports its payee type as the constant
"PROV"classification (BR-PRV-005). - Deterministically selects a primary location: the one flagged primary, else the first, else none (BR-PRV-006).
- Is always returned read-only from its public factory methods, preventing accidental persistence attempts (BR-PRV-004).
Context¶
- Namespace:
SAIF.Business.View.Provider - Assembly/package:
SAIF.Business.View.Provider(embedded/project-compiled); also distributed as the NuGet packageSAIF.BOF.Business.View.Providerperdependencies.md.
Public members¶
| Member | Signature | Purpose |
|---|---|---|
GetProvider |
Shared Function GetProvider(dpi As IDataPortalInfo, providerID As Decimal) As clsProvider |
Retrieves a provider by its sequence number and returns it read-only (OP-01, BR-PRV-004). |
GetProvider |
Shared Function GetProvider(dpi As IDataPortalInfo, primaryTaxID As String) As clsProvider |
Retrieves a provider by primary tax ID and returns it read-only (OP-01, BR-PRV-004). |
GetFormattedTaxID |
Shared Function GetFormattedTaxID(dpi As IDataPortalInfo, taxID As String) As String |
Returns the display-formatted version of a tax ID for a given provider lookup. |
ProviderID |
ReadOnly Property ProviderID As Decimal |
The provider's primary key (PROVIDER_SEQ_NUM); zero when no matching row was found. |
PrimaryTaxID |
ReadOnly Property PrimaryTaxID As String |
The provider's tax ID as stored, validated as a 9-digit number by BR-PRV-001. |
FormattedPrimaryTaxID |
ReadOnly Property FormattedPrimaryTaxID As String |
Display-formatted rendering of PrimaryTaxID. |
RegisteredName |
ReadOnly Property RegisteredName As String |
The provider's registered business/person name from PROVIDER. |
PrimaryLocation |
ReadOnly Property PrimaryLocation As clsProviderLocation |
The location flagged primary, or the first location, or Nothing when no locations exist (BR-PRV-006). |
ProviderLocations |
ReadOnly Property ProviderLocations As clsProviderLocationCollection |
Lazily loads all locations for this provider on first access (OP-03), a separate query per access.* |
TaxIDs |
ReadOnly Property TaxIDs As clsProviderTaxIDCollection |
Lazily loads the provider's tax-ID registrations on first access (OP-08).* |
PayeeAddress |
ReadOnly Property PayeeAddress As clsAddress (via iPayee) |
Returns the effective, non-expired tax-ID address matching the primary tax ID, or falls back to the primary location's active payment address (BR-PRV-002). |
PayeeID |
ReadOnly Property PayeeID As Decimal (via iPayee) |
Identifier used by payee-consuming callers to correlate this provider as a payment recipient. |
PayeePhoneNumber |
ReadOnly Property PayeePhoneNumber As clsPhone (via iPayee) |
The phone number associated with the provider for payee purposes. |
PayeeType |
ReadOnly Property PayeeType As String (via iPayee) |
Always resolves to the literal "Provider" payee classification (BR-PRV-005). |
PayeeTypeCode |
ReadOnly Property PayeeTypeCode As String (via iPayee) |
Always the literal code "PROV" (BR-PRV-005). |
PayeeEmailAddress |
ReadOnly Property PayeeEmailAddress As String (via iPayee) |
The provider's email address exposed for payee correspondence. |
IsValid |
ReadOnly Property IsValid As Boolean (overridden from clsBusinessBase) |
Reflects whether the rule engine's BR-PRV-001 check passed; not used to gate any write since none exist. |
IsDirty |
ReadOnly Property IsDirty As Boolean (overridden from clsBusinessBase) |
Indicates in-memory field changes since load; has no effect on persistence, since no create/update SQL is defined (BR-DATA-001). |
Save |
Function Save() As clsProvider (overridden from clsBusinessBase) |
Calls ApplyEdit()/MyBase.Save() but cannot persist changes because no insert/update SQL exists on Criteria (BR-DATA-001).* |
Behavioral notes¶
GetProviderdrives OP-01: the criteria'sRetrieveSQLselects fromPROVIDERleft-joined toPROVIDER_TAX_ID(SQL-PRV-01), and a missing row leavesProviderID = 0rather than raising an error.*- Every navigation property (
PrimaryLocation,ProviderLocations,TaxIDs) triggers its own database query on first access — no caching occurs across properties, and the reciprocalclsProvider.ProviderLocations→clsProviderLocation.Providernavigation forms a cycle broken only by lazy-load null checks.* - All 12 direct
IBusinessCriteriaimplementations in this library — includingclsProvider's — throwApplicationException(clsConstants.Messages.InvalidSQLProperty)fromCreateSQL/InsertSQL/UpdateSQL/DeleteSQL(BR-DATA-001).
Constraints and usage notes¶
- Instances returned by
GetProviderare markedReadOnly = True; callers must not attempt to persist changes (BR-PRV-004). PayeeAddressperforms an implicit tax-ID lookup and address comparison every time it is read; callers needing repeated access should cache the result themselves.*
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¶
- SAIF.Business.View.Provider/clsProvider.vb