Skip to content

SAIF.Business.UnitStat business rules

This page captures business rules enforced by this library.

BR-US-001: Policy unit sequence number must be greater than zero

Field Value
Statement Policy unit sequence number must be greater than zero
Trigger Validation check on save
Enforcement clsPolicyUnit.ValidPolicyUnitSeqNum (AddBusinessRules)
Outcome Error: "Invalid PolicyUnitSeqNum."
Confidence Verified
Tables US_POLICY_UNIT
SQL SQL-004, SQL-029
Source Business\SAIF.Business.UnitStat\clsPolicyUnit.vb

BR-US-002: Claim unit policy unit sequence number must be greater than zero

Field Value
Statement Claim unit policy unit sequence number must be greater than zero
Trigger Validation check on save
Enforcement clsClaimUnit.ValidPolicyUnitSeqNum
Outcome Error: "Invalid PolicyUnitSeqNum."
Confidence Verified
Tables US_CLAIM_UNIT
SQL SQL-003, SQL-028
Source Business\SAIF.Business.UnitStat\clsClaimUnit.vb

BR-US-003: Claim unit claim ID must be greater than zero

Field Value
Statement Claim unit claim ID must be greater than zero
Trigger Validation check on save
Enforcement clsClaimUnit.ValidClaimID
Outcome Error: "Invalid Claim ID."
Confidence Verified
Tables US_CLAIM_UNIT
SQL SQL-003, SQL-028
Source Business\SAIF.Business.UnitStat\clsClaimUnit.vb

BR-US-004: Audit condition description must have non-zero length

Field Value
Statement Audit condition description must have non-zero length
Trigger Validation check on save
Enforcement clsAuditCondition.ValidAuditDescription
Outcome Error: "Invalid Audit Description."
Confidence Verified
Tables US_AUDIT_CONDITION
SQL SQL-001
Source Business\SAIF.Business.UnitStat\clsAuditCondition.vb

BR-US-005: Audit condition history description must have non-zero length

Field Value
Statement Audit condition history description must have non-zero length
Trigger Validation check on save
Enforcement clsAuditConditionHistory.ValidAuditDescription
Outcome Error: "Invalid Audit Description."
Confidence Verified
Tables US_AUDIT_CONDITION_HISTORY
SQL SQL-002, SQL-026
Source Business\SAIF.Business.UnitStat\clsAuditConditionHistory.vb

BR-US-006: A policy unit retrieved by natural key must be active (ACTIVE_UNIT_FLAG = 'Y')

Field Value
Statement A policy unit retrieved by natural key must be active (ACTIVE_UNIT_FLAG = 'Y')
Trigger Retrieve by natural key
Enforcement clsPolicyUnit.Criteria.SQLWherePolicyUnit
Outcome Inactive policy units are not returned
Confidence Verified
Tables US_POLICY_UNIT
SQL SQL-021
Source Business\SAIF.Business.UnitStat\clsPolicyUnit.vb

BR-US-007: A policy unit retrieved by injury date must be active

Field Value
Statement A policy unit retrieved by injury date must be active
Trigger Retrieve by injury date
Enforcement clsPolicyUnit.Criteria.SQLWhereRetrieveDate
Outcome Inactive units excluded from date-range lookup
Confidence Verified
Tables US_POLICY_UNIT
SQL SQL-020
Source Business\SAIF.Business.UnitStat\clsPolicyUnit.vb

BR-US-008: A policy unit is reportable only if the process date is on or before the last valuation date

Field Value
Statement A policy unit is reportable only if the process date is on or before the last valuation date
Trigger Reportability check
Enforcement clsPolicyUnit.IsReportable(processDate)
Outcome Returns False when process date exceeds last valuation period end
Confidence Verified
Source Business\SAIF.Business.UnitStat\clsPolicyUnit.vb

BR-US-009: An original report exists when UnitValuationNumber > 0 and UnitValuationNumber ≠ LastReportedValuationNumber

Field Value
Statement An original report exists when UnitValuationNumber > 0 and UnitValuationNumber ≠ LastReportedValuationNumber
Trigger Report type determination
Enforcement clsPolicyUnit.IsOriginalReport
Outcome Identifies whether a report cycle produces new data
Confidence Verified
Tables US_POLICY_UNIT
SQL SQL-020, SQL-021, SQL-022
Source Business\SAIF.Business.UnitStat\clsPolicyUnit.vb

BR-US-010: A first original report is one that is an original report AND has UnitValuationNumber = 1

Field Value
Statement A first original report is one that is an original report AND has UnitValuationNumber = 1
Trigger First-report check
Enforcement clsPolicyUnit.IsOriginalFirstReport
Outcome Distinguishes first report from subsequent reports
Confidence Verified
Tables US_POLICY_UNIT
SQL SQL-020, SQL-021, SQL-022
Source Business\SAIF.Business.UnitStat\clsPolicyUnit.vb

BR-US-011: A cycle report is one with UnitValuationNumber > 1

Field Value
Statement A cycle report is one with UnitValuationNumber > 1
Trigger Cycle report check
Enforcement clsPolicyUnit.IsCycleReport
Outcome Does not include correction reports
Confidence Verified
Tables US_POLICY_UNIT
SQL SQL-020, SQL-021, SQL-022
Source Business\SAIF.Business.UnitStat\clsPolicyUnit.vb

BR-US-012: Activating a policy unit that has been previously reported must also set correction flags

Field Value
Statement Activating a policy unit that has been previously reported must also set correction flags
Trigger Activation
Enforcement clsPolicyUnit.ActivatePolicyUnit()
Outcome If IsReported, sets ExposureCorrectionFlag = 'Y' and LossCorrectionFlag = 'Y'
Confidence Verified
Tables US_POLICY_UNIT
SQL SQL-029
Source Business\SAIF.Business.UnitStat\clsPolicyUnit.vb

BR-US-013: Non-compensable rules apply only to policy units effective on or after 2013-01-01

Field Value
Statement Non-compensable rules apply only to policy units effective on or after 2013-01-01
Trigger NCCI rule change (2013)
Enforcement clsPolicyUnit.IsSubjectToNonCompensableRules; constant NON_COMPENSABLE_START_DATE = #1/1/2013#
Outcome Units with earlier effective dates are exempt
Confidence Verified
Tables US_POLICY_UNIT
SQL SQL-015
Source Business\SAIF.Business.UnitStat\clsPolicyUnit.vb

BR-US-014: Active unit flag defaults to 'Y' when not set

Field Value
Statement Active unit flag defaults to 'Y' when not set
Trigger New object creation
Enforcement clsPolicyUnit.ActiveUnitFlag getter (If(m_ActiveUnitFlag = StringInitialValue, "Y", ...))
Outcome Prevents unintentional inactive state on new units
Confidence Verified
Tables US_POLICY_UNIT
SQL SQL-004
Source Business\SAIF.Business.UnitStat\clsPolicyUnit.vb

BR-US-015: LossEditFlag and ExposureEditFlag default to 'Y' when not set

Field Value
Statement LossEditFlag and ExposureEditFlag default to 'Y' when not set
Trigger New object creation
Enforcement clsPolicyUnit.LossEditFlag / ExposureEditFlag getters
Outcome Ensures edits are required by default
Confidence Verified
Tables US_POLICY_UNIT
SQL SQL-004
Source Business\SAIF.Business.UnitStat\clsPolicyUnit.vb

BR-US-016: Correction flags (UnitCorrectionFlag, ExposureCorrectionFlag, LossCorrectionFlag) default to 'N'

Field Value
Statement Correction flags (UnitCorrectionFlag, ExposureCorrectionFlag, LossCorrectionFlag) default to 'N'
Trigger New object creation
Enforcement Respective getters with If(value = StringInitialValue, "N", ...)
Outcome Prevents spurious corrections
Confidence Verified
Tables US_POLICY_UNIT
SQL SQL-004, SQL-029
Source Business\SAIF.Business.UnitStat\clsPolicyUnit.vb

BR-US-017: HistoricalFlag defaults to 'N' when not set

Field Value
Statement HistoricalFlag defaults to 'N' when not set
Trigger New object creation
Enforcement clsPolicyUnit.HistoricalFlag getter
Outcome Prevents units from being treated as historical by default
Confidence Verified
Tables US_POLICY_UNIT
SQL SQL-004
Source Business\SAIF.Business.UnitStat\clsPolicyUnit.vb

BR-US-018: ActiveUnitFlag for claim units defaults to 'Y'

Field Value
Statement ActiveUnitFlag for claim units defaults to 'Y'
Trigger New object creation
Enforcement clsClaimUnit member variable initializer Private m_ActiveUnitFlag As String = "Y"
Outcome Claims default to active
Confidence Verified
Tables US_CLAIM_UNIT
SQL SQL-003
Source Business\SAIF.Business.UnitStat\clsClaimUnit.vb

