API Overview
The Elix API is the same API the Elix apps use. Partner systems call it with their own credentials and are held to the same permissions, privacy rules and audit as staff.
Base address
https://api.app.elix.ng/api/v1
Each service sits under its own prefix: /auth, /patients, /encounters, /investigations and so on. See Platform architecture for the full list.
Where to start
- Get access. Write to sales@elix.ng with the facility and the integration you have in mind.
- Sign in. Authentication shows the sign-in calls, token refresh, and the headers that pick the facility.
- Find a patient. List patients searches the register.
- Exchange clinical data. FHIR exchange covers encounters, lab, imaging and vital signs as FHIR R4.
If you are linking an existing EMR or EHR, follow Connect your EMR from the top.
What the reference covers
The reference pages are generated from the Elix OpenAPI description. They list the endpoints open to partners, each checked against the service code:
- Auth: identity lookup, sign-in, refresh, sign-out and password reset
- Patients: search, single-patient reads and the change feed
- FHIR: encounter read and search
- Investigations: lab and imaging orders as FHIR resources, and publishing them to a FHIR server
- Vital signs: vital signs sets as FHIR observations
The Elix apps use other routes too. Those can change without notice and are not covered here. If you need something that is not listed, ask; we add endpoints to the reference once they are ready to be relied on.
Conventions
- JSON request and response bodies, except FHIR routes, which answer
application/fhir+json. - Bearer tokens in the
Authorizationheader. - Facility scope in the
x-org-idandx-facility-idheaders. - Purpose of use on patient-identifiable reads, as the
purposeOfUsequery parameter. - Ids are UUIDs. A malformed id is a
400; a well-formed id that is not yours is a404. - Errors have the shape
{"statusCode": 403, "message": "...", "error": "Forbidden"}.messagecan be a string or a list of validation messages. - Paging is by
pageandsizeon lists, and by cursor on the change feed and FHIR searches.
Versioning
Everything here is under /v1. New fields are added to responses over time, so code that reads them should ignore fields it does not know.