Specialty care
For specialty practices and the EMR vendors that serve them: each specialty hub's results, the direct specialty checks and the stateless checks, under the patient's sharing switches, plus the questionnaires your practice may request.
- Credential model
- OAuth 2.0 client credentials for your organisation. Authentication
- Before production
- A BAA with the practice, which must be a treating practice with an active link to the patient.
- Sandbox
- A practice sandbox.
By specialty
One read per specialty hub, through the {hub} path parameter (values from the API itself). A hub not on this list answers 404 unknown_specialty.
- GET
/v1/patients/{member_ref}/specialty/all - GET
/v1/patients/{member_ref}/specialty/cardio - GET
/v1/patients/{member_ref}/specialty/nephro - GET
/v1/patients/{member_ref}/specialty/endo - GET
/v1/patients/{member_ref}/specialty/neuro - GET
/v1/patients/{member_ref}/specialty/pulmo - GET
/v1/patients/{member_ref}/specialty/rheum - GET
/v1/patients/{member_ref}/specialty/gi - GET
/v1/patients/{member_ref}/specialty/other
Direct and stateless checks
- GET
/v1/patients/{member_ref}/specialty-checkseGFR, the GLP-1 thyroid check, the colonoscopy interval and the heart-failure check - POST
/v1/clinical/checks/spirometryInterpret spirometry values (GOLD criteria; stateless) - POST
/v1/clinical/checks/lung-cancer-screeningLung-cancer screening eligibility (USPSTF 2021; stateless) - POST
/v1/clinical/checks/gi-alarmGI alarm-feature triage lane (stateless)
Questionnaires (Clinical intelligence)
One instrument registry: GET /v1/instruments says which questionnaires your organisation may request.
- GET
/v1/instrumentsQuestionnaires you may request - POST
/v1/members/{member_ref}/instrument-requestsAsk a patient to complete a questionnaire - GET
/v1/members/{member_ref}/instrument-responsesA patient's questionnaire scores - POST
/v1/members/{member_ref}/instrument-requests/{response_ref}/simulate-completionSandbox: make a synthetic patient complete a requested questionnaire - POST
/v1/instrument-requests/batchAsk a caseload to complete a questionnaire - GET
/v1/instrument-requests/batchYour caseload batches, newest first - GET
/v1/instrument-requests/batch/{batch_ref}A caseload batch: progress and results
Families you'll use
| Family | Fit | Status |
|---|---|---|
| Clinical intelligence | Core | Built — gated |
| EHR embedding: cards and chart documents | Core | Built — gated |
| Events (webhooks) | Core | Built — gated |
| Specialty care | Core | Built — gated |
| Data in | Useful | Built — gated |
| Records & documents | 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.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.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). |
clinical.patient.match | Find 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). |
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). |
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). |
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). |
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). |
Before production
Sandbox
Build and test against synthetic members before you touch real data. A practice sandbox. What a sandbox holds, its credentials, limits, resets and expiry are in the Sandbox guide. To request one, write to [email protected].
Every endpoint for this solution
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
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