Build an AWS Medical Comprehend "AI" Patient Facing FHIR App
A patient wants to connect their medical records to an Artificial Intelligence (AI) to figure out what medical conditions are documented about them. We will use a quasi-GPT alternative, AWS Medical Comprehend.
What we are building
How we will make it
AWS Medical Comprehend
This is a HIPAA-eligible natural language processing (NLP) service that uses machine learning to extract health data from medical text. No machine learning experience is required.
[I wish I got paid by amazon, but I don't]
Steps to Create an AI AWS Medical Comprehend App with FHIR
Steps:
- [Register an App]
- Patient Logs In
- Patient Authorizes
- App gets list of documents via DocumentReference
- [App gets documents via Binary]
- [App extracts text from pdf]
- App sends text to Jeff Bezos ðļ
- Render the result
For prior videos on how to register apps
Today we will use SmartHealthIT sandbox, which does not require registration and you don't need Binary to get the document. If you are looking for how to register an app, look at some prior videos on the site.
Today's Code
https://repl.it/@patientDev/ai-comprehend-smarthealthit
To use on your own, create your own repl account and click fork.
You should get something that looks like this after you have forked it
You need to put your own repl url in your own launch.html redirect
Now launch your webapp!
You should see something like this at your own repl url
Click on the link to login like a patient (pre-filled because of smart health it)
Patient approves
You see something like this (after a few seconds)
How does that work?
Launch.html tells FHIR Server - "Hey, I'm launching here, do the OAuth2 thing. Once you are done, send me back to the following url"
App finishes OAuth2, then gets documents about a specific patient and ships them to AWS
AWS Comprehend
(Docs at https://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/ComprehendMedical.html)
I set this up for you already in app.html (please note, I changed the api-key because the billing charge was too much to leave public)
Essentially, create a lambda and hook it into API gateway ... here is the lambda
var AWS = require('aws-sdk');
var comprehendmedical = new AWS.ComprehendMedical();
exports.handler = async (event, context, callback) => {
var obj = {}
var params = {
Text: event.text
}
var entities = await comprehendmedical.detectEntitiesV2(params, function (err, data) {
if (err) { console.log(err, err.stack); }// an error occurred
else { obj.out = data; }// successful response
}).promise();
let response = {
statusCode: 200,
body: obj
};
return response;
};
App renders results
That's your AI power patient facing FHIR App
Thanks for joining
Learn more at www.patient.dev