Разработка информационной системы управления данными для медицинского центра СевКавГТУ, г. Ставрополь

 

ВВЕДЕНИЕ


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

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

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

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

Во втором разделе пояснительной записки рассмотрены вопросы реализации информационной системы «Medic». При разработке базы данных этой информационной системы использовалось PostgreSQL, а сама информационная система была реализована в Perl с использованием HTML-шаблонов.

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

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

В заключении подведены основные итоги дипломного проектирования и намечены перспективные направления дальнейшего развития его темы.

Библиографический список содержит перечень из 22 источников информации.

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

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


1.1 Результаты предпроектного обследования


1.1.1 Объекты и методы проведения предпроектного обследования

В рамках темы дипломного проекта объектами обследования являются:

-медицинский центр Северо-Кавказского государственного технического университета (СевКавГТУ);

-функциональная структура медицинского центра;

-состав процессов, протекающих в медицинском центре;

-процедуры, входящие в состав процессов.

Выбранные методы проведения обследования медицинского центра СевКавГТУ приведены в таблице 1.1.


Таблица 1.1 - Методы организации проведения обследования

Критерии классификации методов организации проведения обследованияВыбранный методПо цели проектированияЛокальное обследованиеПо числу исполнителейИндивидуальное обследованиеПо степени охвата объектаСплошное обследованиеПо отношению к этапамПоследовательное обследование

Характеристика методов сбора информации, использованной в ходе прохождения преддипломной практики в медицинском центре СевКаГТУ, представлена в таблице 1.2.

Таблица 1.2 - Характеристика методов сбора материалов обследования

Название методов сбора материалов обследованияХарактеристика методовСилами исполнителейМетод анализа операцийПо числу исполнителейЛичное наблюдениеПо степени охвата объектаБеседы и консультации с директором, кредитными инспекторамиПо отношению к этапамОпрос должностных лиц на рабочих местах

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


1.1.2 Программа проведения обследования

Программа обследования медицинского центра СевКавГТУ представлена в таблице 1.3.


Таблица 1.3 - Программа обследования предприятия

Наименование вопросаИсточник информацииПолучатель информации123Общие сведения о предприятииГлавный врачПроектировщик Прохоров К. Д.Организационная структураАналогичноАналогичноЦели функционированияАналогичноАналогичноФункционирование области деятельностиЗаведующая регистратуройАналогичноДокументооборотАналогичноАналогичноФормы документовАналогичноАналогичноПорядок создания и хранения документовАналогичноАналогичноНаличие средств вычислительной техники и программного обеспеченияАналогичноАналогичноХарактеристики существующей информационной системыАналогичноАналогичноТехнологии, методы и технические средства преобразования информацииАналогичноАналогичноПроблемные ситуации в работе информационной системыАналогичноАналогично

План-график выполнения работ на стадии сбора материалов обследования представлен в таблице 1.4. Он разделен на девять этапов. Работы проводились в срок прохождения преддипломной практики. Дата начала обследования - 10.01.11 г., дата завершения обследования - 20.03.11 г.


Таблица 1.4 - План-график выполнения работ на стадии сбора материалов обследования медицинского центра

Наименование вопроса Код работыИсполнительДата началаКол-во днейДата окончания123456Общие сведения о предприятии001 Проектировщик Прохоров К. Д.10.01.11312.01.11Организационная структура 002 Аналогично13.01.11618.01.11Цели функционирования003Аналогично19.01.11321.01.11Функциональные области деятельности004 Аналогично22.01.11526.01.11Документооборот005Аналогично27.01.11531.01.11Формы документов006Аналогично01.02.11505.02.11Порядок создания и хранения документов007Аналогично06.02.11914.02.11Наличие средств вычислительной техники и ПО008Аналогично15.02.11519.02.11Характеристики существующей информационной системы009Аналогично20.02.11524.02.11Технологии, методы и технические средства преобразования информации010Аналогично25.02.11428.02.11Проблемные ситуации в работе информационной системы011Аналогично1.02.11506.03.11Всего затрачено дней55

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


1.1.3 Результаты предпроектного обследования и их анализ

Общая характеристика. В 1971 году по приказу Совета Министров СССР в Ставрополе на базе филиала Краснодарского политехнического института образован Ставропольский политехнический институт, в состав которого вошли также Невинномысский и Черкесский УПК.

В начале 1992 года разработана программа перехода института в ранг технического университета, а в 1994 году приказом Комитета Российской Федерации по высшему образованию №524 от 26.05.94 Ставропольский политехнический институт преобразован в Ставропольский технический университет. Ввиду того, что Ставропольский технический университет являлся одним из ведущих вузов региона, единственным по своему профилю на Северном Кавказе, приказом Министерства высшего и профессионального образования Российской Федерации от 29.04.99 № 1180 он переименован в Северо-Кавказский государственный технический университет.

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

СевКавГТУ является многопрофильным образовательно-научным комплексом с широко развитой инфраструктурой и современной материально-технической базой, обеспечивающим качественную подготовку специалистов по техническим и технологическим, естественнонаучным и естественнотехническим, экономико-управленческим и социально-гуманитарным специальностям для Ставропольского края, республик Северного Кавказа и других субъектов Российской Федерации.

Место нахождения СевКавГТУ: Россия, Ставропольский край, г. Ставрополь, проспект Кулакова, дом 2. Почтовый адрес: Россия, 355029, г. Ставрополь, проспект Кулакова, дом 2.

Медицинский центр является подразделением СевКавГТУ и проводит прием студентов, преподавателей и сотрудников, нуждающихся в квалифицированной медицинской помощи, а так же проводит регулярные медицинские комиссии и вакцинации.

.1.3.2 Организационная структура. Под организационной структурой управления понимается состав, взаимосвязь и соподчиненность совокупности организационных единиц, выполняющих различные функции по управлению организацией. Такая структура формируется исходя из состава, содержания и трудоемкости выполнения общих и специальных функций управления [15]. Организационно-управленческая структура СевКавГТУ имеет пирамидальное строение.

Имеется три уровня управления: верхний (высший), средний и оперативный (низший). Верхнему уровню управления соответствует организационно управленческая подсистема. Средний уровень управленческой структуры предоставляет функции входящие в обеспечивающую и производственную подсистемы. Организационно-управленческая структура СевКавГТУ изображена на рисунке 1.1.

К высшему уровню управления университетом относятся: ректор университета, проректоры университета: проректор по учебной работе, проректор по науке, информатизации и инновационной деятельности, проректор по ремонту и капитальному строительству, проректор по экономике, финансам и коммерческой деятельности, проректор по воспитательной работе, проректор по международному сотрудничеству, проректор по заочному, дистанционному, ускоренному обучению. На высшем уровне выполняются функции прогнозирования и стратегического планирования и взаимодействие с внешней средой. Временная перспектива от одного до пяти лет. Уровень сложности достаточно высок. Результатом деятельности на этом уровне являются стратегия и планы.

К среднему уровню управлению относятся: бухгалтерия, отдел кадров, учебно-методическое управление, научно-технический центр и т. д.

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

В подразделении медицинского центра главный врач подчиняется непосредственно ректору университета. В свою очередь все сотрудники центра подчиняются главному врачу.

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

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

Главный врач решает вопросы, связанные с управлением медицинского центра.

Рисунок 1.1 - Схема организационной структуры управления медицинского центра СевКавГТУ


Функциональные области деятельности. Функциональная структура предприятия. Управление в любой организации - это процесс взаимодействия между управляющей, управляемой системами (субъектом и объектом управления) и внешней средой. Управляющая система представляет собой совокупность тех органов и лиц, которые осуществляют целенаправленное воздействие с учетом информации о состоянии объекта управления и внешней среды. Управляемая система является тем объектом, на который направлены определенные управленческие воздействия с целью улучшения функционирования управляемого объекта, придания ему конкретных форм развития в интересах достижения намеченного результата [5].

Конкретная функциональная структура управления определяется в зависимости от сочетания двух основных типов руководства - линейного (генеральный директор, совет директоров) и функционального (специализация руководителей по отдельным функциям управления) [6].

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

В основу декомпозиции могут быть положены различные основания, например: временное, пространственное, информационное, функциональное и другие.

Целесообразней делить систему на подсистемы по функциональному признаку, то есть на основе выполняемых системой функций, а также существующей линейной структуры управления. Функциональная иерархия предполагает специализацию по отдельным функциям управления на всех уровнях этой иерархии [7].

Функциональные задачи и подзадачи предприятия представлены в виде таблицы (таблица 1.5).


Таблица 1.5 - Функциональные задачи и подзадачи СевКавГТУ

Номер и название функциональной областиНомер и содержание функциональной задачи1. Управление планированием1.1 Прогнозирование спроса на выпускаемых специалистов1.2 Внесение изменений в сроки, периоды обучения, графики проведения экзаменов и зачетов1.3 Составление требований к подготовке специалистов2. Управление учебным процессом2.1 Составление расписания занятий2.2 Качественный подбор професорско-преподавательского состава3. Управление здравоохранением3.1 Контроль за здоровьем сотрудников и студентов3.2 Оказание необходимой медицинской помощи сотрудникам и студентам4. Управление обеспечением4.1 Управление кадрами4.2 Управление материальными средствами4.3 Делопроизводство5. Управление научной деятельностью5.1 Организация и планирование научно-исследовательских работ по инновационной деятельности и проведения фундаментальных и поисковых исследований5.2 Организация семинаров, конференций5.3 Создание благоприятных условий при подготовке специалистовОрганизационно-управленческая модель.

Организационно-управленческая модель предприятия (таблица 1.6), представлена в виде таблицы-матрицы, в которой приняты следующие обозначения:

Х - полное участие в процессе;

/ - частичное участие в процессе;

- ответственность за выполнение процесса.


Таблица 1.6 - Организационно-управленческая модель СевКавГТУ

Структурные подразделенияНомера и наименование задач1. Управление планированием2. Управление учебным процессом3. Управление здравоохранением4. Управле-ние обеспечением5. Управление научной деятельностью1.11.21.32.12.23.13.24.14.24.35.15.25.3УМУ×,/×,/×,/Деканаты//×,/Кафедры//×,/ИУП/×,/Лаборатории×,/НТЦ×,/Бухгалтерия×,/Отдел кадров×,/ОЭОКК//Медицинский центр0,×0,×/

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

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

График документооборота - это график или схема, которые описывают движение первичных документов на предприятии от момента их создания до момента передачи на хранение [10].

Унифицированной формы графика документооборота нет. Каждое предприятие составляет график самостоятельно, исходя из особенностей деятельности[11].

Документооборот в медицинском центре СевКавГТУ, осуществляется в виде потоков документов между теми сотрудниками, которые анализируют и производят информацию или принимают решения (главный врач, проректор) и пунктами технической обработки документов (регистратура, врачи).

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

Схема движения документов в медицинском центре отражена в таблице 1.7.


Таблица 1.7 - Схема документооборота медицинского центра СевКавГТУ

ДокументДеканатСтудент или сотрудникРегистратураВрачГлавный врачПроректор по экономикеПроректор по науке информатизации и инновационной деятельностиНачальник ОЭОККМедицинская картаСправка о прохождении флюорографииОтчет о проделанной работе врачаЗаявление на перемещение техникиЗаявление на приобретение техники

Наличие средств вычислительной техники и программного обеспечения. В подразделении находятся средства вычислительной техники и программного обеспечения. Используется следующее компьютерное и периферийное оборудование:

1.Системный блок Intel Celeron D 2.66ГГц /512Мбайт /80Гбайт /HDD /CDRW /Video /Sound /Lan /ATX 250 Вт.

2.Системный блок Intel Pentium 4 2.4 ГГц /512 Мбайт /320 Гбайт /DVD+CDRW /Video /Sound /Lan /ATX 400 Вт.

3.Маршрутизатор D-Link.

4.Принтер HP Laser Jet 1300.

5.Принтер HP Laser Jet 1200.

6.Копир Canon FC 228.

Так же имеется сеть топологии звезда, показанная на рисунке 1.2. Где связующим звеном является маршрутизатор D-Link, к которому подключены все компьютеры подразделения. Это дает возможность реализовать программный продукт в клиент-серверной технологии, что избавит от ряда проблем, крупнейшими из которых является разрозненность и актуальность данных.

