﻿---
title: SAIF.Business.Claim.Bill.AutomatedAudit architecture
summary: SAIF.Business.Claim.Bill.AutomatedAudit architecture.
status: draft
owner: Technical Writer
last_reviewed: 2026-07-28
library: SAIF.Business.Claim.Bill.AutomatedAudit
reference_type: package
---

# SAIF.Business.Claim.Bill.AutomatedAudit architecture

SAIF.Business.Claim.Bill.AutomatedAudit is the audit-engine extension for the claim bill domain, layering automated medical-bill editing, calculation, comparison, MCO processing, pharmacy enrollment, and bill-history retrieval on top of the core bill library.

## Responsibilities
- Orchestrate end-to-end automated bill auditing through `BillAuditEngine`.
- Extend `clsBill` with audit-specific state in `clsBillAudit`.
- Apply bill-level and service-level automated edits before calculation.
- Perform audit calculations, comparison logic, MCO handling, and provider qualification checks.
- Retrieve historical bill and pharmacy-enrollment context required by audit decisions.

## Component boundaries
- `BillAuditEngine` is the workflow coordinator for retrieve, validate, edit, audit, and save steps.
- `clsBillAudit` extends the core bill object from the parent bill library instead of redefining base bill persistence.
- Utility classes such as `clsBillEditor`, `clsServiceEditor`, `clsAuditCalculator`, `clsAuditCompare`, `clsMCOManager`, and `clsPharmacyEnrollment` contain audit-specialized logic.
- Historical bill and pharmacy eligibility queries remain in local audit utilities rather than the parent bill library.
- Security and configuration concerns are inherited or external; this library contains no local authorization layer.

## Interaction model
Audit callers invoke `BillAuditEngine.AuditBill`, which retrieves a bill aggregate through the parent bill infrastructure, validates audit eligibility, applies bill and service edits, runs calculation and comparison steps, consults historical bill and pharmacy-enrollment data when needed, and then saves results through the inherited bill model.

## Inherited framework context (from Legends CLI)
- `IDataPortalInfo` provides the shared portal abstraction used to execute inherited bill persistence and utility queries against Oracle.*
- `clsBusinessBase` provides the edit lifecycle and shared rules-manager behavior inherited by audit-aware business objects layered on top of the parent bill model.*

## Architecture diagram
The following diagram shows the high-level automated-audit component architecture.

```mermaid
flowchart TD
    Caller["Audit caller"] --> Engine["BillAuditEngine"]
    Engine --> BillAudit["clsBillAudit / clsBill"]
    Engine --> BillEditor["clsBillEditor"]
    Engine --> ServiceEditor["clsServiceEditor"]
    Engine --> Calculator["clsAuditCalculator"]
    Engine --> Compare["clsAuditCompare"]
    Engine --> MCO["clsMCOManager"]
    Engine --> Pharmacy["clsPharmacyEnrollment"]
    Engine --> History["clsClaimBillHistory"]
    BillAudit --> ParentBill["SAIF.Business.Claim.Bill"]
    History --> Oracle["Oracle bill / audit tables"]
    Pharmacy --> Oracle
    ParentBill --> Oracle
```

## Sequence diagram
The following diagram shows the primary automated bill-audit sequence.

```mermaid
sequenceDiagram
    participant Caller
    participant Engine as BillAuditEngine
    participant Bill as clsBillAudit
    participant Utils as Audit utilities
    participant Oracle
    Caller->>Engine: AuditBill(billId)
    Engine->>Bill: Retrieve current bill and prior audit
    Bill->>Oracle: Load inherited bill data
    Oracle-->>Bill: Bill aggregate
    Engine->>Utils: Apply bill edits and service edits
    Engine->>Utils: Calculate and compare audit results
    Utils->>Oracle: Read history / pharmacy eligibility as needed
    Oracle-->>Utils: Supporting audit data
    Engine->>Bill: Save audit outcome
    Bill-->>Caller: AuditResults
```

## Design constraints
- The library depends on parent bill-library schema, persistence rules, and object-model semantics.
- Some supporting SQL is implemented in utility classes instead of BOF criteria objects, which increases traceability complexity.
- Audit behavior must support both read-only and forced complete re-audit modes.
- Historical bill and pharmacy-eligibility data quality directly affects automated-audit outcomes.

## Related documentation
- [Index](index.md)
- [Overview](overview.md)
- [Dependencies](dependencies.md)
- [Operations and processes](operations-processes.md)
- [Business rules](business-rules.md)
- [Database tables](database-tables.md)
- [SQL catalog](sql/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. Statements
> marked with ** could not be confirmed; treat as unknown until verified.

## Sources
- `Business\SAIF.Business.Claim.Bill.AutomatedAudit\SAIF.BOF.Business.Claim.Bill.AutomatedAudit.vbproj`
- `Business\SAIF.Business.Claim.Bill.AutomatedAudit\SAIF.BOF.Business.Claim.Bill.AutomatedAudit.nuspec`
- `Business\SAIF.Business.Claim.Bill.AutomatedAudit\packages.config`
- `Business\SAIF.Business.Claim.Bill.AutomatedAudit\BillAuditEngine.vb`
- `Business\SAIF.Business.Claim.Bill.AutomatedAudit\clsBillAudit.vb`
- `Business\SAIF.Business.Claim.Bill.AutomatedAudit\clsBillAuditService.vb`
- `Business\SAIF.Business.Claim.Bill.AutomatedAudit\AuditUtilities\clsBillAuditor.vb`
- `Business\SAIF.Business.Claim.Bill.AutomatedAudit\AuditUtilities\clsBillEditor.vb`
- `Business\SAIF.Business.Claim.Bill.AutomatedAudit\AuditUtilities\clsServiceEditor.vb`
- `Business\SAIF.Business.Claim.Bill.AutomatedAudit\AuditUtilities\clsAuditCalculator.vb`
- `Business\SAIF.Business.Claim.Bill.AutomatedAudit\AuditUtilities\clsMCOManager.vb`
- `Business\SAIF.Business.Claim.Bill.AutomatedAudit\AuditUtilities\clsPharmacyEnrollment.vb`