Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- class BaseDevicesClass(models.Model):
- user = models.ForeignKey(Patient,on_delete=models.CASCADE, default=0)
- datetime = models.DateTimeField('Время измерения', db_index=True)
- sync_datetime = models.DateTimeField('Время получения измерения')
- android_mac = models.ForeignKey(Android,on_delete=models.CASCADE, default=0)
- class WristbandHR(BaseDevicesClass):
- HR = models.IntegerField('Пульс')
- class WristbandBO(BaseDevicesClass):
- BO = models.IntegerField('Уровень кислорода', default=0)
- ========== Показания с браслета ====================
- class Patient(models.Model):
- """Пациент"""
- phone_regex = RegexValidator(regex=r'^\+7\d{11}$')
- user = models.OneToOneField(User, related_name='profile',null=True,on_delete=models.CASCADE)
- email = models.EmailField('E-mail',unique=True,null=True)
- surname = models.CharField('Фамилия', max_length=32, db_index=True)
- name = models.CharField('Имя', max_length=32)
- patronymic = models.CharField('Отчество', max_length=32)
- birth_date = models.DateField('Дата рождения',null=True)
- OMS = models.CharField('Номер полиса ОМС', max_length=16)
- phone_number = models.CharField('Номер телефона',blank=True, max_length=12)
- relatives_phone_number = models.CharField('Номер телефона родственника', validators=[phone_regex], max_length=12, blank=True)
- # address = models.CharField('Адрес проживания', max_length=128)
- registration_address = models.CharField('Адрес регистрации', max_length=128)
- state = models.TextField('Состояние')
- """Personal data"""
- gender = models.ForeignKey(Gender,verbose_name='Пол', null=True, on_delete=models.CASCADE)
- type_blood = models.ForeignKey(Blod_Type, verbose_name='Тип крови', null=True,on_delete=models.CASCADE)
- weight = models.FloatField('Вес', null=True)
- growth = models.FloatField('Рост', null=True)
- """Patient addres"""
- place_of_residence = models.ForeignKey(Patient_Address, null=True,verbose_name='Адрес прописки', related_name='place_of_residence',on_delete=models.SET_NULL)
- residence_address = models.ForeignKey(Patient_Address, null=True,verbose_name='Адрес проживания',related_name='residence_address',on_delete=models.SET_NULL)
- information_about_work = models.ForeignKey(Patient_Address, null=True,verbose_name='Адрес проживания',related_name='information_about_work',on_delete=models.SET_NULL)
- """Citizenship"""
- сitizenship = models.CharField('Гражданство', max_length=150,blank=True, null=True)
- nationality = models.CharField('Национальность', max_length=100,blank=True, null=True)
- passport_serial_number = models.CharField('Серийный номер паспорта',blank=True, max_length=10, null=True)
- issued_by = models.CharField('выдан', max_length=355,blank=True, null=True)
- valid_until = models.DateField('Действует до',blank=True, null=True)
- identification_number = models.CharField('Идентификационный номер',blank=True, max_length=150, null=True)
- """Critical value"""
- bp_high_min = models.IntegerField('Минимальное верхнее давление', null=True, blank=True, default=100)
- bp_high_max = models.IntegerField('Максимальное верхнее давление', null=True, blank=True, default=180)
- bp_low_min = models.IntegerField('Минимальное нижнее давление', null=True, blank=True, default=55)
- bp_low_max = models.IntegerField('Максимальное нижнее давление', null=True, blank=True, default=130)
- pulse_min = models.IntegerField('Минимальный пульс', null=True, blank=True, default=40)
- pulse_max = models.IntegerField('Максимальный пульс', null=True, blank=True, default=180)
- temperature_min = models.IntegerField('Минимальная температура', null=True, blank=True, default=34)
- temperature_max = models.IntegerField('Максимальная температура', null=True, blank=True, default=42)
- bo_min = models.IntegerField('Минимальное значение кислорода', null=True, blank=True, default=95)
- # bo_max = models.IntegerField('Максимальное значение кислорода', null=True, blank=True, default=100)
- temperature_trand_min = models.IntegerField('Нижняя граница тенденции температуры', null=True, blank=True)
- temperature_trand_max = models.IntegerField('Нижняя граница тенденции температуры', null=True, blank=True)
- bp_difference_max = models.IntegerField('Максимальная разница давлений', null=True, blank=True)
- bp_difference_min = models.IntegerField('Минимальная разница давлений', null=True, blank=True)
- bp_trand_high_min = models.IntegerField('Нижняя граница тенденции верхнего давления', null=True, blank=True)
- bp_trand_high_max = models.IntegerField('Верхняя граница тенденции верхнего давления', null=True, blank=True)
- bp_trand_low_min = models.IntegerField('Нижняя граница тенденции нижнего давления', null=True, blank=True)
- bp_trand_low_max = models.IntegerField('Верхняя граница тенденции нижнего давления', null=True, blank=True)
- bp_trand_difference_max = models.IntegerField('Верхняя граница тенденции разницы давлений', null=True, blank=True)
- bp_trand_difference_min = models.IntegerField('Нижняя граница тенденции разницы давлений', null=True, blank=True)
- pulse_trand_min = models.IntegerField('Нижняя граница тенденции пульса', null=True, blank=True)
- pulse_trand_max = models.IntegerField('Верхняя граница тенденции пульса', null=True, blank=True)
- bp_scenario_id = models.IntegerField('Сценарий давления', null=True, blank=True)
- mean_slide_number = models.IntegerField('Скользящая средняя', default=5)
- bo_trand_min = models.IntegerField('Нижняя граница тенденции содержания кислорода', null=True, blank=True)
- bo_trand_max = models.IntegerField('Верхняя граница тенденции содержания кислорода', null=True, blank=True)
- bg_min = models.IntegerField('Минимальное значение сахара в крови', null=True, blank=True, default=10)
- bg_max = models.IntegerField('Максимальное значение сахара в крови', null=True, blank=True, default=300)
- bg_trand_min = models.IntegerField('Нижняя граница тенденции содержания сахара', null=True, blank=True)
- bg_trand_max = models.IntegerField('Верхняя граница тенденции содержания сахара', null=True, blank=True)
- wristband_hr = models.IntegerField('Максимальное верхнее давление', null=True, blank=True, default=60)
- mean_excess_number = models.IntegerField('Количество данных выше средней', default=2)
- date_start = models.DateField('Начало периода', null=True, blank=True)
- date_end = models.DateField('Конец периода', null=True, blank=True)
- ============== Сам пациент ==================
- class CriticalParametrs(models.Model):
- """Критические параметры, их устанавливает поликлиника пациенту через связь с таблицей Attachment по вн. ключу"""
- bp_high_min = models.IntegerField('Минимальное верхнее давление', null=True, blank=True, default=100)
- bp_high_max = models.IntegerField('Максимальное верхнее давление', null=True, blank=True, default=180)
- bp_low_min = models.IntegerField('Минимальное нижнее давление', null=True, blank=True, default=55)
- bp_low_max = models.IntegerField('Максимальное нижнее давление', null=True, blank=True, default=130)
- pulse_min = models.IntegerField('Минимальный пульс', null=True, blank=True, default=40)
- pulse_max = models.IntegerField('Максимальный пульс', null=True, blank=True, default=180)
- temperature_min = models.IntegerField('Минимальная температура', null=True, blank=True, default=34)
- temperature_max = models.IntegerField('Максимальная температура', null=True, blank=True, default=42)
- bo_min = models.IntegerField('Минимальное значение кислорода', null=True, blank=True, default=95)
- # bo_max = models.IntegerField('Максимальное значение кислорода', null=True, blank=True, default=100)
- temperature_trand_min = models.IntegerField('Нижняя граница тенденции температуры', null=True, blank=True)
- temperature_trand_max = models.IntegerField('Нижняя граница тенденции температуры', null=True, blank=True)
- bp_difference_max = models.IntegerField('Максимальная разница давлений', null=True, blank=True)
- bp_difference_min = models.IntegerField('Минимальная разница давлений', null=True, blank=True)
- bp_trand_high_min = models.IntegerField('Нижняя граница тенденции верхнего давления', null=True, blank=True)
- bp_trand_high_max = models.IntegerField('Верхняя граница тенденции верхнего давления', null=True, blank=True)
- bp_trand_low_min = models.IntegerField('Нижняя граница тенденции нижнего давления', null=True, blank=True)
- bp_trand_low_max = models.IntegerField('Верхняя граница тенденции нижнего давления', null=True, blank=True)
- bp_trand_difference_max = models.IntegerField('Верхняя граница тенденции разницы давлений', null=True, blank=True)
- bp_trand_difference_min = models.IntegerField('Нижняя граница тенденции разницы давлений', null=True, blank=True)
- pulse_trand_min = models.IntegerField('Нижняя граница тенденции пульса', null=True, blank=True)
- pulse_trand_max = models.IntegerField('Верхняя граница тенденции пульса', null=True, blank=True)
- bp_scenario_id = models.IntegerField('Сценарий давления', null=True, blank=True)
- mean_slide_number = models.IntegerField('Скользящая средняя', default=5)
- bo_trand_min = models.IntegerField('Нижняя граница тенденции содержания кислорода', null=True, blank=True)
- bo_trand_max = models.IntegerField('Верхняя граница тенденции содержания кислорода', null=True, blank=True)
- bg_min = models.IntegerField('Минимальное значение сахара в крови', null=True, blank=True, default=10)
- bg_max = models.IntegerField('Максимальное значение сахара в крови', null=True, blank=True, default=300)
- bg_trand_min = models.IntegerField('Нижняя граница тенденции содержания сахара', null=True, blank=True)
- bg_trand_max = models.IntegerField('Верхняя граница тенденции содержания сахара', null=True, blank=True)
- wristband_hr = models.IntegerField('Максимальное верхнее давление', null=True, blank=True, default=60)
- mean_excess_number = models.IntegerField('Количество данных выше средней', default=2)
- date_start = models.DateField('Начало периода', null=True, blank=True)
- date_end = models.DateField('Конец периода', null=True, blank=True)
- class Attachment(models.Model):
- """Прикрепление"""
- recording_time = models.DateTimeField('Время записи', blank=False, null=True)
- pacient = models.ForeignKey(Patient, verbose_name='Пациент', on_delete=models.CASCADE)
- polyclinic = models.ForeignKey(Polyclinic, verbose_name='Поликлиника', on_delete=models.CASCADE)
- confirmation_polyclynic = models.BooleanField('Подтверждение поликлиники', default=False)
- confirmation_pacient = models.BooleanField('Подтверждение пациента', default=False)
- refusal = models.BooleanField('Отказ', default=False)
- critical_value = models.ForeignKey(CriticalParametrs, verbose_name='Критические параметры пациета', null=True, on_delete=models.CASCADE)
- ================ Связка с поликлиникой ========================
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement