Project

General

Profile

Download (17.5 KB) Statistics
| Branch: | Tag: | Revision:
998ef74c Benjamin Dauvergne
# -*- coding: utf-8 -*-

from django.db import models
f7d9fa12 Benjamin Dauvergne
from django.db.models import query
677bc5b0 Mikaël Ates
from model_utils import Choices
96f613c6 Benjamin Dauvergne
from calebasse.models import PhoneNumberField, ZipCodeField
998ef74c Benjamin Dauvergne
f7d9fa12 Benjamin Dauvergne
from model_utils.managers import PassThroughManager
e1926dd5 Benjamin Dauvergne
f7d9fa12 Benjamin Dauvergne
class ServiceLinkedQuerySet(query.QuerySet):
e1926dd5 Benjamin Dauvergne
def for_service(self, service, allow_global=True):
'''Allows service local and service global objects'''
return self.filter(models.Q(service=service)
|models.Q(service__isnull=allow_global))

f7d9fa12 Benjamin Dauvergne
ServiceLinkedManager = PassThroughManager.for_queryset_class(ServiceLinkedQuerySet)

96f613c6 Benjamin Dauvergne
class NamedAbstractModel(models.Model):
a0f667ab Jérôme Schneider
name = models.CharField(max_length=150, verbose_name=u'Nom')
1097fd0a Benjamin Dauvergne
96f613c6 Benjamin Dauvergne
def __unicode__(self):
01b413fe Benjamin Dauvergne
return self.name
96f613c6 Benjamin Dauvergne
def __repr__(self):
return '<%s %r>' % (self.__class__.__name__, unicode(self))
1097fd0a Benjamin Dauvergne
998ef74c Benjamin Dauvergne
class Meta:
96f613c6 Benjamin Dauvergne
abstract = True
ordering = ['name']
998ef74c Benjamin Dauvergne
96f613c6 Benjamin Dauvergne
class ServiceLinkedAbstractModel(models.Model):
objects = ServiceLinkedManager()
service = models.ForeignKey('Service', null=True, blank=True)
1097fd0a Benjamin Dauvergne
96f613c6 Benjamin Dauvergne
class Meta:
abstract = True
998ef74c Benjamin Dauvergne
00baf982 Jérôme Schneider
class HealthCenter(NamedAbstractModel):
998ef74c Benjamin Dauvergne
class Meta:
00baf982 Jérôme Schneider
verbose_name = u'Centre d\'assurance maladie'
verbose_name_plural = u'Centres d\'assurances maladie'
998ef74c Benjamin Dauvergne
c9db0256 Jérôme Schneider
def __unicode__(self):
60264e91 Mikaël Ates
return self.large_regime.code + ' ' + self.health_fund + ' ' + self.code + ' ' + self.name
c9db0256 Jérôme Schneider
569eb325 Jérôme Schneider
code = models.CharField(verbose_name=u"Code du centre",
00baf982 Jérôme Schneider
max_length=4,
null=True, blank=True)
large_regime = models.ForeignKey('LargeRegime',
verbose_name=u"Grand régime")
569eb325 Jérôme Schneider
dest_organism = models.CharField(max_length=8,
verbose_name=u"Organisme destinataire")
computer_center_code = models.CharField(max_length=8,
verbose_name=u"Code centre informatique",
null=True, default=True)
abbreviation = models.CharField(verbose_name=u'Abbrévation',
max_length=8,
null=True, default=True)
60264e91 Mikaël Ates
health_fund = models.CharField(verbose_name=u"Numéro de la caisse",
max_length=3)
1097fd0a Benjamin Dauvergne
active = models.BooleanField(default=True)
address = models.CharField(max_length=120)
address_complement = models.CharField(max_length=120, blank=True,
null=True, default=None)
569eb325 Jérôme Schneider
zip_code = models.CharField(max_length=8)
1097fd0a Benjamin Dauvergne
city = models.CharField(max_length=80)
phone = models.CharField(max_length=30)
569eb325 Jérôme Schneider
fax = models.CharField(max_length=30,
null=True, blank=True)
00baf982 Jérôme Schneider
email = models.EmailField(
null=True, blank=True)
accounting_number = models.CharField(max_length=30,
null=True, blank=True)
1097fd0a Benjamin Dauvergne
correspondant = models.CharField(max_length=80)

