@ikim-ui/fuego-fhir-client
Fuego FHIR client
FuegoClient extends @ikim-ui/fhir-client with search parameter types generated from Fuego's FHIR R4 CapabilityStatement. It uses the existing search and CRUD interface.
import { FuegoClient } from '@ikim-ui/fuego-fhir-client';
const client = new FuegoClient({ serverUrl: 'https://fuego.example/fhir' });
const result = await client.search({
resourceType: 'Patient',
searchParameters: { family: 'Example' },
});
if (result.success) {
const patients = result.resources();
}
Authentication is configured separately through the base client's options or interceptors.
To regenerate the types, replace metadata.json with the target server's CapabilityStatement and run:
yarn workspace @ikim-ui/fuego-fhir-client generate
The shared generator requires Python 3.12. The included snapshot describes Fuego 0.11.1+933347b, with 146 resource types. Composite and special search parameters use the shared generator's string representation. Search controls omitted from the metadata, such as _count and _sort, can be supplied through rawParams.
Browser SMART authentication
import { FhirProvider, useFhirAuth, useFhirClient } from '@ikim-ui/fuego-fhir-client/react';
<FhirProvider
clientId="my-public-client"
scopes="openid fhirUser system/Organization.rs"
issuerUrl="https://fhir.example/fhir"
basePath="/app/example"
fallback={<p>Loading…</p>}
>
<App />
</FhirProvider>
The provider owns login, session restoration, refresh, expiry, and logout.
Construct the router inside its children: the provider handles
<basePath>/fuego-callback before mounting them. Register that URL with the
identity provider and serve the SPA there; no callback route is needed.
Configuration is fixed for the lifetime of the provider.
useFhirAuth()returnsstatus,user,expiresAt,login(returnTo?),logout(),isLoggingIn,isLoggingOut, anderror.useFhirClient()returns the authenticated FHIR client.onLogoutruns after local session clearing, including on expiry. Use it to cancel requests and clear app caches. Logout does not end identity-provider SSO.fallbacksupplies loading UI;renderError(error)supplies startup error UI. WithoutrenderError, startup errors reach the nearest error boundary.
Status is authenticated, unauthenticated, or expired. User contains
username, displayName, and practitionerId. expiresAt is milliseconds since
epoch, or null when refreshable/unknown. Action errors are exposed as error
and reject the returned promise.
returnTo includes the base prefix, e.g. /app/example/assignment. Only
same-origin destinations within the app base are accepted. sanitizeReturnPath
can restrict them further. serverUrl overrides requests for a development
proxy while the authorization audience remains issuerUrl. callbackPath
and loginPath default to /fuego-callback and /login, relative to the base.
React is an optional peer dependency. Non-React consumers can use the controller
from /auth; React applications do not need to create one.