Provider identity

HRSA 340B Covered Entity Registry (OPAIS)

drug_silver.dim_hrsa_covered_entity·live·dim·static (single 2026-05-15 snapshot loaded; upstream HRSA OPAIS source publishes daily, but only this one vintage is present in the table)·HRSA 340B Covered Entities
Rows
92,814
Columns
33
History
2026-05-15 to 2026-05-15
Card
yesgrain, traps, filters
Typed tools
0

What it is

  1. 1The HRSA 340B covered-entity registry: the official roster of every health-care provider site enrolled in (or terminated from) the federal 340B Drug Pricing Program, which lets eligible safety-net providers buy outpatient drugs at deeply discounted ceiling prices.
  2. 2One row = one registered 340B site (hospital, FQHC, grantee clinic, etc.) with its identity, type, address, officials, and participation status.
  3. 3In a cost-data catalog it is the entity/eligibility dimension that flags which providers get 340B drug pricing (vs WAC/ASP) — a key driver of drug-acquisition cost and of payer 340B carve-out/duplicate-discount logic.

Grain

KeyGrain
id_340b
  1. 1One row per 340B-registered entity SITE, identified by its 340B ID (id_340b).
  2. 292,814 rows = 92,814 distinct id_340b.
  3. 3The internal HRSA key ce_id is 1:1 with id_340b (also 92,814 distinct), so either alone is a valid minimal key — id_340b is the canonical business key.
  4. 4This is a single point-in-time snapshot (observed_period = 2026-05-15), so no date column is needed in the key.

How to read it

  1. 1Count active 340B sites by state and entity type: SELECT street_address_state, entity_type, count(*) FROM drug_silver.dim_hrsa_covered_entity WHERE participating = true GROUP BY 1,2 ORDER BY 3 DESC.
  2. 2Answers 'how many currently-active 340B-eligible provider sites of each type are in each state' — i.e. which providers get 340B discounted drug acquisition cost (vs WAC/ASP), the basis for 340B carve-out and duplicate-discount analysis.
  3. 3To roll up to organizations, group on regexp_replace(id_340b,'-[0-9A-Za-z]+$','') instead.

Traps

  1. 1NOT an active-providers list: 31% of rows (28,352) are participating=false (terminated/decertified or pending). You MUST filter participating=true to count or join only active 340B sites; the table deliberately retains inactive entities.
  2. 2id_340b is the SITE grain, not the organization grain. One parent organization registers many child sites via the -NN suffix (73,861 parents → 92,814 sites; Cleveland Clinic alone = 498 sites). To analyze at the org level, strip the trailing -[alnum]+ suffix (regexp_replace(id_340b,'-[0-9A-Za-z]+$','')) and aggregate. Counting distinct id_340b counts sites, not organizations.
  3. 3Single static snapshot only (observed_period/asserted_at/effective_period_start/effective_period_end/sha256_content_hash/bronze_object_key all = one value, 2026-05-15). All the temporal, vintage, and provenance columns are constants here — they exist for the cross-table snapshot/versioning framework, not for time-series analysis within this table. is_current=true on every row, so it currently de-dupes nothing.
  4. 4effective_period_end EQUALS effective_period_start (both 2026-05-15) — this is a point-in-time observation, NOT an SCD-2 validity interval. Do not use [effective_period_start, effective_period_end] as a date range.
  5. 5Nulls carry meaning and code-conditional presence: grant_number is null for ~all DSH/RRC/CAH/SCH/PED hospital types (they qualify via the DSH adjustment, not a grant) and populated for grantee types (CH/FP/TB/STD/RW*) — its presence is driven by entity_type. certified_decertified_date is null for 8,550 entities that never had a certify/decertify event (null ≠ inactive). sub_name is null for 9,164 sites with no DBA. drug_source_version_id is 100% null.
  6. 6ce_id looks like a tidy key but is a sparse internal HRSA sequence (1–117,822 with gaps) — use id_340b as the durable business key for joins; ce_id can be reassigned/non-portable across HRSA vintages. Also: name is free-text and inconsistently cased (UPPER vs Title case for the same org) — normalize before name-based matching; the leading letters of id_340b usually but not always match entity_type (4,243 mismatches).

Columns (33)

