Skip to content

SAIF.Business.Claim business rules

This page captures business rules enforced by this library.

BR-001 1502 transfer claim ID required

Field Value
Statement The claim ID on a DCBS 1502 transfer record must be non-zero ("Error: The claim id is invalid.").
Trigger Rule check on the 1502 transfer object; fails when ClaimID = 0.
Enforcement ValidClaimID (RuleData attribute) in cls1502Transfer.vb.
Outcome Broken rule; save is blocked.
Tables CL_1502_DCBS_TRANSFER
SQL SQL-001, SQL-004
Source SAIF.Business.Claim/cls1502Transfer.vb

BR-002 1502 transfer filing reason required

Field Value
Statement A filing reason code is required on a DCBS 1502 transfer record ("Error: The Filing Reason is required.").
Trigger Rule check when FilingReasonCode.Any is not satisfied.
Enforcement ValidFilingReason (RuleData attribute) in cls1502Transfer.vb.
Outcome Broken rule; save is blocked. The rule ID (cls1502Transfer01) is duplicated with ValidClaimID, which is a defect.*
Tables CL_1502_DCBS_TRANSFER
SQL SQL-004
Source SAIF.Business.Claim/cls1502Transfer.vb

BR-003 Work status date cannot be in the future

Field Value
Statement The date the worker returned to work is invalid if it is later than the current date ("Error: The date the worker returned to work is invalid.").
Trigger WorkStatusDate is later than Now.
Enforcement ValidWorkStatusDate in clsClaimWorkStatus.vb.
Outcome Broken rule; save is blocked.
Tables CL_CLAIM_WORK_STATUS
SQL SQL-003, SQL-007, SQL-021, SQL-045, SQL-060
Source SAIF.Business.Claim/clsClaimWorkStatus.vb

BR-004 Work release date must be valid at level two

Field Value
Statement The work release date must pass level-two validation ("Error: The work release date is invalid.").
Trigger Work-release date validation at RuleCheckLevel.LevelTwo.
Enforcement ValidWorkReleaseDate in clsClaimWorkReleaseStatus.vb.
Outcome Broken rule at level two; save is blocked.
Tables CL_CLAIM_WORK_RELEASE_STATUS
SQL SQL-002, SQL-006, SQL-020, SQL-044, SQL-059
Source SAIF.Business.Claim/clsClaimWorkReleaseStatus.vb

BR-005 Work release status data must be present

Field Value
Statement Work-release status data must be present on the object ("Error: No work release status data available.").
Trigger No work-release status data present on the object.
Enforcement HasData in clsClaimWorkReleaseStatus.vb.
Outcome Broken rule; save is blocked.
Tables CL_CLAIM_WORK_RELEASE_STATUS
SQL SQL-002, SQL-006, SQL-020
Source SAIF.Business.Claim/clsClaimWorkReleaseStatus.vb

BR-006 Primary body part is required

Field Value
Statement A primary body part is required on the injured body-part collection ("Error: Primary body part is required.").
Trigger Collection rule check, only evaluated when Validate is True.
Enforcement PrimaryValid in clsWorkerInjuredBodyPartCollection.vb.
Outcome Broken rule; save is blocked.
Tables CL_WORKER_INJURED_BODY_PART
SQL SQL-008, SQL-036, SQL-050
Source SAIF.Business.Claim/clsWorkerInjuredBodyPartCollection.vb

BR-007 Only one primary body part is allowed

Field Value
Statement Only one primary body part is allowed on the injured body-part collection ("Error: Only one primary body part is allowed.").
Trigger Collection rule check, always evaluated (deliberately not gated by Validate).
Enforcement OnlyOnePrimary in clsWorkerInjuredBodyPartCollection.vb.
Outcome Broken rule; save is blocked.
Tables CL_WORKER_INJURED_BODY_PART
SQL SQL-008, SQL-036, SQL-050
Source SAIF.Business.Claim/clsWorkerInjuredBodyPartCollection.vb

BR-008 Claim not found on aggravation-rights retrieve

Field Value
Statement A "Claim Not Found" error is raised when the aggravation-rights stored-procedure retrieve returns no rows.
Trigger Stored-procedure retrieve returned no rows.
Enforcement AfterRetrieve in clsAggRightDates.vb; the same identifier (clsAggRightDates01) is reused in clsITimelinessOfFirstPayment.vb's AfterRetrieve, an ID collision.*
Outcome Error message added to the object; caller sees a failed retrieve.
SQL SQL-013, SQL-034
Source SAIF.Business.Claim/clsAggRightDates.vb

BR-009 Benefit schedule update must affect a row

