SGA Metrics Registry — Review

One satellite-verified clock. Cube model: measures + dimensions + timeframe → canonical DAX.
Bridge: powerbi-bridge:3050
Dataset: e3fcdf32-39ee-4ddb-b8ac-aa620a15dd72
Compiled: 2026-05-03T21:17:44.565Z
Last probe: 2026-05-02T22:40:48.610Z

Reviewer checklist (per entry)

  1. Read the Definition + Aliases. Anything you'd call this metric and not find → flag a missing alias.
  2. Verify the Canonical DAX + Tables touched. Make sure it pulls the right field for what the name means.
  3. Compare Live observed against the matching tile in Karen's exec dashboard / PBI report. Take a screenshot.
  4. Drop the screenshot into evidence/measures/<id>/YYYY-MM-DD-pbi.png (or evidence/dimensions/<id>/...).
  5. Update validation.evidence[] in the catalog file and flip validation.status to validated.
  6. Run npm run validate — drift pass should re-confirm the live number against expected.
14
Total entries
4
Validated
10
Under review
0
Draft
10
Measures
4
Dimensions

Measures (10)

Production
production · dollars · pbi · v0.2.0
under review
Definition
Gross production minus adjustments. The SGA-default meaning of the word 'production' across financial reports, executive dashboards, and daybreak. Equivalent to PBI measure [Net Production].
What you can call it (aliases)
production prod net production net prod
⚠ Synonym blacklist (do NOT silently treat as this)
"gross production"gross-production
Source-of-truth fields
Canonical DAX: [Net Production]
Tables touched: Transactions, Dates
Validation anchor
Anchor type:ttm-network-sum
Expected value:$658,291,429.51
Tolerance:0.5%
Live observed:$658,291,429.51 within tolerance
Validated on:2026-05-02
Validated by:scott4885-auto
Source of truth
Live PBI bridge probe 2026-05-02 — cross-checked via SUM(Transactions[amount]) for Transaction Type IN {Production, Adjustment} = $648M (close).
Evidence
No screenshot on file yet. To promote to validated: take a screenshot of the matching tile in Karen's exec dashboard / PBI report, drop into evidence/measures/production/<date>-pbi.png, fill validation.evidence[], flip status.
Notes
Probed 2026-05-02 via [Net Production] network sum, TTM. Awaiting human screenshot of Karen exec dashboard tile to flip status to 'validated'.
Gross Production
gross-production · dollars · pbi · v0.2.0
under review
Definition
Total production billed before adjustments and write-offs. Distinct from `production` (= net production). Used for production-target tracking and SPLY comparisons.
What you can call it (aliases)
gross production gross prod gp
Source-of-truth fields
Canonical DAX: [Gross Production]
Tables touched: Transactions, Dates
Validation anchor
Anchor type:ttm-network-sum
Expected value:$775,584,956.3
Tolerance:0.5%
Live observed:$775,584,956.3 within tolerance
Validated on:2026-05-02
Validated by:scott4885-auto
Source of truth
Live PBI bridge probe 2026-05-02 — TTM network sum.
Evidence
No screenshot on file yet. To promote to validated: take a screenshot of the matching tile in Karen's exec dashboard / PBI report, drop into evidence/measures/gross-production/<date>-pbi.png, fill validation.evidence[], flip status.
Notes
Awaiting human screenshot of PBI Gross Production tile to flip to 'validated'.
Collections
collections · dollars · pbi · v0.2.0
under review
Definition
Total dollar amount collected. Computed as -1 × SUM(Transactions[amount]) where Transaction Type = 'Payment' (payments are stored as negative amounts). Workaround for the broken native [Gross Collections] measure which fails inside SUMMARIZECOLUMNS grouped contexts.
What you can call it (aliases)
collections money collected payments received
⚠ Synonym blacklist (do NOT silently treat as this)
"gross collections"collections
Source-of-truth fields
Canonical DAX: CALCULATE(SUM(Transactions[amount]) * -1, Transactions[Transaction Type] = "Payment")
Tables touched: Transactions, Dates
Known-broken (avoid):
  • [Gross Collections] — fails in grouped context per agent.md
