Материал: Разработка информационной системы медицинского учреждения с использованием современных информационных технологий управления

Внимание! Если размещение файла нарушает Ваши авторские права, то обязательно сообщите нам

Внедрение МИС позволит:

· Избавиться от повторного ввода данных.

· Ускорить доступ к необходимой информации.

· Значительно повысить качество медицинской документации.

· Устранить избыточность назначений.

· Существенно снизить вероятность врачебной ошибки.

· Сократить сроки обследования и лечения.

· Повысить прозрачность деятельности медицинских учреждений и эффективность принимаемых управленческих решений.

1.3 Инструментальные средства прикладного программирования

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

Основным инструментальным средством разработки проекта был выбран язык программирования С++. Это компилируемый статически типизированный язык программирования общего назначения.

Поддерживает такие парадигмы программирования как процедурное программирование, модульность, раздельная компиляция, обработка исключений, абстракция данных, типы (объекты), виртуальные функции, объектно-ориентированное программирование, обобщенное программирование, контейнеры и алгоритмы, сочетает свойства как высокоуровневых, так и низкоуровневых языков. В сравнении с его предшественником - языком C, - наибольшее внимание уделено поддержке объектно-ориентированного и обобщённого программирования. Название «C++» происходит от названия языка C, в котором унарный оператор ++ обозначает инкремент переменной.

Являясь одним из самых популярных языков программирования, C++ широко используется для разработки программного обеспечения. Область его применения включает создание операционных систем, разнообразных прикладных программ, драйверов устройств, приложений для встраиваемых систем, высокопроизводительных серверов, а также развлекательных приложений (например, видеоигры). Существует несколько реализаций языка C++ - как бесплатных, так и коммерческих. Наиболее популярны проект GNU, Microsoft, Intel и Embarcadero (Borland). C++ оказал огромное влияние на другие языки программирования, в первую очередь на Java и C#.

При создании C++ Бьёрн Страуструп стремился сохранить совместимость с языком C. Множество программ, которые могут одинаково успешно транслироваться как компиляторами C, так и компиляторами C++, довольно велико - отчасти благодаря тому, что синтаксис C++ был основан на синтаксисе C.

В книге «Дизайн и эволюция C++» Бьёрн Страуструп описывает принципы, которых он придерживался при проектировании C++. Эти принципы объясняют, почему C++ именно такой, какой он есть. Некоторые из них:

·        Получить универсальный язык со статическими типами данных, эффективностью и переносимостью языка C.

·        Непосредственно и всесторонне поддерживать множество стилей программирования, в том числе процедурное программирование, абстракцию данных, объектно-ориентированное программирование и обобщённое программирование.

·        Дать программисту свободу выбора, даже если это даст ему возможность выбирать неправильно.

·        Максимально сохранить совместимость с C, тем самым делая возможным лёгкий переход от программирования на C.

·        Избежать разночтений между C и C++: любая конструкция, допустимая в обоих языках, должна в каждом из них обозначать одно и то же и приводить к одному и тому же поведению программы.

·        Избегать особенностей, которые зависят от платформы или не являются универсальными.

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

·        Не требовать слишком усложнённой среды программирования.

Программирование производилось на Qt - кросс-платформенный инструментарий разработки ПО на языке программирования C++.

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

Существуют версии библиотеки для Microsoft Windows, систем класса UNIX с графической подсистемой X11, iOS, Android, Mac OS X, Microsoft Windows CE, QNX, встраиваемых Linux-систем и платформы S60. В данный момент рассматривается возможность внедрения поддержки Qt в Windows Phone. Также идёт портирование на Haiku.

До недавнего времени библиотека Qt также распространялась ещё в одной версии: Qt/Embedded. Теперь эта платформа переименована в Qtopia Core и распространяется как отдельный продукт. Qtopia Core обеспечивает базовую функциональность для всей линейки платформ, предназначенных для разработки приложений для встраиваемых и мобильных устройств (КПК, смартфонов и т. п.).

Начиная с версии 4.5 Qt распространяется по 3 лицензиям (независимо от лицензии, исходный код Qt один и тот же):

Qt Commercial для разработки ПО с собственнической лицензией, допускающая модификацию самой Qt без раскрытия изменений;

GNU GPL для разработки ПО с открытыми исходниками распространяемыми на условиях GNU GPL;

GNU LGPL для разработки ПО с собственнической лицензией, но без внесения изменений в Qt.

До версии 4.0.0 под свободной лицензией распространялись лишь Qt/Mac, Qt/X11, Qt/Embedded, но, начиная с 4.0.0 (выпущенной в конце июня 2005), Qt Software «освободили» и Qt/Windows. Следует отметить, что существовали сторонние свободные версии Qt/Windows < 4.0.0, сделанные на основе Qt/X11.

