healthcare / app.py
sakthi07's picture
Added app.py HbA1cData, requirements.txt
4549784
import warnings
warnings.filterwarnings("ignore")
import streamlit as st
import numpy as np
import pandas as pd
import mlflow
import mlflow.sklearn
import os
from datetime import datetime
st.set_page_config(page_title="HBA1C Prediction", layout="centered")
df_patients = pd.read_csv("Hba1cData/dim_patients_final_rev01.csv")
patient_ids = df_patients['patient_id'].tolist()
# Set the MLflow tracking URI to DagsHub
mlflow.set_tracking_uri("https://dagshub.com/sakthi-t/healthcaremlflow.mlflow")
# Load the model from MLflow model registry
model_name = "ElasticnetHealthcareModel"
model_version = 3
model_uri = f"models:/{model_name}/{model_version}"
loaded_model = mlflow.sklearn.load_model(model_uri)
def predict_hba1c(patient_id, visited_date, sugar):
# Prepare input data
visited_date = pd.to_datetime(visited_date)
data = {
'patient_id': [patient_id],
'sugar': [sugar],
'year': [visited_date.year],
'month': [visited_date.month],
'day': [visited_date.day]
}
input_df = pd.DataFrame(data)
# Make prediction
prediction = loaded_model.predict(input_df)
return prediction[0]
# Streamlit interface
st.title("HBA1C Prediction")
st.write("Select Patient ID, Visited Date, and Sugar value to predict HBA1C.")
st.markdown(
"""
<div style="background-color: #FF9798; color: white; padding: 10px; border-radius: 5px;">
Choose sugar levels between 50 and 600. HBA1C levels are influenced by sugar values: higher sugar typically results in higher HBA1C.
This machine learning project uses synthetic data and is not a definitive method to determine HBA1C levels. For accurate results,
please select a date within 2024. The dataset contains dates from 2023 to April 2024. Patient names are fictional. Users can only select
from existing patient IDs, and there is no correlation between User ID and sugar levels.
</div>
""", unsafe_allow_html=True
)
patient_id = st.selectbox("Patient ID", patient_ids)
visited_date = st.date_input("Visited Date", min_value=datetime(2023, 1, 1), max_value=datetime(2024, 4, 30))
sugar = st.number_input("Sugar", min_value=50.0, max_value=600.0, value=100.0)
if st.button("Predict HBA1C"):
prediction = predict_hba1c(patient_id, visited_date, sugar)
st.write(f"Predicted HBA1C: {prediction}")