---
title: Claim award and closure order retrieval
summary: Retrieves claim award/benefit-payment history and claim closure/order records via inline Oracle SQL.
status: draft
owner: SAIF Doc Gen
last_reviewed: 2026-07-30
library: SAIF.Business.View.Claim
reference_type: package
operation_id: OP-VC-10
trigger: Caller reads `clsClaimData.AwardInfo`, or calls `clsClosureOrder.GetClosureOrders` directly
---

# Claim award and closure order retrieval

This operation retrieves two related, SQL-backed per-claim history sub-objects: claim award/benefit-payment detail (`clsAwardInfo`) and claim closure/order header records (`clsClosureOrder`). Both are simple inline-SQL retrievals with no shared rule set beyond claim-scoped filtering, but neither has an existing per-operation home in the previous documentation, so they are documented together as newly-traced claim-detail retrievals.

| Field | Value |
| --- | --- |
| **Operation ID** | OP-VC-10 |
| **Trigger** | Caller reads `clsClaimData.AwardInfo` (lazy-loads `clsAwardInfo`), or calls `clsClosureOrder.GetClosureOrders(claimID)` or single-record retrieval by closure/order ID |
| **Inputs** | Claim ID; optional closure ID and order ID for `clsClosureOrder` single-record retrieval |
| **Outputs** | `clsAwardInfo` (award details, counts by type, active/state/federal award flags); one `clsClosureOrder` or `IEnumerable(Of clsClosureOrder)` (closure/order header, order type, rescission flag) |
| **Primary components** | `clsAwardInfo.Details`, `clsAwardInfo.DetailsByType`, `clsAwardInfo.GetActiveAward`, `clsClosureOrder.GetClosureOrders`, `clsClosureOrder.Load` |
| **Entry point** | `Business\SAIF.Business.View.Claim\clsAwardInfo.vb`, `Business\SAIF.Business.View.Claim\clsClosureOrder.vb` |

## Steps

1. **Award retrieval — query awards and payments.** `clsAwardInfo` queries `CL_AWARD` joined to `CL_BENEFIT_PAYMENT` for the claim to build the award detail list.
2. **Award retrieval — recalculate PPD balances.** For rows whose benefit type is permanent partial disability (PPD), a second query against `cl_state_award_monthly_payee` and `cl_benefit_payee` replaces the balance from step 1 with a payee-level computed balance ([BR-011](../business-rules.md#br-011-ppd-award-balances-are-recalculated-from-state-award-payee-history-rather-than-reused-from-the-award-row)).
3. **Award retrieval — map status.** Each award's status code (`A`/`P`/`S`/`D`) is mapped to an enum value; any other code maps to `Unknown`.
4. **Award retrieval — expose summaries.** `clsAwardInfo` exposes `Details`, `DetailsByType(type)`, `LastAwardByType(type)`, `GetActiveAward()`, `CountByType(type)`, `AwardCount`, `StateCount`, `FederalCount`, and boolean flags `HasActiveAward`/`HasStateAward`/`HasFederalAward`.
5. **Closure order retrieval — query closure/order header.** `clsClosureOrder`'s claim-level query selects from `cl_claim_closure_order` joined to `cl_order_type_code`; a single-record variant adds closure ID and order ID filters.
6. **Closure order retrieval — mark loaded.** `Load` sets the object as valid (`IsValid = True`) once populated.
7. **Closure order retrieval — lazily resolve order type description.** The `OrderType` property lazy-loads the full order-type reference row via `clsOrderTypeCode.GetOrderTypeCode(dataPortalInfo, OrderTypeCode)` on first access.
8. **Return results.** `clsAwardInfo` is returned as `clsClaimData.AwardInfo`; `clsClosureOrder.GetClosureOrders` returns a single object or an enumerable of closure/order records for the claim.

## Process flow

The following diagram visualizes this operation's control flow.

```mermaid
flowchart TD
	Start([Caller requests award or closure order data]) --> Which{Award info or closure order?}
	Which -->|Award| QueryAward[Query CL_AWARD joined to<br>CL_BENEFIT_PAYMENT]
	QueryAward --> PPD{Benefit type is PPD?}
	PPD -->|Yes| Recalc[Recalculate balance from<br>state award payee tables]
	PPD -->|No| KeepBalance[Keep original balance]
	Recalc --> MapStatus[Map status code to enum]
	KeepBalance --> MapStatus
	MapStatus --> DoneAward([Return clsAwardInfo])
	Which -->|Closure order| QueryClosure[Query cl_claim_closure_order<br>joined to cl_order_type_code]
	QueryClosure --> MarkValid[Mark object valid]
	MarkValid --> DoneClosure([Return clsClosureOrder / enumerable])
```

## Failure and edge-case behavior

- An unmapped award status code defaults to `Unknown` rather than raising an error, so unexpected status values are silently absorbed.
- PPD balance recalculation issues one additional query per PPD award row, so claims with many PPD awards incur proportionally more database round-trips.*
- `OrderType` description resolution is lazy and depends on a successful separate lookup against the order-type reference table; if that lookup fails, the closure/order object still returns its own code-level fields.*

## Related documentation

- [Operations and processes](../operations-processes.md)
- [Business rules](../business-rules.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.View.Claim\clsAwardInfo.vb`
- `Business\SAIF.Business.View.Claim\clsClosureOrder.vb`
- `Business\SAIF.Business.View.Claim\clsClaimData.vb`
