Skip to content

Chapter 2: Packaging & Multiple Procedure Discounting

Welcome to the second chapter of the Bedrock Billing I/OCE Deep Dive Series. In this guide, we open the hood on two of the most critical mechanisms within the Outpatient Prospective Payment System (OPPS): Packaging and Multiple Procedure Discounting.

Understanding these concepts is vital for ensuring correct OPPS claim forecasting and revenue cycle integrity. We will explore how the I/OCE applies logic to determine if a service should be packaged (paid at a composite rate) or paid separately, and how it calculates the exact payment discounting fraction when multiple surgical procedures are performed.


1. Introduction to OPPS Packaging

The fundamental principle of the Outpatient Prospective Payment System (OPPS) is that Medicare pays a single comprehensive amount for a primary service. This means that many ancillary, dependent, and adjunctive services are "packaged" into the payment of the primary procedure, rather than being paid out separately on a fee-schedule basis.

When a service is unconditionally packaged, the I/OCE assigns it a Status Indicator (SI) of N.

[!NOTE] SI = N (Items and Services Packaged into APC Rates) If a line item is assigned an N, its payment is included in the Ambulatory Payment Classification (APC) payment for other services on the claim. If it is the only service on the claim, it receives $0 payment.

2. Conditional Packaging (The Q-Codes)

While some services are unconditionally packaged (like basic lab draws or minor supplies), other services are Conditionally Packaged. These are represented by Status Indicators Q1 and Q2 (and sometimes Q3 for composite APCs).

Conditionally packaged codes have separate APC payment rates unless they are billed alongside certain other payable services.

Logic Flow for Q1 and Q2 Procedures

  • Q1 Procedures (STV-Packaged): These are packaged (SI changed to N) if they appear on the same claim with any payable procedure code with an SI of S, T, or V.
  • Q2 Procedures (T-Packaged): These are packaged (SI changed to N) only if they appear on the same claim with a payable code with an SI of T or J1 (Comprehensive APCs).

If the condition to package them is not met, the I/OCE re-assigns them to their standard payable SI and APC.

graph TD
    A[Line Item has SI = Q1 or Q2] --> B{Are there other payable services?}
    B -->|Yes, SI = S, T, V| C{Is it Q1?}
    C -->|Yes| D[Package: Change SI to N]
    C -->|No, it is Q2| E{Are there SI = T or J1 services?}
    E -->|Yes| F[Package: Change SI to N]
    E -->|No| G[Pay Separately: Standard SI and APC]
    B -->|No| G

[!TIP] A Code Example: Imagine a claim has an EKG (SI = Q1) and an ER Visit (SI = V). Because a V code is present, the EKG is packaged. If the claim only had the EKG, it would pay out at its standard APC rate.


3. Multiple Procedure Discounting (Type "T" Procedures)

Multiple procedure discounting applies heavily to surgical services, which are typically assigned a Status Indicator of T. The rule states that when multiple Type "T" procedures are performed on the same patient on the same day, Medicare will pay 100% of the highest paying "T" procedure, and apply a 50% discount to all other "T" procedures.

If you are a developer integrating with pricing engines like the Bedrock Billing API, understanding how these discounting fractions are calculated is essential.

Computation of Discounting Fraction

The I/OCE uses a set of 9 specific discounting formulas evaluated at runtime. * D = Discounting Fraction (Currently 0.5) * U = Number of Units * T = Terminated Procedure Discount (Currently 0.5)

To calculate the exact discount dynamically, the I/OCE first evaluates Modifiers (50, 52, 73) and then compares the APC payment rates to find the "Highest" cost procedure.

Procedure Status Mod 52/73? Mod 50? Highest Paying "T" procedure? Assigned Formula Number
Non-Bilateral No No Yes Formula 2: (1.0 + D(U-1))/U
Non-Bilateral No No No Formula 5: D (0.5 multiplier)
Non-Bilateral Yes No Yes Formula 3: T/U

(Note: For a standard single-unit procedure U=1, Formula 2 outputs exactly 1.0, meaning 100% payment. Formula 5 outputs 0.5, meaning 50% payment).

Bedrock Billing API Example

When polling the Bedrock Billing myelin/process endpoint with the IOCE module requested, you will notice the formula applicable to the line item is provided in the discounting_formula field.

