예제 #1
0
class TakenTissueJournal(db.Model):
    __tablename__ = u'TakenTissueJournal'
    __table_args__ = (db.Index(u'period_barcode', u'period', u'barcode'), )

    id = db.Column(db.Integer, primary_key=True)
    client_id = db.Column(db.ForeignKey('Client.id'),
                          nullable=False,
                          index=True)
    tissueType_id = db.Column(db.ForeignKey('rbTissueType.id'),
                              nullable=False,
                              index=True)
    externalId = db.Column(db.String(30), nullable=False)
    amount = db.Column(db.Integer, nullable=False, server_default=u"'0'")
    unit_id = db.Column(db.ForeignKey('rbUnit.id'), index=True)
    datetimeTaken = db.Column(db.DateTime, nullable=False)
    execPerson_id = db.Column(db.ForeignKey('Person.id'), index=True)
    note = db.Column(db.String(128), nullable=False, default='')
    barcode = db.Column(db.Integer, nullable=False)  # set with trigger
    period = db.Column(db.Integer, nullable=False)  # set with trigger

    client = db.relationship(u'Client')
    execPerson = db.relationship(u'Person')
    tissueType = db.relationship(u'rbTissueType')
    unit = db.relationship(u'rbUnit')

    @property
    def barcode_s(self):
        return code128C(self.barcode).decode('windows-1252')
예제 #2
0
class rbTissueType(db.Model):
    __tablename__ = u'rbTissueType'

    id = db.Column(db.Integer, primary_key=True)
    code = db.Column(db.String(64), nullable=False)
    name = db.Column(db.String(128), nullable=False)
    group_id = db.Column(db.ForeignKey('rbTissueType.id'), index=True)
    sexCode = db.Column("sex",
                        db.Integer,
                        nullable=False,
                        server_default=u"'0'")

    group = db.relationship(u'rbTissueType', remote_side=[id])

    @property
    def sex(self):
        return {0: u'Любой', 1: u'М', 2: u'Ж'}[self.sexCode]

    def __json__(self):
        return {
            'id': self.id,
            'code': self.code,
            'name': self.name,
            'sex': self.sex,
        }
예제 #3
0
class ClientWork(db.Model):
    __tablename__ = u'ClientWork'

    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'")
    client_id = db.Column(db.ForeignKey('Client.id'),
                          nullable=False,
                          index=True)
    org_id = db.Column(db.ForeignKey('Organisation.id'), index=True)
    shortName = db.Column('freeInput', db.String(200), nullable=False)
    post = db.Column(db.String(200), nullable=False)
    stage = db.Column(db.Integer, nullable=False)
    OKVED = db.Column(db.String(10), nullable=False)
    version = db.Column(db.Integer, nullable=False)
    rank_id = db.Column(db.Integer, nullable=False)
    arm_id = db.Column(db.Integer, nullable=False)

    client = db.relationship(u'Client')
    organisation = db.relationship(u'Organisation')

    # hurts = db.relationship(u'ClientworkHurt')

    def __unicode__(self):
        parts = []
        if self.shortName:
            parts.append(self.shortName)
        if self.post:
            parts.append(self.post)
        if self.OKVED:
            parts.append(u'ОКВЭД: ' + self._OKVED)
        return ', '.join(parts)
예제 #4
0
class OrgStructure_HospitalBed(db.Model):
    __tablename__ = u'OrgStructure_HospitalBed'

    id = db.Column(db.Integer, primary_key=True)
    master_id = db.Column(db.Integer,
                          db.ForeignKey('OrgStructure.id'),
                          nullable=False,
                          index=True)
    idx = db.Column(db.Integer, nullable=False, server_default=u"'0'")
    code = db.Column(db.String(16), nullable=False, server_default=u"''")
    name = db.Column(db.String(64), nullable=False, server_default=u"''")
    isPermanentCode = db.Column("isPermanent",
                                db.Integer,
                                nullable=False,
                                server_default=u"'0'")
    type_id = db.Column(db.Integer,
                        db.ForeignKey('rbHospitalBedType.id'),
                        index=True)
    profile_id = db.Column(db.Integer,
                           db.ForeignKey('rbHospitalBedProfile.id'),
                           index=True)
    relief = db.Column(db.Integer, nullable=False, server_default=u"'0'")
    schedule_id = db.Column(db.Integer,
                            db.ForeignKey('rbHospitalBedSchedule.id'),
                            index=True)
    begDate = db.Column(db.Date)
    endDate = db.Column(db.Date)
    sex = db.Column(db.Integer, nullable=False, server_default=u"'0'")
    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)
    involution = db.Column(db.Integer, nullable=False, server_default=u"'0'")
    begDateInvolute = db.Column(db.Date)
    endDateInvolute = db.Column(db.Date)

    orgStructure = db.relationship(u'OrgStructure')
    type = db.relationship(u'rbHospitalBedType')
    profile = db.relationship(u'rbHospitalBedProfile')
    schedule = db.relationship(u'rbHospitalBedSchedule')

    def __json__(self):
        return {
            'id': self.id,
            'org_structure_id': self.master_id,
            'code': self.code,
            'name': self.name,
            'type': self.type,
            'profile': self.profile,
            'schedule': self.schedule
        }

    @property
    def isPermanent(self):
        return self.isPermanentCode == 1
