Exemple #1
0
class rbVisitType(db.Model):
    __tablename__ = u'rbVisitType'

    id = db.Column(db.Integer, primary_key=True)
    code = db.Column(db.Unicode(8), nullable=False, index=True)
    name = db.Column(db.Unicode(64), nullable=False, index=True)
    serviceModifier = db.Column(db.Unicode(128), nullable=False)
Exemple #2
0
class ConfigVariables(db.Model):
    __tablename__ = '%s_config' % TABLE_PREFIX

    id = db.Column(db.Integer, primary_key=True, autoincrement=True)
    code = db.Column(db.String(25), unique=True, nullable=False)
    name = db.Column(db.Unicode(50), unique=True, nullable=False)
    value = db.Column(db.Unicode(100))
    value_type = db.Column(db.String(30))

    def __unicode__(self):
        return self.code
class Street(db.Model):
    __bind_key__ = 'kladr'
    __tablename__ = 'STREET'
    __table_args__ = (db.Index('NAME_SOCR', 'NAME', 'SOCR', 'CODE'), )

    NAME = db.Column(db.Unicode(40), nullable=False)
    SOCR = db.Column(db.Unicode(10), nullable=False)
    CODE = db.Column(db.String(17), primary_key=True)
    INDEX = db.Column(db.String(6), nullable=False)
    GNINMB = db.Column(db.String(4), nullable=False)
    UNO = db.Column(db.String(4), nullable=False)
    OCATD = db.Column(db.String(11), nullable=False)
    infis = db.Column(db.String(5), nullable=False, index=True)
Exemple #4
0
class rbUnit(db.Model):
    __tablename__ = u'rbUnit'

    id = db.Column(db.Integer, primary_key=True)
    code = db.Column(db.Unicode(256), index=True)
    name = db.Column(db.Unicode(256), index=True)

    def __json__(self):
        return {
            'id': self.id,
            'code': self.code,
            'name': self.name,
        }
Exemple #5
0
class rbAppointmentType(db.Model):
    __tablename__ = 'rbAppointmentType'

    id = db.Column(db.Integer, primary_key=True, autoincrement=True)
    code = db.Column(db.Unicode(32), nullable=False)
    name = db.Column(db.Unicode(64), nullable=False)

    def __unicode__(self):
        return u'(%s) %s' % (self.code, self.name)

    def __json__(self):
        return {
            'code': self.code,
            'name': self.name,
        }
Exemple #6
0
class ClientContact(db.Model):
    __tablename__ = 'ClientContact'

    id = db.Column(db.Integer, primary_key=True)
    createDatetime = db.Column(db.DateTime,
                               nullable=False,
                               default=datetime.datetime.now)
    createPerson_id = db.Column(db.Integer,
                                index=True,
                                default=safe_current_user_id)
    modifyDatetime = db.Column(db.DateTime,
                               nullable=False,
                               default=datetime.datetime.now,
                               onupdate=datetime.datetime.now)
    modifyPerson_id = db.Column(db.Integer,
                                index=True,
                                default=safe_current_user_id,
                                onupdate=safe_current_user_id)
    deleted = db.Column(db.Integer,
                        nullable=False,
                        server_default=u"'0'",
                        default=0)
    client_id = db.Column(db.ForeignKey('Client.id'),
                          nullable=False,
                          index=True)
    contactType_id = db.Column(db.Integer,
                               db.ForeignKey('rbContactType.id'),
                               nullable=False,
                               index=True)
    contact = db.Column(db.String(32), nullable=False)
    notes = db.Column(db.Unicode(64), nullable=False, default=u'')
    version = db.Column(db.Integer, nullable=False, default=0)

    contactType = db.relationship(u'rbContactType', lazy=False)

    def __init__(self, cont_type, text, notes, client):
        self.contactType_id = int(cont_type) if cont_type else None
        self.contact = text
        self.notes = notes
        self.client = client

    @property
    def name(self):
        return self.contactType.name if self.contactType else None

    def __json__(self):
        return {
            'id': self.id,
            'deleted': self.deleted,
            'contact_type': self.contactType,
            'contact_text': self.contact,
            'notes': self.notes
        }

    def __int__(self):
        return self.id
Exemple #7
0
class rbJobType(db.Model):
    __tablename__ = u'rbJobType'

    id = db.Column(db.Integer, primary_key=True)
    group_id = db.Column(db.Integer, index=True)
    code = db.Column(db.String(64), nullable=False)
    regionalCode = db.Column(db.String(64), nullable=False)
    name = db.Column(db.Unicode(128), nullable=False)
    laboratory_id = db.Column(db.Integer, index=True)
    isInstant = db.Column(db.Integer, nullable=False, server_default=u"'0'")
