Skip to content

SAIF.Business.View.Provider business rules

This page captures business rules enforced by this library.

BR-PRV-001 Primary tax ID must be a 9-digit number

Field Value
Statement A provider's primary tax ID must convert to a numeric value exactly 9 digits long.
Trigger Rule-engine validation of PrimaryTaxID after clsProvider construction/load.
Enforcement clsProvider.Rule_ValidPrimaryTaxId (<RuleData("clsProvider01", "Invalid provider primary tax ID")>).
Outcome Broken rule "Invalid provider primary tax ID"; IsValid becomes false.
Tables PROVIDER
SQL SQL-PRV-01, SQL-PRV-01b
Source SAIF.Business.View.Provider/clsProvider.vb

BR-PRV-002 Payee address resolution order

Field Value
Statement The payee address for a provider is the address of the tax-ID record that is effective today, not yet expired, and whose tax ID equals the primary location's provider primary tax ID; if none is found the primary location's active payment address is used.
Trigger Read of clsProvider.PayeeAddress.
Enforcement clsProvider.vb:153–166.
Outcome Returns the tax-ID address or falls back to the payment address.
Tables PROVIDER_TAX_ID
SQL SQL-PTAX-01
Source SAIF.Business.View.Provider/clsProvider.vb

BR-PRV-003 Provider-set retrieval uses unparameterized SQL

Field Value
Statement Provider-set retrieval accepts either a tax-ID array or a raw WHERE clause and injects both into SQL by string concatenation.*
Trigger GetProviderCollection / GetProvidersUsingWhere.
Enforcement clsProviderCollection.Criteria.BuildSQLWhere, clsProviderCollection.vb:277–294.
Outcome Query is built without bind variables — untrusted input would be executed as SQL.*
Tables PROVIDER, PROVIDER_TAX_ID
SQL SQL-PRV-02, SQL-PRV-02b
Source SAIF.Business.View.Provider/clsProviderCollection.vb

BR-PRV-004 Providers retrieved via factory methods are read-only

Field Value
Statement A provider retrieved through the public factory methods is returned in read-only state.
Trigger clsProvider.GetProvider (both overloads).
Enforcement clsProvider.vb:317–339.
Outcome ReadOnly = True on the returned object.
Tables PROVIDER
SQL SQL-PRV-01, SQL-PRV-01b
Source SAIF.Business.View.Provider/clsProvider.vb

BR-PRV-005 Payee type is always Provider

Field Value
Statement The payee type of a provider or provider location is always Provider with code "PROV".
Trigger Read of PayeeType / PayeeTypeCode.
Enforcement clsProvider.vb:182–192; clsProviderLocation.vb:412–422.
Outcome Constant payee classification.
Source SAIF.Business.View.Provider/clsProvider.vb, SAIF.Business.View.Provider/clsProviderLocation.vb

BR-PRV-006 Primary location selection

Field Value
Statement The primary location of a provider is the location flagged primary; if none is flagged, the first location; if there are no locations, nothing.
Trigger Read of clsProvider.PrimaryLocation.
Enforcement clsProvider.vb:104–117.
Outcome Deterministic primary-location selection.
Tables PROVIDER_LOCATION
SQL SQL-PLOC-02
Source SAIF.Business.View.Provider/clsProvider.vb

BR-PLOC-001 Provider location ID must be positive

Field Value
Statement A loaded provider location must have a ProviderLocationID greater than zero.
Trigger Level I rule check on ProviderLocationID.
Enforcement clsProviderLocation.Rule_ValidProviderLocation, clsProviderLocation.vb:605, 615–618 (clsProviderLocation01).
Outcome Broken rule "Error: Invalid provider ID".
Tables PROVIDER_LOCATION
SQL SQL-PLOC-01
Source SAIF.Business.View.Provider/clsProviderLocation.vb

BR-PLOC-002 Provider ID must be positive

Field Value
Statement The provider owning a location must resolve to a ProviderID greater than zero.
Trigger Level III rule check on ProviderID.
Enforcement clsProviderLocation.Rule_ValidProvider, clsProviderLocation.vb:608, 623–626 (clsProviderLocation02).
Outcome Broken rule "Error: Verify provider is valid".
Tables PROVIDER_LOCATION
SQL SQL-PLOC-01
Source SAIF.Business.View.Provider/clsProviderLocation.vb

BR-PLOC-003 Provider type code must be non-empty

Field Value
Statement The provider type of a location must resolve to a non-empty code.
Trigger Level III rule check on ProviderTypeCode.
Enforcement clsProviderLocation.Rule_ValidProviderTypeCode, clsProviderLocation.vb:609, 631–634 (clsProviderLocation03).
Outcome Broken rule "Error: Verify provider type is valid".
Tables PROVIDER_TYPE_CODE
SQL SQL-PTYP-01
Source SAIF.Business.View.Provider/clsProviderLocation.vb