00baf982 Jérôme Schneider
class LargeRegime(NamedAbstractModel):
class Meta:
verbose_name = u'Grand régime'
verbose_name_plural = u'Grands régimes'

def __unicode__(self):
569eb325 Jérôme Schneider
return self.code + ' ' + self.name
00baf982 Jérôme Schneider
569eb325 Jérôme Schneider
code = models.CharField(verbose_name=u"Code grand régime",
00baf982 Jérôme Schneider
max_length=2)
0f4c0029 Jérôme Schneider
998ef74c Benjamin Dauvergne
96f613c6 Benjamin Dauvergne
class TransportCompany(NamedAbstractModel):
de505e40 Mikaël Ates
description = models.TextField(blank=True, null=True, default=None)
address = models.CharField(max_length=120,
verbose_name=u"Adresse", blank=True, null=True, default=None)
address_complement = models.CharField(max_length=120,
blank=True,
null=True,
default=None,
verbose_name=u"Complément d'adresse")
zip_code = ZipCodeField(verbose_name=u"Code postal",
blank=True, null=True, default=None)
city = models.CharField(max_length=80, verbose_name=u"Ville",
blank=True, null=True, default=None)
phone = PhoneNumberField(verbose_name=u"Téléphone",
blank=True, null=True, default=None)
fax = models.CharField(max_length=30,
blank=True, null=True, default=None)
email = models.EmailField(blank=True, null=True)
correspondant = models.CharField(max_length=80, blank=True, null=True)
old_camsp_id = models.CharField(max_length=256,
verbose_name=u'Ancien ID au CAMSP', blank=True, null=True)
old_cmpp_id = models.CharField(max_length=256,
verbose_name=u'Ancien ID au CMPP', blank=True, null=True)
old_sessad_dys_id = models.CharField(max_length=256,
verbose_name=u'Ancien ID au SESSAD TED', blank=True, null=True)
old_sessad_ted_id = models.CharField(max_length=256,
verbose_name=u'Ancien ID au SESSAD DYS', blank=True, null=True)

998ef74c Benjamin Dauvergne
class Meta:
verbose_name = u'Compagnie de transport'
verbose_name_plural = u'Compagnies de transport'


96f613c6 Benjamin Dauvergne
class UninvoicableCode(models.Model):
998ef74c Benjamin Dauvergne
class Meta:
verbose_name = u'Code de non-facturation'
verbose_name_plural = u'Codes de non-facturation'


1f17fe24 Mikaël Ates
class Office(NamedAbstractModel):
998ef74c Benjamin Dauvergne
class Meta:
verbose_name = u'Établissement'
verbose_name_plural = u'Établissements'

1097fd0a Benjamin Dauvergne
def __unicode__(self):
1f17fe24 Mikaël Ates
return self.name
1097fd0a Benjamin Dauvergne
dfbedf34 Jérôme Schneider
description = models.TextField(blank=True, null=True)
96f613c6 Benjamin Dauvergne
# Contact
dfbedf34 Jérôme Schneider
phone = PhoneNumberField(verbose_name=u"Téléphone", blank=True, null=True)
fax = PhoneNumberField(verbose_name=u"Fax", blank=True, null=True)
email = models.EmailField(blank=True, null=True)
96f613c6 Benjamin Dauvergne
# Address
address = models.CharField(max_length=120,
1f17fe24 Mikaël Ates
verbose_name=u"Adresse", blank=True, null=True, default=None)
96f613c6 Benjamin Dauvergne
address_complement = models.CharField(max_length=120,
blank=True,
null=True,
default=None,
1c4e6090 Mikaël Ates
verbose_name=u"Complément d'adresse")
1f17fe24 Mikaël Ates
zip_code = ZipCodeField(verbose_name=u"Code postal",
blank=True, null=True, default=None)
city = models.CharField(max_length=80, verbose_name=u"Ville",
blank=True, null=True, default=None)
96f613c6 Benjamin Dauvergne
1097fd0a Benjamin Dauvergne
# TODO: add this fields : finess, suite, dm, dpa, genre, categorie, statut_juridique, mft, mt, dmt
998ef74c Benjamin Dauvergne
6c60a174 Mikaël Ates
class SchoolType(NamedAbstractModel):
class Meta:
verbose_name = u'Type du lieu de socialisation'
verbose_name_plural = u'Types du lieu de socialisation'

