Функции элементов окна информации о пациенте.
Описание окна информации о пациенте.
Форма содержит следующие элементы:
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. СПИСОК ИСПОЛЬЗУЕМОЙ ЛИТЕРАТУРЫ.