Field Value
Statement A benefit-schedule update that affects zero rows is an error (#PAYUPD#).
Trigger UpdateSchedSQL returned RowsAffected = 0 during ProcessBenefitPayment.
Enforcement clsActiveBenefitSchedule.vb — ProcessBenefitPayment.
Outcome Error added; method returns False.
Tables CL_BENEFIT_PAYMENT
SQL SQL-039
Source SAIF.Business.Claim/clsActiveBenefitSchedule.vb

BR-010 Benefit payment delete must affect a row

Field Value
Statement A benefit-payment delete that affects zero rows is an error (#PAYDEL#).
Trigger DeletePaymentSQL returned RowsAffected = 0 during ProcessBenefitPayment.
Enforcement clsActiveBenefitSchedule.vb — ProcessBenefitPayment.
Outcome Error added; method returns False.
Tables CL_BENEFIT_PAYMENT
SQL SQL-054
Source SAIF.Business.Claim/clsActiveBenefitSchedule.vb

BR-011 Award must be successfully updated to pending

Field Value
Statement An award-to-Pending update must succeed ("The Award was NOT succesfully updated to Pending", spelling as in source).
Trigger Award-to-Pending update did not succeed.
Enforcement clsSetAwardPaymentPending.vb.
Outcome Error added; operation reported as failed.
Tables CL_AWARD
SQL SQL-031, SQL-032, SQL-048, SQL-049
Source SAIF.Business.Claim/clsSetAwardPaymentPending.vb

BR-012 Optimistic concurrency contention check

Field Value
Statement Insert, update, and delete operations must affect exactly one row (RowsAffected <> 1 or = 0) or a DB-contention error (clsConstants.Messages.DBContentionError) is raised.
Trigger RowsAffected mismatch after an insert/update/delete against a UPDATE_NUM-versioned row.
Enforcement After* hooks (UpdateError / InsertError / DeleteError) across the persistent classes.
Outcome Optimistic-concurrency failure surfaced to the caller.
SQL SQL-004, SQL-005, SQL-006, SQL-007, SQL-008, SQL-037, SQL-038, SQL-040, SQL-041, SQL-043, SQL-044, SQL-045, SQL-046, SQL-047, SQL-050, SQL-053, SQL-055, SQL-056, SQL-058, SQL-062
Source SAIF.Business.Claim/clsActiveBenefitSchedule.vb

Stored procedure business rules

Rules sourced from Oracle stored procedures referenced by this library.

Rule ID Rule Source Link
PR-BC-001 An injury date on or before 01-Jan-1900 is not a usable injury date and stops the calculation. sp82286_statutoryweeklywage Details
PR-BC-002 Wages at the time of injury must be a positive amount. sp82286_statutoryweeklywage Details
PR-BC-003 The pay period must be one of the five recognised codes: H, D, W, M, A. sp82286_statutoryweeklywage Details
PR-BC-004 An hourly wage cannot be annualised without a non-zero hours-worked-per-day value. sp82286_statutoryweeklywage Details
PR-BC-005 Hourly and daily wages cannot be converted to a weekly wage without a non-zero days-worked-per-week value. sp82286_statutoryweeklywage Details
PR-BC-006 The weeks-per-month conversion factor used for monthly wages depends on the injury date: injuries before 01-Oct-1973 use the historical factor, later injuries use the current factor. sp82286_statutoryweeklywage Details
PR-BC-007 For hourly or daily workers injured before the 1995 effective date, the days-worked-per-week used in the calculation is floored at three days, even when the worker actually worked fewer days. sp82286_statutoryweeklywage Details
PR-BC-008 The statutory weekly wage is derived from the pay period: hourly = rate × hours/day × days/week; daily = rate × days/week; weekly = the wage as supplied; monthly = wage ÷ weeks-per-month; annual = wage ÷ 52. sp82286_statutoryweeklywage Details
PR-BC-009 Every execution path — validation failure or successful calculation — returns exactly one row containing a wage and an error message; failures are reported as data, not as raised exceptions. sp82286_statutoryweeklywage Details

No rules are recorded for sp82046_CalcAggRightDates, sp82067_TimelinessOf1stPayment, or sp82289_medicallystationarydt — these three are not-found-by-cli and no procedure body was retrieved for them.

Notes

  • cls1502Transfer01 is used as the rule ID for two distinct rules (BR-001, BR-002), which is likely a copy/paste defect.*
  • clsAggRightDates01 is reused across clsAggRightDates.vb and clsITimelinessOfFirstPayment.vb, which is likely a copy/paste defect and could make broken-rule messages ambiguous.**
  • Several classes (clsActiveBenefitSchedule, clsAwardBenefitPayment, clsFederalAwardStatus, clsWorkerInjuredBodyPart) contain commented-out Rules.AddRule templates only; these are not live rules and are excluded from this page.
  • SQL-048 (setting an award to Pending) has no UPDATE_NUM predicate in its WHERE clause and is therefore not protected by the optimistic-concurrency check described in BR-012.*

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.Claim/cls1502Transfer.vb
  • SAIF.Business.Claim/clsClaimWorkStatus.vb
  • SAIF.Business.Claim/clsClaimWorkReleaseStatus.vb
  • SAIF.Business.Claim/clsWorkerInjuredBodyPartCollection.vb
  • SAIF.Business.Claim/clsAggRightDates.vb
  • SAIF.Business.Claim/clsITimelinessOfFirstPayment.vb
  • SAIF.Business.Claim/clsActiveBenefitSchedule.vb
  • SAIF.Business.Claim/clsSetAwardPaymentPending.vb