Update app.py
Browse files
app.py
CHANGED
@@ -11,7 +11,6 @@ st.write("Töltsd fel az orvosi adatokat tartalmazó Excel fájlt, és generálj
|
|
11 |
# Hugging Face nyelvi modell betöltése
|
12 |
@st.cache_resource
|
13 |
def load_model():
|
14 |
-
# Kompatibilis modell betöltése (pl. gpt2)
|
15 |
return pipeline("text-generation", model="gpt2")
|
16 |
|
17 |
generator = load_model()
|
@@ -21,60 +20,79 @@ uploaded_file = st.file_uploader("Tölts fel egy Excel fájlt", type=["xlsx"])
|
|
21 |
|
22 |
if uploaded_file:
|
23 |
try:
|
24 |
-
# Excel
|
25 |
-
|
26 |
-
|
27 |
-
|
|
|
|
|
28 |
|
29 |
-
#
|
30 |
-
|
31 |
-
|
32 |
-
|
33 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
34 |
|
35 |
-
|
36 |
-
|
37 |
-
|
38 |
-
|
39 |
-
|
40 |
-
korlatozott = any(
|
41 |
-
foglalt_napok.get(nap_nev) == szemely
|
42 |
-
for szemely in row["Korlátozások"]
|
43 |
-
)
|
44 |
-
if not korlatozott:
|
45 |
-
foglalt_napok[nap_nev] = row["Név"]
|
46 |
-
# Szöveg generálása
|
47 |
-
prompt = f"{row['Név']} ügyel {nap_nev}-n, mert "
|
48 |
-
indoklas = generator(prompt, max_length=50, num_return_sequences=1)[0]["generated_text"]
|
49 |
-
beosztas.append({
|
50 |
-
"Nap": nap_nev,
|
51 |
-
"Orvos": row["Név"],
|
52 |
-
"Indoklás": indoklas
|
53 |
-
})
|
54 |
-
break
|
55 |
|
56 |
-
|
57 |
-
|
58 |
-
|
59 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
60 |
|
61 |
-
|
62 |
-
|
63 |
-
|
64 |
-
|
65 |
-
output = io.BytesIO()
|
66 |
-
with pd.ExcelWriter(output, engine="openpyxl") as writer:
|
67 |
-
data.to_excel(writer, index=False)
|
68 |
-
processed_data = output.getvalue()
|
69 |
-
return processed_data
|
70 |
|
71 |
-
|
72 |
-
|
73 |
-
|
74 |
-
|
75 |
-
|
76 |
-
|
77 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
78 |
|
79 |
except Exception as e:
|
80 |
st.error(f"Hiba történt a fájl feldolgozása során: {e}")
|
|
|
11 |
# Hugging Face nyelvi modell betöltése
|
12 |
@st.cache_resource
|
13 |
def load_model():
|
|
|
14 |
return pipeline("text-generation", model="gpt2")
|
15 |
|
16 |
generator = load_model()
|
|
|
20 |
|
21 |
if uploaded_file:
|
22 |
try:
|
23 |
+
# Betöltés Excel fájl
|
24 |
+
excel_data = pd.ExcelFile(uploaded_file)
|
25 |
+
sheet_names = excel_data.sheet_names
|
26 |
+
|
27 |
+
st.write("Munkalapok a fájlban:")
|
28 |
+
st.write(sheet_names)
|
29 |
|
30 |
+
# Minden munkalapot megvizsgál
|
31 |
+
relevant_data = []
|
32 |
+
for sheet in sheet_names:
|
33 |
+
df = excel_data.parse(sheet)
|
34 |
+
if "Név" in df.columns and "Elérhetőség" in df.columns:
|
35 |
+
st.write(f"Adatok a '{sheet}' munkalapról:")
|
36 |
+
st.dataframe(df)
|
37 |
+
relevant_data.append(df)
|
38 |
+
|
39 |
+
# Összesített adatok
|
40 |
+
if relevant_data:
|
41 |
+
combined_data = pd.concat(relevant_data, ignore_index=True)
|
42 |
+
st.write("Kombinált adatok:")
|
43 |
+
st.dataframe(combined_data)
|
44 |
|
45 |
+
# Adatfeldolgozás
|
46 |
+
combined_data["Elérhető napok"] = combined_data["Elérhetőség"].apply(lambda x: x.split(","))
|
47 |
+
combined_data["Korlátozások"] = combined_data["Korlátozások"].apply(lambda x: x.split(",") if pd.notna(x) else [])
|
48 |
+
foglalt_napok = {}
|
49 |
+
beosztas = []
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
50 |
|
51 |
+
for nap in range(1, 8): # Példa: 7 napos beosztás
|
52 |
+
nap_nev = f"Nap {nap}"
|
53 |
+
for index, row in combined_data.iterrows():
|
54 |
+
if nap_nev in row["Elérhető napok"]:
|
55 |
+
korlatozott = any(
|
56 |
+
foglalt_napok.get(nap_nev) == szemely
|
57 |
+
for szemely in row["Korlátozások"]
|
58 |
+
)
|
59 |
+
if not korlatozott:
|
60 |
+
foglalt_napok[nap_nev] = row["Név"]
|
61 |
+
# Szöveg generálása
|
62 |
+
prompt = f"{row['Név']} ügyel {nap_nev}-n, mert "
|
63 |
+
indoklas = generator(prompt, max_length=50, num_return_sequences=1)[0]["generated_text"]
|
64 |
+
beosztas.append({
|
65 |
+
"Nap": nap_nev,
|
66 |
+
"Orvos": row["Név"],
|
67 |
+
"Indoklás": indoklas
|
68 |
+
})
|
69 |
+
break
|
70 |
|
71 |
+
# Beosztás megjelenítése
|
72 |
+
beosztas_df = pd.DataFrame(beosztas)
|
73 |
+
st.write("Generált Ügyeleti Beosztás:")
|
74 |
+
st.dataframe(beosztas_df)
|
|
|
|
|
|
|
|
|
|
|
75 |
|
76 |
+
# Exportálás Excelbe
|
77 |
+
@st.cache_data
|
78 |
+
def convert_to_excel(data):
|
79 |
+
import io
|
80 |
+
output = io.BytesIO()
|
81 |
+
with pd.ExcelWriter(output, engine="openpyxl") as writer:
|
82 |
+
data.to_excel(writer, index=False)
|
83 |
+
processed_data = output.getvalue()
|
84 |
+
return processed_data
|
85 |
+
|
86 |
+
excel_data = convert_to_excel(beosztas_df)
|
87 |
+
st.download_button(
|
88 |
+
label="Beosztás letöltése Excelben",
|
89 |
+
data=excel_data,
|
90 |
+
file_name="ugyeleti_beosztas.xlsx",
|
91 |
+
mime="application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"
|
92 |
+
)
|
93 |
+
|
94 |
+
else:
|
95 |
+
st.warning("Nem található releváns adat a munkalapokon.")
|
96 |
|
97 |
except Exception as e:
|
98 |
st.error(f"Hiba történt a fájl feldolgozása során: {e}")
|