Healthcare & Home Health
You built the scheduling platform a home-health agency runs on. At 8:05 a post-discharge referral needs a nurse this morning — and three medication windows across town cannot move to make room.
You may never ring one of those doorbells — but your code decides whether the 9:00 timing window holds. Re-planning credentialed caregivers around fixed timing windows and travel between homes is the code you don’t want to own. Your app flags the referral priority: "p0"; Crisphive re-plans visits against credentials, timing windows, continuity and travel; your app confirms and coordinates. (Scheduling and coordination only — no patient records pass through the solver.)
Try it in your language
Pick a scenario, switch the server SDK. Every snippet is the actual call the API reference generates — with home-health values filled in.
import { Configuration, JobRequestBusinessApi } from "@crisphive/sdk"; const config = new Configuration({ accessToken: "chsk_test_4eC8xQ9mZ2pL7Ka0rT" }); const api = new JobRequestBusinessApi(config); const res = await api.createJobRequest({ jobRequestCreateRequest: { "customer_id": "a1b2c3d4-0000-4a01-8c01-000000000001", "description": "Wound-care visit — routine", "job_dates": [ { "date": "2026-07-24", "periods": [ { "business_view": [], "period": "morning" } ] } ], "job_type_id": "b2c3d4e5-0000-4a02-8c02-000000000002", "priority": "p3", "skill_ids": [ "c3d4e5f6-0000-4a03-8c03-000000000003" ], "sla_deadline": "2026-07-30T17:00:00" }, }); const { error_code, message, data } = res.data;
Switch to Go, Ruby, PHP, Java or .NET — the class names, model types and method casing all follow that SDK’s generated conventions. Swap chsk_test_ for chsk_live_ and the same code runs against production.
▼Three ways this bites
These are the days a home-health scheduler is judged on — each a dropped billable visit, a duplicated drive, or a timing window at risk. Every one maps to a field the API already carries.
The pain ·An urgent referral triggers an hour of phone re-routing; nurses idle between calls and a billable visit is dropped to make room.
Crisphive ·Flag priority: "p0"; the emergency re-plan preview re-plans the day in one call and never moves a hard timing-window sla_deadline.
The pain ·The visit is assigned to a nurse without the credential; it fails and a second nurse is dispatched — a duplicated drive across town.
Crisphive ·The visit’s skill_ids gate the assignment — only caregivers whose credentials cover it are eligible.
The pain ·An unplanned supply pickup adds 25 minutes of drive time and threatens a downstream medication window.
Crisphive ·Model the pharmacy stop in dependencies with real travel time; continuity holds via preferred_technician_id.
▼Reading the re-plan call
The An urgent referral just hit scenario above is the re-plan itself — it previews the moves so nothing is confirmed until you accept it. Its fields map to the story like this:
| Field | What it is |
|---|---|
emergency_job_id | The urgent visit driving the re-plan — the referral that has to be seen this morning. |
technician_id | The caregiver in play for that visit — here, the IV-credentialed one. |
start_at | When the referral lands — 08:05 in the story. |
mode | How hard the solver may push to fit the visit in (here, allow overtime). |
displacement_mode | What may happen to the visits it moves (here, reschedule them rather than drop them). |
The urgency flag from the intro — priority: "p0" — is set when you book or update the visit on POST /job-requests (the Wound care scenario shows a routine p3). The full priority ladder and the allowed values for mode and displacement_mode live in each endpoint’s Full reference.
▼Hard constraints, not suggestions
A scheduler that ignores these isn’t planning — it’s moving a medication window to save a drive. Each one is a first-class field in the API.
| The rule | What the API enforces |
|---|---|
| Timing & medication windows | A medication window is a hard sla_deadline — visits move around it, it does not move. |
| Caregiver credentials | An IV start needs an IV-credentialed RN. Only caregivers whose skill_ids cover the visit get assigned. |
| Continuity of care | Patients know their caregiver. A preferred_technician_id keeps continuity; the solver reaches for a reassignment last. |
| Visit order | Assessment before care; morning meds before mobility. Clinical order is first-class dependencies. |
| Caregiver hours & load | Break rules and maximum visit loads are hard constraints. The compliant day is the only day the API returns. |
▼What you ship
You ship coordination that never touches a timing window.
- No hand-rolled scheduling engine — timing windows, credentials, continuity and travel are API fields.
- Deterministic means accountable: replay the exact day a family asks about.
- Coordinator copy comes back with the plan, ready for the family update verbatim.
▼What their day feels like
One urgent visit stops shaking the whole day.
- Coordinators stop rebuilding routes by phone.
- Timing windows are protected; the right credential gets the visit.
- The discharged patient is seen by 9:00 — and every medication window holds.
▼Every job has stakeholders
An urgent referral touches far more than the nurse who takes it. Every visit is a web of stakeholders who feel it when the day drifts — and a tighter operation quietly serves all of them. (Scheduling and coordination only — no patient records pass through the solver.)
The visit happens on time, the medication window holds, and — where possible — it’s the caregiver they already know.
Confirms a re-plan in one click instead of an hour of phone re-routing.
More visits per caregiver-hour with fewer dropped or duplicated visits — a tighter operation.
Deterministic scheduling replays for an accreditation or payer review — granular proof that windows and credentials were honoured.
On-time visits and continuity protect the agency’s standing with families and referral sources.
Sane loads and honoured breaks keep caregivers off unsustainable days — retention in a field that bleeds staff.
▼What you get back, and what gets pushed
The An urgent referral just hit preview returns the whole plan in data: moves and reassignments (which visit shifts, from and to which caregiver and time), a total_moves count, and warnings such as TECH_NOT_FEASIBLE — so a coordinator can see the re-plan before it’s confirmed.
To let coordinators see moves the moment they’re confirmed, register a webhook endpoint and Crisphive POSTs each scheduling event to your URL with a Crisphive-Signature header. Verify it against your whsec_… secret over the raw body before you trust the payload — Webhooks has the event shape and copy-paste verify snippets.
Start building
The snippet above imports @crisphive/sdk — grab the package for your language, drop in a key, and the same call runs. Every response comes back in one { error_code, message, data } envelope.