Проектирование модели данных клинического мышления в Trainer Advisor

January 15, 2024

На текущий момент самой сложной частью Trainer Advisor (ранее - QYoga) является модель "клинического мышления" - то, как терапевт подбирает упражнения для клиента. В этом посте я расскажу то, как мы проектировали модель данных для неё.

Естественно, первым делом мы с экспертом нарисовали ER-диаграмму этой модели (в Эргономичной нотации):

clinical thinking model.drawio

Потом посидели, посмотрели на неё, подумали и решили что вроде бы всё ок.

Однако, что-то мне не давало покоя, и я придумал, как позже выяснилось, гениальную штуку - провести верификацию модели посредством описания с её помощью реальных клиентов и упражнений эксперта.

Для того чтобы это сделать, я завёл такой Excel-файл:

2024 01 15 08 37 44

В который мы планомерно вносили данные о клиентах, особенностях, манипуляциях и упражнениях.

Для каждого клиента мы расписали:

  1. Его особенности;
  2. Его терапевтическую задачу;
  3. Эффекты, которые решают эту задачу;
  4. Показанное ему упражнение, которое при этом не ограничено и не противопоказано ему.
  5. Показанное ему упражнение, которое при этом ограничено.
  6. Показанное ему упражнение, которое при этом противопоказано ему.
  7. Не релевантное упражнение - не показано, не ограничено, не противопоказано. Я попросил это сделать для внесения элемента случайности в выборку упражнений.
  8. Манипуляции каждого упражнения.

При этом при выборе клиентов я просил эксперта подбирать максимально непохожих друг на друга людей.

Начав расписывать клиентов, мы довольно быстро обнаружили, что для некоторых особенностей некоторые из манипуляций противопоказаны только в комбинации (но не по отдельности).

Далее, "к своему удивлению", мы обнаружили, что люди в одном упражнении разными руками и ногами могут выполнять разные действия. А так же то, что травмы могут быть только на одной из конечностей.

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

В итоге мы расписали все классы клиентов и упражнений, которые смогли придумать, устранив при этом три ошибки в модели на раннем (дешёвом) этапе.

Эту модель я ещё не закодировал, так как эксперт, он же заказчик, поменял приоритеты. Тем не менее, я уже считаю это упражнение полезным и готов посоветовать его к применению: если моделируете сложную/незнакомую/неспецифицированную предметную область - перед тем как идти программировать свою модель, верифицируйте её в Excel-файле.

При этом постарайтесь внести в свою "протомодель" данные, описывающие максимально непохожие друг на друга экземпляры сущностей.