Dashboard Readiness
Can AFL publish each ABI dashboard today? Based on audit 2025-11-04T14:22:00Z.
Executive Reporting
Owner, CEO, board
9 critical and 12 high findings across 838,670 affected source rows. Publishing now risks materially wrong executive reporting numbers reaching decision makers.
Blocking fields
- dw2.FactAuthorization.AuthEndDate
- dw2.FactPayment.PaymentPostedDate
- dw2.FactAppointment.RenderingProviderId
- dw2.FactClaim.PayorId
- dw2.FactAuthorization.AuthorizedUnits
Key findings
- T1 · dw2.FactAuthorization.AuthEndDate — 12.6% of authorizations have no end date, so they never enter the expiring-authorization window.
- T1 · dw2.FactPayment.PaymentPostedDate — 31.8% of payments have no posted date, so collections aging and cash velocity are unreliable.
- T1 · dw2.FactAppointment.RenderingProviderId — 3.8% of converted appointments have no rendering provider, so those units fall out of 97153 productivity.
CentralReach cleanup actions
- Backfill AuthEndDate from the payor approval letter and make the field required at authorization entry in CentralReach.
- Repost the affected payments with their remittance dates and automate posting-date capture from the 835.
- Correct the affected appointments and block conversion when a rendering provider is not set.
Authorization Utilization
Intake and clinical leadership
5 critical and 4 high findings across 544,798 affected source rows. Publishing now risks materially wrong authorization utilization numbers reaching decision makers.
Blocking fields
- dw2.FactAuthorization.AuthEndDate
- dw2.FactAuthorization.AuthManager
- dw2.FactAuthorization.AuthorizationGroup
- dw2.FactAuthorization.AuthorizedUnits
- dw2.FactAuthorization.ServiceCode
Key findings
- T1 · dw2.FactAuthorization.AuthEndDate — 12.6% of authorizations have no end date, so they never enter the expiring-authorization window.
- T1 · dw2.FactAuthorization.AuthManager — Some authorizations have no Auth Manager assigned, so nobody owns the renewal follow-up and expiring approvals surface late.
- T1 · dw2.FactAuthorization.AuthorizationGroup — Some authorization records are missing the authorization group identifier. This can cause authorization utilization dashboards to undercount or misattribute authorized hours.
CentralReach cleanup actions
- Backfill AuthEndDate from the payor approval letter and make the field required at authorization entry in CentralReach.
- Assign an Auth Manager to every active authorization in Billing > Authorizations and default it from the client's primary BCBA.
- Populate the Authorization Group on each authorization and require it at entry.
Authorization Renewal
Intake lead, care coordination
5 critical and 3 high findings across 544,386 affected source rows. Publishing now risks materially wrong authorization renewal numbers reaching decision makers.
Blocking fields
- dw2.FactAuthorization.AuthEndDate
- dw2.FactAuthorization.AuthManager
- dw2.FactAuthorization.AuthorizationGroup
- dw2.FactAuthorization.AuthorizedUnits
- dw2.FactAuthorization.ServiceCode
Key findings
- T1 · dw2.FactAuthorization.AuthEndDate — 12.6% of authorizations have no end date, so they never enter the expiring-authorization window.
- T1 · dw2.FactAuthorization.AuthManager — Some authorizations have no Auth Manager assigned, so nobody owns the renewal follow-up and expiring approvals surface late.
- T1 · dw2.FactAuthorization.AuthorizationGroup — Some authorization records are missing the authorization group identifier. This can cause authorization utilization dashboards to undercount or misattribute authorized hours.
CentralReach cleanup actions
- Backfill AuthEndDate from the payor approval letter and make the field required at authorization entry in CentralReach.
- Assign an Auth Manager to every active authorization in Billing > Authorizations and default it from the client's primary BCBA.
- Populate the Authorization Group on each authorization and require it at entry.
97153 Productivity
Clinical directors, RBT supervisors
1 critical and 2 high findings across 634,138 affected source rows. Publishing now risks materially wrong 97153 productivity numbers reaching decision makers.
Blocking fields
- dw2.FactAppointment.RenderingProviderId
- insights.SessionNote.NoteSignedDate
- dw2.FactAppointment.SupervisingProviderId
- dw2.FactBilledUnit.PlaceOfService
- insights.ClientGoal.GoalLastDataDate
Key findings
- T1 · dw2.FactAppointment.RenderingProviderId — 3.8% of converted appointments have no rendering provider, so those units fall out of 97153 productivity.
- T2 · insights.SessionNote.NoteSignedDate — 15.9% of session notes have no signed date, so documentation compliance cannot be measured.
- T2 · dw2.FactAppointment.SupervisingProviderId — 36.6% of 97155-eligible sessions lack a supervising provider, understating supervision ratios.
CentralReach cleanup actions
- Correct the affected appointments and block conversion when a rendering provider is not set.
- Enforce signature capture at note close and reconcile the unsigned backlog weekly.
- Stamp the supervising provider at scheduling time and backfill the last 90 days from the schedule template.
97155 Supervision and Compliance
Compliance and clinical quality
1 critical and 3 high findings across 393,204 affected source rows. Publishing now risks materially wrong 97155 supervision and compliance numbers reaching decision makers.
Blocking fields
- dw2.FactAppointment.RenderingProviderId
- insights.SessionNote.NoteSignedDate
- dw2.FactAppointment.SupervisingProviderId
- insights.SessionNote.SessionDataCollection
- insights.SessionNote.SupervisionMinutes
Key findings
- T1 · dw2.FactAppointment.RenderingProviderId — 3.8% of converted appointments have no rendering provider, so those units fall out of 97153 productivity.
- T2 · insights.SessionNote.NoteSignedDate — 15.9% of session notes have no signed date, so documentation compliance cannot be measured.
- T2 · dw2.FactAppointment.SupervisingProviderId — 36.6% of 97155-eligible sessions lack a supervising provider, understating supervision ratios.
CentralReach cleanup actions
- Correct the affected appointments and block conversion when a rendering provider is not set.
- Enforce signature capture at note close and reconcile the unsigned backlog weekly.
- Stamp the supervising provider at scheduling time and backfill the last 90 days from the schedule template.
Scheduling and Attendance
Scheduling and operations
4 critical and 2 high findings across 216,253 affected source rows. Publishing now risks materially wrong scheduling and attendance numbers reaching decision makers.
Blocking fields
- insights.StaffSchedule.ScheduledHours
- insights.StaffSchedule.WorkedHours
- dw2.DimStaff.TerminationDate
- dw2.DimStaff.HireDate
- dw2.DimStaff.FteStatus
Key findings
- T1 · insights.StaffSchedule.ScheduledHours — A share of schedule rows resolve to Unknown scheduled hours, which makes utilization, fill rate and capacity forecasting unreliable.
- T1 · insights.StaffSchedule.WorkedHours — A share of delivered sessions resolve to Unknown worked hours, so productivity cannot be compared against schedule.
- T1 · dw2.DimStaff.TerminationDate — 41.3% of inactive staff have no termination date, so capacity models keep counting departed clinicians.
CentralReach cleanup actions
- Correct schedule templates and appointment durations in Scheduling so every row resolves to real hours.
- Ensure sessions are converted and timed correctly in Clinical > Sessions before period close.
- Reconcile the HR roster against CentralReach and set termination dates for all inactive staff.
Capacity and Staffing
HR operations and clinical leadership
5 critical and 6 high findings across 517,138 affected source rows. Publishing now risks materially wrong capacity and staffing numbers reaching decision makers.
Blocking fields
- insights.StaffSchedule.ScheduledHours
- insights.StaffSchedule.WorkedHours
- dw2.DimStaff.TerminationDate
- dw2.DimStaff.ProviderPrimaryRole
- dw2.DimStaff.HireDate
Key findings
- T1 · insights.StaffSchedule.ScheduledHours — A share of schedule rows resolve to Unknown scheduled hours, which makes utilization, fill rate and capacity forecasting unreliable.
- T1 · insights.StaffSchedule.WorkedHours — A share of delivered sessions resolve to Unknown worked hours, so productivity cannot be compared against schedule.
- T1 · dw2.DimStaff.TerminationDate — 41.3% of inactive staff have no termination date, so capacity models keep counting departed clinicians.
CentralReach cleanup actions
- Correct schedule templates and appointment durations in Scheduling so every row resolves to real hours.
- Ensure sessions are converted and timed correctly in Clinical > Sessions before period close.
- Reconcile the HR roster against CentralReach and set termination dates for all inactive staff.
Revenue Cycle
RCM leadership and CFO
2 critical and 2 high findings across 502,229 affected source rows. Publishing now risks materially wrong revenue cycle numbers reaching decision makers.
Blocking fields
- dw2.FactPayment.PaymentPostedDate
- dw2.FactClaim.PayorId
- dw2.FactClaim.ClaimStatus
- dw2.FactPayment.AdjustmentReasonCode
- insights.PayorContract.EffectiveDate
Key findings
- T1 · dw2.FactPayment.PaymentPostedDate — 31.8% of payments have no posted date, so collections aging and cash velocity are unreliable.
- T1 · dw2.FactClaim.PayorId — 10.7% of claims have no payor key, so payor mix and contracted-rate analysis exclude them.
- T2 · dw2.FactClaim.ClaimStatus — 22.4% of claims have no status value, so denial and rework reporting is incomplete.
CentralReach cleanup actions
- Repost the affected payments with their remittance dates and automate posting-date capture from the 835.
- Resolve the unmapped payors and add a claim-scrubbing rule that rejects submission without a payor key.
- Map all clearinghouse status codes into the warehouse status domain and reprocess the backlog.
Payments and Collections
Billing team and CFO
3 critical and 2 high findings across 408,981 affected source rows. Publishing now risks materially wrong payments and collections numbers reaching decision makers.
Blocking fields
- dw2.FactPayment.PaymentPostedDate
- dw2.FactClaim.PayorId
- dw2.FactPayment.RemittanceBatchId
- dw2.FactPayment.AdjustmentReasonCode
- insights.PayorContract.ContractedRate
Key findings
- T1 · dw2.FactPayment.PaymentPostedDate — 31.8% of payments have no posted date, so collections aging and cash velocity are unreliable.
- T1 · dw2.FactClaim.PayorId — 10.7% of claims have no payor key, so payor mix and contracted-rate analysis exclude them.
- T1 · dw2.FactPayment.RemittanceBatchId — Expected column RemittanceBatchId is absent from the payment fact table.
CentralReach cleanup actions
- Repost the affected payments with their remittance dates and automate posting-date capture from the 835.
- Resolve the unmapped payors and add a claim-scrubbing rule that rejects submission without a payor key.
- Add the remittance batch key so payments can be reconciled to deposits end to end.
Clinical Productivity
Clinical operations
1 critical and 3 high findings across 710,355 affected source rows. Publishing now risks materially wrong clinical productivity numbers reaching decision makers.
Blocking fields
- dw2.FactAppointment.RenderingProviderId
- insights.SessionNote.NoteSignedDate
- dw2.FactAppointment.SupervisingProviderId
- insights.SessionNote.SessionDataCollection
- dw2.FactBilledUnit.PlaceOfService
Key findings
- T1 · dw2.FactAppointment.RenderingProviderId — 3.8% of converted appointments have no rendering provider, so those units fall out of 97153 productivity.
- T2 · insights.SessionNote.NoteSignedDate — 15.9% of session notes have no signed date, so documentation compliance cannot be measured.
- T2 · dw2.FactAppointment.SupervisingProviderId — 36.6% of 97155-eligible sessions lack a supervising provider, understating supervision ratios.
CentralReach cleanup actions
- Correct the affected appointments and block conversion when a rendering provider is not set.
- Enforce signature capture at note close and reconcile the unsigned backlog weekly.
- Stamp the supervising provider at scheduling time and backfill the last 90 days from the schedule template.