class Fp17IncompleteTreatment(models.EpisodeSubrecord): _is_singleton = True _title = 'FP17 Treatment Course' incomplete_treatment_band_1 = fields.BooleanField(default=False) incomplete_treatment_band_2 = fields.BooleanField(default=False) incomplete_treatment_band_3 = fields.BooleanField(default=False) date_of_acceptance = fields.DateField(blank=True, null=True) completion_or_last_visit = fields.DateField(blank=True, null=True)
class Fp17IncompleteTreatment(models.EpisodeSubrecord): _is_singleton = True date_of_acceptance = fields.DateField(blank=True, null=True, verbose_name="Date of acceptance") completion_or_last_visit = fields.DateField( blank=True, null=True, verbose_name="Completion or last visit") class Meta: verbose_name = "Incomplete treatment and treatment dates"
class Leg(models.Model): date = fields.DateField(default=now) name = fields.CharField(max_length=40, unique=True) slug = fields.SlugField(max_length=40, db_index=True, editable=False) start = fields.CharField(max_length=30) end = fields.CharField(max_length=30) description = fields.TextField(max_length=320, blank=True) duration = fields.DecimalField(decimal_places=1, max_digits=2, default=1.0) distanceKM = fields.IntegerField() morning = fields.BooleanField(default=True) map = models.FileField(upload_to=get_map_path, blank=True) class Meta: unique_together = ('date', 'morning') def __str__(self): return "{} - {} {}: {}km from {} to {}".format( self.name, self.date, "am" if self.morning else "pm", self.distanceKM, self.start, self.end) @classmethod def Totals(cls): return cls.objects.aggregate(distance=Sum('distanceKM'), days=Count('date', distinct=True)) prepopulated_fields = {"slug": ("title", )}
class OrthodonticTreatment(models.EpisodeSubrecord): _is_singleton = True patient_failed_to_return = fields.BooleanField( default=False, verbose_name="Treatment abandoned - patient failed to return") patient_requested_stop = fields.BooleanField( default=False, verbose_name="Treatment abandoned - patient requested") treatment_discontinued = fields.BooleanField(default=False, ) treatment_completed = fields.BooleanField(default=False) par_scores_calculated = fields.BooleanField(default=False, verbose_name="PAR ") iotn = fields.IntegerField(blank=True, null=True, verbose_name="IOTN") # Index of Orthodontic Treatment Need # Only accepts 1-5 iotn = fields.IntegerField(blank=True, null=True, verbose_name="IOTN") # Only accepts 1-10 aesthetic_component = fields.IntegerField(blank=True, null=True) iotn_not_applicable = fields.BooleanField( default=False, verbose_name="IOTN not applicable") repair = fields.BooleanField( default=False, verbose_name="Repair to appliance fitted by another dentist") replacement = fields.BooleanField( default=False, verbose_name="Regulation 11 replacement appliance") date_of_completion = fields.DateField( blank=True, null=True, verbose_name="Date of completion or last visit")
class ApiSitemapVersion(object): class Meta: get_latest_by = 'id' version = fields.TextField() depreciation_date = fields.DateField(blank=True, null=True) content = JSONField(default="{}")
class OperationNote(models.EpisodeSubrecord): start_time = fields.TimeField() end_time = fields.TimeField() date = fields.DateField() lead_surgeon = models.ForeignKeyOrFreeText( StaffMember, related_name="%(class)s_lead_surgeon") lead_anaesthetist = models.ForeignKeyOrFreeText( StaffMember, related_name="%(class)s_lead_anaesthetist") surgeon = ManyToManyField(StaffMember, related_name="%(class)s_surgeon") assistant = ManyToManyField(StaffMember, related_name="%(class)s_assistant") anaesthetist = ManyToManyField(StaffMember, related_name="%(class)s_anaesthetist") dvt_heparin = fields.BooleanField(default=False) dvt_ted_stockings = fields.BooleanField(default=False) dvt_pnematic = fields.BooleanField(default=False) dvt_aspirin = fields.BooleanField(default=False) antibiotics = fields.CharField(max_length=40) indication = fields.CharField(max_length=20) position = fields.CharField(max_length=20) incision = fields.CharField(max_length=20) findings = fields.TextField() procedure = fields.TextField() anaesthetic = models.ForeignKeyOrFreeText(AnaestheticType) cancer = models.ForeignKeyOrFreeText(CancerType) asa = models.ForeignKeyOrFreeText(AsaType) urgency = models.ForeignKeyOrFreeText(Urgency)
class Blog(models.Model): title = fields.CharField(max_length=100) date = fields.DateField() content = fields.TextField(default='no content for this entry') # to show in the admin console the object from database with the title instead of object 1, object 2, ... def __str__(self): return self.title
class Mood(models.Model): date = fields.DateField() title = fields.CharField(max_length=50) image = models.ImageField() description = fields.TextField() def __str__(self): return str(self.date)
class Fp17Declaration(models.EpisodeSubrecord): _is_singleton = True necessary_care_provided = fields.BooleanField(default=False) necessary_care_carried_out = fields.BooleanField(default=False) signature = fields.CharField(max_length=255, blank=True, null=True) signature_date = fields.DateField(blank=True, null=True)
class OrthodonticAssessment(models.EpisodeSubrecord): _is_singleton = True assessment_and_review = fields.BooleanField(default=False) assess_and_refuse_treatment = fields.BooleanField( default=False, verbose_name="Assess & refuse treatment") assess_and_appliance_fitted = fields.BooleanField( default=False, verbose_name="Assess & appliance fitted") # Index of Orthodontic Treatment Need # Only accepts 1-5 iotn = fields.IntegerField(blank=True, null=True, verbose_name="IOTN") # Only accepts 1-10 aesthetic_component = fields.IntegerField(blank=True, null=True) iotn_not_applicable = fields.BooleanField( default=False, verbose_name="IOTN not applicable") date_of_referral = fields.DateField(blank=True, null=True) date_of_assessment = fields.DateField(blank=True, null=True) date_of_appliance_fitted = fields.DateField(blank=True, null=True)
class MealPlan(models.Model): LUNCH_CHOICES = tuple( # e.g. (1, "Lunch") (m.value, m.name.title()) for m in Meal ) date = fields.DateField(db_index=True) recipe_name = fields.CharField(max_length=255) meal_id = fields.IntegerField(choices=LUNCH_CHOICES)
def _resolve_output_field(self): if isinstance(self.value, str): return fields.CharField() if isinstance(self.value, bool): return fields.BooleanField() if isinstance(self.value, int): return fields.IntegerField() if isinstance(self.value, float): return fields.FloatField() if isinstance(self.value, datetime.datetime): return fields.DateTimeField() if isinstance(self.value, datetime.date): return fields.DateField() if isinstance(self.value, datetime.time): return fields.TimeField() if isinstance(self.value, datetime.timedelta): return fields.DurationField() if isinstance(self.value, Decimal): return fields.DecimalField() if isinstance(self.value, bytes): return fields.BinaryField() if isinstance(self.value, UUID): return fields.UUIDField()
def __init__(self, lookup, lookup_type): super(Date, self).__init__(output_field=fields.DateField()) self.lookup = lookup self.col = None self.lookup_type = lookup_type
def __init__(self, col, lookup_type): super(Date, self).__init__(output_field=fields.DateField()) self.col = col self.lookup_type = lookup_type
def get(self, request, **kwargs): try: start_date = request.GET.get('startDate', '120d') start_date = parse_relative_date(start_date) except ValueError as e: raise ParseError(detail=f'Invalid start date: {start_date}') try: end_date = request.GET.get('endDate', '0d') end_date = parse_relative_date(end_date) except ValueError: raise ParseError(detail=f'Invalid end date: {end_date}') try: stats_period = max(int(request.GET.get('statsPeriod', '10')), 1) except ValueError: raise ParseError(detail=f'Invalid stats period: {stats_period}') try: slug = kwargs['account_slug'] account = Account.objects.get(holders__in=[request.user], slug=slug) except Account.DoesNotExist: raise Http404 activities = AccountActivity.objects \ .filter(account=account) \ .filter(date__gte=start_date) \ .filter(date__lte=end_date) first_date = activities.aggregate(Min('date'))['date__min'] period = ExpressionWrapper((F('date') - first_date) / stats_period, output_field=fields.DurationField()) period_date = ExpressionWrapper(first_date + stats_period * F('period'), output_field=fields.DateField()) activities = activities.annotate(period=period) \ .order_by('period') \ .values('period') \ .annotate( period_date=period_date, period_balance=ArrayAgg('balance'), period_deposit=Sum('deposit'), period_withdrawl=Sum('withdrawl'), ) # if there is a period of inactivity on the account, the series # will be missing data during those periods, so let's fill them activities = list(activities) periods = {activity['period'] for activity in activities} all_periods = set(range(max(periods) + 1)) for period in sorted(all_periods - periods): # since we align the beginning of the activities to the # first activity within the defined date range, the 0th # period should always be defined assert period != 0 previous = activities[period - 1] activities.insert( period, { 'period': period, 'period_date': previous['period_date'] + timedelta(days=stats_period), 'period_balance': [previous['period_balance'][-1]], 'period_deposit': 0., 'period_withdrawl': 0., }) # drop the extraneous balance data, we just want the final balance # at the end of each period for activity in activities: activity['period_balance'] = activity['period_balance'][-1] activity['period_withdrawl'] = -activity['period_withdrawl'] return Response(activities, status=status.HTTP_200_OK)
class TODOItem(models.EpisodeSubrecord): job = fields.CharField(max_length=200) due_date = fields.DateField(blank=True, null=True) details = fields.TextField(blank=True, null=True) completed = fields.BooleanField(default=False)
class FirstLastTest(models.Model): ts = fields.DateField() val = fields.IntegerField()
class DischargeDue(models.EpisodeSubrecord): _icon = 'fa fa-calendar' date = fields.DateField(blank=True, null=True)