services = models.ManyToManyField('ressources.Service')

class School(NamedAbstractModel):
998ef74c Benjamin Dauvergne
class Meta:
45e8608e Mikaël Ates
verbose_name = u'Lieu de socialisation'
verbose_name_plural = u'Lieux de socialisation'
998ef74c Benjamin Dauvergne
1097fd0a Benjamin Dauvergne
def __unicode__(self):
5458878e Mikaël Ates
if self.school_type.name != 'Inconnu':
return unicode(self.school_type) + ' ' + self.name
return self.name
1097fd0a Benjamin Dauvergne
6c60a174 Mikaël Ates
school_type = models.ForeignKey('ressources.SchoolType',
verbose_name=u"Type d'établissement")
2d4b9891 Jérôme Schneider
description = models.TextField(blank=True, null=True, default=None)
276485e3 Frédéric Péters
address = models.CharField(max_length=120,
verbose_name=u"Adresse", blank=True, null=True, default=None)
96f613c6 Benjamin Dauvergne
address_complement = models.CharField(max_length=120,
blank=True,
null=True,
276485e3 Frédéric Péters
default=None,
verbose_name=u"Complément d'adresse")
6c60a174 Mikaël Ates
zip_code = ZipCodeField(verbose_name=u"Code postal",
blank=True, null=True, default=None)
276485e3 Frédéric Péters
city = models.CharField(max_length=80, verbose_name=u"Ville",
6c60a174 Mikaël Ates
blank=True, null=True, default=None)
phone = PhoneNumberField(verbose_name=u"Téléphone",
blank=True, null=True, default=None)
2d4b9891 Jérôme Schneider
fax = models.CharField(max_length=30,
blank=True, null=True, default=None)
6c60a174 Mikaël Ates
email = models.EmailField(blank=True, null=True, default=None)
2d4b9891 Jérôme Schneider
director_name = models.CharField(max_length=70,
276485e3 Frédéric Péters
blank=True, null=True, default=None,
verbose_name=u"Nom du directeur")
5458878e Mikaël Ates
old_id = models.CharField(max_length=256,
verbose_name=u'Ancien ID', blank=True, null=True)
old_service = models.CharField(max_length=256,
verbose_name=u'Ancien Service', blank=True, null=True)
1097fd0a Benjamin Dauvergne
45e8608e Mikaël Ates
96f613c6 Benjamin Dauvergne
class SchoolTeacherRole(NamedAbstractModel):
class Meta:
verbose_name = u'Type de rôle des professeurs'
verbose_name_plural = u'Types de rôle des professeurs'
998ef74c Benjamin Dauvergne
45e8608e Mikaël Ates
5458878e Mikaël Ates
class SchoolLevel(NamedAbstractModel):
old_id = models.CharField(max_length=256,
verbose_name=u'Ancien ID', blank=True, null=True)
old_service = models.CharField(max_length=256,
verbose_name=u'Ancien Service', blank=True, null=True)

class Meta:
verbose_name = u'Classe'
verbose_name_plural = u'Classes'

6c60a174 Mikaël Ates
45e8608e Mikaël Ates
class SocialisationDuration(models.Model):
class Meta:
verbose_name = u'Période de socialisation'
verbose_name_plural = u'Périodes de socialisation'

6c60a174 Mikaël Ates
school = models.ForeignKey('ressources.School',
verbose_name=u'Lieu de socialisation',
blank=True, null=True)
5458878e Mikaël Ates
level = models.ForeignKey('ressources.SchoolLevel',
verbose_name=u'Classe',
blank=True, null=True)
14c6fc82 Mikaël Ates
redoublement = models.BooleanField(verbose_name=u"Redoublement",
default=False)
45e8608e Mikaël Ates
start_date = models.DateField(verbose_name=u"Date d'arrivée")
6c60a174 Mikaël Ates
contact = models.CharField(verbose_name=u"Contact", max_length=200, blank=True, null=True, default=None)
45e8608e Mikaël Ates
end_date = models.DateField(verbose_name=u"Date de départ",
blank=True, null=True)
created = models.DateTimeField(u'Création', auto_now_add=True)
comment = models.TextField(max_length=3000,
blank=True, null=True, verbose_name=u"Commentaire")


