Provenance

Dataset ID
cdc-sdoh
Entity Type
county
Role
enrichment
Source
CDC
Vintage
2023 Release
Entity Count
3,144
Last ETL Run
2026-04-13

Overview

The CDC Social Determinants of Health (SDOH) dataset compiles county-level indicators drawn from the American Community Survey (ACS), Census Bureau, USDA, and other federal sources. It is published by the Centers for Disease Control and Prevention as part of the Agency for Healthcare Research and Quality (AHRQ) SDOH Database, accessible via data.cdc.gov (Socrata resource i6u4-y3g4). The indicator selection follows the CDC's Healthy People 2030 framework, covering five domains: economic stability, education and connectivity, healthcare access, neighborhood and built environment, and social and community context. Most measures use ACS 5-year estimates (currently 2017-2021), which smooth annual volatility but introduce a multi-year reporting lag.

CareGraph extracts approximately 10 indicators from this dataset, organized into three display domains: Economic Stability (poverty rate, median household income, unemployment rate), Education & Connectivity (no high school diploma, broadband access, no internet access), and Housing & Demographics (crowded housing, single-parent households, age 65+). These measures contextualize health outcome data on county pages by quantifying the socioeconomic environment in which care is delivered and received.

Join Strategy

Each row in the source CSV carries a LocationID field containing the county FIPS code. During ETL, _find_column() matches this field from a candidate list (LocationID, locationid, CountyFIPS, FIPS, Location ID, location_id) to handle column name variation across data vintages. The raw FIPS value is passed through normalize_fips(), which strips non-digit characters and left-pads to a 5-digit zero-padded string (2-digit state FIPS + 3-digit county FIPS). Rows that do not yield a valid 5-digit FIPS after normalization are discarded.

The source data has one row per measure per county. The ETL classifies each row by matching MeasureID and Short_Question_Text against a pattern list (e.g., "poverty" or "below 150" maps to the POVERTY key), groups rows by FIPS, and pivots the matched measures into a dictionary stored under data.sdoh in the county JSON manifest. Each measure entry contains value (percentage or dollar amount, rounded to 2 decimal places), label, domain, and optionally moe (margin of error). The join is a left join from the county entity manifest: county pages at /county/{FIPS} without a matching SDOH record display no SDOH section rather than being omitted.

Known Limitations

Data Quality Notes

---

← Back to Methodology Hub · Report an error