Рисунок 1.2 - Схема локальной вычислительной сети медицинского центра СевКавГТУ


В качестве программного обеспечения, обеспечивающего деятельность подразделения, используется следующее:

-операционная система - Windows XP;

-офисный пакет приложений, в стандартной комплектации - Microsoft Office 2003;

?архиватор WinRARv3.62;

- антивирусные средства NOD32.


1.1.4 Анализ проблемных ситуаций и обоснование путей их решения

Очевидным и очень значимым слабым местом функционирования подразделения являются отсутствие автоматизированных процессов. Вся отчетность набирается на компьютерах вручную, проверка флюорографий происходит во время подготовки отчета и занимает значительное время, так же врачами проверяются все данные, для составления отчета, вручную. В таблице 1.8 представлены проблемные ситуации в работе медицинского центра СевКавГТУ и предложены способы их решения.

Таблица 1.8 - Проблемные ситуации и способы их разрешения

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

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


1.2 Формулировка задач проектирования


1.2.1 Общие сведения

Полное наименование проекта - «Система управления данными медицинского центра».

Код системы - «Medic».

Наименование организации-разработчика - Северо-Кавказский государственный технический университет, факультет ИТТ, кафедра прикладной информатики, студент группы ПИ-061 Прохоров Константин Дмитриевич

Наименование организации-заказчика - медицинский центр Северо-Кавказского государственного технического университета.

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

Источники финансирования - работы проводятся без оплаты.


1.2.2 Назначение и цели создания информационной системы

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

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

-время на доступ к требуемой информации уменьшается до минимума;

-снижается вероятность ошибки при вводе информации и формировании отчетности;

-вводимая информация проверяется на уникальность.


1.2.3 Характеристика объекта автоматизации

Объектом автоматизации является каждое рабочее место врачей в подразделении, на котором осуществляется одна или несколько следующих задач:

-прием студентов или сотрудников;

-уточнение данных медицинских карт;

-прием справок о прохождении флюорографии;

-составление отчетности.


1.2.4 Требования к системе

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

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

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


1.2.5 Состав и содержание работ по созданию системы

Предусмотрен следующий состав и содержание работ по созданию информационной системы:

изучение предметной области и составление технического задания с 10 января по 8 февраля 2011 г.;

кодирование с 8 по 20 февраля 2011 г.;

отладка и тестирование с 20 по 28 февраля 2011 г.;

подготовка технической документации с 28 февраля по 4 марта 2011 г.;

сдача проекта заказчику с 4 по 6 марта 2011 г.

1.2.6 Порядок контроля приемки системы

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


1.2.7 Требования к составу и содержанию работ по подготовке объекта автоматизации к вводу системы в действие

Для ввода системы в действие следует произвести следующие работы:

1.Установить следующее программное обеспечение на сервер:

-PostgreSQL версии 8.4.2 или выше;

-Apache не ниже 2.0;

-Perl версии 5.8.9 и модули Template, CGI, DBI, Spreadsheet::WriteExcel, utf8, Encode, POSIX, CGI::Session, DBI::PgPP.

2.Произвести обучение системного администратора.

3.Произвести обучение пользователей работе с разработанной системой.


1.2.8 Требование к документированию

Разработчик предоставляет файлы информационной системы «Medic» в электронном формате на CD-ROM вместе с результатами тестирования и краткими инструкциями для администратора и врачей.


.2.9 Источники разработки

Источниками разработки являются:

  • заказ на разработку информационной системы;
  • материалы и отчеты по преддипломной практике;
  • медицинские карты студентов;
  • отчеты по флюорографии студентов;
  • прививочные журналы.

Выводы

1.Медицинский центр СевКавГТУ является подразделением Северо-Кавказского государственного технического университета и его основная задача оказание необходимой медицинской помощи студентам и сотрудникам университета.

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

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

2. РЕАЛИЗАЦИЯ ИНФОРМАЦИОННОЙ СИСТЕМЫ «MEDIC»


2.1 Обоснование выбора среды разработки


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

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

1.О разработке базы данных на основе PostgreSQL, что обусловлено ее современностью, бесплатностью и конкурентоспобностью, в сравнении с аналогичными продуктами. В PostgreSQL реализованы многие возможности, обычно присутствующие только в коммерческих СУБД, таких как DB2 и Oracle. Простота расширения - в PostgreSQL поддерживаются пользовательские операторы, функции, методы доступа и типы данных. Процедурные языки - предусмотрена поддержка внутренних процедурных языков, в том числе специализированного языка PL/pgSQL, являющегося аналогом PL/SQL, процедурного языка Oracle. Одним из преимуществ PostgreSQL является возможность использования Perl, Python и TCL в качестве внутренних процедурных языков.

2.О разработке клиентской части основанной на технологии html, что обусловлено возможностью организации кроссплатформенности как браузеров, так и операционных систем.

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


2.2 Реализация информационной системы «Medic»


2.2.1 Концептуальное проектирование системы «Medic»

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

В ходе концептуального проектирования было решено создать 29 страниц, описанных в таблице 2.1.


Таблица 2.1 - Страницы и их описание

СтраницаНазначение12Start pageСтраница приветствия, которая появляется при самом первом входе пользователя в систему, дальше он ее не видит, так как после выхода пользователя, запоминается последняя посещенная страница, с которой он и начинаетПрава пользователейЯвляется страницей-подменю, где пользователь может выбрать, с чем ему работать: группа, принадлежность пользователей и пользователиГруппыНа этой странице предлагается работа с группами: создание, удаление и редактирование группыПринадлежность пользователейНа этой странице предлагается работа с группами прав пользователей, что значительно ускоряет процесс назначения прав, так как достаточно выбрать пользователя и отметить группы к которым он должен относиться, после чего система автоматически даст необходимые права, которые соответствуют этой группе, при этом пользователь может относиться к нескольким группам12ПользователиПредлагается работать именно с пользователем: создание нового пользователя, редактирование личных данных или редактирование прав заданного пользователяОкна и функцииЯвляется страницей-подменю, где пользователь может выбрать с чем ему работать: окна или функцииОкнаПредлагает работать с окнами: создать новое окно (страницу), отредактировать название или имя файла уже существующей страницы и удалить не нужную страницыФункцииПредлагается работать с функциями, о которых уже было сказано выше, пользователь может создать новые функции если это требуется (например дальнейшая разработка системы), редактирование названия функции и удаление ее, в случае если она потеряет актуальностьРедактор населенных пунктовЯвляется страницей-подменю, где пользователь может выбрать, с чем ему работать: регион, район и городРегионПозволяет работать со списком регионов: создание, редактирование и удалениеРайонПозволяет работать со списком районов: создание, редактирование и удалениеГородПозволяет работать со списком городов: создание, редактирование и удалениеДолжности сотрудниковПозволяет работать со списком должностей сотрудников: создание, редактирование и удалениеЖурнал прививокПозволяет работать со списком прививок. Создание, редактирование и удалениеТип диагнозаПозволяет работать со списком диагнозов: создание, редактирование и удалениеЖурнал диагнозовПозволяет работать со списком диагнозов: создание, редактирование и удалениеКонтингентЯвляется страницей-подменю, где пользователь может выбрать, с чем ему работать: факультеты, группы или студентыФакультетыПозволяет работать со списком факультетов: создание, редактирование и удалениеГруппыПозволяет работать со списком групп: создание, редактирование и удаление12СтудентыПозволяет работать со списком студентов: создание, редактирование и удалениеКартыЯвляется страницей-подменю, где пользователь может выбрать, с чем ему работать: добавление карты и редактирование картыДобавление картыПозволяет создать карту для студента, процесс аналогичный заведению новой карты в бумажной формеРедактирование картыПозволяет видеть общую информацию о медицинской карте и редактировать ее в случае необходимостиДиагнозыЯвляется страницей-подменю, где пользователь может выбрать, с чем ему работать: история болезней и прием больногоИстория болезнейОтображает общую информацию о всех посещениях и в случае необходимости просмотр подробностейПрием больногоСлужит для внесения информации о посещении студентом врачаФлюорографияОтображает списки флюорографии, в которых указывается статус прохождения (пройдена или не пройдена), а так вносить дату последнего прохождения. Так же формирует отчеты по группе и факультетуПрививкиОтображает список сделанных прививок с полной информацией, а так же позволяет вносить запись о новой прививкеСправкаОтображает справку по системе, при нажатии на кнопку справки, отображается справка по окну из которого она была вызвана, но так же пользователь может перейти в содержание справки, где будет список всех доступных ему окон

Схема расположения станиц представлена на рисунке 2.1.


Рисунок 2.1 - Концептуальная схема расположения страниц системы «Medic»


Концептуальная схема позволяет наглядно показать расположение всех страниц системы «Medic».

2.2.2 Создание логической модели базы данных информационной системы

Определение сущностей модели. В процессе проектирования базы данных вся требуемая информация была разделена на 28 сущностей (таблиц):

-area (далее как район) - содержит в себе список район, из которых прибыли студенты на обучение в университете;

-card (далее как карта) - содержит в себе информацию о медицинской карте;

-comments (далее как комментарии) - комментарии к диагнозу;

-diagnosis (далее как диагнозы) - история диагнозов студента ;

-employees (далее как информация_сотруднике) - информация о сотрудниках;

-faculty (далее как факультет) - список факультетов;

-fluorography (далее как флюорография) - история прохождения флюорографии студентом ;

-func (далее как функции) - список функций работы с системой;

-group_fac (далее как группа_факультета) - список групп в факультете;

-grp (далее как группа) - список групп для работы с правами доступа к системе;

-grp_func (далее как группа_функция) - служит для реализации связи М:М между таблицами группа и функция;

-history_connections (далее как история_соединений) - история всех соединений к базе данных, служит для мониторинга;

-history_session (далее как история_сессий) - история всех сессий, служит для мониторинга всех посещений сотрудника;

-jornal_diagnosis (далее как журнал_диагнозов) - журнал диагнозов;

-jornal_vaccin (далее как журнал_прививок) - журнал прививок;

-post (далее как должность) - должность сотрудников;

-region (далее как регион) - список регионов;

-sesion (далее как сессия) - список последних сессий сотрудников;

-sot (далее как сотрудник) - список сотрудников;

-sot_func (далее как сотрудник_функции) - служит для реализации связи М:М между таблицами сотрудник и функции;

-sot_grp (далее как сотрудник_группа) - служит для реализации связи М:М между таблицами сотрудник и группа;

-students (далее как студенты) - список студентов;

-town (далее как город) - список городов;

-transaction_history (далее как история_транзакций) - история транзакций, служит для мониторинга действий пользователя по вносимым изменениям;

-treatment (далее как лечение) - назначенное лечение к диагнозу;

-type_diagnosis (далее как тип_диагноза) - список диагнозов;

-vaccine (далее как прививки) - история всех прививок студента;

-wnd (далее как окна) - список окон приложения для управления;

Инфологическое проектирование. Цель инфологического моделирования - обеспечение наиболее естественных для человека способов сбора и представления той информации, которую предполагается хранить в созданной БД. Поэтому инфологическую модель пытаются строить по аналогии с естественным языком. Основными конструктивными элементами инфологических моделей являются сущности, связи между ними и их свойства [14]. Модель «сущность - связь» спроектированной базы данных приведена на рисунке 2.2.

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

Таблица 2.2 - Отношения между сущностями

Номер связиРодительская сущностьДочерняя сущностьТип связи12341СотрудникФункцииМ:М2ГруппаФункцииМ:М3ОкнаФункцииМ:М4ОкнагруппаМ:М5СотрудникГруппаМ:М6СотрудникИнформация_сотруднике1:М7СотрудникДолжность1:М8СотрудникДиагнозы1:М9СотрудникПрививки1:М10СотрудникСессия1:М11ФакультетГруппа1:М12ГруппаСтудент1:М13СтудентКарта1:М14КартаРегион1:М15КартаРайон1:М16КартаГород1:М17РегионРайон1:М18РайонГород1:М19КартаФлюорография1:М20КартаДиагнозы1:М21КартаПрививки1:М22ДиагнозыКомментарий1:М23диагнозылечение1:М24диагнозыжурнал_диагнозов1:М25диагнозытип_диагноза1:М26прививкижурнал_прививок1:М

Инфологическая модель представлена на рисунке 2.2

Рисунок 2.2 - Инфологическая модель БД


Как видно из рисунка 2.2 и таблицы 2.2 между таблицами связи 1, 2, 3, 4, 5 являются связями «многие ко многим», а все остальные «один ко многим».

Задание первичных ключей сущностей. Ключ - это минимальный набор атрибутов, по значениям которых можно однозначно найти требуемый экземпляр сущности. Это одно из основных понятий баз данных, используемых при контроле целостности информации. Разделяют первичные и внешние ключи. Первичный ключ - это уникальное поле (или несколько полей), однозначно определяющее записи таблицы базы данных. Внешние ключи - это поля таблицы, которые, как правило, соответствуют первичным ключам из других таблиц. Первичный ключ не может принимать неопределённые значения [17].

Ниже, в таблице 2.3, приведены ключи для каждой сущности.


Таблица 2.3 - Ключи

ТаблицаКлючТип ключа123районid_areaprimaryid_regionregularкартаid_cardprimaryid_studregularid_regionregularid_arearegularid_townregularкомментарииid_commentsprimaryid_commentsregularдиагнозыid_diagprimaryid_cardregularid_sotregularid_type_diagregularid_commentsregularдиагнозыid_treatmentregularid_jornal_diagregularинформация_сотрудникеid_emplprimaryid_sotregularфакультетid_facprimaryфлюорографияid_fluorprimaryid_cardregularфункцииfunc_idprimaryгруппа_факультетаid_grprimaryid_facregularгруппаidprimaryгруппа_функцияidprimaryfunc_idregularwnd_idregulargrp_idregularистория_соединенийid_connectprimaryистория_сессийid_sesprimaryжурнал_диагнозовid_jornal_diagprimaryжурнал_прививокid_jornal_vaccinprimaryдолжностьid_postprimaryid_sotregularрегионid_regionprimaryсессияsesionprimaryid_sotregularсотрудникid_sotprimaryсотрудник_функцииidprimarysot_idregularfunc_idregularwnd_idregularсотрудник_группаid_sgprimarygrp_idregularsot_idregularстудентыid_studprimaryid_grregularгородid_townprimaryid_arearegularистория_транзакцийid_tranprimaryлечениеid_treatmentprimaryтип_диагнозаid_type_diagprimaryпрививкиid_vaccinprimaryпрививкиid_cardregularid_sotregularid_jornal_vaccinregularокнаid_wndprimary

Теперь можно приступить к более тщательному анализу данных и объединению отдельных элементов данных в объекты. Эти объекты станут впоследствии основой для создания таблиц в проектируемой базе данных.

Даталогическая модель. Даталогическое проектирование - создание схемы базы данных на основе конкретной модели данных, например, реляционной модели данных. Для реляционной модели данных даталогическая модель - набор схем отношений, обычно с указанием первичных ключей, а также «связей» между отношениями, представляющих собой внешние ключи[18].

Для даталогических моделей определена методология построения диаграмм, IDEF.- методологии семейства ICAM (Integrated Computer-Aided Manufacturing) для решения задач моделирования сложных систем, позволяет отображать и анализировать модели деятельности широкого спектра сложных систем в различных разрезах. При этом широта и глубина обследования процессов в системе определяется самим разработчиком, что позволяет не перегружать создаваемую модель излишними данными[19].

На рисунке 2.3 показана даталогическая модель базы данных с использование методологии IDEF1X.

IDEF1X (IDEF1 Extended) - методология построения реляционных структур (баз данных), относится к типу методологий «Сущность-взаимосвязь» и, как правило, используется для моделирования реляционных баз данных, имеющих отношение к рассматриваемой системе[19].


Рисунок 2.3 - Даталогическая модель БД


Из рисунка 2.2 видны все реализованные сущности в таблицы и атрибуты сущностей в поля таблицы с заданными типами данных.


2.2.3 Реализация серверной части приложения

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

Модульное программирование - метод разработки программ, предполагающий разбиение программы на независимые модули.

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

Разработанная система содержит в себе модули:

-index.cgi - выполняет все проверки и подключает необходимый модуль окна и шаблон этого окна;

-Templete.pm - отвечает за генерацию меню;

-ConnectDB.pm - отвечает за соединение с базой данных;

-exel.pm - модуль генерации отчетов по флюорографии и привочному журналу;

-exel_card.pm - модуль генерации титульного листа медицинской карты;

-kernel.pm - отвечает за проверку логина и пароля, получения сессии, получения номера последнего окна;

-ses.pm - отвечает за проверку номера сессии;

-и модули окон с шаблонами, отвечающие за поведение окон клиентской части описанных в таблице 2.4.


Таблица 2.4 - Файлы модулей и шаблоны окон

СтраницаФайл шаблонаФайл модуля12Start pagepage_0.ttpage_0.pmПрава пользователейpage_1.ttpage_1.pmГруппыpage_2.ttpage_2.pmПринадлежность пользователейpage_3.ttpage_3.pmПользователиpage_3.ttpage_3.pmОкна и функцииWndAndFunc.ttWndAndFunc.pmОкнаWnds.ttWnds.pmФункцииFunc.ttFunc.pmРедактор населенных пунктовEditorATR.ttEditorATR.pmРегионEditRegion.ttEditRegion.pmРайонEditArea.ttEditArea.pmГородEditTown.ttEditTown.pmДолжности сотрудниковPost_sot.ttPost_sot.pmЖурнал прививокJornal_vaccin.ttJornal_vacc.pm inТип диагнозаType_diag.ttType_diag.pmЖурнал диагнозовJornal_diag.ttJornal_diag.pmКонтингентContingent.ttContingent.pmФакультетыFaculty.ttFaculty.pmГруппыGroups.ttGroups.pmСтудентыStudents.ttStudents.pmКартыKard.ttKard.pmДобавление картыAddCard.ttAddCard.pmРедактирование картыEditCard.ttEditCard.pmДиагнозыDiagnosis.ttDiagnosis.pmИстория болезнейHistory_diagnosis.ttHistory_diagnosis.pmПрием больногоAdd_diagnosis.ttAdd_diagnosis.pmФлюорографияFluoragraphy.ttFluoragraphy.pmПрививкиVaccin.ttVaccin.pmСправкаHelper.ttHelper.pm

В корне директории cgi-bin располагаются файлы index.cgi и Templete.pm и директория modules, в которой хранятся модули ConnectDB.pm, exel.pm, exel_card.pm, kernel.pm и ses.pm. Модули окон хранятся в директории wnd, а шаблоны в директории tt, которые расположены в корне директории cgi-bin. Листинг модулей приведен в приложении Б.

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


2.4 Реализация клиентской части приложения


Клиентские страницы генерируются динамически с помощью шаблонов template toolkit.

Template toolkit (TT) - это мощная система обработки шаблонов, написана на perl. Использование шаблонов для генерации web-страниц позволяет убрать из cgi-скрипта весь html код в отдельный файл (шаблон), где его сможет редактировать дизайнер. Скрипт при этом становится более читабельным [17].

Код такого шаблона имеет вид html кода со вставками perl функций и переменных, получаемых из скрипта. Поэтому весь процесс разработки сводится к написанию html-страницы с нужным видом и вставки специального кода шаблонизатора в динамические объекты html. Пример кода шаблона находится в приложении А, а пример html-страницы представлен на рисунке 2.3.

Для создания шаблона требуется создать файл cgi-скрипта, расположенного в директории wnd и файл шаблона, расположенного в директории tt. После чего необходимо реализовать необходимое поведение в коде скрипта шаблона.

Код cgi-скрипта index.cgi, который занимается определением какой модуль системы необходимо подключить и какие данные передать ему:

#!C:\www\Perl5.8.9\bin\perl"Content-Type: Text/HTML; charset=UTF-8\n\n";strict;warnings;CGI;TemplateTemplete;modules::kernel;$co = CGI->new();$login = $co->param('login') || '';$pass = $co->param('pass') || '0';$wnd = $co->param('wnd') || modules::kernel->read_last_page($login, $pass);$ses = $co->param('ses') || '0';$id_s = modules::kernel->user_id($login, $pass, $ses);$CGISESSID = $ses || '0';$title ='Добро пожаловать!';($CGISESSID eq "Error" or $id_s eq "0"){

# вывод шаблона index #

$title = 'Не правильно введено имя или пароль!';

my $parser = Template->new (INCLUDE_PATH => './tt');

$parser->process('index.tt', {'title' => $title,

'login' => $login});

}{(!$ses){

($CGISESSID, $title, $id_s) = modules::kernel->check_login($login, $pass, $wnd);

}{

$CGISESSID = modules::kernel->get_session($wnd, $id_s);

}

$ses = $CGISESSID;($CGISESSID eq "Error" or $id_s eq "0"){

# вывод шаблона index #$parser = Template->new (INCLUDE_PATH => './tt');

$parser->process('index.tt', {'title' => $title,

'login' => $login});

}{$r_ses = modules::ses->check_ses($CGISESSID, $id_s);($r_ses == 1){$helper = $co->param('hlp') || '-1';$hlp_lst;($helper ne '-1'){$query = qq"SELECT helper FROM wnd WHERE id_button = '$wnd'";

$hlp_lst = modules::ConnectDB->SelectFromDB($query);

}$menu = Templete->gen_menu($id_s);$name_wnd = Templete->name_wnd($wnd);$file = modules::kernel->query_file($wnd);

$ENV{'ses'} = $ses;"wnds/".$file.".pm";@page;

@page= $file->print_page($CGISESSID);$query = qq"SELECT * FROM sot_func a a.sot_id = (SELECT id_sot FROM sesion WHERE sesion = '$ses') AND a.wnd_id = '$wnd'";$rules = modules::ConnectDB->SelectFromDB($query);$parser = Template->new (INCLUDE_PATH => './tt');

$parser->process('start_page.tt', {'CGISESSID' => $CGISESSID,

'wnd' => $wnd,

'menu' => $menu,

'rules' => $rules,

'namewnd' => $name_wnd,

'ses' => $ses,

'id' => $id_s,

'helper' => $helper,

'hlp_lst' => $hlp_lst,

'file' => $file.'.tt',

'page' => @page});

}($r_ses == 0) {

$title = "У вас закончилась сессия.<br>Авторизуйтесь еще раз.";

my $parser = Template->new (INCLUDE_PATH => './tt');

$parser->process('index.tt', {'title' => $title,

'login' => $login});

}($r_ses == -1) {

print "По не понятным причинам произошел сбой. Сообщите об этом системному администратору.";

}

}

}

Код шаблона index.tt, который предоставляет форму для ввода пароля:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//RU"

"#"justify"><html xmlns="#"justify"><head>

<meta name="Medic" content="Text/HTML; charset=UTF-8" />

<title>Medic</title>

<link rel="stylesheet" type="text/css" href="#"justify"><link rel="shortcut icon" href="#"justify"></head>

<body>

<div id="m1">

<center>

<h1>[% title %]</h1>

<form name='main' method='post' action='/cgi-bin/index.cgi' id="main">

Имя: <input type='text' name='login' value='[%login%]' />

Пароль: <input type='password' name='pass' value='' /><br />

<br />

<input type='submit' value='Вход' /> <input type='button' value='Выход' onclick='window.close()' />

</form>

</center>

</div>

</body>

</html>

Как видно из кода шаблона, он написан на html со вставками вида [% title %] и так далее. Эти вставки язык Perl переводит в нужные действия при обработке шаблона, например, данная команда подставляет вместо этой вставки значения переменной, которая задается в скрипте. Результат работы шаблона index.tt представлен на рисунке 2.4, в данном случае был введен не правильный пароль. Таким же образом осуществляются циклы и условия.


Рисунок 2.4 - Отображение шаблона index.tt


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

На рисунке 2.5 показано меню разных пользователей системы, как видно оно заметно отличается содержанием. Список меню зависит от данных администратором разрешений пользователю, а администратор принимает решение о даче прав на какое-либо действие пользователю на основании выполняемых обязанностей этим сотрудником. Это касается не только меню, а всех страниц в системе.


Рисунок 2.5 - Динамическое меню системы


