You are viewing an old version of this page. View the current version.
Compare with Current
View Page History
Version 1
Next »
Need help? Contact us:
The Epic FHIR adapter is designed to provide a template for getting started with Epic FHIR integrations, including:
Authenticating with the Epic FHIR Server via OAuth2.0 using the OAUTH Library.
Generating FHIR Resources using the FHIR Library.
Performing various interactions against the Epic FHIR Server including create, read, search, and extended $operations.
This component can be customized and adapted according to your workflow needs.
How to use it:
STEP 1: Login or sign up for Epic On FHIR to access the Testing Sandbox and create a Client App called "Iguana"
Refer to Set up your Epic FHIR Sandbox for the sign up process, creating and client and gathering the authentication details needed for the Epic FHIR Adapter.
STEP 2: Import the Epic FHIR Adapter component in Iguana
See Create a Component if this is your first time!
STEP 3: Configure the ClientId and PrivateKey custom fields and click Edit to open the Translator
Enter the ClientId and PrivateKey certificate path.
Using the information provided, the component will run through the authentication workflow and set the Key and KeyExpiry value of the obtained access token automatically.
STEP 4: If needed, use the FHIR Profiling Tool to generate and replace the FHIRresources.lua schema file
The FHIRresources.lua file included in the project contains the schema for a FHIR R4 Patient and Appointment resource. This file can be replaced with the schemas you require.
See FHIR Profiling Tool for how to generate the FHIRresources.lua file containing the FHIR resource schemas you need to create.
STEP 5: Create and map your FHIR Resource
Using the FHIR Library, FHIRCreate generates an empty FHIR Resource for you to map.
local NewPatient = FHIRcreate{resource='Patient'}
-- then populate your FHIR resource with data
STEP 6: View and modify the examples for creating and searching for a patient on the Epic FHIR Server
Set live=true to invoke each interaction.
-- Create the new patient
E:create{resource="Patient",parameters=NewPatient,live=true}
-- Search for our patient
local Search = {
family = 'Lufhir',
given = 'Sakiko',
birthdate = '1994-07-22'
}
local Status, R = E:search{resource="Patient",parameters=Search,live=true}
View the resultant patient search in the Annotations:
How the EPICFHIR Library works:
EPICFHIRclient - sets up the adapter framework
Sets up the EPIC FHIR adapter framework, adding the various method modules to a metatable and storing the configurations added to the custom fields.
EPICFHIRauth - authenticates with the Epic FHIR Server
The EPICFHIRauth function, builds and makes the HTTP POST token request to obtain the access token required for any resource requests against the FHIR Server.
A separate CreateJWT function creates the JSON Header and Payload components of the JWT and calls the OAUTH Library to sign and return the JWT required for the token request.
If the token requests is successful (HTTP 200 response), the token and token expiry returned are set to the Key and KeyExpiry custom fields respectively.
EPICFHIRcustom - makes API requests and returns the response
EPICcustom takes in any API requests and parameters to make the API call and return the response.
First the function checks if the token Key exists and performs the OAuth2.0 authentication workflow to obtain the token to be used in subsequent requests.
Uses the passed configurations API request parameters - the method (ex. post), API (ex. Patient) and parameters for the call (ex. the patient resource to be created) - to build and carry out the appropriate HTTP request.
For resiliency, the Retry Library is used to retry any failed attempts and the response is handled and returned.
EPICFHIRcreate - prepares the arguments and calls EPICFHIRcustom for an FHIR Resource Create request
EPICFHIRcreate prepares the arguments and calls EPICFHIRcustom for an FHIR Resource Create HTTP POST request.
EPICFHIRsearch - prepares the arguments and calls EPICFHIRcustom for an FHIR Resource Search request
EPICFHIRsearch prepares the arguments and calls EPICFHIRcustom for an FHIR Resource Search HTTP GET request.
EPICFHIRreadResource - prepares the arguments and calls EPICFHIRcustom for an FHIR Resource Read request
EPICFHIRreadResource prepares the API endpoint and arguments to call EPICFHIRcustom for an FHIR Resource Read HTTP GET request.
EPICFHIRoperation - prepares the arguments and calls EPICFHIRcustom for an FHIR Resource Extended Operation request
EPICFHIRoperation prepares the arguments and calls EPICFHIRcustom for an FHIR Resource Create HTTP GET or POST request.
A FHIR operation is extended functionality unique across FHIR Servers. Extended operations on a resource use a $ in front of the operation. For example, when calling EPICFHIRcustom, the passed api argument may be “Patient/$match“ to perform a more detailed patient matching search.