Skip to content
Snippets Groups Projects
Code owners
Assign users and groups as approvers for specific file changes. Learn more.
models.py 3.55 KiB
from __future__ import unicode_literals

from django.db import models
from django.utils import timezone
from django.contrib.auth.models import User


class Subject(models.Model):
    sex = models.CharField(max_length=1)
    firstName = models.CharField(max_length=50)
    lastName = models.CharField(max_length=50)
    language = models.CharField(max_length=20)
    phoneNo = models.CharField(max_length=20)
    email = models.EmailField()
    born = models.DateField()
    address = models.CharField(max_length=255)
    postalCode = models.CharField(max_length=6)
    city = models.CharField(max_length=50)
    screeningNo = models.CharField(max_length=50)
    ndno = models.CharField(max_length=6)
    visitNumber = models.IntegerField()
    mpowerId = models.CharField(max_length=20)
    subjectStatus = models.CharField(max_length=3)
    mainPseudonym = models.CharField(max_length=45)
    comments = models.CharField(max_length=2000)


class Visit(models.Model):
    subject = models.ForeignKey(Subject, on_delete=models.CASCADE)
    visitBegin = models.DateTimeField()
    visitEnd = models.DateTimeField()
    assesmentNo = models.IntegerField()
    visitType = models.IntegerField()
    visitFinished = models.BooleanField()


class Item (models.Model):
    isFixed = models.BooleanField
    name = models.CharField(max_length = 255)


class Room (models.Model):
    possEquipment = models.ManyToManyField(Item)
    owner = models.CharField(max_length = 50)
    address = models.CharField(max_length = 255)
    city = models.CharField(max_length = 50)
    roomNo = models.IntegerField()
    floor = models.IntegerField()
    isVehicle = models.BooleanField()


class AppType (models.Model):
    reqEquipment = models.ManyToManyField(Item)
    followUp = models.ForeignKey('self')
    apCode = models.CharField(max_length = 20)
    apDescription = models.CharField(max_length = 2000)
    apDefaultTime = models.IntegerField()
    apRestTime = models.IntegerField()


class Language (models.Model):
    name = models.CharField(max_length = 20)
    image = models.ImageField()


class Worker (models.Model):
    languages = models.ManyToManyField(Language)
    appointments = models.ManyToManyField('Appointment')
    user = models.OneToOneField(User)
    firstName = models.CharField(max_length=50)
    lastName = models.CharField(max_length=50)
    phoneNo = models.CharField(max_length=20)
    email = models.EmailField()
    role = models.CharField(max_length=20)
    specialization = models.CharField(max_length=20)


class FlyingTeam(models.Model):
    doctor = models.ForeignKey(Worker, related_name='FlyingTeamDoctor')
    nurse = models.ForeignKey(Worker, related_name='FlyingTeamNurse')
    psychologist = models.ForeignKey(Worker, related_name='FlyingTeamPsychologist')
    dateTimeCalled = models.DateTimeField()
    dateTimeUntil = models.DateTimeField()


class Avaibility(models.Model):
    person = models.ForeignKey(Worker, on_delete=models.CASCADE)
    dayNo = models.IntegerField()
    availFro = models.TimeField()
    availTil = models.TimeField()
    current = models.BooleanField()

class Holiday(models.Model):
    person = models.ForeignKey(Worker, on_delete=models.CASCADE)
    holidayStart = models.DateTimeField()
    holidayEnd = models.DateTimeField()

class Appointment(models.Model):
    flyingTeam = models.ForeignKey(FlyingTeam)
    appType = models.ForeignKey(AppType)
    room = models.ForeignKey(Room)
    visit = models.ForeignKey(Visit)
    appDateTime = models.DateTimeField()
    appLength = models.IntegerField()
    appFinished = models.BooleanField()




# Create your models here.