Функции элементов окна информации о пациенте.

Описание окна информации о пациенте.

Форма содержит следующие элементы:

o 8 элементов редактирования и взаимодействия с БД (DBEdit);

o 3 элемента редактирования (Edit);

o 1 элемент вывода и редактирования текста (Memo);

o 1 элемент редактирования и вывода текста, а так же взаимодействия с базой данных (DBMemo);

o 2 кнопки (Button):

o кнопка «Обновить данные о пациенте», при нажатии на которую выполняется обновление данных пациента;

o кнопка «Выйти», при нажатии на которую выполняется закрытие формы.

При активации окна происходит выполнение следующего кода:

procedure TPacientInfo.FormActivate(Sender: TObject);

begin

ADOQuery1.Parameters.Refresh;

ADOQuery1.Close;

ADOQuery1.SQL.Clear;

ADOQuery1.SQL.Add('execute spInfoPacient '''+idi+''' ');

ADOQuery1.Open;

Edit1.Text:=ADOQuery1.Fields[0].AsString;

ADOQuery1.Close;

ADOQuery1.SQL.Clear;

ADOQuery1.SQL.Add('execute spInfoPacientLech '''+idi+''' ');

ADOQuery1.Open;

Memo1.Lines.Text:=ADOQuery1.Fields[0].AsString;

ADOQuery1.Close;

ADOQuery1.SQL.Clear;

ADOQuery1.SQL.Add('execute spInfoPacientData '''+idi+''' ');

ADOQuery1.Open;

Edit2.Text:=ADOQuery1.Fields[0].AsString;

ADOQuery1.Close;

ADOQuery1.SQL.Clear;

ADOQuery1.SQL.Add('execute spInfoPacientDoctor '''+idi+''' ');

ADOQuery1.Open;

Edit3.Text:=ADOQuery1.Fields[0].AsString;

ADOQuery1.Close;

ADOQuery1.SQL.Clear;

ADOQuery1.SQL.Add('execute spInfoEpikriz '''+idi+''' ');

ADOQuery1.Open;

DBMemo1.Lines.Values[ADOQuery1.Fields[0].AsString];

DBMemo1.DataSource.DataSet.Edit;

end;

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

o spInfoPacient

ALTER PROCEDURE [dbo].[spInfoPacient]

@idi integer out

AS

BEGIN

select Diagnoz from Diagnoz d INNER JOIN Pacient p ON p.idDiagnoz = d.idDiagnoz where d.idDiagnoz=@idi

END

Запрос позволяет выбрать (select) название диагноза (Diagnoz), путем объединения (INNER JOIN) двух таблиц Diagnoz и Pacient по ключевому полю (ON) idDiagnoz, где условием (where) будет являться столбец idDiagnoz из таблицы Diagnoz, соответствующий переменной @idi. В результате запроса мы получим ответ сервера, как, например, «Простуда». Результат команды заносится в свойство Text элемента редактирования Edit1.

o spInfoPacientLech

ALTER PROCEDURE [dbo].[spInfoPacientLech]

@idi integer out

AS

BEGIN

select KursLech from Diagnoz d INNER JOIN Pacient p ON p.idDiagnoz = d.idDiagnoz where d.idDiagnoz=@idi

END

Запрос позволяет выбрать (select) текстовый вариант курса лечения (KursLech), путем объединения (INNER JOIN) двух таблиц Diagnoz и Pacient по ключевому полю (ON) idDiagnoz, где условием (where) будет являться столбец idDiagnoz из таблицы Diagnoz, соответствующий переменной @idi. В результате запроса мы получим ответ сервера, как, например, «Либексин, по 1 таблетке 2 раза в день». Результат команды заносится в свойство Lines.Text элемента вывода данных Memo1.

o spInfoPacientData

ALTER PROCEDURE [dbo].[spinfoPacientData]

@idi integer out

AS

BEGIN

select DataOsmotr from MedKarta m INNER JOIN Pacient p ON p.idDiagnoz = m.idDiagnoz where m.idDiagnoz=@idi

END

Запрос позволяет выбрать (select) дату осмотра (DataOsmotr), путем объединения (INNER JOIN) двух таблиц MedKarta и Pacient по ключевому полю (ON) idDiagnoz, где условием (where) будет являться столбец idDiagnoz из таблицы Diagnoz, соответствующий переменной @idi. В результате запроса мы получим ответ сервера, как, например, «08.03.2012». Результат команды заносится в свойство Text элемента редактирования Edit2.

o spInfoPacientDoctor

ALTER PROCEDURE [dbo].[spInfoPacientDoctor]

@idi integer out

AS

BEGIN

select surName+' '+firstName+' '+lastName as FIO from Doctor d INNER JOIN MedKarta m ON d.idDoctor=m.idDoctor where m.idDiagnoz = @idi

END

Запрос позволяет выбрать (select) отчество (surName), имя (firstName) и фамилию (lastName), путем объединения (INNER JOIN) двух таблиц Doctor и MedKarta по ключевому полю (ON) idDoctor, где условием (where) будет являться столбец idDiagnoz из таблицы MedKarta, соответствующий переменной @idi. В результате запроса мы получим ответ сервера, как, например, «Тихомиров Алексей Владимирович». Результат команды заносится в свойство Text элемента редактирования Edit3.

o spInfoEpikriz

ALTER PROCEDURE [dbo].[spInfoEpikriz]

@idi integer out

AS

BEGIN

select epikriz from Pacient where idPacient=@idi

END

Запрос позволяет выбрать (select) данные эпикриза (epikriz) пациента из (from) таблицы Pacient, где условием (where) будет являться столбец idPacient, соответствующий переменной @idi. В результате запроса мы получим ответ сервера, как, например, «09.11.2011 – рак поджелудочной железы». Результат команды заносится в значение Values свойства Lines элемента вывода данных DBMemo1.

При закрытии формы (FormClose) выполняется следующий код:

procedure TPacientInfo.FormClose(Sender: TObject;

var Action: TCloseAction);

begin

Kart.ADOQuery1.Active:=false;

Kart.ADOQuery1.Active:=true;

end;

Код означает следующее: при закрытии формы свойству Active элемента ADOQuery1, находящегося на форме Kart, присваеваем сначала значение false (ложь), т.е. отключаем этот элемент, а потом снова включаем, присваивая свойству значение true (правда). Это сделано с целью предотвращения ошибки обновления данных «Не удается найти строку для обновления. Некоторые значения могли быть изменены со времени ее последнего чтения».

Элементы DBEdit. Значения в DBEdit'ы вводятся автоматически при активации формы. Это было достигнуто путем выбора в свойстве DataSource элемента управления данными DataSource1, находящегося на форме Kart. Также необходимо было в свойстве DataField выбрать столбик, требуемый для отображения. В итоге, выбирая строку в DBGrid и подставляя нужный столбец, мы получаем ячейку, выводимую в DBEdit.

Кнопка «Обновить данные о пациенте». Выполняет команду обновления данных о пациенте. Данные для запроса берутся из соответствующих DBEdit'ов и переменной bi2. Код команды приведен ниже:

procedure TPacientInfo.Button2Click(Sender: TObject);

begin

ADOQuery2.SQL.Clear;

ADOQuery2.SQL.Add('execute spUpdInfo '''+bi2+''', '''+dbEdit4.Text+''', '''+dbEdit3.Text+''', '''+dbEdit2.Text+''', '''+dbEdit5.Text+''', '''+dbEdit6.Text+''', '''+dbEdit8.Text+''', '''+dbEdit7.Text+''', '''+dbEdit9.Text+''' ');

ADOQuery2.ExecSQL;

ShowMessage('Обновление выполнено');

end;

Код означает следующее: при нажатии на кнопку выполняется очистка данных в свойстве SQL элемента управления ADOQuery2 и добавляется команда для выполнения. После это команда выполняется (ExecSQL). В конце выводится сообщение о выполнении команды «Обновление выполнено».

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

ALTER PROCEDURE [dbo].[spUpdInfo]

@id int out,

@sur varchar(15),

@first varchar(15),

@last varchar(15),

@birth varchar(12),

@addr varchar(50),

@pol nchar(7),

@svid nchar(14),

@inn nchar(12)

AS

BEGIN

update Pacient set surName=@sur, firstName=@first, lastName=@last, Birthday=@birth, [Address]=@addr, Polis=@pol, StrahSvid=@svid, INN=@inn where idPacient = @id

END

Процедура означает следующее: нужно обновить (update) данные (set) таблицы Pacient, где (where) условием будет ячейка столбца idPacient, соответствующая переменной @id. Результатом команды будет обновление строки с соответствующим идентификатором.

Кнопка «Выйти». Выполняет команду закрытия формы. Код кнопки представлен ниже:

procedure TPacientInfo.Button1Click(Sender: TObject);

begin

PacientInfo.Close;

end;

Код означает следующее: при нажатии на кнопку выполняется закрытие (Close) формы PacientInfo.


6. ЗАКЛЮЧЕНИЕ.

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

Автоматизированная информационная система позволяет ускорить обработку поступающей информации и наладить взаимодействие между предприятием и клиентами.

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


7. СПИСОК ИСПОЛЬЗУЕМОЙ ЛИТЕРАТУРЫ.