예제 #5
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'")
예제 #6
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
예제 #7
0
class rbOperationType(db.Model):
    __tablename__ = u'rbOperationType'

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

    def __json__(self):
        return {
            'id': self.id,
            'code': self.code,
            'name': self.name,
        }
예제 #8
0
class rbScene(db.Model):
    __tablename__ = u'rbScene'

    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)
    serviceModifier = db.Column(db.Unicode(128), nullable=False)
예제 #9
0
class EventPayment(db.Model):
    __tablename__ = 'Event_Payment'

    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, default=0)
    master_id = db.Column(db.Integer, db.ForeignKey('Event.id'))
    date = db.Column(db.Date, nullable=False)
    cashOperation_id = db.Column(db.ForeignKey('rbCashOperation.id'),
                                 index=True)
    sum = db.Column(db.Float(asdecimal=True), nullable=False)
    typePayment = db.Column(db.Integer, nullable=False)
    settlementAccount = db.Column(db.String(64))
    bank_id = db.Column(db.Integer, index=True)
    numberCreditCard = db.Column(db.String(64))
    cashBox = db.Column(db.String(32), nullable=False)
    sumDiscount = db.Column(db.Float(asdecimal=True), nullable=False)
    action_id = db.Column(db.Integer, db.ForeignKey('Action.id'))
    service_id = db.Column(db.Integer, db.ForeignKey('rbService.id'))
    localContract_id = db.Column(db.Integer,
                                 db.ForeignKey('Event_LocalContract.id'))

    cashOperation = db.relationship(u'rbCashOperation')

    def __json__(self):
        return {
            'id': self.id,
            'date': self.date,
            'sum': self.sum,
            'sum_discount': self.sumDiscount,
            'action_id': self.action_id,
            'service_id': self.service_id,
            'localContract_id': self.localContract_id,
        }
예제 #10
0
class AddressHouse(db.Model):
    __tablename__ = u'AddressHouse'
    __table_args__ = (db.Index(u'KLADRCode', u'KLADRCode', u'KLADRStreetCode',
                               u'number', u'corpus'), )

    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,
                        default=0,
                        server_default=u"'0'")
    KLADRCode = db.Column(db.String(13), nullable=False)
    KLADRStreetCode = db.Column(db.String(17), nullable=False)
    number = db.Column(db.String(8), nullable=False)
    corpus = db.Column(db.String(8), nullable=False)

    def __init__(self, loc_code, street_code, house_number, corpus_number):
        self.KLADRCode = loc_code
        self.KLADRStreetCode = street_code
        self.number = house_number
        self.corpus = corpus_number

    def __json__(self):
        return {
            'id': self.id,
            'deleted': self.deleted,
            'locality_code': self.KLADRCode,
            'street_code': self.KLADRStreetCode,
            'number': self.number,
            'corpus': self.corpus
        }

    def __int__(self):
        return self.id
예제 #11
0
class Diagnosis(db.Model):
    __tablename__ = u'Diagnosis'

    id = db.Column(db.Integer, primary_key=True)
    createDatetime = db.Column(db.DateTime, nullable=False)
    createPerson_id = db.Column(db.ForeignKey('Person.id'), index=True)
    modifyDatetime = db.Column(db.DateTime, nullable=False)
    modifyPerson_id = db.Column(db.ForeignKey('Person.id'), index=True)
    deleted = db.Column(db.Integer, nullable=False, server_default=u"'0'")
    client_id = db.Column(db.ForeignKey('Client.id'),
                          index=True,
                          nullable=False)
    diagnosisType_id = db.Column(db.ForeignKey('rbDiagnosisType.id'),
                                 index=True,
                                 nullable=False)
    character_id = db.Column(db.ForeignKey('rbDiseaseCharacter.id'),
                             index=True)
    MKB = db.Column(db.String(8), db.ForeignKey('MKB.DiagID'), index=True)
    MKBEx = db.Column(db.String(8), db.ForeignKey('MKB.DiagID'), index=True)
    dispanser_id = db.Column(db.ForeignKey('rbDispanser.id'), index=True)
    traumaType_id = db.Column(db.ForeignKey('rbTraumaType.id'), index=True)
    setDate = db.Column(db.Date)
    endDate = db.Column(db.Date)
    mod_id = db.Column(db.ForeignKey('Diagnosis.id'), index=True)
    person_id = db.Column(db.ForeignKey('Person.id'), index=True)
    # diagnosisName = db.Column(db.String(64), nullable=False)

    createPerson = db.relationship('Person', foreign_keys=[createPerson_id])
    modifyPerson = db.relationship('Person', foreign_keys=[modifyPerson_id])
    person = db.relationship('Person',
                             foreign_keys=[person_id],
                             lazy=False,
                             innerjoin=True)
    client = db.relationship('Client')
    diagnosisType = db.relationship('rbDiagnosisType',
                                    lazy=False,
                                    innerjoin=True)
    character = db.relationship('rbDiseaseCharacter', lazy=False)
    mkb = db.relationship('MKB', foreign_keys=[MKB])
    mkb_ex = db.relationship('MKB', foreign_keys=[MKBEx])
    dispanser = db.relationship('rbDispanser', lazy=False)
    mod = db.relationship('Diagnosis', remote_side=[id])
    traumaType = db.relationship('rbTraumaType', lazy=False)

    def __int__(self):
        return self.id
