Как правильно спроектировать модель, связанную с django
Я разрабатываю модели на основе файла csv:
PATIENT ID,PATIENT NAME,EVENT TYPE,EVENT VALUE,EVENT UNIT,EVENT TIME
1,Jane,HR,82,beats/minute,2021-07-07T02:27:00Z
1,Jane,RR,5,breaths/minute,2021-07-07T02:27:00Z
2,John,HR,83,beats/minute,2021-07-07T02:27:00Z
2,John,RR,14,breaths/minute,2021-07-07T02:27:00Z
1,Jane,HR,88,beats/minute,2021-07-07T02:28:00Z
1,Jane,RR,20,breaths/minute,2021-07-07T02:28:00Z
2,John,HR,115,beats/minute,2021-07-07T02:28:00Z
2,John,RR,5,breaths/minute,2021-07-07T02:28:00Z
1,Jane,HR,66,beats/minute,2021-07-07T02:29:00Z
1,Jane,RR,15,breaths/minute,2021-07-07T02:29:00Z
2,John,HR,107,beats/minute,2021-07-07T02:29:00Z
В этих данных только 2 пациента, но детали их HR и RR обновляются каждую минуту.
Вот как я создал модель:
from django.db import models
# Create your models here.
from django.contrib.auth.models import AbstractUser
class Event_type(models.Model):
"""
Event_type is like a category model for patient,
datebase relationship is one to many
"""
name = models.CharField(max_length=40)
class Meta:
verbose_name = "event_type"
verbose_name_plural = verbose_name
def __str__(self):
return self.name
class Patient(models.Model):
patient_id = models.AutoField(unique=True, primary_key=True) # patient identification
patient_name = models.CharField(max_length=30, blank=True, null=True, verbose_name='patient_name')
event_type = models.ForeignKey(Event_type, on_delete=models.CASCADE,
blank=True,
verbose_name='event type')
event_value = models.PositiveIntegerField(default=0, verbose_name='even value', blank=True)
event_unit = models.CharField(max_length=100, blank=True,
verbose_name='event unit')
event_time = models.DateTimeField(auto_now=True,
verbose_name='event time')
class Meta:
verbose_name = 'Patient'
verbose_name_plural = verbose_name
ordering = ['-patient_id']
def __str__(self):
return self.patient_name
Однако я предполагаю, что при загрузке данных в базу данных у меня может возникнуть неуникальная ошибка.
Есть ли лучший дизайн? Любой друг может помочь?
Я бы организовал таблицы с информацией о пациенте, затем отдельные таблицы с внешними ключами для каждого пациента для информации о сердце и дыхании. Таблица RR и HR могла бы иметь по три поля: внешний ключ к пациенту, номер, время.