class Parceiros(db.Model):
    __tablename__:'parceiros'

    id_geral = db.Column(db.Integer,primary_key=True)

    nivel = db.Column(db.String(100))
    
    nome = db.Column(db.String(100))
    email = db.Column(db.String(100))
    senha = db.Column(db.String(500))

    cpf = db.Column(db.String(50))
    rg = db.Column(db.String(15))

    dt_nascimento = db.Column(db.Date())
    genero = db.Column(db.String(15))
    
    local_trabalho = db.Column(db.String(100))
    cargo = db.Column(db.String(100))
    
    telefone = db.Column(db.String(20))
    lattes = db.Column(db.String(500))
    facebook = db.Column(db.String(500))
    linkedin = db.Column(db.String(500))
    twitter = db.Column(db.String(500))

    def __init__(self,nivel,nome,email,senha,cpf):
        self.nivel = nivel
        self.nome = nome
        self.email = email
        self.senha = senha
        self.cpf = cpf
Example #2
0
class OperationComp(db.Model):
    __tablename__ = 'OperationComp'
    id = db.Column(db.Integer(), primary_key=True)
    clinic_id = db.Column(db.Integer(), db.ForeignKey('Clinic.id'), index=True)
    history_id = db.Column(db.Integer(), db.ForeignKey('History.id'))
    patient_id = db.Column(db.Integer(), db.ForeignKey('Patient.id'))
    operation_id = db.Column(db.Integer(), db.ForeignKey('Operation.id'))
    complication_id = db.Column(db.Integer(), db.ForeignKey('Complication.id'))
    date_begin = db.Column(db.Date())
Example #3
0
class Diagnose(db.Model):
    __tablename__ = 'Diagnose'
    id = db.Column(db.Integer(), primary_key=True)
    clinic_id = db.Column(db.Integer(), db.ForeignKey('Clinic.id'), index=True)
    history_id = db.Column(db.Integer(),
                           db.ForeignKey('History.id'),
                           index=True)
    patient_id = db.Column(db.Integer(), db.ForeignKey('Patient.id'))
    diagnose_item_id = db.Column(db.Integer(),
                                 db.ForeignKey('DiagnoseItem.id'))
    prosthesis_id = db.Column(db.Integer(), db.ForeignKey('Prosthesis.id'))
    side_damage = db.Column(db.String(100))
    date_created = db.Column(db.Date())
class Task(db.Model):
    __tablename__ = 'tasks'
    id = db.Column(db.Integer, primary_key=True)
    name = db.Column(db.String(80))
    done = db.Column(db.Boolean, default=0)
    deadline = db.Column(db.Date())

    def __init__(self, name, done, deadline):
        self.name = name
        self.done = done
        self.deadline = deadline

    def __repr__(self):
        return "[{0}] {1}".format(self.done, self.name)
Example #5
0
class ProfileResponse(db.Model):
    __tablename__ = 'ProfileResponse'
    id = db.Column(db.Integer(), primary_key=True)
    date_value = db.Column(db.Date())
    clinic_id = db.Column(db.Integer(), db.ForeignKey('Clinic.id'), index=True)
    history_id = db.Column(db.Integer(), db.ForeignKey('History.id'))
    patient_id = db.Column(db.Integer(), db.ForeignKey('Patient.id'))
    history_event_id = db.Column(db.Integer(),
                                 db.ForeignKey('HistoryEvent.id'))
    profile_id = db.Column(db.Integer(),
                           db.ForeignKey('Profile.id'),
                           index=True)
    profile_item_id = db.Column(db.Integer(), db.ForeignKey('ProfileItem.id'))
    response = db.Column(db.String(100), unique=False)
    response_value = db.Column(db.Numeric())
