Skip to content

SAIF.Business.Claim.EAIP operations and processes

This page is the operation catalog and cross-operation hub for SAIF.Business.Claim.EAIP. The library implements the Employer-at-Injury Program end to end: screening a claim for eligibility, opening a service period, recording purchases and wage subsidies against it, paying them under authority and approval limits, billing the paid expenses to the Department of Consumer and Business Services, and reconciling DCBS remittances back against those bills. Eleven operations cover that lifecycle plus the supporting search, worklist, and caseload-management functions. 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
Service period management Open, maintain, and close an EAIP service period on a claim, with its contact, aggravation, and history detail clsPeriod.NewPeriod or GetPeriod, followed by property edits and Save() IDataPortalInfo, claim number, effective and expiration dates, EAIP user, end reason code, employer contact and aggravation detail, UpdateNum Persisted EAIP period row with cascading expense, history, and user-history children; orphan expense cleanup on delete; overlap and authority rule violations BR-PROC-002, BR-PROC-004, BR-PROC-013 EAIP_PERIOD_SEQ SQL-004, SQL-012, SQL-021, SQL-032, SQL-042
Expense lifecycle and payment approval Record purchases against a service period and move them through new, pending approval, pay, and paid status under authority and limit rules Caller adds or edits an expense on the period's collection and calls Save() Expense type, description, order date, paid and write-off amounts, vendor and payee detail, credit-card transaction date, acting user's payment authority Persisted expense and purchase rows with appended status history; approval demotions; payment authorization; amendment and correction chains BR-PROC-003, BR-PROC-005, BR-PROC-006, BR-PROC-009 EAIP_EXPENSE_SEQ SQL-007, SQL-048
Wage subsidy worksheet Build the pay-period and timecard worksheet behind a wage subsidy and derive the payable subsidy from gross wages Caller adds pay periods and timecards to a wage subsidy and calls Save() Pay period start and end dates, timecard dates, in/out times, regular and overtime hours, pay rates, wage-subsidy date range and days Persisted pay period, timecard, and wage subsidy rows; derived gross wages, calculated hours, and paid amount; day-limit and hour-balance rule violations BR-PROC-007, BR-PROC-008, BR-PROC-015 EAIP_PAY_PERIOD_SEQ, EAIP_PERIOD_TIMECARD, EAIP_PERIOD_TIMECARD_SEQ, EAIP_EXPENSE_SEQ SQL-002, SQL-003, SQL-007, SQL-010, SQL-011, SQL-020, SQL-030, SQL-031, SQL-040, SQL-041
Credit-card payment approval Present a supervisor with the credit-card purchases charged by one specialist and apply an approve-or-return decision clsCreditCardPayment.GetCreditPayments(dpi, eaipUser) followed by clsCreditCardPayments.SaveChanges(approved) IDataPortalInfo, the EAIP user under review, per-row supervisor-approved selections, one approve/return decision Expense status advanced to PAY or returned to NEW; the total of the selected amounts; the reviewing supervisor's formatted name; DB contention errors BR-PROC-001, BR-PROC-003, BR-PROC-006 None linkable* SQL-027
Expense status worklist Retrieve the EAIP expenses currently in a given status, optionally narrowed to one specialist clsExpenseByStatus.GetExpenseList(dpi, status, eaipUser) IDataPortalInfo, an expense status code, an optional specialist mail identifier defaulting to ALL A read-only list of expense projections with claim, worker, specialist, amount, status date, and credit-card date None registered* None documented* None catalogued*
DCBS bill generation and billing records Build the DCBS reimbursement bill for a service period, decide the bill type and admin fee, and move billed expenses forward clsGenerateBill.ProcessBills(periodId, reportNode, xPrintDocColl) or GenerateBill(period, billAmended:=True) Service period identifier, paid purchases and wage subsidies, existing bills, admin-fee limit amount, the wage-subsidy rate setting, worker/claim/policy data Billing header and expense-billing lines; expenses moved to Billed or Reimbursed with history; DCBS billing XML with optional cover letter; print document and image index record BR-PROC-010, BR-PROC-011 EAIP_BILLING_SEQ SQL-001, SQL-008, SQL-009, SQL-018, SQL-019, SQL-028, SQL-029, SQL-038, SQL-039
Reimbursement recording Record a DCBS remittance, its per-claim detail lines, and the expense-type amount breakdowns clsReimbursement.NewReimbursement(dpi) or a shared reader, followed by edits and Save() Received, posted, and reconciled dates; reimbursement amount and explanation; per-detail DCBS claim number, worker name, and total; per-type disabling, non-disabling, and reimbursed amounts Reimbursement header with detail and amount children; resolved claim data on each detail; claim-not-found violations; DB contention errors None registered beyond the claim check* EAIP_REIMB_SEQ, EAIP_REIMB_DETAIL_SEQ SQL-005, SQL-006, SQL-013, SQL-014, SQL-015, SQL-016, SQL-022, SQL-023, SQL-024, SQL-025, SQL-033, SQL-034, SQL-035, SQL-036, SQL-043, SQL-044, SQL-045, SQL-046
DCBS reimbursement balancing Match each remittance detail against the claim's unreconciled billed expenses and reconcile when the amounts agree clsBalanceDCBS.ProcessOneBatch(postedDate) A DCBS posted date, the remittances posted on it, each claim's unreconciled expense billings, resolved claim data Updated reimbursed amounts and admin-fee links; expenses moved to Reimbursed; per-detail and per-remittance reconciled flags; read/reconciled/skipped/name-mismatch counters BR-PROC-012 None linkable* SQL-018, SQL-028, SQL-029, SQL-035
Claim targeting and eligibility screening Record the EAIP eligibility screening decision for a claim with its reviewer and dates clsTargeting.NewTargeting(dpi) or a retrieval method, followed by edits and Save() Claim number, eligibility code, reviewer mail identifier, completed date, claim status code and effective date, begin/end dates, wage-subsidy begin date Targeting row with eligibility outcome and reviewer; resolved claim identifier, injury date, masked worker name, and policy name; duplicate and date violations BR-PROC-014 None linkable* SQL-017, SQL-026, SQL-037, SQL-047
EAIP claim and employer search Validate a set of EAIP search criteria and return masked search results from the integration API User populates clsSearchCriteria and calls clsSearchResult.GetSearchResults Worker name, policy number and name with rate/parent indicators, return-to-work load code and mail identifier, specialist, receipt date range, status code selections Search result rows with conflicted worker names replaced by a placeholder and status codes resolved to descriptions; criteria rule violations None catalogued as BR entries* None documented* None catalogued*
Caseload reassignment Reassign selected service periods, or every claim on selected policies, to a different EAIP specialist Supervisor calls UpdateClaimAssignment(dpi) or UpdatePolicyAssignment(dpi) Target specialist user name; a list of EAIP period identifiers or a list of policy numbers; acting user Updated period ownership with force-incremented update number, or one participant staging row per policy; violations when no specialist or no rows were selected BR-PROC-002 None linkable* None catalogued*

Process flow diagram

The following diagram shows how the eleven operations relate across the EAIP lifecycle: a claim is screened, a service period is opened, expenses and wage subsidies accumulate against it, payment passes through authority and supervisor gates, paid expenses are billed to DCBS, and DCBS remittances are balanced back against those bills.

flowchart TD
    Search([User finds EAIP work]) --> SearchOp[EAIP claim and employer search]
    Target[Claim targeting and<br>eligibility screening] --> Period[Service period management]
    SearchOp --> Period
    Period --> Expense[Expense lifecycle and<br>payment approval]
    Period --> Wage[Wage subsidy worksheet]
    Wage --> Expense
    Expense --> Gate{Approval required?}
    Gate -->|Credit card charged| CC[Credit-card payment approval]
    Gate -->|Over authority, over limit,<br>or under $100 total| Queue[Expense status worklist]
    Gate -->|No| Paid[Expense set to Paid]
    CC --> Paid
    Queue --> CC
    Paid --> Bill[DCBS bill generation<br>and billing records]
    Bill --> Sent([Bill printed and sent to DCBS])
    Sent --> Remit[Reimbursement recording]
    Remit --> Balance[DCBS reimbursement balancing]
    Balance --> Match{Detail total = matched total?}
    Match -->|Yes| Recon([Detail and remittance reconciled;<br>expenses set to Reimbursed])
    Match -->|No| Back[Transaction rolled back;<br>skipped counter raised]
    Back --> Balance
    Period -.reassignment.-> Reassign[Caseload reassignment]
    Reassign -.-> Period

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
Service period management SQL-004, SQL-012, SQL-021, SQL-032, SQL-042 EAIP_PERIOD_SEQ Read / Write (stored procedure)
Expense lifecycle and payment approval SQL-007, SQL-048 EAIP_EXPENSE_SEQ Read / Write (stored procedure)
Wage subsidy worksheet SQL-002, SQL-003, SQL-007, SQL-010, SQL-011, SQL-020, SQL-030, SQL-031, SQL-040, SQL-041 EAIP_PAY_PERIOD_SEQ, EAIP_PERIOD_TIMECARD, EAIP_PERIOD_TIMECARD_SEQ, EAIP_EXPENSE_SEQ Read / Write (stored procedure plus inline timecard statements)
Credit-card payment approval SQL-027 None linkable* Read / Update only (stored procedure)
Expense status worklist None catalogued* None documented* Read (external REST call)
DCBS bill generation and billing records SQL-001, SQL-008, SQL-009, SQL-018, SQL-019, SQL-028, SQL-029, SQL-038, SQL-039 EAIP_BILLING_SEQ Read / Write (stored procedure plus inline bill and policy statements, and an external REST call)
Reimbursement recording SQL-005, SQL-006, SQL-013, SQL-014, SQL-015, SQL-016, SQL-022, SQL-023, SQL-024, SQL-025, SQL-033, SQL-034, SQL-035, SQL-036, SQL-043, SQL-044, SQL-045, SQL-046 EAIP_REIMB_SEQ, EAIP_REIMB_DETAIL_SEQ Read / Write (stored procedure)
DCBS reimbursement balancing SQL-018, SQL-028, SQL-029, SQL-035 None linkable* Read / Write (stored procedure plus an inline write-off query, per-detail transactions)
Claim targeting and eligibility screening SQL-017, SQL-026, SQL-037, SQL-047 None linkable* Read / Write (stored procedure plus an inline uniqueness query)
EAIP claim and employer search None catalogued* None documented* Read (external REST call)
Caseload reassignment None catalogued* None linkable* Write (inline statements only)

