Prism Power Calculation — Feature Guide

Prism Power Calculation — Feature Guide

Module: got2_lens_prism Works together with: got2_lens_slaboff (Vertical Imbalance / Slab-Off Advisor) Menu: Inventory → Configuration → Lens Power Pricing → Prism Power Calculation

This guide explains, in plain language, what this feature does, how every setting on the configuration screen changes what a patient gets charged, and exactly what happens on a Sale Order the moment someone clicks Update Prices. It is written for opticians, billing staff, and managers — no programming knowledge required. Technical readers will find exact file/line references in the companion engineering notes; this document deliberately leaves those out in favor of plain explanations and diagrams.


Table of Contents

  1. The problem this solves
  2. The big picture
  3. Three ideas you need before anything else makes sense
  4. Screen 1 — The Rule: every setting explained
  5. Screen 2 — The V-Code List
  6. Screen 3 — On the Sales Order (preview)
  7. The Matrix, in detail
  8. What actually happens when you click "Update Prices"
  9. The Slab-Off Advisor partnership
  10. Worked example, start to finish
  11. Troubleshooting — "why does this line look wrong?"
  12. Glossary
  13. A note on the sibling "Add Power" feature

1. The problem this solves

Prism is a correction added to a lens to help the eyes work together — it is written on a prescription as an amount (in prism dioptres, the symbol Δ) and a base direction (which way the thick edge of the correction points: In, Out, Up, or Down).

Billing prism is not like billing sphere or cylinder power, for two reasons:

  1. The amount does not decide the billing code — the way the lens is made does. A lens with prism ground straight into its surface bills one code (V2715). The same amount of prism achieved by grinding two lens halves at different angles and joining them ("slab-off") bills a completely different code (V2710). A stick-on plastic prism membrane bills a third code (V2718). None of those three codes says how much prism it covers — the description of V2715 is simply "Prism, per lens." So a price list built as "if the amount is X, charge Y" can never pick the right code, because the amount was never what decided the code.

  2. Horizontal and vertical prism combine into one number, not two. If an Rx has 2.00Δ pointing outward and 2.00Δ pointing upward, that is one diagonal correction of about 2.83Δ — not two separate 2.00Δ corrections added together. Billing them as if they were separate would overcharge the patient by more than a third.

This feature replaces an older, simpler price list that got both of these wrong — it summed horizontal and vertical prism instead of combining them properly, and it only ever knew how to bill one code (V2715), so slab-off and Fresnel press-on prism could never be billed correctly, and their price could end up going to the patient as an unexplained $0 that nobody was actually on the hook for.


2. The big picture

flowchart TB subgraph Config["Configuration — set up once, reviewed occasionally"] Rule["Prism Power Calculation<br/>the rule and its price matrix"] Advisor["Vertical Imbalance / Slab-Off Advisor<br/>a separate, related screen"] end subgraph Order["On a Sale Order — happens for every patient"] Rx["Optician enters prism on the Rx<br/>(amount + direction, per eye)"] Click["Optician clicks 'Update Prices'"] Lines["Prism charge line(s) appear<br/>on the order, correctly priced"] end Rule -- "defines the price for every<br/>amount + method combination" --> Click Advisor -- "flags when slab-off is<br/>medically indicated" --> Rx Rx --> Click --> Lines Advisor -. "if accepted, its placeholder<br/>line gets priced by the Rule" .-> Lines style Rule fill:#eef4fb,stroke:#14548f style Advisor fill:#fff8e6,stroke:#7a5a00 style Lines fill:#f4faf6,stroke:#12703c

There are two screens you configure, and one thing opticians do on every order:

  • Prism Power Calculation (this module) — the price matrix. You set this up once per pricing scheme and rarely touch it again.
  • Vertical Imbalance / Slab-Off Advisor (the partner module) — decides when slab-off is medically appropriate. It never sets a price itself; it hands its decision to the Prism rule, which is the only place money is calculated.
  • On the order itself, nothing manual is required beyond entering the prescription and clicking Update Prices — the correct line(s), at the correct price, appear automatically.

3. Three ideas you need before anything else makes sense

3.1 "The amount picks the price step. The method picks the code."

Think of the price matrix as a table with rows and columns:

  • Each row is a range of prism amounts (e.g. "1.12Δ to 2.00Δ"). This is purely a pricing decision you make — HCPCS billing codes don't define these ranges anywhere.
  • Each column is a production method — how the lab actually put the prism in the lens. This is what the billing code cares about.
