
Patient Portals and Apps Built for EHR API Limits
Every portal or app session turns into FHIR calls against the EHR, and the busiest hour can reach the vendor's rate limit. Agnotic Technologies builds patient portals and apps to your requirements, with caching, paging and inbox routing designed in.
Last reviewed by the Agnotic Technologies engineering team
How much load does a patient portal put on the EHR?
A patient portal or patient app loads the EHR through FHIR API calls: every session reads resources such as medications, results and appointments, and the busiest hour has to stay inside the EHR vendor's published rate limit. Agnotic Technologies builds portals and apps with caching, paging and throttling that keep that load within the limit.
Which portal and app problems does this solve?
Patient access problems usually show up at the busiest hour, not in testing.
Peak-hour calls reach the rate limit
Traffic bunches into a busy hour, and an EHR that refuses calls at that point leaves patients with errors. The limit can be per minute or per hour and depends on the app's registration.
Repeated reads of unchanged data
Many resources rarely change for a patient, yet a portal without caching reads them again at every session.
Searches that page more than needed
A search that returns two pages is two calls. Small page sizes or extra searches per screen multiply the load.
Token refresh and reconnection
Apps need refresh tokens so patients do not sign in every time, and the refresh calls add to the same API load.
Secure messages swamp care teams
Portal messages land in care team inboxes, and without routing rules one team can be over capacity while another has room.
Test limits differ from production
EHR test environments can have different limits from production, so load that passes testing can fail at go-live.
What do we build into the portal or app?
Agnotic Technologies builds patient portals and patient apps to your requirements, on HL7 FHIR and SMART on FHIR, against the EHRs you connect to.
Rate limit handling
Request queuing, backoff when the EHR refuses calls, and per-user throttles so the busiest hour stays inside the vendor's limit.
Resource caching
A cache for resources that rarely change for a patient, refreshed on a schedule or on events, so repeat sessions do not read them again.
Conditional reads
Reads that send If-None-Match or If-Modified-Since, so unchanged data comes back as 304 Not Modified instead of a full resource.
Paging and search design
Searches tuned with _count and fewer round trips per screen, so one view does not trigger several pages of calls.
SMART on FHIR sign-in and token refresh
EHR and standalone launch, scopes per feature and refresh token handling that lets patients reconnect without signing in again.
Secure messaging and inbox routing
Patient messages routed to the right care team inbox, with pooled inboxes and cover rules when one team is over capacity.
API usage monitoring
Dashboards for calls by resource, peak-hour load against the limit and refused calls, per EHR connection and environment.
How do you estimate peak-hour calls?
Peak-hour load follows from portal use in five steps, using figures from your own analytics and logs.
Monthly calls are sessions times FHIR calls per session, summed across the resources the app reads.
Calls that reach the EHR are monthly calls minus the share the app serves from its own cache.
Average calls per day are calls that reach the EHR divided by the days the portal is used each month.
Peak-hour calls are the daily average times the busiest hour's share of a day's traffic.
Compare peak calls per minute with a per-minute limit, or peak-hour calls with a per-hour limit, using the EHR vendor's published limit for your app.
Which design decisions follow from the load?
Each part of the load maps to a design decision in the portal or app.
Rate limit handling
Peak calls against the limit decide whether the app needs request queuing, backoff when the EHR refuses calls and a per-user throttle.
Caching
Calls by resource show which resources to cache first. Data that rarely changes for a patient is the first candidate.
Paging
Searches with several pages show whether a larger page size with _count, or fewer searches per session, would cut calls.
Conditional reads
The cached share depends on conditional reads, so unchanged data comes back as 304 Not Modified instead of a full resource.
Token refresh
Certified EHRs issue long-lived refresh tokens to apps that can secure them, so plan token refresh calls in the same load.
Inbox routing
Secure messages per inbox per working day set routing rules, pooled inboxes and cover when one care team is over capacity.
Which traffic needs its own sizing?
Appointment reminders depend on appointments, not on portal use, so they are sized from the clinic's schedule, as our patient scheduling capacity page explains. What a push or SMS notification may show, and the consent behind it, is covered on our patient engagement software page.
- Bulk data exports, background sync jobs and write calls such as booking or form submission.
- Limits per patient, per endpoint or per second. Check short bursts separately from the hourly load.
- Login and identity provider load, and the portal's own database.
- Differences between EHR environments, since test limits can differ from production limits.
Which standards shape patient portal API load?
Short facts we design patient portals and apps around, each linked to its primary source.
ONC certification criterion 170.315(g)(10) requires certified EHRs to offer a standardized API for patient and population services based on HL7 FHIR.
Source: 45 CFR 170.315 (eCFR)ONC criterion 170.315(g)(10) requires the EHR's authorization server to issue refresh tokens valid for at least three months to confidential apps and to native apps that can secure them, so a patient app can reconnect without signing in again.
Source: 45 CFR 170.315(g)(10) (eCFR)In FHIR R4 search, the _count parameter tells the server how many resources to return in a single page, and servers shall not return more resources than requested.
Source: HL7 FHIR R4 SearchFHIR R4 lets a client send If-None-Match or If-Modified-Since on a read, and the server can answer 304 Not Modified when the content is unchanged.
Source: HL7 FHIR R4 RESTful API
Trusted by global innovators
























Which standards does Agnotic build healthcare software against?
HIPAA
Health Insurance Portability and Accountability Act
Protect PHI with privacy-first architecture, encrypted storage and transmission, strict access controls, and traceable audit logs.
GDPR
General Data Protection Regulation
Implement lawful consent flows, data minimization, retention controls, and secure processing for sensitive health data.
FHIR
Fast Healthcare Interoperability Resources
Enable standardized health data exchange across apps, care teams, and systems through standards-based FHIR APIs.
HL7
Health Level Seven International
Support enterprise-grade interoperability with HL7-based integrations for records, events, and clinical messaging workflows.
HITRUST
Health Information Trust Alliance
Align security programs to healthcare-specific control and risk management practices trusted by providers and ecosystem partners.
HITECH
Health Information Technology for Economic and Clinical Health Act
Design with breach notification readiness, digital record safeguards, and operational controls that support regulated care programs.
SaMD
FDA Software as a Medical Device
Plan software quality, traceability, and documentation pathways for products that may require SaMD review and submission.
MDR (EU)
Medical Device Regulation (European Union)
Prepare EU market-ready processes for risk classification, evidence tracking, and lifecycle governance under MDR expectations.
SAMHSA
Substance Abuse and Mental Health Services Administration
Apply confidentiality controls and consent-aware sharing models for behavioral and mental health data experiences.
Where should you go next?
- Patient portal developmentPortals built on the FHIR Patient Access API and SMART on FHIR.
- Patient engagement softwareReminders, notifications and consent per channel.
- SMART on FHIR app developmentEHR launch, scopes and token handling.
- Epic FHIR capabilitiesEpic's FHIR APIs, scopes and bulk data.
- FHIR integration servicesFHIR R4 APIs, search and paging in production.
- Patient scheduling capacitySlot templates, waitlists and reminder volume per week.