Getting Started
Overview
GenHealth provides access to a foundational predictive analytics model for various healthcare use cases. This model is extremely flexible and can be used as part of an existing workflow, or be in a standalone manner for a wide variety of use cases.
📝 Patient History Builder
Private beta
The patient history builder is currently in private beta. If you would like access to the API, please sign up for an account through the main site and then email [email protected] to ask for access
. The private history builder will let you:
- Create a custom patient history: You may use demographic data, ICD diagnosis codes, CPT procedure codes, time gap tokens, and NDC prescription medication codes to create a representation of a patient history for input into our predictive model.
- Generate a set of simulated patient futures: Once a patient history is created, you can generate a set of predicted futures.
- Explore the aggregated set of patient futures: Use our graphs to explore the set of predicted future medical events, or download the JSON file directly to use in analysis.
To access the history builder, first:
- Create an account Log in, or Sign Up to create an account through the GenHealth main site.
- Email GenHealth at [email protected] to ask for
predict
permissions to be added to your account - Navigate to the History Builder and begin creating patient histories and simulating futures.
⚙️ Inference API
Private beta
The inference API is currently in private beta. If you would like access to the API, please sign up for an account through the main site and then email [email protected] to ask for access
GenHealth also offers programmatic access to our inferenceAPI.
To get access please follow the instructions below:
- Login to your GenHealth API account and navigate to API Keys - https://genhealth.ai/account/api-keys
- Create an API key and copy the value
- Send a request to the API.
Example:
curl -XPOST 'https://api.genhealth.ai/predict' \
-H 'Content-Type: application/json' \
-H 'Authorization: Token YOUR_TOKEN_HERE' \
--data '{"history": [{"code": "64","system": "age","display": "64"},{"code": "E11","system": "ICD10CM","display": "Type 2 diabetes mellitus"},{"code": "E11.3551","system": "ICD10CM","display": "Type 2 diabetes mellitus with stable proliferative diabetic retinopathy, right eye"}], "num_predictions": 1, "generation_length": 10, "inference_threshold": 0.95, "inference_temperature": 0.95}'
import requests
headers = {
'Content-Type': 'application/json',
'Authorization': 'Token YOUR_TOKEN_HERE',
}
json_data = {
'history': [
{
'code': '64',
'system': 'age',
'display': '64',
},
{
'code': 'E11',
'system': 'ICD10CM',
'display': 'Type 2 diabetes mellitus',
},
{
'code': 'E11.3551',
'system': 'ICD10CM',
'display': 'Type 2 diabetes mellitus with stable proliferative diabetic retinopathy, right eye',
},
],
'num_predictions': 1,
'generation_length': 10,
'inference_threshold': 0.95,
'inference_temperature': 0.95,
}
response = requests.post('https://api.genhealth.ai/predict', headers=headers, json=json_data)
fetch('https://api.genhealth.ai/predict', {
method: 'POST',
headers: {
'Content-Type': 'application/json',
'Authorization': 'Token YOUR_TOKEN_HERE'
},
body: JSON.stringify({
'history': [
{
'code': '64',
'system': 'age',
'display': '64'
},
{
'code': 'E11',
'system': 'ICD10CM',
'display': 'Type 2 diabetes mellitus'
},
{
'code': 'E11.3551',
'system': 'ICD10CM',
'display': 'Type 2 diabetes mellitus with stable proliferative diabetic retinopathy, right eye'
}
],
'num_predictions': 1,
'generation_length': 10,
'inference_threshold': 0.95,
'inference_temperature': 0.95
})
});
API Request
The inference API expects a history
array within the body
which is expected to contain an ordered sequence of medical events, demographic data, or meta tokens. For example:
[
{
"code": "64",
"system": "age",
"display": "64"
},
{
"code": "E11",
"system": "ICD10CM",
"display": "Type 2 diabetes mellitus"
},
{
"code": "E11.3551",
"system": "ICD10CM",
"display": "Type 2 diabetes mellitus with stable proliferative diabetic retinopathy, right eye"
},
{
"code": "06-12-month",
"system": "timegap",
"display": "06-12-month"
},
{
"code": "E11",
"system": "ICD10CM",
"display": "Type 2 diabetes mellitus"
},
{
"code": "E11.3551",
"system": "ICD10CM",
"display": "Type 2 diabetes mellitus with stable proliferative diabetic retinopathy, right eye"
}
]
Each object must contain a code
, system
and display
value. A comprehensive list of acceptable codes and inputs can be found below in the systems section.
Creating Patient Histories
For example, to assemble a history for a 71 year old man with diabetes, you need to represent the patient in the history array using two tokens: one to represent the mans' age, and the second using the ICD-10 diagnosis code for diabetes. Every token in a patient's history must use a code from one of the systems described below.
[
{
"system": "age",
"code": "71",
"display": "71",
},
{
"code": "E11",
"system": "ICD10CM",
"display": "Type 2 diabetes mellitus"
},
API Response
The API will response will have the structure as defined below. Example:
{
# an array of arays containing all predictions. each prediction array
# consists of objects which will be either individual predicted events,
# demographics, or meta tokens e.g. timegaps
"predictions": [
[
{
"system": "timegap",
"code": "00-01-month",
"display": "00-01-month"
},
{
"system": "ICD10CM",
"code": "E11",
"display": "Type 2 diabetes mellitus"
},
{
"system": "RXNORM-FREETEXT",
"code": "chlorthalidone",
"display": "chlorthalidone"
},
{
"system": "ICD10CM",
"code": "E11",
"display": "Type 2 diabetes mellitus"
},
{
"system": "RXNORM-FREETEXT",
"code": "levothyroxine",
"display": "levothyroxine"
},
{
"system": "ICD10CM",
"code": "E11.9",
"display": "Type 2 diabetes mellitus without complications"
}
]
],
"history": [
{
"code": "64",
"system": "age",
"display": "64"
},
{
"code": "E11",
"system": "ICD10CM",
"display": "Type 2 diabetes mellitus"
},
{
"code": "E11.3551",
"system": "ICD10CM",
"display": "Type 2 diabetes mellitus with stable proliferative diabetic retinopathy, right eye"
}
]
}
Systems
All elements in the API Request history
array, and all outputted predictions will be elements from the following code systems.
System | Code (example) | Display (example) | Notes | Descriptor |
---|---|---|---|---|
age | 64 | same as system | Can be any between 1-121 | age |
gender | male | same as system | male or female | gender |
timegap | 06-12-month | same as system | This is a meta token to indicate the passage of time without a medical event. Allowed values are: 00-01-month 06-12-month 03-06-month 12-99-month | timegap |
ICD10CM | E11.3551 | Type 2 diabetes mellitus with stable proliferative diabetic retinopathy, right eye | Any valid ICD 10 code. Display value is optional | Diagnoses, Symptoms and Procedures |
CPT4 | 32488 | Removal of lung, other than pneumonectomy; with all remaining lung following previous removal of a portion of lung (completion pneumonectomy) | Any valid CPT code. Display value is optional. | Procedures & Services |
NDC | 00406036562 | Acetaminophen 325 MG / Hydrocodone Bitartrate 5 MG Oral Tablet | Any valid NDC code. Display value option | Drugs |
HCPCS | Q4189 | Artacent ac, 1 mg | Any valid HCPCS code. | Procedures, Services, Products, & Supplies |
RxNorm-freetext | 1921009 | 0.1 ML adalimumab 100 MG/ML Prefilled Syringe | Any valid RxNorm free text display value | Drugs |
To explore diagnosis codes, please see https://athena.ohdsi.org/search-terms/start
♊ Embeddings API
Private beta
The embeddings API is currently in private beta. If. you would like access to the API, please email [email protected]
The GenHealth.ai embeddings API provides a method to generate the embedding for any sequence or history of data. It returns a vector that you can use to run semantic search, training classifiers, or many other use cases.
curl -XPOST 'https://api.genhealth.ai/embeddings' \
-H 'Content-Type: application/json' \
-H 'Authorization: Token YOUR_TOKEN_HERE' \
--data '{"history": [{"code": "64","system": "age","display": "64"},{"code": "E11","system": "ICD10CM","display": "Type 2 diabetes mellitus"},{"code": "E11.3551","system": "ICD10CM","display": "Type 2 diabetes mellitus with stable proliferative diabetic retinopathy, right eye"}]}'
import requests
headers = {
'Content-Type': 'application/json',
'Authorization': 'Token YOUR_TOKEN_HERE',
}
json_data = {
'history': [
{
'code': '64',
'system': 'age',
'display': '64',
},
{
'code': 'E11',
'system': 'ICD10CM',
'display': 'Type 2 diabetes mellitus',
},
{
'code': 'E11.3551',
'system': 'ICD10CM',
'display': 'Type 2 diabetes mellitus with stable proliferative diabetic retinopathy, right eye',
},
],
}
response = requests.post('https://api.genhealth.ai/embeddings', headers=headers, json=json_data)
fetch('https://api.genhealth.ai/embeddings', {
method: 'POST',
headers: {
'Content-Type': 'application/json',
'Authorization': 'Token YOUR_TOKEN_HERE'
},
body: JSON.stringify({
'history': [
{
'code': '64',
'system': 'age',
'display': '64'
},
{
'code': 'E11',
'system': 'ICD10CM',
'display': 'Type 2 diabetes mellitus'
},
{
'code': 'E11.3551',
'system': 'ICD10CM',
'display': 'Type 2 diabetes mellitus with stable proliferative diabetic retinopathy, right eye'
}
]
})
});
Currently the response vector is 800 elements in the embedding.
{"embedding":[-0.3633899688720703,-0.1736675351858139,
-0.21899628639221191,-0.5666848421096802,
-0.8461626172065735,-0.1308348923921585,
2.09614634513855,...]}
Updated about 1 month ago