Ejemplo n.º 1
0
def test_doctor():
    error = 0
    print "begin doctor test\n"

    body_config, food_config, empty_food_config, doctor_config = create_test_config(
    )
    food = Food(**food_config)
    for key, value in empty_food_config.items():
        check_minVit_config = food_config.copy()
        if key[:3] == 'vit':
            check_minVit_config[key] = value
            body = Body(**body_config)
            diseas = Diseas(symtom='symtom' + key[-1].upper(),
                            attackpoint=key,
                            name='diseas' + key[-1].lower())
            doctor = Doctor(lambda x: x['illness'], **doctor_config)

            body.eat(Food(**check_minVit_config))
            print 'want to inflect at', key
            diseas.attack(body)
            print 'Now i am inflected'
            if doctor.diagnose(body).lower() != 'diseas' + key[-1].lower():
                error += 1
                print "[ inflect wrong target"

            body.eat(food)

            print "i get cure "
            if doctor.diagnose(body) != "Null":
                error += 1
                print "not get cure"
            print "\n"
    print "finish doctor test with error: ????", error
Ejemplo n.º 2
0
Archivo: Main.py Proyecto: mansrz/DrApp
 def guardar(self):
     if self.doctor_user.id is None or self.doctor_user.id == 0:
         self.doctor_user = Doctor()
     self.doctor_user.username = self.txt_username.text()
     self.doctor_user.nombres = self.txt_nombre.text()
     self.doctor_user.apellidos = self.txt_apellido.text()
     self.doctor_user.telefono = self.txt_telefono.text()
     self.doctor_user.password = self.txt_password.text()
     self.doctor_user.cedula = self.txt_cedula.text()
     self.doctor_user.direccion = self.txt_direccion.text()
     self.doctor_user.mail = self.txt_mail.text()
     if(self.doctor_user.guardar()):
         self.txt_username.setText('')
         self.txt_nombre.setText('')
         self.txt_apellido.setText('')
         self.txt_telefono.setText('')
         self.txt_password.setText('')
         self.txt_cedula.setText('')
         self.txt_direccion.setText('')
         self.txt_mail.setText('')
         self.doctor_user = Doctor()
         QtWidgets.QMessageBox.information(self, '¡Enhorabuena!', 'Se ha registrado el doctor', QtWidgets.QMessageBox.Ok)
     else:
         QtWidgets.QMessageBox.warning(self, 'Error', 'Revisa los datos', QtWidgets.QMessageBox.Ok)
     self.actualizarGrids()
def add_appointment_details(doc_avail, pat_avail):
    data = json.load("Appointment.json", "r")

    doctor_obj = Doctor()
    patient_obj = Patient()

    appointment_doctor = Appointment()

    appointment_doctor.set_doctor(doc_avail)

    appointment_doctor.set_patient(pat_avail)

    now = datetime.now()

    appointment_doctor.set_date(str(now)[:10])

    try:
        data["appointment"].append({
            'doctor': appointment_doctor.get_doctor(),
            'patient': appointment_doctor.get_patient(),
            'date': appointment_doctor.get_date()
        })
        with open('Appointment.json', 'w') as database1:
            json.dump(data, database1, sort_keys=True)
        print("Details added successfully")

    except Exception:
        print("Data is not proper")
Ejemplo n.º 4
0
def addAppointmentDetails(doctordetail, patientdetail):

    data = json.load(open('Appoinment.json', 'r'))
    # data = {"appointment":[]}
    # data["appoinment"] = {}

    doctor_obj = Doctor()
    patient_obj = Patient()

    appointment_json = Appointment()
    appointment_json.set_doctor(doctordetail)
    appointment_json.set_patient(patientdetail)
    now = datetime.now()
    appointment_json.set_date(str(now)[:10])
    try:
        data["appointment"].append(
            {'doctor': appointment_json.get_doctor(), 'patient': appointment_json.get_patient(),
                'date': appointment_json.get_date()})

        with open('Appoinment.json', 'w') as data1:
            json.dump(data, data1, sort_keys=True)

        print ("Person Detail Added Successfully!")

    except (NameError, SyntaxError, TypeError):
        print "Please enter a proper formated data only !"
Ejemplo n.º 5
0
 def addDoctors():
     list = client.getDoctors(msg['id'])
     for i in range(len(list)):
         d = list[i]
         doctor.append(
             Doctor.Doctor(d['id'], d['fisrtname'], d['lastname'],
                           data0, d['specjalizacja']))
Ejemplo n.º 6
0
 def registerDoctor():
     if client.isConnect(HOST, PORT):
         if pas.get() == pasp.get():
             if len(pas.get()) > 5:
                 client.sendRegisterDoctor(name2.get(), surname2.get(),
                                           special2.get(), msg['name'],
                                           msg['id'], login.get(),
                                           pas.get())
                 re = client.isSucces()
                 if re:
                     doctor.append(
                         Doctor.Doctor(len(doctor), name2.get(),
                                       surname2.get(), data0,
                                       special2.get()))
                     docList.insert(tk.END,
                                    name2.get() + " " + surname2.get())
                     setTextData(0, doctor)
                     var2.set("Rejsetracja powiodła się")
                 else:
                     var2.set("Doktor istnieje już w bazie danych")
             else:
                 var2.set("Hasło musi mieć conajmniej 6 znaków")
         else:
             var2.set("Przepisz poprawnie hasło")
     else:
         var2.set("Nie można połączyć z serverem")