96f613c6 Benjamin Dauvergne
class InscriptionMotive(NamedAbstractModel):
998ef74c Benjamin Dauvergne
class Meta:
verbose_name = u'Motif d\'inscription'
verbose_name_plural = u'Motifs d\'inscription'

de505e40 Mikaël Ates
class Provenance(NamedAbstractModel):
old_id = models.CharField(max_length=256,
verbose_name=u'Ancien ID', blank=True, null=True)
old_service = models.CharField(max_length=256,
verbose_name=u'Ancien Service', blank=True, null=True)
class Meta:
verbose_name = u'Provenance'
verbose_name_plural = u'Provenances'

998ef74c Benjamin Dauvergne
96f613c6 Benjamin Dauvergne
class Nationality(NamedAbstractModel):
998ef74c Benjamin Dauvergne
class Meta:
verbose_name = u'Nationalité'
verbose_name_plural = u'Nationalités'


96f613c6 Benjamin Dauvergne
class Job(NamedAbstractModel):
998ef74c Benjamin Dauvergne
class Meta:
verbose_name = u'Profession'
verbose_name_plural = u'Professions'


f7d9fa12 Benjamin Dauvergne
class RoomQuerySet(query.QuerySet):
96f613c6 Benjamin Dauvergne
def for_etablissement(self, etablissement):
return self.filter(etablissement=etablissement)

def for_service(self, service):
return self.filter(etablissement__service=service)


dfbedf34 Jérôme Schneider
class Room(NamedAbstractModel):
f7d9fa12 Benjamin Dauvergne
objects = PassThroughManager.for_queryset_class(RoomQuerySet)()
96f613c6 Benjamin Dauvergne
etablissement = models.ForeignKey('Office')

998ef74c Benjamin Dauvergne
class Meta:
96f613c6 Benjamin Dauvergne
verbose_name = u'Salle'
998ef74c Benjamin Dauvergne
verbose_name_plural = u'Salles'

88a1a343 Mikaël Ates
class AnalyseMotive(NamedAbstractModel):
cea6ec34 Jérôme Schneider
class Meta:
verbose_name = u"Motif analysé"
verbose_name_plural = u"Motifs analysés"

88a1a343 Mikaël Ates
class FamilyMotive(NamedAbstractModel):
cea6ec34 Jérôme Schneider
class Meta:
verbose_name = u"Motif familiale"
verbose_name_plural = u"Motifs familiaux"

a9381abc Mikaël Ates
class OutMotive(NamedAbstractModel):
dc1389b8 Mikaël Ates
class Meta:
verbose_name = u"Motif de sortie"
verbose_name_plural = u"Motifs de sortie"

a9381abc Mikaël Ates
class OutTo(NamedAbstractModel):
dc1389b8 Mikaël Ates
class Meta:
verbose_name = u"Orientation de sortie"
verbose_name_plural = u"Orientations de sortie"

88a1a343 Mikaël Ates
class AdviceGiver(NamedAbstractModel):
cea6ec34 Jérôme Schneider
class Meta:
verbose_name = u"Conseilleur"
verbose_name_plural = u"Conseilleurs"
96f613c6 Benjamin Dauvergne
91365af6 Jérôme Schneider
class Service(NamedAbstractModel):
1097fd0a Benjamin Dauvergne
admin_only = True

4079f834 Benjamin Dauvergne
slug = models.SlugField()
96f613c6 Benjamin Dauvergne
description = models.TextField()