BR-US-019: A claim unit active lookup filters to ACTIVE_UNIT_FLAG = 'Y'

Field Value
Statement A claim unit active lookup filters to ACTIVE_UNIT_FLAG = 'Y'
Trigger Retrieve by claim ID
Enforcement clsClaimUnit.Criteria.SQLWhereClaimID
Outcome Only active claim-unit associations are returned when retrieving by claim
Confidence Verified
Tables US_CLAIM_UNIT
SQL SQL-012
Source Business\SAIF.Business.UnitStat\clsClaimUnit.vb

BR-US-020: Database contention on update or delete is detected by checking RowsAffected <> 1

Field Value
Statement Database contention on update or delete is detected by checking RowsAffected <> 1
Trigger After insert/update/delete
Enforcement After* methods in clsPolicyUnit, clsClaimUnit, clsAuditConditionHistory
Outcome Adds error message clsConstants.Messages.DBContentionError
Confidence Verified
Tables US_POLICY_UNIT, US_CLAIM_UNIT, US_AUDIT_CONDITION_HISTORY
SQL SQL-026, SQL-028, SQL-029, SQL-034, SQL-035
Source Business\SAIF.Business.UnitStat\clsPolicyUnit.vb

BR-US-021: A loss is reportable if it has claim costs (Incurred Medical > 0 or Incurred Indemnity > 0) OR is a catastrophe claim

Field Value
Statement A loss is reportable if it has claim costs (Incurred Medical > 0 or Incurred Indemnity > 0) OR is a catastrophe claim
Trigger Reportability determination
Enforcement clsLossBase.IsReportable
Outcome Losses with zero cost but catastrophe number are still reportable
Confidence Verified
Source Business\SAIF.Business.UnitStat\clsLossBase.vb

BR-US-022: Outstanding reserves equal incurred amounts minus paid amounts

Field Value
Statement Outstanding reserves equal incurred amounts minus paid amounts
Trigger Reserves calculation
Enforcement clsLossBase.OutstandingReserves
Outcome (IncurredMedical + IncurredIndemnity) − (PaidMedical + PaidIndemnity)
Confidence Verified
Source Business\SAIF.Business.UnitStat\clsLossBase.vb

BR-US-023: A catastrophe claim has a CatastropheNumber ≠ "00"

Field Value
Statement A catastrophe claim has a CatastropheNumber ≠ "00"
Trigger Catastrophe identification
Enforcement clsLossBase.IsCatastrophe
Outcome Distinguishes catastrophe losses for grouping/reporting
Confidence Verified
Source Business\SAIF.Business.UnitStat\clsLossBase.vb

BR-US-024: A policy unit has errors when its audit condition collection contains conditions with non-null exposure summary seq num AND non-null claim ID

Field Value
Statement A policy unit has errors when its audit condition collection contains conditions with non-null exposure summary seq num AND non-null claim ID
Trigger Error state
Enforcement clsAuditConditionCollection.HasPolicyUnitErrors
Outcome Used to block reporting of units with unresolved errors
Confidence Verified
Tables US_AUDIT_CONDITION
SQL SQL-006, SQL-007, SQL-008
Source Business\SAIF.Business.UnitStat\clsAuditConditionCollection.vb

BR-US-025: Units within 155 months of the current quarter start date are archived; units more than 30 years old are deleted

Field Value
Statement Units within 155 months of the current quarter start date are archived; units more than 30 years old are deleted
Trigger Retention policy
Enforcement Extensions.UnitArchiveDate() / Extensions.UnitDeleteDate()
Outcome Derived dates used externally to schedule archiving and deletion
Confidence Verified
Source Business\SAIF.Business.UnitStat\Extensions.vb

BR-US-026: LossEditFlag default is "Y" (set in member variable initializer)

Field Value
Statement LossEditFlag default is "Y" (set in member variable initializer)
Trigger Policy unit creation (26-Aug-2011 maintenance)
Enforcement clsPolicyUnit member variable m_LossEditFlag = StringInitialValue + getter default
Outcome Ensures loss edits are required by default on all new units
Confidence Verified
Tables US_POLICY_UNIT
SQL SQL-004
Source Business\SAIF.Business.UnitStat\clsPolicyUnit.vb

BR-US-027: Denial-final checks and fully-fraudulent checks only apply to policy units effective on or after 2013-01-01