Ejemplo n.º 7
0
Archivo: Main.py Proyecto: mansrz/DrApp
 def eliminar(self):
     try:
         selected = self.tb_eliminar.selectedIndexes()
         self.selected_index = selected.__getitem__(0)
         select = self.todos[self.selected_index.row()]
         doctor_user = Doctor()
         doctor_user.id = select.id
         rst=QMessageBox.warning(self,"Alerta","Esta seguro que desea eliminar", QMessageBox.Cancel, QMessageBox.Ok)
         if rst == QMessageBox.Ok:
             if(doctor_user.eliminar()):
                 QMessageBox.about(self,"¡Enhorabuena!", "Se ha eliminado al Doctor")
             else:
                 print('dd')
                 QMessageBox.warning(self,"Error", "Ha ocurrido un error")
     except:
         QMessageBox.about(self,"Error", "Ha ocurrido un error")
     self.actualizarGrids()
Ejemplo n.º 8
0
Archivo: Main.py Proyecto: mansrz/DrApp
 def elegir_dobleclick(self):
     rst = QMessageBox.warning(self,"Alerta","¿Esta seguro que desea editar?", QMessageBox.Cancel, QMessageBox.Ok)
     if rst != QMessageBox.Ok:
         self.doctor_user = Doctor()
         return
     selected = self.tb_doctores.selectedIndexes()
     self.selected_index = selected.__getitem__(0)
     select = self.todos[self.selected_index.row()]
     self.doctor_user.id = select.id
     self.tabWidget.setCurrentWidget(self.tab_1)
     self.txt_username.setText(select.username)
     self.txt_nombre.setText(select.nombres)
     self.txt_apellido.setText(select.apellidos)
     self.txt_telefono.setText(select.telefono)
     self.txt_password.setText(select.password)
     self.txt_cedula.setText(select.cedula)
     self.txt_direccion.setText(select.direccion)
     self.txt_mail.setText(select.mail)
Ejemplo n.º 9
0
    def parse_board(self, board_file):
        """
        A function to parse a text-file containing the board and
        populating the board-array with it
        :param board_file:     text file containing the board layout
        :return:               2 dimensional array containing the tiles from the board file
        """

        # Load all the data into the array
        with open(board_file) as file:
            board = [list(line.strip('\n')) for line in file]

        # We make an iterator out of the board-list and go through it
        # to check if all the rows are the same length
        iterator = iter(board)
        # set map_len to the length of the first row
        map_len = len(next(iterator))
        if not all(len(row) == map_len for row in iterator):
            raise ValueError("All rows in map-file must be of equal length!")

        # Replace characters with tiles and put entities into lists
        for y in range(len(board)):
            for x in range(len(board[y])):
                if board[y][x] == ".":
                    board[y][x] = Tile(".")
                elif board[y][x] == "#":
                    board[y][x] = Tile("#")
                elif board[y][x] == "D":
                    dalek = Dalek.Dalek(x, y, self)
                    board[y][x] = Tile(".")
                    self.entities.append(dalek)
                elif board[y][x] == "W":
                    doctor = Doctor.Doctor(x, y, self)
                    board[y][x] = Tile(".")
                    self.entities.append(doctor)
                    self.player = doctor
                else:
                    raise ValueError(
                        "The only characters allowed in the map-file are\n . # D W"
                    )

        return board
Ejemplo n.º 10
0
Archivo: Main.py Proyecto: mansrz/DrApp
class VentanaDoctor(QDialog, doctor):
    doctor_user = Doctor()

    def __init__(self, parent =  None):
        QDialog.__init__(self, parent)
        self.setupUi(self)
        self.inicializar()

    def inicializar(self):
        self.btn_buscar.clicked.connect(self.buscar)
        self.btn_guardar.clicked.connect(self.guardar)
        self.btn_eliminar_todo.clicked.connect(self.eliminar)
        self.todos = self.doctor_user.consultar_todos()
        self.tb_doctores.doubleClicked.connect(self.elegir_dobleclick)
        self.actualizarGrids()
        self.btn_cerrar.clicked.connect(self.closeEvent)

    def close(self):
        self.hide()

    def actualizarGrids(self):
        self.todos = self.doctor_user.consultar_todos()
        self.fillDataGrid(self.todos, self.tb_doctores)
        self.fillDataGrid(self.todos, self.tb_eliminar)

    def elegir_dobleclick(self):
        rst = QMessageBox.warning(self,"Alerta","¿Esta seguro que desea editar?", QMessageBox.Cancel, QMessageBox.Ok)
        if rst != QMessageBox.Ok:
            self.doctor_user = Doctor()
            return
        selected = self.tb_doctores.selectedIndexes()
        self.selected_index = selected.__getitem__(0)
        select = self.todos[self.selected_index.row()]
        self.doctor_user.id = select.id
        self.tabWidget.setCurrentWidget(self.tab_1)
        self.txt_username.setText(select.username)
        self.txt_nombre.setText(select.nombres)
        self.txt_apellido.setText(select.apellidos)
        self.txt_telefono.setText(select.telefono)
        self.txt_password.setText(select.password)
        self.txt_cedula.setText(select.cedula)
        self.txt_direccion.setText(select.direccion)
        self.txt_mail.setText(select.mail)

    def guardar(self):
        if self.doctor_user.id is None or self.doctor_user.id == 0:
            self.doctor_user = Doctor()
        self.doctor_user.username = self.txt_username.text()
        self.doctor_user.nombres = self.txt_nombre.text()
        self.doctor_user.apellidos = self.txt_apellido.text()
        self.doctor_user.telefono = self.txt_telefono.text()
        self.doctor_user.password = self.txt_password.text()
        self.doctor_user.cedula = self.txt_cedula.text()
        self.doctor_user.direccion = self.txt_direccion.text()
        self.doctor_user.mail = self.txt_mail.text()
        if(self.doctor_user.guardar()):
            self.txt_username.setText('')
            self.txt_nombre.setText('')
            self.txt_apellido.setText('')
            self.txt_telefono.setText('')
            self.txt_password.setText('')
            self.txt_cedula.setText('')
            self.txt_direccion.setText('')
            self.txt_mail.setText('')
            self.doctor_user = Doctor()
            QtWidgets.QMessageBox.information(self, '¡Enhorabuena!', 'Se ha registrado el doctor', QtWidgets.QMessageBox.Ok)
        else:
            QtWidgets.QMessageBox.warning(self, 'Error', 'Revisa los datos', QtWidgets.QMessageBox.Ok)
        self.actualizarGrids()

    def eliminar(self):
        try:
            selected = self.tb_eliminar.selectedIndexes()
            self.selected_index = selected.__getitem__(0)
            select = self.todos[self.selected_index.row()]
            doctor_user = Doctor()
            doctor_user.id = select.id
            rst=QMessageBox.warning(self,"Alerta","Esta seguro que desea eliminar", QMessageBox.Cancel, QMessageBox.Ok)
            if rst == QMessageBox.Ok:
                if(doctor_user.eliminar()):
                    QMessageBox.about(self,"¡Enhorabuena!", "Se ha eliminado al Doctor")
                else:
                    print('dd')
                    QMessageBox.warning(self,"Error", "Ha ocurrido un error")
        except:
            QMessageBox.about(self,"Error", "Ha ocurrido un error")
        self.actualizarGrids()

    def fillDataGrid(self, result, tb):
        model = QStandardItemModel()
        model.setColumnCount(len(self.doctor_user.headernames))
        model.setHorizontalHeaderLabels(self.doctor_user.headernames)
        doctors = []
        for doctor_result in result:
          li = [doctor_result.username, doctor_result.nombres, doctor_result.apellidos, doctor_result.telefono, doctor_result.cedula, doctor_result.direccion, doctor_result.mail]
          doctors.append(li)
          row = []
          for name in li:
            item = QStandardItem(str(name))
            item.setEditable(False)
            row.append(item)
          model.appendRow(row)
        tb.setModel(model)
        return doctors

    def buscar(self):
        texto = self.txt_buscar.text()
        if len(texto) < 1:
            QMessageBox.about(self,"Error", "No encontramos nada")
            self.actualizarGrids()
        result = []
        if self.radioButton_nombre.isChecked():
           result = self.doctor_user.consultar_By_Atribute(texto, 'nombres')
        elif self.radioButton_apellido.isChecked():
           result = self.doctor_user.consultar_By_Atribute(texto, 'apellidos')
        elif self.radioButton_cedula.isChecked():
           result = self.doctor_user.consultar_By_Atribute(texto, 'cedula')
        self.fillDataGrid(result, self.tb_doctores)

    def closeEvent(self):
        self.hide()
