Введение
В современном мире, медицинские информационные системы (МИС) становятся все более необходимы для оказания оперативной и максимально качественной медицинской помощи пациентам. Помимо этого, МИС помогают анализировать данные медицинского характера для поиска новых и более эффективных способов лечения различных заболеваний и диагностики. Для быстрой и качественной реализации информационных систем требуются новые технологии, которые позволяют выполнить эти условия, а также новые и эффективные технологии становятся все более востребованными для хранения, совместного доступа, обработки, анализа и передачи медицинских данных.
Для разработки приложений, в настоящее время, все чаще используются веб-технологии. Именно они могут занять немаловажное место при разработке МИС. Это связано с тем, что веб-приложения быстро разрабатываются, не требовательны к ресурсам и кроссплатформенны. Такие приложения могут быть применимы для учета медицинских данных (числовых, текстовых, бинарных), их оперативной обработки и передачи.
Сегодня представлено множество инструментов, которые позволяют реализовать качественные веб-приложения за короткое время. К таким технологиям можно отнести программную платформу Node.js, фреймворки для ускорения разработки веб-приложений (Angular.js, ASP.NET, Spring, React.js, Backbone.js и т.д), документо-ориентированные СУБД (MongoDB, CouchDB).
Ввиду того, что современные сети передачи данных все еще не являются идеальными по отказоустойчивости и своей распространенности, существует необходимость в веб-приложениях, которые будут позволять работать с ними без доступа к локальной сети. Помимо работы без доступа к сети требуется хранить данные в локальной базе данных (БД), с последующей синхронизацией данных с БД на сервере.
БД в современных МИС
Основное предпочтение при разработке МИС и других приложений, связанных с централизованным хранением информации, отдается реляционным БД. К достоинствам реляционной модели можно отнести:
- Простое представление информации для пользователя
- Она основывается на развитом математическом аппарате
- Позволяет создавать языки манипулирования данными не процедурного типа
- Манипулирование данными на уровне выходной БД и возможностью изменения.
К недостаткам можно отнести медленный доступ к данным, а также высокую трудоемкость разработки.
Большая часть современных МИС работает по принципу “Клиент-сервер”. На основе практического опыта было доказано, что необходимость такого решения для создания информационной системы очень высока, так как настольные базы данных, в том числе с использованием файл-сервера, способны поддерживать не более 10 рабочих станций и небольшой объем данных. Помимо этого, большая часть существующих требований к МИС уже реализована в промышленных СУБД, построенных в архитектуре “клиент — сервер”, что позволяет существенно уменьшить время на разработку информационной системы.[1]
Для разработки большинства МИС были использованы СУБД MS SQL, Oracle, Lotus Notes/Domino, Postgress SQL и FireBird. Указанные СУБД обладают хорошими характеристиками для хранения данных, но они не могут обеспечить высокую производительность приложения из-за формы представления данных. Основной смысл реляционных БД – это хранение данных, и их получение по запросу за любой промежуток времени, это чаще используется для формирования отчетов. [2]
При использовании документо-ориентированных СУБД запросы к БД в большинстве случаев одинаковые. Они основываются на этом принципе, создавая индексы на нужные запросы при изменении данных асинхронно. Таким образом, после изменения данных сразу обновляются и индексы для нужных запросов. В SQL индексы тоже есть, но они на более низком уровне. Документо-ориентированныe СУБД строят индексы автоматически при первом запросе. Поэтому это очень похоже на схему lang <-> memcache <-> sql, но существенно быстрее.
Второе преимущество – это более простая репликация. Третье преимущество – это map/reduce запросы для обработки данных. Выполняются на встроенном языке, например на JavaScript.
В итоге, приложение написанное с использованием документо-ориентированной БД будет быстрее чем аналог на SQL.
Применение документо-ориентированных БД при разработке МИС
В разработке современных приложений все чаще используются веб-технологии. Это связано с тем, что такие приложения являются кроссплатформенными и не зависят от какой-то определенной операционной системы. Помимо этого, такие приложения очень быстро разрабатываются и изменяются, а также легко интегрируются с другими приложениями посредством API. Веб-технологии очень хорошо подходят и для разработки МИС, так как обладают очень широким набором инструментов. Для хранения данных в веб-приложениях могут быть использованы как реляционные СУБД, так и документо-ориентированные. Так как реляционные СУБД не обладают качеством быстрой разработки и скоростью получения информации при запросе к ним, то стоит обратиться к документо-ориентированным СУБД. Самыми популярными документо-ориентированными СУБД являются MongoDB и CouchDB. В статье будет рассматриваться СУБД CouchDB.
CouchDB – это документо-ориентированная система управления базами данных с открытым исходным кодом, не требующая описания схемы данных, распространяется свободно, написана на языке Erlang. Впервые вышла в 2005 году, с 2008 года – проект фонда Apache. Реализована в рамках подхода NoSQL. Для хранения данных используется JSON, для реализации MapReduce-запросов – JavaScript. Одной из особенностей СУБД является поддержка репликации с несколькими ведущими узлами. CouchDB можно рассматривать как сервер веб-приложений; для реализации этой идеи в CouchDB встроен производительный веб-сервер, а программный код, как и данные, сохраняется в той же базе данных. Для автоматизации работы с приложениями используется утилита CouchApp.
Следуя подходу NoSQL, CouchDB не хранит данные и связи в таблицах. Вместо этого каждая база данных – набор независимых документов. Каждый документ содержит свои собственные данные и независимую схему. Приложение может получить доступ к нескольким базам данных, например, хранящейся на мобильном телефоне пользователя и на сервере. Метаданные документа содержат информацию о версии, позволяя объединять данные и разрешать любые противоречия, которые могли появиться в момент, когда базы данных были разъединены.
Для управления конкурентным доступом используется механизм MVCC, благодаря чему возможно избежать необходимости блокировки файла базы данных во время записи. Разрешение конфликтов относится к сфере ответственности логики приложения, разрешение конфликта обычно включает в себя объединение данных в один документ, а затем старый документ удаляется.[3]
Для хранения данных на стороне клиента следует использовать БД PouchDB, которая совместима с CouchDB.
PouchDB – это NoSQL БД с открытым исходным кодом, написанная на JavaScript, которая была разработана по принципу CouchDB, но с возможностью простой работы в браузере. Она была создана для помощи веб разработчикам в создании приложений, которые могут работать без постоянного доступа к сети. PouchDB является базой данных, которая работает в бараузере, что позволяет приложению хранить данные локально, для того чтобы пользователь мог использовать приложение без доступа к сети. Кроме этого, данные могут синхронизироваться между клиентами. PouchDB также может быть запущен на Node.js и может быть использован в качестве прямого интерфейса к CouchDB. API PouchDB работают в различных средах одинаково, поэтому проблем с выбором бразуеров быть не должно. PouchDB поддерживает все современные браузеры, используя IndexedDB, а в случае если браузер его не поддерживает, то он заменяет метод хранения данных на WebSQL. Полностью протестированные браузеры, где это работает:
- Firefox 29+ (включая Firefox OS и Firefox для Android)
- Chrome 30+
- Safari 5+
- Internet Explorer 10+
- Opera 21+
- Android 4.0+
- iOS 7.1+
- Windows Phone 8+
PouchDB является независимой БД, которая может использоваться совместно с Angular, React, Ember, Backbone, или фреймворком собственной разработки.[4]
На основе этих БД была создана портальная МИС с открытым исходным кодом, под названием HospitalRun. Она предназначена для хранения данных о пациенте, лабораторных данных, изображений связанных с диагностикой пациентов и прочие данные. Данная МИС позволяет вести учет данных без доступа к сети, а после получения этого доступа, все данные могут быть синхронизированы с центральной БД. Основной минус этой МИС заключается в том, что это конечное веб-приложение, и для его изменения требуется большое количество времени.[5]
Наша основная идея, это разработка единого JavaScript фреймворка для фронт-энд разработки, на основе PouchDB, с возможностью последующей синхронизации данных из локальной БД в серверную БД CouchDB. Этот фреймворк должен обладать простым набором функций, которые должны определять все типы полей ввода на форме портала. Структура портала в свою очередь описывается разработчиком. На форме могут быть типы полей: input, radio button, check box, каждый тип данных будет описан в фреймворке. Синхронизация данных с CouchDB будет происходить по стандарту JSON. Итоговый вариант этого инструмента будет подключаться на html форме, разработчик описывает структуру страницы и поля для ввода данных, после чего пользователь будет иметь возможность ввести данные, и с появлением доступа к сети эти данные будут переданы на сервер, а если сетевой доступности сервера нет, то эти данные не будут потеряны.
Описанный инструмент будет очень удобен в разработке форм для сбора данных, этот подход в медицине называется «Case report form».
Заключение
В целом, применение документо-ориентированных БД при разработке веб-приложений – это уже не очень большая редкость, а вполне применимая и практичная технология. Представленные примеры наглядно показывают, что веб-технологии и документо-ориентированные БД могут быть применимы в МИС, а также имеют все характеристики для дальнейшего развития и массового распространения данных технологий в этой области. Конечно, эта технология еще требует более детальной проработки, что будет происходить непрерывно, так как рассмотренные технологии постоянно развиваются. В процессе развития, будут добавляться новые возможности и улучшаться их производительность. Разработка нового фреймворка, на основе перечисленных технологий, существенно облегчит работу разработчиков приложений.
Библиографический список
- А. Г. Белышев, Я. И. Гулиев, В.Ю. Морозов. «Построение медицинских систем с использованием объектных технологий», Программные системы: Теоретические основы и приложения, ред. А. К. Айламазян, Наука. Физматлит, М., 1999, с. 169.
- А. К. Айламазян, Я. И. Гулиев, С. И. Комаров, В. Л. Малых, В.Ю. Морозов. «Информационные системы в медицине: проблемы и решения», Программные системы: Теоретические основы и приложения, ред. А. К. Айламазян, Наука. Физматлит, М., 1999, с. 162.
- Официальный сайт проекта CouchDB // Apache CouchDB. 2017. URL: http://couchdb.apache.org/ (дата обращения: 10.04.2017)
- Официальный сайт проекта PouchDB // PouchDB. 2017. URL: https://pouchdb.com/ (дата обращения: 10.04.2017)
- Официальный сайт проекта Hospitalrun // Hospitalrun. 2017. URL: http://hospitalrun.io/ (дата обращения: 10.04.2017)