Update app.py
Browse files
app.py
CHANGED
@@ -0,0 +1,75 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
import streamlit as st
|
2 |
+
import pandas as pd
|
3 |
+
from transformers import pipeline
|
4 |
+
|
5 |
+
# Oldal konfiguráció
|
6 |
+
st.set_page_config(page_title="Orvosi Ügyeleti Beosztás Generáló", layout="wide")
|
7 |
+
|
8 |
+
st.title("Orvosi Ügyeleti Beosztás Generáló")
|
9 |
+
st.write("Töltsd fel az orvosi adatokat tartalmazó Excel fájlt, és generálj beosztást az ügyeletekhez!")
|
10 |
+
|
11 |
+
# Hugging Face nyelvi modell betöltése
|
12 |
+
@st.cache_resource
|
13 |
+
def load_model():
|
14 |
+
return pipeline("text-generation", model="distilbert-base-multilingual-cased")
|
15 |
+
|
16 |
+
generator = load_model()
|
17 |
+
|
18 |
+
# Fájl feltöltése
|
19 |
+
uploaded_file = st.file_uploader("Tölts fel egy Excel fájlt", type=["xlsx"])
|
20 |
+
|
21 |
+
if uploaded_file:
|
22 |
+
try:
|
23 |
+
# Excel beolvasása
|
24 |
+
df = pd.read_excel(uploaded_file)
|
25 |
+
st.write("Feltöltött adatok:")
|
26 |
+
st.dataframe(df)
|
27 |
+
|
28 |
+
# Előkészítés
|
29 |
+
df["Elérhető napok"] = df["Elérhetőség"].apply(lambda x: x.split(","))
|
30 |
+
df["Korlátozások"] = df["Korlátozások"].apply(lambda x: x.split(",") if pd.notna(x) else [])
|
31 |
+
foglalt_napok = {}
|
32 |
+
beosztas = []
|
33 |
+
|
34 |
+
# Beosztás generálása
|
35 |
+
for nap in range(1, 8): # Példa: 7 napos beosztás
|
36 |
+
nap_nev = f"Nap {nap}"
|
37 |
+
for index, row in df.iterrows():
|
38 |
+
if nap_nev in row["Elérhető napok"]:
|
39 |
+
korlatozott = any(
|
40 |
+
foglalt_napok.get(nap_nev) == szemely
|
41 |
+
for szemely in row["Korlátozások"]
|
42 |
+
)
|
43 |
+
if not korlatozott:
|
44 |
+
foglalt_napok[nap_nev] = row["Név"]
|
45 |
+
prompt = f"{row['Név']} ügyel {nap_nev}-n, mert "
|
46 |
+
indoklas = generator(prompt, max_length=50, num_return_sequences=1)[0]["generated_text"]
|
47 |
+
beosztas.append({
|
48 |
+
"Nap": nap_nev,
|
49 |
+
"Orvos": row["Név"],
|
50 |
+
"Indoklás": indoklas
|
51 |
+
})
|
52 |
+
break
|
53 |
+
|
54 |
+
# Eredmény megjelenítése
|
55 |
+
beosztas_df = pd.DataFrame(beosztas)
|
56 |
+
st.write("Generált Ügyeleti Beosztás:")
|
57 |
+
st.dataframe(beosztas_df)
|
58 |
+
|
59 |
+
# Exportálás Excelbe
|
60 |
+
@st.cache_data
|
61 |
+
def convert_to_excel(data):
|
62 |
+
return data.to_excel(index=False, engine="openpyxl")
|
63 |
+
|
64 |
+
excel_data = convert_to_excel(beosztas_df)
|
65 |
+
st.download_button(
|
66 |
+
label="Beosztás letöltése Excelben",
|
67 |
+
data=excel_data,
|
68 |
+
file_name="ugyeleti_beosztas.xlsx",
|
69 |
+
mime="application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"
|
70 |
+
)
|
71 |
+
|
72 |
+
except Exception as e:
|
73 |
+
st.error(f"Hiba történt a fájl feldolgozása során: {e}")
|
74 |
+
else:
|
75 |
+
st.info("Tölts fel egy fájlt a kezdéshez.")
|