Ground-in (V2715) Slab-off (V2710) Fresnel press-on (V2718)
0.25Δ – 1.00Δ $18.00 not offered $30.00
1.12Δ – 2.00Δ $18.00 $55.00 $30.00
2.12Δ – 3.00Δ $24.00 $55.00 $30.00
3.12Δ – 4.00Δ $30.00 $62.00 $30.00
4.12Δ – 6.00Δ $42.00 $68.00 $30.00
over 6.00Δ not offered not offered $30.00

This is the schedule the system ships with. You can edit every number, add rows, add columns, or change which code a column bills — see Screen 1.

3.2 A blank cell is not a $0 cell

Look at the table above again: Slab-off has no price for 0.25Δ–1.00Δ, and Ground-in has no price above 6.00Δ. Those cells are intentionally empty — they are not zero. Nobody bicentric-grinds a quarter-dioptre of vertical imbalance, and no lab can grind 7Δ of prism straight into a surface without the lens edge becoming impractically thick. If a patient's numbers land on one of those empty cells, the system does not silently charge $0 — it charges nothing and tells you why (see Troubleshooting).

3.3 Horizontal + vertical = one diagonal number, not a sum

flowchart LR H["2.00Δ Base Out<br/>(horizontal)"] --> Combine{"Combined<br/>mathematically"} V["2.00Δ Base Up<br/>(vertical)"] --> Combine Combine --> R["Resultant: 2.83Δ<br/>at a 45° angle"] R --> Round["Rounded to the<br/>nearest quarter: 2.75Δ"] Round --> Band["Matches the<br/>2.12Δ–3.00Δ row"] style Combine fill:#fff2cc,stroke:#e6a700 style Round fill:#eef4fb,stroke:#14548f style Band fill:#f4faf6,stroke:#12703c

2.00Δ Out plus 2.00Δ Up is not 4.00Δ. It is one diagonal correction of 2.83Δ, exactly the way a 3-4-5 triangle's long side is 5, not 7. The system always does this combination correctly (unless you deliberately turn it off — see the Prism measured as setting), then rounds the result to the nearest quarter-dioptre before looking it up in the price table, because prescriptions are always written in quarters.


4. Screen 1 — The Rule: every setting explained

Open Inventory → Configuration → Lens Power Pricing → Prism Power Calculation and open (or create) a rule. The form is in three parts: header settings, matching-behavior settings, and the matrix itself (on its own tab).

4.1 Header — what this rule is and when it runs

Setting What it means Effect on the Sale Order
Status (Draft / Active / Archived / Reference) Only an Active rule ever prices anything. Draft is for building/testing a schedule before it goes live. Reference is a permanent read-only copy you keep for history. If no rule is Active for an order, no prism pricing happens at all through this system — see §11.
Sequence / Priority If more than one Active rule could apply to the same order, this number (lower = higher priority) plus On multiple matches decide which one wins. Determines which schedule of prices applies when more than one rule is possible.
Effective From / To An optional date window during which this rule applies. Leave both blank for "always." This is checked against the date the order was placed, not today's date. An order placed a day before "Effective From" will never be priced by this rule — not even after you widen the date range, unless something on the order itself is re-touched afterward (see §11).
Company Which company this schedule belongs to, in a multi-company setup. Only orders in the matching company use this rule.
Price List Optional link to a specific sales price list. Informational at present; does not currently filter which orders match.
Rule Type Prism Range Matrix (the full amount × method grid — the normal choice), Prism amount only, or Flat charge per lens. Matrix is what everything in this guide describes. The other two are simpler alternatives for a site that doesn't need per-method pricing.
Default Charge Method Separate Line Item Charge or Add to Base Lens Price. This is just the starting value for new rows you add to the matrix — each row can be changed individually afterward. See Post As, §7.3, for what this actually changes on the order.
Charge Product A fallback product to bill against if a particular billing code has no matching product yet in your catalog. Prevents a pricing failure just because a product record hasn't been created — the system can create one on the fly, but this is the safety net.

4.2 Matching behavior — how an Rx becomes a price

This is the part of the form that actually decides how the math works, not just what the prices are.

