Проектирование модели данных клинического мышления в Trainer Advisor
January 15, 2024
На текущий момент самой сложной частью Trainer Advisor (ранее - QYoga) является модель "клинического мышления" - то, как терапевт подбирает упражнения для клиента. В этом посте я расскажу то, как мы проектировали модель данных для неё.
Естественно, первым делом мы с экспертом нарисовали ER-диаграмму этой модели (в Эргономичной нотации):
Потом посидели, посмотрели на неё, подумали и решили что вроде бы всё ок.
Однако, что-то мне не давало покоя, и я придумал, как позже выяснилось, гениальную штуку - провести верификацию модели посредством описания с её помощью реальных клиентов и упражнений эксперта.
Для того чтобы это сделать, я завёл такой Excel-файл:
В который мы планомерно вносили данные о клиентах, особенностях, манипуляциях и упражнениях.
Для каждого клиента мы расписали:
- Его особенности;
- Его терапевтическую задачу;
- Эффекты, которые решают эту задачу;
- Показанное ему упражнение, которое при этом не ограничено и не противопоказано ему.
- Показанное ему упражнение, которое при этом ограничено.
- Показанное ему упражнение, которое при этом противопоказано ему.
- Не релевантное упражнение - не показано, не ограничено, не противопоказано. Я попросил это сделать для внесения элемента случайности в выборку упражнений.
- Манипуляции каждого упражнения.
При этом при выборе клиентов я просил эксперта подбирать максимально непохожих друг на друга людей.
Начав расписывать клиентов, мы довольно быстро обнаружили, что для некоторых особенностей некоторые из манипуляций противопоказаны только в комбинации (но не по отдельности).
Далее, "к своему удивлению", мы обнаружили, что люди в одном упражнении разными руками и ногами могут выполнять разные действия. А так же то, что травмы могут быть только на одной из конечностей.
Третью неточность модели, мы выяснили, когда начали расписывать клиента с заболеванием не опорно-двигательного аппарата. Для таких заболеваний, противопоказанными могут быть не только манипуляции, но и эффекты.
В итоге мы расписали все классы клиентов и упражнений, которые смогли придумать, устранив при этом три ошибки в модели на раннем (дешёвом) этапе.
Эту модель я ещё не закодировал, так как эксперт, он же заказчик, поменял приоритеты. Тем не менее, я уже считаю это упражнение полезным и готов посоветовать его к применению: если моделируете сложную/незнакомую/неспецифицированную предметную область - перед тем как идти программировать свою модель, верифицируйте её в Excel-файле.
При этом постарайтесь внести в свою "протомодель" данные, описывающие максимально непохожие друг на друга экземпляры сущностей.