Validation anchor
Anchor type:ttm-network-sum
Expected value:$656,322,826.41
Tolerance:0.5%
Live observed:$656,322,826.41 within tolerance
Validated on:2026-05-02
Validated by:scott4885-auto
Source of truth
Live PBI bridge probe 2026-05-02 — TTM network sum. Plausibility: collections ~99.7% of Net Production ($658M), within expected SGA collection-rate range.
Evidence
No screenshot on file yet. To promote to validated: take a screenshot of the matching tile in Karen's exec dashboard / PBI report, drop into evidence/measures/collections/<date>-pbi.png, fill validation.evidence[], flip status.
Notes
Original DAX (FILTER(Description_Types, Description_Types[Type]=...)) returned $11M — wrong path. Corrected to filter by Transactions[Transaction Type] = 'Payment' with sign flip. Awaiting screenshot.
New Patients
new-patients · count · pbi · v0.2.0
under review
Definition
Count of patients seen for the first time in the period. Standard SGA new-patient definition aligned with the Power BI [New Patients] measure.
What you can call it (aliases)
new patients new pts np new patient count
Source-of-truth fields
Canonical DAX: [New Patients]
Tables touched:
Known-broken (avoid):
  • [Net Patient Gain] — uses SELECTEDVALUE internally, fails in SUMMARIZECOLUMNS
  • [New Patients SPLY] — same issue
