Spaces:
Runtime error
Runtime error
| #pass="Leswhdc2023$!" | |
| import streamlit as st | |
| import pandas as pd | |
| import plotly.express as px | |
| import cx_Oracle as ora | |
| import pandas as pd | |
| from pandas_profiling import ProfileReport | |
| QueryDatabase=False | |
| if QueryDatabase: | |
| dsn="jdbc:oracle:thin:@//ep15-scan01:1521/cdrpr03_4.uhc.com" | |
| user="UHG_801117753" | |
| passw="MiscPassword2023$!" # Fake Password - don't share this or run without changing to your ID | |
| dsn_tns = ora.makedsn('ep15-scan01', '1521', service_name='cdrpr03_4.uhc.com') | |
| # Create a connection object | |
| conn = ora.connect(user=user, password=passw, dsn=dsn_tns) | |
| # Create a cursor object | |
| c = conn.cursor() | |
| # Execute the SQL query and store the result in a pandas dataframe | |
| query = """ | |
| select | |
| count(*) as RecordCount, | |
| --Age, SID, MBR_ID, -- Optional toggle - remove these to collapse across members with a record count. | |
| TOPICID, TOPIC_DESC, TOPIC, PATHWAY, CATEGORY, INTERVENTION_DESC, | |
| SYMPTOM_DESC, KNOWLEDGE_DESC, BEHAVIOR_DESC, STATUS_DESC, INT_CATEGORY_ID, RSALINEOFBUSINESS, TARGET, | |
| CAREDESCRIPTOR, URGENCY, TOPICSOURCE, SIGNSSYMPTOMS, POC_SGN_SYMP_ID, SPOKENLANGUAGE, HEALTHTOPIC, | |
| CATEGORYID, TARGETID, CAREID, CQM, Gender, Race, AgeGroup | |
| from | |
| ( | |
| select | |
| aa.SBSCR_ID_TXT SID, | |
| a.MBR_ID, | |
| b.POC_PROB_ID TopicID, | |
| b.POC_PROB_DESC Topic_Desc, | |
| REPLACE(REPLACE(b.POC_PROB_NM,'/',''),' ','') Topic, | |
| a.POC_PROB_SRC_DESC Pathway, | |
| (select POC_INTRVN_CATGY_NM from POC_INTRVN_CATGY pig where pig.POC_INTRVN_CATGY_ID = d.POC_INTRVN_CATGY_ID) as Category, | |
| c.ADD_DESC Intervention_Desc, | |
| e.ADD_DESC Symptom_Desc, | |
| a.KNW_OTCOME_RT_ADD_DESC KNOWLEDGE_DESC, | |
| a.BHV_OTCOME_RT_ADD_DESC BEHAVIOR_DESC, | |
| a.STS_OTCOME_RT_ADD_DESC STATUS_DESC, | |
| d.POC_INTRVN_CATGY_ID Int_Category_ID, | |
| RSA_POP_TYP_ID, | |
| (select ref_desc from ref where ref_nm = 'rsaPopulationType' and ref_cd = RSA_POP_TYP_ID) as RSALineOfBusiness, | |
| (select POC_INTRVN_TGT_NM from POC_INTRVN_TGT pit where pit.POC_INTRVN_TGT_ID = d.POC_INTRVN_TGT_ID) as Target, | |
| (select POC_INTRVN_CARE_DESC from POC_INTRVN_CARE pic where pic.POC_INTRVN_CARE_ID = d.POC_INTRVN_CARE_ID) as CareDescriptor, | |
| Case to_char(a.POC_PROB_URGNCY_MOD_ID) when '1' then 'Actual' when '3' then 'Potential' else 'Other' end as Urgency, | |
| (select ref_desc from ref where ref_nm = 'pocProbSourceType' and ref_cd = a.POC_PROB_SRC_TYP_ID) as TopicSource, | |
| (select POC_SGN_SYMP_NM from POC_SGN_SYMP pss where pss.POC_SGN_SYMP_ID = e.POC_SGN_SYMP_ID) as SignsSymptoms, | |
| e.POC_SGN_SYMP_ID, | |
| CALAP_SPOKEN_LANG_TYP_ID SpokenLanguage, | |
| REPLACE(b.POC_PROB_NM,'/','') HealthTopic, | |
| a.POC_PROB_ID HealthTopicID, | |
| d.POC_INTRVN_CATGY_ID CategoryID, | |
| d.POC_INTRVN_TGT_ID TargetID, | |
| d.POC_INTRVN_CARE_ID CareID, | |
| c.CQM_IND CQM, | |
| aa.GDR_CD Gender, | |
| aa.RACE_CD Race, | |
| (2023 - EXTRACT(year FROM aa.BTH_DT)) Age, | |
| Case --Five age groups: 0-18, 19-44, 45-64, 65-84, and 85 and over | |
| when ((2023 - EXTRACT(year FROM aa.BTH_DT))>=0 and (2023 - EXTRACT(year FROM aa.BTH_DT))<=18) then 'Age0to18' | |
| when ((2023 - EXTRACT(year FROM aa.BTH_DT))> 18 and (2023 - EXTRACT(year FROM aa.BTH_DT))<=44) then 'Age19to44' | |
| when ((2023 - EXTRACT(year FROM aa.BTH_DT))> 44 and (2023 - EXTRACT(year FROM aa.BTH_DT))<=64) then 'Age44to64' | |
| when ((2023 - EXTRACT(year FROM aa.BTH_DT))> 64 and (2023 - EXTRACT(year FROM aa.BTH_DT))<=84) then 'Age64to84' | |
| when ((2023 - EXTRACT(year FROM aa.BTH_DT))> 85) then 'Age85andOver' | |
| else 'Other' end as AgeGroup | |
| from MBR_POC_PROB a -- select * from MBR_POC_PROB where MBR_ID=117179570 | |
| join MBR aa on a.MBR_ID = aa.MBR_ID --and a.POC_PROB_URGNCY_MOD_ID = 1 --actual | |
| join STG_HSR.POC_PROB b on a.POC_PROB_ID = b.POC_PROB_ID | |
| join MBR_POC_PROB_INTRVN c on | |
| (a.MBR_POC_PROB_ID = c.MBR_POC_PROB_ID and c.REMV_FROM_PLN_LIST_IND=0) | |
| join POC_INTRVN d on c.POC_INTRVN_ID = d.POC_INTRVN_ID | |
| left outer join MBR_POC_PROB_SGN_SYMP e | |
| on (e.MBR_POC_PROB_ID = c.MBR_POC_PROB_ID) | |
| where a.POC_PROB_URGNCY_MOD_ID = 1 and | |
| -- Optional toggle - 1 versus 120 days. | |
| a.CHG_DTTM > sysdate - 1 -- 1 Day | |
| -- a.CHG_DTTM > sysdate - 1 -- 182 Days = 6 Months | |
| ) i | |
| group by | |
| --Age, SID, MBR_ID, -- Optional toggle - remove these to collapse across members with a record count. | |
| TOPICID, TOPIC_DESC, TOPIC, PATHWAY, CATEGORY, INTERVENTION_DESC, SYMPTOM_DESC, KNOWLEDGE_DESC, BEHAVIOR_DESC, STATUS_DESC,INT_CATEGORY_ID,RSALINEOFBUSINESS, | |
| TARGET, CAREDESCRIPTOR, URGENCY, TOPICSOURCE, SIGNSSYMPTOMS, POC_SGN_SYMP_ID, SPOKENLANGUAGE, HEALTHTOPIC, | |
| CATEGORYID, TARGETID, CAREID, CQM, Gender, Race, AgeGroup | |
| -- Optional toggle: | |
| --order by MBR_ID desc | |
| order by TOPICID desc -- orders by Count | |
| """ | |
| df = pd.read_sql(query, con=conn) | |
| # Close the cursor and connection | |
| c.close() | |
| conn.close() | |
| # Show the dataframe in a streamlit grid | |
| st.dataframe(df) | |
| # automatic visualizer | |
| # st.set_page_config(page_title="File Upload and Profiling", layout="wide") | |
| st.title("File Upload and Profiling") | |
| # uploaded_file = st.file_uploader("Upload a CSV file", type="csv") | |
| # RunProfiler=False | |
| # if uploaded_file is not None: | |
| # if RunProfiler: | |
| # # Load the data using pandas | |
| # df = pd.read_csv(uploaded_file) | |
| # # Generate the pandas profiling report | |
| # profile = ProfileReport(df, explorative=True) | |
| # # Display the pandas profiling report using streamlit | |
| # st.header("Data Profiling Report") | |
| # st.write(profile.to_html(), unsafe_allow_html=True) | |
| # # Display word statistics for each categorical string column | |
| # cat_cols = df.select_dtypes(include='object').columns | |
| # st.header("Word Statistics for Categorical Columns") | |
| # for col in cat_cols: | |
| # st.subheader(col) | |
| # word_count = df[col].str.split().apply(len).value_counts().sort_index() | |
| # st.bar_chart(word_count) | |
| # # Grouped count by each feature | |
| # num_cols = df.select_dtypes(include=['float', 'int']).columns | |
| # st.header("Grouped Count by Each Feature") | |
| # for col in num_cols: | |
| # st.subheader(col) | |
| # count_by_feature = df.groupby(col).size().reset_index(name='count') | |
| # st.bar_chart(count_by_feature) | |
| # Upload a CSV dataset | |
| uploaded_file = st.file_uploader("Upload your dataset", type=["csv"]) | |
| if uploaded_file is not None: | |
| # Load the dataset and display the first 5 rows | |
| df = pd.read_csv(uploaded_file) | |
| st.dataframe(df.head()) | |
| # Generate a treemap or sunburst plot based on data types | |
| numerical_cols = df.select_dtypes(include=["float", "int"]).columns | |
| categorical_cols = df.select_dtypes(include=["object"]).columns | |
| # fig = px.treemap(df, path=categorical_cols) | |
| # st.plotly_chart(fig) | |
| if len(numerical_cols) >= 2: | |
| fig = px.scatter_matrix(df, dimensions=numerical_cols) | |
| st.plotly_chart(fig) | |
| elif len(categorical_cols) >= 2: | |
| fig = px.treemap(df, path=categorical_cols) | |
| st.plotly_chart(fig) | |
| else: | |
| fig = px.sunburst(df, path=categorical_cols + numerical_cols) | |
| st.plotly_chart(fig) | |