Measure guide · ALF / state-licensed assisted living

ALF Survey Risk Performance — Measure Guide

Complete write-up of every measure on the ALF Survey Risk Performance board — in assisted living / multi-state operator language (administrators, compliance, quality, and multi-state leadership). Explains what each metric means on the floor, how it is calculated, and where it appears.

Source: multi-state ALF inspection and citation extracts mapped into one unified model (facilities, findings, state tag codes, coverage) · Not CMS · Not Five-Star · Not a national F-tag product · Rates and risk scores blank when coverage is not safe to compare

Core concepts

Assisted living is state-regulated. There is no single federal citation ontology like CMS F-tags for SNFs. This board exists because davvvNET loads and normalizes state sources into one operator-ready spine — then puts Survey Risk product logic on top, with honest blanks where the data cannot support a rate.

Facility (state roster)
A licensed assisted living / residential care community on the state facility list. Joined to findings when we can resolve a facility key (license / name rules vary by state). Roster counts use DimFacility; citation volumes may include rows that have not yet joined a facility key.
Finding
One row in the fact table from a state source: a citation, deficiency, survey event, report link, or related inspection artifact. Not every finding is a “citation” for rate math — see citation grain below.
Citation grain (IsCitationGrain)
Operator-facing “real citation / deficiency” rows: finding types that contain citation, plus selected deficiency-style types (survey_deficiency, state_licensure_deficiency, sod_tag, deficiency). Report links and pure event rows stay in Findings but are excluded from Citations.
State tag code (StateTagCode)
The regulator’s own tag / rule / deficiency code as published by that state (e.g. Oregon C0150, Florida class codes, California statute-style codes). This is the native language administrators already use in survey packets — not a made-up national renumbering.
Tag key
Stable join key for the unified tags database: State | StateTagCode | FindingType. Powers distinct-tag counts, repeat-tag logic, and the Tags page detail.
Inspection key
Proxy for a survey visit: facility key + survey date (when dated). Used for inspections, yield (citations per inspection), and cascade-style measures — states rarely publish a clean SurveyId.
Coverage level
Per-state data readiness chip: Full citation data, Partial citation data, Public records pending, Links only, or Multiple states. Drives whether rates and risk scores are allowed to calculate.
Not CMS
This is not a CMS extract, not Five-Star, and not SNF F-tag parity. Same product shape as Survey Risk for SNFs — different data reality for ALF.

Unified national tags database

This is the differentiator. No state publishes a single national ALF tag list. davvvNET maintains a unified national database of state tag codes — every parsed code from every loaded state lives in one place (DimTag + FactFinding[StateTagCode] / TagKey) so multi-state operators can search, count, rank, and trend tags without 50 portals and 50 spreadsheets.

What “unified” means here:

  • One schema, all states — State, native code, finding type, source system, load stamp.
  • Native codes preserved — we do not invent a fake national F-tag map or rename Oregon codes into Florida’s system.
  • National search & roll-up — filter to one state for a survey packet language; keep All for portfolio heat; still one model.
  • ~23K+ tag dimension rows (and growing as states load) powering the Tags page, top-code charts, and repeat-tag risk components.

How a tag is stored (model)

DimTag row:     State + StateTagCode + FindingType + SourceSystem
TagKey (fact):  State | StateTagCode | FindingType
Distinct Tags:  DISTINCTCOUNT ( FactFinding[TagKey] ) where TagKey is not blank
State codes:    DISTINCTCOUNT ( FactFinding[StateTagCode] ) where code is not blank
MeasureWhat it tells an ALF operatorCalculation
Distinct Tags How many unique tag keys appear in the current filter — breadth of the code book in play. DISTINCTCOUNT ( TagKey ) non-blank
Distinct State Tag Codes How many native regulator codes appear (code only, across types). DISTINCTCOUNT ( StateTagCode ) non-blank
Tag Citations Display On Tags charts: prefer R12 citations when survey dates exist; fall back to all-time citations when a state has undated findings (so the spine still shows volume). If % dated ≈ 0 → Citations; else Citations R12
Top Tag Share R12 What fraction of R12 citations is the single most frequent state tag code — concentration risk (one rule dominating the survey history). Max count by StateTagCode in R12 ÷ Citations R12 (gated)
Repeat Tag Events / … R12 Same facility + same tag key on two or more distinct dated surveys — “we keep getting this tag.” Group facility×tag×survey date; count groups with survey count ≥ 2
Tag Persistence Score How sticky tags are under the current filter (invention layer) — persistence of the same tag keys across surveys. Coverage-gated ratio from repeat-tag structure (see model)
Multi-Tag Cascade Index Tags-per-inspection intensity — heavy multi-tag surveys vs light ones. Coverage-gated; uses tag keys and inspection keys in R12

