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

Дипломная работа - Компьютеры, программирование

Другие дипломы по предмету Компьютеры, программирование



?ей в поля таблицы с заданными типами данных.

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 = "У вас закончилась сессия.Авторизуйтесь еще раз.";

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"

"

<html xmlns="h