Field Value
Statement Denial-final checks and fully-fraudulent checks only apply to policy units effective on or after 2013-01-01
Trigger Per-claim reporting
Enforcement clsClaimUnit.IsDeniedFinal / IsFullyFraudulent remarks
Outcome Based on NCCI non-compensable rule change
Confidence Verified
Tables CL_INJURY_CLAIM, US_CLAIM_UNIT, US_POLICY_UNIT
SQL SQL-014, SQL-015
Source Business\SAIF.Business.UnitStat\clsClaimUnit.vb

BR-US-028: ValueCode for claim units defaults to 'N'

Field Value
Statement ValueCode for claim units defaults to 'N'
Trigger New object creation
Enforcement clsClaimUnit member variable initializer Private m_ValueCode As String = "N"
Outcome New claim units are valued 'N' unless the caller explicitly sets a different value code
Confidence Verified
Tables US_CLAIM_UNIT
SQL SQL-003
Source Business\SAIF.Business.UnitStat\clsClaimUnit.vb

BR-US-029: ReportedFatalFlag and ReportedClosedFlag for claim units default to 'N'

Field Value
Statement ReportedFatalFlag and ReportedClosedFlag for claim units default to 'N'
Trigger New object creation
Enforcement clsClaimUnit member variable initializers Private m_ReportedFatalFlag As String = "N" and Private m_ReportedClosedFlag As String = "N"
Outcome A new claim unit is assumed not previously reported as fatal and not previously reported as closed until a report cycle sets otherwise
Confidence Verified
Tables US_CLAIM_UNIT
SQL SQL-003
Source Business\SAIF.Business.UnitStat\clsClaimUnit.vb

BR-US-030: PreferredWorkerFlag for claim units defaults to 'N'

Field Value
Statement PreferredWorkerFlag for claim units defaults to 'N'
Trigger New object creation
Enforcement clsClaimUnit member variable initializer Private m_PreferredWorkerFlag As String = "N"
Outcome New claim units are not flagged as preferred-worker claims unless explicitly set
Confidence Verified
Tables US_CLAIM_UNIT
SQL SQL-003
Source Business\SAIF.Business.UnitStat\clsClaimUnit.vb

Inherited business rules

Rules in this section originate from BOF framework base classes inherited by the library's business objects and collections.

From clsBusinessBase (SAIF.BOF.Framework)

INH-US-001: A business object is savable only when it is dirty and valid

Field Value
Statement A business object is savable only when it is dirty and valid
Trigger Save-enable or save-readiness evaluation
Enforcement clsBusinessBase.IsSavable
Outcome IsSavable returns True only when IsDirty AndAlso IsValid
Origin SAIF.BOF.Framework — clsBusinessBase
Source Legacy\BusinessObjectFramework\clsBusinessBase.vb

INH-US-002: Cancelling an edit restores the previous object state and reapplies business rules

Field Value
Statement Cancelling an edit restores the previous object state and reapplies business rules
Trigger CancelEdit()
Enforcement clsBusinessBase.CancelEdit
Outcome The framework undoes pending changes, re-adds business rules, and raises modification-state updates
Origin SAIF.BOF.Framework — clsBusinessBase
Source Legacy\BusinessObjectFramework\clsBusinessBase.vb

From clsBusinessCollectionBase (SAIF.BOF.Framework)

INH-US-003: Managed collection save persists deleted children before active children

Field Value
Statement Managed collection save persists deleted children before active children
Trigger Save() or SaveChild() on a managed collection
Enforcement clsBusinessCollectionBase.Save / SaveChild
Outcome The framework saves deleted child items first, then active child items, clears the deleted list, and completes the collection save
Origin SAIF.BOF.Framework — clsBusinessCollectionBase
Source Legacy\BusinessObjectFramework\clsBusinessCollectionBase.vb

Note: Statements marked with * are inferred from code behavior rather than explicit documentation or comments.

Sources

  • Business\SAIF.Business.UnitStat\clsPolicyUnit.vb
  • Business\SAIF.Business.UnitStat\clsClaimUnit.vb
  • Business\SAIF.Business.UnitStat\clsAuditCondition.vb
  • Business\SAIF.Business.UnitStat\clsAuditConditionCollection.vb
  • Business\SAIF.Business.UnitStat\clsAuditConditionHistory.vb
  • Business\SAIF.Business.UnitStat\clsLossBase.vb
  • Business\SAIF.Business.UnitStat\Extensions.vb
  • Business\SAIF.Business.UnitStat\Constants.vb