This page captures business rules enforced by SAIF.Business.Claim.Entry.
BR-CE-001: Injury date must be on or after worker's birth date¶
Field
Value
Statement
Injury date must be on or after worker's birth date
Trigger
clsClaimEntry.IsValid via CompareInjuryDate_BirthDate
Enforcement
clsClaimEntry.vb
Outcome
Validation failure if InjuryDate < BirthDate
Confidence
Source-backed
Source
See page sources
BR-CE-002: If birth date is entered, age at injury must be 0 (federal/inmate only)¶
Field
Value
Statement
If birth date is entered, age at injury must be 0 (federal/inmate only)
Trigger
ValidAgeAndBirthDate called externally
Enforcement
clsClaimEntry.vb
Outcome
Validation failure
Confidence
Source-backed
Source
See page sources
BR-CE-003: Manual claim number must not already exist and must not exceed '7799999' if numeric¶
Field
Value
Statement
Manual claim number must not already exist and must not exceed '7799999' if numeric
Trigger
ValidManualClaim
Enforcement
clsClaimEntry.vb
Outcome
Returns false — prevents save
Confidence
Source-backed
Source
See page sources
BR-CE-004: Active claim flag is 'Y' only when status is 'New'¶
Field
Value
Statement
Active claim flag is 'Y' only when status is 'New'
Trigger
BeforeInsert / BeforeUpdate
Enforcement
clsClaimEntry.vb
Outcome
Derived field set automatically
Confidence
Source-backed
Source
See page sources
BR-CE-005: Work release status must exist if work release date or code is provided (state only)¶
Field
Value
Statement
Work release status must exist if work release date or code is provided (state only)
Trigger
UpdateWorkReleaseStatus
Enforcement
clsStateClaimEntry.vb
Outcome
Creates/updates/deletes child object
Confidence
Source-backed
Source
See page sources
BR-CE-006: Tail coverage claims (policy subcode = 'T') are ineligible for fast track*¶
Field
Value
Statement
Tail coverage claims (policy subcode = 'T') are ineligible for fast track*
Trigger
IsPolicyTailCoverage property
Enforcement
clsClaimEntry.vb
Outcome
Filtering condition for fast-track eligibility
Confidence
Source-backed
Source
See page sources
BR-CE-007: Non-Oregon state defaults county code to '37'¶
Field
Value
Statement
Non-Oregon state defaults county code to '37'
Trigger
DetermineCountyCode
Enforcement
clsStateClaimEntry.vb
Outcome
Sets county to non-Oregon constant
Confidence
Source-backed
Source
See page sources
BR-CE-008: Oregon county code is resolved from zip via ZIP_MCO_COUNTY table¶
Field
Value
Statement
Oregon county code is resolved from zip via ZIP_MCO_COUNTY table
Trigger
DetermineCountyCode
Enforcement
clsStateClaimEntry.vb
Outcome
Zip-to-county lookup
Confidence
Source-backed
Source
See page sources
BR-CE-009: Multiple employer letter request is inserted when claim is New and MultipleEmprFlag = 'Y'¶
Field
Value
Statement
Multiple employer letter request is inserted when claim is New and MultipleEmprFlag = 'Y'
Trigger
AddNewStatusData (state)
Enforcement
clsStateClaimEntry.vb
Outcome
Insert to CL_MULT_EMPLOYER_LETTER_REQ
Confidence
Source-backed
Source
See page sources
BR-CE-010: Pharmacy eligibility update date must use override or default to current timestamp¶
Field
Value
Statement
Pharmacy eligibility update date must use override or default to current timestamp
Trigger
BeforeUpdate
Enforcement
clsPharmacyEligibility.vb
Outcome
Conditional date assignment
Confidence
Source-backed
Source
See page sources
BR-CE-011: Optimistic concurrency — update fails if RowsAffected <> 1¶
Field
Value
Statement
Optimistic concurrency — update fails if RowsAffected <> 1
Trigger
All After* methods
Enforcement
clsClaimEntry.vb, clsPharmacyEligibility.vb
Outcome
AddErrorMessage with DB contention error
Confidence
Source-backed
Source
See page sources
BR-CE-012: Multi-claim detection returns the most recently updated same-worker claim within a 14-day injury-date window¶
Field
Value
Statement
CheckForMultipleClaimsForWorker searches CL_INJURY_CLAIM for the same worker, excludes the current claim, restricts to injury dates within ±14 days of the current claim's injury date, and returns only the SAIF claim number of the match with the maximum UPDATE_DATE.
Trigger
clsClaimEntry.CheckForMultipleClaimsForWorker
Enforcement
clsClaimEntry.vb
Outcome
Returns a trimmed claim number string (empty if no match); callers use it to warn of a possible duplicate/related claim.*
Confidence
Source-backed*
Source
See page sources
BR-CE-013: Saving a New-status claim cascades auxiliary status rows¶
Field
Value
Statement
When a claim is saved with IsNewStatus = True, the save also queues inserts for claim request decision, claim status activity, and claim type activity; MCO eligibility is queued only when McoID is non-blank, and employer/policy history is queued only when PolicyNum > 0.
Trigger
clsClaimEntry.AddNewStatusData, called from BeforeInsert and BeforeUpdate
Enforcement
clsClaimEntry.vb
Outcome
Additional rows created in CL_CLAIM_REQUEST_DECISION, CL_CLAIM_STATUS_ACTIVITY, CL_CLAIM_TYPE_ACTIVITY, and conditionally CL_CLAIM_MCO_ELIGIBILITY / CL_CLAIM_POLICY_HISTORY; each auxiliary insert is separately row-count checked
Confidence
Source-backed
Source
See page sources
BR-CE-014: Accepted manual claim numbers are truncated to seven characters with a recalculated check digit¶
Field
Value
Statement
After ValidManualClaim accepts a manually entered claim number, only the leftmost seven characters are stored in SaifClaimNum, and the alpha check digit is always recomputed from that value rather than trusting any caller-supplied trailing check character.
Trigger
clsClaimEntry.ValidManualClaim
Enforcement
clsClaimEntry.vb
Outcome
Stored claim number is normalized to 7 characters plus a recalculated check digit
Confidence
Source-backed
Source
See page sources
BR-CE-015: Work-release status child record lifecycle follows presence of code/date and claim deletion¶
Field
Value
Statement
UpdateWorkReleaseStatus creates a work-release-status child when a work release date or code is supplied and none exists; updates the child when both a code/date and the child already exist; deletes the child when both values become empty; and deletes any existing child outright when the parent claim itself is deleted.
Trigger
clsStateClaimEntry.UpdateWorkReleaseStatus, called from IsValid
Enforcement
clsStateClaimEntry.vb
Outcome
Child work-release-status object is created, updated, or deleted to stay consistent with the parent claim's work-release fields
Confidence
Source-backed
Source
See page sources
BR-CE-016: Full pharmacy eligibility extract excludes inactive records¶
Field
Value
Statement
GetEligibilityReports(inGetAllRecords:=True) excludes rows where eligibility_status_code = 'I' from the full extract.
Inactive eligibility rows are never returned in the full-extract mode
Confidence
Source-backed
Source
See page sources
BR-CE-017: Change-only pharmacy eligibility extract requires an untransmitted or changed row¶
Field
Value
Statement
GetEligibilityReports(inGetAllRecords:=False) returns only rows that are untransmitted or updated after their last transmit date, whose current status or effective date differs from the previous stored values, and excludes both never-transmitted-inactive rows and inactive-to-inactive repeats.
Delta extract used for incremental pharmacy eligibility transmission
Confidence
Source-backed
Source
See page sources
BR-CE-018: First-fill (FF) eligibility extract remaps inactive status to outbound code '1'¶
Field
Value
Statement
GetEligibilityFFReports hard-codes the outbound EligibilityStatusCode to '1' for rows where MedImpact has been transmitted (medimpact_transmit_date is not null), the stored status is inactive ('I'), and the regular transmit has not yet occurred (transmit_date is null).
Downstream consumers see outbound code '1' instead of the stored inactive code for this specific transmit-timing combination
Confidence
Source-backed
Source
See page sources
BR-CE-019: First-fill eligibility pickup requires a related document, no MedImpact transmit, and a two-minute aging delay¶
Field
Value
Statement
GetFirstFillEligibilityReports requires a joined CL_801_DOCUMENT row with document type code '9', a null medimpact_transmit_date, a non-inactive eligibility status, and an update_date at least two minutes in the past before the row is eligible for first-fill pickup.
Prevents first-fill extraction of rows that are too new or lack the required supporting document
Confidence
Source-backed
Source
See page sources
BR-CE-020: Submitted Online 801 submissions cannot be deleted¶
Field
Value
Statement
Rule_ValidDelete blocks deletion of a cls801Submission unless its status is Incomplete; a submitted submission is not deletable from the business layer.
Trigger
cls801Submission validation rules, evaluated before Save()/delete
Enforcement
Online801\Submission\cls801Submission.vb
Outcome
Validation failure prevents deletion of submitted rows
Confidence
Source-backed
Source
See page sources
BR-CE-021: New Online 801 submissions default to Incomplete status with preseeded language and policy number¶
Field
Value
Statement
A newly created cls801Submission always starts with SubmissionStatusCode = INCOMPLETE, defaults SubmissionData.Box12LanguagePreferenceCode to "None", and copies the supplied policy number into SubmissionData.Box36InsurancePolicyNum.
Trigger
cls801Submission.New801Submission / Create
Enforcement
Online801\Submission\cls801Submission.vb
Outcome
New submissions always begin in a consistent default state
Confidence
Source-backed
Source
See page sources
BR-CE-022: Worker lookup requires unique-PersonID consensus and uses a 14-day injury-date window for same-claim detection¶
Field
Value
Statement
FindWorker treats a search as resolved only when every returned candidate shares the same PersonID; when a resolved worker's injury date falls within ±14 days of the submission's injury date, the matching claim is treated as the same claim and its ClaimID is adopted.
Trigger
cls801Submission.FindWorker, delegating to clsFindWorkerAPI
Prevents duplicate claim creation when a matching in-progress claim already exists for the worker
Confidence
Source-backed
Source
See page sources
BR-CE-023: ClaimCenter submission shifts loss date and claimant birth date to avoid same-day rollback¶
Field
Value
Statement
Before building the ClaimCenter submission payload, clsNewClaimModel shifts LossDate forward by one minute and shifts the claimant's date of birth forward by two hours, to avoid the receiving system rolling either date back a day due to time-zone conversion.
ClaimCenter receives shifted date/time values rather than the raw stored dates*
Confidence
Source-backed*
Source
See page sources
BR-CE-024: Claim search requires a policy number greater than zero¶
Field
Value
Statement
clsClaimSearchCriteria's only registered validation rule, ValidPolicyNum, requires PolicyNum > 0; an invalid (unset) policy number causes GetResults to return an empty collection rather than raising an error.
Trigger
clsClaimSearchCriteria business rules, evaluated via IsValid in clsClaimSearchResultCollection.GetResults
Note: Statements marked with * were inferred from code structure, naming
conventions, or contextual evidence where direct confirmation was not available
in source artifacts.