Technical writing

CMS FQHCs and Rural Health Clinics: The Federal Record of the Medicare Safety Net

· 12 min read· AI Analytics
CMSFQHCRural HealthSafety NetFederal Data

In a county with no hospital, one part-time doctor, and a two-hour drive to the nearest specialist, the clinic that keeps people alive is usually one of two federally defined types: a Federally Qualified Health Center or a Rural Health Clinic. They are the load-bearing structures of the American primary-care safety net—the places that take Medicaid and the uninsured, that charge on a sliding scale, that sit where the market has decided not to. CMS keeps the Medicare-side record of who is enrolled to bill as one of these clinics: roughly 16,600 clinic enrollments, one row per enrolled clinic, each keyed to a CMS Certification Number, mapping the supply of the safety net itself.

This article covers what the FQHC and Rural Health Clinic enrollment data is and how it differs from the patient and quality data people usually associate with health centers; the two distinct statutory lineages behind the clinic types—the 1960s community health center movement that produced the FQHC and the Rural Health Clinic Services Act of 1977 that produced the RHC—and why the legal differences matter for the data; the conditions a clinic must meet to qualify, from medically underserved status and the sliding fee scale to the patient-majority governing board and the nurse-practitioner team model; the special, cost-based reimbursement that is the whole point of the designations; the schema and the CMS Certification Number that anchors it; how the file joins to the ownership and provider-enrollment datasets; a Python workflow that pulls the enrollments, tallies FQHCs versus RHCs by state, and maps the safety-net supply against rural population; and the caveats—enrollment is not utilization, the file is a snapshot, and an enrolled clinic is not necessarily an open one—that every analyst must internalize before drawing conclusions.

What the dataset is

CMS enrolls providers before it pays them. Every entity that bills Medicare—a hospital, a nursing home, a physician group, a clinic—must first complete the Provider Enrollment, Chain, and Ownership System (PECOS) process, supplying its legal identity, its location, its ownership, and its provider type, and receiving in return the identifiers that let it submit claims. The FQHC and Rural Health Clinic enrollment files are the public extract of that record for these two clinic types: not who visited the clinic, not how the clinic scored on quality, but the administrative fact of which clinics are enrolled to bill Medicare as an FQHC or a Rural Health Clinic, where they sit, and under what enrollment status.

That makes this a supply-side dataset. It answers the question “where is the safety net?” rather than “how busy is it?” or “how good is it?” In our database it is stored as the table cms_fqhc_rhc, with the grain of one row per enrolled clinic and roughly 16,600 rows spanning both clinic types. Because enrollment is the front door to billing, the file is also the cleanest available census of the formal Medicare safety net: a clinic that is not in it is, by definition, not billing Medicare under one of these special designations. The columns capture the clinic's identity, its location, its type, and its enrollment status:

ccn                  -- CMS Certification Number (the stable clinic key)
enrollment_id        -- PECOS enrollment identifier for the clinic
provider_type        -- FQHC or Rural Health Clinic
organization_name    -- the clinic's legal / doing-business-as name
address, city        -- physical street location of the clinic
state                -- two-letter state / territory code
zip_code             -- ZIP of the clinic location
enrollment_state     -- enrollment status (e.g. approved / active)
incorporation_date   -- date the organization was incorporated
proprietary_nonprofit -- ownership character flag where reported
multiple_npi_flag    -- whether the clinic maps to more than one NPI

The ccn is the load-bearing column. The CMS Certification Number—historically the Medicare Provider Number—is the persistent identifier CMS assigns to a certified institutional provider, and for these clinics it is the key that ties the enrollment record to the rest of the CMS ecosystem. The enrollment_id is the PECOS-side identifier that joins the clinic to the provider-enrollment and ownership files, where the same entity's owners and managing parties are disclosed. The provider_type field is the most consequential single value in the table: it divides the universe into the two clinic models—FQHC and Rural Health Clinic—whose legal definitions, eligibility conditions, and policy histories are genuinely different, and which an analyst must keep separate. The location columns (state, zip_code, address) are what make the file a map; joined to population and geography, they convert an administrative list into a picture of where the safety net is thick and where it is thin.

Two clinic types, two statutory lineages

The single most important thing to understand about this dataset is that it stacks two clinic types that grew out of two different statutes and two different policy impulses, and that treating them as interchangeable will mislead almost any analysis. They share a mission—primary care in places other providers avoid—and a financial mechanism—cost-based Medicare reimbursement—but they are not the same thing.

