Revision d489bf41
Added by Mikaël Ates over 12 years ago
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
dossiers: Add healthcare models.