Со времени своего появления в 1996 году библиотека Qt легла в основу тысяч успешных проектов во всём мире. Кроме того, Qt является фундаментом популярной рабочей среды KDE, входящей в состав многих дистрибутивов Linux.

Отличительная особенность Qt от других библиотек - использование Meta Object Compiler (MOC) - предварительной системы обработки исходного кода (в общем-то, Qt - это библиотека не для чистого C++, а для его особого наречия, с которого и «переводит» MOC для последующей компиляции любым стандартным C++ компилятором). MOC позволяет во много раз увеличить мощь библиотек, вводя такие понятия, как слоты и сигналы. Кроме того, это позволяет сделать код более лаконичным. Утилита MOC ищет в заголовочных файлах на C++ описания классов, содержащие макрос Q_OBJECT, и создаёт дополнительный исходный файл на C++, содержащий метаобъектный код.

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

Qt комплектуется визуальной средой разработки графического интерфейса «Qt Designer», позволяющей создавать диалоги и формы «мышью» (в режиме WYSIWYG). В поставке Qt есть «Qt Linguist» - графическая утилита, позволяющая упростить локализацию и перевод вашей программы на многие языки; и «Qt Assistant» - справочная система Qt, упрощающая работу с документацией по библиотеке, а также позволяющая создавать кросс-платформенную справку для разрабатываемого на основе Qt ПО. Начиная с версии 4.5.0 в комплект Qt включена среда разработки «Qt Creator», которая включает в себя редактор кода, справку, графические средства «Qt Designer» и возможность отладки приложений. «Qt Creator» может использовать GCC или Microsoft VC++ в качестве компилятора и GDB в качестве отладчика. Для Windows версий библиотека комплектуется компилятором, заголовочными и объектными файлами MinGW.

Библиотека разделена на несколько модулей, для четвёртой версии библиотеки это:

·        QtCore - классы ядра библиотеки, используемые другими модулями;

·        QtGui - компоненты графического интерфейса (в отличие от Gtk использующие аппаратное графическое ускорение через OpenGL);

·        QtNetwork - набор классов для сетевого программирования. Поддержка различных высокоуровневых протоколов может меняться от версии к версии. В версии 4.2.x присутствуют классы для работы с протоколами FTP и HTTP. Для работы с протоколами TCP/IP предназначены такие классы, как QTcpServer, QTcpSocket для TCP и QUdpSocket для UDP;

·        QtOpenGL набор классов для работы с OpenGL;

·        QtSql набор классов для работы с базами данных с использованием языка структурированных запросов SQL. Основные классы данного модуля в версии 4.2.х: QSqlDatabase класс для предоставления соединения с базой, для работы с какой-нибудь конкретной базой данных требует объект, унаследованный от класса QSqlDriver абстрактного класса, который реализуется для конкретной базы данных и может требовать для компиляции SDK базы данных. Например, для сборки драйвера под базу данных FireBird/InterBase требует .h файлы и библиотеки статической линковки, входящие в комплект поставки данной БД;

·        QtScript классы для работы с Qt Scripts;

·        QtSvg классы для отображения и работы с данными Scalable Vector Graphics (SVG);

·        QtXml модуль для работы с XML, поддерживается SAX и DOM модели работы;

·        QtDesigner классы создания расширений QtDesigner’а для своих собственных виджетов;

·        QtUiTools классы для обработки в приложении форм Qt Designer;

·        QtAssistant справочная система;

·        Qt3Support модуль с классами, необходимыми для совместимости с библиотекой Qt версии 3.х.х;

·        QtTest модуль для работы с UNIT тестами;

·        QtWebKit модуль WebKit, интегрированный в Qt и доступный через её классы;

·        QtXmlPatterns модуль для поддержки XQuery 1.0 и XPath 2.0;

·        Phonon модуль для поддержки воспроизведения и записи видео и аудио, как локально, так и с устройств и по сети;

·        QtCLucene модуль для поддержки полнотекстового поиска, применяется в новой версии Assistant в Qt 4.4;

·        ActiveQt модуль для работы с ActiveX и COM технологиями для Qt-разработчиков под Windows.

·        QtDeclarative модуль, предоставляющий декларативный фреймворк для создания динамичных, настраиваемых пользовательских интерфейсов.

Библиотека использует собственный формат проекта, именуемый .pro файлом, в котором собрана информация о том, какие файлы будут скомпилированы, по каким путям искать заголовочные файлы и много другой информации. Впоследствии при помощи утилиты qmake из них получаются makefile для make-утилиты компилятора. Также есть возможность работы при помощи интеграторов с Microsoft Visual Studio 2003/2005/2008/2010. Совсем недавно стала доступна интеграция в Eclipse для версии библиотеки 4.х.х.