На данный момент в системе определено четыре правила: открытие, редактирование, пункт меню и редактирование справки. В соответствии с названиями они дают разрешение на открытие, редактирование страницы, добавление ее в пункт меню и редактирование справки на этой странице.

Для создания меню использовались стили CSS, подключаемые в шаблоне.

CSS (каскадные таблицы стилей) - формальный язык описания внешнего вида документа, написанного с использованием языка разметки.

Код стиля для меню:{margin:25px; font:11px Verdana,Arial; background:#eee}.menu {list-style:none; margin:0; padding:0}.menu * {margin:0; padding:0}.menu a {display:block; color:#000; text-decoration:none}.menu li {position:relative; float:left; margin-right:2px}.menu ul {position:absolute; top:26px; left:0; background:#d1d1d1; display:none; opacity:0; list-style:none}.menu ul li {position:relative; border:1px solid #aaa; border-top:none; width:148px; margin:0}.menu ul li a {display:block; padding:3px 7px 5px; background-color:#d1d1d1}.menu ul li a:hover {background-color:#c5c5c5}.menu ul ul {left:148px; top:-1px}.menu .menulink {border:1px solid #aaa; padding:5px 7px 7px; font-weight:bold; background:url(images/header.gif); width:134px}.menu .menulink:hover, ul.menu .menuhover {background:url(images/header_over.gif)}.menu .sub {background:#d1d1d1 url(images/arrow.gif) 136px 8px no-repeat}.menu .topline {border-top:1px solid #aaa}

Между тегами <head> и </head> вставляем строчку вида <link rel='stylesheet' type='text/css' href='../style/menu.css'>, которая говорит о том, что мы собираемся использовать стили и какой файл необходимо подключить.

После чего мы вставляем нижеуказанные строчки кода:

<ul>

<li><a>

<ul>

[% FOREACH key IN menu %]

[%IF key.t_f == 1%]<li><a href='javascript:load([%key.wnd_id%])'>[%key.name_wnd%]</a></li>[%END%]

[% END %]

</ul>

</li>

<li><a href='#"justify">[%IF helper == -1 AND wnd != 31%]<li><a>

</ul>

Они говорят, что мы создаем список и тэгам <ul>

Далее идут вставки кода Perl, которые говорят о том, что необходимо выполнить цикл от оператора [% FOREACH key IN menu %] до оператора [% END %], все что находится между ними повторяется до конца массива данных переменной menu, которая вычисляется в скрипте index.cgi.

Внутри цикла так же встречается оператор условия ([%IF key.t_f == 1%]), который говорит о том, что все содержимое необходимо выполнить в случае если переменная key.t_f равна 1, в противном случае все содержимое пропускается. Переменная key.t_f, и все подобного вида в данном цикле, выбираются из массива menu. Таким образом формируется меню, определяя его содержимое для каждого пользователя, рисунок 2.4. Так же реализованы все 29 страниц для работы системы.

Выводы

1.В ходе проектирования информационной системы для медицинского центра СевКавГТУ разработана концептуальная модель системы «Medic», выделены 28 сущностей и проанализированы связи между ними и спроектирована реляционная модель базы данных на основе логической модели.

2.Приложение реализовано по технологии «тонкого» клиента, что подтверждает его соответствие современным требованиям и требованиям заказчика.

.Размер папки с файлами информационной системы «Medic» составляет 20 Мбайт. Эта папка содержит файлы для установки системы на компьютер заказчика.

.В результате тестирования информационной системы «Medic» установлено, что она в полном объеме удовлетворяет требованиям заказчика.

3. ИНФОРМАЦИОННОЕ И ПРОГРАММНОЕ ОБЕСПЕЧЕНИЕ


3.1 Общие сведения о программе


Общие сведения об информационной системе «Medic» представлены в таблице 3.1.


Таблица 3.1 - Общие сведения об информационной системе «Medic»

Наименование сведенийСодержание сведенийОбозначение программыMedicНаименование программыИнформационная система управления данными для медицинского центра СевКавГТУ, г. СтавропольПрограммное обеспечение, необходимое для функционирования программыОперационная система любая, поддерживающая функции сервера, PostgreSQL Server, Perl, HTTP-серверЯзык программирования, среда разработки, на которой написана программаPerl, среда разработки NotePad++

3.2 Функциональное назначение


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

Информационная система «Medic» разработана сетевым приложением, поэтому возможна одновременная работа нескольких пользователей. Но накладывается ряд функциональных ограничений. Программа требует наличие HTTP-сервера с установленным на нем интерпретатора Perl с библиотеками Template, CGI, DBI, Spreadsheet::WriteExcel, utf8, Encode, POSIX, CGI::Session, DBI::PgPP и сервера PostgreSQL. А так же на клиентских компьютерах должен стоять любой браузер, поддерживающий JavaScript и CSS любой версии, и табличный интерпретатор.

3.3 Логическая структура программы


Логическую структуру программы иллюстрирует диаграмма компонентов (рисунок 3.1). Как следует из рисунка 3.1, в логическую структуру программы входят 11 программных компонентов (модулей) и база данных конфигурации, объединенных связью зависимости.

Компонент представляет собой выполняемый модуль системы, и связан с файлом исходного текста, двоичным файлом библиотеки, объектным модулем, исполняемым файлом.


Рисунок 3.1 - Логическая структура программы


Через браузер открываются страница index.html, которая перенаправляется на index.cgi. Через эту страницу пользователь получает всю информацию и имеет доступ к меню. Обращение к базе данных и получение от нее результатов осуществляется через модуль ConnectDB.pm, который в свою очередь возвращает затребованные данные в то место, откуда они были затребованы.

3.4 Требования к техническому обеспечению


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

На клиентских компьютерах не требуется установки каких-то специальных программ и компонентов, достаточно стандартного браузера. Так как на большинстве машин подразделения установлена Windows и в качестве браузера используется стандартный Internet Explorer, то параметры, приведенные ниже для клиентских ПК, соответствуют параметрам IE 8, рекомендованные компанией Microsoft.

Серверная часть требует индивидуального подхода в плане подбора аппаратных частей компьютера и зависит от числа подключаемых клиентов с учетом запаса производительной мощности для возможности подключения новых пользователей. Вся производительная мощность серверной части складывается из системных требований операционной системы, PostgreSQL, HTTP-сервера и Perl. Разработанная система не привязана к конкретной ОС, и поэтому может быть установлена на любую, но рекомендуется использовать сетевые решения операционных систем так, как они разрабатываются специально для работы в сети.

Ниже будут указаны параметры, для сервера с операционной системой Fedora 13, с минимальным набором программного обеспечения, обеспечивающего работу пяти клиентских ПК.

3.4.1 Требования к центральному процессору клиента

Минимальная тактовая частота процессора, для клиентской ПК, должна составлять 233 мегагерца (МГц) или выше.

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


3.4.2 Требования к центральному процессору сервера

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


3.4.3 Требования к оперативному запоминающему устройству клиента

Минимальный объем оперативного запоминающего устройства (ОЗУ) необходимый для работы приложения на стороне клиента, Vкл., Мбайт, определяется по формуле:


Vкл. = V1 + V2(3.1)

гдеV1 - минимальный объем ОЗУ, требуемый для работы операционной системы, Мбайт;2 - минимальный объем ОЗУ, требуемый для работы браузера, Мбайт;

Так как на всех ПК подразделения установлена Windows XP со стандартным браузером IE, обновленным до версии 8, то параметры V1=128 Мбайт и V2= 64 Мбайт.

Таким образом, подставим в формулу (3.1) получим, что минимальный объем ОЗУ, требуемый для работы информационной системы на клиентском ПК, составляет:

Vкл. =V1 +V2 = 128 + 64 = 192 Мбайт.


3.4.4 Требования к оперативному запоминающему устройству сервера

Для сервера, Vсерв, Мбайт, минимальный объем оперативного запоминающего устройства, определяется по формуле:


Vсерв. =V1+V2+V3+V4(3.2)

гдеV1 - минимальный объем ОЗУ, требуемый для работы операционной системы, Мбайт;2 - минимальный объем ОЗУ, требуемый для базы данных;3 - минимальный объем ОЗУ, требуемый для HTTP-сервера;2 - минимальный объем ОЗУ, требуемый для работы командного интерпретатора Perl;

Так как на сервере стоит операционная система Fedora 13 в минимальной комплектации, то параметр V1 =10 Мб. Для баз данных параметр V2 =128 Мб. Для HTTP-сервера V3 =16 Мб. И для командного интерпретатора V4 =5 Мб.

Таким образом, подставим в формулу (3.2) получим, что минимальный объем ОЗУ, требуемый для работы информационной системы на сервере, составляет:

Vсерв. = V1 + V2 + V3 + V4 = 10 + 128 + 16 + 5 = 159 Мбайт.

Для комфортной работы рекомендуется использовать ОЗУ размером 256 Мбайт и более.

3.4.5 Требования к наличию свободного места на жестком диске клиента

Свободное пространство на жестком диске для клиентского ПК должно хватать на установку браузера. Так, например, компания Microsoft, для браузера IE 8, рекомендует не менее 150 Мбайт свободного места на жестком диске компьютера пользователя.


3.4.6 Требования к наличию свободного места на жестком диске сервера

Для сервера объем свободного места должен быть не менее 347 Мбайт на приложения (PostgreSQL требует 211 Мбайт без базы данных, HTTP-сервер требует 35 Мбайт и Perl, 101 Мбайт), плюс предполагаемый объем данных в базе (с учетом возможности добавления новых данных примерно составляет от 50 Мбайт) и объем для дампа базы данных от 50 Мбайт. Таким образом, учитывая все параметры, получается минимального пространства должно быть не менее 447 Мбайт.


3.4.7 Требования к монитору и видеоадаптеру клиента

Клиентская часть не предъявляет каких-то специфичных требований, достаточно любого современного жидкокристаллического монитора со стандартным разрешением 1024×768.


3.4.8 Требования к принтеру

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

3.5 Установка информационной системы


Установка системы должна проводиться специалистом, обладающим знаниями по установки: PostgreSQL и резервных копий баз данных (SQL-дамп), языка Perl и сервера HTTP. Так же необходимы умения по настройке системы для резервного копирования базы данных.

SQL-дамп - метод, заключающийся в создании текстового файла с командами SQL, с помощью которых на сервере можно воссоздать базу данных в том состоянии, в котором она находилась перед дампом [14].

Весь процесс установки сводится к установке вышеперечисленных компонентов и их настройке. Настройка PostgreSQL заключается в развертывании дампа базы из файла.

Настройка HTTP сервера сводится к копированию в директорию файлов с кодом системы и настройке хоста, в которой необходимо указать разрешения на выполнение cgi-скриптов и указать директорию со скриптами (cgi-bin), если оно запрещена по умолчанию или отсутствует.

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


3.6 Входные данные программы


Входными данными для спроектированной базы данных являются выделенные из сущностей предметной области атрибуты. Они вводятся непосредственно пользователем с клавиатуры посредством разработанного пользовательского интерфейса. На основе анализа, проведенного во 2 разделе были, выделены следующие данные. Для разработчиков: название окон и функций. Для сотрудников: о сотрудниках, факультетах и группах, о студентах, информация медицинских карт, данные о приеме врачом, о диагнозах и прививках, типов диагнозов, информация о населенных пунктах, из которых прибыли студенты, информация о прохождении флюорографии.


3.7 Выходные данные программы


Выходные данные программы представлены отчетами с указанием дат формирования отчета, а так же медицинскими картами и в виде экранных форм, в которых отображены записи БД.


3.8 Результаты тестирования программы


В ходе тестирования проверялось корректность переходов по ссылкам, правильность вычисления дат флюорографии и корректность отображения страниц в различных браузерах (рисунки 3.2, 3.3, 3.4)


Рисунок 3.2 - Корректность отображения страницы в FireFox 4

Рисунок 3.3 - Корректность отображения страницы в Chrome 11


Рисунок 3.4 - Корректность отображения страницы в Internet Explorer 8


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


3.9 Вызов программы


Информационная система для медицинского центра, запускается путем ввода в адресную строку браузера ip-адреса сервера или имени сервера (рисунок 3.5), либо ярлыком на рабочем столе, который является ссылкой на адрес сервера и предназначен для сотрудников.


Рисунок 3.5 - Ввод имени сервера


Из рисунка видно, что сервер имеет имя «medic».


3.10 Краткая инструкция по работе с программой


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

Аутентификация - проверка принадлежности пользователю (субъекту доступа) предъявленного им идентификатора и подтверждение его подлинности.

Авторизация - проверка прав доступа пользователя и получение им доступа к ресурсам в соответствии с данными ему правами.

Рисунок 3.6 - Окно аутентификации


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

Краткая инструкция по работе для администратора

Главная задача администратора - это работа с сотрудниками в системе. Для добавление нового сотрудника необходимо в меню выбрать пункт «Права пользователей», после чего откроется окно с выбором дальнейших действий (рисунок 3.7).


Рисунок 3.7 - Окно с выбором дальнейших действий


Далее необходимо выбрать «Пользователи» и в открывшемся окне надо нажать кнопку «Редактировать пользователя» (рисунок 3.8).

Рисунок 3.8 - Окно с выбором дальнейших действий


После нажатия кнопки, справа появится выделенная область с предложением создать нового пользователя, отредактировать текущего и отменой действия (рисунок 3.9).


Рисунок 3.9 - Редактирование пользователя


Необходимо выбрать «Новый пользователь». Появятся поля для заполнения, показанные на рисунке 3.10.


Рисунок 3.10 - Добавление нового пользователя

После заполнения всех полей, нажать кнопку «Добавить», после чего новый пользователь будет добавлен и его можно будет найти в списке с пользователями. Редактирование пользователей протекает аналогично, для этого необходимо вместо «Новый пользователь» выбрать «Редактировать пользователя». Откроются те же саамы-е поля, но уже заполненные, в них надо внести соответствующие изменения и нажать на кнопку «Изменить»

По умолчанию новый пользователь создается без прав и для того чтобы он смог работать с системой ему необходимо назначить права. Для этого необходимо выбрать его в списке «Пользователи» и в списке «Окна» выбрать необходимое окно. Появятся таблица с функциями (рисунок 3.11).


Рисунок 3.11 - Функции


В таблице необходимо расставить галочки напротив тех функций, которые необходимы данному пользователю и нажать на кнопку «Добавить пункт».

Краткая инструкция по работе для сотрудников

Так как окон для сотрудников много и работа с ними практически схожа, то ниже будет описана работа с редактором медицинских карт.

Медицинская карта является основополагающим элементом. Как и в жизни, врачи не могут вести прием пациента без карты, так и система построена на этом принципе.

Для того чтобы добавить медицинскую карту необходимо выбрать в меню пункт «Карты» и нажать ссылку «Добавление карты» (рисунок 3.12). Откроется окно с полями для заполнения (рисунок А.1).


Рисунок 3.12 - Окно «Карты»


Для добавления карты, необходимо заполнить ключевые поля и нажать кнопку «Добавить карту». После чего добавиться новая медицинская карта, а все поля для заполнения очистятся. Если какое-то из ключевых полей не заполнено, то система выдаст соответствующее предупреждение с указаниями. На рисунке А.2 ни одно из ключевых полей не заполнено.

Рядом с кнопкой «Добавить карту» расположена кнопка «Распечатать карту», которая производит процесс сохранения медицинской карты и формирует документ для табличного процессора (рисунок 3.13).


Рисунок 3.13 - Медицинская карта для печати

Для того чтобы увидеть вновь добавленную карту необходимо перейти по ссылке «Редактирование карты», для этого можно воспользоваться ссылками для быстрого перехода, которые расположены вверху, под основным меню (рисунок 3.14).


Рисунок 3.14 - Ссылки для быстрого перехода


В открывшемся окне, необходимо выбрать нужный факультет и группу. После чего появиться таблица с кратким описанием медицинских карт (рисунок А.3).

Для того, чтобы отредактировать необходимую медицинскую карту необходимо навести курсор на нужную запись в таблице и совершить двойной клик. Откроется такое же окно, как и в случае с добавлением карты, но поля уже будут заполнены (рисунок А.4).

После исправление необходимых данных, необходимо нажать кнопку «Изменить». Кнопка «Печать» осуществляет сохранение изменений и формирует документ для печати, как и в случае с добавлением карты. Кнопка «Удалить» осуществляет процесс удаление данной карты, этот процесс не возможен в случае если в карте есть какие-нибудь записи о приеме, прививках или флюорографии. Кнопка «Назад» осуществляет возврат на предыдущую страницу.

Выводы

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

-процессор с тактовой частотой 233 MГц;

-128 Мбайт ОЗУ;

-видеоадаптер поддерживающий разрешение 800×600;

-150 Mбайт свободного места на диске;

-принтер с разрешением печати не менее 300 точек/дюйм.

А для серверной части следующие:

-процессор с тактовой частотой 333 MГц;

-192 Мбайт ОЗУ;

-447 Mбайт свободного места на диске.

2.Помимо требований к аппаратуре для работы программы необходимо установить PostgreSQL, HTTP-сервер и Perl с библиотеками Template, CGI, DBI, Spreadsheet::WriteExcel, utf8, Encode, POSIX, CGI::Session, DBI::PgPP.

3.Также в данной главе приведена краткая инструкция для различных ролей пользователей в программном продукте.

.Результаты тестирования показали, что программа правильно обрабатывает вводимые данные и выдает ожидаемые выходные данные.

4. технико-ЭКОНОМИЧЕСКОЕ ОБОСНОВАНИЕ ПРОЕКТА


4.1 Краткая характеристика проекта


В дипломном проекте разработан программный продукт для медицинского центра СевКавГТУ.

Назначение разработанного программного продукта - автоматизация работы подразделения медицинского центра СевКавГТУ.

Цель создания информационной системы - сокращение временных затрат сотрудников медицинского центра на оформление и составление отчетности.

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

Информационная система написана с использованием технологии «клиент-сервер». В ней имеется база данных, спроектированная на PostgreSQL, которая является бесплатной, серверная часть написана на Perl и требует HTTP-сервера, а для клиентской части ничего не требуется кроме как браузер. Общее количество строчек кода равно 1000 единиц.

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

В качестве расчетного периода возьмем пять лет, так как этот период является ориентировочным сроком службы программы до ее морального устаревания.


4.2 Трудоемкость выполняемых работ


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

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


Тпо = То + Та + Тп + Тотл + Тд, (4.1)


гдеТо - затраты труда на описание задачи, чел.-ч.;

Та - затраты на разработку блок схемы, чел.-ч.;

Тп - затраты на программирование, чел.-ч.;

Тотл - затраты на отладку программы, чел.-ч.;

Тд - затраты на подготовку документации, чел.-ч.

Все составляющие в правой части формулы (4.1) определим через общее число операторов D, ед.:


D = ??c (1 + p), (4.2)


где? - исходное число строчек кода в тексте программы, (? = 1000 ед.);

с ? коэффициент сложности задачи(с = 1.05 ... 2);

р - коэффициент коррекции программы, учитывающий новизну проекта.

Таким образом, подставив ? = 1000 ед., с = 1,2, p = 0,1 получим:= 1000?1,2 ? (1 + 0,1)=1320 ед.

Затраты труда на описание задачи принимаем: ТО = 13 чел.-ч. Работу по описанию задачи и все другие работы по созданию программного продукта выполняет инженер-программист с окладом 6000 руб. в месяц и коэффициентом квалификации kК = 1.

Затраты труда на изучение задачи ТИ, чел.-ч., с учетом уточнения описания и квалификации программиста могут быть определены по формуле:


ТИ = Db /( su kK ), (4.3)


гдеD - общее число строчек кода в тексте программы, ед.;- коэффициент увеличения затрат труда, вследствие недостаточного

описания задачи;u - количество строчек кода в тексте программы, приходящееся на

один чел.-ч., (ед./ чел.-ч.);K - коэффициент квалификации работника.

В связи с тем, что решение рассматриваемой задачи потребовало уточнения и доработок, примем коэффициент b = 1.

Количество строчек кода в тексте программы, приходящееся на один чел.-ч., примем равным su = 75 ед./ чел.-ч.

Таким образом, на основании формулы (4.3) получим

ТИ = (1320 × 1) / (75 × 1) = 17.6 чел.-ч.

Затраты труда на разработку алгоритма решения задачи ТА, чел.-ч., рассчитываются по формуле:


ТА = D / (sa kK), (4.4)

где D - общее число строчек кода в тексте программы, ед.;a - количество строчек кода в тексте программы, приходящееся на один чел.-ч., (ед./ чел.-ч.);K - коэффициент квалификации работника.

Для расчета по формуле (4.4) примем sa = 20 ед./ чел.-ч.

Подставив численные значения параметров и коэффициентов в формулу (4.4), получим

ТА = 1320 / (20 × 1) = 66 чел.-ч.

Затраты труда на составление программы по готовой блок-схеме ТП, чел.-ч., определяется по формуле:


ТП = D / (sa kK), (4.5)


Где D - общее число строчек кода в тексте программы, ед.;a - количество строчек кода в тексте программы, приходящееся на

один чел.-ч., (ед./ чел.-ч.);K - коэффициент квалификации работника.

Для расчетов по формуле (4.5) примем sa = 30 ед./ чел.-ч.

Подставив численные значения параметров и коэффициентов в формулу (4.5), получим:

ТП = 1320 / (30 × 1) = 44 чел.-ч.

Затраты труда на отладку программы на персональном компьютере ТОТЛ, чел.-ч., рассчитывается по формуле


ТОТЛ = D / (sотл kK), (4.6)


где D - общее число строчек кода в тексте программы, ед.;отл - количество отлаживаемых операторов программы, приходящееся на один чел.-ч., (ед./ чел.-ч.);K - коэффициент квалификации работника.

Для расчетов по формуле (4.6) примем sотл = 4 ед./ чел.-ч.

Подставив численные значения параметров и коэффициентов в формулу (4.6), получим

ТОТЛ = 1320 / (4 × 1) = 330 чел.-ч.

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


ТД = ТДР + ТДО, (4.7)


Где ТДР - затраты труда на подготовку материалов в рукописи, чел.-ч.;

ТДО - затраты труда на редактирование, печать и оформление документации, чел.-ч.

Затраты труда на подготовку материалов в рукописи ТДР, чел.-ч., вычислим по формуле


ТДР = D / (sдр kK), (4.8)


где D - общее число строчек кода в тексте программы, ед.;др - количество операторов программы в рукописи, приходящееся на

один чел.-ч., (ед./ чел.-ч.);K - коэффициент квалификации работника.

Для расчетов по формуле (4.8) примем sдр = 15 ед./ чел.-ч.

Подставив численные значения параметров и коэффициентов в формулу (4.8), получим

ТДР = 1320 / (15 × 1) = 88 чел.-ч.

Затраты труда на редактирование, печать и оформление документации ТДО, чел.-ч., вычислим по формуле


ТДО = 0,75 × ТДР. (4.9)

Подставив численное значение затраты труда на подготовку материалов в рукописи ТДР, чел.-ч., в формулу (4.9), получим

ТДО = 0,75 × 88 = 66 чел.-ч.

Таким образом, подставив численные значение затраты труда на подготовку материалов в рукописи ТДР, чел.-ч., и затраты труда на редактирование, печать и оформление документации ТДО, чел.-ч., в формулу (4.7) получим:

ТД = 88 + 66= 154 чел.-ч.

Подставив все полученные данные, составляющие трудоемкость разработки программного обеспечения в формулу (4.1), получим

ТПО =13 + 66 + 44 + 330 + 154 = 607 чел.-ч.

С учетом уровня языка программирования трудоемкость разработки программы может быть скорректирована следующим образом:


ТКОР = ТПО kКОР, (4.10)


где kКОР - коэффициент коррекции, учитывающий изменения трудоемкости разработки программного обеспечения в зависимости уровня языка программирования (таблица 4.1);

ТКОР - откорректированная трудоемкость разработки программного обеспечения, чел.-ч.

Использованный для разработки программного обеспечения язык программирования Perl относится к алгоритмическим языкам высокого уровня, с учетом этого примем kКОР = 0,8.

Таким образом, получим по формуле (4.10) итоговую откорректированную трудоемкость разработки программы

ТКОР = 607 × 0,8 = 674,4 чел.-ч.

4.3 Расчет себестоимости информационной системы


Себестоимость создания автоматизированной информационной системы З, руб., определяется по следующей формуле


З = ЗО + ЗД + ЗС + ЗЭ + ЗМ + ЗП + ЗАО, (4.11)


где ЗО - основная заработная плата производственного персонала, руб.;

ЗД - дополнительная заработная плата производственного персонала, руб.;

ЗС - отчисления на страховые взносы, руб.;

ЗЭ - затраты на потребляемую электроэнергию, руб.;

ЗМ - расходы на материалы и запасные части, руб.;

ЗП - затраты на техническое обслуживание и текущий ремонт вычислительной техники, руб.;

ЗАО - затраты на амортизацию вычислительной техники, руб.

Плановый фонд рабочего времени одного специалиста производственного персонала в месяц tпф, ч, вычислим по формуле

пф = Nрд ?tрд, (4.12)


где Nрд - количество рабочих дней специалиста производственного персонала за месяц;

?tрд - продолжительность рабочего дня специалиста производственного персонала, ч.

Для расчетов по формуле (4.12) примем Nрд = 22 дня, ?tрд = 8 ч. Подставив указанные численные значения параметров Nрд и ?tрд в формулу (4.12) получим, что плановый фонд рабочего времени одного специалиста производственного персонала в месяц составляетпф = 22 × 8 = 176 ч.

Таким образом, часовая тарифная ставка sч, руб./ч, инженера-программиста первой категории составляет ч = 6000 / 176 = 37,5 руб./ч

Основная заработная плата ЗО, руб., производственного персонала определяется по формуле


ЗО = sч × ТКОР. (4.13)


Подставив все численные значения параметров в формулу (4.13) получим, что основная заработная плата инженера-программиста первой категории составит

ЗО = 37,5 × 674,4 = 25290 руб.

Дополнительная заработная плата ЗД, руб. не начисляется.

Отчисления в Пенсионный фонд Российской Федерации, Фонд социального страхования Российской Федерации и фонды обязательного медицинского страхования Российской Федерации ЗС, руб., вычислим по формуле


ЗС = ((ЗО + ЗД) / 100) × hС, (4.14)


где ?С ? норматив страховых взносов, %.

Норматив страховых взносов составляет 34 %.

Подставив все численные значения в формулу (4.14) получим, что отчисления на страховые взносы равны

ЗС =(25290 / 100) × 34% = 8598,6 руб.

Затраты на потребляемую электроэнергию ЗЭ, руб.:


ЗЭ = PВ tВ цЭ, (4.16)


гдеPВ - мощность ЭВМ, кВт;В - время работы вычислительного комплекса, ч;

цЭ - стоимость 1 кВтч электроэнергии, руб./ кВтч.

Мощность ЭВМ равна 0,3 кВт.

Время работы вычислительного комплекса tв, ч, при создании программного продукта вычислим по формуле

в = ?п?(ТП + ТД + ТОТЛ)? kКОР, (4.17)


где ?п - коэффициент, учитывающий затраты времени на профилактические работы на ЭВМ.

Для расчетов по формуле (4.17) примем ?п = 1,15 и kКОР = 0,8. Подставив все численные значения параметров в формулу (4.17) получим:В = 1,15 × (44 + 154 + 330) × 0,8 = 485,76 ч.

Стоимость 1 кВтч электроэнергии составляет цЭ = 3,60 руб./ кВтч.

Подставив все численные значения параметров в формулу (4.16) получим, что затраты на потребляемую электроэнергию составят

ЗЭ = 0,3 × 485,76 × 3,60 = 410,95 руб.

Данные для расчета затрат на материалы и запасные части занесем в таблицу 4.2.


Таблица 4.2 - Данные для расчета затрат на материалы и запасные

НаименованиеЕдиница измеренияКоли-чествоЦена за единицу, руб.Сумма, руб.CD-RW - дискШтук125,0025,00БумагаПачка1150,00150,00Заправка картриджа принтера Samsung ML-1615Шт.1120,00120,00Итого295,00

Следовательно, затраты на материалы и запасные части ЗМ составят

ЗМ = 25,00 + 150,00 + 120,00 = 295,00 руб.

Затраты на техническое обслуживание и текущий ремонт вычислительной техники ЗП, руб.:


ЗП = КВ × (? / 100) × ( tВ / tВ.Г)(4.18)


где КВ ? балансовая стоимость вычислительной техники, руб.

? - норма отчислений на ремонт, %;В.Г - годовой фонд времени работы вычислительной техники, ч.

Для расчетов по формуле (4.18) примем:

-балансовая стоимость вычислительной техники KB = 21658,00 руб.;

-норма отчислений на ремонт ? = 4%;

-годовой фонд времени работы вычислительной техники при 48-часовой рабочей неделе в текущем году tВ.Г = 1986 ч.

Подставив все численные значения параметров в формулу (4.18) получим, что затраты на техническое обслуживание и текущий ремонт вычислительной техники составят:

ЗП = 21658 × (4 / 100) × (485,76 / 1986) = 199,25 руб.

Затраты на амортизацию вычислительной техники АОЗ , руб.:

ЗАО = КВ × (? / 100) × ( tВ / tВ.Г) (4.19)

где ? - норма отчислений на амортизацию вычислительной техники, %, которая составляет 20%.

ЗАО = 21658 × (20 / 100) × (485,76 / 1986) = 996,27 руб.

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


Таблица 4.3 - Величины затраты, составляющих себестоимость автоматизированной информационной системы

Статья расходаСумма, руб.12Основная заработная плата производственного персонала25290,00Отчисления на страховые взносы8598,60Затраты на потребляемую электроэнергию410,95Расходы на материалы и запасные части295,00Затраты на техническое обслуживание и ремонт вычислительной техники199,25Затраты на амортизацию вычислительной техники996,27Итого35790,07

Таким образом, полные затраты на создание программного продукта З составляют

З = 25290 + 8598,6 + 410,95 + 295 + 199,25 + 996,27 = 35790,07 руб.


4.4 Оценка экономической эффективности внедрения программного продукта


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


П = Э - ЗИСП.,(4.21)


где Э - стоимостная оценка результатов применения программного продукта в течение года, руб.;

ЗИСП. - стоимостная оценка затрат при использовании программного продукта в течение года, руб.

Приток денежных средств из-за использования программного продукта Э, руб., в течение года может составить:


Э = (ЗРУЧ - ЗАВТ) + ЭДОП, (4.22)


где ЗРУЧ - затраты на ручную обработку информации, руб.;

ЗАВТ - затраты на автоматизированную обработку информации, руб.;

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

Данный продукт используется двумя сотрудниками медицинского центра СевКавГТУ. Заработная плата сотрудника - 8000 руб., Nрд = 22 дней, ?tрд = 8 ч. Тогда, цена одного часа работы цЧ, руб./ч, составит

цЧ = 8000 / 160 = 50 руб./ч.

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


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

Наименование работыtР, ч.tА, ч.Обработка информации7020Составление, оформление и анализ отчетов400,5Итого11020,5

- tР - затраты на ручную обработку информации в месяц, ч.;

tА - затраты на автоматизированную обработку информации в месяц, ч.

Из данных таблицы 4.4 следует, что общие затраты времени на ручную обработку информации в месяц tОБЩ. Р, ч, одним сотрудником, составляют 110 ч, а общие затраты на автоматизированную обработку информации - tОБЩ. А = 20,5 ч.

Годовые затраты (затраты за 12 месяцев) двух сотрудников медицинского центра, при ручной обработке информации вычислим по формуле:

ЗРУЧН = tОБЩ. Р × 12 × цЧ. × 2(4.23)


Годовые затраты (затраты за 12 месяцев) офис-менеджера при автоматизированной обработке информации вычислим по формуле


ЗАВТ = tОБЩ. А × 12 × цЧ. × 2(4.24)


Получим:

ЗРУЧН = 110 × 12 × 50 × 2 = 66000 руб.

ЗАВТ = 20,5 × 12 × 50 × 2 = 12300 руб.

Следовательно, годовой эффект от внедрения программного продукта, даже без учета дополнительный экономический эффекта (ЭДОП = 0), на основании формулы (4.22), получится равным:

Э = 66000 - 12300 = 53700 руб.

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

На основании формулы (4.16), для персонального компьютера сотрудника за 12 месяцев затраты на электроэнергию при потребляемой мощности компьютера PВ =0,3 кВт составят (стоимость электроэнергии цЭ = 3,60 руб./кВт-ч.)

ЗЭ = 0,3 × 20,5 × 12 × 2,82 × 2 = 208,12 руб.

Балансовая стоимость вычислительной техники KB = 21658,00 руб. Тогда, на основании формулы (4.18), для персонального компьютера офис-менеджера за 12 месяцев затраты на техническое обслуживание и текущий ремонт составят:

ЗП = 21658 × 0,04 × (12 × 20,5 / 2112) × 2 = 100,91 руб.

Затраты на амортизацию вычислительной техники по формуле (4.19) составят

ЗАО = 21658 × 0,2 × (12 × 20,5 / 2112) × 2= 504,53 руб.

Тогда, эксплуатационные затраты при использовании программного продукта составят:

ЗИСП = 208,12 + 100,91 + 504,53 = 813,56 руб.

Прибыль от использования программного продукта за год рассчитаем по формуле (4.21):

П = 53700 - 813,56 = 52886,44 руб.

Таким образом, имеем следующий денежный поток:

0 шаг (капиталовложения) - 35790,07 руб.;

1 шаг - 52886,44 руб.;

шаг - 52886,44 руб.;

шаг - 52886,44 руб.;

шаг - 52886,44 руб.

Чистый дисконтированный доход ЧДД, руб., от использования программного продукта определим по формуле:


(4.25)


где N - расчетный период, год;

ПK - прибыль от использования программного продукта за k-й год его эксплуатации, руб.;

Е - норма дисконта, %;- капиталовложения при внедрении программного продукта, руб.

Следовательно, ЧДД, руб., при N = 5, т. е. за пять лет использования программного продукта (срок до морального старения данного программного продукта) при норме дисконта E = 20% в соответствии с формулой (4.25) составит:

Приходим к выводу, что ЧДД ? положителен, т. е. проект эффективен.

Внутреннюю норму доходности проекта Eвн, %, определим по формуле


,(4.26)информационный система medic программа

где Евн. MAX + - максимальное значение внутренней нормы дисконта, %, при которой ЧДД является положительной величиной (ЧДД > 0);

Евн. MIN - - минимальное значение внутренней нормы дисконта, %, при

которой ЧДД является отрицательной величиной (ЧДД < 0);

- ЧДД, руб., вычисленный по формуле (4.25) при подстановке нормы дисконта Е=;

-ЧДД, руб., вычисленный по формуле (4.25) при подстановке нормы дисконта Е=.

Предполагаем, что EВН лежит в диапазоне 144 ... 149%. При норме дисконта EВН = 144% получаем ЧДД =511,96 руб. Таким образом, при норме дисконта EВН = 144% ЧДД - положителен.

При норме дисконта EВН = 149% получаем ЧДД = -666,64 руб. Таким образом, при норме дисконта EВН = 149% ЧДД - отрицателен.

Следовательно, по формуле (4.26) имеем:

%

Рассчитаем срок окупаемости проекта. Срок окупаемости проекта Tок, год, найдем по формуле

(4.27)


где N - максимальное количество лет, прошедших с начала эксплуатации программного продукта, в течение которых величина дохода от его использования не превысила величины капиталовложения при внедрении программного продукта;

Эj- величины приведенных (дисконтированных) годовых эффектов за j-й год, руб., прошедший с начала эксплуатации программного продукта, вычисленные по формуле (4.25) при подстановке нормы дисконта E = 20%.

Величина приведенного (дисконтированного) годового эффекта за первый год расчетного периода по формуле (4.25) равна:

Э1 = = 44072,03 руб.

что больше величины капиталовложений (K = 35790,07 руб.).

Тогда, в формуле (4.27) имеем N = 0 и срок окупаемости составит

года,


4.5 Основные технико-экономические показатели проекта


Для удобства анализа, все основные технико-экономические показатели проекта сведены в таблицу 4.5.


Таблица 4.5 ? Основные технико-экономические показатели проекта

Основные характеристикиЕдиницы измеренияПроектИтоговая трудоемкость разработкичел.-ч.674,4Полные затраты на создание программного продукта руб.35790,07Годовой экономический эффект от внедрения программного продуктаруб.44072,03Прибыль от внедрения и использования программного продуктаруб.52886,44Срок окупаемости проектагод0,67

Выводы

1.В процессе анализа технико-экономического обоснования разработки информационной системы для медицинского центра СевКавГТУ, было экономически обоснована рентабельность разработки.

2.Затраты на разработку информационной системы составили 35790,07 руб.

.Трудоемкость разработки проекта составила 674,4 чел-ч.

4.Годовой экономический эффект от внедрения программного продукта составляет 53700 руб.

.Внутренняя норма доходности - 146,15%

6.После внедрения программного продукта ежемесячные затраты времени сотрудника медицинского центра сократится со 110 до 20,5 часов, то есть в более чем пять раз.

.Срок окупаемости информационной подсистемы составляет 0,67 года.

8.Разработка информационной системы для медицинского центра СевКавГТУ является экономически обоснованной и эффективной.

ЗАКЛЮЧЕНИЕ


Основным результатом дипломного проектирования является разработка информационной системы «Medic».

В результате дипломного проектирования было показано, что:

-итоговая трудоемкость разработки программного продукта составляет 674,4 чел.-ч.;

-полные затраты на создание программного продукта -35790,07 руб.;

-годовой эффект от внедрения программного продукта - 53700 руб.;

-годовая прибыль от внедрения и использования программного продукта - 52886,44;

-срок окупаемости проекта 0,67 года.

После внедрения программного продукта ежемесячные затраты времени сотрудника медицинского центра сократится со 110 до 20,5 часов, то есть в более чем пять раз.

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

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

БИБЛИОГРАФИЧЕСКИЙ СПИСОК


1.Аппак М.А. Автоматизированные рабочие места на основе персональных ЭВМ [Текст] / М.А. Аппак - М.:Радио и связь, 1989. - 400 с.

2.Буч Г. Язык UML для пользователя: Пер. с англ. [Текст]/ Г. Буч, Д. Рамбо, А. Джекобсон. - М.: ДМК, 2000. ? 432 с.

.Голицына О.Л. Основы алгоритмизации и программирования (2-е издание) И.И. Попов, О.Л. Голицына. - М.: Инфа-М, 2006. - 432 с.

.Дейтел Х.М. Как программировать на Perl [Текст]/ Х.М. Дейтел, П.Дж. Дейтел, Т.Р. Нието, Д.К. МакФай. - М: Бином, 2002. - 547 с.

.Декарт А. Программирование на Perl DBI [Текст]/ А. Декарт, Т. Банс. - Спб.: Символ-Плюс, 2000. - 700 с.

.Диго С.М. Проектирование и использования баз данных [Текст]/ С.М. Диго. - М.: Финансы и статистика, 1995. - 200 с.

.Карпова Т. Базы данных. Модели, разработка, реализация [Текст]/ Т. Карпова. - Спб.: Питер, 2001. - 304 с.

.Киммел, П. UML. Основы визуального анализа и проектирования [текст]/ П. Киммел. - М.: НТ Пресс, 2008. - 272 с.

.Киммел П. UML. Универсальный язык программирования [текст]/ П. Киммел. - СПб.: НТ Пресс, 2008. - 272 с.

.Когаловский М.Р. Технология баз данных на персональных ЭВМ [Текст]/ М.Р. Когаловский. - Киев: Радиоэлектроника, 2004. - 270 с.

.Колесов Ю.Б. Моделирование систем. Объектно-ориентированный подход [текст]/ Ю.Б. Колесов, Ю.Б. Сениченков. - СПб.: БХВ-Петербург, 2006. - 192 с.

12.Конноли Т. Базы данных. Проектирование, реализация и сопровождение. Теория и практика. [Текст]/ Т. Конноли, К. Бегг - СПб.; М.: Киев: изд. дом Вильяме, 2001. - 1120 с.

.Крёнке Д. Теория и практика построения баз данных [Текст]/ Д. Крёнке - СПб.: Питер, 2003. - 800 с.

.Левитин А.В. Алгоритмы. Введение в разработку и анализ [Текст]/ А.В. Левитин. - М.: Вильямс, 2006 - 576 с.

.Маклнтош Дж. Perl & XML библиотека программиста [Текст]/ Дж. Маклнтош, Эрик Т. Рэй. - СПб.: Питер, 2003. - 207 с.

.Мартин Дж. Организация баз данных в вычислительных системах [Текст]/ Дж. Мартин. - М.: Мир, 1978. - 700 с.

.Мельтцер К. Разработка CGI-приложений на Perl [Текст]/ К. Мельтцер, Б. Михальски. - М.: Вильямс, 2001. - 574 с.

.Петров А.И. Информационные системы [Текст]/ А. И. Петров. - М.: Горячая линия-Телеком, 2000. - 300 с.

.Стаблибайн Т. Регулярные выражения. Карманный справочник [Текст]/ Т. Стаблибайн. - СПб.: Питер, 2004. - 160 с.

.Уолл Л. Программирование на Perl [Текст]/ Л. Уолл, Т. Кристиансен, Дж. Орвант. - СПб.: Символ, 2005. - 1150 с.

.Уорсли Дж. PodtgreSQL для профессионалов [Текст]/ Дж. Уорсли, Дж. Дрейк. - СПб.: Питер, 2003. - 496 с.

.Фридл Дж. Регулярные выражения [Текст]/ Дж. Фридл. - СПб.: Питер, 2003. - 723 с.

Приложение А


Окна редактора медицинских карт


Рисунок А.1 - Добавление карты


Рисунок А.2 - Не заполненные поля карты

Рисунок А.3 - Выбор медицинской карты для редактирования


Рисунок А.4 - Редактирование медицинской карты

Приложение Б


Листинг модулей информационной системы «Medic»


Б.1 Код модуля «ConnectDB.pm»

#!C:\www\Perl5.8.9\bin\perlmodules::ConnectDB;strict;warnings;modules::dbase;SelectFromDB{$h = $_[2] || '0';$dbMedic = modules::dbase->new();

$dbMedic->dbConnect();

#my $query = qq"SET client_encoding TO 'UTF8'";

#my $result = $dbMedic->execSelect(\$query);$query = qq"SET DATESTYLE TO 'GERMAN, DMY'";$result = $dbMedic->execSelect(\$query);

$query = qq"$_[1]";

$result = $dbMedic->execSelect(\$query);

#print qq"<br />Erorr: -----> $result";($result eq 1){qq"<span>

}

