File size: 3,939 Bytes
6e219f7
 
 
 
 
 
 
 
 
 
 
 
 
31b8dbd
6e219f7
 
 
 
 
 
 
 
d7fd570
 
 
 
 
 
6e219f7
d7fd570
 
 
 
 
 
 
 
 
 
 
 
 
 
6e219f7
d7fd570
 
 
 
 
6e219f7
d7fd570
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
6e219f7
d7fd570
 
 
 
6e219f7
d7fd570
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
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="gpt2")

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:
        # Betöltés Excel fájl
        excel_data = pd.ExcelFile(uploaded_file)
        sheet_names = excel_data.sheet_names
        
        st.write("Munkalapok a fájlban:")
        st.write(sheet_names)

        # Minden munkalapot megvizsgál
        relevant_data = []
        for sheet in sheet_names:
            df = excel_data.parse(sheet)
            if "Név" in df.columns and "Elérhetőség" in df.columns:
                st.write(f"Adatok a '{sheet}' munkalapról:")
                st.dataframe(df)
                relevant_data.append(df)
        
        # Összesített adatok
        if relevant_data:
            combined_data = pd.concat(relevant_data, ignore_index=True)
            st.write("Kombinált adatok:")
            st.dataframe(combined_data)

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

            for nap in range(1, 8):  # Példa: 7 napos beosztás
                nap_nev = f"Nap {nap}"
                for index, row in combined_data.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"]
                            # Szöveg generálása
                            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

            # Beosztás 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):
                import io
                output = io.BytesIO()
                with pd.ExcelWriter(output, engine="openpyxl") as writer:
                    data.to_excel(writer, index=False)
                processed_data = output.getvalue()
                return processed_data

            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"
            )

        else:
            st.warning("Nem található releváns adat a munkalapokon.")

    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.")