# Contact
phone = PhoneNumberField(verbose_name=u"Téléphone")
fax = PhoneNumberField(verbose_name=u"Fax")
email = models.EmailField()
4079f834 Benjamin Dauvergne
class Meta:
verbose_name = u'Service'
verbose_name_plural = u'Services'
998ef74c Benjamin Dauvergne
f7d9fa12 Benjamin Dauvergne
class ActTypeQuerySet(query.QuerySet):
b37eebfb Jérôme Schneider
def for_service(self, service):
return self.filter(service=service)
998ef74c Benjamin Dauvergne
906e14dc Jérôme Schneider
class ActType(NamedAbstractModel, ServiceLinkedAbstractModel):
f7d9fa12 Benjamin Dauvergne
objects = PassThroughManager.for_queryset_class(ActTypeQuerySet)()
fe0a540c Mikaël Ates
billable = models.BooleanField(default=True, verbose_name=u"Facturable")
55bfb7f5 Benjamin Dauvergne
old_id = models.CharField(max_length=256,
verbose_name=u'Ancien ID', blank=True, null=True)
0f4a8003 Benjamin Dauvergne
display_first = models.BooleanField(default=False, verbose_name=u"Acte principalement utilisé")
1097fd0a Benjamin Dauvergne
3fb70ba0 Benjamin Dauvergne
class Meta(NamedAbstractModel.Meta):
998ef74c Benjamin Dauvergne
verbose_name = u'Type d\'actes'
verbose_name_plural = u'Types d\'actes'
0f4a8003 Benjamin Dauvergne
ordering = ('-display_first','name')
998ef74c Benjamin Dauvergne
96f613c6 Benjamin Dauvergne
class ParentalAuthorityType(NamedAbstractModel):
998ef74c Benjamin Dauvergne
class Meta:
verbose_name = u'Type d\'autorité parentale'
verbose_name_plural = u'Types d\'autorités parentales'


96f613c6 Benjamin Dauvergne
class ParentalCustodyType(NamedAbstractModel):
998ef74c Benjamin Dauvergne
class Meta:
verbose_name = u'Type de gardes parentales'
verbose_name_plural = u'Types de gardes parentales'


96f613c6 Benjamin Dauvergne
class SessionType(NamedAbstractModel):
998ef74c Benjamin Dauvergne
class Meta:
verbose_name = u'Type de séance'
verbose_name_plural = u'Types de séances'


96f613c6 Benjamin Dauvergne
class FamilySituationType(NamedAbstractModel):
998ef74c Benjamin Dauvergne
class Meta:
verbose_name = u'Type de situation familiale'
verbose_name_plural = u'Types de situations familiales'


08391712 Mikaël Ates
class MaritalStatusType(NamedAbstractModel):
class Meta:
verbose_name = u'Régime matrimonial'
verbose_name_plural = u'Régimes matrimoniaux'


96f613c6 Benjamin Dauvergne
class TransportType(NamedAbstractModel):
998ef74c Benjamin Dauvergne
class Meta:
verbose_name = u'Type de transport'
verbose_name_plural = u'Types de transports'
96f613c6 Benjamin Dauvergne

class WorkerType(NamedAbstractModel):
9ceeb537 Benjamin Dauvergne
intervene = models.BooleanField(
verbose_name=u'Intervenant',
blank=True)

96f613c6 Benjamin Dauvergne
class Meta:
verbose_name = u'Type de personnel'
verbose_name_plural = u'Types de personnel'
677bc5b0 Mikaël Ates

AXIS = Choices(
(1, 'Axe I : catégories cliniques'),
(2, 'Axe II : facteurs organiques'),
6e7e04bb Frédéric Péters
(3, 'Axe II : facteurs environnementaux'),
677bc5b0 Mikaël Ates
)

class CodeCFTMEA(NamedAbstractModel):
code = models.IntegerField(verbose_name=u"Code")
axe = models.IntegerField(verbose_name=u"Axe", choices=AXIS,
max_length=1)

def __unicode__(self):
return "%d %s" % (self.code, self.name)

class Meta:
ordering = ['code']
1f17fe24 Mikaël Ates
verbose_name = u'Code CFTMEA'
verbose_name_plural = u'Codes CFTMEA'
1c4e6090 Mikaël Ates
a4bccba9 Mikaël Ates
class MDPH(models.Model):
1c4e6090 Mikaël Ates
class Meta:
1f17fe24 Mikaël Ates
verbose_name = u'Etablissement MDPH'
verbose_name_plural = u'Etablissements MDPH'
1c4e6090 Mikaël Ates
def __unicode__(self):
return self.department