Ejemplo n.º 11
0
def add_doctor():
    doctor_obj = Doctor()
    data = {}
    data["doctor"] = {}
    data = json.load(open('Doctor.json', 'r'))
    try:
        first_name = raw_input("Enter first name: ")
        doctor_obj.set_first_name(first_name)

        last_name = raw_input("Enter last name: ")
        doctor_obj.set_last_name(last_name)

        id = raw_input("Enter Doctor Id : ")
        doctor_obj.set_id(id)

        specialization = raw_input("Enter doctor Specialization : ")
        doctor_obj.set_specification(specialization)

        availability = raw_input("Enter Doctor Availability : ")
        doctor_obj.set_availability(availability)

        data["doctor"][first_name] = ({
            'first_name': doctor_obj.get_first_name(),
            'last_name': doctor_obj.get_last_name(),
            'id': doctor_obj.get_id(),
            'specialization': doctor_obj.get_specification(),
            'availability': doctor_obj.get_availability(),

        })
        with open('Doctor.json', 'w') as data1:
            json.dump(data, data1,sort_keys=True)

        print ("Person Detail Added Successfully!")

    except (NameError, SyntaxError,TypeError):
        print "Please enter a proper formated data only !"
Ejemplo n.º 12
0
    def __init__(self, client, HOST, PORT):
        global msg, doctor, data0
        root = tk.Tk()
        root.title("Recepcja")
        root.geometry("1280x800+0+0")
        root.configure(background="white")
        doctor = []
        data0 = []

        msg = client.getMessageRec()

        def guit():
            cal.closeThread()

        root.protocol("WM_DELETE_WINDOW", quit)

        DocList = tk.Label(root, text="Lista Lekarzy:", bg="white").place(x=10,
                                                                          y=10)
        docList = tk.Listbox(root, width=50, height=4)
        docList.pack()
        docList.place(x=10, y=40)

        scrl = tk.Scrollbar(root)

        doctor.append(Doctor.Doctor(0, "Wszyscy", "Lekarze", "0", "-"))

        def addDoctors():
            list = client.getDoctors(msg['id'])
            for i in range(len(list)):
                d = list[i]
                doctor.append(
                    Doctor.Doctor(d['id'], d['fisrtname'], d['lastname'],
                                  data0, d['specjalizacja']))

        addDoctors()

        def addData():
            pass

        #pobieranie lekarzy
        for doc in doctor:
            docList.insert(tk.END, doc.name + " " + doc.surname)

        scrl.place(in_=docList, relx=1, rely=0, relheight=1)
        scrl.config(command=docList.yview)

        Name = tk.Label(root, text="Imie", bg="white").place(x=10, y=140)
        name = tk.Entry(root, width=25)
        name.pack()
        name.place(x=10, y=165)

        Surname = tk.Label(root, text="Nazwisko", bg="white").place(x=180,
                                                                    y=140)
        surname = tk.Entry(root, width=25)
        surname.pack()
        surname.place(x=180, y=165)

        Special = tk.Label(root, text="Specjalizacja", bg="white").place(x=10,
                                                                         y=195)
        special = tk.Entry(root, width=25)
        special.pack()
        special.place(x=10, y=220)

        def clickList(self):
            if len(docList.curselection()) > 0:
                global x
                x = docList.curselection()
                name.delete(0, len(name.get()))
                name.insert(0, doctor[x[len(x) - 1]].name)
                surname.delete(0, len(surname.get()))
                surname.insert(0, doctor[x[len(x) - 1]].surname)
                special.delete(0, len(special.get()))
                special.insert(0, doctor[x[len(x) - 1]].special)

                if not x[len(x) - 1] == 0:
                    name4.delete(0, len(name4.get()))
                    name4.insert(0, doctor[x[len(x) - 1]].name)
                    surname4.delete(0, len(surname4.get()))
                    surname4.insert(0, doctor[x[len(x) - 1]].surname)

        docList.bind('<<ListboxSelect>>', clickList)

        var = tk.StringVar()
        Info = tk.Label(root, textvariable=var, bg="white",
                        fg="red").place(x=10, y=250)

        def clickBut():
            try:
                if client.isConnect(HOST, PORT):
                    #zmiana zmiennych lekarza
                    doctor[x[len(x) - 1]].name = name.get()
                    doctor[x[len(x) - 1]].surname = surname.get()
                    doctor[x[len(x) - 1]].special = special.get()
                    docList.delete(0, docList.size())
                    for doc in doctor:
                        docList.insert(tk.END, doc.name + " " + doc.surname)
                    client.sendChangeDoctor()
                    var.set("Zapisano Zmiany")
                else:
                    var.set("Nie można połączyć z serverem")
            except NameError:
                var.set("Wybierz edytowanego użytkownika")

        Log = tk.Button(root, text="Zmień", command=clickBut).place(width=100,
                                                                    height=30,
                                                                    x=190,
                                                                    y=205)

        Title = tk.Label(root, text="Terminarz:", bg="white").place(x=450,
                                                                    y=10)
        scrl2 = tk.Scrollbar(root)
        textB = tk.Text(root,
                        width=50,
                        height=24,
                        highlightthickness=1,
                        bd=0,
                        highlightbackground="grey",
                        wrap="none")
        textB.pack(expand=True)
        textB.place(x=450, y=40)

        scrl2.place(in_=textB, relx=1, rely=0, relheight=1)

        textB.configure(state='disabled')
        textB.config(cursor="arrow", yscrollcommand=scrl2.set)
        scrl2.config(command=textB.yview)

        def setTextB(text):
            textB.configure(state='normal')
            textB.delete('1.0', tk.END)
            textB.insert(tk.END, text)
            textB.configure(state='disabled')

        # s = ""
        # for i in range(100):
        #     s = s + "siema"+str(i)+"\n"
        # setTextB(s)

        def minutesString(n):
            if n < 10:
                return "0" + str(n)
            else:
                return str(n)

        def getTextDoctor(id, l, day, month, year):
            d = l[id]
            s = d.name + " " + d.surname + ": \n"
            if not d.data == data0:
                if day == -1:
                    for j in range(len(d.data)):
                        s = s + "   " + minutesString(
                            d.data[j].day
                        ) + "." + minutesString(d.data[j].month) + "." + str(
                            d.data[j].year
                        ) + " " + str(d.data[j].godzina) + ":" + minutesString(
                            d.data[j].minuta) + " - " + d.data[
                                j].name + " " + d.data[j].surname + "\n"
                else:
                    for j in range(len(d.data)):
                        if day == d.data[j].day and month == d.data[
                                j].month and year == d.data[j].year:
                            s = s + "   " + minutesString(d.data[j].day) + "." + minutesString(d.data[j].month) + "." + str(
                                d.data[j].year) + " " + str(
                                d.data[j].godzina) + ":" + minutesString(d.data[j].minuta) + " - " + d.data[j].name + " " + \
                                d.data[
                                    j].surname + "\n"
            return s

        cal = CalendarGraph.CalendarGraph(root, 10, 380)

        def setTextData(id, l):
            saveday = cal.getSaveDay()
            savemonth = cal.getSaveMonth()
            saveyear = cal.getSaveYear()
            s = ""
            if id == 0:
                for i in range(len(l) - 1):
                    s = s + getTextDoctor(i + 1, l, saveday, savemonth,
                                          saveyear) + "\n"
            else:
                s = getTextDoctor(id, l, saveday, savemonth, saveyear)
            setTextB(s)

        def upgradeTermByCal(event):
            global x
            cal.save(event)
            try:
                setTextData(x[len(x) - 1], doctor)
            except NameError:
                setTextData(0, doctor)

        setTextData(0, doctor)

        root.bind("<Button-1>", upgradeTermByCal)

        Login = tk.Label(root, text="Login nowego lekarza:",
                         bg="white").place(x=890, y=10)
        login = tk.Entry(root, width=50)
        login.pack()
        login.place(x=890, y=40)

        Pas = tk.Label(root, text="Hasło:", bg="white").place(x=890, y=80)
        pas = tk.Entry(root, width=50, show="*")
        pas.pack()
        pas.place(x=890, y=110)

        Pasp = tk.Label(root, text="Powtórz Hasło:", bg="white").place(x=890,
                                                                       y=150)
        pasp = tk.Entry(root, width=50, show="*")
        pasp.pack()
        pasp.place(x=890, y=180)

        Name2 = tk.Label(root, text="Imie:", bg="white").place(x=890, y=220)
        name2 = tk.Entry(root, width=50)
        name2.pack()
        name2.place(x=890, y=250)

        Surname2 = tk.Label(root, text="Nazwisko:", bg="white").place(x=890,
                                                                      y=290)
        surname2 = tk.Entry(root, width=50)
        surname2.pack()
        surname2.place(x=890, y=320)

        Special2 = tk.Label(root, text="Specjalizacja:",
                            bg="white").place(x=890, y=360)
        special2 = tk.Entry(root, width=50)
        special2.pack()
        special2.place(x=890, y=390)

        var2 = tk.StringVar()
        Info2 = tk.Label(root, textvariable=var2, bg="white",
                         fg="red").place(x=890, y=420)

        def registerDoctor():
            if client.isConnect(HOST, PORT):
                if pas.get() == pasp.get():
                    if len(pas.get()) > 5:
                        client.sendRegisterDoctor(name2.get(), surname2.get(),
                                                  special2.get(), msg['name'],
                                                  msg['id'], login.get(),
                                                  pas.get())
                        re = client.isSucces()
                        if re:
                            doctor.append(
                                Doctor.Doctor(len(doctor), name2.get(),
                                              surname2.get(), data0,
                                              special2.get()))
                            docList.insert(tk.END,
                                           name2.get() + " " + surname2.get())
                            setTextData(0, doctor)
                            var2.set("Rejsetracja powiodła się")
                        else:
                            var2.set("Doktor istnieje już w bazie danych")
                    else:
                        var2.set("Hasło musi mieć conajmniej 6 znaków")
                else:
                    var2.set("Przepisz poprawnie hasło")
            else:
                var2.set("Nie można połączyć z serverem")

        Reg = tk.Button(root, text="Zarejestruj",
                        command=registerDoctor).place(width=100,
                                                      height=30,
                                                      x=890,
                                                      y=450)

        changeData = tk.Label(root, text="Zmień date wizyty",
                              bg="white").place(x=450, y=450)
        changeData = tk.Label(
            root,
            text="Podaj starą date i godzine wizyty oraz dane pacjenta",
            bg="white").place(x=450, y=470)

        dayVar = tk.IntVar()
        daySpin = tk.Spinbox(root,
                             from_=1,
                             to=31,
                             textvariable=dayVar,
                             width=6)
        daySpin.pack()
        daySpin.place(x=450, y=500)

        monthVar = tk.IntVar()
        monthSpin = tk.Spinbox(root,
                               from_=1,
                               to=12,
                               textvariable=monthVar,
                               width=6)
        monthSpin.pack()
        monthSpin.place(x=510, y=500)

        yearVar = tk.IntVar()
        yearSpin = tk.Spinbox(root,
                              from_=datetime.datetime.now().year,
                              to=datetime.datetime.now().year + 1000,
                              textvariable=yearVar,
                              width=6)
        yearSpin.pack()
        yearSpin.place(x=570, y=500)

        hourVar = tk.IntVar()
        hourSpin = tk.Spinbox(root,
                              from_=1,
                              to=24,
                              textvariable=hourVar,
                              width=6)
        hourSpin.pack()
        hourSpin.place(x=650, y=500)

        minuteVar = tk.IntVar()
        minuteSpin = tk.Spinbox(root,
                                from_=0,
                                to=60,
                                textvariable=minuteVar,
                                width=6)
        minuteSpin.pack()
        minuteSpin.place(x=710, y=500)

        Name3 = tk.Label(root, text="Imie:", bg="white").place(x=450, y=520)
        name3 = tk.Entry(root, width=20)
        name3.pack()
        name3.place(x=450, y=540)

        Surname3 = tk.Label(root, text="Nazwisko:", bg="white").place(x=580,
                                                                      y=520)
        surname3 = tk.Entry(root, width=20)
        surname3.pack()
        surname3.place(x=580, y=540)

        changeData = tk.Label(
            root,
            text="Podaj nową date i godzine wizyty oraz dane lekarza",
            bg="white").place(x=450, y=570)

        dayVarNew = tk.IntVar()
        daySpinNew = tk.Spinbox(root,
                                from_=1,
                                to=31,
                                textvariable=dayVarNew,
                                width=6)
        daySpinNew.pack()
        daySpinNew.place(x=450, y=600)

        monthVarNew = tk.IntVar()
        monthSpinNew = tk.Spinbox(root,
                                  from_=1,
                                  to=12,
                                  textvariable=monthVarNew,
                                  width=6)
        monthSpinNew.pack()
        monthSpinNew.place(x=510, y=600)

        yearVarNew = tk.IntVar()
        yearSpinNew = tk.Spinbox(root,
                                 from_=datetime.datetime.now().year,
                                 to=datetime.datetime.now().year + 1000,
                                 textvariable=yearVarNew,
                                 width=6)
        yearSpinNew.pack()
        yearSpinNew.place(x=570, y=600)

        hourVarNew = tk.IntVar()
        hourSpinNew = tk.Spinbox(root,
                                 from_=1,
                                 to=24,
                                 textvariable=hourVarNew,
                                 width=6)
        hourSpinNew.pack()
        hourSpinNew.place(x=650, y=600)

        minuteVarNew = tk.IntVar()
        minuteSpinNew = tk.Spinbox(root,
                                   from_=0,
                                   to=60,
                                   textvariable=minuteVarNew,
                                   width=6)
        minuteSpinNew.pack()
        minuteSpinNew.place(x=710, y=600)

        Name4 = tk.Label(root, text="Imie:", bg="white").place(x=450, y=620)
        name4 = tk.Entry(root, width=20)
        name4.pack()
        name4.place(x=450, y=640)

        Surname4 = tk.Label(root, text="Nazwisko:", bg="white").place(x=580,
                                                                      y=620)
        surname4 = tk.Entry(root, width=20)
        surname4.pack()
        surname4.place(x=580, y=640)

        def lookForDoctor(lookName, lookSurname):
            for i in range(len(doctor)):
                if doctor[i].name == lookName and doctor[
                        i].surname == lookSurname:
                    return i
            return -1

        def lookForDoctorByName(lookName, lookSurname):
            for i in range(len(doctor)):
                for j in range(len(doctor[i].data)):
                    if doctor[i].data[j].name == lookName and doctor[i].data[
                            j].surname == lookSurname:
                        if doctor[i].data[j].day == dayVar.get(
                        ) and doctor[i].data[j].month == monthVar.get(
                        ) and doctor[i].data[j].year == yearVar.get():
                            if doctor[i].data[j].minuta == minuteVar.get(
                            ) and doctor[i].data[j].godzina == hourVar.get():
                                return i
            return -1

        var3 = tk.StringVar()
        Info3 = tk.Label(root, textvariable=var3, bg="white",
                         fg="red").place(x=450, y=680)

        def changeD():
            if client.isConnect(HOST, PORT):
                if len(name3.get()) > 0 and len(name4.get()) > 0 and len(
                        surname3.get()) > 0 and len(surname4.get()) > 0:
                    if True:
                        indexDoc1 = lookForDoctorByName(
                            name3.get(), surname3.get())
                        go = False
                        if not indexDoc1 == -1:
                            go = True
                        indexDoc2 = lookForDoctor(name4.get(), surname4.get())
                        if (not lookForDoctor(name4.get(), surname4.get())
                                == -1) and go:
                            doctor[lookForDoctorByName(
                                name3.get(), surname3.get())].removeData(
                                    dayVar.get(), monthVar.get(),
                                    yearVar.get(), hourVar.get(),
                                    minuteVar.get())
                            doctor[indexDoc2].data.append(
                                Data.Data(dayVarNew.get(), monthVarNew.get(),
                                          yearVarNew.get(), name3.get(),
                                          surname3.get(), hourVarNew.get(),
                                          minuteVarNew.get()))
                            setTextData(0, doctor)
                            var3.set("Udało się zmienić")
                        else:
                            if go:
                                var3.set("Nie znaleziono lekarza")
                            else:
                                var3.set("Nie znaleziono terminu")
                else:
                    var3.set("Uzupełnij wszystkie pola formularza")
            else:
                var3.set("Nie można połączyć z serverem")

        Reg = tk.Button(root, text="Zmień", command=changeD).place(width=100,
                                                                   height=30,
                                                                   x=450,
                                                                   y=710)

        root.mainloop()
