SAIF.Business.Claim operations and processes¶
This page is the operation catalog and cross-operation hub for this library. Each operation's detailed, step-by-step logic lives in its own page under operations/.
Operation catalog¶
| Operation | Intent | Trigger | Inputs | Outputs | Rules | Tables | SQL |
|---|---|---|---|---|---|---|---|
| Benefit-payment stop processing | Stop remaining scheduled benefit payments when a payment has been released | Caller invokes ProcessBenefitPayment(claimId, callingApplication) |
ClaimID, CallingApplication, CallingFunction | Updated/deleted schedule and payment rows, StopStatus | BR-009, BR-010 | CL_BENEFIT_SCHEDULE, CL_BENEFIT_PAYMENT | SQL-011, SQL-012 |
| Set award to Pending | Move an active award to Pending status and cascade benefit-payment updates | AfterUpdate when award status is set to 'P' |
ClaimID, AwardNum | Updated award and benefit-payment rows | BR-011 | CL_AWARD, CL_BENEFIT_PAYMENT | SQL-031, SQL-048 |
| Injured body-part maintenance | Maintain injured body parts for a claim and enforce single-primary rules | Caller creates/updates/deletes an injured body part | ClaimID, BodyPartCode, BodyPartSideCode, PrimaryIndicator | Injured body-part rows, propagated CL_INJURY_CLAIM columns | BR-006, BR-007 | CL_WORKER_INJURED_BODY_PART, CL_INJURY_CLAIM | SQL-008, SQL-050, SQL-051 |
| Dynamic claim list generation | Execute a caller-supplied SQL statement to build an ad-hoc claim list | Caller invokes GetClaimListCollection(dpi, sqlStatement, id) |
Caller-supplied SQL text, ID | Configurable claim-list rows | — | (caller-determined) | SQL-019 |
| DCBS 1502 transfer handling | Create, retrieve, and process DCBS 1502 transfer files | Transfer file creation, sweep, or marking as processed | ClaimID, FileId, FileName | Transfer records; processed-date updates | BR-001, BR-002 | CL_1502_DCBS_TRANSFER | SQL-004, SQL-037 |
| Stored-procedure read models | Retrieve claim-related calculated values from Oracle stored procedures | Caller retrieves aggravation-rights dates, timeliness of first payment, medically-stationary date, or statutory weekly wage | ClaimID and calculation-specific inputs | Calculated result values via REF CURSOR | BR-008 | — | SQL-013, SQL-025, SQL-033, SQL-034 |
| Code-table caching | Cache PPD and reserve-services reference code tables for the process lifetime | First call to a mdlPPD/mdlReserveServices accessor, or explicit Refresh |
Optional Refresh flag | Cached code-table collections | — | CL_PPD_BODY_PART_CODE, CL_RESERVE_VOC_SERV_TYPE_CODE | SQL-026, SQL-035 |
| PPD award calculation | Calculate scheduled and unscheduled PPD degree-award amounts with an auditable calculation trail | Caller invokes GetAwardAmount(...) |
Degrees, effective date | Award amount, CalcProof audit trail |
— | CL_PPD_SCHED_DEGREE_AWARD, CL_PPD_UNSCHED_DEGREE_AWARD | SQL-027, SQL-028 |
Process flow diagram¶
The following diagram visualizes the primary benefit-payment stop processing flow.
flowchart TD
Start([ProcessBenefitPayment called]) --> Retrieve[Retrieve active benefit schedules<br>REMAINING_PAYMENT_COUNT > 0]
Retrieve --> Check{hasReleasedScheduledPayment?}
Check -->|Yes| UpdateSched[Update schedule<br>RemainingPaymentCount = 1]
Check -->|No| DeletePayment[Delete benefit payment row]
UpdateSched --> RowsA{RowsAffected = 0?}
DeletePayment --> RowsB{RowsAffected = 0?}
RowsA -->|Yes| ErrUpd([Error #PAYUPD#<br>return False])
RowsA -->|No| Released([StopStatus.Released])
RowsB -->|Yes| ErrDel([Error #PAYDEL#<br>return False])
RowsB -->|No| Deleted([StopStatus.Deleted])
Database interactions¶
The following table summarizes which operations read from or write to the database. Per-step SQL and table citations live in each operation's detail page under operations/.
| Operation | SQL | Tables | Type |
|---|---|---|---|
| Benefit-payment stop processing | SQL-011, SQL-012, SQL-038, SQL-039, SQL-053, SQL-054 | CL_BENEFIT_SCHEDULE, CL_BENEFIT_PAYMENT | Read / Write |
| Set award to Pending | SQL-031, SQL-032, SQL-048, SQL-049 | CL_AWARD, CL_BENEFIT_PAYMENT | Read / Write |
| Injured body-part maintenance | SQL-008, SQL-036, SQL-050, SQL-051, SQL-062 | CL_WORKER_INJURED_BODY_PART, CL_INJURY_CLAIM | Read / Write |
| Dynamic claim list generation | SQL-019 | (caller-determined) | Read |
| DCBS 1502 transfer handling | SQL-001, SQL-004, SQL-009, SQL-010, SQL-037, SQL-052 | CL_1502_DCBS_TRANSFER | Read / Write |
| Stored-procedure read models | SQL-013, SQL-025, SQL-033, SQL-034 | — (stored procedures) | Read |
| Code-table caching | SQL-026, SQL-035 | CL_PPD_BODY_PART_CODE, CL_RESERVE_VOC_SERV_TYPE_CODE | Read |
| PPD award calculation | SQL-027, SQL-028 | CL_PPD_SCHED_DEGREE_AWARD, CL_PPD_UNSCHED_DEGREE_AWARD | Read |
Failure and edge-case behavior¶
- Benefit-payment stop processing raises
#PAYUPD#or#PAYDEL#and returnsFalsewhen the corresponding update/delete affects zero rows. - Set award to Pending reports "The Award was NOT succesfully updated to Pending" (spelling as in source) when the update fails; unlike most other updates in this library, SQL-048 has no
UPDATE_NUMoptimistic-concurrency predicate.* - Aggravation-rights and timeliness-of-first-payment stored-procedure retrieves raise "Claim Not Found" when the cursor returns no rows (BR-008).
- Dynamic claim-list generation executes caller-supplied SQL text with only a single
:IDbind parameter — a SQL-injection and maintainability risk whose actual exposure depends on callers, none of which exist in this repository.* - Code-table caches in
mdlPPD/mdlReserveServiceshave no expiry or synchronization and are process-lifetime, not thread-safe.*
Stored procedure operations¶
Operations implemented in Oracle stored procedures referenced by this library.
| Operation | Description | Source | Link |
|---|---|---|---|
| Calculate statutory weekly wage | Validates the injury date, wage amount, pay-period code and the period-specific hours/days inputs; resolves the injury-date-dependent weeks-per-month factor and the pre-1995 minimum-days-per-week floor; then converts the supplied wage to a weekly amount according to the pay-period code. | sp82286_statutoryweeklywage |
Details |
| Emit calculation result set | Opens the recordset REF CURSOR over dual, projecting the local variables as StatutoryWeeklyWage and ErrorMessage columns; called from every exit path so the caller always receives exactly one row. |
sp82286_statutoryweeklywage.SelectStatutoryWeeklyWage |
Details |
| Consume calculation result | Reads the single cursor row into m_StatutoryWeeklyWage and m_ErrorMessage, exposed as read-only properties; wrapped in an empty Try … Catch. |
clsStatutoryWeeklyWageCalculation.AfterRetrieve |
Details |
No operations 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.
Related documentation¶
- Index
- Overview
- Architecture
- Dependencies
- Business rules
- Database tables
- SQL catalog
- Procedures
- API reference
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/clsActiveBenefitSchedule.vb
- SAIF.Business.Claim/clsSetAwardPaymentPending.vb
- SAIF.Business.Claim/clsWorkerInjuredBodyPart.vb
- SAIF.Business.Claim/clsClaimListGenerator.vb
- SAIF.Business.Claim/cls1502Transfer.vb
- SAIF.Business.Claim/clsAggRightDates.vb
- SAIF.Business.Claim/mdlPPD.vb
- SAIF.Business.Claim/mdlReserveServices.vb
- SAIF.Business.Claim/clsPPDUnscheduledDegreeAwards.vb