Source code for apps.questionnaire.qol.models

# -*- coding: utf-8 -*-
"""
This module contains all the quality of life (QOL)
questionnaire models

:subtitle:`Class definitions:`
"""
from django.db import models
from django.utils.translation import ugettext as _
from apps.questionnaire.models import QuestionnaireBase
from apps.questionnaire.default.models import StartQuestionnaire
from core.models import ManyToManyField

QOL_TEN_SCORE = (
    (1, 1),
    (2, 2),
    (3, 3),
    (4, 4),
    (5, 5),
    (6, 6),
    (7, 7),
    (8, 8),
    (9, 9),
    (10, 10),
)

QOL_YES_NO_CHOICES = (
    ('yes', _('Ja')),
    ('no', _('Nee')),
)

QOL_YES_NO_MAYBE_CHOICES = (
    ('yes', _('Ja')),
    ('no', _('Nee')),
    ('maybe', _('Misschien')),
)

QOL_FILL_IN_CHOICES = (
    ('yes', _('Ik vul het in')),
    ('no', _('Dit vul ik liever niet in')),
)


[docs]class QOLPracticalProblem(models.Model): """ Stores a list of QOL practical problems """ name = models.CharField(max_length=64) def __unicode__(self): return self.name
[docs]class QOLSocialProblem(models.Model): """ Stores a list of QOL social problems """ name = models.CharField(max_length=64) def __unicode__(self): return self.name
[docs]class QOLEmotionalProblem(models.Model): """ Stores a list of QOL emotional problems """ name = models.CharField(max_length=64) def __unicode__(self): return self.name
[docs]class QOLSpiritualProblem(models.Model): """ Stores a list of QOL spiritual problems """ name = models.CharField(max_length=64) def __unicode__(self): return self.name
[docs]class QOLFysicalProblem(models.Model): """ Stores a list of QOL fysicial problems """ name = models.CharField(max_length=64) def __unicode__(self): return self.name
[docs]class QOLChronCUQuestionnaire(QuestionnaireBase): """ QOL for Chron en Colitis Ulcerosa """ # QOL for Chron en Colitis Ulcerosa # complaints = models.IntegerField(choices=QOL_TEN_SCORE, # max_length=32, verbose_name=_('Hoe veel last heeft u van problemen, # klachten of zorgen? Dit gaat zowel om de lichamelijke klachten die # u ondervindt van uw ziekte als emotionele, # sociale of praktische problemen.')) # Problems hasproblems = models.CharField( choices=QOL_FILL_IN_CHOICES, max_length=32, verbose_name=_( 'Hieronder en in de volgende stappen kunt u aangeven of' + ' u last heeft van praktische, sociale, emotionele of' + ' spirituele problemen. Als u dit liever niet invult' + ' , kunt u dat hier aangeven.')) practical_problems = ManyToManyField( QOLPracticalProblem, blank=True, verbose_name=_('Praktische problemen'), related_name='practial_problems') social_problems = ManyToManyField( QOLSocialProblem, blank=True, verbose_name=_('Gezins-/sociale problemen'), related_name='social_problems') emotional_problems = ManyToManyField( QOLEmotionalProblem, blank=True, verbose_name=_('Emotionele problemen'), related_name='emotional_problems') spiritual_problems = ManyToManyField( QOLSpiritualProblem, blank=True, verbose_name=_('Religieuze/spirituele problemen'), related_name='spiritual_problems') other_problems = models.TextField( null=True, blank=True, verbose_name=_('Andere problemen')) # Contact need_contact = models.CharField( null=True, blank=True, choices=QOL_YES_NO_MAYBE_CHOICES, max_length=32, verbose_name=_( 'Zou u over deze problemen met een deskundige willen' + ' praten? (bijvoorbeeld een psycholoog of een' + ' maatschappelijk werker)')) @property def display_template(self): """ Returns: The template path & name to be used for showing the details page for the filled in data for this questionnaire. """ return 'questionnaire/details/QOLChronCUQuestionnaire.html' # display name display_name = _('Kwaliteit van leven') lower_case_name = 'qol_chron_cu_questionnaire' @property def graphic_score_display(self): """ Returns: The score to display in the graphic """ # count of left/right pain scores # is problem_severity score of the StartQuestionnaire... questionnaire_request = self.request_step.questionnairerequest problem_severity = None try: startquestionnaire = StartQuestionnaire.objects.get( request_step__questionnairerequest=questionnaire_request) problem_severity =\ startquestionnaire.get_problem_severity_display() except StartQuestionnaire.DoesNotExist: problem_severity = 0 return problem_severity @property def graphic_score_max(self): return 10 @property def graphic_score_min(self): return 0 @property def graphic_score_name(self): return _('Problemen, klachten of zorgen')
[docs]class QOLQuestionnaire(QOLChronCUQuestionnaire): """ QOL generic version (include fysical problems) """ # fysical Problems fysical_problems = ManyToManyField( QOLFysicalProblem, blank=True, verbose_name=_('Lichamelijke problemen'), related_name='fysical_problems') @property def display_template(self): """ Returns: The template path & name to be used for showing the details page for the filled in data for this questionnaire. """ return 'questionnaire/details/QOLQuestionnaire.html' lower_case_name = 'qol_questionnaire'