"line_item_list": [
            {
                "service_date": "2026-01-01T00:00:00",
                "revenue_code": "9999",
                "hcpcs": "27279",
                "hcpcs_description": "Arthrd si jt plmt tartclr dv",
                "units_input": 1,
                "charge": 435.0,
                "action_flag_input": "0",
                "action_flag_output": "0",
                "rejection_denial_flag": "0",
                "payment_method_flag": "0",
                "hcpcs_apc": "05116",
                "hcpcs_apc_description": "Level 6 Musculoskeletal Procedures",
                "payment_apc": "05116",
                "payment_apc_description": "Level 6 Musculoskeletal Procedures",
                "units_output": 1,
                "status_indicator": "J1",
                "status_indicator_description": "Hospital Part B services paid through a comprehensive APC",
                "payment_indicator": "1",
                "packaging_flag": {
                    "flag": "0",
                    "description": "Not packaged"
                },
                "payment_adjustment_flag01": {
                    "flag": "0",
                    "description": "No payment adjustment"
                },
                "payment_adjustment_flag02": {
                    "flag": "0",
                    "description": "No payment adjustment"
                },
                "discounting_formula": 1,
                "composite_adjustment_flag": "00",
                "hcpcs_modifier_input_list": [],
                "hcpcs_modifier_output_list": [],
                "hcpcs_edit_list": [
                    {
                        "edit": "092",
                        "description": "A device-intensive procedure is reported without a device code."
                    }
                ],
                "revenue_edit_list": [
                    {
                        "edit": "041",
                        "description": "The revenue code is not in the list of valid revenue codes or the revenue code is reported prior to/exceeding its NUBC effective date."
                    }
                ],
                "service_date_edit_list": []
            },
            {
                "service_date": "2026-01-01T00:00:00",
                "revenue_code": "0360",
                "hcpcs": "29305",
                "hcpcs_description": "Appl hip spica cast 1 leg",
                "units_input": 1,
                "charge": 191.78,
                "action_flag_input": "0",
                "action_flag_output": "0",
                "rejection_denial_flag": "0",
                "payment_method_flag": "0",
                "hcpcs_apc": "05102",
                "hcpcs_apc_description": "Level 2 Strapping and Cast Application",
                "payment_apc": "00000",
                "payment_apc_description": "",
                "units_output": 1,
                "status_indicator": "N",
                "status_indicator_description": "Items and Services packaged into APC rates",
                "payment_indicator": "9",
                "packaging_flag": {
                    "flag": "1",
                    "description": "Packaged service (status indicator N or no HCPCS code and certain revenue codes)"
                },
                "payment_adjustment_flag01": {
                    "flag": "0",
                    "description": "No payment adjustment"
                },
                "payment_adjustment_flag02": {
                    "flag": "0",
                    "description": "No payment adjustment"
                },
                "discounting_formula": 1,
                "composite_adjustment_flag": "00",
                "hcpcs_modifier_input_list": [
                    {
                        "hcpcs_modifier": "22",
                        "edit_list": []
                    },
                    {
                        "hcpcs_modifier": "ZZ",
                        "edit_list": [
                            {
                                "edit": "022",
                                "description": "The modifier is not in the list of valid modifier entries and the revenue code is not 540."
                            }
                        ]
                    }
                ],
                "hcpcs_modifier_output_list": [],
                "hcpcs_edit_list": [],
                "revenue_edit_list": [],
                "service_date_edit_list": []
            }
        ]

[!WARNING] Remember, the "Highest" Type "T" procedure is not determined by the submitted billed charges, but by the assigned OPPS APC Payment Rate for the procedure after any terminated discounts have been theoretically applied.


4. Terminated Procedures & Bilateral Adjustments

The I/OCE discounting formulas must also seamlessly blend rules for terminated procedures (e.g. the surgery was stopped midway) via Modifier 52 and Modifier 73, and bilateral procedures via Modifier 50.

  • Terminated Procedures: A terminated Type "T" procedure is heavily discounted. If the procedure is both terminated and not the highest-paying procedure, it goes through a multi-tiered discount.
  • Bilateral Discounting: Conditional bilateral codes submitted with Modifier 50 invoke specific discounting formula overlaps. The Type "T" discounting rules often take precedence over the generic bilateral discounting specified in the standard physician fee schedule.

By programmatically capturing the I/OCE metadata directly via your clearinghouse or billing engine (like utilizing Bedrock's API layer), you empower your application to give coders real-time visibility into these heavy discounting sweeps before the claim ever hits the Medicare Administrative Contractor (MAC).