The Federally Qualified Health Center descends from the community health center movement of the 1960s. The first neighborhood health centers were funded as part of the War on Poverty, built on the conviction that medical care for poor communities had to be embedded in those communities and governed by them. That model was later codified in Section 330 of the Public Health Service Act, the grant authority administered by the Health Resources and Services Administration (HRSA). An FQHC is, at its core, a community-based health center that serves a medically underserved area or population, offers a comprehensive set of primary-care services on a sliding fee scale regardless of ability to pay, and is governed by a board on which a majority of members are patients of the center. The FQHC Medicare benefit, created by the Omnibus Budget Reconciliation Act of 1990, extended enhanced cost-based reimbursement to these centers so that caring for Medicare patients would not be a money-loser that undercut the mission. The term “FQHC” therefore covers both the HRSA Section 330 grantees and the “look-alike” centers that meet all the program requirements but do not receive the grant.

The Rural Health Clinic comes from a narrower, more specifically rural concern and a different statute: the Rural Health Clinic Services Act of 1977. Congress passed it to address a particular problem—non-urbanized areas with persistent shortages of physicians—and its solution was to make it financially viable to run a clinic staffed substantially by nurse practitioners and physician assistants in those areas, at a time when Medicare and Medicaid reimbursement for mid-level practitioners was thin or nonexistent. An RHC must be located in a non-urbanized area that is also a designated shortage area—a Health Professional Shortage Area, a Medically Underserved Area, or a Governor-designated shortage area—and it must use a care-team model in which a nurse practitioner, physician assistant, or certified nurse-midwife is available and furnishing services. In exchange it receives cost-based reimbursement. Crucially, the RHC designation does not carry the FQHC's defining conditions: an RHC need not be governed by a patient-majority board, need not offer the FQHC's full breadth of enabling services, and can be either independent or provider-based (owned by a hospital). RHCs are therefore a much more heterogeneous group—some are small independent practices, many are hospital-owned outpatient clinics—which is exactly why the provider_type split, and the ownership join, matter so much.

Eligibility conditions: underserved status, sliding scale, the board, the team

What both clinic types share is a tie to shortage and underservice, and that tie is the reason the geography in this file is meaningful rather than arbitrary. The federal designations that gate eligibility—the Medically Underserved Area or Population (MUA/MUP)and the Health Professional Shortage Area (HPSA)— are themselves data products, scoring geographies on provider-to-population ratios, poverty, infant mortality, and the share of elderly residents. A clinic does not become an FQHC or an RHC in the abstract; it becomes one because it sits in, or serves, a place the federal government has formally judged to be short of care. That is why mapping the enrollment file against population is not a generic exercise: every clinic in it is, in principle, a marker planted in a place of measured need.

The FQHC conditions are the more demanding, and they encode the movement's founding commitments. The sliding fee scale requires the center to adjust charges according to a patient's ability to pay and to serve patients regardless of whether they can pay at all—the uninsured included—which is the mechanism by which an FQHC functions as a genuine safety net rather than a clinic that merely happens to sit in a poor area. The patient-majority governing board requires that a majority of the center's board be active patients, broadly representative of the community served, giving the people who use the center formal control over it—a structural feature found almost nowhere else in American healthcare. FQHCs are also expected to offer a comprehensive set of services including enabling services (case management, translation, transportation, outreach) that address the non-medical barriers that keep poor and rural patients from care. The RHC conditions, by contrast, center on the care-team requirement—the mandated availability of a nurse practitioner, physician assistant, or certified nurse-midwife—and on the location-and-shortage rules, without the governance or full-service obligations. The practical upshot for the data is that an FQHC row and an RHC row, though they sit in the same table, describe institutions with very different obligations, capabilities, and community accountability.

Cost-based reimbursement: the point of the designation

The reason a clinic seeks these designations, and the reason CMS keeps such a careful enrollment record of them, is money—specifically, a payment method that differs from how Medicare pays an ordinary physician office. A standard practice is paid per service off the physician fee schedule. FQHCs and RHCs are instead paid on a cost-based footing designed to cover the actual cost of furnishing primary care in a low-resource setting, on the logic that fee-schedule payment alone would not sustain a clinic whose patient mix is poor, complex, and heavily non-paying.

