File size: 2,797 Bytes
6e219f7
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
import streamlit as st
import pandas as pd
from transformers import pipeline

# Oldal konfiguráció
st.set_page_config(page_title="Orvosi Ügyeleti Beosztás Generáló", layout="wide")

st.title("Orvosi Ügyeleti Beosztás Generáló")
st.write("Töltsd fel az orvosi adatokat tartalmazó Excel fájlt, és generálj beosztást az ügyeletekhez!")

# Hugging Face nyelvi modell betöltése
@st.cache_resource
def load_model():
    return pipeline("text-generation", model="distilbert-base-multilingual-cased")

generator = load_model()

# Fájl feltöltése
uploaded_file = st.file_uploader("Tölts fel egy Excel fájlt", type=["xlsx"])

if uploaded_file:
    try:
        # Excel beolvasása
        df = pd.read_excel(uploaded_file)
        st.write("Feltöltött adatok:")
        st.dataframe(df)

        # Előkészítés
        df["Elérhető napok"] = df["Elérhetőség"].apply(lambda x: x.split(","))
        df["Korlátozások"] = df["Korlátozások"].apply(lambda x: x.split(",") if pd.notna(x) else [])
        foglalt_napok = {}
        beosztas = []

        # Beosztás generálása
        for nap in range(1, 8):  # Példa: 7 napos beosztás
            nap_nev = f"Nap {nap}"
            for index, row in df.iterrows():
                if nap_nev in row["Elérhető napok"]:
                    korlatozott = any(
                        foglalt_napok.get(nap_nev) == szemely
                        for szemely in row["Korlátozások"]
                    )
                    if not korlatozott:
                        foglalt_napok[nap_nev] = row["Név"]
                        prompt = f"{row['Név']} ügyel {nap_nev}-n, mert "
                        indoklas = generator(prompt, max_length=50, num_return_sequences=1)[0]["generated_text"]
                        beosztas.append({
                            "Nap": nap_nev,
                            "Orvos": row["Név"],
                            "Indoklás": indoklas
                        })
                        break

        # Eredmény megjelenítése
        beosztas_df = pd.DataFrame(beosztas)
        st.write("Generált Ügyeleti Beosztás:")
        st.dataframe(beosztas_df)

        # Exportálás Excelbe
        @st.cache_data
        def convert_to_excel(data):
            return data.to_excel(index=False, engine="openpyxl")

        excel_data = convert_to_excel(beosztas_df)
        st.download_button(
            label="Beosztás letöltése Excelben",
            data=excel_data,
            file_name="ugyeleti_beosztas.xlsx",
            mime="application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"
        )

    except Exception as e:
        st.error(f"Hiba történt a fájl feldolgozása során: {e}")
else:
    st.info("Tölts fel egy fájlt a kezdéshez.")