Setting Options Plain-English effect
Prism measured as Resultant (default) / Horizontal and vertical separately / Total across both eyes Resultant is the correct optical combination described in §3.3 — use this unless you have a specific reason not to. Separately bills the horizontal and vertical legs as two independent charges — this will overcharge compared to Resultant, and exists only because some carriers reimburse that way. Total across both eyes adds the two eyes together and bills once, for a single combined job — rare, but some labs price whole-job Fresnel jobs this way.
Rounding Nearest 0.25Δ (default) / Use as entered Real-world math on prism amounts rarely lands on an exact quarter (2.00 + 2.00 combines to 2.828...). Rounding to the nearest quarter matches how prescriptions are actually written and keeps the price bands meaningful. Turning rounding off will very rarely land exactly on a band edge and often produces "outside every band" results — not recommended.
Rx states Prism per lens, as written (default) / Total prism, split evenly between eyes If a lab habitually writes prism as "4Δ base out, split" meaning 2Δ per eye, set this to split evenly so the system doesn't accidentally bill the full 4Δ against one eye.
Base direction Recorded on the line, does not affect price (default) / Priced separately Today, In/Out/Up/Down are recorded for the lab's benefit but never change the price. The alternate option is reserved for a future scheme that prices differently by direction — it has no effect in the current schedule.
Evaluate Per lens — charge each eye that matches (default) / Per job — charge once, worst eye Per lens is correct for essentially every real billing scenario, because every code here ("V2715 Prism, per lens") is explicitly a per-lens code. Per job exists for the rare workflow that only wants a single combined charge for the whole pair.
On multiple matches First match by sequence wins (default) / Highest price wins Only relevant if more than one Active rule could apply to the same order — decides the tie-break.

4.3 Applies To — narrowing which orders use this rule

Three optional filters, all empty by default (meaning "every order"):

  • Lens Type Categories — restrict to specific lens designs (Single Vision, Progressive, Bifocal, etc.). Leave empty; prism is billed the same regardless of lens design, so narrowing this is rarely useful.
  • Lens Material / Index — restrict to specific materials. Leave empty unless a specific high-index material genuinely needs a different price schedule (note that very thin, high-index blanks can physically limit how much prism can be ground in — this setting exists for exactly that kind of exception).
  • Lab / Supplier — restrict to orders going to a specific lab. Useful if different labs quote different slab-off/Fresnel prices.

Whatever you fill in here is checked against the specific lenses selected on the order — if none match, this rule is skipped for that order and, if no other Active rule applies, prism pricing doesn't happen at all.


5. Screen 2 — The V-Code List

A flat, read-only list view of the exact same matrix, one row per priced cell: Code · Method · Band · Descriptor · Price · Post as. This exists purely so you (or an auditor) can see every price at a glance without reading the grid — nothing here is editable; edit the matrix on Screen 1 instead.


6. Screen 3 — On the Sales Order (preview)

A live preview showing exactly what the built-in tester's numbers (on Screen

  1. would produce on a real order: the base lens line, followed by one line per eye for whatever prism was priced, with the running order total. Use this to sanity-check a schedule change before it goes live — type a test prescription into the tester on Screen 1 and watch this preview update.

7. The Matrix, in detail

7.1 Reading and editing the grid

flowchart TB subgraph Grid["The Matrix (Screen 1, Matrix tab)"] direction TB Col["Columns = Production Methods<br/>(Ground-in · Slab-off · Fresnel)"] Row["Rows = Prism Amount Bands<br/>(e.g. 2.12Δ – 3.00Δ)"] Cell["Where a row meets a column:<br/>a billing code + a price<br/>— or nothing at all"] end Col --> Cell Row --> Cell
  • Add Prism Band adds a new row (amount range).
  • Add Method adds a new column (production method).
  • Click into any cell's code or price to edit it directly.
  • A hatched, greyed-out cell means "not offered" — click add inside it if you want to start pricing that combination.
  • The small ✕ on a priced cell removes it — turning it back into "not offered," not into "free."
  • Reset to Prism Schedule restores the original six-band, three-method schedule this system ships with, discarding any edits.
  • Clear Prices sets every existing cell's price to 0.00∗∗without∗∗removingthecells—usefulifyouwanttokeeptheshapeoftheschedulebutre−priceeverythingfromscratch.Thisisdifferentfromdeletingcells:a0.00 **without** removing the cells — useful if you want to keep the shape of the schedule but re-price everything from scratch. This is different from deleting cells: a0.00∗∗without∗∗removingthecells—usefulifyouwanttokeeptheshapeoftheschedulebutre−priceeverythingfromscratch.Thisisdifferentfromdeletingcells:a0 cell still means "offered, but currently free," while a deleted cell means "not offered at all."
  • Post As, set per row: Line adds its own separate charge line on the order (the normal choice); Base instead rolls the amount straight into the price of the lens line itself, with no separate prism line appearing. Use Base if your practice prefers prism to be invisible inside the lens price rather than itemized.