Operator tip: Use the Tags page with one state selected when preparing for survey or reviewing a building — you will see that state’s real codes (the ones on the SOD / report). Use All / multi-state only for portfolio heat and coverage, not to pretend two states share one code list.

Coverage honesty & the gate

Multi-state ALF data is uneven. The board never paints empty or partial states as “clean.” Volume counts can still show (facilities, findings, citations). Rates and risk scores stay blank until every selected state is coverage-safe.

Coverage Gate Pass (1 = safe for rates/scores)

Selected states = VALUES ( DimFacility[State] )
Safe = states with ReportCoverageLevel in { A_bulk_findings, B_partial_findings }
       AND FindingRowCount > 0
Gate = 1 only when every selected state is Safe
Else Gate = 0  →  gated measures return BLANK() (never fake 0%)
MeasureOperator meaningCalculation / note
Coverage Gate Pass / Is Coverage Safe 1 = you may trust rates and Survey Risk Score for the current selection. See formula above. Driven by facility-state slicer.
Coverage Banner Full-sentence strip at the top of pages — what is usable right now. Multi-state: volumes show, rates blank. Single state: full / partial / pending / undated messaging.
Coverage Level Selected Friendly chip: Full citation data · Partial · Public records pending · Links only · Multiple states. Maps internal coverage level to operator language (never shows raw A/B/F codes on the chip).
Coverage Label Scoreboard column text for each state (Full / Partial / Public records pending…). Per-row state coverage from DimStateCoverage.
Coverage Status Label Short chip/tooltip status. Citation data available / Public records pending / Coverage incomplete / Select a state.
A Bulk States / B Partial States / FOIA Blackout States / C Links-Only States How many states sit in each readiness bucket under the current filter. Distinct count of states by ReportCoverageLevel.
Coverage States Safe / Unsafe / % States Coverage Safe How much of the current selection is rate-safe. Safe count vs selected state count.
Coverage Honesty Score 0–100 data-quality composite for the filter (dates filled, severity mapped, capacity filled). Weighted: date fill 40 + severity map 35 + capacity fill 25.
Coverage Finding Rows (Dim) / Coverage Facility Count (Dim) Catalog totals from the coverage dimension for the selection. Sum of dim rows via treat-as on state.

Rolling 12-month (R12) window

Most heat KPIs use a rolling 12 months ending at a governed As Of Date. As Of is capped at today so corrupt future survey dates cannot pull the window forward.

Shared R12 variables (every R12 measure)

AsOf   = MIN ( TODAY(), MAX ( SurveyDate ) with SurveyDate ≤ TODAY()+30 )
StartD = AsOf − 365 days
Include rows where SurveyDate > StartD and SurveyDate ≤ AsOf
If SurveyDate is blank → row is excluded from R12 (all-time volume measures still count it)
MeasureOperator meaningCalculation
As Of Date Right edge of the R12 window — “what day is the board living on?” Capped max survey date (see above).
R12 Start Date Left edge of the window. As Of − 365
Prior R12 Start / End Previous 12-month band for trajectory (year-over-year style). AsOf−730 … AsOf−365
% Findings With Survey Date How much of the finding volume is dated enough for R12. Critical for CA-class undated loads. Dated findings ÷ all findings
Findings With / Missing Survey Date Absolute counts behind the date-fill percentage. Count with / without SurveyDate

Example: A state with full citation rows but 100% null survey dates will show all-time Findings / Citations, while Findings R12 and Citations R12 stay blank or zero — the banner says so instead of inventing a fake rolling year.

Volume & footprint

Volume measures are not coverage-gated. They always count what is in the model for the current filter so operators can see scale even when rates must stay blank.

MeasureWhat it tells an ALF operatorCalculation
Facilities Roster How many facilities are on the licensed roster in filter (state / facility slicers). DISTINCTCOUNT ( DimFacility[FacilityKey] )
Findings All finding rows in context — citations, events, links, etc. COUNTROWS ( FactFinding )
Citations Citation-grain rows only (see core concepts). Count where IsCitationGrain = TRUE
Non Citation Findings Everything that is not citation-grain (links, events, residual rows). Findings − Citations
Findings R12 / Citations R12 Rolling-year heat for findings / citations. R12 filter on SurveyDate (+ citation grain for Citations R12)
Inspections / Inspections R12 How many survey-visit proxies (not how many tags). DISTINCTCOUNT ( InspectionKey ) non-blank (± R12)
Facilities With Findings / Citations (+ R12) How many buildings actually appear on the finding side of the join. DISTINCTCOUNT ( FacilityKey ) with filters
Complaint Findings / … R12 Findings flagged complaint-related by the source pipeline. IsComplaint = TRUE (± R12)
Open Like Findings / … R12 Open-like worklist volume (state “still open / POC-like” semantics — not a CMS open field). OpenLike = TRUE (± R12)
Citations Prior R12 Citations in the prior 12-month band — baseline for trajectory. Prior R12 window + citation grain
Total Capacity / Facilities With / Missing Capacity Bed / capacity footprint for bed-adjusted rates; gaps show where bed rates must blank. Sum / counts on DimFacility[Capacity]
Fresh Findings / Citations 90d Very recent activity (last 90 days of the As Of window). SurveyDate in (AsOf−90, AsOf]
Link Density per Facility Non-citation artifacts per facility — useful when a state is links-heavy. Non-citation findings ÷ facilities
States Selected / States In Coverage Dim How many states are in the slicer vs how many exist in the coverage catalog. Distinct state counts

Severity (state-native, soft-mapped)

States do not share a CMS scope/severity A–L grid. The model stores the state’s native severity text and applies a soft weight (1–4) only when the text matches known patterns (e.g. L1–L4, class language). Unmapped severity stays blank — we do not invent “100% mapped.”

MeasureOperator meaningCalculation
Severity Weight Sum / … R12 Total soft severity exposure on citation-grain rows. Sum of SeverityWeight (± R12, citation grain)
Avg Severity Weight R12 Average mapped weight per citation in R12 — intensity, not volume. Severity Weight Sum R12 ÷ Citations R12 (gated)
Severity Weight per 100 Beds R12 Capacity-adjusted severity pressure. Weight sum R12 ÷ capacity × 100 (gated; blanks if no capacity)
High Severity Citations R12 Citations with mapped weight ≥ 3 (higher-harm bands in the soft map). R12 citation-grain where weight ≥ 3
High Severity Share R12 Share of R12 citations that are high-severity mapped. High sev ÷ Citations R12 (gated)
Severity Mapped Citations / % Citations Severity Mapped How much of citation volume has a usable weight — trust signal for severity math. Count non-blank weight ÷ Citations
Decayed Severity / Citation / Complaint Exposure Recent findings weigh more (half-life slider) — “what still hurts.” 0.5 ^ (days / half-life) × exposure; half-life from ParamDecay

Do not treat soft weights as a national CMS S/S grid. Peer percentiles and within-state comparisons are the safe operator read; absolute weight sums across FOIA/partial mixes are not.

Survey mix, complaint & yield

MeasureOperator meaningCalculation
Complaint Share R12 What share of R12 findings is complaint-flagged — complaint pressure mix. Complaint R12 ÷ Findings R12 (gated)
Complaint Share of Citations R12 Same idea on citation-grain only. Complaint citations R12 ÷ Citations R12 (gated)
Citations per Inspection R12 Survey “heaviness” — tags per visit proxy. Citations R12 ÷ Inspections R12 (gated)
Citations per Facility R12 / per Inspected Facility R12 Portfolio density vs density among buildings that actually had findings. Citations R12 ÷ roster or ÷ facilities with findings R12 (gated)
Citation Trajectory Delta / % R12 R12 citations vs prior R12 — direction of travel for the selection. Current − prior; % change (trajectory % is gated)
Complaint Amplification Index Whether complaint-tagged citations run denser than overall citation yield (invention). Coverage-gated index on complaint vs standard density
Inspection Yield Efficiency Your citations/inspection vs peer group yield. My yield ÷ peer yield (gated; needs peer context)

Open-like findings & aging

“Open-like” is an operator worklist definition from source flags (OpenLike) — not a universal state field named Open. Use it for follow-up queues, not as a legal “still open with the agency” guarantee in every jurisdiction.

MeasureOperator meaningCalculation
Open Like Findings R12 Open-like volume in the rolling year. R12 + OpenLike
Open Stale 90d R12 Open-like findings older than 90 days from As Of — aging risk. Open-like in R12 with SurveyDate < AsOf − 90
Open Share R12 Open-like as a share of R12 findings. Open-like R12 ÷ Findings R12 (gated)
Facilities With Open Findings How many buildings have any open-like row. Distinct facility keys with OpenLike
Open Aging Burden Sum of age (days) across open-like rows — backlog weight, not just count. Sum of (AsOf − SurveyDate) for open-like (gated)
Last Survey Date / Days Since Last Survey How long since the latest dated finding in context. Max SurveyDate; AsOf − that date
Facilities Survey Overdue 365 Buildings with last dated activity older than ~365 days (or never in fact). Days since last survey > 365 pattern
Survey Due Pressure / Pre-Survey Pressure Score Operational pressure from time-since-survey + trend/repeats — not a probability of citation. Gated composites; see model for weights

Rates (coverage-gated)

Every measure in this section returns BLANK when Coverage Gate Pass ≠ 1. That is intentional: blank means “do not rank on this yet,” not “zero risk.”

MeasureOperator meaningCalculation
Citations per Facility R12 Average citation load per roster facility. Citations R12 ÷ Facilities Roster
Citations per Inspected Facility R12 Average among facilities that had findings in R12. Citations R12 ÷ Facilities With Findings R12
Citations per Inspection R12 Yield per survey-visit proxy. Citations R12 ÷ Inspections R12
Citations per 100 Beds R12 Capacity-adjusted citation rate (prefer when capacity is filled). Citations R12 ÷ Total Capacity × 100
Facilities Cited Rate R12 Share of roster facilities with at least one R12 citation. Facilities With Citations R12 ÷ Facilities Roster
Findings per Facility All-time findings density on the roster. Findings ÷ Facilities Roster
Inspection Coverage Rate R12 Share of roster with any R12 finding activity. Facilities With Findings R12 ÷ Facilities Roster
Avg Inspections per Facility R12 Visit intensity among facilities with R12 activity. Inspections R12 ÷ Facilities With Findings R12
Citation Density Index R12 Composite density index for dashboards (combines rate signals). Gated composite — see model
Silent Clean Rate R12 Share of inspected facilities with zero citation-grain rows in R12 — can mean quality or thin parsing; pair with honesty score. Inspected-not-cited ÷ inspected (gated)

Survey Risk Score & peers

Survey Risk Score is a peer-relative 0–100 prioritization score for facilities (or thin peers blank out). It is not a CMS star rating and not a fine schedule.

Score construction (operator read)

Peers = same PeerKey (state + license type + bed band)
Components (percentile within peers):
  Volume   ← Citations R12
  Severity ← Severity Weight Sum R12
  Recency  ← Decayed Severity Exposure
  Repeat   ← Repeat Tag Events R12   ← uses unified tags
  Complaint← Complaint Findings R12
Default weights: Vol 0.20 · Sev 0.20 · Rec 0.20 · Repeat 0.25 · Complaint 0.15
  (ParamScoreWeight can override)
Score = weighted average of available component percentiles
BLANK if coverage gate fails OR peer group too thin (< 10)
MeasureOperator meaningNotes
Peer Count / Peer Thin Flag How many facilities share the peer bucket; thin → ranks blank. Protects small bed-bands from fake percentiles.
* Peer Pctile (Volume, Severity, Recency, Repeat, Complaint) Where this facility sits vs peers on each lever (0–100 style). All coverage-gated.
Survey Risk Score Composite peer risk — higher = more relative pressure in the peer set. ~50 ≈ peer median components when fully populated.
Survey Risk Score Peer Rank 1 = highest risk score in the peer set. Dense rank descending.
Contribution Volume / Severity / Recency / Repeat / Complaint How much each lever adds to the score — “why is this building elevated?” Weighted slice of each percentile.
Risk Band Critical / Elevated / Watch style band from score thresholds. Critical ≥80 · Elevated ≥60 · Watch ≥40 (model SWITCH).
Capacity-Adjusted Peer Gap Facility bed-rate vs peer bed-rate gap (invention). Gated; capacity-sensitive.
State Risk Concentration HHI How concentrated R12 citations are among facilities in a state. Higher HHI → few buildings dominate state volume.