Ejemplo n.º 13
0
    async def create(self, message, role_dictionary, players):
        # Set guild
        self.guild = message.guild

        ## Generate random players
        random.seed(os.urandom(200))
        for char_type, count in role_dictionary.items():
            for i in range(0, count):
                rand_player = random.randint(0, len(players) - 1)
                print("{} : {}".format(char_type, message.guild.get_member(players[rand_player])))
                if char_type == "Doctor":
                    self.players[players[rand_player]] = Doctor.Doctor(players[rand_player], message.guild.get_member(players[rand_player]).name)
                elif char_type == "Mafia":
                    self.players[players[rand_player]] = Mafia.Mafia(players[rand_player], message.guild.get_member(players[rand_player]).name)
                    self.mafia[players[rand_player]] = self.players[players[rand_player]]
                elif char_type == "Villager":
                    self.players[players[rand_player]] = Villager.Villager(players[rand_player], message.guild.get_member(players[rand_player]).name)
                elif char_type == "Cop":
                    self.players[players[rand_player]] = Cop.Cop(players[rand_player], message.guild.get_member(players[rand_player]).name)
                elif char_type == "TownCrier":
                    self.players[players[rand_player]] = TownCrier.TownCrier(players[rand_player], message.guild.get_member(players[rand_player]).name)
                players.remove(players[rand_player])
        
        self.game_composition = self.players.copy()

        # Create roles
        self.roles["Dead"] = await message.guild.create_role(name="Dead")
        self.roles["Day"] = await message.guild.create_role(name="Day")
        self.roles["Night"] = await message.guild.create_role(name="Night")
        self.roles["Alive"] = await message.guild.create_role(name="Alive")

        await self.roles["Dead"].edit(position=1, hoist=True)
        await self.roles["Alive"].edit(position=1, hoist=True)

        # Create permissions and channels
        base_perms = { message.guild.default_role : discord.PermissionOverwrite(read_messages=False,send_messages=False) }
        base_perms[self.roles["Dead"]] = discord.PermissionOverwrite(read_messages=True)
        
        mafia_perms = base_perms.copy()
        mafia_perms[self.roles["Alive"]] = discord.PermissionOverwrite(send_messages=True)

        for player, val in self.mafia.items():
            mafia_perms[message.guild.get_member(player)] = discord.PermissionOverwrite(read_messages=True)
        
        mafia_channel = await message.guild.create_text_channel("mafia", overwrites=mafia_perms)
        self.night_channels["mafia"].append(mafia_channel)

        for player, val in self.mafia.items():
            self.player_channels[player] = mafia_channel

        villager_perms = base_perms.copy()

        for player, val in self.players.items():
            villager_perms[message.guild.get_member(player)] = discord.PermissionOverwrite(read_messages=True)

        villager_perms[self.roles["Day"]] = discord.PermissionOverwrite(send_messages=True)
        villager_perms[self.roles["Night"]] = discord.PermissionOverwrite(send_messages=False)

        self.day_channels["townhall"].append(await message.guild.create_text_channel("townhall", overwrites=villager_perms))

        dead_perms = base_perms.copy()
        dead_perms[self.roles["Dead"]] = discord.PermissionOverwrite(read_messages=True,send_messages=True)
        self.dead_channel = await message.guild.create_text_channel("Dead", overwrites=dead_perms)

        for player, val in self.players.items():
            if val.name == "Mafia":
                continue
            if val.can_act is True:
                curr_perms = base_perms.copy()
                curr_perms[message.guild.get_member(player)] = discord.PermissionOverwrite(read_messages=True)
                if val.act_time == "Day":
                    curr_perms[self.roles["Day"]] = discord.PermissionOverwrite(send_messages=True)
                    player_channel = await message.guild.create_text_channel(val.name, overwrites=curr_perms)
                    self.day_channels[val.name].append(player_channel)
                elif val.act_time == "Night":
                    curr_perms[self.roles["Night"]] = discord.PermissionOverwrite(send_messages=True)
                    player_channel = await message.guild.create_text_channel(val.name, overwrites=curr_perms)
                    self.night_channels[val.name].append(player_channel)
                self.player_channels[player] = player_channel
        
        
        for player_id, channel in self.player_channels.items():
            await channel.send("{} You are a {}.\n{}".format(self.guild.get_member(player_id).mention, self.players[player_id].name, self.players[player_id].whoami()))

        help_msg = (
            "`!act <number>` - Act on <number\> if your role has the ability to `!act`.\n"
            "`!abstain` - Abstain from lynching. If you already voted - removes your vote.\n"
            "`!tovote` - Gets players who have not voted for lynching.\n"
            "`!timer` - Vote to start a timer which forces a lynch in 1 minute.\n"
            "`!gamecomp` - List dead players and the game composition.\n"
            "`!list` - Lists players and their act numbers.\n"
            "`!lastwill <message>` - Adds <message\> as your lastwill, to be displayed on death.\n"
        )

        await self.broadcast_message("townhall", help_msg) 

        await self.update()
        'patient_prefix': patient_info[4],
        'patient_surname': patient_info[5],
        'doctors_phone_number': doctor_info[0],
        'doctors_address1': doctor_info[1],
        'doctors_address2': doctor_info[2],
        'dr_name': doctor_info[3],
        'day': appointment_info[0],
        'month': appointment_info[1],
        'year': appointment_info[2],
        'time': appointment_info[3],
        'clinic_type': appointment_info[4],
        'signature': signature
    }
    save_path = "generated/" + patient_info[6] + patient_info[5] + ".docx"
    tpl.render(context)
    tpl.save(save_path)


