Skip to content

SAIF.Business.UnitStat architecture

SAIF.Business.UnitStat centers on a policy-unit root aggregate, a claim-unit association layer, audit-condition tracking objects, shared loss/exposure base contracts, and a code-mapping module that translates SAIF values to NCCI reporting codes.

Responsibilities

  • Represent policy-level unit-stat data as the root aggregate.
  • Represent claim-level reporting rows and flags.
  • Persist current and historical audit conditions.
  • Provide reusable loss/exposure contracts and code maps.

Component boundaries

  • Policy unit layer: clsPolicyUnit and clsPolicyUnitCollection.
  • Claim unit layer: clsClaimUnit and clsClaimUnitCollection.
  • Audit layer: clsAuditCondition, clsAuditConditionCollection, clsAuditConditionHistory, and clsAuditConditionHistoryCollection.
  • Base-contract layer: clsLossBase / iLossData and clsExposureBase / iExposureData provide shared behavior for downstream concrete types*.
  • Code-mapping layer: mdlCodeMaps exposes static and database-backed code maps.

Interaction model

  • BOF criteria classes drive policy, claim, and audit persistence.
  • Claim denial and fraud checks use direct scalar SQL.
  • Audit-condition history follows a retrieve-then-insert-or-update upsert pattern.
  • Database-backed code maps load on first access and are reused.

Architecture diagram

The following diagram shows the main components and persistence boundaries.


flowchart TD

    Consumer[Consuming reporting library] --> PolicyUnit[clsPolicyUnit<br>root aggregate]

    PolicyUnit --> ClaimUnits[clsClaimUnitCollection]

    PolicyUnit --> AuditConditions[clsAuditConditionCollection]

    AuditConditions --> AuditHistory[clsAuditConditionHistory<br>and collection]

    PolicyUnit --> Oracle[(Oracle<br>US_POLICY_UNIT)]

    ClaimUnits --> Oracle2[(Oracle<br>US_CLAIM_UNIT)]

    AuditConditions --> Oracle3[(Oracle<br>US_AUDIT_CONDITION<br>US_AUDIT_CONDITION_HISTORY)]

    PolicyUnit --> CodeMaps[mdlCodeMaps<br>SAIF/NCCI mapping]

    CodeMaps --> Oracle4[(Oracle code tables<br>US_OFFSET_TYPE_CODE<br>US_COST_TYPE_CODE<br>CALCULATION_TYPE_CODE)]

    LossBase[clsLossBase / clsExposureBase<br>shared contracts] -.-> Downstream[Concrete reporting types*]

Sequence diagram

The following diagram shows policy-unit creation and activation through the BOF lifecycle.


sequenceDiagram

    participant Caller

    participant PolicyUnit as clsPolicyUnit

    participant BOF

    participant Oracle

    Caller->>PolicyUnit: NewPolicyUnit(...)

    PolicyUnit->>BOF: GetNextSeqNum(US_POLICY_UNIT_SEQ)

    Caller->>PolicyUnit: ActivatePolicyUnit()

    Caller->>PolicyUnit: Save()

    BOF->>Oracle: Execute SQL-004 or SQL-029

    Oracle-->>BOF: Rows affected

    BOF-->>PolicyUnit: Persisted aggregate

The following diagram shows the audit-condition history upsert path.


sequenceDiagram

    participant Caller

    participant History as clsAuditConditionHistory

    participant Oracle

    Caller->>History: GetAuditConditionHistory(...)

    History->>Oracle: SQL-010 retrieve by composite key

    alt Row exists

        History->>Oracle: SQL-026 update LAST_UPDATE_DATE

    else Row missing

        History->>Oracle: SQL-002 insert history row

    end

    History-->>Caller: Current history record

Design constraints

  • clsLossBase and clsExposureBase rely on downstream concrete implementations not present in this library*.
  • UnitStatServices.GetNCCIPolicyNumber and GetLastValuationDate are external to the supplied library findings*.
  • SAIF.BOF.Business.View.Provider is declared as a package dependency, but no direct import was confirmed**.
  • HasPolicyUnitErrors appears to conflict with its adjacent code comment and requires domain review**.

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.UnitStat\clsPolicyUnit.vb
  • Business\SAIF.Business.UnitStat\clsPolicyUnitCollection.vb
  • Business\SAIF.Business.UnitStat\clsClaimUnit.vb
  • Business\SAIF.Business.UnitStat\clsClaimUnitCollection.vb
  • Business\SAIF.Business.UnitStat\clsAuditCondition.vb
  • Business\SAIF.Business.UnitStat\clsAuditConditionCollection.vb
  • Business\SAIF.Business.UnitStat\clsAuditConditionHistory.vb
  • Business\SAIF.Business.UnitStat\clsAuditConditionHistoryCollection.vb
  • Business\SAIF.Business.UnitStat\clsLossBase.vb
  • Business\SAIF.Business.UnitStat\clsExposureBase.vb
  • Business\SAIF.Business.UnitStat\mdlCodeMaps.vb
  • Business\SAIF.Business.UnitStat\Extensions.vb
  • Business\SAIF.Business.UnitStat\packages.config