If you have ever wondered how CartoChrome turns millions of data points into a single 0-100 Healthcare Access Score, the answer starts with a method called E2SFCA -- the Enhanced Two-Step Floating Catchment Area. Developed by Wei Luo and Fahui Wang in 2003 and refined by Luo and Yi Qi in 2009, E2SFCA has become the most widely cited method for measuring spatial access to healthcare in the academic literature. CartoChrome brings it out of the research lab and into a consumer product for the first time.
The Intuition
Imagine you live in a small town with one family doctor who serves 2,000 patients. Your neighbor lives in a suburb with 50 doctors serving 80,000 people. Who has better access to primary care?
Simple provider counts would say the suburb is better -- 50 doctors versus 1. But when you account for population demand, the ratios tell a different story: the small-town doctor serves 1:2,000, while each suburban doctor serves 1:1,600. The difference is smaller than the raw count suggests, and other factors (travel distance, wait times, insurance acceptance) might tip the balance either way.
E2SFCA formalizes this intuition into a rigorous mathematical framework that accounts for both the supply of healthcare providers and the demand from the population they serve, weighted by the distance between them.
Step 1: Compute Provider-to-Population Ratios
For every healthcare provider (or facility) location *j*, the algorithm defines a catchment area -- the maximum distance within which patients would reasonably travel to reach that provider. Then it sums the population of all ZIP codes that fall within that catchment, applying a **distance-decay function** that gives more weight to nearby populations and less weight to distant ones.
The formula for the supply-to-demand ratio at provider *j* is:
**R_j = S_j / SUM(P_k * f(d_kj))** for all ZIP codes *k* within the catchment
Where: - **S_j** is the supply capacity of provider *j* (e.g., number of physicians at that location) - **P_k** is the population of ZIP code *k* - **f(d_kj)** is the distance-decay function applied to the distance between ZIP code *k* and provider *j* - The sum runs over all ZIP codes within the catchment radius
