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 - это лучшее, что случилось со мной до сих пор в программировании)