class Kladr(db.Model):
    __bind_key__ = 'kladr'
    __tablename__ = 'KLADR'
    __table_args__ = (db.Index('long_name', 'prefix', 'NAME', 'SOCR',
                               'STATUS'), db.Index('NAME', 'NAME', 'SOCR'),
                      db.Index('parent', 'parent', 'NAME', 'SOCR', 'CODE'))

    NAME = db.Column(db.Unicode(40), nullable=False)
    SOCR = db.Column(db.Unicode(10), nullable=False)
    CODE = db.Column(db.String(13), primary_key=True)
    INDEX = db.Column(db.String(6), nullable=False)
    GNINMB = db.Column(db.String(4), nullable=False)
    UNO = db.Column(db.String(4), nullable=False)
    OCATD = db.Column(db.String(11), nullable=False, index=True)
    STATUS = db.Column(db.String(1), nullable=False)
    parent = db.Column(db.String(13), nullable=False)
    infis = db.Column(db.String(5), nullable=False, index=True)
    prefix = db.Column(db.String(2), nullable=False)
    id = db.Column(db.Integer, nullable=False, unique=True)
Exemple #9
0
class ClientIntoleranceMedicament(db.Model):
    __tablename__ = u'ClientIntoleranceMedicament'

    id = db.Column(db.Integer, primary_key=True)
    createDatetime = db.Column(db.DateTime,
                               nullable=False,
                               default=datetime.datetime.now)
    createPerson_id = db.Column(db.Integer,
                                index=True,
                                default=safe_current_user_id)
    modifyDatetime = db.Column(db.DateTime,
                               nullable=False,
                               default=datetime.datetime.now,
                               onupdate=datetime.datetime.now)
    modifyPerson_id = db.Column(db.Integer,
                                index=True,
                                default=safe_current_user_id,
                                onupdate=safe_current_user_id)
    deleted = db.Column(db.Integer,
                        nullable=False,
                        server_default=u"'0'",
                        default=0)
    client_id = db.Column(db.ForeignKey('Client.id'),
                          nullable=False,
                          index=True)
    name = db.Column("nameMedicament", db.Unicode(128), nullable=False)
    power = db.Column(db.Integer, nullable=False)
    createDate = db.Column(db.Date)
    notes = db.Column(db.String, nullable=False, default='')
    version = db.Column(db.Integer, nullable=False, default=0)

    def __init__(self, name, power, date, notes, client):
        self.name = name
        self.power = power
        self.createDate = date
        self.notes = notes
        self.client = client

    def __json__(self):
        return {
            'id': self.id,
            'deleted': self.deleted,
            'name': self.name,
            'power':
            AllergyPower(self.power) if self.power is not None else None,
            'date': self.createDate,
            'notes': self.notes
        }

    def __unicode__(self):
        return self.name

    def __int__(self):
        return self.id
Exemple #10
0
class Office(db.Model):
    __tablename__ = 'Office'

    id = db.Column(db.Integer, primary_key=True, autoincrement=True)
    code = db.Column(db.Unicode(32), nullable=False)
    name = db.Column(db.Unicode(64), nullable=False)
    orgStructure_id = db.Column(db.ForeignKey('OrgStructure.id'))

    orgStructure = db.relationship('OrgStructure')

    def __unicode__(self):
        return self.code

    def __json__(self):
        return {
            'id': self.id,
            'code': self.code,
            'name': self.name,
            'org_structure': self.orgStructure
        }
Exemple #11
0
class rbHospitalBedType(db.Model):
    __tablename__ = u'rbHospitalBedType'

    id = db.Column(db.Integer, primary_key=True)
    code = db.Column(db.String(8), nullable=False, index=True)
    name = db.Column(db.Unicode(64), nullable=False, index=True)

    def __json__(self):
        return {
            'id': self.id,
            'code': self.code,
            'name': self.name,
        }