예제 #12
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
예제 #13
0
class JobTicket(db.Model):
    __tablename__ = u'Job_Ticket'

    id = db.Column(db.Integer, primary_key=True)
    master_id = db.Column(db.Integer,
                          db.ForeignKey('Job.id'),
                          nullable=False,
                          index=True)
    idx = db.Column(db.Integer, nullable=False, server_default=u"'0'")
    datetime = db.Column(db.DateTime, nullable=False)
    resTimestamp = db.Column(db.DateTime)
    resConnectionId = db.Column(db.Integer)
    status = db.Column(db.Integer, nullable=False, server_default=u"'0'")
    begDateTime = db.Column(db.DateTime)
    endDateTime = db.Column(db.DateTime)
    label = db.Column(db.String(64), nullable=False, server_default=u"''")
    note = db.Column(db.String(128), nullable=False, server_default=u"''")

    job = db.relationship(u'Job')

    @property
    def jobType(self):
        return self.job.job_type

    @property
    def orgStructure(self):
        return self.job.org_structure

    def __unicode__(self):
        return u'%s, %s, %s' % (unicode(self.jobType), unicode(
            self.datetime), unicode(self.orgStructure))

    def __json__(self):
        return {
            'id': self.id,
            'job': self.job,
            'datetime': self.datetime,
            'status': self.status,
            'beg_datetime': self.begDateTime,
            'end_datetime': self.endDateTime,
            'label': self.label,
            'note': self.note,
        }
예제 #14
0
class rbAnalysisStatus(db.Model):
    __tablename__ = u'rbAnalysisStatus'

    id = db.Column(db.Integer, primary_key=True)
    statusName = db.Column(db.String(80), nullable=False, unique=True)

    def __json__(self):
        return {
            'id': self.id,
            'code': self.statusName,
            'name': self.statusName
        }
예제 #15
0
class ActionTemplate(db.Model):
    __tablename__ = u'ActionTemplate'

    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)
    group_id = db.Column(db.Integer, index=True)
    code = db.Column(db.String(64), nullable=False)
    name = db.Column(db.String(255), nullable=False)
    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)
    owner_id = db.Column(db.Integer, index=True)
    speciality_id = db.Column(db.Integer, index=True)
    action_id = db.Column(db.Integer, index=True)
예제 #16
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,
        }
예제 #17
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)
예제 #18
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,
        }
예제 #19
0
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)
예제 #20
0
class ClientIdentification(db.Model):
    __tablename__ = u'ClientIdentification'
    __table_args__ = (db.Index(u'accountingSystem_id', u'accountingSystem_id',
                               u'identifier'), )

    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'")
    client_id = db.Column(db.ForeignKey('Client.id'),
                          nullable=False,
                          index=True)
    accountingSystem_id = db.Column(db.Integer,
                                    db.ForeignKey('rbAccountingSystem.id'),
                                    nullable=False)
    identifier = db.Column(db.String(16), nullable=False)
    checkDate = db.Column(db.Date)
    version = db.Column(db.Integer, nullable=False)

    accountingSystems = db.relationship(u'rbAccountingSystem', lazy=False)

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

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

    def __json__(self):
        return {
            'id': self.id,
            'accounting_system': self.accountingSystems,
            'identifier': self.identifier,
            'chechDate': self.checkDate,
        }

    def __int__(self):
        return self.id
예제 #21
0
class EventType_Action(db.Model):
    __tablename__ = u'EventType_Action'

    id = db.Column(db.Integer, primary_key=True)
    eventType_id = db.Column(db.Integer,
                             db.ForeignKey('EventType.id'),
                             nullable=False,
                             index=True)
    idx = db.Column(db.Integer, nullable=False, server_default=u"'0'")
    actionType_id = db.Column(db.Integer,
                              db.ForeignKey('ActionType.id'),
                              nullable=False,
                              index=True)
    speciality_id = db.Column(db.Integer, index=True)
    tissueType_id = db.Column(db.Integer,
                              db.ForeignKey('rbTissueType.id'),
                              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)
    selectionGroup = db.Column(db.Integer,
                               nullable=False,
                               server_default=u"'0'")
    actuality = db.Column(db.Integer, nullable=False)
    expose = db.Column(db.Integer, nullable=False, server_default=u"'1'")
    payable = db.Column(db.Integer, nullable=False, server_default=u"'0'")
    academicDegree_id = db.Column(db.Integer,
                                  db.ForeignKey('rbAcademicDegree.id'))

    actionType = db.relationship('ActionType')

    def __json__(self):
        return {'id': self.id}

    def __int__(self):
        return self.id
예제 #22
0
class ActionPropertyTemplate(db.Model):
    __tablename__ = u'ActionPropertyTemplate'

    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)
    group_id = db.Column(db.Integer, index=True)
    parentCode = db.Column(db.String(20), nullable=False)
    code = db.Column(db.String(64), nullable=False, index=True)
    federalCode = db.Column(db.String(64), nullable=False, index=True)
    regionalCode = db.Column(db.String(64), nullable=False)
    name = db.Column(db.String(120), nullable=False, index=True)
    abbrev = db.Column(db.String(64), nullable=False)
    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)
    service_id = db.Column(db.Integer, index=True)
예제 #23
0
class ActionPropertyType(db.Model):

    __tablename__ = u'ActionPropertyType'

    id = db.Column(db.Integer, primary_key=True)
    deleted = db.Column(db.Integer, nullable=False, server_default=u"'0'")
    actionType_id = db.Column(db.Integer,
                              db.ForeignKey('ActionType.id'),
                              nullable=False,
                              index=True)
    idx = db.Column(db.Integer, nullable=False, server_default=u"'0'")
    template_id = db.Column(db.ForeignKey('ActionPropertyTemplate.id'),
                            index=True)
    name = db.Column(db.String(128), nullable=False)
    descr = db.Column(db.String(128), nullable=False)
    unit_id = db.Column(db.Integer, db.ForeignKey('rbUnit.id'), index=True)
    typeName = db.Column(db.String(64), nullable=False)
    valueDomain = db.Column(db.Text, nullable=False)
    defaultValue = db.Column(db.String(5000), nullable=False)
    isVector = db.Column(db.Integer, nullable=False, server_default=u"'0'")
    norm = db.Column(db.String(64), nullable=False)
    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)
    penalty = db.Column(db.Integer, nullable=False, server_default=u"'0'")
    visibleInJobTicket = db.Column(db.Integer,
                                   nullable=False,
                                   server_default=u"'0'")
    isAssignable = db.Column(db.Integer, nullable=False, server_default=u"'0'")
    test_id = db.Column(db.Integer, index=True)
    defaultEvaluation = db.Column(db.Integer,
                                  nullable=False,
                                  server_default=u"'0'")
    toEpicrisis = db.Column(db.Integer, nullable=False, server_default=u"'0'")
    code = db.Column(db.String(25), index=True)
    mandatory = db.Column(db.Integer, nullable=False, server_default=u"'0'")
    readOnly = db.Column(db.Integer, nullable=False, server_default=u"'0'")
    createDatetime = db.Column(db.DateTime, nullable=False, index=True)
    createPerson_id = db.Column(db.Integer)
    modifyDatetime = db.Column(db.DateTime, nullable=False)
    modifyPerson_id = db.Column(db.Integer)

    unit = db.relationship('rbUnit')
    template = db.relationship('ActionPropertyTemplate')

    def __json__(self):
        result = {
            'id': self.id,
            'name': self.name,
            'code': self.code,
            'domain': self.valueDomain,
            'is_assignable': self.isAssignable,
            'ro': self.readOnly,
            'mandatory': self.mandatory,
            'type_name': self.typeName,
            'unit': self.unit,
            'vector': bool(self.isVector),
        }
        if self.typeName == 'String':
            if self.valueDomain:
                result['values'] = [
                    choice.strip('\' *')
                    for choice in self.valueDomain.split(',')
                ]
        return result