Worklist & operator flags

MeasureOperator meaningNotes
Worklist Priority Score Who to call first — risk score plus operational boosts (open, complaint, overdue, high-sev). Coverage-gated composite.
Watch Flag Binary “on the watch list” from score / open / complaint / aging rules. 1 = watch; blank when gate fails.
Facilities With Complaint R12 Buildings with complaint-flagged R12 activity. Distinct facility keys.
Facilities With Repeat Tags Buildings with repeat tag events — same code keeps coming back. Driven by unified TagKey logic.
Facilities Never Surveyed (in fact) Roster facilities with no finding join in the model (yet). Does not mean the state never surveyed — means we have no linked finding row.
Fine Exposure Index Illustrative severity×volume index only — not dollars, not a fee schedule. Do not use in financial statements.
Citation Clustering Score Whether citations pile into one heavy survey vs spread across visits. Peak survey share of total (gated).
Chain-Like Ownership Flag Exploratory ownership text pattern flag — not a verified chain hierarchy. Use carefully in demos.
Decay Half-Life Days / Score Weight * Parameters operators (or demos) can slide — half-life and score mix. From ParamDecay / ParamScoreWeight.
Model Disclaimer Short fixed string for footers/tooltips. “Not CMS · state-licensed AL · rates blank when coverage unsafe”

State-grain scoreboard measures

The Risk Overview state scoreboard attributes R12 volumes by finding State (not only facility-key join). That keeps orphan findings (state known, facility key not resolved) visible on the state row. Implementation uses TREATAS on FactFinding[State] plus REMOVEFILTERS ( DimFacility ) so the facility relationship does not hide orphans.

MeasureScoreboard columnMeaning
Findings R12 By State Find R12 R12 findings for that state code on the finding.
Citations R12 By State Cit R12 R12 citation-grain for that state.
Complaint Findings R12 By State Cmp R12 complaint findings for that state.
Open Like Findings R12 By State Open R12 open-like for that state.
% Findings With Survey Date By State Dated % Date-fill for that state’s findings (all-time in state grain).

Facilities page matrices stay facility-linked on purpose — operator scorecards should not invent a building match. Titles call out facility-linked volume so the grain is honest next to state-grain scoreboard numbers.

Where measures appear by page

PagePrimary measures / fields
Risk Overview Coverage Banner / Level; Facilities, Findings R12, Citations R12, Inspections R12, Complaint R12, Open-like R12; Full/Partial/Pending chips + Honesty Score; Citations / Findings / Complaints by state; trajectory; state scoreboard (Coverage Label, Fac, Find/Cit/Cmp/Open R12 By State, Dated %)
Severity Severity Weight Sum R12, High Severity R12, % mapped, Citations R12, Decayed sev, Facilities; weight / high-sev / map-by-state charts; state severity board
Tags Unified national tags spine — Citations R12 / Tag Citations Display, Distinct Tags, State Tag Codes, Repeat Tags R12, Top Tag Share, Complaint R12, Facilities cited; top StateTagCode chart; finding-type mix; finding detail (StateTagCode, SeverityNative, flags)
Survey mix Findings / Citations / Inspections / Complaint R12; gated rate cards when single-state safe; complaint share, findings vs complaints, cit per inspection; state mix matrix
Open & aging Open-like R12, Open stale 90d, Facilities open, Complaint / Citations R12, Survey overdue; by-state open charts; open-like worklist table
Facilities Coverage Banner / Level; Facilities, Findings/Citations/Complaint/Open all-time, % dated, R12 volumes; ownership / license / state charts; facility roster matrix (facility-linked); peer score when one state + facility context

Data notes

  • Primary facts/dims: FactFinding, DimFacility, DimTag (unified national tags), DimStateCoverage, date + parameter tables.
  • Unified tags: native StateTagCode preserved per state; national database = one model for all loaded states, not a synthetic national renumbering.
  • Citation grain is model-defined (IsCitationGrain) for operator rates — broader than “FindingType = citation” alone.
  • Severity is soft-mapped from state-native text; % mapped is the honesty check before ranking on weight.
  • R12 requires SurveyDate; undated loads still support all-time volume and tag browsing.