class Eventos(db.Model):
    __tablename__: 'eventos'

    id = db.Column(db.Integer, primary_key=True)
    id_atividades = db.Column(db.Integer, db.ForeignKey(Atividades.id))
    id_unidades = db.Column(db.Integer, db.ForeignKey(Unidades.id))
    _data = db.Column(db.Date())
    hora = db.Column(db.Time())
    id_diretor = db.Column(db.Integer, db.ForeignKey(Diretores.id))
    situacao = db.Column(db.Boolean)

    def __init__(self, id_atividades, id_unidades, _data, hora, id_diretor,
                 situacao):
        self.id_atividades = id_atividades
        self.id_unidades = id_unidades
        self._data = _data
        self.hora = hora
        self.id_diretor = id_diretor
        self.situacao = situacao
Example #7
0
class IndicatorValue(db.Model):
    __tablename__ = 'IndicatorValue'
    id = db.Column(db.Integer(), primary_key=True)
    clinic_id = db.Column(db.Integer(), db.ForeignKey('Clinic.id'), index=True)
    history_id = db.Column(db.Integer(),
                           db.ForeignKey('History.id'),
                           index=True)
    patient_id = db.Column(db.Integer(), db.ForeignKey('Patient.id'))
    history_event_id = db.Column(db.Integer(),
                                 db.ForeignKey('HistoryEvent.id'))
    indicator_id = db.Column(db.Integer(), db.ForeignKey('Indicator.id'))
    slice = db.Column(db.String(100))
    time_created = db.Column(db.DateTime(), default=datetime.utcnow())
    date_value = db.Column(db.Date())
    date_time_value = db.Column(db.DateTime())
    text_value = db.Column(db.String(100))
    num_value = db.Column(db.Numeric())
    num_deviation = db.Column(db.Numeric())
    def_value = db.Column(db.Integer())
    comment = db.Column(db.String(500))
    events = db.relationship('HistoryEvent', backref='indicator_values')
class Parceiros(UserMixin, db.Model):
    __tablename__:'parceiros'

    id_geral = db.Column(db.Integer,primary_key=True)

    nivel = db.Column(db.String(100))
    
    nome = db.Column(db.String(100))
    sobrenome = db.Column(db.String(50))

    email = db.Column(db.String(100), unique = True)
    senha = db.Column(db.String(500))

    cpf = db.Column(db.String(50))
    rg = db.Column(db.String(15))

    matricula = db.Column(db.Integer())

    foto_perfil = db.Column(db.String(500))

    dt_nascimento = db.Column(db.Date())
    genero = db.Column(db.String(15))
    
    local_trabalho = db.Column(db.String(100))
    cargo = db.Column(db.String(100))
    
    telefone = db.Column(db.String(20))
    lattes = db.Column(db.String(500))
    facebook = db.Column(db.String(500))
    linkedin = db.Column(db.String(500))
    twitter = db.Column(db.String(500))
    validado = db.Column(db.Boolean)
    termos = db.Column(db.Boolean)

    def __init__(self, nivel, email, senha, validado):
        self.nivel = nivel
        self.email = email
        self.senha = senha
        self.validado = validado
Example #9
0
class Patient(db.Model):
    __tablename__ = 'Patient'
    id = db.Column(db.Integer(), primary_key=True)
    snils_hash = db.Column(db.String(128), unique=False)
    birthdate = db.Column(db.Date())
    sex = db.Column(db.String(1), index=True)
    histories = db.relationship('History', backref='patient')

    #  Создание хэш-значения для СНИЛС
    @staticmethod
    def get_snils_hash(snils):
        digest = md5(snils.lower().encode('utf-8')).hexdigest()
        return digest

#  Проверка наличия пациента в базе

    @staticmethod
    def get_patient_by_snils(digest):
        f_patient = Patient.query.filter(Patient.snils_hash == digest).first()
        if f_patient is None:
            return (None)
        else:
            return (f_patient)