Exemple #12
0
class ScheduleClientTicket(db.Model):
    __tablename__ = 'ScheduleClientTicket'

    id = db.Column(db.Integer, primary_key=True, autoincrement=True)
    client_id = db.Column(db.Integer, db.ForeignKey('Client.id'), nullable=False)
    ticket_id = db.Column(db.Integer, db.ForeignKey('ScheduleTicket.id'), nullable=False)
    isUrgent = db.Column(db.Boolean)
    note = db.Column(db.Unicode(256), default=u'')
    appointmentType_id = db.Column(db.Integer, db.ForeignKey('rbAppointmentType.id'))
    infisFrom = db.Column(db.Unicode(20))
    createDatetime = db.Column(db.DateTime, nullable=False, default=datetime.datetime.now)
    createPerson_id = db.Column(db.Integer, db.ForeignKey('Person.id'), index=True, default=safe_current_user_id)
    modifyDatetime = db.Column(db.DateTime, nullable=False, default=datetime.datetime.now, onupdate=datetime.datetime.now)
    modifyPerson_id = db.Column(db.Integer, db.ForeignKey('Person.id'), index=True, default=safe_current_user_id, onupdate=safe_current_user_id)
    deleted = db.Column(db.SmallInteger, nullable=False, server_default='0', default=0)
    event_id = db.Column(db.ForeignKey('Event.id'))
    
    client = db.relationship('Client', lazy='joined', uselist=False)
    appointmentType = db.relationship('rbAppointmentType', lazy=False, innerjoin=True)
    createPerson = db.relationship('Person', foreign_keys=[createPerson_id])
    event = db.relationship('Event')

    ticket = db.relationship(
        'ScheduleTicket', lazy=True, innerjoin=True, uselist=False,
        primaryjoin='and_('
                    'ScheduleClientTicket.deleted == 0, '
                    'ScheduleTicket.deleted == 0, '
                    'ScheduleClientTicket.ticket_id == ScheduleTicket.id)'
    )

    @property
    def org_from(self):
        if not self.infisFrom:
            return
        from .exists import Organisation
        org = Organisation.query.filter(Organisation.infisCode == self.infisFrom).first()
        if not org:
            return self.infisFrom
        return org.title
Exemple #13
0
class rbHospitalBedProfile(db.Model):
    __tablename__ = u'rbHospitalBedProfile'

    id = db.Column(db.Integer, primary_key=True)
    code = db.Column(db.String(8), nullable=False, index=True)
    name = db.Column(db.Unicode(64), nullable=False, index=True)
    service_id = db.Column(db.Integer,
                           db.ForeignKey('rbService.id'),
                           index=True)

    # service = db.relationship('rbService')

    def __json__(self):
        return {
            'id': self.id,
            'code': self.code,
            'name': self.name,
        }
Exemple #14
0
class ClientPolicy(db.Model):
    __tablename__ = 'ClientPolicy'
    __table_args__ = (db.Index(u'Serial_Num', u'serial', u'number'),
                      db.Index(u'client_insurer', u'client_id', u'insurer_id'))

    id = db.Column(db.Integer, primary_key=True)
    createDatetime = db.Column(db.DateTime,
                               nullable=False,
                               default=datetime.datetime.now)
    createPerson_id = db.Column(db.Integer,
                                index=True,
                                default=safe_current_user_id)
    modifyDatetime = db.Column(db.DateTime,
                               nullable=False,
                               default=datetime.datetime.now,
                               onupdate=datetime.datetime.now)
    modifyPerson_id = db.Column(db.Integer,
                                index=True,
                                default=safe_current_user_id,
                                onupdate=safe_current_user_id)
    deleted = db.Column(db.Integer,
                        nullable=False,
                        server_default=u"'0'",
                        default=0)
    clientId = db.Column("client_id",
                         db.ForeignKey('Client.id'),
                         nullable=False)
    insurer_id = db.Column(db.Integer,
                           db.ForeignKey('Organisation.id'),
                           index=True)
    policyType_id = db.Column(db.Integer,
                              db.ForeignKey('rbPolicyType.id'),
                              index=True)
    serial = db.Column(db.String(16), nullable=False)
    number = db.Column(db.String(16), nullable=False)
    begDate = db.Column(db.Date, nullable=False)
    endDate = db.Column(db.Date)
    name = db.Column(db.Unicode(64),
                     nullable=False,
                     server_default=u"''",
                     default=u'')
    note = db.Column(db.Unicode(200),
                     nullable=False,
                     server_default=u"''",
                     default=u'')
    version = db.Column(db.Integer,
                        nullable=False,
                        server_default=u"'0'",
                        default=0)

    insurer = db.relationship(u'Organisation', lazy=False)
    policyType = db.relationship(u'rbPolicyType', lazy=False)

    def __init__(self, pol_type, serial, number, beg_date, end_date, insurer,
                 client):
        self.policyType_id = int(pol_type) if pol_type else None
        self.serial = serial
        self.number = number
        self.begDate = beg_date
        self.endDate = end_date
        self.insurer_id = int(insurer['id']) if insurer['id'] else None
        self.name = insurer['full_name'] if not insurer['id'] else None
        self.client = client

    def __unicode__(self):
        return (' '.join([
            self.policyType.name,
            unicode(self.insurer) if self.insurer else '', self.serial,
            self.number
        ])).strip()

    def __int__(self):
        return self.id

    def __json__(self):
        return {
            'id': self.id,
            'policy_type': self.policyType,
            'deleted': self.deleted,
            'serial': self.serial,
            'number': self.number,
            'beg_date': self.begDate,
            'end_date': self.endDate,
            'insurer': self.insurer if self.insurer else {
                'id': None,
                'full_name': self.name,
                'short_name': self.name,
                'infis': None,
                'title': None
            },
            'policy_text': self.__unicode__()
        }
