# Generated by Django 3.0.9 on 2021-01-14 19:57

import uuid

import _socket
import django.contrib.sites.managers
import django.db.models.deletion
import django_audit_fields.fields.hostname_modification_field
import django_audit_fields.fields.userfield
import django_audit_fields.fields.uuid_auto_field
import django_audit_fields.models.audit_model_mixin
import django_revision.revision_field
import edc_model.models.validators.date
import edc_protocol.validators
import edc_utils.date
import edc_visit_tracking.managers
import simple_history.models
from django.conf import settings
from django.db import migrations, models


class Migration(migrations.Migration):

    dependencies = [
        ("sites", "0002_alter_domain_unique"),
        migrations.swappable_dependency(settings.AUTH_USER_MODEL),
        ("mocca_subject", "0004_remove_reasonforvisit_health_services"),
    ]

    operations = [
        migrations.CreateModel(
            name="PatientHealth",
            fields=[
                (
                    "revision",
                    django_revision.revision_field.RevisionField(
                        blank=True,
                        editable=False,
                        help_text="System field. Git repository tag:branch:commit.",
                        max_length=75,
                        null=True,
                        verbose_name="Revision",
                    ),
                ),
                (
                    "created",
                    models.DateTimeField(
                        blank=True,
                        default=django_audit_fields.models.audit_model_mixin.utcnow,
                    ),
                ),
                (
                    "modified",
                    models.DateTimeField(
                        blank=True,
                        default=django_audit_fields.models.audit_model_mixin.utcnow,
                    ),
                ),
                (
                    "user_created",
                    django_audit_fields.fields.userfield.UserField(
                        blank=True,
                        help_text="Updated by admin.save_model",
                        max_length=50,
                        verbose_name="user created",
                    ),
                ),
                (
                    "user_modified",
                    django_audit_fields.fields.userfield.UserField(
                        blank=True,
                        help_text="Updated by admin.save_model",
                        max_length=50,
                        verbose_name="user modified",
                    ),
                ),
                (
                    "hostname_created",
                    models.CharField(
                        blank=True,
                        default=_socket.gethostname,
                        help_text="System field. (modified on create only)",
                        max_length=60,
                    ),
                ),
                (
                    "hostname_modified",
                    django_audit_fields.fields.hostname_modification_field.HostnameModificationField(
                        blank=True,
                        help_text="System field. (modified on every save)",
                        max_length=50,
                    ),
                ),
                ("device_created", models.CharField(blank=True, max_length=10)),
                ("device_modified", models.CharField(blank=True, max_length=10)),
                (
                    "id",
                    django_audit_fields.fields.uuid_auto_field.UUIDAutoField(
                        blank=True,
                        editable=False,
                        help_text="System auto field. UUID primary key.",
                        primary_key=True,
                        serialize=False,
                    ),
                ),
                (
                    "report_datetime",
                    models.DateTimeField(
                        default=edc_utils.date.get_utcnow,
                        help_text="If reporting today, use today's date/time, otherwise use the date/time this information was reported.",
                        validators=[
                            edc_protocol.validators.datetime_not_before_study_start,
                            edc_model.models.validators.date.datetime_not_future,
                        ],
                        verbose_name="Report Date",
                    ),
                ),
                (
                    "consent_model",
                    models.CharField(editable=False, max_length=50, null=True),
                ),
                (
                    "consent_version",
                    models.CharField(editable=False, max_length=10, null=True),
                ),
                (
                    "crf_status",
                    models.CharField(
                        choices=[
                            ("INCOMPLETE", "Incomplete (some data pending)"),
                            ("COMPLETE", "Complete"),
                        ],
                        default="INCOMPLETE",
                        help_text="If some data is still pending, flag this CRF as incomplete",
                        max_length=25,
                        verbose_name="CRF status",
                    ),
                ),
                (
                    "crf_status_comments",
                    models.TextField(
                        blank=True,
                        help_text="for example, why some data is still pending",
                        null=True,
                        verbose_name="Any comments related to status of this CRF",
                    ),
                ),
                (
                    "ph9interst",
                    models.CharField(
                        choices=[
                            ("not_at_all", "Not at all"),
                            ("several_days", "Several days"),
                            ("more_than_half", "More than half the days"),
                            ("nearly_everyday", "Nearly everyday"),
                        ],
                        max_length=15,
                        verbose_name="Little interest or pleasure in doing things",
                    ),
                ),
                (
                    "ph9feel",
                    models.CharField(
                        choices=[
                            ("not_at_all", "Not at all"),
                            ("several_days", "Several days"),
                            ("more_than_half", "More than half the days"),
                            ("nearly_everyday", "Nearly everyday"),
                        ],
                        max_length=15,
                        verbose_name="Feeling down, depressed or hopeless",
                    ),
                ),
                (
                    "ph9troubl",
                    models.CharField(
                        choices=[
                            ("not_at_all", "Not at all"),
                            ("several_days", "Several days"),
                            ("more_than_half", "More than half the days"),
                            ("nearly_everyday", "Nearly everyday"),
                        ],
                        max_length=15,
                        verbose_name="Trouble falling/staying asleep, sleeping too much",
                    ),
                ),
                (
                    "ph9tired",
                    models.CharField(
                        choices=[
                            ("not_at_all", "Not at all"),
                            ("several_days", "Several days"),
                            ("more_than_half", "More than half the days"),
                            ("nearly_everyday", "Nearly everyday"),
                        ],
                        max_length=15,
                        verbose_name="Feeling tired or having little energy",
                    ),
                ),
                (
                    "ph9appetit",
                    models.CharField(
                        choices=[
                            ("not_at_all", "Not at all"),
                            ("several_days", "Several days"),
                            ("more_than_half", "More than half the days"),
                            ("nearly_everyday", "Nearly everyday"),
                        ],
                        max_length=15,
                        verbose_name="Poor appetite or over eating",
                    ),
                ),
                (
                    "ph9badabt",
                    models.CharField(
                        choices=[
                            ("not_at_all", "Not at all"),
                            ("several_days", "Several days"),
                            ("more_than_half", "More than half the days"),
                            ("nearly_everyday", "Nearly everyday"),
                        ],
                        max_length=15,
                        verbose_name="Feeling bad about yourself or that you are a failure or have let yourself or your family down",
                    ),
                ),
                (
                    "ph9concen",
                    models.CharField(
                        choices=[
                            ("not_at_all", "Not at all"),
                            ("several_days", "Several days"),
                            ("more_than_half", "More than half the days"),
                            ("nearly_everyday", "Nearly everyday"),
                        ],
                        max_length=15,
                        verbose_name="Trouble concentrating on things such as reading the newspapers or watching television",
                    ),
                ),
                (
                    "ph9moving",
                    models.CharField(
                        choices=[
                            ("not_at_all", "Not at all"),
                            ("several_days", "Several days"),
                            ("more_than_half", "More than half the days"),
                            ("nearly_everyday", "Nearly everyday"),
                        ],
                        max_length=15,
                        verbose_name="Moving or speaking so slowly  that other people could have noticed or the opposite: being so fidgety or restless that you have been moving around a lot more than usual",
                    ),
                ),
                (
                    "phpthough",
                    models.CharField(
                        choices=[
                            ("not_at_all", "Not at all"),
                            ("several_days", "Several days"),
                            ("more_than_half", "More than half the days"),
                            ("nearly_everyday", "Nearly everyday"),
                        ],
                        max_length=15,
                        verbose_name="Thoughts that you would be better off dead or of hurting yourself in some way",
                    ),
                ),
                (
                    "ph9functio",
                    models.CharField(
                        choices=[
                            ("not_at_all", "Not at all"),
                            ("several_days", "Several days"),
                            ("more_than_half", "More than half the days"),
                            ("nearly_everyday", "Nearly everyday"),
                        ],
                        max_length=15,
                        verbose_name="If you checked off any problems on this questionnaire so far, how difficult have these problems made it for you to do your work, take care of things at home or get along with other people?",
                    ),
                ),
                (
                    "site",
                    models.ForeignKey(
                        editable=False,
                        null=True,
                        on_delete=django.db.models.deletion.PROTECT,
                        related_name="+",
                        to="sites.Site",
                    ),
                ),
                (
                    "subject_visit",
                    models.OneToOneField(
                        on_delete=django.db.models.deletion.PROTECT,
                        to="mocca_subject.SubjectVisit",
                    ),
                ),
            ],
            options={
                "verbose_name": "Patient Health Questionnaire-9 (PHQ9-)",
                "verbose_name_plural": "Patient Health Questionnaires-9 (PHQ9-)",
                "ordering": ("-modified", "-created"),
                "get_latest_by": "modified",
                "abstract": False,
                "default_permissions": (
                    "add",
                    "change",
                    "delete",
                    "view",
                    "export",
                    "import",
                ),
            },
            managers=[
                ("on_site", django.contrib.sites.managers.CurrentSiteManager()),
                ("objects", edc_visit_tracking.managers.CrfModelManager()),
            ],
        ),
        migrations.CreateModel(
            name="HistoricalPatientHealth",
            fields=[
                (
                    "revision",
                    django_revision.revision_field.RevisionField(
                        blank=True,
                        editable=False,
                        help_text="System field. Git repository tag:branch:commit.",
                        max_length=75,
                        null=True,
                        verbose_name="Revision",
                    ),
                ),
                (
                    "created",
                    models.DateTimeField(
                        blank=True,
                        default=django_audit_fields.models.audit_model_mixin.utcnow,
                    ),
                ),
                (
                    "modified",
                    models.DateTimeField(
                        blank=True,
                        default=django_audit_fields.models.audit_model_mixin.utcnow,
                    ),
                ),
                (
                    "user_created",
                    django_audit_fields.fields.userfield.UserField(
                        blank=True,
                        help_text="Updated by admin.save_model",
                        max_length=50,
                        verbose_name="user created",
                    ),
                ),
                (
                    "user_modified",
                    django_audit_fields.fields.userfield.UserField(
                        blank=True,
                        help_text="Updated by admin.save_model",
                        max_length=50,
                        verbose_name="user modified",
                    ),
                ),
                (
                    "hostname_created",
                    models.CharField(
                        blank=True,
                        default=_socket.gethostname,
                        help_text="System field. (modified on create only)",
                        max_length=60,
                    ),
                ),
                (
                    "hostname_modified",
                    django_audit_fields.fields.hostname_modification_field.HostnameModificationField(
                        blank=True,
                        help_text="System field. (modified on every save)",
                        max_length=50,
                    ),
                ),
                ("device_created", models.CharField(blank=True, max_length=10)),
                ("device_modified", models.CharField(blank=True, max_length=10)),
                (
                    "id",
                    django_audit_fields.fields.uuid_auto_field.UUIDAutoField(
                        blank=True,
                        db_index=True,
                        editable=False,
                        help_text="System auto field. UUID primary key.",
                    ),
                ),
                (
                    "report_datetime",
                    models.DateTimeField(
                        default=edc_utils.date.get_utcnow,
                        help_text="If reporting today, use today's date/time, otherwise use the date/time this information was reported.",
                        validators=[
                            edc_protocol.validators.datetime_not_before_study_start,
                            edc_model.models.validators.date.datetime_not_future,
                        ],
                        verbose_name="Report Date",
                    ),
                ),
                (
                    "consent_model",
                    models.CharField(editable=False, max_length=50, null=True),
                ),
                (
                    "consent_version",
                    models.CharField(editable=False, max_length=10, null=True),
                ),
                (
                    "crf_status",
                    models.CharField(
                        choices=[
                            ("INCOMPLETE", "Incomplete (some data pending)"),
                            ("COMPLETE", "Complete"),
                        ],
                        default="INCOMPLETE",
                        help_text="If some data is still pending, flag this CRF as incomplete",
                        max_length=25,
                        verbose_name="CRF status",
                    ),
                ),
                (
                    "crf_status_comments",
                    models.TextField(
                        blank=True,
                        help_text="for example, why some data is still pending",
                        null=True,
                        verbose_name="Any comments related to status of this CRF",
                    ),
                ),
                (
                    "history_id",
                    models.UUIDField(
                        default=uuid.uuid4,
                        editable=False,
                        primary_key=True,
                        serialize=False,
                    ),
                ),
                (
                    "ph9interst",
                    models.CharField(
                        choices=[
                            ("not_at_all", "Not at all"),
                            ("several_days", "Several days"),
                            ("more_than_half", "More than half the days"),
                            ("nearly_everyday", "Nearly everyday"),
                        ],
                        max_length=15,
                        verbose_name="Little interest or pleasure in doing things",
                    ),
                ),
                (
                    "ph9feel",
                    models.CharField(
                        choices=[
                            ("not_at_all", "Not at all"),
                            ("several_days", "Several days"),
                            ("more_than_half", "More than half the days"),
                            ("nearly_everyday", "Nearly everyday"),
                        ],
                        max_length=15,
                        verbose_name="Feeling down, depressed or hopeless",
                    ),
                ),
                (
                    "ph9troubl",
                    models.CharField(
                        choices=[
                            ("not_at_all", "Not at all"),
                            ("several_days", "Several days"),
                            ("more_than_half", "More than half the days"),
                            ("nearly_everyday", "Nearly everyday"),
                        ],
                        max_length=15,
                        verbose_name="Trouble falling/staying asleep, sleeping too much",
                    ),
                ),
                (
                    "ph9tired",
                    models.CharField(
                        choices=[
                            ("not_at_all", "Not at all"),
                            ("several_days", "Several days"),
                            ("more_than_half", "More than half the days"),
                            ("nearly_everyday", "Nearly everyday"),
                        ],
                        max_length=15,
                        verbose_name="Feeling tired or having little energy",
                    ),
                ),
                (
                    "ph9appetit",
                    models.CharField(
                        choices=[
                            ("not_at_all", "Not at all"),
                            ("several_days", "Several days"),
                            ("more_than_half", "More than half the days"),
                            ("nearly_everyday", "Nearly everyday"),
                        ],
                        max_length=15,
                        verbose_name="Poor appetite or over eating",
                    ),
                ),
                (
                    "ph9badabt",
                    models.CharField(
                        choices=[
                            ("not_at_all", "Not at all"),
                            ("several_days", "Several days"),
                            ("more_than_half", "More than half the days"),
                            ("nearly_everyday", "Nearly everyday"),
                        ],
                        max_length=15,
                        verbose_name="Feeling bad about yourself or that you are a failure or have let yourself or your family down",
                    ),
                ),
                (
                    "ph9concen",
                    models.CharField(
                        choices=[
                            ("not_at_all", "Not at all"),
                            ("several_days", "Several days"),
                            ("more_than_half", "More than half the days"),
                            ("nearly_everyday", "Nearly everyday"),
                        ],
                        max_length=15,
                        verbose_name="Trouble concentrating on things such as reading the newspapers or watching television",
                    ),
                ),
                (
                    "ph9moving",
                    models.CharField(
                        choices=[
                            ("not_at_all", "Not at all"),
                            ("several_days", "Several days"),
                            ("more_than_half", "More than half the days"),
                            ("nearly_everyday", "Nearly everyday"),
                        ],
                        max_length=15,
                        verbose_name="Moving or speaking so slowly  that other people could have noticed or the opposite: being so fidgety or restless that you have been moving around a lot more than usual",
                    ),
                ),
                (
                    "phpthough",
                    models.CharField(
                        choices=[
                            ("not_at_all", "Not at all"),
                            ("several_days", "Several days"),
                            ("more_than_half", "More than half the days"),
                            ("nearly_everyday", "Nearly everyday"),
                        ],
                        max_length=15,
                        verbose_name="Thoughts that you would be better off dead or of hurting yourself in some way",
                    ),
                ),
                (
                    "ph9functio",
                    models.CharField(
                        choices=[
                            ("not_at_all", "Not at all"),
                            ("several_days", "Several days"),
                            ("more_than_half", "More than half the days"),
                            ("nearly_everyday", "Nearly everyday"),
                        ],
                        max_length=15,
                        verbose_name="If you checked off any problems on this questionnaire so far, how difficult have these problems made it for you to do your work, take care of things at home or get along with other people?",
                    ),
                ),
                ("history_date", models.DateTimeField()),
                ("history_change_reason", models.CharField(max_length=100, null=True)),
                (
                    "history_type",
                    models.CharField(
                        choices=[("+", "Created"), ("~", "Changed"), ("-", "Deleted")],
                        max_length=1,
                    ),
                ),
                (
                    "history_user",
                    models.ForeignKey(
                        null=True,
                        on_delete=django.db.models.deletion.SET_NULL,
                        related_name="+",
                        to=settings.AUTH_USER_MODEL,
                    ),
                ),
                (
                    "site",
                    models.ForeignKey(
                        blank=True,
                        db_constraint=False,
                        editable=False,
                        null=True,
                        on_delete=django.db.models.deletion.DO_NOTHING,
                        related_name="+",
                        to="sites.Site",
                    ),
                ),
                (
                    "subject_visit",
                    models.ForeignKey(
                        blank=True,
                        db_constraint=False,
                        null=True,
                        on_delete=django.db.models.deletion.DO_NOTHING,
                        related_name="+",
                        to="mocca_subject.SubjectVisit",
                    ),
                ),
            ],
            options={
                "verbose_name": "historical Patient Health Questionnaire-9 (PHQ9-)",
                "ordering": ("-history_date", "-history_id"),
                "get_latest_by": "history_date",
            },
            bases=(simple_history.models.HistoricalChanges, models.Model),
        ),
        migrations.AddIndex(
            model_name="patienthealth",
            index=models.Index(
                fields=["subject_visit", "site", "id"],
                name="mocca_subje_subject_e0c51a_idx",
            ),
        ),
    ]
