npm.io
0.1.3 • Published 7h ago

@ikim-ui/fuego-fhir-client

Licence
Version
0.1.3
Deps
2
Size
2.4 MB
Vulns
0
Weekly
0

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() returns status, user, expiresAt, login(returnTo?), logout(), isLoggingIn, isLoggingOut, and error.
  • useFhirClient() returns the authenticated FHIR client.
  • onLogout runs after local session clearing, including on expiry. Use it to cancel requests and clear app caches. Logout does not end identity-provider SSO.
  • fallback supplies loading UI; renderError(error) supplies startup error UI. Without renderError, 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.