import streamlit as st import graphviz as gv from graphviz import Graph # Define the cluster relations graph using gvmap g = Graph(format='svg') g.graph_attr['bgcolor'] = '#FFFFFF' g.graph_attr['outputorder'] = 'edgesfirst' g.graph_attr['size'] = '10,10' g.node_attr['style'] = 'filled' g.node_attr['shape'] = 'box' g.node_attr['fillcolor'] = '#FFDAB9' with g.subgraph(name='cluster_MN') as c: c.graph_attr['bgcolor'] = '#ADD8E6' c.node_attr['color'] = '#000000' c.node_attr['fontcolor'] = '#000000' c.attr(label='Minnesota', fontsize='24') c.node('Allina Health', URL='https://www.allinahealth.org/', target='_blank', tooltip='Allina Health: Abbott Northwestern Hospital') c.node('Fairview Health Services', URL='https://www.fairview.org/', target='_blank', tooltip='Fairview Health Services: University of Minnesota Medical Center') c.node('HealthPartners', URL='https://www.healthpartners.com/', target='_blank', tooltip='HealthPartners: Regions Hospital') c.node('Mayo Clinic', URL='https://www.mayoclinic.org/', target='_blank', tooltip='Mayo Clinic: Saint Marys Hospital') c.node('CentraCare', URL='https://www.centracare.com/', target='_blank', tooltip='CentraCare: St. Cloud Hospital') c.node('Essentia Health', URL='https://www.essentiahealth.org/', target='_blank', tooltip='Essentia Health: St. Mary’s Medical Center') c.node('Hennepin Healthcare', URL='https://www.hennepinhealthcare.org/', target='_blank', tooltip='Hennepin Healthcare: HCMC') c.node('Children\'s Minnesota', URL='https://www.childrensmn.org/', target='_blank', tooltip='Children\'s Minnesota: Children\'s Hospitals and Clinics of Minnesota') c.node('Sanford Health', URL='https://www.sanfordhealth.org/', target='_blank', tooltip='Sanford Health: Sanford Bemidji Medical Center') c.node('St. Luke\'s Hospital', URL='https://www.slhduluth.com/', target='_blank', tooltip='St. Luke\'s Hospital: St. Luke\'s Hospital') # Render the graph using streamlit st.graphviz_chart(g) def render_hospital_graph(hospital): g = gv.Graph(format='svg') g.graph_attr['bgcolor'] = '#FFFFFF' g.graph_attr['outputorder'] = 'edgesfirst' g.graph_attr['size'] = '10,10' g.node_attr['style'] = 'filled' g.node_attr['shape'] = 'box' g.node_attr['fillcolor'] = '#FFDAB9' with g.subgraph(name=f'cluster_{hospital[0]}') as c: c.graph_attr['bgcolor'] = '#ADD8E6' c.node_attr['color'] = '#000000' c.node_attr['fontcolor'] = '#000000' c.attr(label=hospital[0], fontsize='24') with c.subgraph(name=f'cluster_{hospital[1]}') as s: s.attr(label=hospital[1], fontsize='16') s.node(hospital[2], fontsize='12') with s.subgraph(name=f'cluster_{hospital[2]}') as s1: s1.attr(fontsize='10') s1.node(hospital[3]) svg_output = g.pipe(format='svg') return svg_output # Define hospitals data hospitals = [('Allina Health', 'Abbott Northwestern Hospital', 'Beds: 627', 'Specialties: Cardiovascular care, neurosciences, cancer care'), ('Fairview Health Services', 'University of Minnesota Medical Center', 'Beds: 914', 'Specialties: Cancer care, transplant services, orthopedics'), ('HealthPartners', 'Regions Hospital', 'Beds: 454', 'Specialties: Level I Trauma Center, heart care, cancer care'), ('Mayo Clinic', 'Saint Marys Hospital', 'Beds: 1,265', 'Specialties: Cardiology, neurology, gastroenterology'), ('CentraCare', 'St. Cloud Hospital', 'Beds: 489', 'Specialties: Cancer care, heart care, neuroscience'), ('Essentia Health', 'St. Mary’s Medical Center', 'Beds: 330', 'Specialties: Cancer care, heart care, orthopedics'), ('Hennepin Healthcare', 'HCMC', 'Beds: 497', 'Specialties: Level I Trauma Center, burn center, cancer care'), ("Children's Minnesota", "Children's Hospitals and Clinics of Minnesota", 'Beds: 381', 'Specialties: Pediatrics, heart care, neonatology'), ('Sanford Health', 'Sanford Bemidji Medical Center', 'Beds: 161', 'Specialties: Cancer care, heart care, orthopedics'), ("St. Luke's Hospital", "St. Luke's Hospital", 'Beds: 267', 'Specialties: Cancer care, heart care, orthopedics')] # Render a separate graph for each hospital for hospital in hospitals: svg_output = render_hospital_graph(hospital) st.write(svg_output, unsafe_allow_html=True)