Project

General

Profile

« Previous | Next » 

Revision d489bf41

Added by Mikaël Ates over 12 years ago

dossiers: Add healthcare models.

View differences:

calebasse/dossiers/models.py
3 3
import logging
4 4

  
5 5
from datetime import datetime
6
from datetime import timedelta
6 7

  
7 8
from django.db import models
8 9
from django.contrib.auth.models import User
......
11 12
from calebasse.ressources.models import ServiceLinkedAbstractModel
12 13
from calebasse.dossiers.states import STATES, STATE_ACCUEIL
13 14

  
15
DEFAULT_ACT_NUMBER_DIAGNOSTIC = 6
16
DEFAULT_ACT_NUMBER_TREATMENT = 30
17
DEFAULT_ACT_NUMBER_PROLONGATION = 10
18
VALIDITY_PERIOD_TREATMENT_HEALTHCARE = 365
19

  
14 20
logger = logging.getLogger('calebasse.dossiers')
15 21

  
16 22

  
23
class HealthCare(models.Model):
24

  
25
    class Meta:
26
        app_label = 'dossiers'
27

  
28
    patient = models.ForeignKey('dossiers.PatientRecord',
29
        verbose_name=u'Dossier patient', editable=False)
30
    created = models.DateTimeField(u'Création', auto_now_add=True)
31
    author = \
32
        models.ForeignKey(User,
33
        verbose_name=u'Auteur', editable=False)
34
    comment = models.TextField(max_length=3000, blank=True, null=True)
35
    start_date = models.DateTimeField()
36

  
37

  
38
class CmppHealthCareDiagnostic(HealthCare):
39

  
40
    class Meta:
41
        app_label = 'dossiers'
42

  
43
    _act_number = models.IntegerField(default=DEFAULT_ACT_NUMBER_DIAGNOSTIC)
44

  
45
    def get_act_number(self):
46
        return self._act_number
47

  
48
    def save(self, **kwargs):
49
        self.start_date = \
50
            datetime(self.start_date.year, self.start_date.month,
51
                self.start_date.day)
52
        super(CmppHealthCareDiagnostic, self).save(**kwargs)
53

  
54

  
55
class CmppHealthCareTreatment(HealthCare):
56

  
57
    class Meta:
58
        app_label = 'dossiers'
59

  
60
    _act_number = models.IntegerField(default=DEFAULT_ACT_NUMBER_TREATMENT)
61
    end_date = models.DateTimeField()
62
    prolongation = models.IntegerField(default=0,
63
            verbose_name=u'Prolongation')
64

  
65
    def get_act_number(self):
66
        if self.is_extended():
67
            return self._act_number + self.prolongation
68
        return self._act_number
69

  
70
    def is_extended(self):
71
        if self.prolongation > 0:
72
            return True
73
        return False
74

  
75
    def add_prolongation(self, value=None):
76
        if not value:
77
            value = DEFAULT_ACT_NUMBER_PROLONGATION
78
        if self.is_extended():
79
            raise Exception(u'Prise en charge déja prolongée')
80
        self.prolongation = value
81
        self.save()
82

  
83
    def save(self, **kwargs):
84
        self.start_date = \
85
            datetime(self.start_date.year, self.start_date.month,
86
                self.start_date.day)
87
        self.end_date = self.start_date + \
88
            timedelta(days=VALIDITY_PERIOD_TREATMENT_HEALTHCARE)
89

  
90
        super(CmppHealthCareTreatment, self).save(**kwargs)
91

  
92

  
93
class SessadHealthCareNotification(HealthCare):
94

  
95
    class Meta:
96
        app_label = 'dossiers'
97

  
98
    end_date = models.DateTimeField()
99

  
100
    def save(self, **kwargs):
101
        self.start_date = \
102
            datetime(self.start_date.year, self.start_date.month,
103
                self.start_date.day)
104
        self.end_date = \
105
            datetime(self.end_date.year, self.end_date.month,
106
                self.end_date.day)
107
        super(SessadHealthCareNotification, self).save(**kwargs)
108

  
109

  
17 110
class FileState(models.Model):
18 111

  
19 112
    class Meta:

Also available in: Unified diff