Skip to content

MCO determination

clsMCOManager.DetermineMCO resolves, for every auditable service line, whether the claim's managed-care-organization (MCO) enrollment applies, which billing-provider and servicing-provider MCO plans are in effect, and whether the service is eligible for MCO administrative-fee withhold. It reuses resolved state across consecutive services sharing the same service date and provider to avoid redundant lookups.

Field Value
Operation ID OP-AA-04
Trigger BillAuditEngine.AuditBill calls clsMCOManager.DetermineMCO(Bill) after service edits pass, unless Bill.BillType = WorkerReimbursement
Inputs clsBillAudit with edited, auditable services (Bill.ServiceData.ForReAudit)
Outputs Per-service McoEligibilityStatusCode, McoID, McoPlanID, IsMCOWithhold state on the audited service; cached clsClaimMCO on the bill
Primary components clsMCOManager.DetermineMCO, clsMCOManager.DetermineClaimMCO, clsMCOManager.DetermineBillingProviderMCO, clsMCOManager.DetermineServicingProviderMCO, clsMCOManager.GetClaimMCO
Entry point Business\SAIF.Business.Claim.Bill.AutomatedAudit\AuditUtilities\clsMCOManager.vb

Steps

  1. Start and cache claim MCO. Start the "Determine MCO" trail group, set the current Bill, and resolve Bill.MCOInformation via GetClaimMCO(Bill.Claim), which caches a clsClaimMCO instance per ClaimID for the run.*
  2. Iterate auditable services. For each service in Bill.ServiceData.ForReAudit:
  3. Reuse when possible. If the previous service in the loop shared the same ServiceDate, reuse its already-resolved claim MCO and billing-provider MCO state instead of re-querying. If it also shared the same servicing provider location, reuse the servicing-provider MCO/withhold state as well.
  4. Otherwise, resolve claim MCO (DetermineClaimMCO). Call Bill.MCOInformation.GetMCOEligibility(Service.ServiceDate).
    • If no eligibility record is found: log that no enrollment exists and null the audited service's McoEligibilityStatusCode, MCOID, and McoPlanID.
    • Otherwise: log the resolved status/effective date/plan/location and set McoEligibilityStatusCode, McoID, McoPlanID on the audited service.
  5. Resolve billing-provider MCO (DetermineBillingProviderMCO).

    • Seed IsMandatoryMCO from Bill.BillingProvider.ProviderType.IsMandatoryMco, and IsMCOProviderAdminFee = False.
    • Retrieve the billing provider's MCO plan list effective on the service date.

    Origin: This plan list is implemented by Retrieve MCO provider enrollments in SAIF.BOF.Business.View.Provider. - By claim MCO status: "Y" prefers the same plan ID, falling back to the first plan with ApplyDiscountCode in A/P; "P" prefers the same plan ID with ApplyDiscountCode in A/P, falling back to any plan with ApplyDiscountCode = A; any other status uses any plan with ApplyDiscountCode = A. - If a plan is selected, store it as BillingProviderMCOPlan and log its ID/description. - Resolve servicing-provider MCO and withhold (DetermineServicingProviderMCO). - Default IsMandatoryMCO from the billing provider type; retrieve the servicing provider's MCO plan list effective on the service date.

    Origin: This plan list is also implemented by Retrieve MCO provider enrollments in SAIF.BOF.Business.View.Provider. - By claim MCO status: "Y" requires the same plan ID as the claim's eligibility record; "P" requires the same plan ID and ApplyAdminFeeCode = "P"; any other status disables withhold entirely for this service. - If a qualifying plan is found: set ServicingProviderMCOPlan, IsMCOWithhold = True, MCOWithholdPlan, MCOWithHoldAdminFeeRate, and IsMandatoryMCO from the servicing provider's type; log the selected plan and withhold plan. - If a servicing-provider plan was found, set IsMCOProviderAdminFee = ServicingProviderMCOPlan.IsAdminFee. - Reconcile withhold eligibility on the audited service. If the service does not qualify for withhold: null McoPlanID, zero MCOWithHoldAdminFeeRate, and clear IsMCOProviderAdminFee on the audited service. Otherwise, if a servicing-provider plan was resolved, copy its PlanID into the audited service's McoPlanID. 3. Stop groups. Stop the per-service and overall "Determine MCO" trail groups.

Process flow

flowchart TD
    Start([DetermineMCO invoked]) --> CacheClaim[Cache Bill.MCOInformation<br>via GetClaimMCO]
    CacheClaim --> Loop[For each service in ForReAudit]
    Loop --> Reuse{Same ServiceDate<br>as previous service?}
    Reuse -->|Yes| ReuseState[Reuse claim/billing-provider<br>MCO state]
    Reuse -->|No| ClaimMCO[DetermineClaimMCO:<br>GetMCOEligibility]
    ClaimMCO --> BillingMCO[DetermineBillingProviderMCO:<br>select plan by claim MCO status]
    ReuseState --> ServicingCheck{Same servicing<br>provider too?}
    BillingMCO --> ServicingMCO[DetermineServicingProviderMCO:<br>resolve withhold plan]
    ServicingCheck -->|Yes| ReuseServicing[Reuse servicing-provider<br>MCO/withhold state]
    ServicingCheck -->|No| ServicingMCO
    ServicingMCO --> Qualify{Service qualifies<br>for withhold?}
    ReuseServicing --> Qualify
    Qualify -->|No| ClearWithhold[Null McoPlanID;<br>zero admin fee rate]
    Qualify -->|Yes| CopyPlan[Copy ServicingProviderMCOPlan.PlanID<br>to McoPlanID]
    ClearWithhold --> Next{More services?}
    CopyPlan --> Next
    Next -->|Yes| Loop
    Next -->|No| Done([Stop trail groups])

Failure and edge-case behavior

  • Skipped entirely for WorkerReimbursement bills — those bills never receive MCO plan or withhold data from this operation.
  • The reuse optimization in step 2 assumes services are processed in a stable order such that consecutive same-date (and same-provider) services share MCO context; if that ordering assumption does not hold, stale state could be reused.*
  • A claim MCO status other than "Y" or "P" disables servicing-provider withhold entirely, even if a matching plan exists, because the Else branch of DetermineServicingProviderMCO performs no lookup.
  • clsClaimMCO is constructed directly (New clsClaimMCO(DPI, ClaimID)) rather than through a locally-traced factory; its owning library could not be confirmed from this library's source alone.**

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\AuditUtilities\clsMCOManager.vb