---
title: SAIF.Business.Claim.Entry operations and processes
summary: Operation catalog and cross-operation hub for the claim-entry, state-entry, pharmacy-eligibility, and Online 801 business objects.
status: draft
owner: SAIF Doc Gen
last_reviewed: 2026-07-30
library: SAIF.Business.Claim.Entry
reference_type: package
---

# SAIF.Business.Claim.Entry operations and processes

This page is the operation catalog and cross-operation hub for `SAIF.Business.Claim.Entry`. The library exposes sixteen operations covering the core claim-entry lifecycle (create, insert, update, delete, number, and duplicate-claim detection), state-specific entry extensions (county-code resolution, multiple-employer letters, work release), pharmacy eligibility CRUD and reporting, and the Online 801 electronic-submission surface (documents, submissions, submission detail, worker lookup, claim submission, and claim search), which is backed by the `PK82538_ONLINE_801_CLAIM` Oracle package and two ClaimCenter/CCClaimDataApi REST integrations. 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 |
| --- | --- | --- | --- | --- | --- | --- | --- |
| [Create new claim](operations/create-new-claim.md) | Generate a new `CLAIM_ID` from an Oracle sequence and initialize claim defaults | `clsClaimEntry.BeforeCreate` / `AfterCreate` via the data-portal create pipeline | Acting worker ID, jurisdiction code | New in-memory claim object seeded with default status/coverage/flags | None documented* | None | [SQL-001](sql/SQL-001.md) |
| [Insert claim](operations/insert-claim.md) | Persist a new claim header to `CL_INJURY_CLAIM` and, for New-status claims, cascade auxiliary status rows | `clsClaimEntry.BeforeInsert` / `AfterInsert` during `Save()` of a new claim | Populated claim fields, injury address, `IsNewStatus` | Inserted `CL_INJURY_CLAIM` row; conditional request-decision, status-activity, type-activity, MCO-eligibility, and policy-history rows | [BR-CE-004](business-rules.md#br-ce-004-active-claim-flag-is-y-only-when-status-is-new), [BR-CE-011](business-rules.md#br-ce-011-optimistic-concurrency-update-fails-if-rowsaffected-1), [BR-CE-013](business-rules.md#br-ce-013-saving-a-new-status-claim-cascades-auxiliary-status-rows) | [CL_INJURY_CLAIM](database-tables.md#cl_injury_claim), [CL_CLAIM_REQUEST_DECISION](database-tables.md#cl_claim_request_decision), [CL_CLAIM_STATUS_ACTIVITY](database-tables.md#cl_claim_status_activity), [CL_CLAIM_TYPE_ACTIVITY](database-tables.md#cl_claim_type_activity), [CL_CLAIM_MCO_ELIGIBILITY](database-tables.md#cl_claim_mco_eligibility), [CL_CLAIM_POLICY_HISTORY](database-tables.md#cl_claim_policy_history) | [SQL-010](sql/SQL-010.md), [SQL-005](sql/SQL-005.md), [SQL-006](sql/SQL-006.md), [SQL-007](sql/SQL-007.md), [SQL-008](sql/SQL-008.md), [SQL-009](sql/SQL-009.md) |
| [Update claim](operations/update-claim.md) | Update all mutable fields on `CL_INJURY_CLAIM` with optimistic concurrency, re-running the New-status cascade | `clsClaimEntry.BeforeUpdate` / `AfterUpdate` during `Save()` of an existing claim | Modified claim fields, `ClaimID`, `UpdateNum` | Updated `CL_INJURY_CLAIM` row; same conditional auxiliary rows as insert | [BR-CE-004](business-rules.md#br-ce-004-active-claim-flag-is-y-only-when-status-is-new), [BR-CE-011](business-rules.md#br-ce-011-optimistic-concurrency-update-fails-if-rowsaffected-1), [BR-CE-013](business-rules.md#br-ce-013-saving-a-new-status-claim-cascades-auxiliary-status-rows) | [CL_INJURY_CLAIM](database-tables.md#cl_injury_claim), [CL_CLAIM_REQUEST_DECISION](database-tables.md#cl_claim_request_decision), [CL_CLAIM_STATUS_ACTIVITY](database-tables.md#cl_claim_status_activity), [CL_CLAIM_TYPE_ACTIVITY](database-tables.md#cl_claim_type_activity), [CL_CLAIM_MCO_ELIGIBILITY](database-tables.md#cl_claim_mco_eligibility), [CL_CLAIM_POLICY_HISTORY](database-tables.md#cl_claim_policy_history) | [SQL-022](sql/SQL-022.md), [SQL-005](sql/SQL-005.md), [SQL-006](sql/SQL-006.md), [SQL-007](sql/SQL-007.md), [SQL-008](sql/SQL-008.md), [SQL-009](sql/SQL-009.md) |
| [Delete claim](operations/delete-claim.md) | Remove all tasks for the claim, then delete the `CL_INJURY_CLAIM` row | `clsClaimEntry.BeforeDelete` / `AfterDelete` during `Save()` of a deleted claim | `ClaimID` | Deleted `TASK` rows and `CL_INJURY_CLAIM` row, or a DB contention error | [BR-CE-011](business-rules.md#br-ce-011-optimistic-concurrency-update-fails-if-rowsaffected-1) | [CL_INJURY_CLAIM](database-tables.md#cl_injury_claim) | [SQL-027](sql/SQL-027.md) |
| [Number claim / manual claim validation](operations/number-claim.md) | Assign the next system claim number or validate a manually entered claim number | Caller calls `NumberClaim` or `ValidManualClaim` before save | Current `SaifClaimNum`, or a manually entered claim number | Assigned/validated `SaifClaimNum` and recalculated check digit | [BR-CE-003](business-rules.md#br-ce-003-manual-claim-number-must-not-already-exist-and-must-not-exceed-7799999-if-numeric), [BR-CE-014](business-rules.md#br-ce-014-accepted-manual-claim-numbers-are-truncated-to-seven-characters-with-a-recalculated-check-digit) | None | [SQL-002](sql/SQL-002.md) |
| [Check multiple claims for worker](operations/check-multiple-claims.md) | Detect an existing claim for the same worker within a 14-day injury-date window | Caller calls `CheckForMultipleClaimsForWorker` | `WorkerID`, `ClaimID`, `InjuryDate` | Matching SAIF claim number, or an empty string | [BR-CE-012](business-rules.md#br-ce-012-multi-claim-detection-returns-the-most-recently-updated-same-worker-claim-within-a-14-day-injury-date-window) | [CL_INJURY_CLAIM](database-tables.md#cl_injury_claim) | [SQL-016](sql/SQL-016.md) |
| [State insert extensions](operations/state-insert-extensions.md) | Resolve the county code from the injury address and, for New-status claims, queue a multiple-employer letter request | `clsStateClaimEntry.BeforeInsert` / `BeforeUpdate` | Injury address state/zip, `MultipleEmprFlag`, `SaifClaimNum` | Resolved `County` on the injury address; conditional `CL_MULT_EMPLOYER_LETTER_REQ` row | [BR-CE-007](business-rules.md#br-ce-007-non-oregon-state-defaults-county-code-to-37), [BR-CE-008](business-rules.md#br-ce-008-oregon-county-code-is-resolved-from-zip-via-zip_mco_county-table), [BR-CE-009](business-rules.md#br-ce-009-multiple-employer-letter-request-is-inserted-when-claim-is-new-and-multipleemprflag-y) | [ZIP_MCO_COUNTY](database-tables.md#zip_mco_county), [CL_MULT_EMPLOYER_LETTER_REQ](database-tables.md#cl_mult_employer_letter_req) | [SQL-019](sql/SQL-019.md), [SQL-015](sql/SQL-015.md) |
| [Work release management](operations/work-release-management.md) | Create, update, or delete the claim's work-release-status child record to match the caller-supplied code/date | `clsStateClaimEntry.IsValid`, via `UpdateWorkReleaseStatus` | `WorkReleaseCode`, `WorkReleaseDate`, claim deletion state | Created/updated/deleted work-release-status child object | [BR-CE-005](business-rules.md#br-ce-005-work-release-status-must-exist-if-work-release-date-or-code-is-provided-state-only), [BR-CE-015](business-rules.md#br-ce-015-work-release-status-child-record-lifecycle-follows-presence-of-codedate-and-claim-deletion) | None in this library* | None in this library* |
| [Pharmacy eligibility CRUD](operations/pharmacy-eligibility-crud.md) | Insert or update a pharmacy eligibility report record for a claim | `clsPharmacyEligibilityReport.BeforeInsert` / `BeforeUpdate` during `Save()` | `ClaimID`, eligibility status/effective date, transmit dates | Inserted/updated `CL_PHARMACY_ELIGIBILITY_REPORT` row | [BR-CE-010](business-rules.md#br-ce-010-pharmacy-eligibility-update-date-must-use-override-or-default-to-current-timestamp), [BR-CE-011](business-rules.md#br-ce-011-optimistic-concurrency-update-fails-if-rowsaffected-1) | [CL_PHARMACY_ELIGIBILITY_REPORT](database-tables.md#cl_pharmacy_eligibility_report) | [SQL-014](sql/SQL-014.md), [SQL-026](sql/SQL-026.md) |
| [Pharmacy report retrieval](operations/pharmacy-report-retrieval.md) | Extract full, delta, and first-fill pharmacy eligibility report sets for downstream transmission | Caller calls `GetEligibilityReports`, `GetEligibilityFFReports`, or `GetFirstFillEligibilityReports` | Full/delta extraction flag | Sorted eligibility-report collections for transmission | [BR-CE-016](business-rules.md#br-ce-016-full-pharmacy-eligibility-extract-excludes-inactive-records), [BR-CE-017](business-rules.md#br-ce-017-change-only-pharmacy-eligibility-extract-requires-an-untransmitted-or-changed-row), [BR-CE-018](business-rules.md#br-ce-018-first-fill-ff-eligibility-extract-remaps-inactive-status-to-outbound-code-1), [BR-CE-019](business-rules.md#br-ce-019-first-fill-eligibility-pickup-requires-a-related-document-no-medimpact-transmit-and-a-two-minute-aging-delay) | [CL_PHARMACY_ELIGIBILITY_REPORT](database-tables.md#cl_pharmacy_eligibility_report) | Not catalogued in the SQL index — inline queries documented on the operation page* |
| [801 document management](operations/801-document-management.md) | Create, update, and retrieve Online 801 document metadata rows | `cls801Document` CRUD lifecycle and `cls801DocumentCollection` retrieval | `ClaimID`, `ImageSeqNum`, `FileName`, `DocTypeCode` | Persisted `CL_801_DOCUMENT` row, or a retrieved/sorted document collection | [BR-CE-011](business-rules.md#br-ce-011-optimistic-concurrency-update-fails-if-rowsaffected-1), [BR-PROC-003](business-rules.md#br-proc-003-document-updates-are-version-checked-with-lastupdatenum) | [CL_801_DOCUMENT](database-tables.md#cl_801_document) | [SQL-003](sql/SQL-003.md), [SQL-011](sql/SQL-011.md), [SQL-023](sql/SQL-023.md) |
| [801 submission CRUD](operations/801-submission-crud.md) | Create, update, delete, and retrieve Online 801 submission header rows, including worker-lookup-driven duplicate prevention | `cls801Submission` CRUD lifecycle and retrieval helpers | `PolicyNumber`, `ClaimID`/`SubmissionID`, submission header fields | Persisted `CL_801_SUBMISSION` row; populated or claim-synthesized submission object | [BR-CE-011](business-rules.md#br-ce-011-optimistic-concurrency-update-fails-if-rowsaffected-1), [BR-CE-020](business-rules.md#br-ce-020-submitted-online-801-submissions-cannot-be-deleted), [BR-CE-021](business-rules.md#br-ce-021-new-online-801-submissions-default-to-incomplete-status-with-preseeded-language-and-policy-number), [BR-PROC-001](business-rules.md#br-proc-001-updates-only-succeed-when-the-caller-supplied-lastupdatenum-matches-the-current-row-vers), [BR-PROC-002](business-rules.md#br-proc-002-deletes-only-succeed-when-the-caller-supplied-lastupdatenum-matches-the-current-row-vers) | [CL_801_SUBMISSION](database-tables.md#cl_801_submission) | [SQL-004](sql/SQL-004.md), [SQL-012](sql/SQL-012.md), [SQL-024](sql/SQL-024.md), [SQL-028](sql/SQL-028.md) |
| [801 submission data CRUD](operations/801-submission-data-crud.md) | Create, update, delete, and retrieve Online 801 submission detail rows, including claim/worker prefill | `cls801SubmissionData` CRUD lifecycle and `LoadFromClaim` / `LoadClaimWorker` prefill | Submission ID, claim data, worker DTO/ID, Box-field detail | Persisted `CL_801_SUBMISSION_DATA` row and six contact objects | [BR-CE-011](business-rules.md#br-ce-011-optimistic-concurrency-update-fails-if-rowsaffected-1), [BR-PROC-002](business-rules.md#br-proc-002-deletes-only-succeed-when-the-caller-supplied-lastupdatenum-matches-the-current-row-vers) | [CL_801_SUBMISSION_DATA](database-tables.md#cl_801_submission_data) | [SQL-013](sql/SQL-013.md), [SQL-018](sql/SQL-018.md), [SQL-025](sql/SQL-025.md), [SQL-029](sql/SQL-029.md) |
| [Worker lookup via API](operations/worker-lookup-via-api.md) | Resolve a worker (and, when applicable, an in-progress claim) from CCClaimDataApi before an Online 801 submission | `cls801Submission.FindWorker`, delegating to `clsFindWorkerAPI` | Submission name fields, tax ID, birth date, injury date | Resolved `cls801FindWorkerDTO` worker(s); adopted `ClaimID` on a same-claim match | [BR-CE-022](business-rules.md#br-ce-022-worker-lookup-requires-unique-personid-consensus-and-uses-a-14-day-injury-date-window-for-same-claim-detection) | None (REST) | None |
| [Claim submission via API](operations/claim-submission-via-api.md) | Submit a completed Online 801 submission to ClaimCenter and adopt the returned `ClaimID` | `cls801Submission.SubmitClaim`, delegating to `clsSubmitClaimByAPI` | Validated submission and submission-data, acting user | ClaimCenter `ClaimID`; updated submission status `Submitted`; `clsSubmissionResult` | [BR-CE-023](business-rules.md#br-ce-023-claimcenter-submission-shifts-loss-date-and-claimant-birth-date-to-avoid-same-day-rollback) | None (REST) | None |
| [Claim search via API](operations/claim-search-via-api.md) | Search CCClaimDataApi for Online 801 claims matching policy/name/SSN/date criteria | `clsClaimSearchResultCollection.GetResults`, delegating to `clsClaimSearchApi` | `PolicyNum`, name, SSN, claim number, status flags, date ranges | Sorted `clsClaimSearchResult` collection with display-translated claim number/status | [BR-CE-024](business-rules.md#br-ce-024-claim-search-requires-a-policy-number-greater-than-zero) | None (REST) | None |

## Process flow diagram

The following diagram shows how the sixteen operations relate: a claim is created, numbered, and persisted through its core lifecycle; state-specific extensions and pharmacy eligibility hang off the same claim; and the Online 801 surface runs its own parallel lifecycle for documents, submissions, and submission detail, converging on worker lookup and ClaimCenter submission.

```mermaid
flowchart TD
	Start([Caller requests claim entry]) --> Create[Create new claim]
	Create --> Number[Number claim /<br>manual claim validation]
	Number --> Dup{Check multiple claims<br>for worker?}
	Dup -->|Match found| Warn([Caller warned of<br>possible duplicate claim])
	Dup -->|No match| Insert[Insert claim]
	Insert --> StateExt[State insert extensions:<br>county code, multiple-employer letter]
	Insert --> WorkRel[Work release management]
	Insert --> Pharmacy[Pharmacy eligibility CRUD]
	Pharmacy --> PharmReports[Pharmacy report retrieval]
	Create --> Update[Update claim]
	Update --> StateExt
	Update --> WorkRel
	Update --> Pharmacy
	Insert --> Delete{Claim deleted?}
	Update --> Delete
	Delete -->|Yes| DeleteOp[Delete claim]
	Online801Start([Online 801 electronic submission]) --> Search[Claim search via API]
	Online801Start --> WorkerLookup[Worker lookup via API]
	WorkerLookup --> SubCrud[801 submission CRUD]
	SubCrud --> SubDataCrud[801 submission data CRUD]
	SubDataCrud --> DocMgmt[801 document management]
	SubDataCrud --> Submit{Ready to submit?}
	Submit -->|Yes| ClaimSubmit[Claim submission via API]
	ClaimSubmit --> Insert
	Submit -->|No| SubDataCrud
```

## Inherited operations and processes

Operations in this section originate from base classes or business objects provided by dependency libraries. They are inherited or delegated, not implemented in this library.

### From `clsClaimWorkReleaseStatus` and `clsClaimEmployeeWorkAddress` (`SAIF.Business.Claim`)

| Operation | Intent | Provided by | Origin | Embedded in |
| --- | --- | --- | --- | --- |
| Work status and work release tracking | Create, retrieve, update, and delete the sequence-numbered work-release-status child row | `clsClaimWorkReleaseStatus` | `SAIF.Business.Claim` | [Work release management](operations/work-release-management.md) |
| Claim employee work address management | Maintain the address of the work site where the injury occurred | `clsClaimEmployeeWorkAddress` | `SAIF.Business.Claim` | [State insert extensions](operations/state-insert-extensions.md) |

> **Origin**: These operations are defined and fully documented in `SAIF.Business.Claim`, which has been migrated to the current documentation format. See [Work status and work release tracking](../saif-business-claim/operations/work-status-and-release-tracking.md) and [Claim employee work address management](../saif-business-claim/operations/claim-employee-work-address-management.md) in the `SAIF.Business.Claim` documentation set.

## 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 |
| --- | --- | --- | --- |
| [Create new claim](operations/create-new-claim.md) | [SQL-001](sql/SQL-001.md) | DUAL (sequence) | Read |
| [Insert claim](operations/insert-claim.md) | [SQL-010](sql/SQL-010.md), [SQL-005](sql/SQL-005.md), [SQL-006](sql/SQL-006.md), [SQL-007](sql/SQL-007.md), [SQL-008](sql/SQL-008.md), [SQL-009](sql/SQL-009.md) | [CL_INJURY_CLAIM](database-tables.md#cl_injury_claim), [CL_CLAIM_REQUEST_DECISION](database-tables.md#cl_claim_request_decision), [CL_CLAIM_STATUS_ACTIVITY](database-tables.md#cl_claim_status_activity), [CL_CLAIM_TYPE_ACTIVITY](database-tables.md#cl_claim_type_activity), [CL_CLAIM_MCO_ELIGIBILITY](database-tables.md#cl_claim_mco_eligibility), [CL_CLAIM_POLICY_HISTORY](database-tables.md#cl_claim_policy_history) | Write |
| [Update claim](operations/update-claim.md) | [SQL-022](sql/SQL-022.md), [SQL-005](sql/SQL-005.md), [SQL-006](sql/SQL-006.md), [SQL-007](sql/SQL-007.md), [SQL-008](sql/SQL-008.md), [SQL-009](sql/SQL-009.md) | [CL_INJURY_CLAIM](database-tables.md#cl_injury_claim), [CL_CLAIM_REQUEST_DECISION](database-tables.md#cl_claim_request_decision), [CL_CLAIM_STATUS_ACTIVITY](database-tables.md#cl_claim_status_activity), [CL_CLAIM_TYPE_ACTIVITY](database-tables.md#cl_claim_type_activity), [CL_CLAIM_MCO_ELIGIBILITY](database-tables.md#cl_claim_mco_eligibility), [CL_CLAIM_POLICY_HISTORY](database-tables.md#cl_claim_policy_history) | Read / Write |
| [Delete claim](operations/delete-claim.md) | [SQL-027](sql/SQL-027.md) | [CL_INJURY_CLAIM](database-tables.md#cl_injury_claim) | Delete |
| [Number claim / manual claim validation](operations/number-claim.md) | [SQL-002](sql/SQL-002.md) | DUAL (sequence) | Read |
| [Check multiple claims for worker](operations/check-multiple-claims.md) | [SQL-016](sql/SQL-016.md) | [CL_INJURY_CLAIM](database-tables.md#cl_injury_claim) | Read |
| [State insert extensions](operations/state-insert-extensions.md) | [SQL-019](sql/SQL-019.md), [SQL-015](sql/SQL-015.md) | [ZIP_MCO_COUNTY](database-tables.md#zip_mco_county), [CL_MULT_EMPLOYER_LETTER_REQ](database-tables.md#cl_mult_employer_letter_req) | Read / Write |
| [Pharmacy eligibility CRUD](operations/pharmacy-eligibility-crud.md) | [SQL-014](sql/SQL-014.md), [SQL-026](sql/SQL-026.md) | [CL_PHARMACY_ELIGIBILITY_REPORT](database-tables.md#cl_pharmacy_eligibility_report) | Write |
| [Pharmacy report retrieval](operations/pharmacy-report-retrieval.md) | Not catalogued* | [CL_PHARMACY_ELIGIBILITY_REPORT](database-tables.md#cl_pharmacy_eligibility_report) | Read |
| [801 document management](operations/801-document-management.md) | [SQL-003](sql/SQL-003.md), [SQL-011](sql/SQL-011.md), [SQL-023](sql/SQL-023.md) | [CL_801_DOCUMENT](database-tables.md#cl_801_document) | Read / Write (stored procedure) |
| [801 submission CRUD](operations/801-submission-crud.md) | [SQL-004](sql/SQL-004.md), [SQL-012](sql/SQL-012.md), [SQL-024](sql/SQL-024.md), [SQL-028](sql/SQL-028.md) | [CL_801_SUBMISSION](database-tables.md#cl_801_submission) | Read / Write (stored procedure) |
| [801 submission data CRUD](operations/801-submission-data-crud.md) | [SQL-013](sql/SQL-013.md), [SQL-018](sql/SQL-018.md), [SQL-025](sql/SQL-025.md), [SQL-029](sql/SQL-029.md) | [CL_801_SUBMISSION_DATA](database-tables.md#cl_801_submission_data) | Read / Write (stored procedure) |
| [Worker lookup via API](operations/worker-lookup-via-api.md) | None | None | Read (REST call only) |
| [Claim submission via API](operations/claim-submission-via-api.md) | None | None | Write (REST call only) |
| [Claim search via API](operations/claim-search-via-api.md) | None | None | Read (REST call only) |

## Stored procedure operations

Operations implemented in Oracle stored procedures referenced by this library.

| Operation | Description | Source | Link |
| --- | --- | --- | --- |
| Retrieve Online 801 submissions | Returns submission rows by submission ID, claim ID, policy number, or retention-date cleanup mode. | `PK82538_ONLINE_801_CLAIM.submission_select` | [Details](procedures/pk82538_online_801_claim.md#submission_select) |
| Persist Online 801 submission headers | Inserts, updates, and deletes Online 801 submission header rows. | `PK82538_ONLINE_801_CLAIM.submission_insert` | [Details](procedures/pk82538_online_801_claim.md#submission_insert) |
| Persist Online 801 submission detail | Inserts, updates, retrieves, and deletes Online 801 submission detail rows. | `PK82538_ONLINE_801_CLAIM.submission_data_insert` | [Details](procedures/pk82538_online_801_claim.md#submission_data_insert) |
| Persist Online 801 documents | Retrieves and maintains Online 801 document metadata keyed by claim or image sequence number. | `PK82538_ONLINE_801_CLAIM.document_insert` | [Details](procedures/pk82538_online_801_claim.md#document_insert) |

## Failure and edge-case behavior

- Every persisting claim-entry, pharmacy, and Online 801 operation checks the affected row count and adds a DB contention error instead of throwing ([BR-CE-011](business-rules.md#br-ce-011-optimistic-concurrency-update-fails-if-rowsaffected-1)). Detailed per-operation behavior is documented on each operation page.
- Deleting Online 801 documents is not operational: `cls801Document` prepares delete parameters, but its criteria class throws `InvalidSQLProperty` for `DeleteSQL`, so no `document_delete` procedure is wired.*
- `801 submission CRUD` retrieval and cleanup paths (`submission_select`, `submission_claim_select`, `submission_policy_select`, `submission_cleanup_select`, `Incomplete_Submission_select`) call `PK82538_ONLINE_801_CLAIM` procedures that are not individually catalogued as `SQL-*` documents in this run; see the operation page for the traced call sites.*
- The `Claim submission via API` flow unconditionally sets `IsSubmitted = True` on the result object after the local save attempt, regardless of whether the save actually succeeded, which can mask a failed local persist.*
- `Claim submission via API`'s response handling in `clsSubmitClaimByAPI.AfterInsert` dereferences `response(0)` in its own empty-response fallback branch, which throws if the API ever returns a zero-length response array.*
- `Claim search via API` does not inspect the wrapper response's status code or handle a missing/empty `Data` payload before consuming it.*
- Warning-versus-error severity for duplicate-claim detection is caller-dependent: `CheckForMultipleClaimsForWorker` itself only returns a claim number string; historical rule wrappers treated a match as a warning rather than a blocking error.*

## Related documentation

- [Index](index.md)
- [Overview](overview.md)
- [Architecture](architecture.md)
- [Dependencies](dependencies.md)
- [Business rules](business-rules.md)
- [Database tables](database-tables.md)
- [SQL catalog](sql/index.md)
- [Procedures](procedures/index.md)
- [API reference](api/index.md)

> **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.Entry\clsClaimEntry.vb`
- `Business\SAIF.Business.Claim.Entry\clsClaimEntryBusinessRules.vb`
- `Business\SAIF.Business.Claim.Entry\clsPharmacyEligibility.vb`
- `Business\SAIF.Business.Claim.Entry\clsStateClaimEntry.vb`
- `Business\SAIF.Business.Claim.Entry\enums.vb`
- `Business\SAIF.Business.Claim.Entry\Online801\Submission\cls801Document.vb`
- `Business\SAIF.Business.Claim.Entry\Online801\Submission\cls801Submission.vb`
- `Business\SAIF.Business.Claim.Entry\Online801\Submission\cls801SubmissionData.vb`
- `Business\SAIF.Business.Claim.Entry\Online801\Submission\clsFindWorkerAPI.vb`
- `Business\SAIF.Business.Claim.Entry\Online801\Submission\clsSubmitClaimByAPI.vb`
- `Business\SAIF.Business.Claim.Entry\Online801\Submission\clsGwNameSuffix.vb`
- `Business\SAIF.Business.Claim.Entry\Online801\Submission\cls801FindWorkerDTO.vb`
- `Business\SAIF.Business.Claim.Entry\Online801\Submission\cls801SearchCriteriaDTO.vb`
- `Business\SAIF.Business.Claim.Entry\Online801\Submission\ApiNewClaimModels\clsNewClaimModel.vb`
- `Business\SAIF.Business.Claim.Entry\Online801\Submission\ApiNewClaimModels\Claimant.vb`
- `Business\SAIF.Business.Claim.Entry\Online801\Submission\ApiNewClaimModels\EmploymentData.vb`
- `Business\SAIF.Business.Claim.Entry\Online801\Submission\ApiNewClaimModels\Policy.vb`
- `Business\SAIF.Business.Claim.Entry\Online801\Submission\ApiNewClaimModels\PrimaryAddress.vb`
- `Business\SAIF.Business.Claim.Entry\Online801\Search\clsClaimSearchCriteria.vb`
- `Business\SAIF.Business.Claim.Entry\Online801\Search\clsClaimSearchResult.vb`
- `Business\SAIF.Business.Claim.Entry\Online801\Search\CCClaimDataApi\clsClaimSearchApi.vb`
- `Business\SAIF.Business.Claim.Entry\Online801\Search\CCClaimDataApi\CCClaimDataApiClaimSearchCriteria.vb`
- `Business\SAIF.Business.Claim.Entry\Online801\CCClaimDataAPIResponseData.vb`
- `Business\SAIF.Business.Claim.Entry\Online801\ClaimCenterAPIResponseData.vb`
- `Business\SAIF.Business.Claim.Entry\Online801\clsRecordInfo.vb`
- `Business\SAIF.Business.Claim.Entry\Online801\mdlCodeTables.vb`
