Применяемые в настоящее время методы терапии рассеянного склероза с помощью иммуномодуляторов, иммуносупрессантов, препаратов нейротрофического действия, аппаратного плазмафереза позволяют уменьшить частоту обострений в зависимости от формы заболевания на 30–45 %, увеличить длительность ремиссий, не приводя при этом к излечению заболевания. Вместе с тем побочные эффекты отмечаются более чем у 45 % пациентов, являясь в ряде случаев причиной прерывания терапии и ухудшения качества жизни больных. В данной статье описана разработка прикладного ПО и операционной БД для учета и хранения клинической и социодемографической информации о больных в процессе динамического мониторинга клинических параметров и оценки эффективности лечения в посттрансплантационном периоде. Это ПО используется для сбора информации, прогнозирования и статистического анализа состояний больных, выработки оптимальной стратегии их лечения и не имеет прямых аналогов на российском рынке.
ПО обеспечивает следующий функционал:
– сбор и хранение фактических данных о пациенте – пол, возраст, имя, размеры (рост, размер одежды – при необходимости), уникальный номер пациента в системе;
– сбор и хранение информации об анализах, диагнозах, осмотрах врачей, назначенных диагностических процедурах, лекарственных средствах, манипуляциях и динамике состояния пациента, в том числе сбор и хранение информации об анализах и аналогичной информации до госпитализации пациента и после его выписки;
– построение аналитических отчетов в различных разрезах данных, возможность быстрого получения новых отчетов;
– возможность моделирования и прогнозирования состояния больного на ближайшее время.
ПО выполнено в соответствии с законодательными актами, требованиями и нормативами в сфере технической защиты информации.
Исследование аналогов разрабатываемого ПО
До принятия решения о начале разработки ПО был проведен анализ российского и зарубежного рынков на предмет имеющихся аналогов. За рубежом в частных и государственных клиниках применяется либо ПО собственной разработки, либо ERP-системы, которые включают не только сбор и анализ сведений о больных, но и хозяйственную, бухгалтерскую и административную составляющие. Стоимость внедрения подобной системы – несколько десятков миллионов рублей, что экономически невыгодно российской частной клинике в связи с тем, что возможности системы значительно превышают задачи клиники.
На российском рынке ПО прямых конкурентов не нашлось, но стоит отметить следующие системы:
– 1С:Медицина. Поликлиника (1С:Медицина. Больница), позволяющая выполнять основные задачи по сбору и анализу информации о больных, однако имеющая ряд существенных недостатков: отсутствие возможности моделировать и прогнозировать состояние больного на ближайшее время и минимального интерфейса для использования его медицинским персоналом клиники;
– 1С-Рарус:Лечащий врач, также основанная на базе платформы 1C и имеющая аналогичные недостатки;
– различные российские ERP-системы, недостатками которых являются дороговизна и сложность внедрения.
Исходя из того, что ПО, позволяющего полно решить все поставленные задачи, на российском и зарубежном рынках не выявлено, было принято решение о разработке собственного продукта.
Архитектура ПО
Данное ПО представляет собой клиент-серверное приложение. Серверная часть состоит из 2 компьютеров (основной и резервный). На каждом из них должны быть установлены СУБД MongoDB, сервер IIS и сервис передачи данных WCF. У основного компьютера должен быть открыт только один порт (81, https). Сервис WCF представляет API для клиентского приложения, трафик шифруется с использованием криптографического протокола SSL. Права клиента на доступ к данным в базе зависят от определенных параметров в сервисе WCF.
Клиентское приложение реализовано на основе технологии WPF, что позволяет создавать удобный графический интерфейс. Для авторизации клиентов используются сертификаты X509. Клиентские рабочие станции физически не подключены к Интернету, связь осуществляется только по локальной сети. Сертификаты клиента проверяются наличием в списке сертификатов на серверном компоненте. Между основным серверным компьютером и резервным настроен обмен информацией только в сторону резервного, все изменения в основной БД дублируются в БД на резервном компьютере. Резервный компьютер в обычном режиме полностью изолирован, кроме обмена информацией с основным компьютером, к тому же он отслеживает состояние основного компьютера.
Реализован доступ пользователей согласно их правам доступа – «ролям», которые четко определены в БД. Таким образом, каждый пользователь имеет индивидуальный логин/пароль, привязанный к соответствующей «роли», регулирующей возможности пользователя.
В системе имеются следующие роли:
- главный врач – полный доступ к информации, имеет возможность читать и вносить информацию, а также редактировать некоторые разделы;
- директор клиники – полный доступ к информации, имеет возможность читать и вносить информацию, а также редактировать некоторые разделы;
- врач – по привязанным к нему пациентам может смотреть любую информацию, кроме Ф.И.О. пациента, которых нет в БД; может вносить информацию по назначаемому лечению, делать отмены, пользоваться всеми отчетами, печатными формами и предустановленной возможностью вывода большого объема информации для использования пациентом;
- медсестра – может видеть все назначения, сделанные врачом, вносить информацию об анализах и процедурах, использовать печатные формы;
- оператор БД – видит всех пациентов, может вносить их информацию (как анализы, так и личного характера), создавать новых пациентов, врачей, связи между ними, выполнять синхронизацию БД с бухгалтерской программой учета;
- оператор отдела закупок – видит все назначения лекарств по всем пациентам, может вносить информацию об окончании срока сертификации лекарств;
- системный администратор – может создавать новых пациентов, врачей, связи между ними, выполнять синхронизацию БД с бухгалтерской программой учета, осуществляет поддержку пользователей, для чего имеет доступ ко всем справочникам, поддерживает связь с разработчиками, выполняет все профилактические работы, работы по обновлению и восстановлению работы системы в случае необходимости.
Архитектура программного комплекса представлена на рисунке.
Инструменты разработки ПО
Рассмотрим более подробно все инструменты и ПО, использованные в рамках разработки ПО.
1. Mongo DB версия 3.0.
СУБД MongoDB обладает рядом преимуществ.
Бесструктурность. Преимущество документ-ориентированных БД, которой и является СУБД MongoDB, состоит в том, что они бесструктурны. Это делает их гораздо более гибкими, нежели традиционные реляционные БД, однако большая часть данных должна быть хорошо структурирована. В данном случае это условие соблюдается, следовательно, такой тип СУБД для разрабатываемой программы видится перспективным.
Быстрая запись. Область, для которой MongoDB особенно подходит, – это логгирование. Есть два аспекта MongoDB, которые делают запись быстрой. Во-первых, можно отправить команду записи и продолжить работу, не ожидая ее возврата и действительно свершившейся записи. Во-вторых, с появлением в версии 1.8 журналирования и с некоторыми улучшениями, сделанными в версии 2.0, стал возможным контроль поведения записи с учетом целостности данных. Эти параметры, в дополнение к тому, сколько серверов должны получить данные прежде чем запись будет считаться успешной, настраиваются на уровне отдельной записи, что дает большую степень контроля над выполнением записи данных и их долговечностью. Кроме указанных факторов производительности, при логгировании может оказаться полезной гибкая структура данных.
Устойчивость. MongoDB до версии 1.8 не обеспечивала устойчивость данных на одном сервере. Так, отказ сервера мог привести к потере данных. Решение всегда состояло в работе MongoDB на нескольких серверах (MongoDB поддерживает репликацию). Одной из самых важных функций, добавленных в MongoDB 1.8, стало журналирование. Журналирование является неким аналогом репликации данных на другой сервер и позволяет в случае сбоев восстановить БД без потерь.
Отсутствие транзакций. MongoDB не поддерживает транзакций. Но содержит в себе две альтернативы.
Первая альтернатива – это множество атомарных, то есть выполняющихся как единое целое, операций. Атомарность операций имеет особое значение в многопроцессорных компьютерах (и многозадачных ОС), так как доступ к разделяемым ресурсам должен быть обязательно атомарным. Атомарная операция открыта влиянию только одного потока.
Вторая альтернатива (когда атомарных операций не хватает) – это двухфазный коммит, то есть независимое от хранилища решение, осуществляемое в коде. Поддержка вложенных документов и бесструктурная архитектура MongoDB делают двухфазные коммиты достаточно доступными для использования.
Полнотекстовый поиск. В версии 3.0 поиск реализован и на русском языке с поддержкой морфологии.
Обработка данных. Для большинства задач обработки данных MongoDB использует MapReduce. Одно из преимуществ MapReduce в том, что для работы с большими объемами данных он может выполняться параллельно. В будущих релизах MongoDB планируется еще улучшить обработку огромных объемов данных.
Геопространственные данные. Особенно мощной функцией MongoDB является ее поддержка геопространственных индексов. Это позволяет сохранять x- и y-координаты у документов и затем находить документы вблизи ($near) определенных координат или внутри ($within) прямоугольника либо окружности.
Поддержка отказоустойчивости и масштабируемости. Асинхронная репликация, набор реплик и распределение БД на узлы.
2. Технология системы .NET 4 (4.5).
.NET Framework – программная платформа, выпущенная компанией Microsoft в 2002 году. Основой платформы является общеязыковая среда исполнения Common Language Runtime (CLR) [1], которая подходит для разных языков программирования. Функциональные возможности CLR доступны в любых языках программирования, использующих эту среду.
Основная идея при разработке .NET Framework – обеспечение свободы разработчика за счет предоставления ему возможности создавать приложения различных типов, способные выполняться на различных типах устройств и в различных средах. Вторым принципом стала ориентация на системы, работающие под управлением семейства ОС Microsoft Windows.
Программа для .NET Framework, написанная на любом поддерживаемом языке программирования, сначала переводится компилятором в единый для .NET промежуточный байт-код (Common Intermediate Language (CIL)). В терминах .NET получается сборка. Затем код либо исполняется виртуальной машиной, либо транслируется специальной утилитой в исполняемый код для конкретного целевого процессора.
Архитектура .NET Framework описана и опубликована в спецификации Common Language Infrastructure (CLI), разработанной Microsoft и утвержденной ISO и ECMA. В CLI описаны типы данных .NET, формат метаданных о структуре программы, система исполнения байт-кода и многое другое.
3. Язык разработки C#.
C# – объектно-ориентированный язык программирования [2]. Разработан в 1998–2001 гг. группой инженеров под руководством А. Хейлсберга в компании Microsoft как язык разработки приложений для платформы Microsoft .NET Framework. Впоследствии данный язык программирования был стандартизирован как ECMA-334 и ISO/IEC 23270.
C# относится к семье языков с C-подобным синтаксисом. Переняв многое от своих предшественников (языков C++, Pascal и в особенности Java), С#, опираясь на практику их использования, исключает некоторые модели, зарекомендовавшие себя как проблематичные при разработке программных систем, например, C# в отличие от C++ не поддерживает множественное наследование классов (между тем допускается множественное наследование интерфейсов).
C# разрабатывался как язык программирования прикладного уровня для CLR. CLR предоставляет C#, как и всем другим .NET-ориентированным языкам, многие возможности, которых лишены «классические» языки программирования [3].
4. Технология передачи данных WCF.
Windows Communication Foundation (WCF) – программный фреймворк, используемый для обмена данными между приложениями, входящий в состав .NET Framework. До своего выпуска в декабре 2006 года в составе .NET Framework 3.0 WCF был известен под кодовым именем Indigo.
WCF делает возможным построение безопасных и надежных транзакционных систем через упрощенную унифицированную программную модель межплатформенного взаимодействия. Комбинируя функциональность существующих технологий .NET по разработке распределенных приложений [4], WCF предоставляет единую инфраструктуру разработки, при умелом при- менении повышающую производительность и снижающую затраты на создание безопасных, надежных и транзакционных web-служб нового поколения. Заложенные в нее принципы интероперабельности позволяют организовать работу с другими платформами, для чего используются технологии взаимодействия платформ, например WSIT, разрабатываемые на базе открытого исходного кода.
Класс службы WCF не может существовать самостоятельно. Каждая служба WCF должна находиться под управлением некоторого процесса Windows, называемого хостовым процессом. Существуют несколько вариантов хостинга, в разрабатываемой программе предполагается применить хостинг с использованием IIS (Internet Information Server).
5. Криптография SSL.
SSL – криптографический протокол, подразумевающий более безопасную связь. Он использует асимметричную криптографию для аутентификации ключей обмена, симметричное шифрование для сохранения конфиденциальности, коды аутентификации сообщений для целостности сообщений. Протокол SSL обеспечивает защищенный обмен данных за счет двух элементов: аутентификации и шифрования.
SSL использует асимметричную криптографию для аутентификации ключей обмена, симметричный шифр для сохранения конфиденциальности [5], коды аутентификации сообщений для целостности сообщений. Протокол SSL предоставляет «безопасный канал», который имеет три основных свойства:
– канал является частным; шифрование используется для всех сообщений после простого диалога, который служит для определения секретного ключа;
– канал аутентифицирован; серверная сторона диалога всегда аутентифицируется, а клиентская делает это опционально;
– канал надежен; транспортировка сообщений включает в себя проверку целостности.
Преимуществом SSL [6] является то, что он не зависит от прикладного протокола. Протоколы приложений (HTTP, FTP, TELNET и т.д.) могут работать поверх протокола SSL совершенно прозрачно, то есть SSL может согласовывать алгоритм шифрования и ключ сессии, а также аутентифицировать сервер до того, как приложение примет или передаст первый байт сообщения.
Протокол SSL использует сертификаты для проверки соединения. Сертификаты расположены на безопасном сервере и используются для шифрования данных и идентификации web-сайта.
SSL-сертификат [7] можно получить, используя сертификат, выданный CA, самоподписанный сертификат, «пустой» сертификат.
Самоподписанный сертификат – это серти- фикат, созданный самим пользователем; в этом случае издатель сертификата совпадает с его владельцем. «Пустой» сертификат – сертификат, содержащий фиктивную информацию, используемую как временную для настройки SSL и проверки его функциональности в данной среде.
6. Web-сервер IIS.
IIS (Internet Information Services) – проприетарный набор серверов для нескольких служб Интернета от компании Майкрософт.
Основным компонентом IIS является web-сервер, который позволяет размещать в Интернете сайты. IIS поддерживает протоколы HTTP, HTTPS, FTP, POP3, SMTP, NNTP [8]. По данным компании Netcraft на октябрь 2011 года, более 21 млн сайтов обслуживаются web-сервером IIS, что составляет 12,46 % от общего числа web-сайтов.
7. Электронно-цифровая подпись.
Согласно статье 4 ФЗ «Об электронной цифровой подписи» (ЭЦП), ЭЦП признается равнозначной собственноручной подписи в документе на бумажном носителе при условии, что сертификат ключа подписи, относящийся к этой ЭЦП, не утратил силу (действует) на момент проверки или на момент подписания электронного документа при наличии доказательств, определяющих момент подписания.
Формат усовершенствованной подписи предусматривает обязательное включение в реквизиты подписанного документа доказательства момента создания подписи и доказательства действительности сертификата в момент создания подписи.
Для доказательства момента подписи используются штампы времени, соответствующие международной рекомендации RFC 3161 "Internet X.509 Public Key Infrastructure Time-Stamp Protocol (TSP)".
Доказательства действительности сертификата в момент подписи обеспечиваются благодаря вложению в реквизиты документа цепочки сертификатов до доверенного УЦ и OCSP-ответов. На эти доказательства также получается штамп времени, подтверждающий их целостность в момент проверки.
Безопасность ПО
Все действия, выполняемые программой, записываются во внешние БД, то есть ведется непрерывное логирование. Это позволяет администраторам программы отслеживать процесс работы программы и предотвращать возможные атаки на ранних стадиях. Например, ситуация, когда началось слишком частое добавление информации в одной из частей программы, может свидетельствовать о том, что злоумышленники получили доступ к внутренним сервисам программы. Это служит сигналом для администраторов к принятию контрмер. Все действия, совершаемые пользователями, также записываются (логируются) во внешние БД. Доступ к логам имеет только разработчик программы, другие пользователи не могут ничего исправить в записях относительно своих действий в системе.
Как было отмечено выше, в процессе работы программы происходит копирование информации в резервные БД. Работа со сторонними БД осуществляется в режиме «только добавление» (insert only), то есть информация может быть добавлена в стороннюю базу, но не меняет уже существующую там информацию. Более того, становится невозможным получение информации из сторонних БД, что повышает надежность защиты программы и предотвращает утечку информации. При этом сторонние БД используются администраторами программы для плановой проверки и контроля информации в основных базах. Несоответствие информации в основных и сторонних БД сигна- лизирует администраторам программы о возможном несанкционированном доступе и изменении данных в основных базах. В этом случае сторонние БД будут использованы для полного и опе- ративного восстановления информации в основных БД.
В заключение отметим, что в работе было описано ПО для учета и хранения клинической и социодемографической информации о больных в процессе динамического мониторинга клинических параметров и оценки эффективности лечения в посттрансплантационном периоде. Разработанное ПО построено на современных технологиях и позволяет решать задачи статистического анализа и прогнозирования хода лечения и состояния пациентов. Работы по созданию ПО были выполнены в рамках договора № 02.G25.31.0109 с Министерством образования и науки РФ.
Литература
1. Мак-Дональд М. WPF: Windows Presentation Foundation в .NET 4.5 с примерами на C# 5.0 для профессионалов. М.: Вильямс, 2013. 124 с.
2. Троелсен Э. Язык программирования C# 5.0 и платформа .NET 4.5. М.: Вильямс, 2015.
3. Рихтер Д. CLR via C#. Программирование на платформе Microsoft.NET Framework 4.5 на языке C#. СПб: Питер, 2015.
4. Сибраро П., Клайс К., Коссолино Ф., Грабнер Й. WCF 4: Windows Communication Foundation и .NET 4 для профессионалов. М.: Вильямс, 2011. 464 с.
5. Rescorla E. SSL and TLS: Designing and Building Secure Systems. 2011.
6. Braun J., Hülsing A., Wiesmaier A., Vigil M.A.G., Buchmann J. How to Avoid the Breakdown of Public Key Infrastructures. 2013, Public Key Infrastructures, Services and Applications Lecture Notes in Computer Science, vol. 7868, pp. 53–68.
7. Marinescu C., Tapus N. Some Critical Aspects of the PKIX TSP. Proc. 9th IFIP TC-6 TC-11 Intern. Conf. CMS`05. 2005, vol. 3677, pp. 286–288.
8. Адамс К. Администрирование сервера IIS 7. M.: Бином-Пресс, 2010.