7.2 What happens when a prescription is matched against the grid

flowchart TD Start(["Prism amount for one eye,<br/>already combined and rounded"]) --> Method{"Which production<br/>method applies?"} Method --> FindBand{"Does any row's range<br/>contain this amount?"} FindBand -- "No row covers it" --> Unmatched["Result: UNMATCHED<br/>Charged: $0.00<br/>(the amount is outside<br/>every band in the schedule)"] FindBand -- "Yes" --> FindCell{"Does that row have a<br/>priced cell for this method?"} FindCell -- "No — cell is empty" --> Gap["Result: GAP<br/>Charged: $0.00<br/>(this method is not offered<br/>at this amount — a real<br/>limit, not an oversight)"] FindCell -- "Yes" --> Ok["Result: PRICED<br/>Charged: the cell's price,<br/>billed under the cell's code"] style Unmatched fill:#fff2cc,stroke:#e6a700 style Gap fill:#fff2cc,stroke:#e6a700 style Ok fill:#f4faf6,stroke:#12703c

Important: a Gap or an Unmatched result never "rounds up" to the next band that does have a price. If slab-off isn't offered below 1.12Δ, a patient at 0.50Δ genuinely gets no slab-off charge — the system will never invent one from a neighboring row.


8. What actually happens when you click "Update Prices"

This is the part most worth understanding if you're ever wondering "why does this number look different than I expected."

8.1 The order of operations

Several different pieces of pricing logic run, one after another, every time Update Prices is clicked. Prism pricing is deliberately the very last thing that runs, so nothing that happens earlier can accidentally overwrite or erase it.

sequenceDiagram participant U as Optician participant Base as Frame / Lens pricing participant Adv as Slab-Off Advisor participant Ins as Insurance pricing<br/>(deductibles, co-pay, co-insurance) participant Prism as Prism pricing (this module) U->>Base: Click "Update Prices" activate Base Base->>Base: Reprice frame, lens,<br/>and treatment lines from the Rx deactivate Base Base->>Adv: (hands off) activate Adv Adv->>Adv: Keep the slab-off<br/>placeholder line in sync deactivate Adv Adv->>Ins: (hands off) activate Ins Ins->>Ins: Create/update Deductible,<br/>Co-Pay, Co-Insurance lines deactivate Ins Ins->>Prism: (hands off, LAST) activate Prism Prism->>Prism: Rebuild every prism<br/>charge line from the<br/>current Rx + matrix Prism->>Prism: Price the slab-off<br/>line correctly, now that<br/>prism totals are final deactivate Prism Prism-->>U: Order now shows final,<br/>correct prices

One practical consequence worth knowing: because the insurance deductible/co-pay math runs before the fresh prism line exists, a prism charge that's large enough to change how much deductible room is left won't be reflected in that math until you click Update Prices a second time. This is a deliberate trade-off — prism has to run last so nothing can silently undo its price — but it does mean one click isn't always the final word if prism materially changes the insurance math.

8.2 Deciding which eyes get charged, and how

Every time prices are updated, each eye is resolved independently:

flowchart TD Start(["For one eye (OD or OS)"]) --> Override{"Has the optician manually<br/>set 'Prism Method' for<br/>this eye on the order?"} Override -- "Yes" --> UseOverride["Use that method<br/>(Ground-in / Slab-off / Fresnel)"] Override -- "No — leave it on 'Auto'" --> Slab{"Did the optician accept<br/>the Slab-Off Advisor's<br/>recommendation for THIS eye?"} Slab -- "Yes" --> UseSlab["Use Slab-off"] Slab -- "No" --> Ceiling{"Is the combined prism amount<br/>above the highest band that<br/>still offers Ground-in?"} Ceiling -- "Yes" --> UseFresnel["Use Fresnel press-on"] Ceiling -- "No" --> UseGroundIn["Use Ground-in<br/>(the everyday default)"] style UseOverride fill:#eef4fb,stroke:#14548f style UseSlab fill:#fff8e6,stroke:#7a5a00 style UseFresnel fill:#eef4fb,stroke:#14548f style UseGroundIn fill:#f4faf6,stroke:#12703c

A small Prism Method field appears on the order, right next to each eye's prism entry, whenever an Active rule applies. Leaving it on the placeholder ("Auto") lets the system decide using the logic above — this is correct for the overwhelming majority of orders. Set it explicitly only when an optician needs to override the automatic choice (for example, choosing a Fresnel press-on for a temporary post-operative pair even though the amount would normally qualify for Ground-in).