Exemple #15
0
class Client(db.Model):
    __tablename__ = 'Client'
    __table_args__ = (db.Index(u'lastName', u'lastName', u'firstName',
                               u'patrName', u'birthDate', u'id'), )

    id = db.Column(db.Integer, primary_key=True)
    createDatetime = db.Column(db.DateTime,
                               nullable=False,
                               default=datetime.datetime.now)
    createPerson_id = db.Column(db.Integer,
                                index=True,
                                default=safe_current_user_id)
    modifyDatetime = db.Column(db.DateTime,
                               nullable=False,
                               default=datetime.datetime.now,
                               onupdate=datetime.datetime.now)
    modifyPerson_id = db.Column(db.Integer,
                                index=True,
                                default=safe_current_user_id,
                                onupdate=safe_current_user_id)
    deleted = db.Column(db.Integer,
                        nullable=False,
                        server_default=u"'0'",
                        default=0)
    lastName = db.Column(db.Unicode(30), nullable=False)
    firstName = db.Column(db.Unicode(30), nullable=False)
    patrName = db.Column(db.Unicode(30), nullable=False)
    birthDate = db.Column(db.Date, nullable=False, index=True)
    sexCode = db.Column("sex", db.Integer, nullable=False)
    SNILS = db.Column(db.String(11), nullable=False, index=True)
    bloodType_id = db.Column(db.ForeignKey('rbBloodType.id'), index=True)
    bloodDate = db.Column(db.Date)
    bloodNotes = db.Column(db.String, nullable=False, default='')
    growth = db.Column(db.String(16), nullable=False, default='0')
    weight = db.Column(db.String(16), nullable=False, default='0')
    notes = db.Column(db.String, nullable=False, default='')
    version = db.Column(db.Integer, nullable=False, default=0)
    birthPlace = db.Column(db.String(128),
                           nullable=False,
                           server_default=u"''")
    embryonalPeriodWeek = db.Column(db.String(16),
                                    nullable=False,
                                    server_default=u"''")
    uuid_id = db.Column(db.ForeignKey('UUID.id'),
                        nullable=False,
                        index=True,
                        server_default=u"'0'")

    uuid = db.relationship('UUID')
    documents = db.relationship(
        u'ClientDocument',
        primaryjoin=
        'and_(ClientDocument.clientId==Client.id, ClientDocument.deleted == 0)',
        order_by="desc(ClientDocument.id)",
        backref=db.backref('client'),
        lazy='dynamic')
    documents_all = db.relationship(
        'ClientDocument',
        primaryjoin=
        'and_(ClientDocument.clientId==Client.id, ClientDocument.deleted != 1)',
        order_by="desc(ClientDocument.id)")
    policies = db.relationship(
        u'ClientPolicy',
        primaryjoin=
        'and_(ClientPolicy.clientId==Client.id, ClientPolicy.deleted == 0)',
        order_by="desc(ClientPolicy.id)",
        backref=db.backref('client'),
        lazy='dynamic')
    policies_all = db.relationship(
        'ClientPolicy',
        primaryjoin=
        'and_(ClientPolicy.clientId==Client.id, ClientPolicy.deleted != 1)',
        order_by="desc(ClientPolicy.id)")
    addresses = db.relationship(
        'ClientAddress',
        primaryjoin=
        "and_(Client.id==ClientAddress.client_id, ClientAddress.deleted==0)",
        backref=db.backref('client'))
    reg_address = db.relationship(
        u'ClientAddress',
        primaryjoin=
        "and_(Client.id==ClientAddress.client_id, ClientAddress.type==0, ClientAddress.deleted==0)",
        order_by="desc(ClientAddress.id)",
        uselist=False)
    loc_address = db.relationship(
        u'ClientAddress',
        primaryjoin=
        "and_(Client.id==ClientAddress.client_id, ClientAddress.type==1, ClientAddress.deleted==0)",
        order_by="desc(ClientAddress.id)",
        uselist=False)
    soc_statuses = db.relationship(
        u'ClientSocStatus',
        primaryjoin=
        'and_(ClientSocStatus.deleted == 0, ClientSocStatus.client_id==Client.id)',
        backref=db.backref('client'))
    intolerances = db.relationship(
        u'ClientIntoleranceMedicament',
        primaryjoin=
        'and_(ClientIntoleranceMedicament.client_id==Client.id, ClientIntoleranceMedicament.deleted == 0)',
        backref=db.backref('client'),
        lazy='dynamic')
    identifications = db.relationship(
        u'ClientIdentification',
        primaryjoin=
        'and_(ClientIdentification.client_id==Client.id, ClientIdentification.deleted == 0)',
        backref=db.backref('client'),
        lazy='dynamic')
    allergies = db.relationship(
        u'ClientAllergy',
        primaryjoin=
        'and_(ClientAllergy.client_id==Client.id, ClientAllergy.deleted == 0)',
        backref=db.backref('client'),
        lazy='dynamic')
    blood_history = db.relationship(u'BloodHistory',
                                    backref=db.backref('client'),
                                    order_by='desc(BloodHistory.id)',
                                    lazy='dynamic')
    client_relations = db.relationship(
        u'ClientRelation',
        primaryjoin=
        'and_(ClientRelation.deleted == 0, or_(ClientRelation.client_id == Client.id, ClientRelation.relative_id == Client.id)) ',
        lazy='dynamic')
    contacts = db.relationship(
        'ClientContact',
        primaryjoin=
        'and_(ClientContact.client_id==Client.id, ClientContact.deleted == 0)',
        backref=db.backref('client'),
        lazy='dynamic')
    works = db.relationship(
        u'ClientWork',
        primaryjoin=
        'and_(ClientWork.client_id==Client.id, ClientWork.deleted == 0)',
        order_by="desc(ClientWork.id)")

    events = db.relationship(
        u'Event',
        lazy='dynamic',
        order_by='desc(Event.createDatetime)',
        primaryjoin='and_(Event.deleted == 0, Event.client_id == Client.id)')
    appointments = db.relationship(
        u'ScheduleClientTicket',
        lazy='dynamic',  #order_by='desc(ScheduleTicket.begDateTime)',
        primaryjoin='and_('
        'ScheduleClientTicket.deleted == 0, '
        'ScheduleClientTicket.client_id == Client.id)',
        innerjoin=True)

    def __init__(self):
        self.init_on_load()

    @orm.reconstructor
    def init_on_load(self):
        # TODO: redo?
        self._id_document = None

    def age_tuple(self, moment=None):
        """
        @type moment: datetime.datetime
        """
        if not self.birthDate:
            return None
        if not moment:
            moment = datetime.date.today()
        return calcAgeTuple(self.birthDate, moment)

    @property
    def age(self):
        bd = self.birthDate
        date = datetime.date.today()
        if not self.age_tuple():
            return u'ещё не родился'
        (days, weeks, months, years) = self.age_tuple()
        if years > 7:
            return formatYears(years)
        elif years > 1:
            return formatYearsMonths(years, months - 12 * years)
        elif months > 1:
            add_year, new_month = divmod(bd.month + months, 12)
            if new_month:
                new_day = min(
                    bd.day,
                    calendar.monthrange(bd.year + add_year, new_month)[1])
                fmonth_date = datetime.date(bd.year + add_year, new_month,
                                            new_day)
            else:
                fmonth_date = bd
            return formatMonthsWeeks(months, (date - fmonth_date).days / 7)
        else:
            return formatDays(days)

    @property
    def nameText(self):
        return u' '.join((u'%s %s %s' % (self.lastName or '', self.firstName
                                         or '', self.patrName or '')).split())

    @property
    def shortNameText(self):
        words = self.firstName.split() + self.patrName.split()
        initials = ['%s.' % word[0].upper() for word in words if word]
        return u'%s %s' % (self.lastName, u' '.join(initials))

    @property
    def sex(self):
        return unicode(Gender(self.sexCode))

    @property
    def formatted_SNILS(self):
        if self.SNILS:
            s = self.SNILS + ' ' * 14
            return u'%s-%s-%s %s' % (s[0:3], s[3:6], s[6:9], s[9:11])
        else:
            return u''

    @property
    def document(self):
        return self.id_document

    @property
    def id_document(self):
        if not self._id_document:
            self._id_document = (
                self.documents.join(rbDocumentType).join(rbDocumentTypeGroup).
                filter(ClientDocument.deleted == 0).filter(
                    rbDocumentTypeGroup.code == ID_DOC_GROUP_CODE).order_by(
                        ClientDocument.date.desc()).first())
        return self._id_document

    def get_actual_document_by_code(self, doc_type_code):
        # пока не используется
        return (self.documents.filter(ClientDocument.deleted == 0).filter(
            rbDocumentTypeGroup.code == doc_type_code).order_by(
                ClientDocument.date.desc()).first())

    @property
    def actual_soc_statuses(self):
        return filter(
            lambda s: not s.endDate or s.endDate >= datetime.date.today(),
            self.soc_statuses)

    @property
    def policy(self):
        return self.compulsoryPolicy

    @property
    def policyDMS(self):
        return self.voluntaryPolicies

    @property
    def compulsoryPolicy(self):
        cpols = filter(
            lambda p: p.policyType is not None and p.policyType.code in
            COMP_POLICY_CODES, self.policies)
        return cpols[0] if cpols else None

    @property
    def voluntaryPolicies(self):
        return filter(
            lambda p: p.policyType is not None and p.policyType.code in
            VOL_POLICY_CODES, self.policies)

    @property
    def phones(self):
        return [
            (u'%s: %s (%s)' % (contact.name, contact.contact, contact.notes))
            if contact.notes else (u'%s: %s' % (contact.name, contact.contact))
            for contact in self.contacts.join(rbContactType).order_by(
                rbContactType.idx)
        ]

    def has_identical_addresses(self):
        reg = self.reg_address
        live = self.loc_address
        if reg and live:
            if reg.address and live.address:
                return reg.address.id == live.address.id
            else:
                return reg.freeInput == live.freeInput
        return False

    def __unicode__(self):
        return self.nameText

    def __int__(self):
        return self.id

    def __json__(self):
        return {
            'id': self.id,
            'first_name': self.firstName,
            'last_name': self.lastName,
            'patr_name': self.patrName,
            'birth_date': self.birthDate,
            'sex': Gender(self.sexCode) if self.sexCode is not None else None,
            'snils': self.SNILS,
            'full_name': self.nameText,
            'notes': self.notes,
            'age_tuple': self.age_tuple(),
            'age': self.age,
            'sex_raw': self.sexCode
        }