For Rural Health Clinics, Medicare pays an all-inclusive rate (AIR) per qualifying visit—a single bundled per-visit payment, derived from the clinic's reported costs, that covers the professional services furnished during the encounter, historically subject to a per-visit payment limit that has been a recurring point of policy contention (independent RHCs and small hospital-based RHCs have at times faced a cap that provider-based RHCs of larger hospitals did not, a disparity later legislation moved to narrow). For FQHCs, Medicare moved to a prospective payment system (PPS) that pays a per-visit encounter rate, with adjustments, in place of the older purely cost-reconciled method—still far more generous than fee-schedule payment for the same primary-care visit. The details of AIR and PPS are beyond the scope of an enrollment file, but the principle is essential context: the FQHC and RHC labels in provider_type are not cosmetic. They are claims on a distinct, enhanced Medicare payment stream, which is why the designation is worth pursuing, why CMS scrutinizes enrollment, and why the enrollment record is a meaningful object to study.

The schema and the CMS Certification Number

The fields above are best understood through the identifiers that make the file joinable. The CMS Certification Number (CCN) is the spine. For an institutional provider like an FQHC or RHC, the CCN is a structured identifier whose embedded digits historically encode the state and the provider category, so the number itself carries information—the range a clinic's CCN falls into reflects its type and certification path. Because the CCN is the same identifier CMS uses on cost reports, on certification and survey records, and on the Provider of Services file, it is the key that lets an analyst follow a clinic from this enrollment snapshot into the deeper operational and financial records.

The enrollment ID is the second key, and it points the other direction—toward PECOS. It is the identifier under which the clinic's enrollment application, its reassignments, and its disclosed ownership live, and it is the join key to the provider-enrollment and all-owners files. The enrollment status field records where the clinic stands in that lifecycle—approved and active, versus deactivated or revoked—which is the difference between a clinic that can currently bill and one that has dropped out, and therefore the difference between counting paper enrollments and counting the operating safety net. The organization name and address fields supply the human-readable identity and the geography, and the proprietary-versus-nonprofit character, where reported, hints at the ownership structure that the ownership files spell out in full. Understanding which fields are stable keys (CCN, enrollment ID), which are descriptive (name, type, ownership character), and which are status snapshots (enrollment status) is the prerequisite for using the file correctly: the keys are for joining, the descriptors are for grouping, and the status is for filtering down to the safety net that is actually live.

Joining to ownership and provider-enrollment data

Like the rest of the CMS provider universe, the FQHC and RHC enrollment file is most valuable not in isolation but as one node in a connected graph, and the CCN and enrollment ID are what wire it in. Three joins matter most.

The first is to the provider-enrollment record. The same enrollment ID that appears here keys the broader Medicare enrollment files, where a clinic's reassignments and the individual clinicians who bill under it can be related. Joining the clinic enrollment to the individual-clinician record—through the National Provider Identifiers that reassign to the clinic's enrollment—lets an analyst ask who actually staffs the safety net: how many clinicians a given FQHC or RHC bills through, how heavily it leans on nurse practitioners and physician assistants (the RHC team model made visible in data), and whether a clinic in a deep-shortage county is staffed by one part-time provider or a full team.

The second join is to the ownership files. CMS's all-owners disclosures, keyed by the same enrollment ID, expose who owns and controls an enrolled provider. For Rural Health Clinics in particular this is illuminating, because RHCs are heterogeneous in ownership—some are independent, many are owned by hospitals or larger systems, and a growing number sit inside consolidated outpatient networks. Joining the RHC enrollment to the ownership record reveals whether the rural clinic on the map is a standalone community institution or an outpatient arm of a distant system, and whether the for-profit and consolidation pressures documented in the rest of post-acute care reach into the rural safety net. The same join, applied to FQHCs, can confirm the nonprofit, community-governed character the program requires.

The third join is to geography and need. The clinic's state and ZIP, joined to census population and to the federal shortage-area designations, place each enrollment in its demographic context—rural versus urban, high-poverty versus not, deep-shortage versus marginal. This is the join that turns the file from a list into the safety-net supply map: clinics per capita, clinics per rural resident, clinics per shortage-area, and the gaps where designated need exists but no enrolled clinic sits. It is also the join that supports the policy questions the data exists to answer— whether the safety net has expanded into the places it was built for, or whether the very shortage that justifies the designation has left some counties without any clinic at all.

Analytical uses

A national, geocoded, type-resolved census of the formal Medicare safety net supports a distinctive set of analyses that no patient-side or quality dataset can.

Safety-net supply by state and county is the most immediate use. Because each enrollment carries a clinic type and a location, an analyst can count FQHCs and RHCs separately and together, normalize by population—and especially by rural population—and produce a per-capita map of the safety net. The separation matters: a state may be thick with hospital-owned RHCs and thin on community-governed FQHCs, or the reverse, and the two patterns mean very different things for the kind of care available. Layering the federal shortage-area designations on top reveals the coverage gaps—the designated medically underserved areas with no enrolled clinic—which are exactly the places an access-policy program should target next.

The rural-clinic ownership picture exploits the ownership join to ask whether the rural safety net is consolidating. Counting RHC enrollments that join to hospital or system owners, and tracking how that share moves over time, measures the drift from independent rural practice toward system-owned outpatient clinics—a structural shift with real consequences for where decisions about rural care get made. Safety-net staffing uses the clinician join to characterize how the team model actually operates: the mix of physicians, nurse practitioners, and physician assistants billing through each clinic, and how that mix varies between FQHCs and RHCs and between deep-shortage and marginal areas.

Finally, tracking the safety net over time uses successive snapshots of the enrollment file to watch the network grow and contract: new enrollments where the safety net is expanding, deactivations and revocations where clinics are closing—the rural closures that, like rural hospital closures, leave communities stranded. Because enrollment is the front door to billing, a wave of deactivations in a region is an early, structural signal of safety-net retreat, visible here before it shows up as a measured decline in visits anywhere else.

Python workflow: clinics by state against rural population

The script below pulls the FQHC and Rural Health Clinic enrollment files from CMS's data.cms.gov API, stacks them into a single clinic table, and computes two of the core metrics: the count of FQHCs versus RHCs by state, and the safety-net supply mapped against population. No API key is required for the CMS data. Because the CMS datastore re-versions its files and the column names drift between releases, the script discovers the working state and CCN column names at runtime rather than hard-coding them, and resolves the dataset identifiers from the catalog. The population join uses the Census American Community Survey API; for a true rural-population denominator an analyst should swap in the Census urban/rural table, which the script flags as the natural refinement.

import requests, pandas as pd
from collections import defaultdict

# CMS Provider Data / enrollment files on data.cms.gov -- no API key
# required for public data. CMS publishes the Medicare enrollment record
# for institutional providers, including Federally Qualified Health
# Centers (FQHCs) and Rural Health Clinics (RHCs). Each provider type is
# a separate dataset keyed by the same UUID grammar; resolve the current
# UUID from the catalog page if a request 404s -- CMS re-versions files.
BASE = "https://data.cms.gov/data-api/v1/dataset"

# Replace with the current dataset UUIDs from data.cms.gov. The FQHC and
# RHC enrollment files share a column shape, so one parser serves both.
DATASETS = {
    "FQHC": "REPLACE_WITH_CURRENT_FQHC_ENROLLMENT_UUID",
    "RHC": "REPLACE_WITH_CURRENT_RHC_ENROLLMENT_UUID",
}


def fetch_all(uuid, page_size=5000):
    # Page through the datastore endpoint until a short page ends it.
    rows, offset = [], 0
    while True:
        params = {"size": page_size, "offset": offset}
        r = requests.get(f"{BASE}/{uuid}/data", params=params, timeout=120)
        r.raise_for_status()
        page = r.json()
        if not page:
            break
        rows.extend(page)
        if len(page) < page_size:
            break
        offset += page_size
    return pd.DataFrame(rows)


def _find(cols, *needles):
    # First column whose name contains all needles (case-insensitive).
    for c in cols:
        u = c.upper()
        if all(n.upper() in u for n in needles):
            return c
    return None


def load(kind):
    df = fetch_all(DATASETS[kind])
    df.columns = [c.strip() for c in df.columns]
    df["clinic_type"] = kind
    return df


# --- Pull both clinic types and stack them -----------------------------
frames = [load(k) for k in DATASETS]
clinics = pd.concat(frames, ignore_index=True)
state_col = _find(clinics.columns, "STATE") or _find(clinics.columns, "ST")
ccn_col = _find(clinics.columns, "CCN") or _find(clinics.columns, "CERT", "NUM")

# --- Metric 1: FQHC vs RHC counts by state -----------------------------
by_state = (clinics.groupby([state_col, "clinic_type"])[ccn_col]
            .nunique().unstack(fill_value=0))
by_state["total"] = by_state.sum(axis=1)
print(by_state.sort_values("total", ascending=False).to_string())

# --- Metric 2: safety-net supply vs rural population --------------------
# Census ACS rural-population estimates by state (key optional). Join the
# clinic counts to rural population to get clinics per 100k rural people,
# the headline safety-net access metric.
ACS = "https://api.census.gov/data/2022/acs/acs5"
resp = requests.get(ACS, params={"get": "NAME,B01003_001E", "for": "state:*"},
                    timeout=60).json()
