Skip to content

SAIF.Business.Claim business rules

This page captures business rules enforced by SAIF.Business.Claim.

BR-001: claim ID must be non-zero

Field Value
Statement The claim ID must be non-zero
Trigger Property validation on ClaimID
Enforcement cls1502Transfer.ValidClaimID
Outcome Error: "The claim id is invalid."
Confidence Verified
Source Business\SAIF.Business.Claim\cls1502Transfer.vb (ValidClaimID)

BR-002: filing reason code is required

Field Value
Statement The filing reason code is required
Trigger Property validation on FilingReasonCode
Enforcement cls1502Transfer.ValidFilingReason
Outcome Error: "The Filing Reason is required."
Confidence Verified
Source Business\SAIF.Business.Claim\cls1502Transfer.vb (ValidFilingReason)

BR-003: Work release date must be valid

Field Value
Statement Work release date must be valid
Trigger Property validation on WorkReleaseDate
Enforcement clsClaimWorkReleaseStatus.ValidWorkReleaseDate
Outcome LevelTwo check error
Confidence Verified
Source Business\SAIF.Business.Claim\clsClaimWorkReleaseStatus.vb (ValidWorkReleaseDate)

BR-004: Work release status data must be present

Field Value
Statement Work release status data must be present
Trigger Object-level validation
Enforcement clsClaimWorkReleaseStatus.HasData
Outcome Error: "No work release status data available."
Confidence Verified
Source Business\SAIF.Business.Claim\clsClaimWorkReleaseStatus.vb (HasData)

BR-005: date the worker returned to work must be valid

Field Value
Statement The date the worker returned to work must be valid
Trigger Property validation on WorkStatusDate
Enforcement clsClaimWorkStatus.ValidWorkStatusDate
Outcome Error: "The date the worker returned to work is invalid."
Confidence Verified
Source Business\SAIF.Business.Claim\clsClaimWorkStatus.vb (ValidWorkStatusDate)

BR-006: primary body part must be designated

Field Value
Statement A primary body part must be designated
Trigger Collection-level validation on PrimaryFlag
Enforcement clsWorkerInjuredBodyPartCollection.PrimaryValid
Outcome Error: "Primary body part is required."
Confidence Verified
Source Business\SAIF.Business.Claim\clsWorkerInjuredBodyPartCollection.vb (PrimaryValid)

BR-007: Only one body part may be marked as primary

Field Value
Statement Only one body part may be marked as primary
Trigger Collection-level validation on PrimaryFlag
Enforcement clsWorkerInjuredBodyPartCollection.OnlyOnePrimary
Outcome Error: "Only one primary body part is allowed."
Confidence Verified
Source Business\SAIF.Business.Claim\clsWorkerInjuredBodyPartCollection.vb (OnlyOnePrimary)

BR-008: Update/delete row count must equal 1

Field Value
Statement Update/delete row count must equal 1
Trigger AfterUpdate/AfterDelete lifecycle
Enforcement Multiple classes
Outcome Error messages added on contention failure
Confidence Verified
Source Business\SAIF.Business.Claim\cls1502Transfer.vb (AfterUpdate, AfterDelete) and peer mutable BOF objects that perform the same single-row concurrency check

BR-009: Released scheduled payments are truncated to one remaining payment

Field Value
Statement When a claim change stops a benefit payment schedule, a scheduled payment that already has a released financial transaction is kept with its remaining payment count set to 1; a scheduled payment with no released transaction is deleted outright
Trigger ProcessBenefitPayment evaluates each schedule row with a remaining payment count greater than zero
Enforcement clsBenefitSchedule.ProcessBenefitPayment and clsActiveBenefitSchedule.ProcessBenefitPayment, using ClaimServices.hasReleasedScheduledPayment to classify the row
Outcome The schedule is truncated (stop status "released") or the payment row is deleted (stop status "deleted"); a zero row count raises #PAYUPD# or #PAYDEL# and aborts the remaining rows
Confidence Verified
Source Business\SAIF.Business.Claim\clsBenefitSchedule.vb (ProcessBenefitPayment)

BR-010: Stopping a benefit payment schedule posts an adjuster review task

Field Value
Statement Stopping a benefit payment schedule creates a claim task describing the triggering change and whether the schedule was deleted or a released payment will still be issued, unless the caller declared that it posts its own task and the payment was released
Trigger A schedule row has been truncated or deleted by ProcessBenefitPayment
Enforcement clsBenefitSchedule.ReturnTask composes the text and clsClaimTaskGenerator.AddTask posts it
Outcome A claim task is created for the adjuster, due the current date; clsActiveBenefitSchedule never posts a task
Confidence Verified
Source Business\SAIF.Business.Claim\clsBenefitSchedule.vb (ProcessBenefitPayment, ReturnTask)

