Я создал веб-приложение Django для управления медицинскими данными.У меня много специальностей, использующих один и тот же проект.Я хотел бы отобразить конкретные интерфейсы / формы / шаблоны ... в зависимости от специализации пользователя.
Я нахожусь на django 1.11 python 3.6.
Приложение работает хорошо.У меня есть пациенты и пользователи.У каждого пользователя есть только одна специальность (кардиолог, хирург ...), определенная определенным классом и связанная с пользователем ForeignKey.
models.py
class Specialite(Auditable): #list of specialites, and link it to user !
id = models.UUIDField(primary_key=True, default=uuid.uuid4, editable=False)
spe = models.CharField( max_length = 200, null = False,)
#define which app the specialite is linked to...
data_app = models.CharField(max_length = 200, null = False, blank = False)
def __str__(self):
return self.spe
class Patient(Auditable):
# /3247969/modeli-django-izbegayt-dublikatov
class Meta:
unique_together = ["nom", "prenom", "dob"]
MALE = "MALE"
FEMALE = "FEMALE"
SEXE = (
(MALE, 'Homme'),
(FEMALE, 'Femme'),
)
id = models.UUIDField(primary_key=True, default=uuid.uuid4, editable=False)
nom = models.CharField( max_length=50,)
nom_naissance = models.CharField( max_length=50,)
prenom = models.CharField(max_length=150,)
sexe = models.CharField(max_length = 100,
choices = SEXE,
)
На данный момент,у меня есть одна таблица по пациентам: имя, фамилия, доб, вес, рост ... Только общие сведения для всех специальностей.
Я хотел бы создать конкретные таблицы на одно имя в зависимости от специальности для отображениясоответствующая информация для каждой специальности / специалиста.Каждое поле основано на классификации SNOMED CT для большей согласованности и связи данных.
Я думаю о многих способах:
- Огромная модель сверху смного полей, с abstract = true, и подмодели, использующие эту модель
- Огромная модель с большим количеством полей и для каждого шаблона конкретной специальности, форма для обновления данных, но данные могут изменяться, пока врачиможет быть другой анализ данных ...
- В конце концов, я думаю, что будет более подходящим: приложение для каждой специальности со всей логикой полей, форм и т. д. внутри приложения,
Поэтому мой выбор - создание приложения для каждой специальности, связанного с моделью "специальности" внешним ключом или текстом (например, названием приложения:
data_app = models.CharField(max_length = 200, null = False, blank = False)
).
В каждом приложении у меня есть модель с просто классом, связанным с пациентом отношениями OneToOne.
class Cardiology (Auditable):
id = models.UUIDField(primary_key=True, default=uuid.uuid4, editable=False)
zkf_patient = models.OneToOneField(Patient, on_delete = models.PROTECT, null = True, blank = True)
hta = models.BooleanField()
tobacco = models.BooleanField()
.....
На данный момент я в порядке с созданиемновая запись для пациента с встроенным заводским набором форм.Тем не менее, я хотел бы отобразить соответствующий шаблон / CBV / Urls ... в зависимости от специализации пользователя для редактирования и отображения соответствующей информации.
Например, если я кардиолог:показать на главной странице вместе с «моделью пациента» подробные сведения о классе, конкретную информацию, связанную с кардиологией.Но если я хирург, показываю ту же страницу, но со специальной информацией для операции ...
Я могу сделать это сейчас, я использую {% include '... html'%} в мой шаблон, чтобы вставить то, что я хочу.
Я подумываю о создании определенного тега для динамического отображения соответствующей информации ...
Но я понятия не имею, как это сделать для страницы редактирования и т. Д. .... За исключениемсоздание сценария с кучей диктовок для создания отношений, но это кажется мне кошмаром.
Как вы думаете, есть ли более элегантный способ, более «логический».Исходя из названий каждого класса, может быть ...
Спасибо за вашу помощь!