Validation anchor
Anchor type:mtd-network-sum
Expected value:238
Tolerance:5%
Live observed:238 within tolerance
Validated on:2026-05-02
Validated by:scott4885-auto
Source of truth
Live PBI bridge probe 2026-05-02 — MTD network sum, day 2 of May 2026. Wider tolerance (5%) appropriate for low-volume start-of-month windows.
Evidence
No screenshot on file yet. To promote to validated: take a screenshot of the matching tile in Karen's exec dashboard / PBI report, drop into evidence/measures/new-patients/<date>-pbi.png, fill validation.evidence[], flip status.
Notes
MTD on day 2-of-month — anchor will retest at month-end as a more stable reference. Awaiting screenshot.
Office Days Open
office-days-open · days · pbi · v0.2.0
under review
Definition
Count of days the practice was open and producing in the period. Used as denominator for per-day metrics.
What you can call it (aliases)
office days open days open working days
Source-of-truth fields
Canonical DAX: [Office Days Open]
Tables touched:
Validation anchor
Anchor type:mtd-network-sum
Expected value:140
Tolerance:5%
Live observed:140 within tolerance
Validated on:2026-05-02
Validated by:scott4885-auto
Source of truth
Live PBI bridge probe 2026-05-02 — MTD network sum. Plausibility: ~70 practices producing × 2 days = 140.
Evidence
No screenshot on file yet. To promote to validated: take a screenshot of the matching tile in Karen's exec dashboard / PBI report, drop into evidence/measures/office-days-open/<date>-pbi.png, fill validation.evidence[], flip status.
Notes
Awaiting month-end re-probe + human screenshot.
Appointments Scheduled
appointments-scheduled · count · pbi · v0.2.0
under review
Definition
Count of scheduled (non-passive, latest-row) appointments. Time filter applies to SAP_Cleaned_FullLoad_Output[date], not Dates[Date]. is_confirmed is a string in SAP — quoting matters.
What you can call it (aliases)
appointments appts scheduled appointments appts scheduled
Source-of-truth fields
Canonical DAX: CALCULATE(COUNTROWS(SAP_Cleaned_FullLoad_Output), SAP_Cleaned_FullLoad_Output[IsLatest] = 1, SAP_Cleaned_FullLoad_Output[Status] <> "Passive")
Time axis: SAP_Cleaned_FullLoad_Output[date] (non-default — composer applies time filter on this column)
Tables touched: SAP_Cleaned_FullLoad_Output
Validation anchor
Anchor type:row-count
Expected value:2,973,625
Tolerance:1%
Live observed:2,973,625 within tolerance
Validated on:2026-05-02
Validated by:scott4885-auto
Source of truth
Live PBI bridge probe 2026-05-02 — full-history non-passive latest-row count.
Evidence
No screenshot on file yet. To promote to validated: take a screenshot of the matching tile in Karen's exec dashboard / PBI report, drop into evidence/measures/appointments-scheduled/<date>-pbi.png, fill validation.evidence[], flip status.
Notes
Anchor is full-history count (no time filter) — this is the SAP table size with the IsLatest+Status filter. Composer applies a time filter at query time.
Appointments Completed
appointments-completed · count · pbi · v0.3.0
under review
Definition
Count of appointments where Deduced_Status = 'Completed'. Latest-row only. The canonical 'kept appointment' count for OM scorecards.
What you can call it (aliases)
completed completed appointments completed appts completions kept appointments
Source-of-truth fields
Canonical DAX: CALCULATE(COUNTROWS(SAP_Cleaned_FullLoad_Output), SAP_Cleaned_FullLoad_Output[IsLatest] = 1, SAP_Cleaned_FullLoad_Output[Deduced_Status] = "Completed")
Time axis: SAP_Cleaned_FullLoad_Output[date] (non-default — composer applies time filter on this column)
Tables touched: SAP_Cleaned_FullLoad_Output
Validation anchor
Anchor type:row-count
Expected value:1,837,485
Tolerance:1%
Live observed:1,837,485 within tolerance
Validated on:2026-05-02
Validated by:scott4885-auto
Source of truth
Live PBI bridge probe 2026-05-02 — full-history Deduced_Status='Completed' count. ~62% of total scheduled (1837485 / 2973625) — plausible completion rate for an active SAP table including past appointments.
Evidence
No screenshot on file yet. To promote to validated: take a screenshot of the matching tile in Karen's exec dashboard / PBI report, drop into evidence/measures/appointments-completed/<date>-pbi.png, fill validation.evidence[], flip status.
Notes
Awaiting human screenshot.
Appointments Cancelled
appointments-cancelled · count · pbi · v0.3.0
under review
Definition
Count of appointments where Deduced_Status = 'Cancelled'. Latest-row only. Includes both advance-notice cancellations and same-day cancellations (see same-day-cancellations for the latter subset).
What you can call it (aliases)
cancelled cancellations canceled appointments canceled appts
Source-of-truth fields
Canonical DAX: CALCULATE(COUNTROWS(SAP_Cleaned_FullLoad_Output), SAP_Cleaned_FullLoad_Output[IsLatest] = 1, SAP_Cleaned_FullLoad_Output[Deduced_Status] = "Cancelled")
Time axis: SAP_Cleaned_FullLoad_Output[date] (non-default — composer applies time filter on this column)
Tables touched: SAP_Cleaned_FullLoad_Output
Validation anchor
Anchor type:row-count
Expected value:148,204
Tolerance:1%
Live observed:148,204 within tolerance
Validated on:2026-05-02
Validated by:scott4885-auto
Source of truth
Live PBI bridge probe 2026-05-02 — full-history Deduced_Status='Cancelled' count. ~5% of total scheduled (148204 / 2973625) — within typical dental cancellation-rate range.
Evidence
No screenshot on file yet. To promote to validated: take a screenshot of the matching tile in Karen's exec dashboard / PBI report, drop into evidence/measures/appointments-cancelled/<date>-pbi.png, fill validation.evidence[], flip status.
Notes
Awaiting human screenshot.
Same-Day Cancellations
same-day-cancellations · count · pbi · v0.3.0
under review
Definition
Count of appointments cancelled on the same day they were scheduled (Cancelled_Date == appointment date). Subset of total cancellations. Critical signal for OM intervention since same-day cancels carry the highest revenue impact.
What you can call it (aliases)
same day cancel same-day cancel sdc last minute cancel day of cancel
Source-of-truth fields
Canonical DAX: CALCULATE(COUNTROWS(SAP_Cleaned_FullLoad_Output), SAP_Cleaned_FullLoad_Output[IsLatest] = 1, SAP_Cleaned_FullLoad_Output[cancelled] = 1, SAP_Cleaned_FullLoad_Output[Cancelled_Date] = SAP_Cleaned_FullLoad_Output[date])
Time axis: SAP_Cleaned_FullLoad_Output[date] (non-default — composer applies time filter on this column)
Tables touched: SAP_Cleaned_FullLoad_Output
Validation anchor
Anchor type:row-count
Expected value:42,492
Tolerance:1%
Live observed:42,492 within tolerance
Validated on:2026-05-02
Validated by:scott4885-auto
Source of truth
Live PBI bridge probe 2026-05-02 — full-history same-day cancel count. 28.7% of total cancellations (42492 / 148204) — typical SGA same-day-cancel share.
Evidence
No screenshot on file yet. To promote to validated: take a screenshot of the matching tile in Karen's exec dashboard / PBI report, drop into evidence/measures/same-day-cancellations/<date>-pbi.png, fill validation.evidence[], flip status.
Notes
Note: depends on Cancelled_Date being populated when cancelled=1. Spot-check before human-validating.
Appointments Confirmed
appointments-confirmed · count · pbi · v0.2.0
under review
Definition
Count of confirmed appointments (is_confirmed = '1'). is_confirmed is a string in the SAP table, not a boolean — quoting matters.
What you can call it (aliases)
confirmed confirmed appointments confirmed appts
Source-of-truth fields
Canonical DAX: CALCULATE(COUNTROWS(SAP_Cleaned_FullLoad_Output), SAP_Cleaned_FullLoad_Output[IsLatest] = 1, SAP_Cleaned_FullLoad_Output[Status] <> "Passive", SAP_Cleaned_FullLoad_Output[is_confirmed] = "1")
Time axis: SAP_Cleaned_FullLoad_Output[date] (non-default — composer applies time filter on this column)
Tables touched: SAP_Cleaned_FullLoad_Output
Validation anchor
Anchor type:row-count
Expected value:1,376,271
Tolerance:1%
Live observed:1,376,271 within tolerance
Validated on:2026-05-02
Validated by:scott4885-auto
Source of truth
Live PBI bridge probe 2026-05-02 — full-history confirmed count.
Evidence
No screenshot on file yet. To promote to validated: take a screenshot of the matching tile in Karen's exec dashboard / PBI report, drop into evidence/measures/appointments-confirmed/<date>-pbi.png, fill validation.evidence[], flip status.
Notes
Confirmation rate = 1376271 / 2973625 = 46.3% which is plausible for a network with rolling future appointments (unconfirmed by default until staff calls).

