# HHS-OIG Corporate Integrity Agreements (CIA)

`drug_silver.dim_hhs_oig_cia` · Provider identity · status live

HHS-OIG Corporate Integrity Agreements — entities under a CIA following a fraud/abuse settlement, with settlement amount, location, and effective date. Accountability signal on health systems / providers (often paired with LEIE for the integrity picture).

**Grain.** One row per CIA entity (entity_slug) within a snapshot. On the current snapshot (is_current=true, vintage_tag hhs_oig_cia_2026-05-19) there are exactly 332 rows = 332 distinct entity_slug = 332 distinct detail_url, so entity_slug alone is the minimal verified key when you filter is_current=true. Across the full 704-row table the grain is entity_slug + vintage_tag (two snapshots present), but the older 2026-05-16 snapshot is a dirty pre-dedup load where many slugs repeat ~3x — always filter is_current=true and treat entity_slug as the key.

**How to use it.** List the largest active HHS-OIG Corporate Integrity Agreements and their settlement amounts: SELECT entity_name, location_state, settlement_amount_usd, effective_date FROM drug_silver.dim_hhs_oig_cia WHERE is_current=true AND settlement_amount_usd IS NOT NULL ORDER BY settlement_amount_usd DESC LIMIT 20; — answers "which healthcare/pharma entities are currently under an OIG integrity agreement and how big was the settlement that triggered it" (top results: AmerisourceBergen $625M, Novartis $591M, Mylan $465M, Rite Aid $409M).

**Traps.**
- Always filter is_current=true. The table holds 704 rows across 2 snapshots; the older vintage_tag='hhs_oig_cia_2026-05-16' (is_current=false, 372 rows) is a DIRTY pre-dedup load where ~40 entity_slugs repeat 3x (same slug, 3 different sha256_content_hash, NULL bronze_object_key/s3_version_id). entity_slug is unique ONLY on the current snapshot (332 = 332).
- settlement_amount_usd is NULL for 12 of 332 entities (and location_state NULL for 2). NULL means OIG published no settlement figure, NOT $0 — exclude nulls (or COUNT them separately) before SUM/AVG. Computed stats: min $31,818, max $625M, median ~$5.5M over the 320 with amounts.
- entity_name is a raw OIG concatenation: 33 rows pack multiple co-signing legal entities into one string (semicolons / 120+ chars). One CIA row can represent a whole corporate family — do not parse entity_name as a single clean company; use entity_slug/detail_url as the identifier.
- Three column pairs are effectively redundant or constant: effective_date == effective_period_start on every row; effective_period_end is ALWAYS the sentinel 2099-12-31 (open/active, not a real end date); observed_period == asserted_at == 2026-05-19 (the scrape date). The 'monthly' periodicity the profiler infers from effective_date is just CIA signing dates, not a refresh cadence.
- This is OIG Corporate Integrity Agreement / fraud-enforcement data, NOT a price/rate table — settlement_amount_usd is a one-time fraud-settlement penalty, not a healthcare cost or drug price. It belongs in the drug substrate because the headline CIAs are drug/pharmacy fraud (AmerisourceBergen, Novartis, Mylan, Rite Aid). Join to drug/provider entities by NAME ONLY — there is no NPI/NDC/EIN key, and drug_source_version_id is null for every row.
- lineage columns source_id, source_url, sha256_content_hash, s3_version_id, bronze_object_key, parser_artifact_hash, vintage_tag, cms_vintage_sequence, parse_revision are all SINGLE-VALUED on the current snapshot (one scraped corpus file -> all 332 rows), so none of them is a usable grain/key; only entity_slug (or detail_url) distinguishes rows.