department = models.CharField(max_length=200,
verbose_name=u"Département")

description = models.TextField(blank=True, null=True)

# Contact
phone = PhoneNumberField(verbose_name=u"Téléphone", blank=True, null=True)
fax = PhoneNumberField(verbose_name=u"Fax", blank=True, null=True)
email = models.EmailField(blank=True, null=True)
website = models.CharField(max_length=200,
verbose_name=u"Site Web", blank=True, null=True)

# Address
address = models.CharField(max_length=120,
verbose_name=u"Adresse", blank=True, null=True)
address_complement = models.CharField(max_length=120,
blank=True,
null=True,
default=None,
verbose_name=u"Complément d'addresse")
zip_code = ZipCodeField(verbose_name=u"Code postal",
blank=True, null=True)
city = models.CharField(max_length=80,
verbose_name=u"Ville", blank=True, null=True)
b69d90d2 Mikaël Ates
class MDPHRequest(models.Model):
1f17fe24 Mikaël Ates
class Meta:
verbose_name = u'Demande MDPH'
verbose_name_plural = u'Demandes MDPH'

b69d90d2 Mikaël Ates
start_date = models.DateField(verbose_name=u"Date de la demande")
a4bccba9 Mikaël Ates
mdph = models.ForeignKey('ressources.MDPH',
verbose_name=u"MDPH")
b69d90d2 Mikaël Ates
comment = models.TextField(max_length=3000,
blank=True, null=True, verbose_name=u"Commentaire")
created = models.DateTimeField(u'Création', auto_now_add=True)

MDPH_HELP = Choices(
(0, "Non défini"),
(1, "AEEH (Allocation d'éducation de l'enfant handicapé)"),
(2, 'AVS (Assistant de vie scolaire)'),
(3, 'EVS (Emplois de vie scolaire)'),
)

class MDPHResponse(models.Model):
1f17fe24 Mikaël Ates
class Meta:
verbose_name = u'Réponse MDPH'
verbose_name_plural = u'Réponses MDPH'

b69d90d2 Mikaël Ates
start_date = models.DateField(verbose_name=u"Date de début")
end_date = models.DateField(verbose_name=u"Date de fin")
a4bccba9 Mikaël Ates
mdph = models.ForeignKey('ressources.MDPH',
verbose_name=u"MDPH")
b69d90d2 Mikaël Ates
comment = models.TextField(max_length=3000,
blank=True, null=True, verbose_name=u"Commentaire")
created = models.DateTimeField(u'Création', auto_now_add=True)
type_aide = models.IntegerField(verbose_name=u"Type d'aide", choices=MDPH_HELP,
max_length=1, default=0)
name = models.CharField(max_length=200,
verbose_name=u"Nom", blank=True, null=True)
rate = models.CharField(max_length=10,
verbose_name=u"Taux", blank=True, null=True)
1f17fe24 Mikaël Ates

class HolidayType(NamedAbstractModel):
for_group = models.BooleanField(
verbose_name=u'Congé de groupe',
blank=True)

class Meta:
verbose_name = u'Type de congé'
verbose_name_plural = u'Types de congé'
53ccde9e Mikaël Ates
class PatientRelatedLink(NamedAbstractModel):
old_camsp_id = models.CharField(max_length=256,
verbose_name=u'Ancien ID au CAMSP', blank=True, null=True)
old_cmpp_id = models.CharField(max_length=256,
verbose_name=u'Ancien ID au CMPP', blank=True, null=True)
old_sessad_dys_id = models.CharField(max_length=256,
verbose_name=u'Ancien ID au SESSAD TED', blank=True, null=True)
old_sessad_ted_id = models.CharField(max_length=256,
verbose_name=u'Ancien ID au SESSAD DYS', blank=True, null=True)
class Meta:
verbose_name = u'Type de lien avec le patient (parenté)'
verbose_name_plural = u'Types de lien avec le patient (parenté)'