Django - как сделать настраиваемые фронтендом наборы / группы в моделях?

Я пытаюсь создать приложение, которое обрабатывает лабораторные анализы - что-то похожее на Laboraotory Information System (LIS)

Проблема в том, что я не знаю, какой подход выбрать.

Я планирую сделать это следующим образом:

Таблица "ANALYSES" - состоит из "name", "ID" анализов

Таблица "PROBES" - состоит из "name", "ID", "reference", "VALUE", "measurement".

Также PROBES будет иметь поле, которое связывает его с определенным экземпляром "ANALYSES".

SO это будет выглядеть как "ANALYSES #1" -> "PROBE1", "PROBE2", "PROBE3"

"ANALYSES #2" -> "PROBE1", "PROBE3"

И так далее.

Оператор должен иметь возможность добавлять новые анализы и добавлять зонды к этим анализам через фронтенд в одном "представлении" - например, "LAB settings", а в другом представлении - вводить значения в экземпляры этих анализов (все экземпляры анализов будут связаны с некоторым "VISIT" - сервисным случаем)

Какой подход я должен использовать при планировании приложения и моделей? Это будут некоторые мета-классы или просто несколько таблиц, связанных "manytoone" или "manytomany"?

Буду благодарен за любой совет!

Ничто в этом не кажется особенно сложным, с чем не справятся отношения ManyToOne. Ваши модели будут выглядеть следующим образом:

class Visit(models.Model):
   ...

class Analysis(models.Model):
   visit = models.ForeignKey(Visit, ...
   ...

class Probe(models.Model):
   analysis = models.ForeignKey(Analysis, ...
   ...

Если много зондов могут присоединяться к разным анализам или анализы к посещениям, тогда используйте ManyToManyField вместо ForeignKey, обратите внимание, что обработка m2m в Django работает иначе, чем отношения m21.

https://docs.djangoproject.com/en/4.0/topics/db/examples/many_to_one/

https://docs.djangoproject.com/en/4.0/topics/db/examples/many_to_many/

Спасибо за ответ!

В настоящее время я делаю что-то похожее на это, если кто-то заинтересован. Возможно, есть более простые способы, но пока что это подходит для моих нужд.

Далее я планирую создать некоторый пользовательский интерфейс и формы ввода для ручного ввода и сделать некоторые интеграции со стандартом HL7 для загрузки данных непосредственно из лабораторных анализаторов.

Django - это лучшее, что случилось со мной до сих пор в программировании)

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