Solution
Medical travel desks
Run international patients' journeys from your own coordination system: phases, flights, the care team, partner hospitals, home nursing under the letter of guarantee, and the documents the patient carries home, in the sponsor's language.
- Credential model
- OAuth 2.0 client credentials for your organisation. Authentication
- Before production
- A BAA on file. Norvya does not verify facility accreditations, book flights or collect invoices.
- Sandbox
- A travel sandbox.
Families you'll use
| Family | Fit | Status |
|---|---|---|
| Enrolment & messaging | Core | Built — gated |
| Events (webhooks) | Core | Built — gated |
| Medical travel | Core | Built — gated |
| Billing & scheduling | Useful | Built — gated |
| Clinical intelligence | 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. |
travel.journeys.read | Read your desk's care journeys (phase, dates, continuity after repatriation, timeline), their flights and transfers with live flight status where configured, the care team and staff hours, approval progress, and your partner-hospital directory (accreditations as recorded; Norvya verifies none). Medical-travel desks with a BAA on file. |
travel.journeys.write | Open a care journey for a patient on your roster (it waits for the patient's acceptance), move it forward a phase, add, edit and cancel flights and transfers, and keep your partner-hospital directory. |
travel.nursing.read | Read home-nursing cases: the sponsor's PRN, LOMN and LOG versions, shifts, the hours check, visit records (notes, vitals, medication administration, incidents), satisfaction survey results and sponsor referrals. |
travel.nursing.write | Record a new LOG version, plan, confirm and cancel nursing shifts (never outside the newest LOG's dates or in a pause: the server refuses), move a nursing case forward, and send a sponsor referral for a patient without the app. |
travel.documents.read | Download a journey's documents: the HL7 International Patient Summary, the FHIR repatriation packet, the bilingual readable summary and the weekly nursing reports (each an audited export, inside the patient's sharing choices). |
travel.billing.read | Read the monthly home-nursing invoices per PRN (lines, hold flags, totals in integer minor units) and download them as PDF or HTML. |
travel.translations.write | Ask Norvya to machine-translate a free-text item on a journey (the reason for travel, a visit note, a medication line, an incident, a LOMN instruction) into a supported language; the original stays the record. |
travel.inquiries.read | Read your desk's travel inquiries (contact, origin, language, sponsor, the coordinator's summary, status history) with their quote versions (each an immutable Good Faith Estimate). Medical-travel desks with a BAA on file. |
travel.inquiries.write | Create an inquiry from your own system by its id, edit it, link a patient on your roster, issue or revise its quote, and move it through the desk's own statuses. Converting an accepted inquiry to a journey also needs travel.journeys.write. |
travel.messages.read | Read the in-app message thread on a journey: the desk, the patient and the caregiver the patient approved (who see the same thread). |
travel.messages.write | Post in a journey's thread as your desk's system (shown as "Partner system", never as a person); the patient and caregiver get Norvya's generic push. Refused until the patient has accepted the journey. |
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). |
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). |
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). |
Not callable yet
- Clinical intelligence Built — gated
- Billing & scheduling Built — gated Gate: A BAA with each practice. The care-management view also needs the practice to switch on care-management documentation in Norvya (after its own compliance review).
Before production
Gate: A BAA on file. Norvya does not verify facility accreditations, book flights or collect invoices.
Sandbox
Build and test against synthetic members before you touch real data. A travel 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 — gated3
- GET
/v1/documents/{document_ref} - GET
/v1/documents/{document_ref}/content - GET
/v1/patients/{member_ref}/documents
Medical travel Built — gated47
- GET
/v1/travel/facilities - POST
/v1/travel/facilities - GET
/v1/travel/facilities/{facility_ref} - PATCH
/v1/travel/facilities/{facility_ref} - GET
/v1/travel/inquiries - POST
/v1/travel/inquiries - GET
/v1/travel/inquiries/{inquiry_ref} - PATCH
/v1/travel/inquiries/{inquiry_ref} - POST
/v1/travel/inquiries/{inquiry_ref}/convert - POST
/v1/travel/inquiries/{inquiry_ref}/quote - POST
/v1/travel/inquiries/{inquiry_ref}/status - GET
/v1/travel/invoices - GET
/v1/travel/journeys - POST
/v1/travel/journeys - GET
/v1/travel/journeys/{journey_ref} - GET
/v1/travel/journeys/{journey_ref}/approvals - PUT
/v1/travel/journeys/{journey_ref}/facility - GET
/v1/travel/journeys/{journey_ref}/ips - GET
/v1/travel/journeys/{journey_ref}/legs - POST
/v1/travel/journeys/{journey_ref}/legs - PATCH
/v1/travel/journeys/{journey_ref}/legs/{leg_ref} - POST
/v1/travel/journeys/{journey_ref}/legs/{leg_ref}/cancel - POST
/v1/travel/journeys/{journey_ref}/legs/{leg_ref}/refresh-status - GET
/v1/travel/journeys/{journey_ref}/messages - POST
/v1/travel/journeys/{journey_ref}/messages - GET
/v1/travel/journeys/{journey_ref}/nursing - GET
/v1/travel/journeys/{journey_ref}/nursing/hours-check - GET
/v1/travel/journeys/{journey_ref}/nursing/invoices - GET
/v1/travel/journeys/{journey_ref}/nursing/invoices/{invoice_ref} - GET
/v1/travel/journeys/{journey_ref}/nursing/invoices/{invoice_ref}/{fmt} - POST
/v1/travel/journeys/{journey_ref}/nursing/logs - GET
/v1/travel/journeys/{journey_ref}/nursing/reports - GET
/v1/travel/journeys/{journey_ref}/nursing/reports/{report_ref}/{fmt} - GET
/v1/travel/journeys/{journey_ref}/nursing/shifts - POST
/v1/travel/journeys/{journey_ref}/nursing/shifts - POST
/v1/travel/journeys/{journey_ref}/nursing/shifts/{shift_ref}/status - POST
/v1/travel/journeys/{journey_ref}/nursing/status - GET
/v1/travel/journeys/{journey_ref}/nursing/surveys - GET
/v1/travel/journeys/{journey_ref}/nursing/visits - POST
/v1/travel/journeys/{journey_ref}/phase - GET
/v1/travel/journeys/{journey_ref}/referral - GET
/v1/travel/journeys/{journey_ref}/repatriation-packet - GET
/v1/travel/journeys/{journey_ref}/summary/{fmt} - GET
/v1/travel/journeys/{journey_ref}/team - POST
/v1/travel/journeys/{journey_ref}/translations - GET
/v1/travel/reference - POST
/v1/travel/referrals