Editorial illustration in cutout-collage style depicting a cutout-collage fan-in of many users into a thin FHIR request stream and modest concurrency badge

Why Active Users Are Not the Same as Concurrent Requests

Sizing meetings almost always start with a user count. The vendor asks how many users the FHIR API will serve; the answer becomes the target for the capacity plan; the plan is sized against that number. The trap is that active users and concurrent requests are different quantities, and treating them as interchangeable produces plans that under-size or over-size by an order of magnitude.

Naming the difference is the discipline that gets sizing conversations unstuck. For related walkthroughs, more FHIR implementation patterns collects the surrounding material.

What Active Users Actually Measure

Active users measure how many humans are inside the workflow during a given window. If a hospital has three hundred nurses using the FHIR-backed chart-review app during morning rounds, that is three hundred active users.

Vendors quote user counts because the number is stable and easy to sell against. It is also almost never the right sizing input on its own.

What Concurrent Requests Actually Measure

Concurrent requests measure how many HTTP calls are in flight at any moment. A nurse in chart review does not fire a request continuously. She opens a patient, waits ten seconds while she reads, opens the next patient, and so on. The request stream is bursty and low-utilization per user.

Two hundred active users producing one request every ten seconds average to twenty requests per second. Even at ten times burst, they carry maybe fifty concurrent requests. That is a very different sizing target than two hundred. A pass through the site's concurrency p99 predictor turns realistic assumptions into concurrency projections.

The Multiplier Is Workflow-Specific

Different workflows produce different active-user-to-concurrent-request ratios:

  1. Chart review: 20 to 1 (rare requests, human reading time between them).
  2. Order entry: 5 to 1 (more frequent interactions).
  3. Real-time monitoring dashboards: 2 to 1 (constant polling).
  4. Automated ingestion: 1 to 1 (bots fire requests continuously).

Sizing plans that assume a single ratio across workflows land wrong for at least half of them. The disciplined pattern is to name the ratio per workflow.

The Peak Is What Matters

Averages hide the peaks that break the system. Two hundred active users averaging twenty concurrent requests produce peaks of eighty when a shift change happens or when a critical patient event triggers everyone to open the same chart.

The peak-to-average ratio is typically two to five. Size against the peak, not the average. For the queue-side view of what happens when peaks exceed capacity, queue depth as the leading indicator of trouble covers the shape.

The Chatty Client Multiplier

Client implementations amplify the concurrent-request count. A chatty client fires twenty requests per workflow action; a batched client fires three. Sizing that assumes one request per user action is optimistic.

Estimate the multiplier explicitly per client the deployment serves. For the batch-endpoint version of the same skew, how batch endpoints skew your concurrency estimate covers the shape.

Report Both Numbers Together

The dashboard that shifts sizing conversations shows active users and concurrent requests as two separate metrics. Sizing conversations that only reference user counts miss the multiplier; conversations that only reference RPS miss the workflow context. Both together produce plans that survive.

The Little's Law Connection

Concurrent requests equal RPS times mean latency. A workflow that produces twenty RPS with two-hundred-millisecond latency carries four concurrent requests. The same RPS at two seconds carries forty. For the full framing, predicting concurrency for a FHIR API before you have real users walks through the math.

Naming the split between active users and concurrent requests is the small discipline that keeps the plan from being sized against the wrong quantity.

Cutout-collage diagram of a fan-in from twenty user paper cutouts into a stream of coral in-flight tokens with kraft edges and torn-paper stitched textures on a warm neutral background

Sources