BR-PLOC-004 Ineligible locations are excluded from filtered lists

Field Value
Statement A provider location is treated as ineligible on a date when that date falls within any of its ineligibility periods; filtered location lists exclude such locations.
Trigger IsDuringIneligibilityPeriod(date); FilterBy_ProviderTypeCode[AndEffectiveDate].
Enforcement clsProviderLocation.vb:125–130; clsProviderLocationCollection.vb:51–60.
Outcome Ineligible locations are excluded from the filtered collection.
Tables PROVIDER_INELIG_PERIOD
SQL SQL-PINE-02
Source SAIF.Business.View.Provider/clsProviderLocation.vb, SAIF.Business.View.Provider/clsProviderLocationCollection.vb

BR-PLOC-005 Provider location dirty state is composite

Field Value
Statement A provider location is dirty when its own state is dirty or its name object is dirty.
Trigger Read of clsProviderLocation.IsDirty.
Enforcement clsProviderLocation.vb:461–472.
Outcome Composite dirty determination.
Source SAIF.Business.View.Provider/clsProviderLocation.vb

BR-PADR-001 Addresses without expiration default to Date MaxValue

Field Value
Statement An address with no expiration date is treated as expiring at Date.MaxValue.
Trigger clsProviderAddress.Fill during load.
Enforcement clsProviderAddress.vb:372–377.
Outcome Open-ended addresses remain active indefinitely.
Tables PROVIDER_ADDRESS
SQL SQL-PADR-01
Source SAIF.Business.View.Provider/clsProviderAddress.vb

BR-PADR-002 Address active-on-date determination

Field Value
Statement An address is active on a date when that date lies between its start and termination dates.
Trigger ActiveAddresses() / ActiveAddresses(date).
Enforcement clsProviderAddressCollection.vb:85–101.
Outcome Inactive addresses are filtered out.
Tables PROVIDER_ADDRESS
SQL SQL-PADR-01
Source SAIF.Business.View.Provider/clsProviderAddressCollection.vb

BR-PADR-003 Primary address fallback chain

Field Value
Statement Primary-address selection falls back by type: Correspondence → Physical; Payment → Physical → Correspondence; Physical → Correspondence.
Trigger Read of CorrespondenceAddress, PaymentAddress, PhysicalAddress, PrimaryAddress(type).
Enforcement clsProviderAddressCollection.CalculatePrimaryAddress, clsProviderAddressCollection.vb:161–189.
Outcome A best-available address of the requested kind.
Source SAIF.Business.View.Provider/clsProviderAddressCollection.vb

BR-PADR-004 Empty address returned when none match

Field Value
Statement When no address of any fallback type exists, an empty address object is returned rather than nothing.
Trigger End of CalculatePrimaryAddress.
Enforcement clsProviderAddressCollection.vb:186.
Outcome Callers never receive Nothing.
Source SAIF.Business.View.Provider/clsProviderAddressCollection.vb

BR-PADR-005 Parent address preferred with child identity retained

Field Value
Statement When resolving a child/parent provider address, the parent's address wins if it is non-empty; it is cloned, flagged IsParent, annotated with the parent name and ID, but re-stamped with the child's business name and location ID. Otherwise the child's own address is used.
Trigger clsProviderAddress.GetAddress(child, parent, type).
Enforcement clsProviderAddress.vb:270–299.
Outcome Parent-preferred address with child identity retained.
Source SAIF.Business.View.Provider/clsProviderAddress.vb

BR-PADR-006 Address type codes are fixed

Field Value
Statement Address type codes are fixed: Correspondence = COR, Payment = PAY, Physical = PHY; any other value raises an error.
Trigger GetAddressTypeCode(addressType).
Enforcement clsProviderAddress.vb:302–314.
Outcome Returns the code or throws Exception("Invalid Address Type.").
Source SAIF.Business.View.Provider/clsProviderAddress.vb

BR-PREL-001 Works-for relationships are WRK code

Field Value
Statement A "works for" relationship is a relationship whose code is WRK.
Trigger Read of WorksFor / WorksFor(date).
Enforcement clsProviderRelationshipCollection.vb:89–111.
Outcome Only WRK relationships are returned.
Tables PROVIDER_RELATIONSHIP
SQL SQL-PREL-01, SQL-PREL-02
Source SAIF.Business.View.Provider/clsProviderRelationshipCollection.vb

BR-PREL-002 Works-for defaults to active relationships only