Example #10
0
class History(db.Model):
    __tablename__ = 'History'
    id = db.Column(db.Integer(), primary_key=True)
    clinic_id = db.Column(db.Integer(), db.ForeignKey('Clinic.id'), index=True)
    hist_number = db.Column(db.String(100), unique=False)
    time_created = db.Column(db.DateTime(), default=datetime.utcnow())
    date_in = db.Column(db.Date())
    patient_id = db.Column(db.Integer(), db.ForeignKey('Patient.id'))
    research_group_id = db.Column(db.Integer(),
                                  db.ForeignKey('ResearchGroup.id'),
                                  index=True)
    doctor_researcher_id = db.Column(db.Integer(),
                                     db.ForeignKey('Doctor.id'),
                                     index=True)
    date_research_in = db.Column(db.Date())
    date_research_out = db.Column(db.Date())
    reason_id = db.Column(db.Integer(), db.ForeignKey('Reason.id'))
    diagnoses = db.relationship('Diagnose', backref='history', lazy='dynamic')
    events = db.relationship('HistoryEvent', backref='history', lazy='dynamic')
    operations = db.relationship('Operation',
                                 backref='history',
                                 lazy='dynamic')

    def get_diagnoses(self, **kwargs):
        """
        Выбор диагнозов
        Возвращает все диагнозы
        и отдельно - основной
        Параметры:
        """
        # Выбор диагнозов
        diagnoses = self.diagnoses
        diagnoses_items = []
        main_diagnose = None
        for d in diagnoses:
            diagnose_item = DiagnoseItem.query.get(d.diagnose_item_id)
            item = {}
            item['id'] = d.id
            item['description'] = diagnose_item.description
            item['type'] = diagnose_item.type
            item['mkb10'] = diagnose_item.mkb10
            item['date_created'] = d.date_created
            if diagnose_item.type == 'Основной':
                main_diagnose = d
            diagnoses_items.append(item)

        return ([diagnoses_items, main_diagnose])

    def get_events(self, **kwargs):
        """
        Выбор событий
        Возвращает все события истории болезни
        Параметры:
        Тип события - опционально
        """
        # Выбор событий
        event_type = kwargs.get('type', None)
        if event_type:
            # Задано событие определенного типа
            events = HistoryEvent.query.join(Event, Event.id==HistoryEvent.event_id).\
                            filter(and_(HistoryEvent.history_id==self.id,  Event.type==event_type)).all()
        else:
            events = self.events

        items = []
        for a in events:
            # Пытаемся найти и передать номер госпитализации и операции
            operation_obj = Operation.query.filter_by(
                history_id=self.id).first()

            event_item = Event.query.get(a.event_id)
            item = {}
            item['event'] = a
            item['event_id'] = a.id
            item['event_date'] = a.date_begin
            item['event_date_begin'] = a.date_begin
            item['event_date_end'] = a.date_end
            doctor = Doctor.query.get(a.doctor_id)
            item['doctor'] = doctor.fio
            item['event_name'] = event_item.description
            item['event_type'] = event_item.id
            if operation_obj:
                item['operation_id'] = operation_obj.id
                item['hospital_id'] = operation_obj.hospital_id
            else:
                item['operation_id'] = 0
                item['hospital_id'] = 0

            items.append(item)
        return items

    def get_operations(self):

        items = []
        operations = self.operations

        for o in operations:
            doctor_surgeon = Doctor.query.get(o.doctor_surgeon_id)
            item = {}
            item["id"] = o.id
            item["date"] = date(2012, 1, 1)
            if doctor_surgeon:
                item["doctor_surgeon"] = doctor_surgeon.fio
            else:
                item["doctor_surgeon"] = ''

            items.append(item)

        return items

    def check_history(self, **kwargs):
        """
        Проверка истории болезни 
        Возвращает результаты проверки в виде словаря 
        Параметры:        
        """
        # Проверка 1:
        # В разделе телерентгенографии где отмечаем углы,
        # есть пункт уровень суставной щели ( полученные данные сравниваются с нормой, норма - 0,
        # но нам необходимо сравнивать полученную цифру с цифрой до операции,
        # в графе норма надо чтобы подтягивалось из базы данные до операции
        result_check = {}
        # Получить показатель - Уровень суставной щели по всем событиям истории болезни
        iv_set = IndicatorValue.query.join(HistoryEvent, HistoryEvent.id == IndicatorValue.history_event_id).\
                        filter(and_(IndicatorValue.history_id==self.id,
                                    IndicatorValue.indicator_id==106,
                                    IndicatorValue.slice=='Значение')).all()
        # Значение до операции
        val_ind_before = 0
        for val_ind in iv_set:
            if val_ind.event_id == 3:
                val_ind_before = val_ind.num_value

        # Если значение показателя = 0 то дальнейшие проверки бессмысленны
        #if val_ind_before == 0:
        #    return(result_check)

        # Сравнение значений после операции со значением до операции
        for val_ind in iv_set:
            if val_ind.event_id > 4:
                if val_ind.num_value != val_ind_before:
                    result_check['Indicator'] = val_ind.indicator_id
                    result_check['Event'] = val_ind.indicator_id

        return (result_check)
