Advertisement
Mochinov

Untitled

Jan 20th, 2021 (edited)
295
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 13.40 KB | None | 0 0
  1. class BaseDevicesClass(models.Model):
  2.     user = models.ForeignKey(Patient,on_delete=models.CASCADE, default=0)
  3.     datetime = models.DateTimeField('Время измерения', db_index=True)
  4.     sync_datetime = models.DateTimeField('Время получения измерения')
  5.     android_mac = models.ForeignKey(Android,on_delete=models.CASCADE, default=0)
  6.  
  7. class WristbandHR(BaseDevicesClass):
  8.     HR = models.IntegerField('Пульс')
  9.  
  10. class WristbandBO(BaseDevicesClass):
  11.     BO = models.IntegerField('Уровень кислорода', default=0)
  12. ========== Показания с браслета ====================
  13.  
  14.  
  15.  
  16.  
  17.  
  18. class Patient(models.Model):
  19.     """Пациент"""
  20.     phone_regex = RegexValidator(regex=r'^\+7\d{11}$')
  21.     user = models.OneToOneField(User, related_name='profile',null=True,on_delete=models.CASCADE)
  22.     email = models.EmailField('E-mail',unique=True,null=True)
  23.     surname = models.CharField('Фамилия', max_length=32, db_index=True)
  24.     name = models.CharField('Имя', max_length=32)
  25.     patronymic = models.CharField('Отчество', max_length=32)
  26.     birth_date = models.DateField('Дата рождения',null=True)
  27.     OMS = models.CharField('Номер полиса ОМС', max_length=16)
  28.     phone_number = models.CharField('Номер телефона',blank=True, max_length=12)
  29.     relatives_phone_number = models.CharField('Номер телефона родственника', validators=[phone_regex], max_length=12, blank=True)
  30.     # address = models.CharField('Адрес проживания', max_length=128)
  31.     registration_address = models.CharField('Адрес регистрации', max_length=128)
  32.     state = models.TextField('Состояние')
  33.  
  34.     """Personal data"""
  35.     gender = models.ForeignKey(Gender,verbose_name='Пол', null=True, on_delete=models.CASCADE)
  36.     type_blood = models.ForeignKey(Blod_Type, verbose_name='Тип крови', null=True,on_delete=models.CASCADE)
  37.     weight = models.FloatField('Вес', null=True)
  38.     growth = models.FloatField('Рост', null=True)
  39.  
  40.     """Patient addres"""
  41.     place_of_residence = models.ForeignKey(Patient_Address, null=True,verbose_name='Адрес прописки', related_name='place_of_residence',on_delete=models.SET_NULL)
  42.     residence_address = models.ForeignKey(Patient_Address, null=True,verbose_name='Адрес проживания',related_name='residence_address',on_delete=models.SET_NULL)
  43.     information_about_work =  models.ForeignKey(Patient_Address, null=True,verbose_name='Адрес проживания',related_name='information_about_work',on_delete=models.SET_NULL)
  44.  
  45.  
  46.     """Citizenship"""
  47.     сitizenship = models.CharField('Гражданство', max_length=150,blank=True, null=True)
  48.     nationality = models.CharField('Национальность', max_length=100,blank=True, null=True)
  49.     passport_serial_number = models.CharField('Серийный номер паспорта',blank=True, max_length=10, null=True)
  50.     issued_by = models.CharField('выдан', max_length=355,blank=True, null=True)
  51.     valid_until = models.DateField('Действует до',blank=True, null=True)
  52.     identification_number = models.CharField('Идентификационный номер',blank=True, max_length=150, null=True)
  53.  
  54.     """Critical value"""
  55.  
  56.     bp_high_min = models.IntegerField('Минимальное верхнее давление', null=True, blank=True, default=100)
  57.     bp_high_max = models.IntegerField('Максимальное верхнее давление', null=True, blank=True, default=180)
  58.  
  59.     bp_low_min = models.IntegerField('Минимальное нижнее давление', null=True, blank=True, default=55)
  60.     bp_low_max = models.IntegerField('Максимальное нижнее давление', null=True, blank=True, default=130)
  61.     pulse_min = models.IntegerField('Минимальный пульс', null=True, blank=True, default=40)
  62.     pulse_max = models.IntegerField('Максимальный пульс', null=True, blank=True, default=180)
  63.  
  64.     temperature_min = models.IntegerField('Минимальная температура', null=True, blank=True, default=34)
  65.     temperature_max = models.IntegerField('Максимальная температура', null=True, blank=True, default=42)
  66.  
  67.     bo_min = models.IntegerField('Минимальное значение кислорода', null=True, blank=True, default=95)
  68.     # bo_max = models.IntegerField('Максимальное значение кислорода', null=True, blank=True, default=100)
  69.  
  70.  
  71.     temperature_trand_min = models.IntegerField('Нижняя граница тенденции температуры', null=True, blank=True)
  72.     temperature_trand_max = models.IntegerField('Нижняя граница тенденции температуры', null=True, blank=True)
  73.  
  74.     bp_difference_max = models.IntegerField('Максимальная разница давлений', null=True, blank=True)
  75.     bp_difference_min = models.IntegerField('Минимальная разница давлений', null=True, blank=True)
  76.  
  77.     bp_trand_high_min = models.IntegerField('Нижняя граница тенденции верхнего давления', null=True, blank=True)
  78.     bp_trand_high_max = models.IntegerField('Верхняя граница тенденции верхнего давления', null=True, blank=True)
  79.  
  80.     bp_trand_low_min = models.IntegerField('Нижняя граница тенденции нижнего давления', null=True, blank=True)
  81.     bp_trand_low_max = models.IntegerField('Верхняя граница тенденции нижнего давления', null=True, blank=True)
  82.  
  83.     bp_trand_difference_max = models.IntegerField('Верхняя граница тенденции разницы давлений', null=True, blank=True)
  84.     bp_trand_difference_min = models.IntegerField('Нижняя граница тенденции разницы давлений', null=True, blank=True)
  85.  
  86.     pulse_trand_min = models.IntegerField('Нижняя граница тенденции пульса', null=True, blank=True)
  87.     pulse_trand_max = models.IntegerField('Верхняя граница тенденции пульса', null=True, blank=True)
  88.  
  89.     bp_scenario_id = models.IntegerField('Сценарий давления', null=True, blank=True)
  90.     mean_slide_number = models.IntegerField('Скользящая средняя', default=5)
  91.  
  92.     bo_trand_min = models.IntegerField('Нижняя граница тенденции содержания кислорода', null=True, blank=True)
  93.     bo_trand_max = models.IntegerField('Верхняя граница тенденции содержания кислорода', null=True, blank=True)
  94.  
  95.     bg_min = models.IntegerField('Минимальное значение сахара в крови', null=True, blank=True, default=10)
  96.     bg_max = models.IntegerField('Максимальное значение сахара в крови', null=True, blank=True, default=300)
  97.  
  98.     bg_trand_min = models.IntegerField('Нижняя граница тенденции содержания сахара', null=True, blank=True)
  99.     bg_trand_max = models.IntegerField('Верхняя граница тенденции содержания сахара', null=True, blank=True)
  100.  
  101.     wristband_hr = models.IntegerField('Максимальное верхнее давление', null=True, blank=True, default=60)
  102.  
  103.  
  104.     mean_excess_number = models.IntegerField('Количество данных выше средней', default=2)
  105.  
  106.     date_start = models.DateField('Начало периода', null=True, blank=True)
  107.     date_end = models.DateField('Конец периода', null=True, blank=True)
  108.  
  109.  
  110.  
  111. ============== Сам пациент ==================
  112.  
  113.  
  114.  
  115. class CriticalParametrs(models.Model):
  116.     """Критические параметры, их устанавливает поликлиника пациенту через связь с таблицей Attachment по вн. ключу"""
  117.    
  118.     bp_high_min = models.IntegerField('Минимальное верхнее давление', null=True, blank=True, default=100)
  119.     bp_high_max = models.IntegerField('Максимальное верхнее давление', null=True, blank=True, default=180)
  120.  
  121.     bp_low_min = models.IntegerField('Минимальное нижнее давление', null=True, blank=True, default=55)
  122.     bp_low_max = models.IntegerField('Максимальное нижнее давление', null=True, blank=True, default=130)
  123.     pulse_min = models.IntegerField('Минимальный пульс', null=True, blank=True, default=40)
  124.     pulse_max = models.IntegerField('Максимальный пульс', null=True, blank=True, default=180)
  125.  
  126.     temperature_min = models.IntegerField('Минимальная температура', null=True, blank=True, default=34)
  127.     temperature_max = models.IntegerField('Максимальная температура', null=True, blank=True, default=42)
  128.  
  129.     bo_min = models.IntegerField('Минимальное значение кислорода', null=True, blank=True, default=95)
  130.     # bo_max = models.IntegerField('Максимальное значение кислорода', null=True, blank=True, default=100)
  131.  
  132.  
  133.     temperature_trand_min = models.IntegerField('Нижняя граница тенденции температуры', null=True, blank=True)
  134.     temperature_trand_max = models.IntegerField('Нижняя граница тенденции температуры', null=True, blank=True)
  135.  
  136.     bp_difference_max = models.IntegerField('Максимальная разница давлений', null=True, blank=True)
  137.     bp_difference_min = models.IntegerField('Минимальная разница давлений', null=True, blank=True)
  138.  
  139.     bp_trand_high_min = models.IntegerField('Нижняя граница тенденции верхнего давления', null=True, blank=True)
  140.     bp_trand_high_max = models.IntegerField('Верхняя граница тенденции верхнего давления', null=True, blank=True)
  141.  
  142.     bp_trand_low_min = models.IntegerField('Нижняя граница тенденции нижнего давления', null=True, blank=True)
  143.     bp_trand_low_max = models.IntegerField('Верхняя граница тенденции нижнего давления', null=True, blank=True)
  144.  
  145.     bp_trand_difference_max = models.IntegerField('Верхняя граница тенденции разницы давлений', null=True, blank=True)
  146.     bp_trand_difference_min = models.IntegerField('Нижняя граница тенденции разницы давлений', null=True, blank=True)
  147.  
  148.     pulse_trand_min = models.IntegerField('Нижняя граница тенденции пульса', null=True, blank=True)
  149.     pulse_trand_max = models.IntegerField('Верхняя граница тенденции пульса', null=True, blank=True)
  150.  
  151.     bp_scenario_id = models.IntegerField('Сценарий давления', null=True, blank=True)
  152.     mean_slide_number = models.IntegerField('Скользящая средняя', default=5)
  153.  
  154.     bo_trand_min = models.IntegerField('Нижняя граница тенденции содержания кислорода', null=True, blank=True)
  155.     bo_trand_max = models.IntegerField('Верхняя граница тенденции содержания кислорода', null=True, blank=True)
  156.  
  157.     bg_min = models.IntegerField('Минимальное значение сахара в крови', null=True, blank=True, default=10)
  158.     bg_max = models.IntegerField('Максимальное значение сахара в крови', null=True, blank=True, default=300)
  159.  
  160.     bg_trand_min = models.IntegerField('Нижняя граница тенденции содержания сахара', null=True, blank=True)
  161.     bg_trand_max = models.IntegerField('Верхняя граница тенденции содержания сахара', null=True, blank=True)
  162.  
  163.     wristband_hr = models.IntegerField('Максимальное верхнее давление', null=True, blank=True, default=60)
  164.  
  165.  
  166.     mean_excess_number = models.IntegerField('Количество данных выше средней', default=2)
  167.  
  168.     date_start = models.DateField('Начало периода', null=True, blank=True)
  169.     date_end = models.DateField('Конец периода', null=True, blank=True)
  170.  
  171. class Attachment(models.Model):
  172.     """Прикрепление"""
  173.     recording_time = models.DateTimeField('Время записи', blank=False, null=True)
  174.     pacient = models.ForeignKey(Patient, verbose_name='Пациент', on_delete=models.CASCADE)
  175.     polyclinic = models.ForeignKey(Polyclinic, verbose_name='Поликлиника', on_delete=models.CASCADE)
  176.  
  177.     confirmation_polyclynic = models.BooleanField('Подтверждение поликлиники', default=False)
  178.     confirmation_pacient = models.BooleanField('Подтверждение пациента', default=False)
  179.     refusal = models.BooleanField('Отказ', default=False)
  180.  
  181.     critical_value = models.ForeignKey(CriticalParametrs, verbose_name='Критические параметры пациета', null=True, on_delete=models.CASCADE)
  182.  
  183. ================ Связка с поликлиникой ========================
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement