0.1.0 - ci-build
SENAITEFHIRImplementationGuide - Local Development build (v0.1.0) built by the FHIR (HL7® FHIR® Standard) Build Tools. See the Directory of published versions
SENAITE uses FHIR identifier elements to carry business identifiers for key resources. This page describes the identifier conventions used across this IG.
Each resource that carries identifiers follows a consistent three-level pattern:
Resource.id) — Every FHIR resource has a logical id which is a UUID. This is not an identifier element and is always assigned either by the server or by the consumer during POSTing.use = #usual) — The internal identifier created and assigned by SENAITE. It must not be supplied by the client on a POST otherwise it will error.use = #secondary) — An identifier originating from the API consumer's system (e.g. the ordering EHR or middleware). Preserved as-is by SENAITE.All identifier values are restricted to alphanumeric characters and hyphens. Spaces, quotes, and other special characters are not permitted.
The #usual identifier always uses a system URI defined by this IG (listed in each section below). The #secondary identifier uses a system URI owned by the API consumer's organisation — this must be agreed at integration time and is not constrained by this IG.
Patients may carry multiple identifiers. The following are explicitly supported:
| Use | System | Description | Assigned by |
|---|---|---|---|
#usual |
https://fhir.senaite.org/NamingSystem/patient-id |
SENAITE Patient ID — internal identifier generated by SENAITE | SENAITE (server-assigned) |
#secondary |
Agreed per-integration | MRN — the Medical Record Number from the consumer's system | API consumer |
Additional identifier types (e.g. passport number, national health ID) are permitted but not explicitly constrained by this IG. Deploying organisations may add further identifier slices as needed.
ServiceRequests carry two explicit identifiers corresponding to the underlying SENAITE sample:
| Use | System | Description | Assigned by |
|---|---|---|---|
#usual |
https://fhir.senaite.org/NamingSystem/servicerequest-id |
Sample ID — the SENAITE-assigned sample identifier, generated once after initial submission | SENAITE (server-assigned) |
#secondary |
Agreed per-integration | External ID — the identifier from the API consumer's system, preserved by SENAITE | API consumer |
The #usual identifier must not be supplied by the client on POST. It is assigned by SENAITE on creation and returned in the response.
DiagnosticReport identifiers follow the same pattern as ServiceRequest identifiers, since a DiagnosticReport in this IG always corresponds to the results of an underlying SENAITE sample. The #usual and #secondary identifiers carry the same values and systems as those on the originating ServiceRequest.
| Use | System | Description | Assigned by |
|---|---|---|---|
#usual |
https://fhir.senaite.org/NamingSystem/servicerequest-id |
Sample ID — matches the usual identifier on the originating ServiceRequest | SENAITE (server-assigned) |
#secondary |
Agreed per-integration | External ID — matches the secondary identifier on the originating ServiceRequest | API consumer |
Instruments registered in SENAITE carry two explicit identifiers:
| Use | System | Description | Assigned by |
|---|---|---|---|
#usual |
https://fhir.senaite.org/NamingSystem/device-id |
Device ID — the internal identifier assigned by SENAITE | SENAITE (server-assigned) |
#secondary |
Agreed per-integration | External ID — the asset register number or identifier from the consumer's system | API consumer |
The #usual identifier must not be supplied by the client on POST.
Practitioners carry two explicit identifiers:
| Use | System | Description | Assigned by |
|---|---|---|---|
#usual |
https://fhir.senaite.org/NamingSystem/practitioner-id |
SENAITE Practitioner ID — internal identifier generated by SENAITE | SENAITE (server-assigned) |
#secondary |
Agreed per-integration | External ID — the practitioner identifier from the API consumer's system (e.g. national provider number, hospital staff ID) | API consumer |
The #usual identifier must not be supplied by the client on POST.
Organizations carry two explicit identifiers:
| Use | System | Description | Assigned by |
|---|---|---|---|
#usual |
https://fhir.senaite.org/NamingSystem/organization-id |
SENAITE Client ID — internal identifier generated by SENAITE for the submitting client organisation | SENAITE (server-assigned) |
#secondary |
Agreed per-integration | External ID — the organisation identifier from the API consumer's system (e.g. national organisation ID, internal client code) | API consumer |
The #usual identifier must not be supplied by the client on POST.