예제 #24
0
class ClientDocument(db.Model):
    __tablename__ = 'ClientDocument'
    __table_args__ = (db.Index(u'Ser_Numb', u'serial', u'number'), )

    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,
                         index=True)
    documentType_id = db.Column(db.Integer,
                                db.ForeignKey('rbDocumentType.id'),
                                nullable=False,
                                index=True)
    serial = db.Column(db.String(8), nullable=False)
    number = db.Column(db.String(16), nullable=False)
    date = db.Column(db.Date, nullable=False)
    origin = db.Column(db.String(256), nullable=False)
    version = db.Column(db.Integer, nullable=False, default=0)
    endDate = db.Column(db.Date)

    documentType = db.relationship(u'rbDocumentType', lazy=False)

    def __init__(self, doc_type, serial, number, beg_date, end_date, origin,
                 client):
        self.documentType_id = int(doc_type) if doc_type else None
        self.serial = serial
        self.number = number
        self.date = beg_date
        self.endDate = end_date
        self.origin = origin
        self.client = client

    @property
    def documentTypeCode(self):
        return self.documentType.regionalCode

    @property
    def serial_left(self):
        try:
            sl = self.serial.split(' ')[0]
        except (AttributeError, IndexError):
            sl = None
        return sl

    @property
    def serial_right(self):
        try:
            sr = self.serial.split(' ')[1]
        except (AttributeError, IndexError):
            sr = None
        return sr

    def __unicode__(self):
        return (' '.join(
            [getattr(self.documentType, 'name', ''), self.serial,
             self.number])).strip()

    def __json__(self):
        return {
            'id': self.id,
            'doc_type': self.documentType,
            'deleted': self.deleted,
            'serial': self.serial,
            'number': self.number,
            'beg_date': self.date,
            'end_date': self.endDate,
            'origin': self.origin,
            'doc_text': self.__unicode__(),
        }

    def __int__(self):
        return self.id
예제 #25
0
class Action(db.Model):
    __tablename__ = u'Action'

    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'")
    actionType_id = db.Column(db.Integer,
                              db.ForeignKey('ActionType.id'),
                              nullable=False,
                              index=True)
    event_id = db.Column(db.Integer, db.ForeignKey('Event.id'), index=True)
    idx = db.Column(db.Integer, nullable=False, server_default=u"'0'")
    directionDate = db.Column(db.DateTime)
    status = db.Column(db.Integer, nullable=False)
    setPerson_id = db.Column(db.Integer,
                             db.ForeignKey('Person.id'),
                             index=True)
    isUrgent = db.Column(db.Boolean, nullable=False, server_default=u"'0'")
    begDate = db.Column(db.DateTime)
    plannedEndDate = db.Column(db.DateTime, nullable=False)
    endDate = db.Column(db.DateTime)
    note = db.Column(db.Text, nullable=False, default='')
    person_id = db.Column(db.Integer, db.ForeignKey('Person.id'), index=True)
    office = db.Column(db.String(16), nullable=False, default='')
    amount = db.Column(db.Float(asdecimal=True), nullable=False)
    uet = db.Column(db.Float(asdecimal=True), server_default=u"'0'")
    expose = db.Column(db.Boolean, nullable=False, server_default=u"'1'")
    payStatus = db.Column(db.Integer, nullable=False, default=0)
    account = db.Column(db.Boolean, nullable=False, default=0)
    finance_id = db.Column(db.Integer,
                           db.ForeignKey('rbFinance.id'),
                           index=True)
    prescription_id = db.Column(db.Integer, index=True)
    takenTissueJournal_id = db.Column(db.ForeignKey('TakenTissueJournal.id'),
                                      index=True)
    contract_id = db.Column(db.Integer, index=True)
    coordDate = db.Column(db.DateTime)
    coordPerson_id = db.Column(db.Integer,
                               db.ForeignKey('Person.id'),
                               index=True)
    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, default='')
    hospitalUidFrom = db.Column(db.String(128),
                                nullable=False,
                                server_default=u"'0'")
    pacientInQueueType = db.Column(db.Integer, server_default=u"'0'")
    AppointmentType = db.Column(db.Enum(u'0', u'amb', u'hospital',
                                        u'polyclinic', u'diagnostics',
                                        u'portal', u'otherLPU'),
                                nullable=False,
                                default=u'0')
    version = db.Column(db.Integer, nullable=False, server_default=u"'0'")
    parentAction_id = db.Column(db.Integer, index=True)
    uuid_id = db.Column(db.ForeignKey('UUID.id'),
                        nullable=False,
                        index=True,
                        server_default=u"'0'")
    dcm_study_uid = db.Column(db.String(50))

    actionType = db.relationship(u'ActionType')
    event = db.relationship(u'Event')
    person = db.relationship(u'Person', foreign_keys='Action.person_id')
    setPerson = db.relationship(u'Person', foreign_keys='Action.setPerson_id')
    coordPerson = db.relationship(u'Person',
                                  foreign_keys='Action.coordPerson_id')
    takenTissueJournal = db.relationship(u'TakenTissueJournal')
    # tissues = db.relationship(u'Tissue', secondary=u'ActionTissue')
    properties = db.relationship(u'ActionProperty')
    self_finance = db.relationship(u'rbFinance')
    uuid = db.relationship('UUID')