Dimensions (4)

Location
location · dimension · v0.2.0
validated
What you can call it (aliases)
location practice office by location by practice by office
Canonical field (the agreed PBI column)
Display: Practices[Location Name] → column "Location Name"
Join key: Practices[Practice Code]
Alternate fields (documented but not canonical)
Practices[Practice Code] · joins, IDs (not for display)
Practices[Legal Location] · legal/contracts (not for display)
Value domain
Definition id: active-practices
Filter: Practices[Closures] = "Open" && NOT (Practices[Practice Type] IN { "Corp", "Lab" })
Expected count: 249
Total count (no filter): 273
Validation anchor
Anchor type:row-count
Expected:249
Tolerance:0%
Live observed:249 within tolerance
Validated on:2026-05-02
Validated by:scott4885-auto
Source of truth
Live PBI bridge probe 2026-05-02 — DISTINCTCOUNT(Practices[Location Name]) with active filter = 249. Matches documented active count in agent.md exactly.
Evidence on file
  • manual-note · Probe-time note documenting DAX + cross-check against agent.md · evidence/dimensions/location/2026-05-02-probe-note.md
Notes
Validated via DAX cross-check. Replace manual-note with screenshot evidence on next human pass.
Provider
provider · dimension · v0.2.0
validated
What you can call it (aliases)
provider doctor dds team member by provider by doctor
Canonical field (the agreed PBI column)
Display: Providers[Team Member] → column "Team Member"
Join key: Providers[Provider_Key]
Alternate fields (documented but not canonical)
Providers[Provider_Key] · joins (composite Practice|Prov) (not for display)
Providers[NPI] · external IDs (if populated) (not for display)
Providers[PMS Harvested Name] · raw PMS-harvested name (often unmapped) (not for display)
Providers[Full Name] · alternate display (often blank) (not for display)
Value domain
Definition id: active-providers
Filter: NOT ISBLANK(Providers[Team Member]) && Providers[Team Member] <> "" && Providers[Status] = "Active"
Expected count: 1,215
Validation anchor
Anchor type:row-count
Expected:1,215
Tolerance:1%
Live observed:1,215 within tolerance
Validated on:2026-05-02
Validated by:scott4885-auto
Source of truth
Live PBI bridge probe 2026-05-02 — DISTINCTCOUNT(Providers[Team Member]) with active filter = 1215. Plausible: ~250 practices × ~5 providers each.
Evidence on file
  • manual-note · Probe-time DAX evidence + sample team-member names · evidence/dimensions/provider/2026-05-02-probe-note.md
