How to Easily Integrate with Epic & Cerner Using SMART on FHIR and Medblocks Plasma
Summary
TLDRSoftware developer Eric demonstrates Medblocks Plasma, a platform that streamlines building integrated health IT apps connecting to EHRs like EPIC and Cerner. He shows how Plasma can quickly connect an existing diabetes risk scoring app to multiple EHR environments with minimal code changes. The platform normalizes EHR differences allowing developers to avoid complex branching logic. He recommends developers with existing auth use SSO to link EHR accounts while new apps can leverage EHR login. He invites developers to try Plasma to accelerate connected app development.
Takeaways
- 😀 Eric worked at Epic for 8 years building their EHR software
- 📝 Medblocks Plasma platform makes integrating health apps with EHRs simple and fast
- 👨💻 Goal is to open up health IT industry to more third party developers and innovation
- 📱 Built a quick diabetes risk scoring app to demo integration with EHRs
- 🔌 Added SMART API sandbox using simple configuration
- 💡 Pulled patient data from FHIR APIs to prefill form fields
- ⚙️ Easily connected app to Epic and Cerner sandboxes with no code changes
- 🌏 Normalizes API requests across different EHR types under the hood
- 🔗 Can configure SSO to link user accounts across systems
- ✅ Platform enables developers to focus on their app, not complex integrations
Q & A
What is the purpose of the Medblocks Plasma platform?
-The Medblocks Plasma platform aims to make it as simple, fast, and easy as possible to build integrated health IT applications that can integrate with different EHRs. It is designed to open up health IT development to third party developers to help drive innovation in the industry.
What programming language and framework was used to build the diabetes risk scoring app demo?
-The diabetes risk scoring app demo shown was built using React.
What EHR systems does the Plasma platform currently integrate with?
-The Plasma platform currently integrates with major EHR systems like EPIC, Cerner, and Allscripts. It also works with the SMART Health IT sandbox.
What FHIR resources does the demo app use to get patient data?
-The demo app uses the Patient, Observation, and other FHIR resources to get the patient gender, age, BMI, and smoking status data.
What authentication standards does the Plasma platform support?
-The Plasma platform supports the SMART on FHIR authentication standard to securely connect apps with EHR systems.
How can a developer launch their integrated app to users?
-A developer can provide a launch URL on their website, embed the URL in an EHR system, or use their own login system and link accounts to the EHR identities.
What is the benefit of using the Plasma client SDK in apps?
-The Plasma client SDK makes it easier to interact with the Plasma platform by providing a typed API instead of calling REST endpoints directly.
How long does it take to connect an existing app to a new EHR system?
-Using the Plasma platform, it takes only about 60 seconds to add a new EHR platform and environment to connect an existing app.
Can developers use their own identity management system?
-Yes, developers can use their own identity platform and link EHR user accounts to it via single sign-on provided by Plasma.
Where can I learn more about the Medblocks Plasma platform?
-You can visit the Medblocks website and signup for early access to try out the Plasma platform yourself and integrate apps with EHRs.
Outlines
😀 Introducing Eric, Medblocks, and demo app
Eric introduces himself as a software developer with 8 years experience at EPIC building EHRs. He started Medblocks Plasma to make it easy for developers to build integrated health apps. He demonstrates a sample diabetes risk scoring app and shows how he can integrate it with EHRs using Plasma.
😃 Connecting app to SMART sandbox
Eric adds the SMART sandbox as a platform in Plasma. He launches the app from the patient/clinician test screen, logs in as a provider, selects a patient, and approves the app. Data is now loaded from the SMART sandbox FHIR APIs.
😄 Integrating real EHR data into app
Eric installs the Plasma client SDK and writes code to query gender, age, BMI, smoking status from the FHIR API and prefill the form. He tests it and shows real patient data loaded from the SMART sandbox EHR.
😁 Connecting to EPIC and Cerner EHRs
Eric adds EPIC and Cerner platforms to his app in Plasma. With no code changes, he launches his app from EPIC and Cerner sandboxes successfully, loading in real patient data.
💡 SSO and managing user authentication
Eric explains how developers can implement SSO by calling an endpoint to get user identity information. He suggests linking accounts for existing logins or using EHR login for new apps.
Mindmap
Keywords
💡EHR integration
💡Interoperability
💡FHIR
💡SMART on FHIR
💡Normalization
💡SDK
💡SSO
💡Launch workflow
💡OAuth
💡Sandbox
Highlights
The Medblocks Plasma platform makes it simple, fast and easy to build integrated health IT applications.
The goal is to open up health IT development to third party developers to help innovate in ways that major EHR vendors haven't been able to.
The Plasma platform handles normalizing requests across different EHRs so developers don't need custom integration code for each one.
The Plasma client SDK provides easy access to the Plasma REST API for querying and updating FHIR resources.
The SMART health IT sandbox provides sample FHIR data for testing integrations before connecting to real EHRs.
The Plasma platform allows launching apps in context of a patient for streamlined clinician workflows.
Plasma supports integrating with both provider-facing and patient-facing apps with the same API.
Plasma handles app registration with EHR vendors like EPIC to get required credentials.
Plasma environments represent individual client endpoints for testing and production.
Plasma provides SSO support to link user accounts across apps and EHR login.
For new apps, developers can use the EHR login as the identity provider.
For existing apps, users can link EHR account to their login through SSO.
Minimal custom code is needed to populate app forms from EHR data.
The Plasma platform and client SDK handle all complex integration tasks.
Early access to Plasma is available for initial users and development partners.
Transcripts
And I'm gonna go ahead and copy mine. You're gonna do both EPIC and Cerner in 60 seconds?!
Yes, and now you'll see it's connected to EPIC hyperspace, which is EPICs EHR. So that's actual
data coming from EPIC Yes, exactly. It's.. Hey Eric. Nice to have you you've got a very
interesting background. So How about we start from there? Sure. Yeah, I'm a software developer
I've been a software developer for about 10 years and eight years of that was spent working at EPIC
building helping to build their EHR software. So right now you've been working with us for
some time now. We've been helping a lot of clients with their integrations with EPIC,
Cerner and other EHRs. What are we doing today? Sure today we're going to show off the Medblocks
plasma platform, which is a platform used to make it as simple fast and easy as possible
to build integrated health IT applications that can integrate with different EHRs and
It's cross-platform. So it works with any of the major EHRs so before we go into the demo,
I'd like to just ask you why you started working on the solution and yeah you already had most of
this in your mind before you came into Medblocks. And so I wanted to know what prompted you to build
these. Yeah, good question. Well, I'm interested in the health IT industry that's where I worked,
like I said, for eight years and I like making apps myself. I find it enjoyable. So it started
as just tinkering around making my own health apps and trying to find the best solution for
that and I expanded on it because I believe this has the potential to really open the
health IT industry to third party developers to make the industry better by Innovating in ways
that maybe some of the major EHR vendors haven't been able to do so that's ultimately the goal is
to make this is to open this up for third-party developers to help innovate on the industry.
Yeah, I totally agree with that and I think Big EHR will never be able to do everything well,
and you have so many other people out there who can innovate who can bring more to the table and
I think it makes sense to open up the ecosystem to a wider range of people too. So, cool, so let's
see something. As a as a really basic demo I want to take an existing app that I've created and show
how I can use the plasma platform to integrate this with multiple EHRs in just a few minutes and
so the app that I'm demonstrating here is a very simple risk scoring app it's called the Cambridge
Diabetes risk score and I have, you can find more information about it right here, but essentially
it's just a form that a physician might use to assess a patient's risk for developing Diabetes
and you can see that as we update the parameters here, the patient's score is updated accordingly,
and this is just a basic react app that I've built and I'm going to demonstrate how to
use the plasma platform to integrate that with different EHRs so the first step would be to,
and by the way interrupt me if you have any questions or anything, Yeah, yeah,
I would say this is something that a developer usually would have, it's easy to build but they're
then stuck on how to exactly integrate this with an existing EHR. That's when they usually come
to us. They approach us ask us for help. So I think this is a pretty typical application.
Exactly and it can be tricky to do the integration but with this platform, it makes it extremely
simple so the first step would be to to locate your instance of plasma and here I'm running it
locally on localhost:3000 and you would log in, this is password protected so everything you put
in here is is behind a protected gateway and you'd go to your account, I'm already logged
in here. And the first step is to create a new project here, so I'm going to create a project
and a project represents an application. So here let's just put diabetes risk score as the type of
project and you'll select what type it is, this has to do with the authentication workflows for
SMART on FHIR. So this is a clinician app because a clinician is the intended user and we'll we'll
have this app, we'll have the clinician login before using the app. So I'm going to choose
clinician and I'm going to set the location of my app as localhost:3001/main. That's just where I'm
currently hosting this sample app. Okay, so I'll save my project and now I've got my diabetes risk
score app here. The next step is to specify the EHRs I want to connect to and the health systems
endpoints that I want to connect to, so to start off with we're going to use the SMART health IT
Sandbox just for testing and then once we're finished I'll show you how to connect it to
EPIC and Cerner, which are common EHRs that people want to connect to. So the first thing
I'm going to do is add a platform and here's where I select the EHR type. We have some of the major
ones listed or you can always choose other, I'm just going to call this SMART and I'm going to set
the scope here to just basically give me access to everything from the patient and user contexts
and then I'm going to specify launch/patient to indicate that when I launch the app I want
to select a patient before continuing. The last step is to choose my health system endpoint and
so you can imagine that you might be supporting multiple health systems that are all using EPIC,
for example, and they all each have their own individual endpoints. That's where you would
come. Here's where you would configure that I'm just going to choose the SMART sandbox with this
quick button and then I'm going to associate this environment with my SMART platform.
Okay, so that's all the configuration that needs to be done and now my app is
ready to go and to be launched with the Plasma platform. I can quickly test that by going to
the patient/clinician test screen. I can choose my project here and choose the environment that
I want to launch it from. Here's the launch URL that you would use, so you could provide a link
to this on your website or configure the EHR to launch this link if that's what you want to do
or we can click launch here and it's going to take us through the authentication workflow. So first,
I'm going to log in as a physician and then since I chose launch/patient I need to choose a patient
to launch this app in the context of,
I'll approve the application and now I'm brought to my app and it's actually a little bit more
complicated than I thought, and it's actually working right now, it's connected to the EHR so
I can make queries to that EHR but of course the app looks the same as it did when I first showed
it because we we haven't changed any of the code to actually utilize that data from the
EHR yet. Purpose of this demonstration is I want to pull the patient's gender, age, BMI,
and smoking history, and I want to pre-populate this form with those data points so that way it
just optimizes the physician's workflow. They're not required to enter these fields in because we
can actually get that data from the EHR itself and it may be possible some of this other data,
but it's just for simplicity sake, I'm just going to get those four things. Let's do it.
Alrighty, so the first step that we want to do is we want to install the Medblocks Plasma
client SDK and that just gives us an SDK to work with the Plasma platform. It's optional, you can
just call our REST API directly, but this makes it a little bit easier. So I'm going to install
Medblocks Plasma client, when it's got install the Medblocks plasma client SDK.
There we go, now that it's installed I'm going to import it into my project.
Okay, so if you'll give me just a moment I'm going to write some code to actually query the data
from the EHR using the Plasma client SDK. So, I'm going to make a function called load patient data,
that function will take a patient ID and it's going to load in the patient data. So,
the first thing I need to do is initialize my Plasma client,
I'll provide that Plasma URL, then I'm going to get the patient information and this is all
type strongly type. So, here I'm going to set my patient equal to Plasma client.read patient
pass in the patient ID, I'm going to get the smoking observations. So, the smoking history is
returned as an array of observation resources and I'm going to use the Plasma client.read
smoking status. That's in my patient ID here and lastly, I'm going to get
the BMI information, which is also an array of observations. So, it's a BMI observations
and the way I can do that is by calling read patient resource, specify that this is an
observation type of resource, and I'll pass in the patient ID. The name of the resource that I
want to provide, and any search parameters that I want to give, in this case I want to search
by the BMI code, which I've already specified right here 39156-5 that's the code used for the
BMI. So that's going to do a filter query and I'm sorry, this should be search patient resource, so,
it's going to search observations on this patient that match the given code here. So, now I have all
the information that I need from the EHR in order to pre populate my form. Let me just return these
and the last thing I need to do is actually pre populate my form. So, give me one second to do
that as well. This is a react app, so, I'm going to create a use effect and this is going to be
dependent on the patient ID. So, as soon as we have set the patient ID, I want to run this. We
will call, set is loading to be true, that shows a loading spinner on the screen and then we're going
to call a load patient data with the patient's ID and then I'm just going to autocomplete this, here
I'll explain it. Okay, so we're just calling load patient data to load the data from the EHR,
and now that we have this data, we're going to set the fields in the form so that they
are initialized properly. So, the first thing I want to do is I just have it saving off the data
into some state variables in case I want to use them later. So, let's say save patient data and
then I want to initialize fields in the form or this, I have a function that I've created called
get params from FHIR resource that takes those exact FHIR resources and that's going to give me
the gender, the age, the BMI, and the smoking status. So, with that I can call set gender,
set age, which is expected to be a string set, smoke status,
and set BMI. Okay, so took me a bit of, a little bit of time to write the code,
but it's not much code at all. Basically, I need to initialize my Medblocks Plasma client with the
URL of the Plasma instance that I'm running I can do whatever FHIR queries that are necessary
to perform the actions I need with my app and then here I'm just updating the UI. So, pretty simple
and let's go ahead and save it and test it out and see if it works. I'm gonna come back to the
patient/clinician test and I just remembered one thing I need to change, the last thing I
need to do is, that set is loading to false to hide this, the loading spinner. Okay,
so I'm going to come back to the patient/clinician test screen and I'm going to launch the app in the
SMART health IT sandbox. Once again, I'm going to log in as a physician, Dr. Albertine Orne,
I'm going to select a patient, I'll choose Jeffrey Abbott, approve and now we'll see that
I've added a header here showing the patient's information. Here's his date of birth, age, sex,
smoking history, and BMI and I have pre populated the risk score form with that information.
That's cool. And this is coming from the FHIR API's of the SMART health IT sandbox.
Exactly, and this is a great sandbox to use for testing, but a lot of people want to test it out
on real EHRs like EPIC and Cerner. So, I'll show you how to do that in just about 60 seconds. We
can connect these two EPIC and Cerner sandboxes and not have to change any code at all. So I'll
demonstrate that. The way that we do that is we come back to the diabetes risk score project,
and we need to add those additional platforms EPIC and Cerner. So, I'm going to do that now
and I'm gonna go ahead and copy mine - You're gonna do both EPIC and Cerner in 60 seconds?! -
Yes. Well after you edit it, okay, so I'm going to add a new platform for EPIC, we'll call this EPIC,
I'm gonna add my client ID here and I'm just going to copy the same scope, paste that in
and I'm going to add a new platform for Cerner and set my client ID,
and the scope is actually a little bit different with Cerner. I'll paste in the scope for Cerner.
Now I have configured my client IDs for those two EHRs which is necessary to identify this app,
and then I'll use these quick buttons to add the EPIC and Cerner Sandboxes, and then I will
just associate that with the EPIC and Cerner Sandboxes, and then I will just associate those
environments with my EPIC and Cerner EHR credentials.
That's all, that's necessary, now the app is connected to EPIC and Cerner we can jump back
to the patient/clinician test screen, choose our application, choose the environment that
we want to test it on, and launch it, and now you'll see it's connected to EPIC hyperspace,
which is EPICs EHR. I'll log in as a physician whose login is named FHIR, choose my department,
and now I'm brought to the patient search screen. So, let's just choose the most recent patient
Camilla Beacon, and we will approve, and now you can see it has loaded in Camilla's information,
her gender, age, everything has been pre-populated. - So, that's actual data
coming from EPIC. - Yes, exactly. It's it's coming from the EPIC sandbox environment. So,
this isn't a real person but yes, it's coming from the EPIC EHR and the exact same process would be
used to connect to a live EPIC health system. - Okay, okay, we have 30 seconds for Cerner - Sure,
so it's just as easy. I'm just going to select Cerner. The only thing that changes is my launch
URL, going to launch it, and actually the client ID that I specified for Cerner is a patient facing
app not a provider facing app so, in this case, it's demonstrating a patient logging into the
patient portal but that also just demonstrates that the process is exactly the same for physician
facing apps or patient facing apps. Nothing really changes in terms of the Plasma platform so, here
I'll log in as Nancy Smart, who has two children that she's a proxy for, I'll choose her record,
and accept it, and in just a moment the patient header should load with her information.
There we go, so there's Nancy Smart and this is coming from the EPIC or the Cerner sandbox
environment so the data might be weird but as you can see, it's once again just as easily
loaded data from Cerner's EHR With no changes to my actual application code at all. - That's
really cool like, so let's, I want to look at the application code again, so we have nothing that's
specific for EPIC or Cerner in the code, right? - That's correct. Yes. So one of the things that
we do on our end is that we normalize requests based on the EHR that you've selected so some EHRs
although they're all using FHIR, there are sometimes subtle differences and how you need to
make requests for each individual EHR, and in this case, we've avoided doing any type of branching
in our application code so we're not going to do that. Each individual EHR and in this case,
we've avoided doing any type of branching in our code that would, you know, you might you
might see code that's checking if this is EPIC do it this way or if this is Cerner do it that way,
instead we've got a consistent API that works across all the EHRs that we support and you'll
never have to make changes to your code in the sense of branching out on different EHRs. - I
think it's a pretty good live demo usually things don't work this smoothly. Yeah alright,
so Eric so let's say that you know people use the Plasma Portal and they connect their application.
So they have an existing application. They just write a bunch of code and they go to
the Plasma Portal and then configure all of their environments, right? So take me through
what this would look like for an average developer integrating with multiple EPIC hospitals. - Sure,
so If you're a company and suppose you've got a handful of EPIC clients that want to use your app
and install it the process on your end is to first register your app with the EPIC EHR and that is
to go to EPIC's App registration page, create an account and register your app and receive a client
ID, and now that you've got the client ID then you put, you save it in the Plasma platform one time
and you don't really need to worry about it after that to connect to all the the EPIC clients that
you want to connect to you would configure those in that environment screen you'd configure the
endpoints for each of the environments. So let's say it's Mayo Clinic they would have an endpoint
for their FHIR server that you would configure. Typically with EPIC there's a test server and a
prod server and you use test for testing before you go to production so you probably have two
endpoints there one for test and one for prod and those would each have unique launch IDs and
you've got that URL there, the launch URL, and you can you can launch that URL from anywhere
that you want. You can put it on the home page of your website or like I said, you can embed
it in the EHR if you if you'd like. - Application developers might have many ways of Launching their
application, right? They might have their own login mechanism. They may want to Use EPIC or
Cerner as their login provider What would you suggest and What's your recommendation here? -
That's a great question and it's something that comes up with a lot of the requests that we get,
a lot of developers have an existing user authentication system and they want to add
SSO with the EHR to basically associate users of the EHR with their identity platform, so
you can stick to the workflow that I just demonstrated, which is to launch the app,
log in through the EHR, and continue working in that way. However, we do provide SSO information
if you want to implement single sign-on for your application so you can call an endpoint and get
the identity information about the logged in user and you can choose how you want to implement that.
My recommendation would typically be have your users log in with your existing login platform
and then provide a mechanism for them to link their account with whichever EHR is relevant,
so they would click a button, link this account. They'd be brought to let's say EPIC's EHR they can
log in there and from after that point you can get the identity information about that user and then
link the account within your own platform. - Got it. So for people who already have Something to
manage their login, they just link it within their application and we get all of that information,
for people starting new they can also opt to use the EPIC or Cerner as their login mechanism. -
Yes, exactly yeah, if they're starting from scratch they can log in through EPIC and they
can still get that identity information and use that as the basis for their own identity platform
that they want to build. - So the Medblocks Plasma platform is on early access right now
and we do have limited offer going on for the initial few people who want to enroll with us,
and if you are looking to integrate with EPIC, Cerner, Allscripts and any of these EHRs and
you don't want to write all of the code yourself you can give us a try and just see how it goes,
and you know that there's a link down in the description below. You can send me an email,
you can fill out the form on our website, anything is fine.
Yeah, we have this new platform and we hope that it helps more developers connect to EHRs faster
so that you can focus on your application and you let us take care of connecting the
application to the EHR for you. So thanks again for watching and we'll see you in the next one!
関連動画をさらに表示
Build your own EHR Integrations using Open Source
5 Micro SaaS Ideas I Can't Believe No One's Built Yet 🧐
6 Ways to Boost Your Coding Productivity with Amazon Q Developer
Appointment Scheduling - DrChrono EHR Setup & Appointment Scheduling Demo Series
Gemini API and Flutter: Practical, AI-driven apps with Google AI tools
Hugging Face + Langchain in 5 mins | Access 200k+ FREE AI models for your AI apps
5.0 / 5 (0 votes)