예제 #26
0
class ActionProperty(db.Model):
    __tablename__ = u'ActionProperty'

    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'")
    action_id = db.Column(db.Integer,
                          db.ForeignKey('Action.id'),
                          nullable=False,
                          index=True)
    type_id = db.Column(db.Integer,
                        db.ForeignKey('ActionPropertyType.id'),
                        nullable=False,
                        index=True)
    unit_id = db.Column(db.Integer, db.ForeignKey('rbUnit.id'), index=True)
    norm = db.Column(db.String(64), nullable=False, default='')
    isAssigned = db.Column(db.Boolean, nullable=False, server_default=u"'0'")
    evaluation = db.Column(db.Integer, default=None)
    version = db.Column(db.Integer, nullable=False, server_default=u"'0'")

    action = db.relationship(u'Action')
    type = db.relationship(u'ActionPropertyType', lazy=False, innerjoin=True)
    unit = db.relationship(u'rbUnit', lazy=False)

    def __get_property_name(self):
        type_name = self.type.typeName
        if type_name in ["Constructor", u"Жалобы", 'Text', 'Html']:
            class_name = 'String'
        elif type_name == u"Запись в др. ЛПУ":
            class_name = 'OtherLPURecord'
        elif type_name == "FlatDirectory":
            class_name = 'FDRecord'
        else:
            class_name = type_name
        return '_value_{0}'.format(class_name)

    @property
    def value_object(self):
        return getattr(self, self.__get_property_name())

    @value_object.setter
    def value_object(self, value):
        setattr(self, self.__get_property_name(), value)

    @property
    def value(self):
        value_object = self.value_object
        if not value_object:
            return None
        if self.type.isVector:
            return [item.value for item in value_object]
        else:
            return value_object[0].value

    @value.setter
    def value(self, value):
        self.set_value(value)

    def set_value(self, value, raw=False):
        value_object = self.value_object
        # Следующая магия вытаскивает класс, ассоциированный с backref-пропертей, созданной этим же классом у нашего
        # ActionProperty. Объекты этого класса мы будем создавать для значений
        value_class = getattr(
            self.__class__, self.__get_property_name()).property.mapper.class_

        def set_value(val_object, value):
            if raw and hasattr(val_object, 'value_'):
                val_object.value_ = value
            else:
                val_object.value = value

        def make_value(value, index=0):
            val = value_class()
            set_value(val, value)
            val.index = index
            val.property_object = self
            db.session.add(val)
            return val

        if not self.type.isVector:
            if len(value_object) == 0:
                if value is not None:
                    value_object.append(make_value(value))
            else:
                if value is None:
                    db.session.delete(value_object[0])
                else:
                    set_value(value_object[0], value)
        else:
            m = min(len(value_object), len(value))
            for i in xrange(m):
                value_object[i].value = value[i]
            if len(value_object) < len(value):
                for i in xrange(m, len(value)):
                    value_object.append(make_value(value[i], i))
            elif len(value_object) > len(value):
                for i in xrange(len(value_object) - 1, m - 1, -1):
                    db.session.delete(value_object[i])

    def __json__(self):
        return {
            'id': self.id,
            'idx': self.type.idx,
            'type': self.type,
            'is_assigned': self.isAssigned,
            'value': self.value,
        }