Exemple #16
0
class ClientSocStatus(db.Model):
    __tablename__ = u'ClientSocStatus'

    id = db.Column(db.Integer, primary_key=True)
    createDatetime = db.Column(db.DateTime,
                               nullable=False,
                               default=datetime.datetime.now)
    createPerson_id = db.Column(db.Integer,
                                index=True,
                                default=safe_current_user_id)
    modifyDatetime = db.Column(db.DateTime,
                               nullable=False,
                               default=datetime.datetime.now,
                               onupdate=datetime.datetime.now)
    modifyPerson_id = db.Column(db.Integer,
                                index=True,
                                default=safe_current_user_id,
                                onupdate=safe_current_user_id)
    deleted = db.Column(db.Integer,
                        nullable=False,
                        server_default=u"'0'",
                        default=0)
    client_id = db.Column(db.ForeignKey('Client.id'),
                          nullable=False,
                          index=True)
    socStatusClass_id = db.Column(db.ForeignKey('rbSocStatusClass.id'),
                                  index=True)
    socStatusType_id = db.Column(db.ForeignKey('rbSocStatusType.id'),
                                 nullable=False,
                                 index=True)
    begDate = db.Column(db.Date, nullable=False)
    endDate = db.Column(db.Date)
    document_id = db.Column(db.ForeignKey('ClientDocument.id'), index=True)
    note = db.Column(db.Unicode(200),
                     nullable=False,
                     server_default=u"''",
                     default=u'')
    version = db.Column(db.Integer,
                        nullable=False,
                        server_default=u"'0'",
                        default=0)
    benefitCategory_id = db.Column(db.Integer)

    soc_status_class = db.relationship(u'rbSocStatusClass', lazy=False)
    socStatusType = db.relationship(u'rbSocStatusType', lazy=False)
    self_document = db.relationship(u'ClientDocument', lazy=False)

    @property
    def classes(self):
        return self.socStatusType.classes

    @property
    def code(self):
        return self.socStatusType.code

    @property
    def name(self):
        return self.socStatusType.name

    @property
    def document(self):
        if self.document_id:
            return self.self_document
        else:
            return self.getClientDocument()

    def __init__(self, soc_stat_class, soc_stat_type, beg_date, end_date,
                 client, document):
        self.socStatusClass_id = int(
            soc_stat_class) if soc_stat_class else None
        self.socStatusType_id = int(soc_stat_type) if soc_stat_type else None
        self.begDate = beg_date
        self.self_document = document
        self.endDate = end_date
        self.client = client

    def getClientDocument(self):
        documents = ClientDocument.query().filter(ClientDocument.clientId == self.client_id).\
            filter(ClientDocument.deleted == 0).all()
        documents = [
            document for document in documents if document.documentType
            and document.documentType.group.code == "1"
        ]
        return documents[-1]

    def __unicode__(self):
        return self.name

    def __int__(self):
        return self.id

    def __json__(self):
        return {
            'id': self.id,
            'ss_type': self.socStatusType,
            'ss_class': self.soc_status_class,
            'deleted': self.deleted,
            'beg_date': self.begDate,
            'end_date': self.endDate,
            'self_document': self.self_document
        }