{if($h ne 0){$co = CGI->new();@qq = $co->Vars;$ses = $co->param('ses');$now = localtime time;

$query =~ s/\'/\\\'/g;($h eq 1){

#print "<br><br>--->$ENV{'REMOTE_ADDR'}";

$dbMedic->execSelect(\qq[insert into transaction_history(request_date, query_data, data_param, sot_id) values('$now', E'$query', '@qq', (SELECT id_sot FROM sesion WHERE sesion = '$ENV{'ses'}'))]);

}($h eq 2){

#print "<br><br>--->$ENV{'REMOTE_ADDR'}";

$dbMedic->execSelect(\qq[insert into history_connections(request_date, query_data, data_param, ip_adress) values('$now', E'$query', '@qq', '$ENV{REMOTE_ADDR}')]);

}($h eq 3){

#print "<br><br>--->$ENV{'REMOTE_ADDR'}";

$dbMedic->execSelect(\qq[insert into history_session(request_date, query_data, data_param, ip_adress) values('$now', E'$query', '@qq', '$ENV{REMOTE_ADDR}')]);

}

}

}

$dbMedic->dbDisconnect();$result;

}

;

Б.2 Код модуля «exel_card.pm»

#!C:\www\Perl5.8.9\bin\perlmodules::exel_card;strict;warnings;Spreadsheet::WriteExcel;utf8;Encode;POSIX qw(strftime);modules::ConnectDB;NewExel{