Notes
Providers table is keyed (Practice Code, Prov); use Provider_Key for joins, Team Member for display. Cross-check against HR roster pending.
Patient Type (New vs Returning)
patient-type · dimension · v0.2.0
validated
What you can call it (aliases)
patient type new vs returning new vs existing np vs existing by patient type
Canonical field (the agreed PBI column)
Display: Transactions[New or Returning] → column "New or Returning"
Value domain
Definition id: patient-type-domain
Filter: NOT ISBLANK(Transactions[New or Returning])
Expected count: 2
Validation anchor
Anchor type:row-count
Expected:2
Tolerance:0%
Live observed:2 within tolerance
Validated on:2026-05-02
Validated by:scott4885-auto
Source of truth
Live PBI bridge probe 2026-05-02 — VALUES(Transactions[New or Returning]) returned exactly 2 values: 'New' and 'Return'.
Evidence on file
  • manual-note · Probe-time DAX showing 2 distinct values: New, Return · evidence/dimensions/patient-type/2026-05-02-probe-note.md
Notes
Column named 'New or Returning' but actual value is 'Return' (not 'Returning').
Date
date · dimension · v0.2.0
validated
What you can call it (aliases)
date day by date by day by month by year
Canonical field (the agreed PBI column)
Display: Dates[Date] → column "Date"
Alternate fields (documented but not canonical)
Transactions[EntryDate] · active relationship to Dates[Date] — use this only (not for display)
Transactions[ProcedureDate] · BROKEN — never USERELATIONSHIP this; fails silently (not for display)
Value domain
Definition id: calendar-dates
Filter: Dates[Date] >= DATE(2020, 1, 1) && Dates[Date] <= TODAY()
Expected count: 2,314
Validation anchor
Anchor type:row-count
Expected:2,314
Tolerance:1%
Live observed:2,314 within tolerance
Validated on:2026-05-02
Validated by:scott4885-auto
Source of truth
Live PBI bridge probe 2026-05-02 — DISTINCTCOUNT(Dates[Date]) with calendar filter = 2314. Matches expected days from 2020-01-01 to 2026-05-02 inclusive.
Evidence on file
  • manual-note · Calendar arithmetic + DAX cross-check · evidence/dimensions/date/2026-05-02-probe-note.md
Notes
Validation grows by 1 day per day; tolerance 1% absorbs drift between probes.