BR-011: Setting an award to pending resets its benefit payments to in-progress

Field Value
Statement Only the claim's active award may be moved to pending status, and once it is, its benefit payment rows are returned to in-progress status with the approver nulled and the initiator blanked so the payment must be re-initiated and re-approved
Trigger clsSetAwardPaymentPending is retrieved for a claim and saved
Enforcement clsSetAwardPaymentPending.BeforeUpdate and clsSetAwardPaymentPending.ProcessBenefitPayment
Outcome CL_AWARD.AWARD_STATUS_CODE becomes P and CL_BENEFIT_PAYMENT.BENEFIT_STATUS_CODE becomes 0; a failed award update prevents the payment reset and raises UpdateError
Confidence Verified
Source Business\SAIF.Business.Claim\clsSetAwardPaymentPending.vb (BeforeRetrieve, BeforeUpdate, AfterUpdate, ProcessBenefitPayment)

BR-012: Award benefit payment collections default to federal benefit types

Field Value
Statement When a caller requests an award's benefit payments without supplying benefit type codes, the retrieval is restricted to the federal benefit types 4, 5, and 6
Trigger clsAwardBenefitPaymentCollection.BeforeRetrieve finds an empty benefit type code list
Enforcement clsAwardBenefitPaymentCollection.BeforeRetrieve
Outcome The dynamic benefit type predicate is completed with the three federal codes, so state-only payments are excluded from the result
Confidence Verified
Source Business\SAIF.Business.Claim\clsAwardBenefitPaymentCollection.vb (BeforeRetrieve)

BR-013: The primary injured body part is mirrored onto the claim header

Field Value
Statement After an injured body part marked as primary is inserted or updated, its body part code, body side code, and injury nature code are written onto the claim header; a clearing request writes placeholder values instead
Trigger AfterInsert or AfterUpdate on a dirty body part carrying the primary flag
Enforcement clsWorkerInjuredBodyPart.UpdateClaimBodyPart
Outcome The claim header's primary body part, side, and injury nature columns are kept in step with the detail rows; the cascade performs no rows-affected check
Confidence Verified
Source Business\SAIF.Business.Claim\clsWorkerInjuredBodyPart.vb (AfterInsert, AfterUpdate, UpdateClaimBodyPart)

BR-014: Only 1502 transfers with no processed date are eligible for transfer

Field Value
Statement A 1502 transfer record is outstanding only while its processed date is null; both transfer-queue queries exclude records that already carry a processed date, and the whole-queue query returns them in file name order
Trigger GetTransferList or GetUnprocessedTransferList is called
Enforcement cls1502Transfer.GetTransferList and cls1502Transfer.GetUnprocessedTransferList
Outcome Transferred documents drop out of the queue once their processed date is written
Confidence Verified
Source Business\SAIF.Business.Claim\cls1502Transfer.vb (GetTransferList, GetUnprocessedTransferList)

BR-015: Employee work address ZIP codes are stored numerically and normalized to five digits

Field Value
Statement The employee work address ZIP code is stored as a number; a stored value of zero is treated as no ZIP code, and any other value is left-padded with zeros to five digits when the object is filled
Trigger Fill reads an employee work address row
Enforcement clsClaimEmployeeWorkAddress.Fill
Outcome Leading-zero ZIP codes are restored for display and validation; a genuine ZIP of 00000 cannot be represented
Confidence Verified
Source Business\SAIF.Business.Claim\clsClaimEmployeeWorkAddress.vb (Fill)

BR-016: Time-loss due dates falling on a non-working day roll to the next state working day

Field Value
Statement The time-loss due date returned by the first-payment timeliness assessment is evaluated against the state holidays calendar rather than SAIF's own calendar, and a due date falling on a non-working day is reported as the next working day
Trigger A caller reads the time-loss due date from a timeliness assessment
Enforcement clsTimelinessOfFirstPayment.TimeLossDueDate over a smart date constructed with the STATEHOLIDAYS calendar
Outcome Statutory deadlines follow the state's non-working days, so the reported due date can differ from the raw procedure output
Confidence Verified
Source Business\SAIF.Business.Claim\clsITimelinessOfFirstPayment.vb (AfterRetrieve, TimeLossDueDate)

BR-017: Scheduled PPD awards use the latest rate effective on or before the award date

Field Value
Statement A scheduled permanent partial disability award is priced using the last per-degree rate whose effective date is on or before the supplied award date; when no rate qualifies the amount is zero
Trigger GetAwardAmount is called on the scheduled degree award table
Enforcement clsPPDScheduledDegreeAwards.GetAwardAmount
Outcome Awards are priced at the rate in force when they became effective; a date earlier than every rate yields zero
Confidence Verified
Source Business\SAIF.Business.Claim\clsPPDScheduledDegreeAwards.vb (GetAwardAmount)