###################################Получение данных из базы####################################$query = qq"SELECT a.id_card AS id_card,.surname_stud AS surname_stud,.name_stud AS name_stud,.middlename_stud AS middlename_stud,

(SELECT name_gr FROM group_fac WHERE id_gr = b.id_gr) AS name_grp,

(SELECT name_fac FROM faculty WHERE id_fac = (SELECT id_fac FROM group_fac WHERE id_gr = b.id_gr)) AS name_fac,.policy AS policy,.number_passport AS number_passport,.sex AS sex,.birthday AS birthday,.home_fone AS home_fone,.mob_fone AS mob_fone,

(SELECT region FROM region WHERE id_region = a.id_region) AS region,

(SELECT town FROM town WHERE id_town = a.id_town) AS town,

(SELECT area FROM area WHERE id_area = a.id_area) AS area,.streat AS streat,.house AS house,.case_ AS case_,.kv_num AS kv_num,.stav_streat AS stav_streat,.stav_house AS stav_house,.stav_case AS stav_case,.stav_kv_num AS stav_kv_numcard aJOIN students b ON a.id_stud = b.id_studa.id_card = '$_[1]'";$result = modules::ConnectDB->SelectFromDB($query);

###############################################################################################$file = "card_".time.".xls";$workbook = Spreadsheet::WriteExcel->new("../htdocs/Excel/$file");$worksheet = $workbook->add_worksheet("Лист 1");