pop = pd.DataFrame(resp[1:], columns=resp[0])
pop["pop"] = pop["B01003_001E"].astype(float)
# (For true rural population, swap in the Census urban/rural table; total
# population is used here as a transparent stand-in.)
print(f"\nLoaded population for {len(pop):,} states/territories")
print(f"Total FQHC + RHC enrollments: {clinics[ccn_col].nunique():,}")

Two practical notes apply. First, the population denominator in the script is deliberately a transparent stand-in: total state population is easy to pull and easy to reason about, but the question the safety net actually poses—clinics per rural resident—requires the Census urban/rural classification rather than total population, because a state can be populous overall and still have vast under-served rural reaches. The script leaves that substitution as the obvious next step, and any serious access analysis should also overlay the federal Medically Underserved Area and Health Professional Shortage Area designations so that supply is measured against formally established need rather than raw headcount. Second, the FQHC-versus-RHC split must be preserved through every aggregation: collapsing the two types into a single “safety-net clinic” count throws away the most important distinction in the file, conflating community-governed health centers with hospital-owned rural outpatient clinics that answer to a very different set of rules.

Limitations and analytical caveats

The enrollment file is the cleanest public census of the formal Medicare safety net, but it carries structural limitations that an analyst must internalize before drawing conclusions from it.

Enrollment is not utilization, and it is not quality.The file records that a clinic is enrolled to bill Medicare as an FQHC or RHC—nothing about how many patients it serves, how many visits it furnishes, what it charges, or how well it cares for anyone. A high count of enrolled clinics in a state says the safety net exists there on paper; it says nothing about whether those clinics have capacity, whether they are accepting new patients, or whether the care is good. The patient-side and quality questions live in other CMS datasets—the cost reports, the utilization files, the quality measures—to which this file is the join key, not the answer.

An enrolled clinic is not necessarily an open clinic.Enrollment records have lifecycle lag. A clinic that has closed its doors may still appear as enrolled until its enrollment is formally deactivated or revoked, and a newly opened clinic may not appear until its enrollment is approved. Counting raw enrollments without filtering on active status will overcount the operating safety net at the trailing edge and undercount it at the leading edge. The enrollment-status field is the necessary filter, and even with it the file is best read as a near-current snapshot, not a real-time directory of open clinics.

It is Medicare enrollment, not the whole safety net.The file is the record of clinics enrolled to bill Medicare under these designations. A health center can be a HRSA Section 330 grantee serving an overwhelmingly Medicaid and uninsured population, doing exactly the safety-net work the program was built for, while its Medicare footprint—and therefore its prominence in a Medicare enrollment file—is modest. FQHC look-alikes, the precise boundaries of the HRSA grant universe, and the Medicaid-side picture are governed by HRSA and state data that this Medicare enrollment extract does not fully capture. The file is authoritative for the Medicare-billing safety net specifically; it is one lens on a larger system.

The two clinic types are not comparable units. The most common analytic error with this file is to add FQHCs and RHCs together and treat the sum as a single measure of safety-net capacity. They are not equivalent. An FQHC carries a sliding-fee obligation, a patient-majority board, and a comprehensive-services mandate; an RHC carries a team-model and location requirement and may be a small independent practice or a hospital outpatient arm. Their cost-based payment mechanisms differ, their governance differs, and their roles in a community differ. Any honest analysis keeps the provider_type split visible and resists the temptation to collapse it.

Held with these caveats in mind, the cms_fqhc_rhc table is a uniquely valuable resource: a system-resolved, geocoded, type-distinguished census of the clinics that stand between the country's poorest and most isolated communities and no primary care at all—the supply map of a safety net whose presence, absence, and ownership are written, one enrollment at a time, into the Medicare record.

Related writing

CMS Provider Ownership: The Federal Database Behind Private Equity in Nursing Homes, Home Health, and Hospice — The same enrollment ID that keys these clinic records joins to the all-owners files, where an analyst can ask whether the rural Rural Health Clinic on the map is an independent community institution or an outpatient arm of a consolidated, system- or sponsor-owned network.

CMS Hospital Service Area: The Federal Map of Where Every Hospital's Patients Come From — Where the safety-net clinic file maps primary-care supply, the service-area file maps inpatient patient flow, and together they describe the rural care landscape that thins as you move from the hospital outward to the clinic and beyond.

CMS Doctors and Clinicians: The Federal Database Behind Every Medicare Physician — The clinician file shares the same NPI and enrollment plumbing as these clinic records and is what lets an analyst see who actually staffs the safety net, including the nurse practitioners and physician assistants at the heart of the Rural Health Clinic team model.