---
title: EOB note retrieval
summary: Retrieves the explanation-of-benefits note rows recorded against a medical bill, independent of audit service/adjustment retrieval.
status: draft
owner: SAIF Doc Gen
last_reviewed: 2026-07-30
library: SAIF.Business.Claim.MedicalBill
reference_type: package
operation_id: OP-MB-04
trigger: Reading clsMedicalBill.EOBNotes (lazy)
---

# EOB note retrieval

EOB note retrieval loads the explanation-of-benefits note text recorded for a bill during audit processing. It is a standalone read-only stored-procedure call — it does not depend on, and is not depended on by, audit service or adjustment retrieval — but it shares the same suppression flag and bill-scoping pattern as the other bill child-collection retrievals.

| Field | Value |
| --- | --- |
| **Operation ID** | OP-MB-04 |
| **Trigger** | `clsMedicalBill.EOBNotes` (lazy read, unless `SuppressAuditDetail` is set) |
| **Inputs** | `BillID` |
| **Outputs** | Populated `clsEOBNoteCollection` of `clsEOBNote` items scoped to the bill |
| **Primary components** | `clsEOBNoteCollection.GetEOBNotes`, `clsEOBNoteCollection.BeforeRetrieve` |
| **Entry point** | `Business\SAIF.Business.Claim.MedicalBill\clsEOBNoteCollection.vb` |

## Steps

1. **Lazy trigger from the parent bill.** Reading `clsMedicalBill.EOBNotes` retrieves the collection only on first access and only when `SuppressAuditDetail` is false ([BR-MB-020](../business-rules.md#br-mb-020-audit-and-eob-detail-retrieval-is-suppressed-for-bulk-print-views)); the result is cached on the bill instance for subsequent reads.
2. **Retrieve EOB notes.** `clsEOBNoteCollection.GetEOBNotes(dpi, billID)` calls `PK82396_MEDICAL_BILLS.GetEOBNotes` ([SQL-007](../sql/SQL-007.md), [CBP_EOB_NOTE](../database-tables.md#cbp_eob_note)), which restricts its result set to the requested bill identifier ([BR-PROC-003](../business-rules.md#br-proc-003-eob-note-retrieval-is-always-restricted-to-the-requested-bill-identifier)).
3. **Load each note row.** Each returned row is loaded into a `clsEOBNote` and added to the collection.

## Process flow

The following diagram visualizes this operation's control flow.

```mermaid
flowchart TD
	Start([Bill.EOBNotes read]) --> Suppress{SuppressAuditDetail?}
	Suppress -->|Yes| Skip([Returns Nothing;<br>no retrieval issued])
	Suppress -->|No| Retrieve[GetEOBNotes via<br>PK82396_MEDICAL_BILLS, scoped to BillID]
	Retrieve --> Load[Load each note row<br>into clsEOBNote]
	Load --> Done([Collection cached<br>on parent bill])
```

## Failure and edge-case behavior

- The collection is read-only; there is no persist/save path.
- Retrieval is cached after first load, so subsequent reads within the same bill instance's lifetime do not re-issue the call.
- Bulk-print suppression (`SuppressAuditDetail`) silently skips this retrieval for affected bills rather than raising an error.

## Related documentation

- [Operations and processes](../operations-processes.md)
- [Business rules](../business-rules.md)
- [SQL catalog](../sql/index.md)
- [Database tables](../database-tables.md)

## Sources

- `Business\SAIF.Business.Claim.MedicalBill\clsEOBNoteCollection.vb`
- `Business\SAIF.Business.Claim.MedicalBill\clsEOBNote.vb`