BR-018: Unscheduled PPD awards accumulate across cumulative degree bands

Field Value
Statement An unscheduled permanent partial disability award is priced by allocating the degree count across the degree bands effective on the award date in ascending degree order, multiplying the degrees allocated to each band by that band's per-degree rate and accumulating the total
Trigger GetAwardAmount is called on the unscheduled degree award table with a degree count and effective date
Enforcement clsPPDUnscheduledDegreeAwards.GetAwardAmount
Outcome The award amount is returned together with a step-by-step calculation proof recording each band's contribution
Confidence Verified
Source Business\SAIF.Business.Claim\clsPPDUnscheduledDegreeAwards.vb (GetAwardAmount)

BR-019: Work status and work release retrieval returns only the most recent sequence

Field Value
Statement Retrieving a claim's work status or work release status returns only the row carrying the highest sequence number for that claim, so callers always act on the latest history entry
Trigger GetClaimWorkStatus or GetClaimWorkReleaseStatus is called for a claim
Enforcement clsClaimWorkStatus and clsClaimWorkReleaseStatus retrieve statements, which filter on the maximum sequence number for the claim
Outcome Earlier history entries are unreachable through these objects
Confidence Verified
Source Business\SAIF.Business.Claim\clsClaimWorkStatus.vb and Business\SAIF.Business.Claim\clsClaimWorkReleaseStatus.vb (Criteria RetrieveSQL)

Inherited business rules

Rules in this section are inherited from shared BOF framework behavior.

From clsBusinessBase (saif-framework-core)

INH-001: Framework rule execution

Field Value
Statement Inherited BOF business objects evaluate property and object rules through the shared rules manager.*
Trigger When a property setter or save path triggers rule evaluation
Enforcement Inherited clsBusinessBase rules-manager flow
Outcome Broken-rule state is captured and exposed to consumers.*
Confidence Inherited
Origin saif-framework-core — clsBusinessBase
Source Retrieved from dependency documentation via Legends CLI

INH-002: Collection validation surfacing

Field Value
Statement Inherited BOF collections surface aggregated validation state through IDataErrorInfo.*
Trigger When child items or collection state contain broken rules
Enforcement Inherited clsBusinessCollectionBase validation behavior
Outcome Consumers can read collection-level error state without querying each child directly.*
Confidence Inherited
Origin saif-framework-core — clsBusinessCollectionBase
Source Retrieved from dependency documentation via Legends CLI

Stored procedure business rules

Rules sourced from Oracle procedures referenced by this library.

PR-001: Reject injury dates on or before 01-JAN-1900

Field Value
Statement Injury dates on or before 01-JAN-1900 are rejected
Trigger sp82286_statutoryweeklywage receives inInjuryDate <= 01-JAN-1900
Enforcement sp82286_statutoryweeklywage sets ErrorMessage to Invalid injury date and exits before calculation
Outcome No statutory weekly wage is calculated and the caller receives an error message
Confidence Verified
Source Business\SAIF.Business.Claim\clsStatutoryWeeklyWageCalculation.vb (BeforeRetrieve, AfterRetrieve call sp82286_statutoryweeklywage)

PR-002: Reject non-positive wages

Field Value
Statement Non-positive wages are rejected
Trigger sp82286_statutoryweeklywage receives inWages <= 0
Enforcement sp82286_statutoryweeklywage sets ErrorMessage to Invalid wages at time of injury and exits
Outcome No statutory weekly wage is calculated and the caller receives an error message
Confidence Verified
Source Business\SAIF.Business.Claim\clsStatutoryWeeklyWageCalculation.vb (BeforeRetrieve, AfterRetrieve call sp82286_statutoryweeklywage)

PR-003: Restrict pay period to H, D, W, M, or A

Field Value
Statement Pay period codes are limited to H, D, W, M, or A
Trigger sp82286_statutoryweeklywage receives an unsupported inPayPeriod value
Enforcement sp82286_statutoryweeklywage sets ErrorMessage to Invalid pay period and exits
Outcome No statutory weekly wage is calculated and the caller receives an error message
Confidence Verified
Source Business\SAIF.Business.Claim\clsStatutoryWeeklyWageCalculation.vb (BeforeRetrieve, AfterRetrieve call sp82286_statutoryweeklywage)

PR-004: Enforce hours per day for hourly wage inputs

