Newer
Older
from django.core.validators import RegexValidator
from constants import BOOL_CHOICES, SEX_CHOICES, SUBJECT_TYPE_CHOICES, COUNTRY_OTHER_ID
from web.models import Country
from . import Appointment, Language, Location, Visit
class Meta:
app_label = 'web'
def finish_all_visits(self):
visits = Visit.objects.filter(subject=self, is_finished=False)
for visit in visits:
visit.is_finished = True
visit.save()
def finish_all_appointments(self):
appointments = Appointment.objects.filter(visit__subject=self, status=Appointment.APPOINTMENT_STATUS_SCHEDULED)
for appointment in appointments:
appointment.status = Appointment.APPOINTMENT_STATUS_CANCELLED
appointment.save()
def mark_as_resigned(self):
self.resigned = True
self.finish_all_visits()
self.finish_all_appointments()
subject = models.ForeignKey("web.Subject",
verbose_name='Subject',
null=False,
)
postponed = models.BooleanField(choices=BOOL_CHOICES,
verbose_name='Postponed',
default=False
)
datetime_contact_reminder = models.DateTimeField(
)
type = models.CharField(max_length=1,
choices=SUBJECT_TYPE_CHOICES.items(),
verbose_name='Type'
)
default_location = models.ForeignKey(Location,
verbose_name='Default appointment location',
)
flying_team = models.ForeignKey("web.FlyingTeam",
verbose_name='Default flying team location (if applicable)',
null=True, blank=True
)
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
102
103
104
105
106
107
108
109
110
111
first_name = models.CharField(max_length=50,
verbose_name='First name'
)
last_name = models.CharField(max_length=50,
verbose_name='Last name'
)
languages = models.ManyToManyField(Language,
blank=True,
verbose_name='Known languages'
)
default_written_communication_language = models.ForeignKey(Language,
null=True,
blank=True,
related_name="%(class)s_written_comunication",
verbose_name='Default language for document generation'
)
phone_number = models.CharField(max_length=20,
null=True,
blank=True,
verbose_name='Phone number'
)
phone_number_2 = models.CharField(max_length=20,
null=True,
blank=True,
verbose_name='Phone number 2'
)
phone_number_3 = models.CharField(max_length=20,
null=True,
blank=True,
verbose_name='Phone number 3'
)
email = models.EmailField(
null=True,
blank=True,
verbose_name='E-mail'
)
date_born = models.DateField(
null=True,
blank=True,
verbose_name='Date of birth (YYYY-MM-DD)'
)
address = models.CharField(max_length=255,
blank=True,
verbose_name='Address'
)
postal_code = models.CharField(max_length=7,
blank=True,
verbose_name='Postal code'
)
city = models.CharField(max_length=50,
blank=True,
verbose_name='City'
)
country = models.ForeignKey(Country,
null=False,
blank=False,
default=COUNTRY_OTHER_ID,
verbose_name='Country'
)
screening_number = models.CharField(max_length=50,
unique=True,
verbose_name='Screening number', blank=False, null=False
nd_number = models.CharField(max_length=25,
RegexValidator('^(ND[0-9]{4}|)$',
message="ND number should look as follows: NDxxxx")]
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
)
mpower_id = models.CharField(max_length=20,
blank=True,
verbose_name='MPower ID'
)
comments = models.TextField(max_length=2000,
blank=True,
verbose_name='Comments'
)
date_added = models.DateField(verbose_name='Added on',
auto_now=True
)
referral = models.CharField(max_length=128,
null=True,
blank=True,
verbose_name='Referred by'
)
diagnosis = models.CharField(max_length=128,
null=True,
blank=True,
verbose_name='Diagnosis'
)
year_of_diagnosis = models.IntegerField(
null=True,
blank=True,
verbose_name='Year of diagnosis (YYYY)'
)
information_sent = models.BooleanField(
verbose_name='Information sent',
default=False
)
pd_in_family = models.NullBooleanField(
verbose_name='PD in family',
resigned = models.BooleanField(
verbose_name='Resigned',
default=False,
editable=True
)
Piotr Gawron
committed
resign_reason = models.TextField(max_length=2000,
blank=True,
verbose_name='Resign reason'
)
def __str__(self):
return "%s %s" % (self.first_name, self.last_name)
def __unicode__(self):
return "%s %s" % (self.first_name, self.last_name)