5 РАЗРАБОТКА СИСТЕМЫ ПРОГНОЗИРОВАНИЯ
5.1 Общие требования к системе
Система прогнозирования динамики ЧМТ должна использовать данные, хранящиеся в специально разработанному на основе медицинских карточек историй больных файлу базы данных, получать которые она может посредством запросов к SQL-серверу. База данных состоит из нескольких таблиц, содержащих данные о больницах города, названиях районов города, о больных (данные о времени и месте получения травмы, о диагнозе, месте лечения и многое другое).
Разрабатываемая система должна предоставлять реальную помощь при анализе данной базы, посредством построения диаграмм и заполнения сводных таблиц запросов на выборку информации по определённым критериям. Должна присутствовать возможность вывода на принтер и в файл диаграмм и таблиц, а также возможность настройки параметров рисунков.
Прогнозирование должно осуществляться на основе заданных критериев – метода прогнозирования, параметров отбора данных из базы (например: прогноз колическво женщин, получивших травмы в возрасте 20-30 лет). Ошибка прогнозирования должна не превышать 5%, и быть как можно меньше. Прогнозные медели нужно верифицировать по данным за 2000г.
5.2 ОБЩАЯ СТРУКТУРА СИСТЕМЫ
Через каналы для транзакций данные поступают в систему. Программа открывает два таких канала, один при запросах на построение диаграмм, которые осуществляются из основного меню или при изменении общих настроек системы (текущего года, района и др.), другой при
запросах на построение прогнозов, которые осуществляются посредством нажатия специальной кнопки на вкладке программы. В результате данные полусенные по каналам связи с сервером, в случае удачного обращения направляются в “тело” программы – объект, осуществляющий манипуляции с данными, направляющий их на отображение на экране в таблицах или диаграммах или в процедуры прогнозирования, результаты которых, полученные после выполнения заданных действий, также отображаются на экране телом программы. Объект “тело” программы имеет несколько членов: объект для посроения диаграмм; объект для вывода данных в табличном виде; процедура обработки параметров запроса пользователя, анализирующая текущий выбор из меню и диалоговых окон и передающая управление процедурам обработки данных для построения прогноза.После одного обращения к серверу полученные данные сохраняются в информационной части объекта “тело” программы в виде таблицы данных, имеющей динамические размеры, т.е. изменяющей свои размеры в зависимости от величины полусенной выборки данных. Благодаря этому после одной транзакции можно будет проанализировать полученные данные, разбивая их на более мелкии подгруппы, не обращаясь каждый раз вновь к серверу, что существенно сокращает время ожидания выполнения запросов
в программе. При посроении прогнозов даные каждый раз обновляются посредством взаимодействия с основной базой данных, так как при изменении конфигурации критериев прогноза необходимо полность обновлять имеющуюся выборку, поэтому нет необходимости сохранять её в теле программы.5.3 СЕТЕВАЯ МОДЕЛЬ СИСТЕМЫ ПРОГНОЗИРОВАНИЯ
5.3.1 РЕГИСТРАЦИЯ СЕРВЕРА В ОПЕРАЦИОННОЙ СИСТЕМЕ
Для доступа к базе данных с помощью сервера SQLANYVERE 4.0 через средства Delphi -- Borland Database Engine необходима системная регистрация сервера. Сервер общается с операционной системой через набор стандартных драйверов ODBC32. Поэтому, чтобы зарегистрировать сервер в системе, необходимо добавить его данные в ODBC Data Source Administrator, содержащий информацию о названии сервера, пароле доступа пользователя, типе баз данных, поддерживаемых сервером, путях доступа к файлам сервера и поддержки и другое.
Для регистрации сервера осуществляются следующие действия:
В результате сервер сервер доступен для любых приложений работы с базами данных.
Любое обращение с серверу происходит через систему драйверов ODBC, которая в свою очередь обращается к драйверам Sybase SQL Anywhere 5.0, которые уже непосредственно передают нужную информацию серверу. При работе с сервером из Delphi это цепочка усложняется, так как Delphi общается с операционной системой, а в данном случае с её сервисом ODBC через специальные драйвера Borland Database Engine, которым передаётся непосредственно информация от объектов шлюзов Database, Query и других. Ниже представлена цепочка передачи информации ои пользовательской программы к серверу.
Приложение пользователя |
Borland Database Engine |
ODBC32bit |
Sybase SQL Anywhere 5.0 |
Рис. 5.1 -Взаимодействие приложения с сервером
5.3.2 ИСПОЛЬЗУЕМЫЕ КОМПОНЕНТЫ DELPHI И ИХ ВЗАИМОСВЯЗИ
Во всех приложения работы с базами данных Delphi автоматически создаёт объект компонента Session для использования методов TSession, с помощью которых происходит взаимодействие приложения с Borland Database Engine. Эта компонента описывается в специальном модуле Db, который необходимо подключать во всех программах баз данных.
Для подключения к серверу, поддерживающему базу данных, необходимо передать Borland Database Engine псевдоним сервера, пользовательский идентификационный код и пароль на доступ к данным. Это осуществляется программно с помощью объекта компонента TDatabase, в свойствах которого и передаётся требуемая информация:
Объект TDatabase имеет несколько дополнительных свойств, с помощью которых можно сконфигурировать подключение.
После подключения база данных становится доступной для всех объектов приложения под своим псевдонимом, к которому обращаются объекты, осуществляющие запросы -- TQuery. Так как программа может осуществлять две независимые транзакции, одна для анализа данных в базе, другая для получения прогнозной информации, в приложении используются два независимых объекта компонента TQuery. Каждый из этих объектов связан с
основной базой данных и выполняет свои запросы. Для получения и интерпретации результатов выполнения запросов с каждым из объектов типа TQuery связан промежуточный объект компонента TDateSource, выполняющий функцию связи Query с объектами вывода результатов выполнения запроса на экран или в приложение. Такими объектами являются компоненты TDBGrid и TDBText, из информационных полей которых приложение непосредственно получает результаты запросов к серверу.5.3.3
ИСПОЛЬЗОВАНИЕ SQL-ЗАПРОСОВ В СИСТЕМЕ ПРОГНОЗИРОВАНИЯЯзык структурированных запросов (SQL-Structured Query Language) -- это стандартизированный язык получения доступа к данным и выполнения операций с ними, разработанный в Американском национальном институте стандартов в 1986 году. Поскольку в этом языке нет специальных структур, не совсем правильно будет назвать SQL языком программирования. Однако в нём определены команды, похожие на операторы программы, такие как SELECT, JOIN или UPDATE для выполнения различных операций с таблицами баз данных.
Поскольку Delphi и Borland Database Engine выполняют большинство операций с базами данных, поддерживают подмножество стандарта SQL для баз данных форматов Paradox, dBase, Oracle и ряда других. К таблицам БД одного из этих форматов можно применять команды SQL SE
LECT, INSERT, UPDATE, DELETE для выполнения операций выборки, вставки, обновления и удаления соответственно. Также серверы SQL обеспечивают дополнительные команды, ознакомиться с которыми можно в специальной документации.Так как в приложении необходимо обеспечить лишь получении информации из базы данных, но не в коем случае не корректировку записей в таблицах, для этих целей использовалась одна единственная SQL команда SELECT. Эта команда позволяет делать сложные запросы на выборку из базы по определённым критериям.
Синтаксис этой команды выглядит следующим образом:
SELECT <список столбцов, которые выбираются запросом> (* - все столбцы) FROM <имена таблиц, из которых осуществляется выборка> (через " , ") DISTINCT (список без дубликатов) WHERE <предикаты выбора> GROUP BY <список полей для группировки таблицы> (позволяет определить подмножество значений в особом поле в терминах другого поля, и применить функцию агрегата к подмножеству) HAVING <критерий для удаления определённой группы из вывода> ORDER BY <названия столбцов, по которым упорядочить> DESC (по убыванию)/ ASC (по возрастанию)
Вместо списка столбцов могут присутствовать различные функции выборки:
COUNT(<список столбцов>) -- подсчитать строки, которые выбрал запрос;
SUM(<список столбцов>) -- подсчитать арифметическую сумму значений, которые выбрал запрос;
AVG(<список столбцов>) -- усреднение всех выбранных значений данного поля ;
(для первых трёх функций могут использоваться только числовые поля)
MAX(<список столбцов>) -- находит максимальное из всех выбранных значений;
MIN(<список столбцов>) -- находит минимальное из всех выбранных значений;
Для оформления предикатов выбора (фильтров) используются следующие правила:
<предикат выбора>:=<имя столбца><оператор><значение столбца>
где <оператор>: ' = ' , ' < ' , ' > ' , ' >= ' , ' <= ' , ' <> ' , ' AND ' , ' NOT ' , ' OR ' , ' специальные операторы '
где <специальные операторы > :
Примеры использования различных возможностей оператора SELECT представлены в следующей таблице.
Таблица 5.1 Примеры SQL запросов
SQL запрос |
Пояснение |
Select Count(*) from table1 where (male08=10) and (color>’red’) |
Подсчитать количество записей в table1, для которых значение поля male08 = 10 и значение поля color > ‘red’ |
Select sum(finans) from sitis1 where city in ( ‘Barselona’, ‘London’, ‘New-York’) |
Подсчитать сумму всех значений столбца finans таблицы sitis1 для записей у которых поле city равно или ‘Barselona’ или ‘London’ или ‘New-York’ |
Select number,count from table where (comm between .10 and .12 ) and (charname like ‘G%’) |
Вывести все значения столбцов number и count для которых соответствующие значения столбца comm лежат в диапазоне от 0.10 до 0.12 и значения столбца charname начинаются с ‘G’ |
Select snum, odate, max(amt) from orders group by snum, odate having max(amt)>3000000 |
Вывести значения столбцов snum, odate и максимум в столбце amt таблицы orders для каждого значения из полей snum и odate находить значения max по amt и удалить все группы, для которых не выполняется условие max(amt)>3000000 |
Для передачи базе данных команда SQL используется компонент Query, т. е. чтобы пользоваться командами SQL, каждой базе данных нужен один объект компонента Query. С компонентов Query напрямую связан объект DateSource для подсоединения специализированных элементов управления к компоненту Query. Эти
элементы управления отражают результаты выполнения команд SQL.Для целей программы были использованы запросы, формируемые динамически, т. е. во время выполнения программы. Сформированные запросы передавались объекту Query, а результат возвращался и изымался в последствии из объекта DBGrid или DBEdit.
Запросы имеют следующий общий вид:
SELECT COUNT(*) FROM cards Cards, sitys Sitys, territory Territory WHERE (territory=territory.id) and (territory.code=1) and (cards.city=citys.id) and (citys.id=622) and (dateget16 BETWEEN :Params[0] and :Params[1])
В данном запросе осуществляется работа с тремя таблицами базы данных, из которых две – вспомогательные словари (Sitys и Territory) и одна основная таблица – база (Cards). В словаре Territory расположены названия и коды всех районов города Донецка, так как удобнее хранить информацию в основной базе данных в виде кодов (меньший объем дискового пространства), то проверка на тот или иной район осуществляется через словарь территорий, аналогично в словаре городов хранятся названия городов и их коды, доступ к нужному городу осуществляется через его код (код Донецка = 622), чтобы получить информацию за необходимый период, производится проверка поля Dateget16 – время получения травмы, проверяется поле с помощью диапазона, который задаётся параметрически с помощью специального средства объекта Query – массива параметров запроса, который может быть переменной длинны. Далее в программе, в соответствии с требованиями пользователя параметры инициализируются определённой датой и происходит передача запроса серверу. В зависимости от других различных требований пользователя в запросы могут быть добавлены различные фильтры по другим полям (по полю “пол больного”, “возраст больного”, “клинический диагноз”, “профессия” и другие).
5.4 ИНТЕРФЕЙС СИСТЕМЫ
Для наглядного анализа результатов исследования ЧМТ по всему городу и по отдельным его районам в указанные пользователем сроки, а также с учетом признаков, по которым необходимо видеть распределение травм, программой предусмотрены несколько видов меню -- основное, всплывающее и стационарное и система кнопок для других сервисов программы. Анализ результатов запросов осуществляется с помощью построения различных графиков, диаграмм и зависимостей, а также общей таблицы результатов.
Программа использует стандартные средства Delphi для обеспечения главного меню, всплывающего по левой кнопке мыши меню, и стационарного меню, привязанного к определённой области программы. По возможности реализована система подсказок по использованию того или иного вида меню, также с помощью возможностей системы программирования.
Для построения графиков и диаграмм использованы стандартный класс Delphi TChart, предоставляющий возможности построения различного вида диаграмм -- столбчатых, точетных, круговых, векторных, линечатых и других. В программе, исходя из наглядности представления материала использованы столбчатые, круговые и линейчатые диаграммы. Все диаграммы построены на основе данных, которые в результате осуществления более двухсот запросов к серверу собираются в общую таблицу и хранятся в ней. При запросе пользователя на тот или иной вид диаграмм, (запрос осуществляется с помощью системы меню) из таблицы данных изымается нужная строка или столбец, передаются в объект компонента TChar и по этим данным методы объекта воспроизводят нужную диаг-рамму в соответствии с конфигурацией объекта (надписи на осях, пояснительные надписи к данным, заголовок диаграммы и другие характеристики).
Рисунок 5.2
На вкладке, изображённой на рис. 5.2 (программа имеет вкладочную систему отображения информации) отображена таблица, содержащая все результаты запросов, суммарные результаты и возможные ошибки.