Skip to content
Snippets Groups Projects
Commit 7555a491 authored by Piotr Gawron's avatar Piotr Gawron
Browse files

field for storing visit number added

parent 9f34a65a
No related branches found
No related tags found
1 merge request!85subject list contain list of visits
......@@ -86,7 +86,7 @@ def serialize_appointment(appointment):
subject_string = ""
nd_number = screening_number = phone_numbers = appointment_types = None
if appointment.visit is not None:
title = appointment.visit.follow_up_title()
title = "Visit " + str(appointment.visit.visit_number)
subject = appointment.visit.subject
subject_string = subject.last_name + " " + subject.first_name
nd_number = subject.nd_number
......
......@@ -320,7 +320,7 @@ class VisitDetailForm(ModelForm):
class Meta:
model = Visit
exclude = ['is_finished']
exclude = ['is_finished', 'visit_number']
class VisitAddForm(ModelForm):
......@@ -336,7 +336,7 @@ class VisitAddForm(ModelForm):
class Meta:
model = Visit
exclude = ['is_finished']
exclude = ['is_finished', 'visit_number']
def clean(self):
super(VisitAddForm, self).clean()
......
# -*- coding: utf-8 -*-
# Generated by Django 1.10.7 on 2017-10-27 10:22
from __future__ import unicode_literals
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
('web', '0055_auto_20170925_0905'),
]
operations = [
migrations.AddField(
model_name='visit',
name='visit_number',
field=models.IntegerField(default=1, verbose_name=b'Visit number'),
),
]
......@@ -2,6 +2,8 @@
import datetime
from django.db import models
from django.db.models.signals import post_save
from django.dispatch import receiver
from constants import BOOL_CHOICES, SUBJECT_TYPE_CHOICES_CONTROL
......@@ -33,16 +35,18 @@ class Visit(models.Model):
blank=True,
)
# this value is automatically computed by signal handled by update_visit_number method
visit_number = models.IntegerField(
verbose_name='Visit number',
default=1
)
def __unicode__(self):
return "%s %s" % (self.subject.first_name, self.subject.last_name)
def __str__(self):
return "%s %s" % (self.subject.first_name, self.subject.last_name)
def follow_up_title(self):
count = Visit.objects.filter(subject=self.subject, datetime_begin__lt=self.datetime_begin).count()
return "Visit " + str(count + 1)
def mark_as_finished(self):
self.is_finished = True
self.save()
......@@ -59,3 +63,16 @@ class Visit(models.Model):
datetime_begin=visit_started + time_to_next_visit,
datetime_end=visit_started + time_to_next_visit + datetime.timedelta(days=93)
)
@receiver(post_save, sender=Visit)
def update_visit_number(sender, instance, **kwargs):
visit = instance
if visit.subject is not None:
count = Visit.objects.filter(subject=visit.subject).filter(datetime_begin__lte=visit.datetime_begin).count()
if count != visit.visit_number:
visit.visit_number = count
visit.save()
subject_visits = Visit.objects.filter(subject=visit.subject).all()
for subject_visit in subject_visits:
update_visit_number(sender, subject_visit)
......@@ -11,10 +11,10 @@
{% endblock styles %}
{% block ui_active_tab %}'visits'{% endblock ui_active_tab %}
{% block page_header %}Details of the visit ({{ visit.follow_up_title }}) {% endblock page_header %}
{% block page_header %}Details of the visit ({{ visit.visit_number }}) {% endblock page_header %}
{% block page_description %}{% endblock page_description %}
{% block title %}{{ block.super }} - Details of visit ({{ visit.follow_up_title }}) {% endblock %}
{% block title %}{{ block.super }} - Details of visit ({{ visit.visit_number }}) {% endblock %}
{% block breadcrumb %}
{% include "subjects/breadcrumb.html" %}
......
from django.test import TestCase
from functions import create_subject
from functions import create_visit
from web.tests.functions import create_subject, create_visit
from web.models import Visit
......
......@@ -7,7 +7,7 @@ from functions import get_test_location
from web.forms import VisitAddForm
class SubjectAddFormTests(TestCase):
class VisitAddFormTests(TestCase):
def setUp(self):
get_test_location()
self.subject = create_subject()
......
......@@ -5,7 +5,7 @@ from django.test import Client
from django.test import TestCase
from django.urls import reverse
from functions import create_subject, create_visit, create_appointment, create_worker, get_test_location
from web.tests.functions import create_subject, create_visit, create_appointment, create_worker, get_test_location
from web.forms import SubjectAddForm, SubjectEditForm
from web.models import Subject
from web.models.constants import SEX_CHOICES_MALE, SUBJECT_TYPE_CHOICES_CONTROL, SUBJECT_TYPE_CHOICES_PATIENT
......@@ -44,7 +44,7 @@ class SubjectsViewTests(TestCase):
self.assertEqual(response.status_code, 200)
self.assertFalse("Add visit" in response.content)
def test_render_subject_visit_details(self):
def test_render_subject_visit_details_without_visit(self):
subject = create_subject()
response = self.client.get(reverse('web.views.subject_visit_details', kwargs={'id': subject.id}))
......
......@@ -91,7 +91,7 @@ def get_appointments_as_array():
for appointment in appointments:
if appointment.visit is not None:
row = [appointment.visit.subject.nd_number, appointment.visit.subject.last_name,
appointment.visit.subject.first_name, appointment.visit.follow_up_title()]
appointment.visit.subject.first_name, appointment.visit.visit_number]
else:
row = ["---", "---", "---", "---"]
for field in appointments_fields:
......
......@@ -90,7 +90,7 @@ def subject_visit_details(request, id):
appointments = visit.appointment_set.all()
finished = visit.is_finished
visit_id = visit.id
visit_title = visit.follow_up_title()
visit_title = "Visit " + str(visit.visit_number)
visit_form = VisitDetailForm(instance=visit)
visits_data.append((visit_form, appointments, finished, visit_id, visit_title))
if not visit.is_finished:
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment