среда, 6 июля 2016 г.

Визуализация взаимосвязей ресурсов в clinFHIR

Перевод оригинальной публикации Дэвида Хэя от 14 июня 2016 года в блоге Hay on FHIR


Недавно я обсуждал с одним из моих коллег (Viet Nguyen) улучшения в интерфейсе ClinFHIR, позволившие отображать некоторые типы ресурсов (Encounter, Observation, Condition) в более "удобоваримом" для пользователя виде. После демонстрации всех новых возможностей он предложил мне
добавить (хотя это и было озвучено в форме каких-то заоблачных мечтаний) сетевую диаграмму, отражающую взаимосвязи и ссылки между ресурсами, где каждому типу ресурсов должен был быть назначен свой цвет и т.д. и т.п...
Принимая во внимание то, что сама по себе концепция ClinFHIR заключается в отходе от традиционной ("документарной") парадигмы отображения медицинских данных, я принял решение немедленно реализовать такую диаграмму в интерфейсе ClinFHIR, тем более, что в свободном доступе есть целая библиотека (vis.js), существенно упрощающая построение таких графических моделей!
Итак, чтобы "насладиться" новой функцией ClinFHIR, выберите модуль Resource Builder на сайте http://clinfhir.com. Выберите дата-сервер (тот который хранит ресурсы типа patient и называется patient server). Конечно, данная функция может работать с любым сервером, т.е. анализировать взаимосвязи между ресурсами на любом сервере, но целесообразнее всего обращаться именно к data server для визуализации осмысленных с точки зрения пользователя взаимосвязей.
Прежде чем визуализировать взаимосвязи между ресурсами их необходимо определить. Для этого у нас есть несколько вариантов:

  1. Вручную определить взаимосвязи (ссылки) между ресурсами, в смысловом отношении привязанным к конкретному пациент, средствами Resource Creator. Это конечно "сложно, но можно".
  2. Воспользоваться функцией sample creator, встроенной в clinFHIR. Для этого нажмем на ссылку "Select Patient", "Add new Patient" и создадим нового пациента с сопутствующим набором тестовых ресурсов (create a patient with samples) (есть там такая "галочка"). Общедоступный сервер HAPI STU-3 позволяет создавать новых пациентов с богатым набором тестовых данных.
  3. Также можно выбрать любой другой сервер, который обеспечивает большое разнообразие тестовых данных.
Так я поступил в этот раз (то есть остановился на третьем варианте), выбрав сервер Мичиганской сети информации о здоровье (Michigan Health Information Network) в качестве источника клинических данных пациентов (в списке серверов он называется MiHIN). Данная организация занимается формированием наборов тестовых данных о здоровье, критически необходимых и важных для дальнейшего внедрения и реализации стандарта FHIR в реальных проектах здравоохранения. Если сервер MiHIN сразу не появился в списке доступных серверов Resource Builder, вам понадобиться сбросить кэш вашего браузера, выбрав в меню модуля пункт "reset config", а затем перезагрузить страницу.
Выберем пациента (в моем случае это Karen Florence Smith) и затем перейдем по ссылке "Details" в верхней навигационной панели, чтобы перед нами открылся просмотрщику ресурса (resource viewer). Resource viewer включает в себя три вкладки:

  • Проводник ресурсов (Resource Explorer)
  • Граф взаимосвязей ресурсов (Resource References Graph)
  • Временная шкала обращений за медицинской помощью (Encounter timeline)
Поговорим подробнее о каждой из вкладок.
Resource Explorer - это просмотрщик, отображающий типы ресурсов, связанных ссылками с конкретным ресурсом типа patient. Он позволяет просматривать json или xml других (типов) ресурсов, связанных с конкретным пациентом, скачивать их и передвигаться по ссылкам между ресурсами. При выборе ресурса (например, encounter) появится новая вкладка "References" в центральной части рабочей области (там же, где вкладки "Json", "XML", "Display"). Открыв эту вкладку мы увидим "граф взаимосвязей" ресурса, отображающий все ресурсы, на которые ссылается "центральный" (или иначе, "активный") с точки зрения пользователя ресурс. В настоящий момент речь идет о некотором ресурсе типа encounter и других ресурсах, которые связаны с ним ссылками.


