POST

React FHIR Client

zeevo

React Hooks for `fhirclient`.

1. Install it using npm

`npm i react-fhirclient
`

or with `yarn`:

`yarn add react-fhirclient
`

2. Add FhirClientProvider to your ReactDOM tree.

ReactDOM.render( <React.StrictMode> <FhirClientProvider> <App /> </FhirClientProvider> </React.StrictMode>, document.getElementById("root"), );

3. Use useFhirClient() in your hooks.

import { useState, useEffect } from "react"; import { useFhirClient } from "react-fhirclient"; function App() { const [patient, setPatient] = useState(); const fhirclient = useFhirClient(); return <div className="App"></div>; } export default App;

4. Make FHIR Requests in useEffect

import { useState, useEffect } from "react"; import { useFhirClient } from "react-fhirclient"; function App() { const [patient, setPatient] = useState(); const fhirclient = useFhirClient(); useEffect(() => { const getPatient = async () => { if (fhirclient) { const patient = await fhirclient.request( `Patient/${fhirclient.patient.id}`, ); setPatient(patient); } }; getPatient(); }, []); return ( <div className="App"> <pre> <code>{JSON.stringify(patient, null, 2)}</code> </pre> </div> ); } export default App;

FAQ:

"Why do we need the `if (fhirclient)` guard?"

Due to authentication with the authorization server being an asynchronous process, there will be a moment when the client is not instantiated and thus will be `undefined`.

In the Future

Supporting any FHIR client would be beneficial to the community. If you have a FHIR client that you want supported, raise an Issue describing it.