예제 #27
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
예제 #28
0
class EventType(db.Model):
    __tablename__ = u'EventType'

    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'")
    code = db.Column(db.String(8), nullable=False, index=True)
    name = db.Column(db.String(64), nullable=False)
    purpose_id = db.Column(db.Integer,
                           db.ForeignKey('rbEventTypePurpose.id'),
                           index=True)
    finance_id = db.Column(db.Integer,
                           db.ForeignKey('rbFinance.id'),
                           index=True)
    scene_id = db.Column(db.ForeignKey('rbScene.id'), index=True)
    visitServiceModifier = db.Column(db.String(128), nullable=False)
    visitServiceFilter = db.Column(db.String(32), nullable=False)
    visitFinance = db.Column(db.Integer, nullable=False, server_default=u"'0'")
    actionFinance = db.Column(db.Integer,
                              nullable=False,
                              server_default=u"'0'")
    period = db.Column(db.Integer, nullable=False)
    singleInPeriod = db.Column(db.Integer, nullable=False)
    isLong = db.Column(db.Integer, nullable=False, server_default=u"'0'")
    dateInput = db.Column(db.Integer, nullable=False, server_default=u"'0'")
    service_id = db.Column(db.Integer,
                           db.ForeignKey('rbService.id'),
                           index=True)
    printContext = db.Column("context", db.String(64), nullable=False)
    form = db.Column(db.String(64), nullable=False)
    minDuration = db.Column(db.Integer, nullable=False, server_default=u"'0'")
    maxDuration = db.Column(db.Integer, nullable=False, server_default=u"'0'")
    showStatusActionsInPlanner = db.Column(db.Integer,
                                           nullable=False,
                                           server_default=u"'1'")
    showDiagnosticActionsInPlanner = db.Column(db.Integer,
                                               nullable=False,
                                               server_default=u"'1'")
    showCureActionsInPlanner = db.Column(db.Integer,
                                         nullable=False,
                                         server_default=u"'1'")
    showMiscActionsInPlanner = db.Column(db.Integer,
                                         nullable=False,
                                         server_default=u"'1'")
    limitStatusActionsInput = db.Column(db.Integer,
                                        nullable=False,
                                        server_default=u"'0'")
    limitDiagnosticActionsInput = db.Column(db.Integer,
                                            nullable=False,
                                            server_default=u"'0'")
    limitCureActionsInput = db.Column(db.Integer,
                                      nullable=False,
                                      server_default=u"'0'")
    limitMiscActionsInput = db.Column(db.Integer,
                                      nullable=False,
                                      server_default=u"'0'")
    showTime = db.Column(db.Integer, nullable=False, server_default=u"'0'")
    medicalAidType_id = db.Column(db.Integer, index=True)
    eventProfile_id = db.Column(db.Integer, index=True)
    mesRequired = db.Column(db.Integer, nullable=False, server_default=u"'0'")
    mesCodeMask = db.Column(db.String(64), server_default=u"''")
    mesNameMask = db.Column(db.String(64), server_default=u"''")
    counter_id = db.Column(db.ForeignKey('rbCounter.id'), index=True)
    isExternal = db.Column(db.Integer, nullable=False, server_default=u"'0'")
    isAssistant = db.Column(db.Integer, nullable=False, server_default=u"'0'")
    isCurator = db.Column(db.Integer, nullable=False, server_default=u"'0'")
    canHavePayableActions = db.Column(db.Integer,
                                      nullable=False,
                                      server_default=u"'0'")
    isRequiredCoordination = db.Column(db.Integer,
                                       nullable=False,
                                       server_default=u"'0'")
    isOrgStructurePriority = db.Column(db.Integer,
                                       nullable=False,
                                       server_default=u"'0'")
    isTakenTissue = db.Column(db.Integer,
                              nullable=False,
                              server_default=u"'0'")
    sex = db.Column(db.Integer, nullable=False, server_default=u"'0'")
    age = db.Column(db.String(9), nullable=False)
    rbMedicalKind_id = db.Column(db.ForeignKey('rbMedicalKind.id'), index=True)
    age_bu = db.Column(db.Integer)
    age_bc = db.Column(db.SmallInteger)
    age_eu = db.Column(db.Integer)
    age_ec = db.Column(db.SmallInteger)
    requestType_id = db.Column(db.Integer, db.ForeignKey('rbRequestType.id'))

    counter = db.relationship(u'rbCounter')
    rbMedicalKind = db.relationship(u'rbMedicalKind')
    purpose = db.relationship(u'rbEventTypePurpose')
    finance = db.relationship(u'rbFinance')
    service = db.relationship(u'rbService')
    requestType = db.relationship(u'rbRequestType', lazy=False)
    scene = db.relationship(u'rbScene')

    @classmethod
    def get_default_et(cls):
        """Тип события (обращения по умолчанию).
        Должно браться из настроек, а сейчас это поликлиника(бюджет) -
        EventType.code = '09'

        """
        return cls.query.filter_by(code='09').first()

    def __json__(self):
        return {
            'id': self.id,
            'code': self.code,
            'name': self.name,
            'purpose': self.purpose,
            'finance': self.finance,
            'print_context': self.printContext,
            'form': self.form,
            'mes': {
                'required': self.mesRequired,
                'code_mask': self.mesCodeMask,
                'name_mask': self.mesNameMask,
            },
            'restrictions': AgeSex(self),
            'medical_kind': self.rbMedicalKind,
            'service': self.service,
            'request_type': self.requestType,
        }

    def __int__(self):
        return self.id
