awacke1's picture
Create app.py
41a1041
raw
history blame
3.12 kB
import streamlit as st
import pandas as pd
from fhirclient import client
from fhir.resources import (patient as fhirpatient,
observation as fhirobservation)
import settings
#pip install fhir.resources fhirclient
from fhirclient.models import (client as fhirclient,
bundle as fhirbundle,
patient as fhirpatient)
settings = {
'app_id': 'my_app',
'api_base': 'https://hapi.fhir.org/baseR4',
'redirect_uri': 'http://localhost:8000/callback',
'scope': 'launch/patient openid fhirUser',
'client_secret': 'my_app_secret'
}
def bmi_calculator(height, weight):
bmi = weight / ((height/100)**2)
return bmi
def get_patient_data(client):
patient = fhirpatient.Patient.read('self', client.server)
# Get the patient's weight and height observations
weight_obs = client.server.request(fhirobservation.Observation
.where({'subject': f'Patient/{patient.id}',
'code': '29463-7'}))
height_obs = client.server.request(fhirobservation.Observation
.where({'subject': f'Patient/{patient.id}',
'code': '8302-2'}))
# Get the latest weight and height values
weight = float(weight_obs.entry[-1].resource.valueQuantity.value)
height = float(height_obs.entry[-1].resource.valueQuantity.value)
return height, weight
smart = client.FHIRClient(settings=settings.settings)
st.title("BMI Calculator")
if smart.ready:
st.write("SMART on FHIR connection successful!")
st.write("Loading patient data...")
height, weight = get_patient_data(smart)
st.write("Patient height:", height, "cm")
st.write("Patient weight:", weight, "kg")
st.write("Calculating BMI...")
bmi = bmi_calculator(height, weight)
st.write("Your BMI is:", round(bmi, 2))
if bmi < 18.5:
st.write("You are underweight.")
elif bmi >= 18.5 and bmi < 25:
st.write("You have a healthy weight.")
elif bmi >= 25 and bmi < 30:
st.write("You are overweight.")
else:
st.write("You are obese.")
else:
st.write("SMART on FHIR connection failed. Please check your app settings.")
st.markdown("""
There are several public SMART on FHIR test servers available that allow for public access:
## HAPI FHIR Public Test Server:
This is a free, public test server that allows users to test their FHIR apps.
The server is available at the following
URL:
https://hapi.fhir.org/baseR4
## SMART Health IT Sandbox: This is a free, public sandbox environment that allows users to test their SMART on FHIR apps.
The sandbox is available at the following
URL:
https://sandbox.smarthealthit.org
## Argonaut Project Test Server: This is a public test server that is maintained by the Argonaut Project,
an initiative to accelerate the development and adoption of FHIR.
The server is available at the following
URL:
http://argonaut.healthintersections.com.au
""")