if __name__ == "__main__":
    doctorJB = Dr.Doctor("Backwell", "Gastroenterology",
                         ["123 Street", "W1 456"], "0123456789",
                         "Guy's Hospital")
    appointment1 = appt.Appointment("1st", "January", "2020", "12:00",
                                    "Gastro Clinic",
                                    "8f789d0b-3145-4cf2-8504-13159edaa747")
    fhir = FHIR('https://localhost:5001/api/', verify_ssl=False)
    patients = fhir.get_patient_page(5)
    for patient in patients:
        generateApptLetterDocX(patient.uuid, doctorJB, appointment1,
                               "templates/doctorAppointment.docx")
Ejemplo n.º 15
0
def getDoctor(url):
    """
    This function takes an url from a Doctor page and grabs all the
    needed data from there.
    """
    #requesting the page and reading it
    try:
        page = request.urlopen(url).read()
    except Exception as e:
        #if some error occurs, it returns a void Doctor object
        #(all attributes are setted as "---")
        print(e)
        return Doctor()

    #taking the BS manager
    soup = BS(page, "html.parser")

    #FULL NAME : doctor_name: IS MANDATORY! If it is not possible
    #to obtain the name, it raises an error to be treated in the main
    #function
    try:
        #taking, from all list item '<li class="dropdown"></li>',
        #the string of the last one
        doctor_name = soup.find_all("li",
                                    class_="dropdown")[-1].span.string  #OK
    except:
        print("Couldn't get name.")
        f = open(file_name_if_couldnt_get_doctor_name, "a")
        f.write(url + "\n")
        f.close()
        raise Exception(
            "\033[91;mCould not get a name. A void entry is returned as '---'.\033[m"
        )

    # SKILLS LIST : doctor_skills_list
    try:
        #taking, from all h2 title '<h2 class="h4"></h2>', the first entry
        doctor_skills_h2 = soup.find_all("h2", class_="h4")[0]
        #taking all the anchors <a> inside the <h2>
        doctor_skills_a = doctor_skills_h2.find_all('a')

        #list for appending
        doctor_skills_list = []
        for a in doctor_skills_a:
            doctor_skills_list.append(a.string)
    except:
        #if it fails, take it as ["---"]
        doctor_skills_list = ["---"]
        print("Couldn't get doctor_skills_list.")

    #SPECIALTY
    try:
        #taking, from all list item '<li class="dropdown"></li>', the second entry
        #taking, from all anchors '<a itemprop="item"></a>', the first entry
        #inside the <li> as string
        doctor_specialty = soup.find_all("li", \
            class_="dropdown")[1].find_all("a",\
            itemprop="item")[0].span.string
    except:
        #if it fails, take it as "---"
        doctor_specialty = "---"
        print("Couldn't get specialty.")

    # CITY
    try:
        #taking, from all list item '<li class="dropdown"></li>', the third entry
        #taking, from all anchors '<a itemprop="item"></a>', the first entry
        #inside the <li> as string
        doctor_city = soup.find_all("li", \
            class_="dropdown")[2].find_all("a", \
            itemprop="item")[0].span.string
    except:
        #if it fails, take it as "---"
        doctor_city = "---"
        print("Couldn't get city.")

    # STATE
    try:
        #taking,from all span, the content of the first entry
        #'<span class="province region"></span>'
        doctor_state = soup.find_all("span", \
            class_="province region")[0]["content"]
    except:
        #if it fails, take it as "---"
        doctor_state = "---"
        print("Couldn't get state.")

    # PHONE
    try:
        #taking, from all anchors '<a class="visible-xs"></a>', the second entry
        #as string
        doctor_phone = soup.find_all("a", class_="visible-xs")[1].string
    except:
        #if it fails, take it as "---"
        doctor_phone = "---"
        print("Couldn't get phone number.")

    #building a Doctor object for returning
    D = Doctor()
    D.setName(doctor_name)
    D.setSpecialty(doctor_specialty)
    D.setSkills(", ".join(doctor_skills_list))
    D.setState(doctor_state)
    D.setCity(doctor_city)
    D.setPhone(doctor_phone)

    return D
def add_doc():
    doc_obj = Doctor()
    data = {}
    data["doctor"] = {}
    data = json.load("Doctor.json", "r")
    try:
        f_name = input("Enter the First Name")
        doc_obj.set_first_name(f_name)

        l_name = input("Enter the Last Name")
        doc_obj.set_last_name(l_name)

        id = input("Enter id")
        if len(id) > 4:
            print("Invalid Id")
            exit(0)
        else:
            doc_obj.set_id(id)

        specialization = input("Enter Specialization ")
        doc_obj.set_specialization(specialization)

        avail = input("Enter availability")
        doc_obj.set_availability(avail)

        data["doctor"][f_name] = ({
            'f_name':
            doc_obj.get_first_name(),
            'l_name':
            doc_obj.get_last_name(),
            'id':
            doc_obj.get_id(),
            'specialization':
            doc_obj.get_specialization(),
            'avail':
            doc_obj.get_availability()
        })
        with open('Doctor.json', 'w') as database1:
            json.dump(data, database1, sort_keys="True")
        print("Doctor Detail Added Successfully")

    except (NameError, SyntaxError, TypeError):
        print("Not a proper type of data")
Ejemplo n.º 17
0
    def create(self, message, role_dictionary, players_list):
        ## Generate random players_list
        random.seed(os.urandom(200))
        for char_type, count in role_dictionary.items():
            for i in range(0, count):
                rand_player = random.randint(0, len(players_list) - 1)
                print("{} : {}".format(char_type, message.guild.get_member(player_id)))
                player_id = players_list[rand_player]
                member_object = message.guild.get_member(player_id)
                if char_type == "Doctor":
                    self.alive_players[player_id] = Doctor.Doctor(player_id, member_object.name)
                elif char_type == "Mafia":
                    self.alive_players[player_id] = Mafia.Mafia(player_id, member_object.name)
                    self.mafia[player_id] = self.alive_players[player_id]
                elif char_type == "Villager":
                    self.alive_players[player_id] = Villager.Villager(player_id, member_object.name)
                elif char_type == "Cop":
                    self.alive_players[player_id] = Cop.Cop(player_id, member_object.name)
                elif char_type == "TownCrier":
                    self.alive_players[player_id] = TownCrier.TownCrier(player_id, member_object.name)

                self.player_to_member[player_id]  = member_object
                players_list.remove(player_id)
        
        # Copy to game composition
        self.game_comp = self.alive_players.copy()

        # Create roles
        self.roles["Dead"] = await message.guild.create_role(name="Dead")
        self.roles["Day"] = await message.guild.create_role(name="Day")
        self.roles["Night"] = await message.guild.create_role(name="Night")
        self.roles["Alive"] = await message.guild.create_role(name="Alive")

        await self.roles["Alive"].edit(position=1, hoist=True)
        await self.roles["Dead"].edit(position=1, hoist=True)

        # Create permissions and channels
        # Create base permissions
        base_perms = { message.guild.default_role : discord.PermissionOverwrite(read_messages=False,send_messages=False) }
        base_perms[self.roles["Dead"]] = discord.PermissionOverwrite(read_messages=True)
        
        # Mafia permissions
        mafia_perms = base_perms.copy()
        mafia_perms[self.roles["Alive"]] = discord.PermissionOverwrite(send_messages=True)

        for player_id in self.mafia:
            mafia_perms[message.guild.get_member(player_id)] = discord.PermissionOverwrite(read_messages=True)
        
        self.mafia_channel = await message.guild.create_text_channel("mafia", overwrites=mafia_perms)

        # Villager permissions
        villager_perms = base_perms.copy()

        for player_id in self.game_comp:
            villager_perms[message.guild.get_member(player_id)] = discord.PermissionOverwrite(read_messages=True)

        villager_perms[self.roles["Day"]] = discord.PermissionOverwrite(send_messages=True)
        villager_perms[self.roles["Night"]] = discord.PermissionOverwrite(send_messages=False)

        self.villager_channel = await message.guild.create_text_channel("townhall", overwrites=villager_perms)

        dead_perms = base_perms.copy()
        dead_perms[self.roles["Dead"]] = discord.PermissionOverwrite(read_messages=True,send_messages=True)
        self.dead_channel = await message.guild.create_text_channel("Dead", overwrites=dead_perms)

        # Individual role permissions
        for player_id, role_class in self.game_comp.items():
            if role_class.role_name == "mafia":
                continue
            # Zero out last will and act channel
            last_will_channel = 0
            act_channel = 0

            # Setup a lastwill channel for every player
            last_will_perms = base_perms.copy()
            last_will_perms[message.guild.get_member(player_id)] = discord.PermissionOverwrite(read_messages=True)
            last_will_perms[self.roles["Night"]] = discord.PermissionOverwrite(send_messages=True)
            last_will_channel = await message.guild.create_text_channel("lastwill", overwrites=last_will_perms) 
            
            # Setup an act channel if appropriate
            if role_class.can_act is True:
                act_perms = base_perms.copy() 
                act_perms[message.guild.get_member(player_id)] = discord.PermissionOverwrite(read_messages=True)
                act_perms[self.roles[role_class.act_time]] = discord.PermissionOverwrite(send_messages=True)
                act_channel = await message.guild.create_text_channel(role_class.role_name, overwrites=act_perms)

            self.player_channels[player_id] = PlayerChannels(last_will_channel, act_channel)
                    
        for player_id, player_chans in self.player_channels.items():
            if player_chans.act_channel != 0:
                await player_chans.act_channel.send("{} You are a {}.\n{}".format(message.guild.get_member(player_id).mention, self.game_comp[player_id].role_name, self.game_comp[player_id].whoami()))