Exemple #17
0
class EventLocalContract(db.Model):
    __tablename__ = u'Event_LocalContract'
    __table_args__ = (db.Index(u'lastName', u'lastName', u'firstName',
                               u'patrName', u'birthDate', u'id'), )

    id = db.Column(db.Integer, primary_key=True)
    createDatetime = db.Column(db.DateTime,
                               nullable=False,
                               default=datetime.datetime.now)
    createPerson_id = db.Column(db.Integer,
                                index=True,
                                default=safe_current_user_id)
    modifyDatetime = db.Column(db.DateTime,
                               nullable=False,
                               default=datetime.datetime.now,
                               onupdate=datetime.datetime.now)
    modifyPerson_id = db.Column(db.Integer,
                                index=True,
                                default=safe_current_user_id,
                                onupdate=safe_current_user_id)
    deleted = db.Column(db.Integer,
                        nullable=False,
                        server_default=u"'0'",
                        default=0)
    master_id = db.Column(db.Integer)
    coordDate = db.Column(db.DateTime)
    coordAgent = db.Column(db.String(128),
                           nullable=False,
                           server_default=u"''")
    coordInspector = db.Column(db.String(128),
                               nullable=False,
                               server_default=u"''")
    coordText = db.Column(db.String, nullable=False)
    dateContract = db.Column(db.Date, nullable=False)
    numberContract = db.Column(db.Unicode(64), nullable=False)
    sumLimit = db.Column(db.Float(asdecimal=True), nullable=False)
    lastName = db.Column(db.Unicode(30), nullable=False)
    firstName = db.Column(db.Unicode(30), nullable=False)
    patrName = db.Column(db.Unicode(30), nullable=False)
    birthDate = db.Column(db.Date, nullable=False, index=True)
    documentType_id = db.Column(db.Integer,
                                db.ForeignKey('rbDocumentType.id'),
                                index=True)
    serialLeft = db.Column(db.Unicode(8), nullable=False)
    serialRight = db.Column(db.Unicode(8), nullable=False)
    number = db.Column(db.String(16), nullable=False)
    regAddress = db.Column(db.Unicode(64), nullable=False)
    org_id = db.Column(db.Integer,
                       db.ForeignKey('Organisation.id'),
                       index=True)

    org = db.relationship(u'Organisation')
    documentType = db.relationship(u'rbDocumentType')
    # payments = db.relationship('EventPayment', backref=db.backref('local_contract'))

    # Это что вообще?!
    @property
    def document(self):
        document = ClientDocument()
        document.documentType = self.documentType
        document.serial = u'%s %s' % (self.serialLeft, self.serialRight)
        document.number = self.number
        return document

    def __unicode__(self):
        parts = []
        if self.coordDate:
            parts.append(u'согласовано ' + self.coordDate)
        if self.coordText:
            parts.append(self.coordText)
        if self.number:
            parts.append(u'№ ' + self.number)
        if self.date:
            parts.append(u'от ' + self.date)
        if self.org:
            parts.append(unicode(self.org))
        else:
            parts.append(self.lastName)
            parts.append(self.firstName)
            parts.append(self.patrName)
        return ' '.join(parts)

    def __json__(self):
        return {
            'id': self.id,
            'number_contract': self.numberContract,
            'date_contract': self.dateContract,
            'first_name': self.firstName,
            'last_name': self.lastName,
            'patr_name': self.patrName,
            'birth_date': self.birthDate,
            'doc_type_id': self.documentType_id,
            'doc_type': self.documentType,
            'serial_left': self.serialLeft,
            'serial_right': self.serialRight,
            'number': self.number,
            'reg_address': self.regAddress,
            'payer_org_id': self.org_id,
            'payer_org': self.org,
        }

    def __int__(self):
        return self.id
