Hospice agencies
For hospice agencies: the census (election date, level of care as 42 CFR 418.302 names them, care site, length of stay, discharge), one patient's hospice record with the benefit period and the recertification and face-to-face dates computed from the dates your staff recorded (42 CFR 418.21 / 418.22), the IDG plan-of-care reviews due (last recorded review + 15 calendar days, 42 CFR 418.56(d)), and planned versus completed visits by discipline, where a visit is missed only when it was recorded not done. Read-only: admissions, levels of care, discharges, reviews and visit outcomes are recorded in Norvya. Never a prognosis, an eligibility statement or a billing verdict; IDG notes, staff names and family feedback stay in Norvya. Webhook: hospice.idg_review_due.
- Who calls it
- Core for Hospice agencies
- Before production
- Hospice agencies (clinic type hospice) with a BAA on file (or a sandbox).
- Sandbox
- Build against synthetic members first. What each sandbox holds
- Standards
- 42 CFR 418.21 / 418.22 / 418.56(d) / 418.302(b) date arithmetic (no prognosis)
Markets that use this family
- Hospice agencies (core)
Scopes
| Scope | Allows |
|---|---|
hospice.read | Read your hospice agency's census (election date, level of care, care site, length of stay, discharge), one patient's hospice record with the benefit period and the recertification and face-to-face dates computed from your recorded dates, and the IDG plan-of-care reviews due; never a prognosis or an eligibility statement (hospice agencies only, BAA on file). |
hospice.visits.read | Read planned and completed visits by discipline for your hospice patients: a visit is missed only when your staff recorded it not done, and a past visit with nothing recorded is 'not recorded' (hospice agencies only, BAA on file). |
Endpoints
Your hospice census
Every patient on service (or discharged, or all): election date, the benefit period with its recertification and face-to-face dates (arithmetic from your recorded dates), level of care, care site, length of stay, IDG review status and discharge. Never a prognosis or an eligibility statement.
Parameters
active | discharged | all
All responses
200Successful Response401Unauthorized403Forbidden404Not Found409Conflict422Unprocessable Entity429Too Many Requests503Service UnavailableCodes every call can return are in Errors & limits.
curl -s "https://norvya.fly.dev/v1/hospice/census" \
-H "Authorization: Bearer $TOKEN"import os
import requests
BASE = "https://norvya.fly.dev"
TOKEN = os.environ["TOKEN"]
resp = requests.get(
BASE + "/v1/hospice/census",
headers={"Authorization": f"Bearer {TOKEN}"},
timeout=30,
)
resp.raise_for_status()
print(resp.json())// Node.js 18+ (ES module). Keep production credentials on your server.
const BASE = "https://norvya.fly.dev";
const url = new URL(`${BASE}/v1/hospice/census`);
const res = await fetch(url, {
method: "GET",
headers: {
Authorization: `Bearer ${process.env.TOKEN}`,
},
});
if (!res.ok) throw new Error(`${res.status} ${await res.text()}`);
console.log(await res.json());Try it in your sandbox
One patient's hospice record
The latest admission at your agency: levels of care over time, the certification events your staff recorded, review dates (never the notes), and — with hospice.visits.read — the visits.
Parameters
All responses
200Successful Response401Unauthorized403Forbidden404Not Found409Conflict422Unprocessable Entity429Too Many Requests503Service UnavailableCodes every call can return are in Errors & limits.
curl -s "https://norvya.fly.dev/v1/hospice/patients/$MEMBER_REF" \
-H "Authorization: Bearer $TOKEN"import os
import requests
BASE = "https://norvya.fly.dev"
TOKEN = os.environ["TOKEN"]
member_ref = os.environ["MEMBER_REF"]
resp = requests.get(
f"{BASE}/v1/hospice/patients/{member_ref}",
headers={"Authorization": f"Bearer {TOKEN}"},
timeout=30,
)
resp.raise_for_status()
print(resp.json())// Node.js 18+ (ES module). Keep production credentials on your server.
const BASE = "https://norvya.fly.dev";
const member_ref = process.env.MEMBER_REF;
const url = new URL(`${BASE}/v1/hospice/patients/${encodeURIComponent(member_ref)}`);
const res = await fetch(url, {
method: "GET",
headers: {
Authorization: `Bearer ${process.env.TOKEN}`,
},
});
if (!res.ok) throw new Error(`${res.status} ${await res.text()}`);
console.log(await res.json());Try it in your sandbox
IDG plan-of-care reviews due
Patients whose plan-of-care review is due within `within_days` or overdue: the last recorded review + 15 calendar days (42 CFR 418.56(d)), or the election date + 15 when none is recorded.
Parameters
All responses
200Successful Response401Unauthorized403Forbidden404Not Found409Conflict422Unprocessable Entity429Too Many Requests503Service UnavailableCodes every call can return are in Errors & limits.
curl -s "https://norvya.fly.dev/v1/hospice/idg/due" \
-H "Authorization: Bearer $TOKEN"import os
import requests
BASE = "https://norvya.fly.dev"
TOKEN = os.environ["TOKEN"]
resp = requests.get(
BASE + "/v1/hospice/idg/due",
headers={"Authorization": f"Bearer {TOKEN}"},
timeout=30,
)
resp.raise_for_status()
print(resp.json())// Node.js 18+ (ES module). Keep production credentials on your server.
const BASE = "https://norvya.fly.dev";
const url = new URL(`${BASE}/v1/hospice/idg/due`);
const res = await fetch(url, {
method: "GET",
headers: {
Authorization: `Bearer ${process.env.TOKEN}`,
},
});
if (!res.ok) throw new Error(`${res.status} ${await res.text()}`);
console.log(await res.json());Try it in your sandbox
Your agency's visit schedule
Visits in the window by discipline with their state: upcoming, completed, missed (recorded not done), not_recorded (past, nothing recorded — never counted as missed) or cancelled.
Parameters
YYYY-MM-DD
YYYY-MM-DD; at most 92 days after from
All responses
200Successful Response401Unauthorized403Forbidden404Not Found409Conflict422Unprocessable Entity429Too Many Requests503Service UnavailableCodes every call can return are in Errors & limits.
curl -s "https://norvya.fly.dev/v1/hospice/visits" \
-H "Authorization: Bearer $TOKEN"import os
import requests
BASE = "https://norvya.fly.dev"
TOKEN = os.environ["TOKEN"]
resp = requests.get(
BASE + "/v1/hospice/visits",
headers={"Authorization": f"Bearer {TOKEN}"},
timeout=30,
)
resp.raise_for_status()
print(resp.json())// Node.js 18+ (ES module). Keep production credentials on your server.
const BASE = "https://norvya.fly.dev";
const url = new URL(`${BASE}/v1/hospice/visits`);
const res = await fetch(url, {
method: "GET",
headers: {
Authorization: `Bearer ${process.env.TOKEN}`,
},
});
if (!res.ok) throw new Error(`${res.status} ${await res.text()}`);
console.log(await res.json());Try it in your sandbox
One patient's hospice visits
Parameters
All responses
200Successful Response401Unauthorized403Forbidden404Not Found409Conflict422Unprocessable Entity429Too Many Requests503Service UnavailableCodes every call can return are in Errors & limits.
curl -s "https://norvya.fly.dev/v1/hospice/patients/$MEMBER_REF/visits" \
-H "Authorization: Bearer $TOKEN"import os
import requests
BASE = "https://norvya.fly.dev"
TOKEN = os.environ["TOKEN"]
member_ref = os.environ["MEMBER_REF"]
resp = requests.get(
f"{BASE}/v1/hospice/patients/{member_ref}/visits",
headers={"Authorization": f"Bearer {TOKEN}"},
timeout=30,
)
resp.raise_for_status()
print(resp.json())// Node.js 18+ (ES module). Keep production credentials on your server.
const BASE = "https://norvya.fly.dev";
const member_ref = process.env.MEMBER_REF;
const url = new URL(`${BASE}/v1/hospice/patients/${encodeURIComponent(member_ref)}/visits`);
const res = await fetch(url, {
method: "GET",
headers: {
Authorization: `Bearer ${process.env.TOKEN}`,
},
});
if (!res.ok) throw new Error(`${res.status} ${await res.text()}`);
console.log(await res.json());Try it in your sandbox
Webhook events
Payloads carry no health data, only a reference to fetch with your token. Each event needs its scope as well as webhooks.manage. Signing and retries
| Event | Scope | When |
|---|---|---|
hospice.idg_review_due | hospice.read | At least one patient on service at the agency has an IDG plan-of-care review due within 3 days or overdue (about the agency, not a patient: no member_ref; once per UTC day). |
Generated from the Partner API router and developers_catalog.py. The router docstring is the source of each description.