По сути, на графе отражена та же информация, что и в панели справа в текстовом представлении. Тем не менее, на мой взгляд графическое представление делает связи между ресурсами более понятными. Можно даже "подергать" прямоугольники ресурсов мышкой и увидеть, как они сцеплено двигаются в выделенной для графика рабочей области. Нажатие на любой из ресурсов на графе (также как и в панели справа) переведет выбранный ресурс "в фокус", что позволяет передвигаться между ресурсами по ссылкам. (Кстати о цветах: не помешала бы помощь UI/UX дизайнера в выборе цветовой гаммы для элементов графа!)
Во вкладке "Display" ресурсы типа Encounter, Observation и Condition будут представлены в более понятном для пользователя виде (этот вариант отображения ресурсов скоро будет доступен и для других типов ресурсов). На скриншоте ниже по тексту отображен ресурс типа enocounter. Вкладка "Display" не обязательно будет отображаться все данные, которые содержит код ресурса. Для этого у пользователя есть возможность просмотреть xml или json ресурса. (На данный момент, например, вкладка Display не отображает "расширения").



(Кстати, я заметил, что сам термин "ресурс" стал использоваться для несколько неоднозначно, особенно в контексте создания и применения профилей. В этой публикации под "ресурсом" понимается экземпляр ресурса, т.е. некоторый набор данных, имеющий отношение к конкретному пациенту). Граф взаимосвязей ресурсов (resource reference graph) отобразит сеть, объединяющую все ресурсы, имеющие отношение к конкретному пациенту. Область, в которой отображаются взаимосвязи достаточно мала, поэтому, если ресурсов достаточно много и хочется увидеть "полную картину" (пусть и в очень маленьком масштабе), то можно приблизить / удалить граф ресурсов. Также граф можно перетаскивать в пределах рабочей области, менять расположение прямоугольников, которые представляют собой ресурсы.


Щелчок по ресурсу на графе отобразит его json в области справа, однако никак не повлияет на сам граф. Обратите внимание на то, что ресурс "patient" сам по себе никак не отображен на графе. Все дело в том, что все отображаемые ресурсы и так связаны с каким-то конкретным пациентом, но отображение этой взаимосвязи для всех ресурсов превращает стройную сеть в путаницу.
Найденная мной библиотека визуалиазации также нашла применение и во вкладке Encounter timeline. Данная вкладка несет информативную функцию и отображает шкалу обращений за медицинской помощью и позволяет формировать представления в зависимости от заданных параметров фильтрации. Как показано на скриншоте у данного представления есть несколько компонентов:


Сам график находится в верхнем правом углу экрана. Он поделен на области, в данном случае определяющие виды оказания медицинской помощи (стационар или амбулатория). График также может быть масштабирован для удобства пользователя.
Ниже временная шкалы находится область с подробной информацией о выбранном обращении (необходимый encounter можно выбрать нажатием на временной шкале), на которой будет показано:
    Граф взаимосвязей выбранного ресурса типа encounter (ничем не отличающийся граф покажет и resource browser). При нажатии на ресурс в области справа будет показан его json

  • json-представление ресурса типа "encounter"

  • (Т.н. "summary display", вынесенный в отдельную вкладку и отображающий ключевые данные на скриншоте не показан.)


  • В области слева находится список всех ресурсов типа "condition", связанных с данным пациентом (ресурс condition описывает заболевания и проблемы со здоровьем). Ресурсы condition существуют в привязке к конкретным обращениям за медицинской помощью (т.е. к ресурсам encounter). Ссылка определяется в поле "Encounter.indication". Выбор любого из ресурсов condition произведет фильтрацию результатов, показанных на временной шкале: график отобразит только те обращения (encounters), которые связаны с выбранным заболеванием (condition).
    Что бы еще хотелось добавить, чтобы сделать визуализацию еще лучше:

    • К сожалению пока не удалось отобразить возможные расширения ресурсов (как на графе, так и во взаимосвязях);
    • Лишь для немногих ресурсов доступен детализированный просмотр;
    • При быстром переключении между ресурсами, отображенными на графе, приложение может немного "подвисать";
    • Применена базовая цветовая схема; (Кто-то из коллег назвал эту рождественскую схему "новогодней" =) ) Поэтому, пожалуйста, посоветуйте что-нибудь "по дизайну"!

    Комментариев нет:

    Отправить комментарий