SAIF.Business.Provider architecture¶
SAIF.Business.Provider combines a BOF domain layer that owns provider persistence with an API integration layer that translates selected provider changes to ContactManager and ClaimCenter endpoints.
Responsibilities¶
- Own provider-domain business objects and Oracle
IBusinessCriteriaCRUD behavior. - Provide direct SQL utility lookups for selected provider, plan, specialty, and tax-ID queries.
- Synchronize address, identifier, membership, relationship, and TIN data with ContactManager.
- Retrieve payment data through the ClaimCenter API adapter.
Component boundaries¶
clsBusinessBase/clsBusinessCollection(Of T)types: Domain-layer objects that own provider business state and Oracle persistence.clsProviderUtility: Direct SQL helper that sits outside the BOF criteria pattern.Api\adapters:clsBusinessApiBasederivatives that build routes and call external APIs.Api\ContactManagerDTOsandApi\ClaimCenterDTOs: Payload contracts for external API serialization and deserialization.ProviderTranslator: Relationship-code translator used during ContactManager synchronization.
Interaction model¶
- BOF factory methods retrieve and save business objects through the data portal.
- Address and tax-ID save paths invoke
CleanAddressHelperbefore Oracle persistence. - Tax-ID persistence triggers
clsTaxApi.UpdateTinContact()after successful insert and update operations. clsPaymentApiuses theClaimCenterApiclient registration to retrieve payment history.
Architecture diagram¶
The following diagram shows the core BOF domain layer, direct SQL helper, and external API boundaries.
flowchart TD
Consumer[Consuming application] --> Domain[BOF domain layer<br>clsProvider, clsProviderLocation,<br>clsProviderAddress, clsProviderTaxID, and related types]
Domain --> Oracle[(Oracle tables<br>PROVIDER, PROVIDER_LOCATION,<br>PROVIDER_ADDRESS, PROVIDER_TAX_ID, and related tables)]
Domain --> Utility[clsProviderUtility<br>direct SQL lookups]
Utility --> Oracle
Domain --> CleanAddress[CleanAddressHelper]
CleanAddress --> CleanAddressSvc[Clean Address service]
Domain --> ApiLayer[API integration layer<br>clsAddressApi, clsIdentifierApi,<br>clsMembershipApi, clsPaymentApi, clsTaxApi]
ApiLayer --> ContactManager[ContactManager REST API<br>ProviderApi client]
ApiLayer --> ClaimCenter[ClaimCenter REST API<br>ClaimCenterApi client]
ApiLayer --> DTOs[DTO payloads<br>ContactManagerDTOs and ClaimCenterDTOs]
Sequence diagram¶
The following diagram shows the BOF retrieval path used to load a provider aggregate.
sequenceDiagram
participant Caller
participant Provider as clsProvider
participant Portal as IDataPortalInfo.DataAccessLayer
participant Oracle
Caller->>Provider: GetProvider(providerSeqNum)
Provider->>Portal: RetrieveObject(Criteria)
Portal->>Oracle: Execute RetrieveSQL
Oracle-->>Portal: Result set
Portal-->>Provider: AfterRetrieve / Fill
Provider-->>Caller: Populated clsProvider
The following diagram shows the tax-ID save path that persists Oracle data and then updates ContactManager.
sequenceDiagram
participant Caller
participant TaxID as clsProviderTaxID
participant Clean as CleanAddressHelper
participant Portal as IDataPortalInfo.DataAccessLayer
participant Oracle
participant TaxApi as clsTaxApi
participant ContactManager
Caller->>TaxID: Save()
TaxID->>Clean: Validate / normalize address
TaxID->>Portal: SaveObject(criteria)
Portal->>Oracle: Execute InsertSQL or UpdateSQL
Oracle-->>Portal: Rows affected
Portal-->>TaxID: AfterInsert / AfterUpdate
TaxID->>TaxApi: UpdateTinContact()
TaxApi->>ContactManager: PUT provider/{providerNumber}/tin
ContactManager-->>TaxApi: API result
TaxApi-->>Caller: Synchronization complete
Design constraints¶
- Database connections are selected outside this library through
IDataPortalInfo.PortalID. - The project resolves internal SAIF dependencies through NuGet packages rather than
<ProjectReference>items. - Authorization is not implemented in this library and must be enforced by consuming applications.
- Provider search stops after 300 results.
Related documentation¶
- Index
- Overview
- Dependencies
- Operations and processes
- Business rules
- Database tables
- SQL catalog
- API reference
- Configuration
Sources¶
Business\SAIF.Business.Provider\clsProvider.vbBusiness\SAIF.Business.Provider\clsProviderSearch.vbBusiness\SAIF.Business.Provider\clsProviderAddress.vbBusiness\SAIF.Business.Provider\clsProviderTaxID.vbBusiness\SAIF.Business.Provider\clsProviderLocation.vbBusiness\SAIF.Business.Provider\clsProviderRelationship.vbBusiness\SAIF.Business.Provider\clsProviderUtility.vbBusiness\SAIF.Business.Provider\Api\clsPaymentApi.vbBusiness\SAIF.Business.Provider\Api\clsTaxApi.vbBusiness\SAIF.Business.Provider\Api\Translator\ProviderTranslator.vb