SMART on FHIR JavaScript Library
This is a JavaScript library for connecting SMART apps to FHIR servers. It works both in browsers (IE 10+) and on the server (Node 10+).
Installation
From NPM
npm i fhirclient
From CDN
Include it with a script
tag from one of the following locations:
From NPM Release:
- https://cdn.jsdelivr.net/npm/fhirclient/build/fhir-client.js
- https://cdn.jsdelivr.net/npm/fhirclient/build/fhir-client.min.js
Latest development builds from GitHub:
- https://combinatronics.com/smart-on-fhir/client-js/master/dist/build/fhir-client.js
- https://combinatronics.com/smart-on-fhir/client-js/master/dist/build/fhir-client.min.js
Browser Usage
In the browser you typically have to create two separate pages that correspond to your
launch_uri
(Launch Page) and redirect_uri
(Index Page).
As Library
<!-- launch.html -->
<script src="./node_module/fhirclient/build/fhir-client.js"></script>
<script>
FHIR.oauth2.authorize({
"client_id": "my_web_app",
"scope": "patient/*.read"
});
</script>
<!-- index.html -->
<script src="./node_module/fhirclient/build/fhir-client.js"></script>
<script>
FHIR.oauth2.ready()
.then(client => client.request("Patient"))
.then(console.log)
.catch(console.error);
</script>
As Module
import FHIR from "fhirclient"
// Launch Page
FHIR.oauth2.authorize({
"client_id": "my_web_app",
"scope": "patient/*.read"
});
// Index Page
FHIR.oauth2.ready()
.then(client => client.request("Patient"))
.then(console.log)
.catch(console.error);
Server Usage
The server is fundamentally different environment than the browser but the API is very similar. Here is a simple Express example:
const fhirClient = require("fhirclient");
// This is what the EHR will call
app.get("/launch", (req, res) => {
fhirClient(req, res).authorize({
"client_id": "my_web_app",
"scope": "patient/*.read"
});
});
// This is what the Auth server will redirect to
app.get("/", (req, res) => {
fhirClient(req, res).ready()
.then(client => client.request("Patient"))
.then(res.json)
.catch(res.json);
});
Read the full documentation.
License
Apache 2.0