Underlying all IT architectures are core systems of records that are often not readily available due to their complexity and connectivity concerns. System APIs provide a means of hiding that complexity from the user while exposing data and providing downstream insulation from any interface changes or rationalization of those systems. This API provides an implementation best practice to expose EHR data from systems like Epic via a set of RESTful FHIR services in RAML 1.0, making it easy to consume within an enterprise.
This EHR Implementation is one of many components included in Accelerator for Healthcare. This API provides organizations with connectivity assets that accelerate project delivery in healthcare, including pre-built API designs and implementations that support core healthcare business processes. Contact info@mulesoft.com for more information.
This template is subject to the conditions of the MuleSoft License Agreement. Review the terms of the license before downloading and using this template. You can use this template for free with the Mule Enterprise Edition, CloudHub, or as a trial in Anypoint Studio.
As a user of Healthcare API-led connectivity web portal, I want a microservice to act as a system API to provide services to upper layers of the architecture. This includes creation, modification, and retrieval of medical data from an EHR system.
EHR System API is part of the Healthcare Templates Solution and uses the standardized FHIR structures version 3.0.1 STU3.
The API is defined using RAML 1.0 to provide type information for validation of requests and to help with the data transformation during development by providing useful metadata.
The following FHIR objects and operations are implemented in this API:
- AllergyIntolerance - search, update, create
- Appointment - search, create
- Condition - search, update, create
- Patient - search, read, update, create
- Practitioner - search, read, update, create
- Schedule - search, create
- Slot - search, read, update, create
To run this template, there are certain preconditions that must be considered. Failing to do so can lead to unexpected behavior of the template.
This template uses SOAP services defined by WSDL files located in the src/main/resources/wsdl folder.
Simple steps to get Healthcare EHR System API running.
If you are new to Mule, download this software:
Note: Anypoint Studio requires JDK 8.
In Studio, click the Exchange X icon in the upper left of the taskbar, log in with your Anypoint Platform credentials, search for the template, and click Open.
After you import your template into Anypoint Studio, follow these steps to run it:
- Locate the properties file
mule.dev.properties
, in src/main/resources. - Complete all the properties required per the examples in the "Properties to Configure" section.
- Right click the template project folder.
- Hover your mouse over
Run as
. - Click
Mule Application (configure)
. - Inside the dialog, select Environment and set the variable
mule.env
to the valuedev
. - Click
Run
.
Fill in all the properties in one of the property files, for example in mule.prod.properties and run your app with the corresponding environment variable to use it. To follow the example, use mule.env=prod
.
When creating your application in CloudHub, go to Manage Application > Properties to set all environment variables detailed in "Properties to Configure".
In Studio, right click your project name in Package Explorer and select Anypoint Platform > Deploy on CloudHub.
To use this template, you need to configure properties either in a properties file or in CloudHub as Environment Variables.
-
http.port
8081
-
allergyintolerance.service
AllergyService
-
allergyintolerance.port
AllergyServicePort
-
allergyintolerance.address
http://example.com/allergyService
-
appointment.service
AppointmentService
-
appointment.port
AppointmentServicePort
-
appointment.address
http://example.com/appointmentService
-
condition.service
ConditionService
-
condition.port
ConditionServicePort
-
condition.address
http://example.com/conditionService
-
patient.service
PatientService
-
patient.port
PatientServicePort
-
patient.address
http://example.com/patientService
-
practitioner.service
PractitionerService
-
practitioner.port
PractitionerServicePort
-
practitioner.address
http://example.com/practitionerService
-
schedule.service
ScheduleService
-
schedule.port
ScheduleServicePort
-
schedule.address
http://example.com/scheduleService
-
slot.service
SlotService
-
slot.port
SlotServicePort
-
slot.address
http://example.com/slotService