# -*- coding: utf-8 -*- # Form implementation generated from reading ui file 'TebNo.ui' # # Created by: PyQt5 UI code generator 5.15.9 # # WARNING: Any manual changes made to this file will be lost when pyuic5 is # run again. Do not edit this file unless you know what you are doing. from PyQt5 import QtCore, QtGui, QtWidgets, Qt from PyQt5.QtWidgets import QTableWidgetItem, QMessageBox from PatientModel import PatientModel from AllVisits import AllVisitsModel from pathlib import Path import os from unidecode import unidecode import resources from database import Patient, Visit, PatientOperations, VisitOperations from PatientScreenApp import PatientWindow from TimerBox import TimerMessageBox from Charts import VisitsChart, PatientsChart, VisitPriority from OSHandling import OSHandling class Ui_TebNoContainer(object): def setupUi(self, TebNoContainer): QtGui.QFontDatabase.addApplicationFont(':/fonts/Vazirmatn-Bold.ttf') TebNoContainer.setObjectName("TebNoContainer") TebNoContainer.resize(700, 680) sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Fixed, QtWidgets.QSizePolicy.Fixed) sizePolicy.setHorizontalStretch(0) sizePolicy.setVerticalStretch(0) sizePolicy.setHeightForWidth(TebNoContainer.sizePolicy().hasHeightForWidth()) TebNoContainer.setSizePolicy(sizePolicy) TebNoContainer.setMinimumSize(QtCore.QSize(700, 680)) TebNoContainer.setMaximumSize(QtCore.QSize(700, 680)) TebNoContainer.setGeometry(QtCore.QRect(200, 30, 0, 0)) #Style Path with open(OSHandling.styleHandling(), 'r') as f: TebNoContainer.setStyleSheet(f.read()) self.maintab = QtWidgets.QTabWidget(TebNoContainer) self.maintab.setGeometry(QtCore.QRect(40, 0, 650, 650)) sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Fixed, QtWidgets.QSizePolicy.Fixed) sizePolicy.setHorizontalStretch(0) sizePolicy.setVerticalStretch(0) sizePolicy.setHeightForWidth(self.maintab.sizePolicy().hasHeightForWidth()) self.maintab.setSizePolicy(sizePolicy) self.maintab.setMinimumSize(QtCore.QSize(650, 650)) self.maintab.setMaximumSize(QtCore.QSize(650, 650)) self.maintab.setLayoutDirection(QtCore.Qt.RightToLeft) self.maintab.setIconSize(QtCore.QSize(32, 32)) self.maintab.setObjectName("maintab") self.newPatient = QtWidgets.QWidget() self.newPatient.setObjectName("newPatient") self.verticalLayout_2 = QtWidgets.QVBoxLayout(self.newPatient) self.verticalLayout_2.setObjectName("verticalLayout_2") self.name = QtWidgets.QLabel(self.newPatient) self.name.setObjectName("name") self.verticalLayout_2.addWidget(self.name) self.fname = QtWidgets.QLineEdit(self.newPatient) font = QtGui.QFont() font.setFamily("Vazirmatn") font.setPointSize(10) self.fname.setFont(font) self.fname.setLocale(QtCore.QLocale(QtCore.QLocale.Persian, QtCore.QLocale.Iran)) self.fname.setEchoMode(QtWidgets.QLineEdit.Normal) self.fname.setObjectName("fname") self.verticalLayout_2.addWidget(self.fname) self.lastname = QtWidgets.QLabel(self.newPatient) self.lastname.setObjectName("lastname") self.verticalLayout_2.addWidget(self.lastname) self.lname = QtWidgets.QLineEdit(self.newPatient) font = QtGui.QFont() font.setFamily("Vazirmatn") font.setPointSize(10) self.lname.setFont(font) self.lname.setLocale(QtCore.QLocale(QtCore.QLocale.Persian, QtCore.QLocale.Iran)) self.lname.setObjectName("lname") self.verticalLayout_2.addWidget(self.lname) self.birth = QtWidgets.QLabel(self.newPatient) self.birth.setObjectName("birth") self.verticalLayout_2.addWidget(self.birth) self.birthDate = QtWidgets.QLineEdit(self.newPatient) self.birthDate.setEchoMode(QtWidgets.QLineEdit.Normal) self.birthDate.setCursorPosition(10) self.birthDate.setObjectName("birthDate") self.verticalLayout_2.addWidget(self.birthDate) self.nCode = QtWidgets.QLabel(self.newPatient) self.nCode.setObjectName("nCode") self.verticalLayout_2.addWidget(self.nCode) self.nationalCode = QtWidgets.QLineEdit(self.newPatient) self.nationalCode.setText("") self.nationalCode.setEchoMode(QtWidgets.QLineEdit.Normal) # self.nationalCode.setCursorPosition(0) # self.nationalCode.installEventFilter(self) self.nationalCode.setObjectName("nationalCode") self.verticalLayout_2.addWidget(self.nationalCode) self.phone = QtWidgets.QLabel(self.newPatient) self.phone.setObjectName("phone") self.verticalLayout_2.addWidget(self.phone) self.phoneNumber = QtWidgets.QLineEdit(self.newPatient) self.phoneNumber.setEchoMode(QtWidgets.QLineEdit.Normal) # self.phoneNumber.setCursorPosition(0) # self.phoneNumber.installEventFilter(self) self.phoneNumber.setObjectName("phoneNumber") self.verticalLayout_2.addWidget(self.phoneNumber) self.submitBtn = QtWidgets.QPushButton(self.newPatient) self.submitBtn.setObjectName("submitBtn") self.verticalLayout_2.addWidget(self.submitBtn) icon = QtGui.QIcon() icon.addPixmap(QtGui.QPixmap(":/images/person.png"), QtGui.QIcon.Normal, QtGui.QIcon.Off) self.maintab.addTab(self.newPatient, icon, "") self.viewPatients = QtWidgets.QWidget() self.verticalLayoutWidget = QtWidgets.QWidget(self.viewPatients) self.verticalLayoutWidget.setGeometry(QtCore.QRect(60, 20, 511, 441)) self.verticalLayoutWidget.setObjectName("verticalLayoutWidget") self.patientListsLayout = QtWidgets.QVBoxLayout(self.verticalLayoutWidget) self.patientListsLayout.setContentsMargins(0, 0, 0, 0) self.patientListsLayout.setObjectName("patientListsLayout") font = QtGui.QFont() font.setFamily("Vazirmatn") font.setPointSize(10) self.patientsList = QtWidgets.QTableView() self.patientsList.setFont(font) self.patient_model = PatientModel(self, ['نام','نام خانوادگی', 'کد ملی', 'شماره همراه']) self.patientsList.setModel(self.patient_model) self.patientsList.doubleClicked.connect(self.patientsShow) self.patientListsLayout.addWidget(self.patientsList) icon1 = QtGui.QIcon() icon1.addPixmap(QtGui.QPixmap(":/images/patients.png"), QtGui.QIcon.Normal, QtGui.QIcon.Off) self.maintab.addTab(self.viewPatients, icon1, "") # visits list here self.viewVisits = QtWidgets.QWidget() self.verticalLayoutWidget_3 = QtWidgets.QWidget(self.viewVisits) self.verticalLayoutWidget_3.setGeometry(QtCore.QRect(60, 20, 511, 441)) self.verticalLayoutWidget_3.setObjectName("verticalLayoutWidget_3") self.visitListsLayout = QtWidgets.QVBoxLayout(self.verticalLayoutWidget_3) self.visitListsLayout.setContentsMargins(0, 0, 0, 0) self.visitListsLayout.setObjectName("visitListsLayout") font = QtGui.QFont() font.setFamily("Vazirmatn") font.setPointSize(10) self.visitsList = QtWidgets.QTableView() self.visitsList.setFont(font) self.visit_model = AllVisitsModel(self, ['نام خانوادگی', 'کد ملی','تاریخ', 'ساعت', 'وضعیت']) self.visitsList.setModel(self.visit_model) self.visitListsLayout.addWidget(self.visitsList) icon1 = QtGui.QIcon() icon1.addPixmap(QtGui.QPixmap(":/images/visits.png"), QtGui.QIcon.Normal, QtGui.QIcon.Off) self.maintab.addTab(self.viewVisits, icon1, "") #statistics plots self.viewPlots = QtWidgets.QWidget() self.plotsLayout = QtWidgets.QVBoxLayout(self.viewPlots) self.visitPlot = QtWidgets.QPushButton(self.viewPlots) self.visitPlot.setObjectName("visitPlot") self.plotsLayout.addWidget(self.visitPlot) self.patientPlot = QtWidgets.QPushButton(self.viewPlots) self.patientPlot.setObjectName("patientPlot") self.plotsLayout.addWidget(self.patientPlot) self.visitChartPlot = QtWidgets.QPushButton(self.viewPlots) self.visitChartPlot.setObjectName("visitChartPlot") self.plotsLayout.addWidget(self.visitChartPlot) icon1 = QtGui.QIcon() icon1.addPixmap(QtGui.QPixmap(":/images/statistics.png"), QtGui.QIcon.Normal, QtGui.QIcon.Off) self.maintab.addTab(self.viewPlots, icon1, "") self.visitPlot.clicked.connect(self.visit_statistics) self.patientPlot.clicked.connect(self.patient_statistics) self.visitChartPlot.clicked.connect(self.visits_charts) self.submitBtn.clicked.connect(self.save_patient) self.retranslateUi(TebNoContainer) self.maintab.setCurrentIndex(0) #Patients Information Screen # self.patientScreen = PatientWindow(self.visitsList) # self.patientScreen.closed.connect(self.show) QtCore.QMetaObject.connectSlotsByName(TebNoContainer) def retranslateUi(self, TebNoContainer): _translate = QtCore.QCoreApplication.translate TebNoContainer.setWindowTitle(_translate("TebNoContainer", "Form")) self.name.setText(_translate("TebNoContainer", "نام:")) self.lastname.setText(_translate("TebNoContainer", "نام خانودگی:")) self.birth.setText(_translate("TebNoContainer", "سال تولد:")) self.birthDate.setInputMask(_translate("TebNoContainer", "1999/99/99")) self.birthDate.setText(_translate("TebNoContainer", "1//")) self.nCode.setText(_translate("TebNoContainer", "کد ملی:")) self.nationalCode.setInputMask(_translate("TebNoContainer", "9999999999")) self.phone.setText(_translate("TebNoContainer", "شماره همراه:")) self.phoneNumber.setInputMask(_translate("TebNoContainer", "99999999999")) self.submitBtn.setText(_translate("TebNoContainer", "ذخیره اطلاعات")) self.visitPlot.setText(_translate("TebNoContainer", "آمار نوبتها")) self.patientPlot.setText(_translate("TebNoContainer", "آمار بیماران")) self.visitChartPlot.setText(_translate("TebNoContainer", "نمودار نوبتها")) self.maintab.setTabText(self.maintab.indexOf(self.newPatient), _translate("TebNoContainer", "بیمار جدید")) self.maintab.setTabText(self.maintab.indexOf(self.viewPatients), _translate("TebNoContainer", "مشاهده بیماران")) self.maintab.setTabText(self.maintab.indexOf(self.viewVisits), _translate("TebNoContainer", "نوبتها")) self.maintab.setTabText(self.maintab.indexOf(self.viewPlots), _translate("TebNoContainer", "آمارها")) def save_patient(self): args = { 'name': self.fname.text(), 'lastname': self.lname.text(), 'birth_date': unidecode(self.birthDate.text()), 'phoneNumber': unidecode(self.phoneNumber.text()), 'nationalCode': unidecode(self.nationalCode.text()) } message = PatientOperations.addPatient(**args) if message == "بیمار با مشخصات مورد نظر ثبت شد.": self.clear_save_patient_inputs() patient_model = PatientModel(self, ['نام','نام خانوادگی', 'کد ملی', 'شماره همراه']) self.patientsList.setModel(patient_model) font = QtGui.QFont() font.setFamily("Vazirmatn") font.setPointSize(10) messagebox = TimerMessageBox(4, message, font) messagebox.exec_() def clear_save_patient_inputs(self): self.fname.setText('') self.lname.setText('') self.birthDate.setText('') self.phoneNumber.setText('') self.nationalCode.setText('') def patientsShow(self): nationalCode = "" indexes = self.patientsList.selectionModel().selectedIndexes() for index in indexes: nationalCode = index.child(index.row(), 2).data() self.patientScreen = PatientWindow(self.visitsList, nationalCode, self.patientsList) self.patientScreen.setScreen() self.patientScreen.closed.connect(self.show) self.hide() self.patientScreen.show() def visit_statistics(self): visits = VisitOperations.show_visits_monthly_2() font = QtGui.QFont() font.setFamily("Vazirmatn") font.setPointSize(10) if (visits is not None): self.visitsChart = VisitsChart(visits) self.visitsChart.closed.connect(self.show) self.hide() self.visitsChart.show() else: messagebox = TimerMessageBox(4, "نوبتی وجود ندارد.", font) messagebox.exec_() def patient_statistics(self): ages = PatientOperations().show_patients_ages() font = QtGui.QFont() font.setFamily("Vazirmatn") font.setPointSize(10) if (ages is not None): self.patientsChart = PatientsChart(ages) self.patientsChart.closed.connect(self.show) self.hide() self.patientsChart.show() else: messagebox = TimerMessageBox(4, "بیماری وجود ندارد.", font) messagebox.exec_() def visits_charts(self): results = VisitOperations.show_visits_chart() font = QtGui.QFont() font.setFamily("Vazirmatn") font.setPointSize(10) if(results is not None): self.visitPriority = VisitPriority(results) self.visitPriority.closed.connect(self.show) self.hide() self.visitPriority.show() else: messagebox = TimerMessageBox(4, "نوبتی در بازه زمانی مورد نظر وجود ندارد.", font) messagebox.exec_()