Field Value
Statement Hourly wage inputs must include hours worked per day
Trigger sp82286_statutoryweeklywage receives inPayPeriod = H with inHoursWorkedPerDay = 0
Enforcement sp82286_statutoryweeklywage sets ErrorMessage to Invalid hours worked per day for a hourly pay period and exits
Outcome No statutory weekly wage is calculated and the caller receives an error message
Confidence Verified
Source Business\SAIF.Business.Claim\clsStatutoryWeeklyWageCalculation.vb (BeforeRetrieve, AfterRetrieve call sp82286_statutoryweeklywage)

PR-005: Enforce days worked per week for hourly and daily inputs

Field Value
Statement Hourly and daily wage inputs must include days worked per week
Trigger sp82286_statutoryweeklywage receives inPayPeriod = H or D with inDaysWorkedPerWeek = 0
Enforcement sp82286_statutoryweeklywage sets ErrorMessage to Invalid days worked per week for a hourly or daily pay period and exits
Outcome No statutory weekly wage is calculated and the caller receives an error message
Confidence Verified
Source Business\SAIF.Business.Claim\clsStatutoryWeeklyWageCalculation.vb (BeforeRetrieve, AfterRetrieve call sp82286_statutoryweeklywage)

PR-006: Normalize pre-1995 hourly/daily schedules to a three-day minimum

Field Value
Statement Pre-1995 hourly and daily schedules with fewer than three days worked are normalized to three days per week
Trigger sp82286_statutoryweeklywage receives inPayPeriod = H or D, an injury date before 07-JUN-1995, and inDaysWorkedPerWeek < 3
Enforcement sp82286_statutoryweeklywage assigns v_DaysWorkedPerWeek := 3 before the wage calculation
Outcome The calculation uses a three-day minimum work schedule
Confidence Verified
Source Business\SAIF.Business.Claim\clsStatutoryWeeklyWageCalculation.vb (BeforeRetrieve, AfterRetrieve call sp82286_statutoryweeklywage)

Notes

  • Rule identifiers in this document are documentation identifiers for this generated library set.

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.Claim\SAIF.BOF.Business.Claim.vbproj
  • Business\SAIF.Business.Claim\SAIF.BOF.Business.Claim.nuspec
  • Business\SAIF.Business.Claim\packages.config
  • Business\SAIF.Business.Claim\Enums.vb
  • Business\SAIF.Business.Claim\IExplanationOfBenefit.vb
  • Business\SAIF.Business.Claim\IExplanationOfBenefitSearchCriteria.vb
  • Business\SAIF.Business.Claim\cls1502Transfer.vb
  • Business\SAIF.Business.Claim\clsActiveBenefitSchedule.vb
  • Business\SAIF.Business.Claim\clsAggRightDates.vb
  • Business\SAIF.Business.Claim\clsAwardBenefitPayment.vb
  • Business\SAIF.Business.Claim\clsAwardBenefitPaymentCollection.vb
  • Business\SAIF.Business.Claim\clsBenefitSchedule.vb
  • Business\SAIF.Business.Claim\clsClaimEmployeeWorkAddress.vb
  • Business\SAIF.Business.Claim\clsClaimListGenerator.vb
  • Business\SAIF.Business.Claim\clsClaimWorkReleaseStatus.vb
  • Business\SAIF.Business.Claim\clsClaimWorkStatus.vb
  • Business\SAIF.Business.Claim\clsFederalAwardStatus.vb
  • Business\SAIF.Business.Claim\clsFederalAwardStatusCollection.vb
  • Business\SAIF.Business.Claim\clsFederalBenefitSchedule.vb
  • Business\SAIF.Business.Claim\clsITimelinessOfFirstPayment.vb
  • Business\SAIF.Business.Claim\clsMedicallyStationaryDate.vb
  • Business\SAIF.Business.Claim\clsPPDBodyParts.vb
  • Business\SAIF.Business.Claim\clsPPDScheduledDegreeAwards.vb
  • Business\SAIF.Business.Claim\clsPPDUnscheduledDegreeAwards.vb
  • Business\SAIF.Business.Claim\clsServiceType.vb
  • Business\SAIF.Business.Claim\clsServiceTypeCollection.vb
  • Business\SAIF.Business.Claim\clsSetAwardPaymentPending.vb
  • Business\SAIF.Business.Claim\clsStatutoryWeeklyWageCalculation.vb
  • Business\SAIF.Business.Claim\clsVocationalServicesTypes.vb
  • Business\SAIF.Business.Claim\clsWorkerInjuredBodyPart.vb
  • Business\SAIF.Business.Claim\clsWorkerInjuredBodyPartCollection.vb
  • Business\SAIF.Business.Claim\mdlPPD.vb
  • Business\SAIF.Business.Claim\mdlReserveServices.vb