ColumnTypeMeaning
id_340bstringCanonical 340B identification number for the SITE and the table's grain key (92,814 distinct = row_count). Structured: a parent-entity prefix (e.g. CHC00018, RRC360180) plus a -NN child-site suffix; the same parent organization registers many sites (73,861 distinct parents, avg 1.26 sites each, max 498 = Cleveland Clinic). Strip the trailing -[alnum]+ to group sites under their parent. The leading letters usually equal entity_type but not always (4,243 rows differ, e.g. entity_type CH carries a CHC prefix).
ce_idintHRSA-internal numeric covered-entity ID. 1:1 with id_340b (92,814 distinct), so it is an alternate minimal key. Sparse sequence ranging 1–117,822 with gaps — it is an assigned ID, NOT a dense row index, and is not stable/meaningful across HRSA snapshots the way id_340b is.
entity_typestring340B eligibility category code (23 values). Largest: DSH=42,550 (Disproportionate Share Hospitals), CH=16,737 (Community Health Center / FQHC grantees), STD=6,289, RRC=6,077 (Rural Referral Center), CAH=5,588 (Critical Access Hospital), FP=4,022 (Family Planning), SCH=2,835 (Sole Community Hospital), PED=2,773 (Children's), TB=2,453, plus FQHCLA, RWI/RWII (Ryan White), HV (Hemophilia), CAN (Cancer/PCC), HM (Homeless), UI, NH, SPNS. Determines the legal eligibility pathway and roughly whether a grant_number applies.
namestringPrimary registered organization name (always populated, 0 nulls). Free-text, inconsistently cased across rows (e.g. 'STONE MOUNTAIN HEALTH SERVICES' vs 'Stone Mountain Health Services') — normalize before joining on name.
sub_namestringSite-level / sub-organization 'doing business as' name (e.g. a specific clinic under the parent). NULL for 9,164 rows where the site has no distinct sub-name.
participatingbooleanBoolean: is the site CURRENTLY active in 340B. true=64,462 (~69%), false=28,352 (~31%). CRITICAL: the registry retains terminated/decertified AND not-yet-active entities, so this table is NOT a list of only active 340B sites — you MUST filter participating=true to count active 340B providers. Cannot be derived from dates alone: 1,228 participating=false rows have a FUTURE participating_start_date (approved, pending go-live).
participating_start_datedateDate the site's 340B participation began/begins. Ranges 1992-12-01 (program inception era) to 2026-07-01 (future-dated pending starts). Never null. Not unique (many share dates) — not a key.
grant_numberstringFederal grant award number for grant-based eligibility (e.g. H37RH00048), 3,452 distinct, NOT unique (a grant covers many sites). Present only for grant-funded types (CH, FP, TB, STD, FQHCLA, RW*, HV, HM all 100% have it); NULL for hospital types that qualify via DSH adjustment (DSH, RRC, CAH, SCH, PED, CAN, etc. are ~all null).
street_address_line_1stringSite street address line 1. Fully populated (0 nulls).
street_address_citystringSite city. Fully populated.
street_address_statestringTwo-letter state/territory of the site. Fully populated; 56 distinct = 50 states + DC + 5 territories (PR=191, VI=14, AS=12, MP=11, GU=7). Top: CA 7,350, TX 5,627, NY 5,448, OH 5,126.
street_address_zipstringSite ZIP code (string). Fully populated. 5-digit ZIP as observed.
authorizing_official_namestringName of the entity's authorizing official (the legally responsible signer). Fully populated. Note double-spaces between first/last in source data.
authorizing_official_titlestringTitle of the authorizing official (e.g. CEO, Executive Director).
primary_contact_namestringDay-to-day 340B contact name. 1 null only.
primary_contact_titlestringTitle of the primary contact (e.g. COO, Director of Pharmacy, 340B Coordinator).
certified_decertified_datedateDate of the most recent annual recertification or decertification event. NULL for 8,550 rows (entities that have never been through a certify/decertify event). Range 2014-08-08 to 2026-05-14. A null here does NOT mean inactive — read participating for status.
edit_datedateDate the entity record was last edited in HRSA OPAIS. Never null; range 2015-08-24 to 2026-05-14. Use as the per-row freshness/last-modified signal.
observed_perioddateSnapshot date the data was captured = 2026-05-15 for ALL rows (single value). The de-facto 'as-of' date of the table.
asserted_atdateProvenance: when this fact was asserted by the pipeline. Constant 2026-05-15 across all rows in this snapshot.
effective_period_startdateStart of the effective interval for the record; constant 2026-05-15. Profiler picks this as the time column but it carries no within-table variance.
effective_period_enddateEnd of the effective interval; constant 2026-05-15 — EQUAL to effective_period_start. This is a point-in-time snapshot, NOT an open-ended SCD-2 interval; do not treat it as a validity range.
cms_vintage_sequenceintVintage/ordering sequence from the shared drug-source framework. Constant 1 (only one vintage loaded).
parse_revisionintParser revision number. Constant 1.
parser_artifact_hashstringSHA-256 of the parser artifact used (provenance/reproducibility). Constant across the snapshot.
source_urlstringUpstream source URL — https://340bopais.hrsa.gov/Reports (HRSA 340B OPAIS public reports). Constant.
sha256_content_hashstringSHA-256 of the ingested bronze source file. Single value (one source file) — confirms this is exactly one snapshot.
source_idstringLogical source identifier = 'hrsa_opais_ce_registry'. Constant; identifies the HRSA OPAIS covered-entity feed.
is_currentbooleanSCD current-version flag. TRUE for all 92,814 rows (no superseded versions retained). Because every row is current, it does NOT de-duplicate anything in this table today, but keep the is_current=true filter in queries for forward-compatibility when future snapshots land.
bronze_object_keystringS3 key of the raw bronze object (drug/bronze/hrsa_opais_ce_registry/2026-05-15/...340B_CoveredEntityJson_Daily_2026-05-15.zip). Single value = one ingested file.
s3_version_idstringS3 object version id of the bronze file. Single value. Lineage only.
vintage_tagstringVintage label = literal string 'none' for all rows (no meaningful vintage tag applied). Do not treat 'none' as a missing/null sentinel to act on.
drug_source_version_idstringVersion id linking to the drug-source-version registry. 100% NULL in this table — not populated for this source; ignore for joins.

Query it

describe_data_source(source_fqn="drug_silver.dim_hrsa_covered_entity")     # the card, live
query_substrate(sql="SELECT * FROM drug_silver.dim_hrsa_covered_entity WHERE id_340b = '<value>' LIMIT 100")
ItemValue
Typed tools that read itnone; raw SQL
Identity keyid_340b
Joinhow_to_join(source_fqn="drug_silver.dim_hrsa_covered_entity")
Raw doorAthena (read-only via query_substrate): drug_silver.dim_hrsa_covered_entity

This page as markdown: /docs-md/data/drug_silver_dim_hrsa_covered_entity.md · every page in one file: /llms-full.txt