Exemple #18
0
class ActionType(db.Model):
    __tablename__ = u'ActionType'

    id = db.Column(db.Integer, primary_key=True)
    createDatetime = db.Column(db.DateTime, nullable=False)
    createPerson_id = db.Column(db.Integer, index=True)
    modifyDatetime = db.Column(db.DateTime, nullable=False)
    modifyPerson_id = db.Column(db.Integer, index=True)
    deleted = db.Column(db.Integer, nullable=False, server_default=u"'0'")
    hidden = db.Column(db.Integer, nullable=False, server_default=u"'0'")
    class_ = db.Column(u'class', db.Integer, nullable=False, index=True)
    group_id = db.Column(db.Integer,
                         db.ForeignKey('ActionType.id'),
                         index=True)
    code = db.Column(db.String(25), nullable=False)
    name = db.Column(db.Unicode(255), nullable=False)
    title = db.Column(db.Unicode(255), nullable=False)
    flatCode = db.Column(db.String(64), nullable=False, index=True)
    sex = db.Column(db.Integer, nullable=False)
    age = db.Column(db.String(9), nullable=False)
    age_bu = db.Column(db.Integer)
    age_bc = db.Column(db.SmallInteger)
    age_eu = db.Column(db.Integer)
    age_ec = db.Column(db.SmallInteger)
    office = db.Column(db.String(32), nullable=False)
    showInForm = db.Column(db.Integer, nullable=False)
    genTimetable = db.Column(db.Integer, nullable=False)
    service_id = db.Column(db.Integer,
                           db.ForeignKey('rbService.id'),
                           index=True)
    quotaType_id = db.Column(db.Integer, index=True)
    context = db.Column(db.String(64), nullable=False)
    amount = db.Column(db.Float(asdecimal=True),
                       nullable=False,
                       server_default=u"'1'")
    amountEvaluation = db.Column(db.Integer,
                                 nullable=False,
                                 server_default=u"'0'")
    defaultStatus = db.Column(db.Integer,
                              nullable=False,
                              server_default=u"'0'")
    defaultDirectionDate = db.Column(db.Integer,
                                     nullable=False,
                                     server_default=u"'0'")
    defaultPlannedEndDate = db.Column(db.Integer, nullable=False)
    defaultEndDate = db.Column(db.Integer,
                               nullable=False,
                               server_default=u"'0'")
    defaultExecPerson_id = db.Column(db.Integer, index=True)
    defaultPersonInEvent = db.Column(db.Integer,
                                     nullable=False,
                                     server_default=u"'0'")
    defaultPersonInEditor = db.Column(db.Integer,
                                      nullable=False,
                                      server_default=u"'0'")
    maxOccursInEvent = db.Column(db.Integer,
                                 nullable=False,
                                 server_default=u"'0'")
    showTime = db.Column(db.Integer, nullable=False, server_default=u"'0'")
    isMES = db.Column(db.Integer)
    nomenclativeService_id = db.Column(db.Integer,
                                       db.ForeignKey('rbService.id'),
                                       index=True)
    isPreferable = db.Column(db.Integer, nullable=False, server_default=u"'1'")
    prescribedType_id = db.Column(db.Integer, index=True)
    shedule_id = db.Column(db.Integer, index=True)
    isRequiredCoordination = db.Column(db.Integer,
                                       nullable=False,
                                       server_default=u"'0'")
    isRequiredTissue = db.Column(db.Integer,
                                 nullable=False,
                                 server_default=u"'0'")
    testTubeType_id = db.Column(db.Integer, index=True)
    jobType_id = db.Column(db.ForeignKey('rbJobType.id'), index=True)
    mnem = db.Column(db.String(32), server_default=u"''")
    layout = db.Column(db.Text)

    service = db.relationship(u'rbService',
                              foreign_keys='ActionType.service_id')
    nomenclatureService = db.relationship(
        u'rbService', foreign_keys='ActionType.nomenclativeService_id')
    property_types = db.relationship(u'ActionPropertyType', lazy='dynamic')
    group = db.relationship(u'ActionType', remote_side=[id])
    jobType = db.relationship(u'rbJobType', lazy=False)
    tissue_type = db.relationship(
        'ActionType_TissueType',
        primaryjoin=
        'and_(ActionType_TissueType.master_id == ActionType.id, ActionType_TissueType.idx == 0)',
        uselist=False)

    def get_property_type_by_name(self, name):
        return self.property_types.filter(
            ActionPropertyType.name == name).first()

    def get_property_type_by_code(self, code):
        return self.property_types.filter(
            ActionPropertyType.code == code).first()

    def __json__(self):
        return {
            'id': self.id,
            'code': self.code,
            'name': self.name,
            'class': self.class_,
            'flat_code': self.flatCode,
            'title': self.title,
            'context_name': self.context,
        }