8.3 Insurance vs. self-pay

flowchart LR Order(["Order has prism<br/>entered on the Rx"]) --> Ins{"Does the order have<br/>an insurance carrier<br/>attached?"} Ins -- "Yes" --> Price["Prism is priced normally"] Ins -- "No" --> CashParam{"Is the site-wide<br/>'Price prism on cash-pay<br/>orders' setting turned on?"} CashParam -- "Yes" --> Price CashParam -- "No (the default)" --> NoPrice["No prism charge is<br/>added — cash-pay orders<br/>are billed nothing for<br/>prism until this is turned on"] style Price fill:#f4faf6,stroke:#12703c style NoPrice fill:#fff2cc,stroke:#e6a700

By default, only insured orders are priced for prism — a legacy behavior this system deliberately preserved. If your practice wants to charge self-pay patients for prism too, that is a single site-wide technical setting (prism_price_cash_pay) that a system administrator can turn on; it is off out of the box precisely because switching it on changes what self-pay patients are billed, and that deserves a deliberate decision rather than happening automatically on install.


9. The Slab-Off Advisor partnership

Slab-off is different from every other kind of prism: it is never written directly on a prescription. It's a correction the lab has to add because the two eyes' lens powers are different enough that reading through them naturally creates unwanted vertical prism — nobody prescribes it as a number, it's detected.

That detection is a completely separate screen — Vertical Imbalance / Slab-Off Advisor — which watches the Rx and, when the imbalance crosses a clinical threshold, shows the optician an amber banner on the order:

flowchart LR Rx(["Optician enters the<br/>distance Rx for both eyes"]) --> Calc["Advisor calculates the<br/>vertical imbalance at<br/>reading level"] Calc --> Level{"How big is<br/>the imbalance?"} Level -- "Small" --> Silent["Nothing shown —<br/>not clinically significant"] Level -- "Borderline" --> Info["Blue informational note<br/>— no action needed"] Level -- "Significant" --> Banner["Amber banner:<br/>'Slab-off indicated'"] Banner --> Choice{"Optician's decision"} Choice -- "Add" --> Added["A slab-off charge line<br/>is added to the order"] Choice -- "Waive" --> Waived["Optician records a reason<br/>and moves on — no charge"] Added --> PrismPrices["THIS module immediately<br/>prices that line correctly,<br/>using the matrix's<br/>Slab-off column"] style Banner fill:#fff2cc,stroke:#e6a700 style Added fill:#f4faf6,stroke:#12703c style PrismPrices fill:#eef4fb,stroke:#14548f

The division of labor is strict and deliberate:

  • The Advisor only ever detects and asks. It is never allowed to invent a price.
  • This module is the only place slab-off actually gets priced — the moment the optician clicks Add, the placeholder charge is immediately repriced using whatever the Slab-off column of the active matrix says for that amount of imbalance.
  • If the matrix's Slab-off column has no cell covering that specific amount (a real Gap, per §3.2), the charge stays at its fallback price and a note is logged — the schedule genuinely doesn't offer that amount of slab-off, and the system doesn't invent a number to fill the space.
  • On the Advisor's own configuration screen, a small read-only panel shows which rule and which price currently apply to whatever the built-in tester's numbers work out to — purely informational, so whoever is reviewing the Advisor's settings can see at a glance whether prism pricing is actually wired up to catch what it detects.

10. Worked example, start to finish

A patient's prescription:

Eye Horizontal Vertical
OD (right) 2.00Δ Base Out 2.00Δ Base Up
OS (left) 0.50Δ Base In —

Step 1 — combine each eye's prism into one number (§3.3):

  • OD: 2.00Δ Out + 2.00Δ Up → 2.83Δ, diagonally, at 45°
  • OS: 0.50Δ In alone → 0.50Δ

Step 2 — round to the nearest quarter-dioptre:

  • OD: 2.83Δ → 2.75Δ
  • OS: 0.50Δ → 0.50Δ (already exact)

Step 3 — decide the production method for each eye (§8.2):

  • No manual override, no slab-off accepted for either eye, neither amount is above the Ground-in ceiling → both eyes use Ground-in.

Step 4 — match each amount against the matrix:

  • OD 2.75Δ falls in the 2.12Δ–3.00Δ row → Ground-in column → V2715, $24.00
  • OS 0.50Δ falls in the 0.25Δ–1.00Δ row → Ground-in column → V2715, $18.00

