автобиография

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, содержащий информацию о названии сервера, пароле доступа пользователя, типе баз данных, поддерживаемых сервером, путях доступа к файлам сервера и поддержки и другое.

Для регистрации сервера осуществляются следующие действия:

    1. инсталляция самого сервера и его драйверов с помощью специального установочного комплекта;
    2. в ODBC Data Source Administrator нужно добавить пользовательский сервер, который поддерживается системой драйверов Sybase SQL Anywhere 5.0;
    3. в появившемся окне SQL Anywhere ODBC Configuration вписать названия базы данных, пользовательский идентификационный код, пароль пользователя, системное название сервера, путь расположения базы данных на диске, можно указать различные опции для запуска сервера, в зависимости от которых ему будут доступны различные объёмы оперативной памяти, кэша Windows, и другие характеристики; остальные параметры система выставляет по умолчанию.

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

Любое обращение с серверу происходит через систему драйверов 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, в свойствах которого и передаётся требуемая информация:

  1. AliasName - псевдоним сервера;
  2. DatabaseName - псевдоним базы данных, через который к ней будут обращаться остальные объекты программы;
  3. Params - массив параметров подключения, в его составе user name='dba' -- пользовательский идентификационный код, как был установлен в конфигурации сервера при инсталляции и подтверждён в системе ODBC и password='sql' -- пароль доступа к информации.

Объект 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 SELECT, 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 ' , ' специальные операторы '

где <специальные операторы > :

    1. IN (список значений среди которых нужно искать значение, перечисление диапазона значений);
    2. BETWEEN <начало диапазона> AND <конец диапазона> - видит записи, значение которых лежит в данном диапазоне, чувствителен к порядку (начало всегда должно быть меньше конца), включаются и начальное и конечное данные диапазона;
    3. LIKE ' <подстрока> ' - находит в записях заданные подстроки (применим только к полям типа char и varchar), ищет поле символа, чтобы видеть совпадает ли с условием часть его строки, можно использовать при написании диапазона специальные символы : '_' - заменить один символ любым; '%' - заменить последовательность символов любыми;
    4. IS NULL - ищет все нули в указанном столбце;
    5. NOT NULL - ищет все не нули в указанном столбце.

Примеры использования различных возможностей оператора 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 (программа имеет вкладочную систему отображения информации) отображена таблица, содержащая все результаты запросов, суммарные результаты и возможные ошибки.