Одним из весомых преимуществ проекта Qt является наличие качественной документации. Статьи документации снабжены большим количеством примеров. Исходный код самой библиотеки хорошо форматирован, подробно комментирован и легко читается, что также упрощает изучение Qt.

1.4    Тестирование программного обеспечения

Тестирование программного обеспечения процесс исследования программного обеспечения (ПО) с целью получения информации о качестве продукта.

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

С точки зрения ISO 9126, Качество (программных средств) можно определить как совокупную характеристику исследуемого ПО с учётом следующих составляющих:

·        Надёжность

·        Сопровождаемость

·        Практичность

·        Эффективность

·        Мобильность

·        Функциональность

Ниже приведены некоторые виды тестирования программного обеспечения:

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

Функциональные требования включают:

·        Функциональная пригодность.

·        Точность.

·        Способность к взаимодействию

·        Соответствие стандартам и правилам

·        Защищённость

Тестирование стабильности или надежности - один из видов тестирования ПО, целью которого является проверка работоспособности приложения при длительном тестировании со средним (ожидаемым) уровнем нагрузки.

Перед тем как подвергать ПО экстремальным нагрузкам стоит провести проверку стабильности в предполагаемых условиях работы, то есть погрузить продукт в полную рабочую атмосферу. При тестировании, длительность его проведения не имеет первостепенного значения, основная задача - наблюдая за потреблением ресурсов, выявить утечки памяти и проследить, чтобы скорость обработки данных и/или время отклика приложения в начале теста и с течением времени не уменьшалась. В противном случае вероятны сбои в работе продукта и перезагрузки системы.

Тестирование безопасности оценка уязвимости программного обеспечения к различным атакам.

Компьютерные системы очень часто являются мишенью незаконного проникновения. Под проникновением понимается широкий диапазон действий: попытки хакеров проникнуть в систему из спортивного интереса, месть рассерженных служащих, взлом мошенниками для незаконной наживы. Тестирование безопасности проверяет фактическую реакцию защитных механизмов, встроенных в систему, на проникновение. В ходе тестирования безопасности испытатель играет роль взломщика. Ему разрешено все:

·        попытки узнать пароль с помощью внешних средств;

·        атака системы с помощью специальных утилит, анализирующих защиты;

·        подавление, ошеломление системы (в надежде, что она откажется обслуживать других клиентов);

·        целенаправленное введение ошибок в надежде проникнуть в систему в ходе восстановления;

·        просмотр несекретных данных в надежде найти ключ для входа в систему.

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

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

·        Аппаратная платформа;

·        Сетевые устройства;

·        Периферия (принтеры, CD/DVD-приводы, веб-камеры и пр.);

·        Операционная система (Unix, Windows, MacOS, ...)

·        Базы данных (Oracle, MS SQL, MySQL, ...)

·        Системное программное обеспечение (веб-сервер, файрволл, антивирус)

·        Браузеры (Internet Explorer, Firefox, Opera, Chrome, Safari)

2. РАЗРАБОТКА ИНФОРМАЦИОННОЙ СИСТЕМЫ МЕДИЦИНСКОГО УЧРЕЖДЕНИЯ С ИСПОЛЬЗОВАНИЕМ СОВРЕМЕННЫХ ИНФОРМАЦИОННЫХ ТЕХНОЛОГИЙ УПРАВЛЕНИЯ

2.1 Определение требований к информационной системе медицинского учреждения

Информатизация деятельности учреждений здравоохранения уже давно стала насущной необходимостью. Обработка массивов финансовой, медицинской и статистической информации, что все время увеличиваются, стала возможна только с использованием современных информационных и компьютерных технологий. Вырос не только объем информации - повысились требования к скорости ее обработки. С каждым годом вышестоящие организации повышают требования к передаче так называемых “электронных отчетов” (то есть отчетов в электронном виде). Неуклонно растет роль электронного обмена данными между субъектами здравоохранения с применением электронной почты и Интернет.

В настоящее время каждое лечебно-профилактическое учреждение (ЛПУ) в той или иной мере охвачено информатизацией. В основной массе это локальные не взаимосвязанные между собой системы автоматизации разных направлений деятельности ЛПУ. Практически информатизация регионального здравоохранения охватывает лишь финансово-экономические службы ЛПУ: бухгалтерия, планово-экономический отдел, страховая медицина. Для повышения качества и доступности медицинской помощи в ЛПУ необходимо проведение комплексной автоматизации всех видов деятельности в учреждении.