$worksheet->hide_gridlines();

##########################################Форматы ячеек########################################$format = $workbook->add_format(font => 'Times New Roman',=> 10,=> 'center');$format1 = $workbook->add_format(font => 'Times New Roman',=> 10,=> 'center');

$format1->set_underline(1);$format2 = $workbook->add_format(font => 'Times New Roman',=> 10,=> 'center');

$format2->set_font_script(1);$format_head = $workbook->add_format(font => 'Times New Roman',=> 12,=> 'center');

#$format_head->merge_range('A1:D1', 'Vertical and horizontal', $format_head);$format_cell = $workbook->add_format(font => 'Times New Roman',=> 12);

#$format_cell->set_size(30);

#$format_cell->set_shrink(1);

#$format_cell->set_align('fill');

#$format_cell->set_center_across(1);

#$format_cell->set_text_wrap();

$worksheet->set_column(0, 0, 29.43, $format_cell);

$worksheet->set_column(1, 0, 32.71, $format_cell);

$worksheet->set_column(2, 0, 23.29, $format_cell);

##########################################Вставка данных в ячейки##############################

my $i;

#$worksheet->merge_range('A1:D1', decode('utf-8',"$_[4]"), $format_head);

#########################################################################

$worksheet->write('A1', 'Министерство здравоохранения РФ',$format);

$worksheet->write('A2', ' СевКавГТУ ',$format1);

$worksheet->write('A3', 'наименование учереждения',$format2);

#########################################################################

$worksheet->write('C1', 'Код формы по ОКУД:',$format);

$worksheet->write('C2', 'Код учереждения по ОКПО:',$format);

$worksheet->write('C3', 'Медицинская документация',$format);

$worksheet->write('C4', 'Форма № 025/у',$format);

#########################################################################my $key (@$result) {

#$key->{'id_gr'}

$worksheet->merge_range('A7:C7', qq"МЕДИЦИНСКАЯ КАРТА АМБУЛАТОРНОГО БОЛЬНОГО №".decode('utf-8',"$key->{'id_card'}"), $format_head);

$worksheet->merge_range('A9:C9', qq"ФИО студента: ".decode('utf-8',"$key->{'surname_stud'}").' '.decode('utf-8',"$key->{'name_stud'}").' '.decode('utf-8',"$key->{'middlename_stud'}"), $format_head);

$worksheet->write('A11', 'Факультет: '.decode('utf-8',"$key->{'name_fac'}"),"font => 'Times New Roman', size => 12");

$worksheet->write('B11', 'Группа: '.decode('utf-8',"$key->{'name_grp'}"),"font => 'Times New Roman', size => 12");

$worksheet->write('A12', '№ полиса: '.decode('utf-8',"$key->{'policy'}"),"font => 'Times New Roman', size => 12");

$worksheet->write('B12', '№ паспорта: '.decode('utf-8',"$key->{'number_passport'}"),"font => 'Times New Roman', size => 12");$sex;($key->{'sex'} eq 1) {$sex = 'Мужской';}($key->{'sex'} eq 2) {$sex = 'Женский';}{$sex = '-';}