Field Value
Statement By default only currently active relationships are included in the works-for list; ActiveOnly = False disables the date test.
Trigger Read of WorksFor.
Enforcement clsProviderRelationshipCollection.vb:93–98 (with ActiveOnly, :56–64).
Outcome Expired relationships are excluded unless opted out.
Source SAIF.Business.View.Provider/clsProviderRelationshipCollection.vb

BR-PREL-003 Relationship active-date determination

Field Value
Statement A relationship is active when today is on or after its start date and on or before its termination date; a missing termination date is treated as Date.MaxValue.
Trigger Read of clsProviderRelationship.IsActive; WorksFor(activeDate).
Enforcement clsProviderRelationship.vb:95–112; clsProviderRelationshipCollection.vb:106–110.
Outcome Open-ended relationships stay active.
Source SAIF.Business.View.Provider/clsProviderRelationship.vb, SAIF.Business.View.Provider/clsProviderRelationshipCollection.vb

BR-PREL-004 Destination relationship type is the opposite of the source

Field Value
Statement The destination end of a relationship is always the opposite of the source end (source Child → destination Parent, otherwise destination Child).
Trigger Read of DestinationRelationshipType / DestinationProviderLocation.
Enforcement clsProviderRelationship.vb:135–160.
Outcome Callers always navigate to the other party.
Source SAIF.Business.View.Provider/clsProviderRelationship.vb

BR-PINE-001 Ineligibility periods without termination default to Date MaxValue

Field Value
Statement An ineligibility period with no termination date is treated as terminating at Date.MaxValue.*
Trigger Read of clsProviderIneligibilityPeriod.TerminationDate.
Enforcement clsProviderIneligibilityPeriod.vb:~127–140.
Outcome Open-ended ineligibility never expires.
Tables PROVIDER_INELIG_PERIOD
SQL SQL-PINE-01, SQL-PINE-02
Source SAIF.Business.View.Provider/clsProviderIneligibilityPeriod.vb

BR-DATE-001 Dated records are in effect within their date window

Field Value
Statement A dated record (MCO enrollment, DCBS cost charge, service contract) is in effect on a date when the date is on/after the effective date and either there is no expiration date or the date is on/before it.
Trigger IsInEffect(date), IsActive, IsExpired.
Enforcement clsMCOProvider.vb:~155–178; clsDCBSCostCharge.vb:41–68; clsProviderServiceContract.vb:~130–160.
Outcome Uniform date-window evaluation.
Tables PROVIDER_DCBS_COST_CHARGE, MCO_PROVIDER, PROVIDER_SERVICE_CONTRACT
SQL SQL-DCBS-01, SQL-MCO-01, SQL-PSVC-02
Source SAIF.Business.View.Provider/clsMCOProvider.vb, SAIF.Business.View.Provider/clsDCBSCostCharge.vb, SAIF.Business.View.Provider/clsProviderServiceContract.vb

BR-MCO-001 MCO plan must match the assigned plan ID

Field Value
Statement An MCO plan attached to an enrollment or service contract must match the plan ID already assigned to that record.
Trigger SetPlan(inPlan) during list construction.
Enforcement clsMCOProvider.vb:106–112; clsProviderServiceContract.vb:102–108.
Outcome Throws ApplicationException("MCO plan submitted does not match plan assigned.").
Tables MCO_PROVIDER, PROVIDER_SERVICE_CONTRACT
SQL SQL-MCO-01, SQL-PSVC-02
Source SAIF.Business.View.Provider/clsMCOProvider.vb, SAIF.Business.View.Provider/clsProviderServiceContract.vb

BR-PSVC-001 Service contracts are limited to the offset window

Field Value
Statement Service contracts are limited to those still open or expired within the offset window (default 721 days); an offset of zero or less removes the restriction.
Trigger clsProviderServiceContractList..ctor.
Enforcement clsProviderServiceContract.vb:216–229.
Outcome Older expired contracts are excluded.
Tables PROVIDER_SERVICE_CONTRACT
SQL SQL-PSVC-02
Source SAIF.Business.View.Provider/clsProviderServiceContract.vb

BR-SRCH-001 At least one search field is required

Field Value
Statement At least one search field must be supplied before a provider search is considered valid.
Trigger Rule-engine validation of clsSearchCriteria.ProviderName.
Enforcement clsProviderSearch.Rule_ValidCriteria, clsProviderSearch.vb:411, 416–430.
Outcome Broken rule "Error: Enter your search criteria".
Source SAIF.Business.View.Provider/clsProviderSearch.vb

BR-SRCH-002 Zip code must be numeric

Field Value
Statement A supplied zip code must be numeric (an empty zip code is allowed).
Trigger Rule-engine validation of ZipCode.
Enforcement clsProviderSearch.Rule_ValidZipCode, clsProviderSearch.vb:412, 432–436.
Outcome Broken rule "Error: Zip code must be numeric".
Source SAIF.Business.View.Provider/clsProviderSearch.vb

