diff --git a/smash/web/migrations/0069_remove_studysubject_sex.py b/smash/web/migrations/0069_remove_studysubject_sex.py new file mode 100644 index 0000000000000000000000000000000000000000..1f3c708b0a2e3d52db8ff7cf14d7bcad70fe1e5c --- /dev/null +++ b/smash/web/migrations/0069_remove_studysubject_sex.py @@ -0,0 +1,19 @@ +# -*- coding: utf-8 -*- +# Generated by Django 1.10.7 on 2017-11-28 11:14 +from __future__ import unicode_literals + +from django.db import migrations + + +class Migration(migrations.Migration): + + dependencies = [ + ('web', '0068_remove_studysubject_dead'), + ] + + operations = [ + migrations.RemoveField( + model_name='studysubject', + name='sex', + ), + ] diff --git a/smash/web/models/mail_template.py b/smash/web/models/mail_template.py index c899e4935a548d8008d160615b740318c035d1dc..cdbc8f8664b1dc49ed5beb816c41c39b4854de69 100644 --- a/smash/web/models/mail_template.py +++ b/smash/web/models/mail_template.py @@ -124,16 +124,16 @@ class MailTemplate(models.Model): def apply(self, instance, user, stream): appointment = None visit = None - subject = None + study_subject = None if isinstance(instance, Appointment): appointment = instance visit = instance.visit - subject = visit.subject + study_subject = visit.subject elif isinstance(instance, Visit): visit = instance - subject = visit.subject + study_subject = visit.subject elif isinstance(instance, StudySubject): - subject = instance + study_subject = instance # set locale to get correct date format locale_name = self.language.locale if platform.system() == 'Windows': @@ -143,7 +143,7 @@ class MailTemplate(models.Model): self._add_generic_replacements(replacements, Worker.get_by_user(user)) self._add_appointment_replacements(replacements, appointment) self._add_visit_replacements(replacements, visit) - self._add_subject_replacements(replacements, subject) + self._add_subject_replacements(replacements, study_subject) process_file(self.template_file.path, stream, replacements) return stream @@ -194,33 +194,33 @@ class MailTemplate(models.Model): "##V_DATE_ENDS_SHORT##": visit.datetime_end.strftime(DATE_FORMAT_SHORT), }) - def _add_subject_replacements(self, replacements, subject): - if subject is not None: - if subject.date_born is not None: - date_born = subject.date_born.strftime(DATE_FORMAT_SHORT) + def _add_subject_replacements(self, replacements, study_subject): + if study_subject is not None: + if study_subject.date_born is not None: + date_born = study_subject.date_born.strftime(DATE_FORMAT_SHORT) else: date_born = None replacements.update({ - "##S_FULL_NAME##": unicode(subject), - "##S_FIRST_NAME##": subject.first_name, - "##S_LAST_NAME##": subject.last_name, - "##S_ADDRESS##": subject.address, - "##S_CITY##": subject.city, - "##S_COUNTRY##": unicode(subject.country), - "##S_DIAGNOSIS_YEAR##": subject.year_of_diagnosis, - "##S_DATE_ADDED##": subject.date_added.strftime(DATE_FORMAT_SHORT), + "##S_FULL_NAME##": unicode(study_subject), + "##S_FIRST_NAME##": study_subject.first_name, + "##S_LAST_NAME##": study_subject.last_name, + "##S_ADDRESS##": study_subject.address, + "##S_CITY##": study_subject.city, + "##S_COUNTRY##": unicode(study_subject.country), + "##S_DIAGNOSIS_YEAR##": study_subject.year_of_diagnosis, + "##S_DATE_ADDED##": study_subject.date_added.strftime(DATE_FORMAT_SHORT), "##S_DATE_BORN##": date_born, - "##S_DIAGNOSIS##": subject.diagnosis, - "##S_EMAIL##": subject.email, - "##S_SEX##": subject.get_sex_display(), - "##S_MPOWER_ID##": subject.mpower_id, - "##S_ND_NUMBER##": subject.nd_number, - "##S_PHONE_NUMBER##": subject.phone_number, - "##S_PHONE_NUMBER_2##": subject.phone_number_2, - "##S_PHONE_NUMBER_3##": subject.phone_number_3, - "##S_POST_CODE##": subject.postal_code, - "##S_SCREENING_NUMBER##": subject.screening_number, - "##S_TYPE##": subject.get_type_display(), - '##S_MAIL_LANGUAGE##': str(subject.default_written_communication_language), - '##S_KNOWN_LANGUAGES##': ", ".join([l.name for l in subject.languages.all()]) + "##S_DIAGNOSIS##": study_subject.diagnosis, + "##S_EMAIL##": study_subject.email, + "##S_SEX##": study_subject.subject.get_sex_display(), + "##S_MPOWER_ID##": study_subject.mpower_id, + "##S_ND_NUMBER##": study_subject.nd_number, + "##S_PHONE_NUMBER##": study_subject.phone_number, + "##S_PHONE_NUMBER_2##": study_subject.phone_number_2, + "##S_PHONE_NUMBER_3##": study_subject.phone_number_3, + "##S_POST_CODE##": study_subject.postal_code, + "##S_SCREENING_NUMBER##": study_subject.screening_number, + "##S_TYPE##": study_subject.get_type_display(), + '##S_MAIL_LANGUAGE##': str(study_subject.default_written_communication_language), + '##S_KNOWN_LANGUAGES##': ", ".join([l.name for l in study_subject.languages.all()]) }) diff --git a/smash/web/models/study_subject.py b/smash/web/models/study_subject.py index 46d336063d21870a5aa3779be9319e36102b626e..77e31e0ad20793dc2f1f1d67236b05c2f73a5831 100644 --- a/smash/web/models/study_subject.py +++ b/smash/web/models/study_subject.py @@ -33,10 +33,6 @@ class StudySubject(models.Model): null=False, ) - sex = models.CharField(max_length=1, - choices=SEX_CHOICES, - verbose_name='Sex' - ) postponed = models.BooleanField(choices=BOOL_CHOICES, verbose_name='Postponed', default=False diff --git a/smash/web/redcap_connector.py b/smash/web/redcap_connector.py index 2f9b2db64a94da2d556aeacdec8010f81a988b98..919952136b6d71f7eb3f0de999bf3e6afa9871a4 100644 --- a/smash/web/redcap_connector.py +++ b/smash/web/redcap_connector.py @@ -173,14 +173,14 @@ class RedcapConnector(object): return result @staticmethod - def create_inconsistency_subject(red_cap_subject, subject, url): + def create_inconsistency_subject(red_cap_subject, study_subject, url): fields = [] - if subject.sex != red_cap_subject.sex: - field = InconsistentField.create("sex", subject.sex, red_cap_subject.sex) + if study_subject.subject.sex != red_cap_subject.sex: + field = InconsistentField.create("sex", study_subject.subject.sex, red_cap_subject.sex) fields.append(field) subject_date_born = "" - if subject.date_born is not None: - subject_date_born = subject.date_born.strftime('%Y-%m-%d') + if study_subject.date_born is not None: + subject_date_born = study_subject.date_born.strftime('%Y-%m-%d') redcap_subject_date_born = red_cap_subject.date_born if redcap_subject_date_born is None: redcap_subject_date_born = "" @@ -189,23 +189,23 @@ class RedcapConnector(object): if subject_date_born != redcap_subject_date_born: field = InconsistentField.create("date of birth", subject_date_born, redcap_subject_date_born) fields.append(field) - if subject.subject.dead != red_cap_subject.dead: - field = InconsistentField.create("dead", str(subject.subject.dead), str(red_cap_subject.dead)) + if study_subject.subject.dead != red_cap_subject.dead: + field = InconsistentField.create("dead", str(study_subject.subject.dead), str(red_cap_subject.dead)) fields.append(field) - if different_string(subject.mpower_id, red_cap_subject.mpower_id): - field = InconsistentField.create("mpower id", subject.mpower_id, red_cap_subject.mpower_id) + if different_string(study_subject.mpower_id, red_cap_subject.mpower_id): + field = InconsistentField.create("mpower id", study_subject.mpower_id, red_cap_subject.mpower_id) fields.append(field) missing_language = False if len(red_cap_subject.languages) < 4: - for language in subject.languages.all(): + for language in study_subject.languages.all(): if language not in red_cap_subject.languages: missing_language = True for language in red_cap_subject.languages: - if language not in subject.languages.all(): + if language not in study_subject.languages.all(): missing_language = True if missing_language: subject_languages = "" - for language in subject.languages.all(): + for language in study_subject.languages.all(): subject_languages += language.name + ", " red_cap_subject_languages = "" for language in red_cap_subject.languages: @@ -214,7 +214,7 @@ class RedcapConnector(object): fields.append(field) result = None if len(fields) > 0: - result = InconsistentSubject.create(smash_subject=subject, url=url, fields=fields) + result = InconsistentSubject.create(smash_subject=study_subject, url=url, fields=fields) return result def create_redcap_link(self, pid, redcap_version, subject): diff --git a/smash/web/tests/forms/test_StudySubjectAddForm.py b/smash/web/tests/forms/test_StudySubjectAddForm.py index 644863fe2af1e677ee8071a6e34268bce0f2650d..770033cba27cebb4fb22469ebcc81d5b425b4102 100644 --- a/smash/web/tests/forms/test_StudySubjectAddForm.py +++ b/smash/web/tests/forms/test_StudySubjectAddForm.py @@ -16,7 +16,6 @@ class StudySubjectAddFormTests(LoggedInWithWorkerTestCase): self.subject = create_subject() self.sample_data = {'first_name': 'name', 'last_name': 'name', - 'sex': SEX_CHOICES_MALE, 'type': SUBJECT_TYPE_CHOICES_CONTROL, 'default_location': location.id, 'screening_number': "123", diff --git a/smash/web/tests/forms/test_StudySubjectEditForm.py b/smash/web/tests/forms/test_StudySubjectEditForm.py index f7be33a08a4ed89afbbc85022a890fcb72d64917..6749aba77042b6abc38908a040c71410b402a73a 100644 --- a/smash/web/tests/forms/test_StudySubjectEditForm.py +++ b/smash/web/tests/forms/test_StudySubjectEditForm.py @@ -6,15 +6,14 @@ from web.tests import LoggedInWithWorkerTestCase from web.tests.functions import create_subject -class SubjectEditFormTests(LoggedInWithWorkerTestCase): +class StudySubjectEditFormTests(LoggedInWithWorkerTestCase): def setUp(self): - super(SubjectEditFormTests, self).setUp() + super(StudySubjectEditFormTests, self).setUp() self.subject = create_subject() location = self.worker.locations.all()[0] self.sample_data = {'first_name': 'name', 'last_name': 'name', - 'sex': SEX_CHOICES_MALE, 'type': SUBJECT_TYPE_CHOICES_CONTROL, 'default_location': location.id, 'country': COUNTRY_AFGHANISTAN_ID, diff --git a/smash/web/tests/functions.py b/smash/web/tests/functions.py index 66d1c1cc9464bcea6966b006d2f21819b7d2eabd..8c835428174e6527a36cf971ca0859effee53062 100644 --- a/smash/web/tests/functions.py +++ b/smash/web/tests/functions.py @@ -70,12 +70,10 @@ def create_study_subject(subject_id=1, subject=None): first_name="Piotr", last_name="Gawron", default_location=get_test_location(), - sex=SEX_CHOICES_MALE, type=SUBJECT_TYPE_CHOICES_CONTROL, screening_number="piotr's number" + str(subject_id), country_id=COUNTRY_AFGHANISTAN_ID, subject=subject - ) diff --git a/smash/web/tests/test_RedcapConnector.py b/smash/web/tests/test_RedcapConnector.py index e6faaf0dc6e92d1022d13c92b19ad4bfc627be8a..61ee984e329259e055ac96e838e26048b9ad3968 100644 --- a/smash/web/tests/test_RedcapConnector.py +++ b/smash/web/tests/test_RedcapConnector.py @@ -137,15 +137,15 @@ class TestRedcapConnector(TestCase): self.assertIsNone(result) @staticmethod - def create_redcap_subject_from_smash_subject(subject): + def create_redcap_subject_from_smash_subject(study_subject): redcap_subject = RedcapSubject() - for language in subject.languages.all(): + for language in study_subject.languages.all(): redcap_subject.add_language(language) - redcap_subject.mpower_id = subject.mpower_id - redcap_subject.dead = subject.subject.dead - redcap_subject.date_born = subject.date_born - redcap_subject.nd_number = subject.nd_number - redcap_subject.sex = subject.sex + redcap_subject.mpower_id = study_subject.mpower_id + redcap_subject.dead = study_subject.subject.dead + redcap_subject.date_born = study_subject.date_born + redcap_subject.nd_number = study_subject.nd_number + redcap_subject.sex = study_subject.subject.sex return redcap_subject def test_get_language(self): diff --git a/smash/web/tests/view/test_subjects.py b/smash/web/tests/view/test_subjects.py index 64bb47c568b411dd214411f0304f45a257c1ab28..4617ccab3367d799f1aaefad73d5bf39f60d8072 100644 --- a/smash/web/tests/view/test_subjects.py +++ b/smash/web/tests/view/test_subjects.py @@ -119,7 +119,6 @@ class SubjectsViewTests(LoggedInWithWorkerTestCase): form_data["study_subject-country"] = COUNTRY_AFGHANISTAN_ID form_data["study_subject-first_name"] = "John" form_data["study_subject-last_name"] = "Doe" - form_data["study_subject-sex"] = SEX_CHOICES_MALE def test_subjects_add_patient(self): form_data = self.create_add_form_data_for_study_subject()