Hospitals and health systems
Post-discharge follow-up run from your own care-management system: send your ADT feed, work the 30-day worklist, write back calls and visits, and read operational outcomes. Run hospital-at-home episodes with NEWS2 and escalation webhooks.
- Credential model
- OAuth 2.0 client credentials for your organisation. Authentication
- Before production
- A BAA, an admission/discharge (ADT) feed per hospital and the hospital's security review.
- Sandbox
- A hospital sandbox.
How it works
Send your ADT feed
Send your HL7 v2 admission/discharge (ADT) feed and get counts back, never names or record numbers. A discharge opens the patient's 30-day follow-up.
- POST
/v1/transitions/adtSend an HL7 v2 ADT batch from your feed
Work the 30-day list
Run the follow-up from your own care-management system: day N of 30, the 48-72 hour call, the 7-day visit, medicine reconciliation and red flags from the patient's check-ins.
- GET
/v1/transitions/worklistYour post-discharge worklist: who to call, what is due, who is at risk - GET
/v1/transitions/episodes/{episode_id}One post-discharge episode: contacts, follow-up, check-ins, medicines, tasks
Write back
Write back calls, visits, closes and returns.
- POST
/v1/transitions/episodes/{episode_id}/contactsRecord a call to the patient - POST
/v1/transitions/episodes/{episode_id}/followupRecord the booked follow-up visit - POST
/v1/transitions/episodes/{episode_id}/returnsRecord a readmission or ED return - POST
/v1/transitions/episodes/{episode_id}/closeClose the episode
Read outcomes
Operational outcomes with small cells withheld (not risk-adjusted HRRP measures).
- GET
/v1/transitions/outcomesOperational post-discharge outcomes, small cells suppressed (not HRRP measures)
Hospital at home
Open and close hospital-at-home episodes, read the NEWS2 observation timeline, and get a webhook on each escalation.
- POST
/v1/hospital-at-home/episodesOpen a hospital-at-home episode - GET
/v1/hospital-at-home/episodes/{episode_ref}/news2The episode's NEWS2 observation timeline
Families you'll use
| Family | Fit | Status |
|---|---|---|
| Clinical intelligence | Core | Built — gated |
| Data in | Core | Built — gated |
| Enrolment & messaging | Core | Built — gated |
| Events (webhooks) | Core | Built — gated |
| Hospital at home, days at home & wounds | Core | Built — gated |
| Care transitions | Core | Built — gated |
| EHR embedding: SMART launch and CDS Hooks | Useful | Built — gated |
| Member data in: observations and workouts | Useful | Built — gated |
| Population | Useful | Built — gated |
| Social needs & programmes | Useful | Built — gated |
| Public-health reporting | Useful | Built — gated |
| Specialty care | Useful | Built — gated |
| Medical travel | Useful | Built — gated |
Scopes to request
Ask only for what your product uses.
| Scope | Allows |
|---|---|
members.read | List the organisation's linked members as opaque member references. |
clinical.brief.read | Read the clinician pre-visit brief for a patient (medical practices only; per-section consent). |
clinical.panel.read | Read the practice's ranked panel worklist and start worklist runs (medical practices only). |
clinical.patient.read | Read a patient's care gaps and between-visit home-data signals (medical practices only; consent and data basis respected). |
clinical.panel.write | Triage your practice's worklist findings from your system (addressed, snoozed until a date, dismissed with a reason, or reopened) with the same rules as Norvya's own worklist screen (medical practices only). |
clinical.loops.write | Close the loop on results and referrals from your system: record that a named clinician acknowledged a result, that the patient was told, the action taken, and move a tracked referral through scheduled, seen, report received and closed (medical practices only). |
instruments.request | Ask a patient to complete a validated questionnaire from Norvya's instrument library; Norvya sends its own generic notification (treating practices only). |
instruments.read | Read questionnaire scores (total, severity band, subscales) with the instrument version and completion time, never item-level answers; mental-health instruments only when the patient shares mental health with you (treating practices only). |
members.invite | Invite people to join your organisation on Norvya (Norvya emails its own invitation in the person's language; never a pre-granted consent: the person chooses what to share in the app) and create printable join codes; follow each invitation to joined. Daily cap, de-duplicated per address, and the answer never says whether an address has an account. |
messages.write | Send a member a secure in-app message from your organisation (the conversation your staff use in Norvya); Norvya notifies them with its own generic wording, never your text. Members who turned messages off are refused. |
messages.read | Read your organisation's in-app conversation with a member, including their replies (audited as a disclosure). |
observations.write | Write measurements to a member's own record: vitals, lab results and body composition (practices with a BAA on file), or body composition and the vitals a gym measures (gyms; never labs). Idempotent per item by your external_id; units converted, implausible values refused; DELETE retracts only your own item. |
panel.import.write | Stage, review, commit and discard practice panel imports (FHIR Bulk Data, or a spreadsheet with a saved mapping profile; medical practices with a BAA on file only). |
transitions.adt.write | Send HL7 v2 ADT messages (A01 / A02 / A03 / A04) from your feed; matched only to your own linked patients on MRN + date of birth, counts returned, nothing echoed (treating practices and hospitals with a BAA on file). |
transitions.read | Read your hospital's post-discharge worklist, episode detail and operational outcomes (hospitals only, BAA on file). |
transitions.write | Enrol post-discharge episodes and record calls, follow-up visits, closes and returns from your care-management system (hospitals only, BAA on file). |
transitions.notices.read | Read the hospital admissions, discharges and ED visits Norvya received for a patient of your practice, with the Transitional Care Management windows (treating practices and hospitals; each patient's sharing choices apply). |
webhooks.manage | Register HTTPS webhook endpoints (payloads carry no PHI). Each event also needs its own scope: worklist / attention events clinical.panel.read, import events panel.import.write, population.export_completed population.export (medical practices only), member.at_risk fitness.roster.read, public_health.iis_ack_received public_health.immunizations.read, public_health.case_report_response public_health.case_reports.read. claims.import_completed needs claims.import.write (medical practices only). member.account_claimed needs members.claim_invite (medical practices only). hospital_at_home.escalation needs hospital_at_home.read (hospitals only). hospice.idg_review_due needs hospice.read (hospice agencies only). pharmacy.refill_due and pharmacy.discharge_episode_opened need pharmacy.patients.read; care_site.change_of_condition, care_site.incident_recorded and care_site.mar_exception need care_sites.read (pharmacies and care-facility operators, their own sites). travel.journey_updated and travel.leg_status_changed need travel.journeys.read, travel.nursing_visit_recorded travel.nursing.read, travel.invoice_issued travel.billing.read (medical-travel desks only). travel.inquiry_updated needs travel.inquiries.read, travel.journey_message_posted travel.messages.read (medical-travel desks only). instrument.batch_dispatched needs instruments.request (medical practices only). roster.enrolment_summary needs members.roster.read (medical practices only). older_adults.falls_tier_raised needs older_adults.read (medical practices only). employer.challenge_completed needs employer.challenges.read and occupational.exam_due occupational.read (employers only); medspa.adverse_event_reported needs medspa.aftercare.read (treating practices only). rehab.goal_met needs rehab.read; nutrition.caseload_flagged needs nutrition.read (medical practices only). cocm.review_due needs behavioral.read (medical practices only). derm.lesion_recheck_due and derm.patch_test_read_recorded need derm.read (medical practices only). |
public_health.immunizations.read | Read your registry connection's readiness, the patient's immunization record, your submissions and their acknowledgements, and query the registry for a patient's history (treating practices and hospitals; the patient must share their medical history with you). |
public_health.immunizations.write | Report a patient's immunization to your state immunization registry (HL7 v2 VXU) and preview what would be sent; an explicit act, audited, refused unless your registry connection is active under a signed state agreement (treating practices and hospitals). |
public_health.case_reports.read | Read electronic case reporting readiness, candidates, reports and the Reportability Responses public health sent back (treating practices and hospitals). |
public_health.case_reports.write | Electronic case reporting: match a patient against the loaded trigger codes, confirm or dismiss a candidate, build the eICR, transmit it, and file a Reportability Response (treating practices and hospitals; refused unless case reporting is active for you). |
public_health.syndromic.read | Read your syndromic surveillance readiness and what was sent where (no patient data in the message list). |
public_health.syndromic.write | Syndromic surveillance (NSSP): record an emergency or urgent-care visit and send its HL7 v2 ADT message, one explicit send at a time (registered reporting facilities only). |
clinical.specialty.read | Read a patient's specialty hub results (cardio, nephro, endo, neuro, pulmo, rheum, GI and questionnaires) under their sharing switches, and run the stateless spirometry, lung-cancer screening and GI alarm checks (treating practices only). |
clinical.ratings.write | Record a clinician-rated or clinician-timed measure (for example FOIS, Nine-Hole Peg Test, AIMS) that a named clinician of your practice assigned; scored by Norvya (treating practices only). |
documents.read | List and download the documents Norvya already produces about a patient (care plans, survivorship plans, reviews, summaries, estimates) as PDF, in the patient's language where the document supports it; each document kind keeps its own consent gate (treating practices, including medical-travel desks, and pharmacies). |
clinical.record.read | Read one patient's record as a FHIR R4 Bundle (the same builders and the same consent scope as the population export: the patient's sharing choices, your practice's own records, 42 CFR Part 2 records only under a covering consent); size-capped, with the population export for large records (treating practices with a BAA on file, or a sandbox). |
hospital_at_home.read | Read your hospital-at-home episodes: contacts against your own protocol, escalations, and the NEWS2 observation timeline (hospitals only, with a BAA on file). |
hospital_at_home.write | Open and close hospital-at-home episodes for your patients; the admission attestations are your clinician's, recorded as such (hospitals only, with a BAA on file). |
hospital.days_at_home.read | Read a patient's observed days at home from recorded care events, only inside a recorded ascertainment period (no period, no number) (hospitals only, with a BAA on file; the patient must share their medical history with you). |
hospital.wounds.read | Read a patient's wound log: each wound's location, whether it is a wound or a burn, and its assessment dates; never the measurements (image-based estimates) or the photographs (hospitals only, with a BAA on file; the patient must share their skin scans with you). |
Protocol endpoints outside /v1
Called by the EHR itself rather than with a partner token.
EHR embedding: SMART launch and CDS Hooks Built — gated
Gate: Registration with each EHR vendor's developer programme, then their review.
- GET
/ehr/launchSMART on FHIR EHR launch (the EHR opens Norvya with iss and launch) - GET
/ehr/callbackSMART authorization callback - GET
/ehr/.well-known/jwks.jsonNorvya's public keys for SMART backend authentication - GET
/cds-servicesCDS Hooks discovery - POST
/cds-services/norvya-patient-viewCDS Hooks patient-view: the card for the open chart - POST
/cds-services/norvya-patient-view/feedbackCDS Hooks card feedback
Not callable yet
- Population Built — gated
- Social needs & programmes Built — gated
- Medical travel Built — gated Gate: A BAA on file (or a sandbox); any treating-practice organisation can act as a desk.
Before production
Sandbox
Build and test against synthetic members before you touch real data. A hospital sandbox. What a sandbox holds, its credentials, limits, resets and expiry are in the Sandbox guide. To request one, write to [email protected] with your organisation and market.
Every endpoint for this market
The families this solution uses, filtered to the scopes it requests. Each link opens the endpoint on its family page.
Platform Built — gated3
- GET
/v1/members - POST
/v1/oauth/token - GET
/v1/usage
Enrolment & messaging Built — gated12
- GET
/v1/invites - POST
/v1/invites - GET
/v1/invites/{invite_ref} - POST
/v1/invites/{invite_ref}/revoke - POST
/v1/invites/{invite_ref}/simulate-join - GET
/v1/join-codes - POST
/v1/join-codes - POST
/v1/join-codes/{code_ref}/revoke - POST
/v1/join-codes/{code_ref}/simulate-join - GET
/v1/members/{member_ref}/messages - POST
/v1/members/{member_ref}/messages - POST
/v1/members/{member_ref}/messages/simulate-reply
Events (webhooks) Built — gated5
- GET
/v1/webhooks - POST
/v1/webhooks - DELETE
/v1/webhooks/{webhook_id} - GET
/v1/webhooks/{webhook_id}/deliveries - POST
/v1/webhooks/{webhook_id}/enable
Records & documents Built — gated4
- GET
/v1/documents/{document_ref} - GET
/v1/documents/{document_ref}/content - GET
/v1/patients/{member_ref}/documents - GET
/v1/patients/{member_ref}/record
Clinical intelligence Built — gated23
- GET
/v1/instrument-requests/batch - POST
/v1/instrument-requests/batch - GET
/v1/instrument-requests/batch/{batch_ref} - GET
/v1/instruments - POST
/v1/members/{member_ref}/instrument-requests - POST
/v1/members/{member_ref}/instrument-requests/{response_ref}/simulate-completion - GET
/v1/members/{member_ref}/instrument-responses - GET
/v1/panel/clinicians - GET
/v1/panel/worklist - POST
/v1/panel/worklist/items/{item_ref}/triage - POST
/v1/panel/worklist/runs - GET
/v1/panel/worklist/runs/{run_id} - GET
/v1/patients/{member_ref}/between-visit - GET
/v1/patients/{member_ref}/brief - GET
/v1/patients/{member_ref}/care-gaps - POST
/v1/patients/{member_ref}/clinician-ratings - GET
/v1/patients/{member_ref}/referrals - POST
/v1/patients/{member_ref}/referrals/{referral_ref}/status - GET
/v1/patients/{member_ref}/results - POST
/v1/patients/{member_ref}/results/{result_ref}/acknowledge - POST
/v1/patients/{member_ref}/results/{result_ref}/action - POST
/v1/patients/{member_ref}/results/{result_ref}/close - POST
/v1/patients/{member_ref}/results/{result_ref}/informed
Specialty care Built — gated5
- POST
/v1/clinical/checks/gi-alarm - POST
/v1/clinical/checks/lung-cancer-screening - POST
/v1/clinical/checks/spirometry - GET
/v1/patients/{member_ref}/specialty-checks - GET
/v1/patients/{member_ref}/specialty/{hub}
Data in Built — gated4
- POST
/v1/panel/imports - GET
/v1/panel/imports/{import_id} - POST
/v1/panel/imports/{import_id}/commit - POST
/v1/panel/imports/{import_id}/discard
Member data in: observations and workouts Built — gated2
Public-health reporting Built — gated21
- POST
/v1/patients/{member_ref}/case-reports/evaluate - POST
/v1/patients/{member_ref}/iis-queries - GET
/v1/patients/{member_ref}/immunizations - GET
/v1/patients/{member_ref}/immunizations/{immunization_ref}/iis-preview - POST
/v1/patients/{member_ref}/immunizations/{immunization_ref}/iis-submissions - GET
/v1/public-health/case-reporting - GET
/v1/public-health/case-reports - GET
/v1/public-health/case-reports/candidates - POST
/v1/public-health/case-reports/candidates/{candidate_ref}/build - POST
/v1/public-health/case-reports/candidates/{candidate_ref}/review - GET
/v1/public-health/case-reports/{report_ref} - POST
/v1/public-health/case-reports/{report_ref}/response - POST
/v1/public-health/case-reports/{report_ref}/transmit - GET
/v1/public-health/iis - GET
/v1/public-health/iis/submissions - GET
/v1/public-health/iis/submissions/{submission_ref} - GET
/v1/public-health/syndromic/messages - GET
/v1/public-health/syndromic/status - GET
/v1/public-health/syndromic/visits - POST
/v1/public-health/syndromic/visits - POST
/v1/public-health/syndromic/visits/{visit_ref}/send
Care transitions Built — gated10
- GET
/v1/patients/{member_ref}/encounters - POST
/v1/transitions/adt - POST
/v1/transitions/episodes - GET
/v1/transitions/episodes/{episode_id} - POST
/v1/transitions/episodes/{episode_id}/close - POST
/v1/transitions/episodes/{episode_id}/contacts - POST
/v1/transitions/episodes/{episode_id}/followup - POST
/v1/transitions/episodes/{episode_id}/returns - GET
/v1/transitions/outcomes - GET
/v1/transitions/worklist