Norvya Developers
Get a sandbox
Solution

EMR vendors

Built, gated: callable in your sandbox; production once your agreement is signed. 50 endpoints across 8 families

One integration across all your practices: each practice approves you in Norvya and chooses what you may use, then you embed Norvya's clinical intelligence by API, as native cards, or as documents filed in the chart.

Credential model
One vendor credential; a token per approving practice. EMR vendor tokens
Before production
Each practice's approval in Norvya and its BAA; SMART launch and a registered CDS Hooks service also need each EHR vendor's registration.
Sandbox
A vendor sandbox.

How it works

A practice approves you

Each practice's administrator approves your integration in Norvya and chooses the scopes you may use there. One credential serves every practice that approves you. Call /v1/oauth/token without practice for a vendor token, then list your practices.

Get a token per practice

Request a token with practice=$PRACTICE_REF. A practice that withdraws its approval stops your tokens for it at once.

Find the patient

Find a patient's member_ref from your own MRN and date of birth.

Embed Norvya in the chart

Fetch the same CDS Hooks cards Norvya's hook service returns and render them natively, or get the pre-visit brief as a FHIR R4 DocumentReference to file in the chart.

Work the panel

The ranked panel worklist with the evidence and guideline behind each item, and triage write-back.

Listen for events

Signed webhooks; payloads carry no health data, only a reference to fetch with your token.

  • POST/v1/webhooksRegister a webhook endpoint (secret shown once)

Families you'll use

FamilyFitStatus
Clinical intelligenceCoreBuilt — gated
Data inCoreBuilt — gated
EHR embedding: cards and chart documentsCoreBuilt — gated
Events (webhooks)CoreBuilt — gated
Specialty careCoreBuilt — gated
EHR embedding: SMART launch and CDS HooksUsefulBuilt — gated
Enrolment & messagingUsefulBuilt — gated
Member data in: observations and workoutsUsefulBuilt — gated
Practice operations & reportsUsefulBuilt — gated

Scopes to request

A practice can grant you fewer. Ask only for what your product uses.

ScopeAllows
members.readList the organisation's linked members as opaque member references.
vendor.practices.readEMR vendors: list the practices that have approved your integration (a vendor-level token, requested without a practice; no patient data).
clinical.patient.matchFind the member_ref of one of your practice's patients from your own identifier (MRN) plus date of birth; exactly one match or 404 (medical practices only; tightly rate limited, audited).
clinical.brief.readRead the clinician pre-visit brief for a patient (medical practices only; per-section consent).
clinical.patient.readRead a patient's care gaps and between-visit home-data signals (medical practices only; consent and data basis respected).
clinical.panel.readRead the practice's ranked panel worklist and start worklist runs (medical practices only).
clinical.panel.writeTriage 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.writeClose 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.requestAsk a patient to complete a validated questionnaire from Norvya's instrument library; Norvya sends its own generic notification (treating practices only).
instruments.readRead 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).
observations.writeWrite 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.writeStage, 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).
webhooks.manageRegister 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).
clinical.specialty.readRead 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.writeRecord 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.readList 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.readRead 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).

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

Before production

Gate: Each practice's approval in Norvya and its BAA; SMART launch and a registered CDS Hooks service also need each EHR vendor's registration.

Sandbox

Build and test against synthetic members before you touch real data. A vendor 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 — gated4

Events (webhooks) Built — gated5

Records & documents Built — gated4

Clinical intelligence Built — gated23

Specialty care Built — gated5

Data in Built — gated4

Member data in: observations and workouts Built — gated2

EHR embedding: cards and chart documents Built — gated3

↑ ↓ to moveEnter to open