File size: 5,277 Bytes
8b8745e
 
 
 
c110a72
8b8745e
c110a72
 
8b8745e
 
c110a72
 
8b8745e
 
 
 
 
 
 
 
 
 
 
 
61d5bc4
 
 
 
 
 
 
8b8745e
61d5bc4
 
 
8b8745e
61d5bc4
 
 
8b8745e
61d5bc4
 
 
8b8745e
 
c110a72
8b8745e
c110a72
8b8745e
c110a72
61d5bc4
 
 
8b8745e
 
 
 
 
 
 
61d5bc4
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
8b8745e
 
 
 
 
 
 
 
 
 
 
61d5bc4
 
8b8745e
61d5bc4
 
 
 
 
 
 
 
8b8745e
61d5bc4
 
8b8745e
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
import os
import streamlit as st
import pandas as pd
import requests
import urllib.parse

# Fetch the News API key from the environment variable
news_api_key = "fe1e6bcbbf384b3e9220a7a1138805e0"  # Replace with your News API key

# Check if the API key is available, if not show an error and stop
if not news_api_key:
    st.error("NEWS_API_KEY is not set. Please provide a valid API key.")
    st.stop()

# Function to load and preprocess data
@st.cache_data
def load_data(file):
    df = pd.read_csv(file)
    return df

# Function to provide detailed health advice based on user data
def provide_observed_advice(data):
    advice = []
    if data['depression'] > 7 and data['anxiety'] > 7:
        advice.append(
            "You seem to be experiencing high levels of both depression and anxiety. Consider professional mental health support and calming activities like deep breathing, mindfulness, or yoga."
        )
    if data['depression'] > 5 or data['anxiety'] > 5:
        advice.append(
            "Moderate levels of depression or anxiety detected. Maintain a regular sleep schedule, engage in physical activity, and reach out for support."
        )
    if data['isolation'] > 7 and data['stress_relief_activities'] < 5:
        advice.append(
            "Feeling isolated with low stress-relief activities. Connect with friends or community groups and try journaling or meditation."
        )
    if data['future_insecurity'] > 7:
        advice.append(
            "Significant insecurity about the future detected. Break down goals into smaller tasks, and consider career counseling or mentorship."
        )
    if data['stress_relief_activities'] < 5:
        advice.append(
            "Low engagement in stress-relief activities. Try hobbies, physical exercise, or relaxation techniques like yoga."
        )
    return advice

# Function to fetch health articles from News API based on the query
def get_health_articles(query):
    url = f"https://newsapi.org/v2/everything?q={query}&apiKey={news_api_key}"
    try:
        response = requests.get(url)
        response.raise_for_status()
        data = response.json()
        articles = [{"title": item["title"], "url": item["url"]} for item in data.get("articles", [])]
        return articles
    except requests.exceptions.RequestException as err:
        st.error(f"Error fetching articles: {err}. Please check your internet connection.")
        return []

# Streamlit app layout
def main():
    st.set_page_config(page_title="Student Health Advisory Assistant", layout="wide")

    # Sidebar for navigation
    with st.sidebar:
        st.header("Navigation")
        option = st.radio("Go to", ["Home", "Analyze Your Well-being", "Health Articles"])

    # Home page
    if option == "Home":
        st.title("🌟 Welcome to the Student Health Advisory Assistant 🌟")
        st.image("https://via.placeholder.com/800x300?text=Student+Health+Advisory", use_column_width=True)
        st.markdown("### Helping you analyze your well-being and provide personalized advice for a healthier mind.")
        st.markdown(
            """
            - Upload your dataset for in-depth analysis.
            - Input your details to receive personalized advice.
            - Browse the latest health-related articles.
            """
        )

    # Well-being analysis
    elif option == "Analyze Your Well-being":
        st.title("πŸ” Analyze Your Well-being")
        uploaded_file = st.file_uploader("Upload your dataset (CSV)", type=["csv"])
        if uploaded_file:
            df = load_data(uploaded_file)
            st.write("### Dataset Preview:")
            st.dataframe(df.head())

        with st.expander("Enter Your Details"):
            gender = st.selectbox("πŸ”Ή Gender", ["Male", "Female"])
            age = st.slider("πŸ”Ή Age", 18, 35, step=1)
            depression = st.slider("πŸ”Ή Depression Level (1-10)", 1, 10)
            anxiety = st.slider("πŸ”Ή Anxiety Level (1-10)", 1, 10)
            isolation = st.slider("πŸ”Ή Isolation Level (1-10)", 1, 10)
            future_insecurity = st.slider("πŸ”Ή Future Insecurity Level (1-10)", 1, 10)
            stress_relief_activities = st.slider("πŸ”Ή Stress Relief Activities Level (1-10)", 1, 10)

        user_data = {
            "gender": gender,
            "age": age,
            "depression": depression,
            "anxiety": anxiety,
            "isolation": isolation,
            "future_insecurity": future_insecurity,
            "stress_relief_activities": stress_relief_activities,
        }

        if st.button("Get Observed Advice"):
            st.subheader("πŸ”” Health Advice Based on Observations")
            advice = provide_observed_advice(user_data)
            for i, tip in enumerate(advice, 1):
                st.write(f"πŸ“Œ {i}. {tip}")

    # Health articles
    elif option == "Health Articles":
        st.title("πŸ“° Browse Health Articles")
        query = st.text_input("Search for health topics (e.g., anxiety, stress relief)")
        if query and st.button("Search Articles"):
            articles = get_health_articles(query)
            for article in articles:
                st.write(f"🌐 [{article['title']}]({article['url']})")

if __name__ == "__main__":
    main()