Health_advisor / app.py
saherPervaiz's picture
Update app.py
a8ba087 verified
raw
history blame
2.7 kB
import streamlit as st
import pandas as pd
import requests
# Function to get health advice based on inputs
def get_health_advice(df, age, heart_rate, systolic_bp, diastolic_bp):
filtered_df = df[
(df['Age'].between(age - 2, age + 2)) & # Allow ±2 years
(df['Heart_Rate'].between(heart_rate - 5, heart_rate + 5)) & # Allow ±5 bpm
(df['Blood_Pressure_Systolic'].between(systolic_bp - 10, systolic_bp + 10)) & # Allow ±10
(df['Blood_Pressure_Diastolic'].between(diastolic_bp - 10, diastolic_bp + 10)) # Allow ±10
]
if not filtered_df.empty:
return filtered_df.iloc[0]['Health_Risk_Level']
return "No matching health data found."
# Function to get health articles from GROC API
def get_health_documents_from_groc(query):
api_key = "YOUR_GROC_API_KEY" # Replace with your actual GROC API key
url = f"https://api.groc.com/v1/search"
params = {
"query": query,
"api_key": api_key,
"type": "article"
}
response = requests.get(url, params=params)
if response.status_code == 200:
data = response.json()
return data.get("results", [])
else:
st.error(f"Error {response.status_code}: {response.text}")
return [{"title": f"Error: {response.status_code}", "url": ""}]
# Main Streamlit app
def main():
st.title("Health Risk Level and Advisory Assistant")
# File upload
uploaded_file = st.file_uploader("Upload your dataset (CSV)", type="csv")
if uploaded_file is not None:
df = pd.read_csv(uploaded_file)
st.write("Dataset Preview:")
st.dataframe(df.head())
# User input
age = st.number_input("Enter Age", min_value=1, max_value=100, step=1)
heart_rate = st.number_input("Enter Heart Rate (bpm)", min_value=30, max_value=200, step=1)
systolic_bp = st.number_input("Enter Systolic Blood Pressure", min_value=80, max_value=200, step=1)
diastolic_bp = st.number_input("Enter Diastolic Blood Pressure", min_value=40, max_value=120, step=1)
# Predict health risk level
if st.button("Get Health Risk Level"):
risk_level = get_health_advice(df, age, heart_rate, systolic_bp, diastolic_bp)
st.write(f"Health Risk Level: {risk_level}")
# Retrieve related health articles
query = f"Health risk for age {age}, heart rate {heart_rate}, BP {systolic_bp}/{diastolic_bp}"
st.write("Related Health Articles:")
articles = get_health_documents_from_groc(query)
for article in articles:
st.markdown(f"- [{article['title']}]({article['url']})")
if __name__ == "__main__":
main()