Why Does NexHealth Return No Available Slots When the EHR Calendar Is Open?
An open EHR calendar does not automatically mean NexHealth can return online-bookable times. NexHealth documents a narrower calculation: GET /available_slots starts with configured working hours, evaluates the requested provider, location, date range, and appointment type, then removes existing appointments and calendar unavailabilities. If the first boundary is empty or the request filters out every matching record, the response can contain no slots while staff still see unused time in the EHR.
The EHR view answers whether time appears unused in the source schedule. NexHealth answers whether that time meets the integration’s booking rules. Confusing the two can hide a mismatch in working hours, appointment-type assignment, operatory scope, or request parameters.
What does an empty NexHealth availability response mean?
An empty slot list means the request produced no bookable time under the configuration and filters NexHealth evaluated. It does not, by itself, prove the EHR is full, the provider is off, synchronization failed, or the endpoint is unavailable. NexHealth’s Scheduling Configuration Guide even shows a successful HTTP 200 response with an empty slots array when active availability is missing.
The documented calculation has three main inputs: working hours define candidate time, calendar unavailabilities remove blocked time, and NexHealth appointment types determine which service can use a working-hour record and its duration. The request window and identifiers decide which records enter that calculation. A clean diagnosis checks each layer instead of using the EHR’s visual calendar as the only evidence.
Operational inference: save the response, request parameters, timestamp, API version, and relevant record identifiers before editing anything. The record will show whether a later result followed a configuration change or a different request. Keep patient-identifying screenshots and appointment details out of the support ticket.
Why can the EHR look open when working hours are missing?
NexHealth states that working hours are required before GET /available_slots can show real-time availability. Those records define when online booking is allowed. When none exist for the requested provider and location, NexHealth returns no availability even if the EHR contains a visibly open part of the day. Unused EHR space is not a substitute for a configured online-booking boundary.
Working hours may be manual or synced. Manual records are managed through NexHealth. Synced records come from supported EHR systems and are not edited in NexHealth. The source field identifies the path. NexHealth instructs users to update synced hours in the EHR.
Operational inference: query working hours for the same provider and location used in the empty slot request. Confirm that at least one active record covers the requested date and local time. Then compare its source, days, specific date, begin time, end time, provider, location, and operatory. Do not create manual hours merely to make a test pass if synced hours are supposed to be authoritative.
Mixing manual and synced working hours is possible, but NexHealth warns that overlapping records can affect returned slots. Choose the source deliberately. A practice comparing owned booking with a marketplace should also keep this technical boundary separate from the broader question of whether it needs marketplace demand or owned scheduling.
How does appointment type filtering remove otherwise open time?
An appointment_type_id does more than name the visit. NexHealth says it sets slot length from the appointment type’s minutes and restricts the calculation to working-hour records associated with that type. If no matching working hour has that type assigned, the endpoint correctly returns no slots, even when other appointment types or unfiltered requests show availability.
Compare two requests that differ only by the appointment-type filter. If the provider request returns time and the filtered request does not, inspect the type’s working-hour assignment. Confirm that the application sent the intended NexHealth type ID. A similar EHR label does not prove the records are the same.
NexHealth also distinguishes its appointment types from EHR appointment descriptors. The former controls scheduling categories, duration, and working-hour eligibility. The latter describes how a booked appointment is written into the EHR. Do not change descriptor mapping to solve an empty slot search unless separate evidence shows a write-back problem.
Keep the service selection captured as operational evidence without copying treatment details into marketing tools. The same separation used to preserve booking source after a reschedule helps here: scheduling configuration, booking lineage, and acquisition attribution should remain distinct records.
Which provider, location, operatory, and date filters should be checked?
The /available_slots request requires subdomain, lids[], start_date, days, and Nex-Api-Version, plus at least one pids[] or appointment_type_id. NexHealth recommends requesting no more than 14 days for better performance. A technically valid request can still search the wrong location, provider, date window, or working-hour source and therefore return no relevant slots.
Rebuild one minimal request from verified identifiers. Include the required subdomain, location, start date, day count, API version, and provider or appointment type. Then add working-hour source, label, and operatory filters one at a time. This sequence is an operational diagnostic method, not a NexHealth guarantee, but it makes the filter that removes availability visible.
Operatory mapping needs special care. NexHealth says operatory_id is required when a location uses map_by_operatory = true for working-hour creation or updates. Its configuration guide also says an availability query without an operatory can return only the first available operatory. That may produce an incomplete view rather than a universal no-availability conclusion.
Record scheduling source separately from marketing source while testing these identifiers. The guide to appointment source versus marketing source explains why a request parameter should not overwrite the campaign or channel that originally influenced a booking.
How do appointments and calendar unavailabilities affect the result?
After NexHealth identifies candidate time inside working hours, it subtracts booked appointments and calendar unavailabilities. The configuration guide describes an unavailable calendar record with unavailable: true; any overlapping window is excluded from /available_slots. A provider can therefore have valid working hours and still have no remaining bookable interval for the requested duration.
Compare the exact time window, not only the number of visible entries. A short opening may be too small for the appointment type’s duration. A block may overlap part of a candidate slot. A lunch gap may be represented as missing working hours rather than an explicit unavailable record. These documented models can produce similar screens but require different configuration checks.
Operational inference: use a synthetic test window approved by the practice, with no patient-identifying data. Confirm the provider, local date, duration, and expected operatory. Then inspect the working hour and any overlapping appointment or unavailability record. Do not remove a real appointment or administrative block simply to force availability.
How should a team run a controlled availability test?
A controlled test should change one variable at a time and keep the request evidence. Start with a narrow date range, verified location, and verified provider. Confirm working hours first. Then compare an unfiltered provider request with the intended appointment type, operatory, and working-hour source filters. Stop when one added filter changes the result from available to empty.
- Capture the empty response and exact request without credentials.
- Retrieve matching working-hour records and confirm active coverage in local time.
- Check appointment-type assignment and duration against those records.
- Check operatory scope and any working-hour source or label filter.
- Inspect overlapping appointments and calendar unavailabilities.
- Repeat the original request and record whether the same slot appears.
Success means the API returns the expected slot for the intended configuration, not merely that any slot appears somewhere. Keep reminders out of this test unless the booking itself succeeds. If multiple systems may message the same appointment later, use the separate process to assign one reminder owner per message purpose.
What evidence should be sent to support or an integration team?
A useful escalation packet contains the request path, sanitized parameters, response, API version, capture time, relevant IDs, and matching working-hour records. Include whether hours are manual or synced and identify the EHR product. Omit names, contact details, treatment descriptions, and other patient data.
State the expected result precisely: for example, one provider should have one bookable interval at a stated local time for one appointment type and operatory. Attach the observed result and the last known successful test if available. Do not claim a synchronization defect until the records and request prove that the documented inputs all match.
If the slot later becomes an appointment, preserve the original operational source and subsequent action history. That prevents a technical retest or reschedule from being counted as new demand and keeps the troubleshooting record useful without turning it into a patient chart.
Frequently asked questions
Does an open EHR calendar guarantee NexHealth availability?
No. NexHealth evaluates only configured working hours and then applies the request’s provider, location, appointment type, operatory, and date scope before subtracting appointments and unavailabilities. The EHR can look open while no eligible NexHealth working-hour record covers that time.
Can a successful HTTP 200 response still contain no slots?
Yes. NexHealth’s configuration guide shows a successful response with an empty slots array when active availability is missing. Treat transport success and scheduling eligibility as separate checks. Save the response description and next_available_date with the sanitized request.
Why does availability disappear when appointment_type_id is added?
The appointment type narrows the search to working hours associated with that type and supplies the slot duration. If no working-hour record carries that association, NexHealth documents that no slots will return. Verify the NexHealth type ID rather than matching labels by sight.
Should the team create manual working hours to fix an empty response?
Not automatically. First determine whether the location uses manual or synced working hours. NexHealth says synced hours are managed in the EHR, while manual hours are edited through NexHealth. Adding a second source without a clear ownership decision can create overlapping records and misleading results.
References
- NexHealth, Working Hours, reviewed August 16, 2026.
- NexHealth, View available slots, reviewed August 16, 2026.
- NexHealth, Scheduling Configuration Guide, reviewed August 16, 2026.
Related articles
Why Deleting an Azure Log Analytics Table Does Not Delete Healthcare Log Data
Deleting an Azure Log Analytics table does not necessarily delete the healthcare log data stored in it. Azure documents different results…
Which Zocdoc Cancellation and Reschedule Changes Trigger a Patient-Booking Webhook?
Zocdoc’s patient-booking webhooks do not represent every cancellation or reschedule path. In that use case, webhook notifications are sent…
Why a Google Calendar FreeBusy Error Is Not an Open Provider Slot
A Google Calendar FreeBusy error is not an open provider slot. The freeBusy.query response can report errors for an individual calendar or…