Как правильно спроектировать модель, связанную с 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 могла бы иметь по три поля: внешний ключ к пациенту, номер, время.

Вернуться на верх