class Course(db.Model): __tablename__ = 'courses' id = db.Column(db.Integer, primary_key=True) name = db.Column(db.String()) details = db.Column(db.String()) prof_id = db.Column(db.Integer, db.ForeignKey('professors.id'), nullable=False) course_code = db.Column(db.String(), unique=True) branches = db.relationship('Branch', secondary=branch_helper, backref=db.backref('courses')) can_apply = db.Column(db.Boolean) courseNotes = db.relationship('courseNote', backref='Course', order_by="desc(courseNote.time)") assignments = db.relationship('Assignment', backref='Course', order_by="desc(Assignment.time)") requests = db.relationship('Request', backref='course') quizzes = db.relationship('Quiz', backref='course') def __init__( self, name, course_code, details, prof_id, can_apply, ): self.name = name self.course_code = course_code self.details = details self.prof_id = prof_id self.can_apply = can_apply
class MedicalRecord(db.Model): __tablename__ = 'medical_records' id = db.Column(db.Integer, primary_key=True) patient_id = db.Column(db.Integer, db.ForeignKey('patients.id'), nullable=False) doctor_id = db.Column(db.Integer, db.ForeignKey('users.id'), nullable=False) findings_id = db.Column(db.Integer, db.ForeignKey('findings.id'), nullable=False) lab_exam_id = db.Column(db.Integer, db.ForeignKey('lab_exams.id'), nullable=False) date = db.Column(db.DateTime, nullable=False, default=datetime.now) height = db.Column(db.String(7), nullable=False) weight = db.Column(db.String(7), nullable=False) temperature = db.Column(db.String(7), nullable=False) paid = db.Column(db.Boolean, nullable=False, default=False) # patient = db.relationship('MedicalRecord', # back_populates='medical_records') findings = db.relationship('Findings', backref='medical_records', cascade='all, delete') symptoms = db.relationship('Symptom', backref='medical_records', cascade='all, delete') lab_exam = db.relationship('LabExam', backref='medical_records', cascade='all, delete') doctor = db.relationship('User', backref='medical_records')
class Branch(db.Model): __tablename__='branches' id= db.Column(db.Integer, primary_key=True) name = db.Column(db.String(100), nullable=False) students= db.relationship('User', backref='branch', lazy=True) professors= db.relationship('Professor', backref='branch', lazy=True) def __init__(self,name): self.name = name def __repr__(self)-> str: return self.name
class Question(db.Model): __tablename__ = 'questions' id = db.Column(db.Integer, primary_key=True) quiz_id = db.Column(db.Integer, db.ForeignKey('quizzes.id')) question = db.Column(db.String(), nullable=False) options = db.relationship('Option', backref='question') ans = db.Column(db.String(), nullable=False) marks = db.Column(db.Integer, nullable=False, default=1) is_multicorrect = db.Column(db.Boolean, default=False) responses = db.relationship('quizQuestionResponse', backref='question') is_partial = db.Column(db.Boolean, default=False)
class Patient(db.Model): __tablename__ = 'patients' id = db.Column(db.Integer, primary_key=True) first_name = db.Column(db.String(50), nullable=False) last_name = db.Column(db.String(50), nullable=False) gender = db.Column(db.String(50), nullable=False) date_of_birth = db.Column(db.Date, nullable=False) barangay = db.Column(db.String(255), nullable=False) address = db.Column(db.String(255), nullable=False) contact_no = db.Column(db.String(20)) user = db.relationship('User', backref='user', cascade='all, delete') medical_records = db.relationship('MedicalRecord', backref='patient', cascade='all, delete')
class Assignment(db.Model): __tablename__='assignments' id = db.Column(db.Integer, primary_key=True) title = db.Column(db.String(100)) details = db.Column(db.String(100)) time=db.Column(db.DateTime,nullable=False,default=datetime.now) attachments=db.relationship('Attachment',backref='assignment') submissions = db.relationship('Submission', backref='assignment') deadline=db.Column(db.DateTime) course_id = db.Column(db.Integer, db.ForeignKey('courses.id')) def __init__(self,title,details,deadline,course_id): self.title=title self.details=details self.deadline=deadline self.course_id=course_id
class Quiz(db.Model): __tablename__ = 'quizzes' id = db.Column(db.Integer, primary_key=True) course_id = db.Column(db.Integer, db.ForeignKey('courses.id')) name = db.Column(db.String(), nullable=False) start_time = db.Column(db.DateTime, nullable=False, default=datetime.now) end_time = db.Column(db.DateTime, nullable=False, default=datetime.now) questions = db.relationship('Question', backref='quiz') responses = db.relationship('QuizResponse', backref='quiz') @property def marks(self): ans = 0 for q in self.questions: ans += q.marks return ans
class DiscussionThread(db.Model): __tablename__ = 'discussionthreads' id = db.Column(db.Integer, primary_key=True) course_id = db.Column(db.Integer, db.ForeignKey('courses.id')) title = db.Column(db.String()) details = db.Column(db.String()) posts = db.relationship('DiscussionPost', backref='quiz_response')
class LabExam(db.Model): __tablename__ = 'lab_exams' id = db.Column(db.Integer, primary_key=True) cbc_exam_id = db.Column(db.Integer, db.ForeignKey('cbc_exams.id'), nullable=False) stool_exam = db.Column(db.String(10)) cbc_exam = db.relationship('CBCExam', backref='lab_exams', cascade='delete')
class DiscussionPost(db.Model): __tablename__ = 'discussionposts' id = db.Column(db.Integer, primary_key=True) discussion_id = db.Column(db.Integer, db.ForeignKey('discussionthreads.id')) user_id = db.Column(db.Integer, db.ForeignKey('users.id')) title = db.Column(db.String()) details = db.Column(db.String()) timeofpost = db.Column(db.DateTime, nullable=False, default=datetime.now) attachments = db.relationship('Attachment', backref='post')
class User(db.Model, UserMixin): __tablename__ = 'users' name = db.Column(db.String(100), nullable=False) id = db.Column(db.Integer, primary_key=True) name = db.Column(db.String(100)) email = db.Column(db.String(64), unique=True, index=True) password_hash = db.Column(db.String(128)) year = db.Column(db.Integer()) branch_id = db.Column(db.Integer, db.ForeignKey('branches.id'), nullable=False) courses = db.relationship('Course', secondary=course_helper, backref=db.backref('students')) submissions = db.relationship('Submission', backref='user') requests = db.relationship('Request', backref='user') quiz_responses = db.relationship('QuizResponse', backref='user') def __init__(self, name, email, password, year, branch_id): self.name = name self.email = email self.password_hash = generate_password_hash(password) self.year = year self.branch_id = branch_id def to_dict(self): return { 'id': self.id, 'Name': self.name, 'E-Mail': self.email, 'Year': self.year, 'Branch': self.branch.name } def check_password(self, password): return check_password_hash(self.password_hash, password) @property def requested_courses(self): req_courses = [] for request in self.requests: req_courses.append(request.course) return req_courses
class Appointment(db.Model): __tablename__ = 'appointents' id = db.Column(db.Integer, primary_key=True) patient_id = db.Column(db.Integer, db.ForeignKey('patients.id'), nullable=False) doctor_id = db.Column(db.Integer, db.ForeignKey('users.id'), nullable=False) date = db.Column(db.DateTime, nullable=False) created_on = db.Column(db.DateTime, nullable=False, default=datetime.now) status = db.Column(db.String(10), default='pending') doctor = db.relationship('User', backref='appointments', lazy=True, cascade='delete') patient = db.relationship('Patient', backref='appointments', lazy=True, cascade='delete')
class Submission(db.Model): id = db.Column(db.Integer, primary_key=True) title = db.Column(db.String(100)) details = db.Column(db.String(100)) time = db.Column(db.DateTime, nullable=False, default=datetime.now) attachments = db.relationship('Attachment', backref='submissions') assignment_id = db.Column(db.Integer, db.ForeignKey('assignments.id')) user_id = db.Column(db.Integer, db.ForeignKey('users.id')) def __init__(self, title, details, assignment_id,user_id): self.title = title self.details = details self.assignment_id = assignment_id self.user_id=user_id
class courseNote(db.Model): __tablename__ = 'coursenotes' id = db.Column(db.Integer, primary_key=True) title = db.Column(db.String()) details = db.Column(db.String()) time = db.Column(db.DateTime, nullable=False, default=datetime.now) attachments = db.relationship('Attachment', backref='coursenote') course_id = db.Column(db.Integer, db.ForeignKey('courses.id')) def __init__(self, title, details, course_id): self.title = title self.details = details self.course_id = course_id
class QuizResponse(db.Model): __tablename__ = 'quizresponses' id = db.Column(db.Integer, primary_key=True) user_id = db.Column(db.Integer, db.ForeignKey('users.id')) quiz_id = db.Column(db.Integer, db.ForeignKey('quizzes.id')) quizQuestionResponses = db.relationship('quizQuestionResponse', backref='quiz_response') @property def marks(self): ans = 0 for qqr in self.quizQuestionResponses: ans += qqr.marks return ans
class Course(db.Model): id = db.Column(db.Integer, primary_key=True) name = db.Column(db.String(50), nullable=False) crd_hrs = db.Column(db.Integer) no_of_student_taken = db.Column(db.Integer, default=0) status = db.Column(db.String(10)) assign_to = db.Column(db.Integer, db.ForeignKey('teacher.id')) enrollments = db.relationship('Student', secondary=Enrollments, backref=db.backref('courses')) def __repr__(self): return f'Course : {self.id} , {self.name}'
class Professor(db.Model, UserMixin): __tablename__ = 'professors' id = db.Column(db.Integer, primary_key=True) name = db.Column(db.String()) email = db.Column(db.String(64), unique=True, index=True) branch_id = db.Column(db.Integer, db.ForeignKey('branches.id')) courses = db.relationship('Course', backref='professor', lazy=True) password_hash = db.Column(db.String(128)) def __init__(self, name, email, password, branch_id): self.email = email self.name = name self.password_hash = generate_password_hash(password) self.branch_id = branch_id
class Request(db.Model): id = db.Column(db.Integer, primary_key=True) user_id = db.Column(db.Integer, db.ForeignKey('users.id')) course_id = db.Column(db.Integer, db.ForeignKey('courses.id')) title = db.Column(db.String(100)) details = db.Column(db.String(100)) time = db.Column(db.DateTime, nullable=False, default=datetime.now) attachments = db.relationship('Attachment', backref='request') status = db.Column(db.Integer,default=0)#0 for pending 1 for accepted 2 for declined def __init__(self, user_id, course_id,title,details): self.user_id = user_id self.course_id = course_id self.title = title self.details = details pass