$worksheet->write('A14', 'Пол: '.$sex,"font => 'Times New Roman', size => 12");

$worksheet->write('B14', 'Телефон домашний: '.decode('utf-8',"$key->{'home_fone'}"),"font => 'Times New Roman', size => 12");

$worksheet->write('A15', 'Дата рождения: '.decode('utf-8',"$key->{'birthday'}"),"font => 'Times New Roman', size => 12");

$worksheet->write('B15', 'Телефон сотовый: '.decode('utf-8',"$key->{'mob_fone'}"),"font => 'Times New Roman', size => 12");

$worksheet->write('A17', 'Адрес больного:',"font => 'Times New Roman', size => 12");

$worksheet->write('B17', 'регион: '.decode('utf-8',"$key->{'region'}"),"font => 'Times New Roman', size => 12");

$worksheet->write('C17', 'район: '.decode('utf-8',"$key->{'area'}"),"font => 'Times New Roman', size => 12");

$worksheet->write('B18', 'город: '.decode('utf-8',"$key->{'town'}"),"font => 'Times New Roman', size => 12");

$worksheet->write('C18', 'улица: '.decode('utf-8',"$key->{'streat'}"),"font => 'Times New Roman', size => 12");

$worksheet->write('B19', 'дом №: '.decode('utf-8',"$key->{'house'}"),"font => 'Times New Roman', size => 12");$case_ = $key->{'case_'} || '-';

$worksheet->write('C19', 'корпус: '.$case_,"font => 'Times New Roman', size => 12");$kv_num = $key->{'kv_num'} || '-';

$worksheet->write('B20', 'квартира №: '.$kv_num,"font => 'Times New Roman', size => 12");

$worksheet->write('A22', 'Адрес в Ставрополе:',"font => 'Times New Roman', size => 12");$stav_streat = $key->{'stav_streat'} || '-';

$worksheet->write('B22', 'улица: '.decode('utf-8',$stav_streat),"font => 'Times New Roman', size => 12");$stav_house = $key->{'stav_house'} || '-';

$worksheet->write('C22', 'дом №: '.decode('utf-8',$stav_house),"font => 'Times New Roman', size => 12");$stav_case = $key->{'stav_case'} || '-';

$worksheet->write('B23', 'корпус: '.decode('utf-8',$stav_case),"font => 'Times New Roman', size => 12");$stav_kv_num = $key->{'stav_kv_num'} || '-';

$worksheet->write('C23', 'квартира №: '.decode('utf-8',$stav_kv_num),"font => 'Times New Roman', size => 12");

}$file;

}

;

Б.3 Код модуля «kernel.pm»

#!C:\www\Perl5.8.9\bin\perlmodules::kernel;strict;warnings;modules::ConnectDB;modules::ses;Templete;check_login {( $login, $pass, $wnd ) = ( $_[1], $_[2], $_[3] );$q;$id_s;$title;$CGISESSID;$query = qq"SELECTWHEN name = '$login' and pass = md5('$pass') THEN 1 ELSE 0 END AS result,_sotsot";$result = modules::ConnectDB->SelectFromDB($query);my $key (@$result) {( $key->{'result'} ) { $q = 1; $id_s = $key->{'id_sot'}; last; }{ $q = 0; }

}( $q == 1 ) { $CGISESSID = get_session('modules::kernel', $wnd, $id_s); }{ $CGISESSID = "Error"; $title = 'Не верно ввели имя или пароль'; }$CGISESSID, $title, $id_s;

}get_session {( $CGISESSID, $u_ip ) = modules::ses->new_ses();($wnd, $id_s) = ($_[1], $_[2]);$now = localtime time;$query ="select * from ses(\'$id_s\', \'$CGISESSID\', \'$now\', \'$u_ip\', \'$wnd\' )";$result = modules::ConnectDB->SelectFromDB($query, 3);$CGISESSID;

}read_last_page {$query = qq"SELECT last_wnd FROM sesion where id_sot = (select id_sot from sot where name ='$_[1]' and pass = md5('$_[2]'))";$result = modules::ConnectDB->SelectFromDB($query);$q = 0;my $key (@$result) {

$q = $key->{'last_wnd'};

}$q;

}query_file {$query = qq(SELECT file_ FROM wnd where id_button = '$_[1]');$result = modules::ConnectDB->SelectFromDB($query);$q =0;my $key (@$result) {

$q = $key->{'file_'};

}$q;

}user_id {($login, $pass, $ses) = ($_[1], $_[2], $_[3]);$query;($login eq '' or $pass eq '0' and $ses ne '0') {

$query = qq"SELECT id_sot FROM sesion WHERE sesion = '$ses'";

}($login ne '' and $pass ne '0') {

$query = qq"SELECT id_sot FROM sot WHERE name = '$login' AND pass = md5('$pass')";

}{ return 0;}$result = modules::ConnectDB->SelectFromDB($query, 2);$q =0;my $key (@$result) {

$q = $key->{'id_sot'};

}$q;

}

;

Б.4 Код модуля «ses.pm»

#!C:\www\Perl5.8.9\bin\perlmodules::ses;strict;warnings;CGI::Session('-ip_match');modules::ConnectDB;new_ses {#создание новой сессии

my $session = CGI::Session->new("driver:File", undef, {Directory=>'/var/www/vhosts/medic/tmpsession'});$CGISESSID = $session->id();

$session->flush();$u_ip = $session->param('_SESSION_REMOTE_ADDR');

$session->delete();

$session->flush(); $CGISESSID, $u_ip;#возвращает IP-пользователя и его ID-сессии

}

sub check_ses {#функция проверки сесси

my ($CGISESSID, $id) = ($_[1], $_[2]);$res = 0;$query = "SELECT * FROM check_ses(\'$CGISESSID\',\'$id\')";#check_ses() смотри в БД$result = modules::ConnectDB->SelectFromDB($query);my $key (@$result) {($key->{'check_ses'} == 1) {1;

}($key->{'check_ses'} == 0){0;

}{-1;

}

}

}

;

Б.5 Код модуля «Templete.pm»

#!C:\www\Perl5.8.9\bin\perlTemplete;strict;warnings;modules::ConnectDB;

#print "Content-type: text/html\n\n";

#<HTML>

sub gen_menu{#функция генерации меню для пользователя

my $log_id = $_[1];$query = qq"SELECT a.sot_id AS sot_id,

(SELECT q.name_func FROM func q WHERE a.func_id = q.func_id) AS name_func,

(SELECT w.rus_name FROM func w WHERE a.func_id = w.func_id) AS rus_name,

(SELECT e.name FROM wnd e WHERE a.wnd_id = e.id_button) AS name_wnd,.wnd_id,

(SELECT r.file_ FROM wnd r WHERE a.wnd_id = r.id_button) AS file_,.t_f AS t_fsot_func a a.t_f = 'true' AND a.func_id = '8' AND a.sot_id = '$log_id'BY name_wnd";$result = modules::ConnectDB->SelectFromDB($query);$result;

}name_wnd{$res;$query = qq"SELECT * FROM wnd WHERE id_button = '$_[1]' ORDER BY name";$result = modules::ConnectDB->SelectFromDB($query);my $key (@$result) {

$res = "($key->{'id_button'}) $key->{'name'}";

}$res;

}

;

Б.6 Код шаблона «start_page.tt»

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"

"#"justify"><html xmlns="#"justify"><head>

<meta name="Medic" content="Text/HTML; charset=UTF-8" />

<title>Medic - [%namewnd%]</title>

<link rel="shortcut icon" href="../images/medic.ico">

<link rel='stylesheet' type='text/css' href='../style/menu.css'>

<link rel="stylesheet" href="../style/style.css" type="text/css" />

<script type="text/javascript" src="../script/script.js"></script>

<script type="text/javascript" src="../script/tips.js"></script>

[%IF !page.cal%]<link rel="stylesheet" type="text/css" media="all" href="#"justify"><script type="text/javascript" src="#"justify"><script type="text/javascript" src="#"justify"><script type="text/javascript" src="#"justify">[%UNLESS hlp_editor%]<script type="text/javascript" src="../script/ckeditor/ckeditor.js"></script>

<link rel="stylesheet" href="../script/ckeditor/skins/kama/editor.css" type="text/css" />[%END%]

<script type="text/javascript">load(url)

{.main.wnd.value = url;.main.ses.value = '[% CGISESSID %]';.main.submit();

//location.href= 'index.cgi';

}RunF(nf)

{.main.fun.value = nf;.main.submit();

}LoadHelp(num)

{.main.hlp.value = num;(num);

}BackHelp(num)

{.main.hlp.value = 0;(num);

}

[% FOREACH key IN rules %][%IF key.wnd_id == wnd AND key.t_f == 1 AND key.func_id == 11%]function EditHlp()

{.main.hlp_editor.value = 1;(31);

}[%END%][%END%]

</script>

</head>

<body link="#000" vlink="#000" alink="#000">

<!--########################### Menu ####################################-->

<form name='main' method='post'>

<input type='hidden' name='wnd' value='[% wnd %]'><br>

<input type='hidden' name='wnd_befor' value='[% wnd %]'>

<input type='hidden' name='ses' value='[% ses %]'>

<input type='hidden' name='hlp' value=''>

<input type='hidden' name='fun' value=''>

<div>

<ul>

<li><a>

<ul>

[% FOREACH key IN menu %]

[%IF key.t_f == 1%]<li><a href='javascript:load([%key.wnd_id%])'>[%key.name_wnd%]</a></li>[%END%]

[% END %]

</ul>

</li>

<li><a href='#"justify">[%IF helper == -1 AND wnd != 31%]<li><a>

</ul>

</div>

<script type="text/javascript">menu=new menu.dd("menu");.init("menu","menuhover");

</script>

<!--########################### End Menu ####################################-->

[%IF helper == -1%]

[%INCLUDE $file%]

[%ELSE%][%USE CGI%]

[% FOREACH key IN rules %][%IF key.wnd_id == wnd AND key.t_f == 1 AND key.func_id == 11%]<input type='hidden' name='hlp_editor' value=''>[%END%][%END%]

<input type='button' value='Назад' OnClick="BackHelp([%CGI.param('wnd_befor')%])">

<input type='button' value='Содержание' OnClick='load(31)'>

[% FOREACH key IN rules %][%IF key.wnd_id == wnd AND key.t_f == 1 AND key.func_id == 11%]<input type='button' value='Редактор' OnClick='EditHlp()'>[%END%][%END%]<br />

[% FOREACH key IN hlp_lst %][%key.helper%][%END%]<br />

<input type='button' value='Назад' OnClick='BackHelp([%CGI.param('wnd_befor')%])'>

<input type='button' value='Содержание' OnClick='load(31)'>

[% FOREACH key IN rules %][%IF key.wnd_id == wnd AND key.t_f == 1 AND key.func_id == 11%]<input type='button' value='Редактор' OnClick='EditHlp()'>[%END%][%END%]<br />

<!-- ############################################## -->

[%END%]

</form>

</body>

</html>

Приложение В


Копии слайдов презентации


Слайд 1 - Тема дипломного проекта, ФИО дипломника, ученая степень, ученое звание и ФИО руководителя


Слайд 2 - Актуальность и цель дипломного проекта

Слайд 3 - Даталогическая модель базы данных


Слайды 4 - Интерфейс информационной системы

Слайды 5 - Интерфейс информационной системы


Слайды 6 - Права и группы пользователей

Слайды 7 - Права и группы пользователей


Слайды 8 - Пример медицинской карты, формируемый информационной системой

Слайды 9 - Примеры списков флюорографии, формируемый информационной системой


Слайд 10 - Показатели технико-экономической эффективности проекта

Слайд 11 - Итоги дипломного проектирования



ВВЕДЕНИЕ Актуальность темы дипломного проекта обусловлена тем, что небольшие медицинские учреждения не могут использовать дорогостоящие программно-аппара

Больше работ по теме:

КОНТАКТНЫЙ EMAIL: [email protected]

Скачать реферат © 2017 | Пользовательское соглашение

Скачать      Реферат

ПРОФЕССИОНАЛЬНАЯ ПОМОЩЬ СТУДЕНТАМ