Example #11
0
class HistoryEvent(db.Model):
    __tablename__ = 'HistoryEvent'
    id = db.Column(db.Integer(), primary_key=True)
    parent_event_id = db.Column(db.Integer(), db.ForeignKey('HistoryEvent.id'))
    clinic_id = db.Column(db.Integer(), db.ForeignKey('Clinic.id'))
    history_id = db.Column(db.Integer(), db.ForeignKey('History.id'))
    patient_id = db.Column(db.Integer(), db.ForeignKey('Patient.id'))
    event_id = db.Column(db.Integer(), db.ForeignKey('Event.id'), index=True)
    date_begin = db.Column(db.Date())
    date_end = db.Column(db.Date())
    doctor_id = db.Column(db.Integer(), db.ForeignKey('Doctor.id'), index=True)
    doctor_researcher_id = db.Column(db.Integer(),
                                     db.ForeignKey('Doctor.id'),
                                     index=True)
    doctor_chief_id = db.Column(db.Integer(),
                                db.ForeignKey('Doctor.id'),
                                index=True)
    days1 = db.Column(db.Integer())  #койко-день
    days2 = db.Column(db.Integer())  #предоперационный койко-день
    days3 = db.Column(db.Integer())  #послеоперационный койко-день

    def get_indicators_values(self, indicator_group, **kwargs):
        """
        Выбор показателей события
        Параметры:
        indicators_group - код группы
        indicators_list - список показателей (опционально)

        """
        indicators_list = kwargs.get('indicators_list', None)

        # Выбор всех показателей из группы
        indicators_values = IndicatorValue.query.join(Indicator, IndicatorValue.indicator_id==Indicator.id).\
                    filter(IndicatorValue.history_event_id==self.id, Indicator.group_id==indicator_group).\
                    order_by(IndicatorValue.id).all()

        items = []
        for i in indicators_values:
            indicator = Indicator.query.get(i.indicator_id)
            if indicators_list and indicator.id not in indicators_list:
                continue
            indicator_norms = IndicatorNorm.query.filter(
                IndicatorNorm.indicator_id == indicator.id).first()
            item = {}
            item['id'] = i.id
            item['indicator'] = i.indicator_id
            item['slice'] = i.slice
            item['description'] = indicator.description
            item['is_calculated'] = indicator.is_calculated
            item['date_value'] = i.date_value
            item['date_time_value'] = i.date_time_value
            item['def_value'] = i.def_value
            if i.num_value == None:
                item['num_value'] = 0
            else:
                if indicator.type == 'integer':
                    item['num_value'] = int(i.num_value)
                else:
                    item['num_value'] = i.num_value
            if i.comment == None:
                item['comment'] = ''
            else:
                item['comment'] = i.comment
            if i.text_value == None:
                item['text_value'] = ''
            else:
                item['text_value'] = i.text_value
            if indicator.unit == None:
                item['unit'] = ''
            else:
                item['unit'] = indicator.unit
            if indicator_norms:
                item['nvalue_from'] = indicator_norms.nvalue_from
                item['nvalue_to'] = indicator_norms.nvalue_from

            items.append(item)

        return (items)