Stored procedure operations

Operations implemented in the Oracle package referenced by this library.

Operation Description Source Link
Period persistence Inserts, selects, updates, and deletes EAIP service periods, protecting updates with an update-number check and cleaning up orphan expenses on delete. pk82500_eaip.eaip_period_insert, _select, _update, _delete Details
Expense status update Advances or returns an expense status, matching the caller's update number and returning the affected row count. pk82500_eaip.update_expense_status Details
Credit-card review select Returns the credit-card purchases with a paid date charged by the named EAIP user. pk82500_eaip.credit_payment_select Details
Expense status worklist Returns the expenses in a given status for a specialist, exposed through the EAIP integration API. pk82500_eaip.SelectExpensesByStatus_GW, SelectExpensesInCheckStatus Details
Billing persistence and reads Inserts, selects, updates, and deletes bill headers, and returns a claim's, a period's, or the system's non-reconciled bills. pk82500_eaip.EAIP_Billing_Insert, _Select, _Update, _Delete, getBillingsByClaim, GetBillingsByPeriod, GetNonReconciledBillings Details
Expense billing persistence Maintains the line rows that link a bill to the expenses it bills, keyed by bill and expense. pk82500_eaip.eaip_expense_billing_insert, _select, _update, _delete, GetExpenseBillingByBillingID, GetExpenseBillingByExpenseID Details
Purchase and wage subsidy persistence Maintains the two concrete expense types under a service period and their reads by expense identifier. pk82500_eaip.eaip_purchase_insert, _select, _update, _delete, eaip_wage_subsidy_insert, _select, _update, _delete, GetPurchaseByExpenseId, GetWageSubsidyByExpenseID, eaip_expense_insert, eaip_expense_update Details
Pay period persistence Maintains the pay periods that carry the wage-subsidy worksheet, including a read by pay period identifier. pk82500_eaip.eaip_pay_period_insert, _select, _update, _delete, GetPayPeriodByPayPeriodId Details
Reimbursement persistence and reads Maintains remittance headers and returns them by received date, posted date, or reconciled flag. pk82500_eaip.eaip_reimbursement_insert, _select, _update, _delete, GetReimbByReceivedDate, GetReimbByPostedDate, GetReimbReconciledFlag Details
Reimbursement detail and amount persistence Maintains the per-claim detail rows and the expense-type amount breakdowns at both header and detail level. pk82500_eaip.eaip_reimb_detail_insert, _select, _update, _delete, GetReimbDetailByID, EAIP_Reimb_Amount_*, GetReimbAmountbyType, reimb_detail_amount_*, GetReimbDetailAmountbyType Details
Targeting persistence and reads Maintains eligibility screening records and returns them for a claim. pk82500_eaip.eaip_targeting_insert, _update, _delete, GetTargetingByClaim Details