| column | type | meaning |
|---|---|---|
| entity_slug | string | URL-safe slug OIG uses in the entity's detail-page path (e.g. 'recovery-center-of-usa-llc'). The clean, stable per-entity identifier and the GRAIN KEY on is_current=true (332 distinct = row count). |
| entity_name | string | Full legal name(s) of the entity as published by OIG. CAUTION: for 33 of 332 rows this is a long semicolon/comma-delimited concatenation of ALL co-signing legal entities under one CIA (e.g. the Saber Healthcare row lists 11 LLCs). It is the raw OIG string, not a normalized single entity. |
| detail_url | string | Full URL to that entity's OIG CIA detail page. Unique per row on the current snapshot (1:1 with entity_slug), so also a valid key. |
| location_city | string | City of the entity's principal location as listed by OIG. Non-null on all current rows. |
| location_state | string | 2-letter U.S. state of the entity. NULL for 2 of 332 rows. Concentrated in FL (48), CA (45), PA (23), NY (21), TX (18) — classic healthcare-fraud-enforcement geography. |
| settlement_amount_usd | double | Dollar amount of the associated civil/False-Claims settlement that triggered the CIA, in USD (double). Range $31,818 to $625,000,000, median ~$5.5M. NULL for 12 of 332 rows — a meaningful null: OIG did not publish a settlement figure for that CIA (do not treat NULL as $0). |
| effective_date | date | Date the CIA took effect (CIA signing/effective date). Spans 2016-10-13 to 2026-05-04. IDENTICAL to effective_period_start on every current row (the two columns are redundant). |
| observed_period | date | Date this row was observed/scraped from the OIG site. Constant 2026-05-19 across all current rows (the snapshot date). Equal to asserted_at. |
| asserted_at | date | Lineage timestamp = when the fact was asserted into the table. Constant 2026-05-19 on current rows; equals observed_period here. Provenance metadata, not a business date. |
| effective_period_start | date | SCD-style validity start for the row; equals effective_date on every current row (0 mismatches). Redundant with effective_date. |
| effective_period_end | date | SCD-style validity end. ALWAYS the open-ended sentinel 2099-12-31 on the current snapshot — meaning the CIA/row is treated as currently active/open. Carries no real per-row information here; do not use it as a CIA-end/termination date. |
| cms_vintage_sequence | int | Monotonic vintage-sequence integer from the standard drug_silver lineage scaffold. Constant 1 for all current rows (single vintage). Plumbing, not analytic. |
| parse_revision | int | Parser revision number for this load. Constant 1 on current rows. Lineage metadata. |
| parser_artifact_hash | string | SHA-256 of the parser code/artifact that produced the row. Constant across the current snapshot (one parser run). Differs between the 2026-05-16 and 2026-05-19 snapshots. Provenance metadata. |
| source_url | string | The OIG index/browse page that was scraped (https://oig.hhs.gov/.../browse-cias/). Constant for all rows — this is the LIST page, distinct from per-entity detail_url. |
| sha256_content_hash | string | SHA-256 of the bronze source corpus file. Constant (one file) on the current snapshot. NOTE: in the dirty 2026-05-16 snapshot a single slug carries 3 different content hashes — the artifact of that snapshot's non-dedup; on current it is clean/single. |
| source_id | string | Logical source identifier, constant 'hhs_oig_cia' for the whole table. Use to recognize this source in the catalog. |
| is_current | boolean | Snapshot flag. TRUE = the live 332-row 2026-05-19 snapshot; FALSE = the superseded/dirty 372-row 2026-05-16 snapshot. ALWAYS filter is_current=true for analysis. |
| bronze_object_key | string | S3 key of the bronze corpus .txt the rows were parsed from. Populated/constant on current rows; NULL on the old 2026-05-16 snapshot rows. Provenance. |
| s3_version_id | string | S3 object version id of that bronze file. Populated/constant on current; NULL on old snapshot. Provenance. |
| vintage_tag | string | Human-readable snapshot label 'hhs_oig_cia_<scrape-date>'. The two values present (hhs_oig_cia_2026-05-16, hhs_oig_cia_2026-05-19) are the snapshot discriminator and the second key component across the full table. |
| drug_source_version_id | string | Foreign-key slot to a drug source-version lineage record. NULL for ALL 332 current rows (and all rows) — an unused/not-populated column for this source; do not rely on it for joins. |

Query it: `query_substrate` with `SELECT ... FROM drug_silver.dim_hhs_oig_cia WHERE ... LIMIT 100`; read `describe_data_source("drug_silver.dim_hhs_oig_cia")` first.