예제 #29
0
class Event(db.Model):
    __tablename__ = u'Event'

    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)
    externalId = db.Column(db.String(30), nullable=False)
    eventType_id = db.Column(db.Integer,
                             db.ForeignKey('EventType.id'),
                             nullable=False,
                             index=True)
    org_id = db.Column(db.Integer, db.ForeignKey('Organisation.id'))
    client_id = db.Column(db.Integer, db.ForeignKey('Client.id'), index=True)
    contract_id = db.Column(db.Integer,
                            db.ForeignKey('Contract.id'),
                            index=True)
    prevEventDate = db.Column(db.DateTime)
    setDate = db.Column(db.DateTime, nullable=False, index=True)
    setPerson_id = db.Column(db.Integer, index=True)
    execDate = db.Column(db.DateTime, index=True)
    execPerson_id = db.Column(db.Integer,
                              db.ForeignKey('Person.id'),
                              index=True)
    isPrimaryCode = db.Column("isPrimary", db.Integer, nullable=False)
    order = db.Column(db.Integer, nullable=False)
    result_id = db.Column(db.Integer, db.ForeignKey('rbResult.id'), index=True)
    nextEventDate = db.Column(db.DateTime)
    payStatus = db.Column(db.Integer, nullable=False)
    typeAsset_id = db.Column(db.Integer,
                             db.ForeignKey('rbEmergencyTypeAsset.id'),
                             index=True)
    note = db.Column(db.Text, nullable=False, default='')
    curator_id = db.Column(db.Integer, db.ForeignKey('Person.id'), index=True)
    assistant_id = db.Column(db.Integer,
                             db.ForeignKey('Person.id'),
                             index=True)
    pregnancyWeek = db.Column(db.Integer,
                              nullable=False,
                              server_default=u"'0'",
                              default=0)
    MES_id = db.Column(db.Integer, index=True)
    mesSpecification_id = db.Column(db.ForeignKey('rbMesSpecification.id'),
                                    index=True)
    rbAcheResult_id = db.Column(db.ForeignKey('rbAcheResult.id'), index=True)
    version = db.Column(db.Integer,
                        nullable=False,
                        server_default=u"'0'",
                        default=0)
    privilege = db.Column(db.Integer, server_default=u"'0'")
    urgent = db.Column(db.Integer, server_default=u"'0'")
    orgStructure_id = db.Column(db.Integer, db.ForeignKey('OrgStructure.id'))
    uuid_id = db.Column(db.Integer,
                        db.ForeignKey('UUID.id'),
                        nullable=False,
                        index=True,
                        server_default=u"'0'")
    lpu_transfer = db.Column(db.String(100))
    localContract_id = db.Column(db.Integer,
                                 db.ForeignKey('Event_LocalContract.id'))

    actions = db.relationship(
        u'Action',
        primaryjoin="and_(Action.event_id == Event.id, Action.deleted == 0)")
    eventType = db.relationship(u'EventType')
    execPerson = db.relationship(u'Person', foreign_keys='Event.execPerson_id')
    curator = db.relationship(u'Person', foreign_keys='Event.curator_id')
    assistant = db.relationship(u'Person', foreign_keys='Event.assistant_id')
    contract = db.relationship(u'Contract')
    organisation = db.relationship(u'Organisation')
    orgStructure = db.relationship('OrgStructure')
    mesSpecification = db.relationship(u'rbMesSpecification')
    rbAcheResult = db.relationship(u'rbAcheResult')
    result = db.relationship(u'rbResult')
    typeAsset = db.relationship(u'rbEmergencyTypeAsset')
    localContract = db.relationship(u'EventLocalContract',
                                    backref=db.backref('event'))
    payments = db.relationship('EventPayment', backref=db.backref('event'))
    client = db.relationship(u'Client')
    diagnostics = db.relationship(
        u'Diagnostic',
        lazy=True,
        innerjoin=True,
        primaryjoin=
        "and_(Event.id == Diagnostic.event_id, Diagnostic.deleted == 0)")
    visits = db.relationship(
        u'Visit',
        primaryjoin="and_(Event.id == Visit.event_id, Visit.deleted == 0)")
    uuid = db.relationship('UUID')

    @property
    def payer_required(self):
        # FIXME: перенести из application.lib.utils загрузку ролей и прав в app.py
        # тогда должны заработать нормальные импорты из utils.py
        from application.lib.utils import safe_traverse_attrs
        return safe_traverse_attrs(self.eventType, 'finance',
                                   'code') in PAYER_EVENT_CODES

    @property
    def isPrimary(self):
        return self.isPrimaryCode == 1

    @property
    def finance(self):
        return self.eventType.finance

    @property
    def departmentManager(self):
        return Person.join(rbPost).filter(
            Person.orgStructure_id == self.orgStructure_id,
            rbPost.flatCode == u'departmentManager').first()

    @property
    def current_org_structure(self):
        """ Get OrgStructure
        :return: current location of patient
        :rtype: application.models.exists.OrgStructure
        """
        from .actions import ActionProperty_OrgStructure, ActionProperty, ActionType, Action
        from .exists import OrgStructure
        if self.orgStructure_id:
            return self.orgStructure
        prop = ActionProperty_OrgStructure.query.join(
            ActionProperty, ActionType, Action).filter(
                Action.event == self,
                Action.status < 2,
                ActionType.flatCode == 'moving',
            ).orderby(Action.begDate.desc()).first()
        if not prop:
            return None
        return OrgStructure.query.get(prop.value)

    @property
    def date(self):
        date = self.execDate if self.execDate is not None else datetime.date.today(
        )
        return date

    def __unicode__(self):
        return unicode(self.eventType)

    def __int__(self):
        return self.id
예제 #30
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,
        }