Failure and edge-case behavior

  • Optimistic concurrency is the dominant failure mode. Every persisting operation binds the previously read update number, checks the affected row count, and adds a DB contention error rather than throwing (BR-PROC-001, BR-PROC-002). The one deliberate exception is Caseload reassignment, whose inline update force-increments the update number and overwrites concurrent edits.
  • Approval gating is layered rather than singular: an expense can be pushed into supervisor approval by user authority, by an expense-type limit, by a small-dollar payment total, or unconditionally by a credit-card transaction date, and any one of them is sufficient (BR-PROC-005, BR-PROC-006, BR-PROC-009).
  • Batch operations are not uniformly transactional. Credit-card approval stops at the first contention failure and leaves earlier rows applied; bill generation saves the period before the bills; reimbursement balancing is the only operation that brackets each unit of work in its own transaction and rolls back a unit that fails to reconcile (BR-PROC-012).
  • Amendments are handled by exclusion rather than by a separate object model. The batch billing run refuses to bill them (BR-PROC-011), and the balancing run refuses to move an already-amended expense to reimbursed, so an amendment always waits for the explicit on-demand path.
  • Three operations depend entirely on external services — the expense status worklist, EAIP search, and the unreconciled admin-fee feed. The admin-fee feed swallows every exception into the logging service and returns nothing, so callers cannot distinguish "none" from "unavailable"; the other two surface whatever the API access layer raises.
  • Several routines build statement text by concatenation rather than binding: the reassignment period list and specialist name, and the DCBS write-off claim identifier. The values originate from selection lists and resolved data rather than free text, but the pattern offers no injection protection.*
  • Child rows are removed by database triggers on parent delete throughout the billing and reimbursement aggregates; this library issues no explicit cascading child deletes. Expense orphans left by a period delete are cleaned up inside the package instead (BR-PROC-004).
  • Conflicted worker names are masked by the property that exposes them, not by the query that loads them, in both targeting and search. Any consumer reading the underlying storage bypasses the mask.*

Note: Statements marked with * were inferred from code structure, naming conventions, or contextual evidence where direct confirmation was not available in source artifacts.

Sources

  • Business\SAIF.Business.Claim.EAIP\Billing\clsBilling.vb
  • Business\SAIF.Business.Claim.EAIP\Billing\clsExpenseBilling.vb
  • Business\SAIF.Business.Claim.EAIP\Billing\clsGenerateBill.vb
  • Business\SAIF.Business.Claim.EAIP\Period\clsPeriod.vb
  • Business\SAIF.Business.Claim.EAIP\Period\clsPeriodHistory.vb
  • Business\SAIF.Business.Claim.EAIP\Period\clsUserHistory.vb
  • Business\SAIF.Business.Claim.EAIP\Period\clsHistoryBase.vb
  • Business\SAIF.Business.Claim.EAIP\Period\clsExpense.vb
  • Business\SAIF.Business.Claim.EAIP\Period\clsExpenseHistory.vb
  • Business\SAIF.Business.Claim.EAIP\Period\clsExpenseByStatus.vb
  • Business\SAIF.Business.Claim.EAIP\Period\clsPurchase.vb
  • Business\SAIF.Business.Claim.EAIP\Period\clsWageSubsidy.vb
  • Business\SAIF.Business.Claim.EAIP\Period\clsPayPeriod.vb
  • Business\SAIF.Business.Claim.EAIP\Period\clsPayPeriodTimeCard.vb
  • Business\SAIF.Business.Claim.EAIP\Period\clsCreditCardPayments.vb
  • Business\SAIF.Business.Claim.EAIP\Period\clsReassignment.vb
  • Business\SAIF.Business.Claim.EAIP\Period\mdlUtility.vb
  • Business\SAIF.Business.Claim.EAIP\Reimbursement\clsReimbursement.vb
  • Business\SAIF.Business.Claim.EAIP\Reimbursement\clsReimbursementDetail.vb
  • Business\SAIF.Business.Claim.EAIP\Reimbursement\clsAmount.vb
  • Business\SAIF.Business.Claim.EAIP\Reimbursement\clsDetailAmount.vb
  • Business\SAIF.Business.Claim.EAIP\Reimbursement\clsBalanceDCBS.vb
  • Business\SAIF.Business.Claim.EAIP\Reimbursement\dcbsMethods.vb
  • Business\SAIF.Business.Claim.EAIP\Targeting\clsTargeting.vb
  • Business\SAIF.Business.Claim.EAIP\Search\clsSearchCriteria.vb
  • Business\SAIF.Business.Claim.EAIP\Search\clsSearchResult.vb
  • Business\SAIF.Business.Claim.EAIP\Search\EaipSearchResult.vb
  • Business\SAIF.Business.Claim.EAIP\UnreconciledAdminFees.vb
  • Business\SAIF.Business.Claim.EAIP\clsRecordInfo.vb
  • Business\SAIF.Business.Claim.EAIP\clsUpdateInfo.vb
  • Business\SAIF.Business.Claim.EAIP\mdlCodeTables.vb