BR-SRCH-003 Tax ID length limit

Field Value
Statement A supplied tax ID, with hyphens removed, must be fewer than 10 characters.
Trigger Rule-engine validation of TaxId.
Enforcement clsProviderSearch.Rule_ValidTaxId, clsProviderSearch.vb:413, 437–440.
Outcome Broken rule "Error: The tax id is too long".
Source SAIF.Business.View.Provider/clsProviderSearch.vb

BR-SRCH-004 Businessperson selector maps to business flag

Field Value
Statement The business/person selector maps to BUSINESS_FLAG = 'Y' for BUSINESS, 'N' for PERSON, and no flag filter for any other value.
Trigger searchForProvider.
Enforcement clsProviderSearch.vb:96–121.
Outcome Result scope restricted or unrestricted accordingly.
Tables PROVIDER_LOCATION
SQL SQL-SRCH-01
Source SAIF.Business.View.Provider/clsProviderSearch.vb

BR-SRCH-005 Provider name search also matches registered names

Field Value
Statement When a provider name is supplied, the search also matches registered names by unioning a second query joined to provider_tax_id.
Trigger searchForProvider.
Enforcement clsProviderSearch.vb:143–155, 224–229.
Outcome Registered-name matches are included.
Tables PROVIDER_TAX_ID
SQL SQL-SRCH-01
Source SAIF.Business.View.Provider/clsProviderSearch.vb

BR-SRCH-006 Sort name derivation

Field Value
Statement A person's sort name is derived by taking the text before the first space and re-appending everything from the first comma; business rows and rows without a comma sort on the full name.
Trigger FormatSortName during result materialisation.
Enforcement clsProviderSearch.vb:253–267.
Outcome Consistent person/business sort ordering.
Source SAIF.Business.View.Provider/clsProviderSearch.vb

BR-SRCH-007 Search results capped at 300 rows

Field Value
Statement A provider search returns at most 300 result rows; loading stops once the collection exceeds 299 entries.
Trigger Result loop in searchForProvider.
Enforcement clsProviderSearch.vb:246–249.
Outcome Extra rows are silently discarded.
Tables PROVIDER_LOCATION
SQL SQL-SRCH-01
Source SAIF.Business.View.Provider/clsProviderSearch.vb

BR-SRCH-008 Search text normalization

Field Value
Statement Search text values are upper-cased and trimmed, name/street/phone comparisons are prefix matches, and phone input has - and . removed.
Trigger searchForProvider parameter construction.
Enforcement clsProviderSearch.vb:126–214.
Outcome Case-insensitive prefix matching.
Source SAIF.Business.View.Provider/clsProviderSearch.vb

BR-DATA-001 No write operations are supported

Field Value
Statement This library performs no create, insert, update, or delete operations; every non-retrieve SQL property raises an error.
Trigger Any access to CreateSQL, InsertSQL, UpdateSQL, DeleteSQL on any criteria class.
Enforcement All 12 criteria classes (e.g. clsProvider.vb:416–447).
Outcome ApplicationException(clsConstants.Messages.InvalidSQLProperty).
Source SAIF.Business.View.Provider/clsProvider.vb (and the other 11 criteria classes)

Notes

  • No confirmed dependency-doc-sourced (inherited) rules were found for this library.

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.

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
  • SAIF.Business.View.Provider/clsProviderCollection.vb
  • SAIF.Business.View.Provider/clsProviderLocation.vb
  • SAIF.Business.View.Provider/clsProviderLocationCollection.vb
  • SAIF.Business.View.Provider/clsProviderAddress.vb
  • SAIF.Business.View.Provider/clsProviderAddressCollection.vb
  • SAIF.Business.View.Provider/clsProviderRelationship.vb
  • SAIF.Business.View.Provider/clsProviderRelationshipCollection.vb
  • SAIF.Business.View.Provider/clsProviderIneligibilityPeriod.vb
  • SAIF.Business.View.Provider/clsProviderIneligibilityPeriodCollection.vb
  • SAIF.Business.View.Provider/clsProviderTaxID.vb
  • SAIF.Business.View.Provider/clsProviderTaxIDCollection.vb
  • SAIF.Business.View.Provider/clsProviderType.vb
  • SAIF.Business.View.Provider/clsProviderTypeCollection.vb
  • SAIF.Business.View.Provider/clsProviderSearch.vb
  • SAIF.Business.View.Provider/clsDCBSCostCharge.vb
  • SAIF.Business.View.Provider/clsMCOProvider.vb
  • SAIF.Business.View.Provider/clsProviderServices.vb
  • SAIF.Business.View.Provider/clsProviderServiceContract.vb