Step 5 — the order:

Line Qty Unit Price Amount
Single Vision lens (base) 2 $64.00 $128.00
V2715 — Prism, per lens (OD, 2.75Δ, Ground-in) 1 $24.00 $24.00
V2715 — Prism, per lens (OS, 0.50Δ, Ground-in) 1 $18.00 $18.00
Order total $170.00

The two prism lines total **42.00∗∗,and—thisisthepartthatmattersforbilling—bothlinescarryareal∗∗Patient∗∗amount,not42.00**, and — this is the part that matters for billing — both lines carry a real **Patient** amount, not42.00∗∗,and—thisisthepartthatmattersforbilling—bothlinescarryareal∗∗Patient∗∗amount,not0.00, so the correct tax gets calculated and the charge is actually collectible from the patient rather than sitting in the order total unexplained.


11. Troubleshooting — "why does this line look wrong?"

"There's no prism line on the order at all, even though prism is on the Rx."

Walk through, in order:

  1. Is there an Active rule? Check Screen 1 — if the status shows Draft, Archived, or Reference, nothing prices. Only Active rules price anything.
  2. Does the rule's Effective From/To cover the date the order was placed (not today's date — the order's own date)? A rule that starts "today" will not price an order placed yesterday.
  3. If you just changed the Effective From/To to fix #2 — that alone is often not enough for an already existing order. The system needs to be told to re-check that specific order (ask a system administrator to run a recalculation on it) — otherwise it stays stuck with its old, blank answer indefinitely, even though a brand-new order created right now would match the rule correctly.
  4. Is the order cash-pay (no insurance carrier)? By default, prism only prices on insured orders — see §8.3.
  5. Does the amount land on a Gap (§3.2)? Check the Matrix tab for a hatched cell at that amount/method combination — if so, this isn't a bug, the schedule genuinely doesn't offer that combination.

"The prism line is there, but it shows $0.00 for the patient."

This was the exact problem this module was built to fix. If you're still seeing it, it almost always means the old pricing path fired instead of this one — which happens only when no Active rule matched the order (see the checklist above). Once an Active rule genuinely covers the order, every prism line this system creates carries a real patient amount, not $0.

"I got a technical error message (RPC_ERROR) when changing a setting on the Rule screen."

This was a real bug in an early version of the Matrix editor — changing an unrelated setting (like Rx states) while band/method rows already existed could trigger a server error. It has been fixed; if you see it again, it's worth reporting rather than working around.

"The grid on Screen 1 looks read-only — I can't type into it or see the Add buttons."

This was also a real, now-fixed bug — an internal permissions flag was accidentally locking the whole grid. If a specific rule still shows this, its Status may be Archived or Reference — those are intentionally read-only. An Active or Draft rule should always be fully editable.


12. Glossary

Term Meaning
Δ (delta) The symbol for a prism dioptre — the unit prism is measured in.
Resultant The single diagonal amount you get when you correctly combine horizontal and vertical prism, instead of adding them.
Base direction Which way the thick edge of the prism correction points: In, Out, Up, or Down. Recorded for the lab; does not currently affect price.
Band A row in the matrix — a range of prism amounts that share a price for a given method.
Method (column) How the lab physically puts the prism in the lens: Ground-in, Slab-off, or Fresnel press-on.
Cell Where a band and a method meet — carries a billing code and a price, or is deliberately empty ("not offered").
Gap The result when a valid band exists but the chosen method has no cell in it — charges $0.00 by design, not by accident.
Unmatched The result when a prism amount is outside every band in the schedule entirely — also charges $0.00.
V2715 / V2710 / V2718 The three HCPCS billing codes this schedule can bill: Prism per lens (ground-in), Slab-off prism per lens, and Fresnel press-on prism per lens, respectively.
Cash-pay An order with no insurance carrier attached.
Post As — Line / Base Whether a band's charge appears as its own line on the order (Line) or is folded invisibly into the lens line's price (Base).

13. A note on the sibling "Add Power" feature

Under the same Lens Power Pricing menu you will also find Add Power Calculation — a separate feature that prices the reading add (bifocal, trifocal, and progressive add-power surcharges) using a similar row/column matrix idea. It is not covered by this document and has no functional relationship to prism pricing — the two features share only the same parent menu and the same underlying "round to the nearest quarter" logic. If you need to configure add-power pricing, look for its own guide.

Still need help? Contact Us Contact Us