1 Назаренко Г.И., Гулиев Я.И., Ермаков Д.Е. Медицинские информационные системы: теория и практика. / Под. ред. Г.И. Назаренко, Г.С. Осипова. – Москва: Физматлит, 2005, – 320 с.
2 Рэнд Моримото, Кентон Гардиньер, Майкл Ноэл, Джо Кока. Microsoft Exchange Server 2003. Полное руководство = Microsoft Exchange Server 2003 Unleashed. - М.:«Вильямс», 2006. -С. 1024. - ISBN 0-672-32581-0.
3 Сайт http://www.mgkb5oren.ru/ Сайт Государственного бюджетного учреждения здравоохранения «Городская клиническая больница № 5» города Оренбурга.
4 Эльянов М. М. Медицинские информационные технологии. Каталог. Вып. 5. – Москва: Третья медицина, 2005, – 320 с.
5 Зорин А.В., Шакула А.В., Бадретдинов Р.Р. Система оценки эффективности восстановительных мероприятий и автоматизации работы лечебно-профилактического учреждения. / Вестник восстановительной медицины №4 (14). – Москва, 2005.
6 Сайт http://www.minzdrav.orb.ru/ Сайт Министерства здравоохранения Оренбургской области
7 Боэм Б.У. Инженерное проектирование программного обеспечения. – Москва: Радио и связь, 1985. – 512.
8 Фундаментальные исследования: ежемес. журн. / учредитель Академия Естествознания, 2003, Москва, ISSN 1812-7339. 2015, №1(810).
9 Фундаментальные исследования: ежемес. журн. / учредитель Академия Естествознания, 2003, Москва, ISSN 1812-7339. 2013, №7(589).
10 Кардио-ИТ: ежемес. журн. / учредитель ООО «Наука и Инновации», 2000, Саратов, ISSN 2313-0318. 2014, №2.
11 Виейра, Р. Программирование баз данных MySQL Server 2005. Базовый курс.: Пер. с англ. – Москва: ООО «И.Д. Вильямс», 2007. – 832с.: – Парал. тит. англ. ISBN 978-5-8459-1202-2 (рус.)
12 Режеуцкая С.Ю. Базы данных. Язык SQL: учеб. Пособие / С.Ю. Режеуцкая. – Вологда: ВоГТУ, 2010. – 159 с.
13 Сорокин А.В. Delphi. Разработка баз данных. – Санкт-Петербург: Питер, 2005. – 477 с.
14 Врач и информационные технологии: ежемес. журн. / учредитель «Менеджер здравоохранения», 2000, Москва, 2009, №6 (4).
15 Кузнецов П. П. Основные направления развития информатизации Российского здравоохранения: [Электронный ресурс] / П. П.Кузнецов. Режим доступа: http://www.worldbank.org.ru. – 15.09.2014.
16 Эльянов М. М. Медицинские информационные технологии. Каталог. Вып. 3. / М. М. Эльянов. Москва: Третья медицина, 2002. – 320 с.
17 Эльянов М. М. Медицинские информационные технологии: цивилизованный рынок или «зоопарк» / М. М. Эльянов // Информационные технологии в медицине-2002: Сборник тезисов. Москва: ВК ВВЦ «Наука и образование», 2002. С. 54 – 58.
18 Рот Г. З. Проблемы организации и перспективы внедрения компьютерных технологий в многопрофильной больнице / Г. З. Рот, В. Н. Денисов, Е. И. Шульман. // Бюллетень СО РАМН. 1998. №1. С.134 – 140.
19 Назаренко Г.И., Гулиев Я.И., Ермаков Д.Е. Медицинские информационные системы: теория и практика. Под редакцией Г. И. Назаренко, Г. С. Осипова. Москва: ФИЗМАТЛИТ, 2005. – 320 с.
20 Кобринский Б.А., Зарубина Т.В. Медицинская информатика: Учебник. Москва: изд. "Академия", 2009. – 192 с.
21 Карась С.И. Информационные основы принятия решений в медицине: Учебное пособие. – Томск: Печатная мануфактура, 2003. – 145с.
22 Медицинская информатика: учебное пособие / Чернов В.И. [и др]. – Воронеж, 2004. – 282с.:
23 Гельман В.Я. Медицинская информатика: практикум. – Санкт-Петербург: Питер, 2001. – 480с.
24 Рот Г.3. Медицинские информационные системы: учеб. пособие / Г.3. Рот, М.И. Фихман, Е.И. Шульман. – Новосибирск: Изд-во НГТУ, 2005. – 70 с.
25 Крис Фиайли. SQL: Руководство по изучению языка. - М.: Peachpit Press, 2003. – 456 с.
26 Дюк В., Эммануэль В. Информационные технологии в медико-биологических исследованиях. Санкт-Петербург: Питер, 2003. – 528 с.
27 Голицына О.Л., Максимов Н.В., Попов И.И. Базы данных: учеб. Пособие. – Москва: «Форум»: ИНФРА-М, 2007. – 400 с.
28 Информационные системы 3-е издание / Ю. Избачков [и др.]. – Санкт-Петербург: Питер, 2010. – 544 с.
29 Гнеденко В.Г., Иоселиани Д.Г., Файнберг Е.М. и др. “Аппаратно-программный комплекс для диагностики, мониторирования и лечения сердечно-сосудистых заболеваний ДИМОЛ”, технический проект, РНЦ “Курчатовский институт”, 1994.
30 Гнеденко В.Г., Иоселиани Д.Г., Файнберг Е.М. и др. “Разработка автоматизированных рабочих мест врача-ангиографиста для НПЦ “Интервенционной кардиоангиологии”, технический проект, РНЦ “Курчатовский институт”, 1999.
31 В.А. Востриков (1995) “Отчет по оценке медико-технических характеристик дефибриллятора - монитора ДКИ-Н-04М”, НИИ общей реаниматологии РАМН.
Приложение А
(обязательное)
Листинг программы «Главное окно программы»
unit Main;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, DBGridEhGrouping, Menus, GridsEh, DBGridEh, RzButton, ImgList,
ExtCtrls, RzPanel, RzTabs, DB, ADODB, SysUtilites, shellapi;
type
TfmMain = class(TForm)
ADOConnection1: TADOConnection;
ImageList1: TImageList;
RzPanel1: TRzPanel;
RzPageControl1: TRzPageControl;
TabSheet1: TRzTabSheet;
DBGridEh1: TDBGridEh;
RzToolbar2: TRzToolbar;
BtnInsertRecord: TRzToolButton;
BtnEdit: TRzToolButton;
BtnDelete: TRzToolButton;
TabSheet2: TRzTabSheet;
TabSheet3: TRzTabSheet;
mm1: TMainMenu;
N1: TMenuItem;
N3: TMenuItem;
N6: TMenuItem;
N7: TMenuItem;
N2: TMenuItem;
N5: TMenuItem;
N4: TMenuItem;
RzToolbar1: TRzToolbar;
RzToolButton1: TRzToolButton;
RzToolButton2: TRzToolButton;
RzToolButton3: TRzToolButton;
DBGridEh2: TDBGridEh;
RzToolbar3: TRzToolbar;
RzToolButton4: TRzToolButton;
RzToolButton5: TRzToolButton;
RzToolButton6: TRzToolButton;
DBGridEh3: TDBGridEh;
DataSource1: TDataSource;
qPatients: TADOQuery;
qMarkers: TADOQuery;
DataSource2: TDataSource;
DataSource3: TDataSource;
qDisease: TADOQuery;
qDiseaseID: TAutoIncField;
qDiseaseNAME: TStringField;
qDiseaseDESCRIPTION: TStringField;
qDiseaseSYMPTOM: TStringField;
qDiseaseTYPE: TSmallintField;
qMarkersID: TAutoIncField;
qMarkersNAME: TStringField;
qMarkersDESCRIPTION: TStringField;
qMarkersNORMAL_VALUE: TBCDField;
qPatientsNAME: TStringField;
qPatientsNORMAL_VALUE: TBCDField;
qPatientsID: TAutoIncField;
qPatientsFIO: TStringField;
qPatientsPOL: TStringField;
qPatientsDATE_OF_BIRTH: TDateTimeField;
qPatientsDATE_OF_SURVEY: TDateTimeField;
qPatientsSMOKES: TStringField;
qPatientsEXPECTANT: TStringField;
qPatientsRESULT: TBCDField;
qPatientsRESULT_S: TStringField;
qPatientsMRT: TStringField;
qPatientsUZI: TStringField;
qPatientsRADIOGRAPHY: TStringField;
qPatientsDISEASE_NAME: TStringField;
procedure N3Click(Sender: TObject);
procedure RzToolButton1Click(Sender: TObject);
procedure RzToolButton2Click(Sender: TObject);
procedure RzToolButton4Click(Sender: TObject);
procedure FormShow(Sender: TObject);
procedure RzToolButton5Click(Sender: TObject);
procedure RzToolButton3Click(Sender: TObject);
procedure qMarkersAfterOpen(DataSet: TDataSet);
procedure RzToolButton6Click(Sender: TObject);
procedure BtnInsertRecordClick(Sender: TObject);
procedure BtnDeleteClick(Sender: TObject);
procedure BtnEditClick(Sender: TObject);
procedure N4Click(Sender: TObject);
procedure N5Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
procedure RefreshData;
end;
var
fmMain: TfmMain;
implementation
uses AddMarker, AddDisease, AddPatients, About;
{$R *.dfm}
procedure TfmMain.RefreshData;
begin
if qPatients.Active then
qPatients.Close;
qPatients.Open;
if qMarkers.Active then
qMarkers.Close;
qMarkers.Open;
if qDisease.Active then
qDisease.Close;
qDisease.Open;
end;
procedure TfmMain.N3Click(Sender: TObject);
begin
Close;
end;
procedure TfmMain.RzToolButton1Click(Sender: TObject);
begin
if fmAddMarker=nil then
Application.CreateForm(TfmAddMarker,fmAddMarker);
fmAddMarker.MODE:=wmAdd;
fmAddMarker.ShowModal;
end;
procedure TfmMain.RzToolButton2Click(Sender: TObject);
begin
if fmAddMarker=nil then
Application.CreateForm(TfmAddMarker,fmAddMarker);
fmAddMarker.MODE:=wmEdit;
fmAddMarker.MARKER_ID:=qMarkers.FieldByName('ID').AsInteger;
fmAddMarker.ShowModal;
end;
procedure TfmMain.RzToolButton4Click(Sender: TObject);
begin
if fmAddDisease=nil then
Application.CreateForm(TfmAddDisease,fmAddDisease);
fmAddDisease.MODE:=wmAdd;
fmAddDisease.ShowModal;
end;
procedure TfmMain.FormShow(Sender: TObject);
begin
RefreshData;
end;
procedure TfmMain.RzToolButton5Click(Sender: TObject);
begin
if fmAddDisease=nil then
Application.CreateForm(TfmAddDisease,fmAddDisease);
fmAddDisease.MODE:=wmEdit;
fmAddDisease.DISEASE_ID:=qDisease.FieldByName('ID').AsInteger;
fmAddDisease.ShowModal;
end;
procedure TfmMain.RzToolButton3Click(Sender: TObject);
var
Tb:TADOQuery;
begin
if MessageDlg('Вы действительно хотите удалить маркер?',mtConfirmation,[mbYes,mbNo], 0) = mrNo then
exit;
Tb:=TADOQuery.Create(nil);
Tb.Connection:=fmMain.ADOConnection1;
try
Tb.SQL.Text:='delete from oncological_diseases where marder_id =:ID1;'+
'delete from markers where id =:ID2;';
Tb.Parameters[0].Value:=qMarkers.FieldByName('ID').AsInteger;
Tb.Parameters[1].Value:=qMarkers.FieldByName('ID').AsInteger;
Tb.ExecSQL;
finally
Tb.Free;
end;
RefreshData;
end;
procedure TfmMain.qMarkersAfterOpen(DataSet: TDataSet);
begin
RzToolButton2.Enabled:=not qMarkers.IsEmpty;
RzToolButton3.Enabled:=not qMarkers.IsEmpty;
end;
procedure TfmMain.RzToolButton6Click(Sender: TObject);
var
Tb:TADOQuery;
begin
if MessageDlg('Вы действительно хотите удалить болезнь?',mtConfirmation,[mbYes,mbNo], 0) = mrNo then
exit;
Tb:=TADOQuery.Create(nil);
Tb.Connection:=fmMain.ADOConnection1;
try
Tb.SQL.Text:='delete from oncological_diseases where disease_id =:ID1;'+
'delete from disease where id =:ID2;';
Tb.Parameters[0].Value:=qDisease.FieldByName('ID').AsInteger;
Tb.Parameters[1].Value:=qDisease.FieldByName('ID').AsInteger;
Tb.ExecSQL;
finally
Tb.Free;
end;
RefreshData;
end;
procedure TfmMain.BtnInsertRecordClick(Sender: TObject);
begin
if fmAddPatients = nil then
Application.CreateForm(TfmAddPatients,fmAddPatients);
fmAddPatients.MODE:=wmAdd;
fmAddPatients.ShowModal;
end;
procedure TfmMain.BtnDeleteClick(Sender: TObject);
var
Tb:TADOQuery;
begin
if MessageDlg('Вы действительно хотите удалить пациента?',mtConfirmation,[mbYes,mbNo], 0) = mrNo then
exit;
Tb:=TADOQuery.Create(nil);
Tb.Connection:=fmMain.ADOConnection1;
try
Tb.SQL.Text:='delete from patients where id =:ID';
Tb.Parameters[0].Value:=qPatients.FieldByName('ID').AsInteger;
Tb.ExecSQL;
finally
Tb.Free;
end;
RefreshData;
end;
procedure TfmMain.BtnEditClick(Sender: TObject);
begin
if fmAddPatients = nil then
Application.CreateForm(TfmAddPatients,fmAddPatients);
fmAddPatients.MODE:=wmEdit;
fmAddPatients.PATIENT_ID:=qPatients.FieldByName('ID').AsInteger;
fmAddPatients.ShowModal;
end;
procedure TfmMain.N4Click(Sender: TObject);
begin
if fmAbout = nil then
Application.CreateForm(TfmAbout, fmAbout);
fmAbout.ShowModal;
end;
procedure TfmMain.N5Click(Sender: TObject);
begin
ShellExecute(Handle, 'open', 'C:\Medical.chm',nil, nil, SW_SHOW);
end;
end.
Приложение Б
(обязательное)
Листинг программы «Окно добавления маркера»
unit AddMarker;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, SysUtilites, StdCtrls, DBGridEhGrouping, RzButton, GridsEh,
DBGridEh, ImgList, ExtCtrls, RzPanel, DB, ADODB, Mask, DBCtrlsEh,
DBLookupEh;
type
TfmAddMarker = class(TForm)
Label1: TLabel;
Edit1: TEdit;
Label2: TLabel;
Memo1: TMemo;
GroupBox1: TGroupBox;
GroupBox2: TGroupBox;
Label3: TLabel;
Edit2: TEdit;
GroupBox3: TGroupBox;
Button1: TButton;
Button2: TButton;
RzToolbar1: TRzToolbar;
ImageList1: TImageList;
RzToolbar2: TRzToolbar;
DBGridEh2: TDBGridEh;
BtnInsertRecord: TRzToolButton;
BtnDeleteRecord: TRzToolButton;
BtnInsertRecord1: TRzToolButton;
BtnDeleteRecord1: TRzToolButton;
DBLookupComboboxEh1: TDBLookupComboboxEh;
DBLookupComboboxEh2: TDBLookupComboboxEh;
ADOQuery1: TADOQuery;
ADOQuery2: TADOQuery;
DataSource1: TDataSource;
DataSource2: TDataSource;
DataSource3: TDataSource;
ADOQuery3: TADOQuery;
ADOQuery4: TADOQuery;
DataSource4: TDataSource;
DBGridEh1: TDBGridEh;
ADOQuery1ID: TAutoIncField;
ADOQuery1NAME: TStringField;
ADOQuery1DESCRIPTION: TStringField;
ADOQuery1SYMPTOM: TStringField;
ADOQuery1TYPE: TSmallintField;
procedure Button2Click(Sender: TObject);
procedure FormClose(Sender: TObject; var Action: TCloseAction);
procedure FormDestroy(Sender: TObject);
procedure FormShow(Sender: TObject);
procedure Button1Click(Sender: TObject);
procedure Edit2KeyPress(Sender: TObject; var Key: Char);
procedure RefreshDisease;
procedure BtnInsertRecordClick(Sender: TObject);
procedure BtnInsertRecord1Click(Sender: TObject);
procedure BtnDeleteRecordClick(Sender: TObject);
procedure BtnDeleteRecord1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
MODE:TWorkMode;
MARKER_ID:integer;
end;
var
fmAddMarker: TfmAddMarker;
implementation
uses Main;
{$R *.dfm}
procedure TfmAddMarker.Button2Click(Sender: TObject);
begin
Close;
end;
procedure TfmAddMarker.FormClose(Sender: TObject;
var Action: TCloseAction);
var
Tb:TADOQuery;
begin
Tb:=TADOQuery.Create(nil);
Tb.Connection:=fmMain.ADOConnection1;
try
Tb.SQL.Text:='delete from oncological_diseases where marder_id = 0';
Tb.ExecSQL;
finally
Tb.Free;
end;
Action:=caFree;
end;
procedure TfmAddMarker.FormDestroy(Sender: TObject);
begin
fmAddMarker:=nil;
end;
procedure TfmAddMarker.FormShow(Sender: TObject);
var
Tb:TADOQuery;
begin
ADOQuery1.Open;
ADOQuery2.Open;
RefreshDisease;
if MODE=wmAdd then
begin
fmAddMarker.Caption:='Добавление маркера';
end else
begin
fmAddMarker.Caption:='Изменение маркера';
Tb:=TADOQuery.Create(nil);
Tb.Connection:=fmMain.ADOConnection1;
try
Tb.SQL.Text:='select * from markers where id =:id';
Tb.Parameters[0].Value:=MARKER_ID;
Tb.Open;
if not Tb.IsEmpty then begin
Edit1.Text:=Tb.FieldByName('NAME').AsString;
Memo1.Lines.Text:=Tb.FieldByName('DESCRIPTION').AsString;
Edit2.Text:=Tb.FieldByName('NORMAL_VALUE').AsString;
end;
Tb.Close;
finally
Tb.Free;
end;
end;
end;
procedure TfmAddMarker.RefreshDisease;
begin
if ADOQuery3.Active then
ADOQuery3.Close;
if ADOQuery4.Active then
ADOQuery4.Close;
if MODE=wmAdd then
begin
ADOQuery3.SQL.Text:='SELECT '+
'disease.ID, '+
'disease.NAME '+
'FROM dbo.oncological_diseases '+
'INNER JOIN dbo.disease '+
'ON oncological_diseases.disease_id = disease.ID where oncological_diseases.marder_id = 0 and disease.type = 0';
ADOQuery3.Open;
ADOQuery4.SQL.Text:='SELECT '+
'disease.ID, '+
'disease.NAME '+
'FROM dbo.oncological_diseases '+
'INNER JOIN dbo.disease '+
'ON oncological_diseases.disease_id = disease.ID where oncological_diseases.marder_id = 0 and disease.type = 1';
ADOQuery4.Open;
end else
begin
ADOQuery3.SQL.Text:='SELECT '+
'disease.ID, '+
'disease.NAME '+
'FROM dbo.oncological_diseases '+
'INNER JOIN dbo.disease '+
'ON oncological_diseases.disease_id = disease.ID where oncological_diseases.marder_id =:ID and disease.type = 0';
ADOQuery3.Parameters[0].Value:=MARKER_ID;
ADOQuery3.Open;
ADOQuery4.SQL.Text:='SELECT '+
'disease.ID, '+
'disease.NAME '+
'FROM dbo.oncological_diseases '+
'INNER JOIN dbo.disease '+
'ON oncological_diseases.disease_id = disease.ID where oncological_diseases.marder_id =:ID and disease.type = 1';
ADOQuery4.Parameters[0].Value:=MARKER_ID;
ADOQuery4.Open;
end;
end;
procedure TfmAddMarker.Button1Click(Sender: TObject);
var
Tb:TADOQuery;
begin
Tb:=TADOQuery.Create(nil);
Tb.Connection:=fmMain.ADOConnection1;
try
if MODE=wmAdd then
begin
Tb.SQL.Text:='insert into markers(NAME,DESCRIPTION,NORMAL_VALUE) values(:NAME,:DESCRIPTION,:NORMAL_VALUE);'+
'select Max(ID) from markers;';
Tb.Parameters[0].Value:=Trim(Edit1.Text);
Tb.Parameters[1].Value:=Trim(Memo1.Lines.Text);
try
Tb.Parameters[2].Value:=StrToFloat(Edit2.Text);
except
Tb.Parameters[2].Value:=0;
end;
Tb.Open;
if not Tb.IsEmpty then
MARKER_ID:=Tb.Fields[0].AsInteger;
Tb.Close;
Tb.SQL.Text:='update oncological_diseases set marder_id =:marder_id where marder_id = 0';
Tb.Parameters[0].Value:=MARKER_ID;
Tb.ExecSQL;
end else
begin
///Edit
end;
finally
Tb.Free;
end;
fmMain.RefreshData;
Close;
end;
procedure TfmAddMarker.Edit2KeyPress(Sender: TObject; var Key: Char);
begin
if not (Key in ['0'..'9', #8, DecimalSeparator])then Key:=#0;
end;
procedure TfmAddMarker.BtnInsertRecordClick(Sender: TObject);
var
Tb:TADOQuery;
begin
Tb:=TADOQuery.Create(nil);
Tb.Connection:=fmMain.ADOConnection1;
try
if MODE=wmAdd then
begin
Tb.SQL.Text:='insert into oncological_diseases(marder_id,disease_id) values(:marder_id,:disease_id)';
Tb.Parameters[0].Value:=0;
Tb.Parameters[1].Value:=DBLookupComboboxEh1.KeyValue;
Tb.ExecSQL;
end else
begin
Tb.SQL.Text:='insert into oncological_diseases(marder_id,disease_id) values(:marder_id,:disease_id)';
Tb.Parameters[0].Value:=MARKER_ID;
Tb.Parameters[1].Value:=DBLookupComboboxEh1.KeyValue;
Tb.ExecSQL;
end;
finally
Tb.Free;
end;
RefreshDisease;
end;
procedure TfmAddMarker.BtnInsertRecord1Click(Sender: TObject);
var
Tb:TADOQuery;
begin
Tb:=TADOQuery.Create(nil);
Tb.Connection:=fmMain.ADOConnection1;
try
if MODE=wmAdd then
begin
Tb.SQL.Text:='insert into oncological_diseases(marder_id,disease_id) values(:marder_id,:disease_id)';
Tb.Parameters[0].Value:=0;
Tb.Parameters[1].Value:=DBLookupComboboxEh2.KeyValue;
Tb.ExecSQL;
end else
begin
Tb.SQL.Text:='insert into oncological_diseases(marder_id,disease_id) values(:marder_id,:disease_id)';
Tb.Parameters[0].Value:=MARKER_ID;
Tb.Parameters[1].Value:=DBLookupComboboxEh2.KeyValue;
Tb.ExecSQL;
end;
finally
Tb.Free;
end;
RefreshDisease;
end;
procedure TfmAddMarker.BtnDeleteRecordClick(Sender: TObject);
var
Tb:TADOQuery;
begin
Tb:=TADOQuery.Create(nil);
Tb.Connection:=fmMain.ADOConnection1;
try
if MODE=wmAdd then
begin
Tb.SQL.Text:='delete from oncological_diseases where marder_id =:marder_id and disease_id =:disease_id';
Tb.Parameters[0].Value:=0;
Tb.Parameters[1].Value:=ADOQuery3.FieldByName('ID').AsInteger;
Tb.ExecSQL;
end else
begin
Tb.SQL.Text:='delete from oncological_diseases where marder_id =:marder_id and disease_id =:disease_id';
Tb.Parameters[0].Value:=MARKER_ID;
Tb.Parameters[1].Value:=ADOQuery3.FieldByName('ID').AsInteger;
Tb.ExecSQL;
end;
finally
Tb.Free;
end;
RefreshDisease;
end;
procedure TfmAddMarker.BtnDeleteRecord1Click(Sender: TObject);
var
Tb:TADOQuery;
begin
Tb:=TADOQuery.Create(nil);
Tb.Connection:=fmMain.ADOConnection1;
try
if MODE=wmAdd then
begin
Tb.SQL.Text:='delete from oncological_diseases where marder_id =:marder_id and disease_id =:disease_id';
Tb.Parameters[0].Value:=0;
Tb.Parameters[1].Value:=ADOQuery4.FieldByName('ID').AsInteger;
Tb.ExecSQL;
end else
begin
Tb.SQL.Text:='delete from oncological_diseases where marder_id =:marder_id and disease_id =:disease_id';
Tb.Parameters[0].Value:=MARKER_ID;
Tb.Parameters[1].Value:=ADOQuery4.FieldByName('ID').AsInteger;
Tb.ExecSQL;
end;
finally
Tb.Free;
end;
RefreshDisease;
end;
end.
Приложение В
(обязательное)
Листинг программы «Окно добавление болезни»
unit AddDisease;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, DB, ADODB, SysUtilites;
type
TfmAddDisease = class(TForm)
Label1: TLabel;
Label2: TLabel;
Edit1: TEdit;
Memo1: TMemo;
Label3: TLabel;
Memo2: TMemo;
Label4: TLabel;
ComboBox1: TComboBox;
Button1: TButton;
Button2: TButton;
procedure FormClose(Sender: TObject; var Action: TCloseAction);
procedure FormDestroy(Sender: TObject);
procedure Button1Click(Sender: TObject);
procedure FormShow(Sender: TObject);
procedure Button2Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
MODE:TWorkMode;
DISEASE_ID:integer;
end;
var
fmAddDisease: TfmAddDisease;
implementation
uses Main;
{$R *.dfm}
procedure TfmAddDisease.FormClose(Sender: TObject;
var Action: TCloseAction);
begin
Action:=caFree;
end;
procedure TfmAddDisease.FormDestroy(Sender: TObject);
begin
fmAddDisease:=nil;
end;
procedure TfmAddDisease.Button1Click(Sender: TObject);
var
Tb:TADOQuery;
begin
Tb:=TADOQuery.Create(nil);
Tb.Connection:=fmMain.ADOConnection1;
try
if MODE = wmAdd then
begin
Tb.SQL.Text:='insert into disease(NAME,DESCRIPTION,SYMPTOM,TYPE) values(:NAME,:DESCRIPTION,:SYMPTOM,:TYPE)';
Tb.Parameters[0].Value:=Trim(Edit1.Text);
Tb.Parameters[1].Value:=Trim(Memo1.Lines.Text);
Tb.Parameters[2].Value:=Trim(Memo2.Lines.Text);
Tb.Parameters[3].Value:=ComboBox1.ItemIndex;
Tb.ExecSQL;
end else
begin
Tb.SQL.Text:='update disease set NAME=:NAME, DESCRIPTION=:DESCRIPTION, SYMPTOM=:SYMPTOM, TYPE=:TYPE where id =:id;';
Tb.Parameters[0].Value:=Trim(Edit1.Text);
Tb.Parameters[1].Value:=Trim(Memo1.Lines.Text);
Tb.Parameters[2].Value:=Trim(Memo2.Lines.Text);
Tb.Parameters[3].Value:=ComboBox1.ItemIndex;
Tb.Parameters[4].Value:=DISEASE_ID;
Tb.ExecSQL;
end;
finally
Tb.Free;
end;
fmMain.RefreshData;
Close;
end;
procedure TfmAddDisease.FormShow(Sender: TObject);
var
Tb:TADOQuery;
begin
if MODE = wmAdd then
begin
fmAddDisease.Caption:='Добавить болезнь';
end else
begin
fmAddDisease.Caption:='Изменить болезнь';
Tb:=TADOQuery.Create(nil);
Tb.Connection:=fmMain.ADOConnection1;
try
Tb.SQL.Text:='select * from disease where id =:id';
Tb.Parameters[0].Value:=DISEASE_ID;
Tb.Open;
if not Tb.IsEmpty then
begin
Edit1.Text:=Tb.FieldByName('NAME').AsString;
Memo1.Lines.Text:=Tb.FieldByName('DESCRIPTION').AsString;
Memo2.Lines.Text:=Tb.FieldByName('SYMPTOM').AsString;
Combobox1.ItemIndex:=Tb.FieldByName('TYPE').AsInteger;
end;
Tb.Close;
finally
Tb.Free;
end;
end;
end;
procedure TfmAddDisease.Button2Click(Sender: TObject);
begin
Close;
end;
end.
Приложение Г
(обязательное)
Листинг программы «Окно добавления пациента»
unit AddPatients;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, SysUtilites, DBGridEh, StdCtrls, ExtCtrls, ComCtrls, Mask,
DBCtrlsEh, DBLookupEh, DB, ADODB;
type
TfmAddPatients = class(TForm)
Label1: TLabel;
Label2: TLabel;
Label3: TLabel;
Label4: TLabel;
Label5: TLabel;
Label6: TLabel;
GroupBox1: TGroupBox;
CheckBox1: TCheckBox;
CheckBox2: TCheckBox;
CheckBox3: TCheckBox;
DBLookupComboboxEh1: TDBLookupComboboxEh;
Label7: TLabel;
Edit1: TEdit;
ComboBox1: TComboBox;
DateTimePicker1: TDateTimePicker;
ComboBox2: TComboBox;
DateTimePicker2: TDateTimePicker;
ComboBox3: TComboBox;
Label8: TLabel;
DBLookupComboboxEh2: TDBLookupComboboxEh;
Label9: TLabel;
Edit2: TEdit;
Bevel1: TBevel;
Button1: TButton;
Button2: TButton;
ADOQuery1: TADOQuery;
ADOQuery2: TADOQuery;
DataSource1: TDataSource;
DataSource2: TDataSource;
ADOQuery2ID: TAutoIncField;
ADOQuery2NAME: TStringField;
ADOQuery2DESCRIPTION: TStringField;
ADOQuery2NORMAL_VALUE: TBCDField;
ADOQuery1ID: TAutoIncField;
ADOQuery1NAME: TStringField;
ADOQuery1DESCRIPTION: TStringField;
ADOQuery1SYMPTOM: TStringField;
ADOQuery1TYPE: TSmallintField;
procedure FormClose(Sender: TObject; var Action: TCloseAction);
procedure FormDestroy(Sender: TObject);
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
procedure FormShow(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
MODE:TWorkMode;
PATIENT_ID:integer;
end;
var
fmAddPatients: TfmAddPatients;
implementation
uses Main;
{$R *.dfm}
procedure TfmAddPatients.FormClose(Sender: TObject;
var Action: TCloseAction);
begin
Action:=caFree;
end;
procedure TfmAddPatients.FormDestroy(Sender: TObject);
begin
fmAddPatients:=nil;
end;
procedure TfmAddPatients.Button1Click(Sender: TObject);
begin
Close;
end;
procedure TfmAddPatients.Button2Click(Sender: TObject);
var
Tb:TADOQuery;
begin
Tb:=TADOQuery.Create(nil);
Tb.Connection:=fmMain.ADOConnection1;
try
if MODE=wmAdd then
begin
Tb.SQL.Text:='insert into patients(FIO,POL,DATE_OF_BIRTH,DATE_OF_SURVEY,PRELIMINARY_DIAGNOSIS,SMOKES,EXPECTANT,MARKER,RESULT,MRT,UZI,RADIOGRAPHY) '+
'values(:FIO,:POL,:DATE_OF_BIRTH,:DATE_OF_SURVEY,:PRELIMINARY_DIAGNOSIS,:SMOKES,:EXPECTANT,:MARKER,:RESULT,:MRT,:UZI,:RADIOGRAPHY)';
Tb.Parameters[0].Value:=Edit1.Text;
Tb.Parameters[1].Value:=ComboBox1.ItemIndex;
Tb.Parameters[2].Value:=DateTimePicker1.Date;
Tb.Parameters[3].Value:=DateTimePicker2.Date;
Tb.Parameters[4].Value:=DBLookupComboboxEh1.KeyValue;
Tb.Parameters[5].Value:=ComboBox2.ItemIndex;
Tb.Parameters[6].Value:=ComboBox3.ItemIndex;
Tb.Parameters[7].Value:=DBLookupComboboxEh2.KeyValue;
Tb.Parameters[8].Value:=Edit2.Text;
if not CheckBox1.Checked then
Tb.Parameters[9].Value:=0
else
Tb.Parameters[9].Value:=1;
if not CheckBox2.Checked then
Tb.Parameters[10].Value:=0
else
Tb.Parameters[10].Value:=1;
if not CheckBox3.Checked then
Tb.Parameters[11].Value:=0
else
Tb.Parameters[11].Value:=1;
Tb.ExecSQL;
end else
begin
Tb.SQL.Text:='update patients set FIO=:FIO,POL=:POL,DATE_OF_BIRTH=:DATE_OF_BIRTH,DATE_OF_SURVEY=:DATE_OF_SURVEY,PRELIMINARY_DIAGNOSIS=:PRELIMINARY_DIAGNOSIS,'+
'SMOKES=:SMOKES,EXPECTANT=:EXPECTANT,MARKER=:MARKER,RESULT=:RESULT,MRT=:MRT,UZI=:UZI,RADIOGRAPHY=:RADIOGRAPHY where ID =:ID';
Tb.Parameters[0].Value:=Edit1.Text;
Tb.Parameters[1].Value:=ComboBox1.ItemIndex;
Tb.Parameters[2].Value:=DateTimePicker1.Date;
Tb.Parameters[3].Value:=DateTimePicker2.Date;
Tb.Parameters[4].Value:=DBLookupComboboxEh1.KeyValue;
Tb.Parameters[5].Value:=ComboBox2.ItemIndex;
Tb.Parameters[6].Value:=ComboBox3.ItemIndex;
Tb.Parameters[7].Value:=DBLookupComboboxEh2.KeyValue;
Tb.Parameters[8].Value:=Edit2.Text;
if not CheckBox1.Checked then
Tb.Parameters[9].Value:=0
else
Tb.Parameters[9].Value:=1;
if not CheckBox2.Checked then
Tb.Parameters[10].Value:=0
else
Tb.Parameters[10].Value:=1;
if not CheckBox3.Checked then
Tb.Parameters[11].Value:=0
else
Tb.Parameters[11].Value:=1;
Tb.Parameters[12].Value:=PATIENT_ID;
Tb.ExecSQL;
end;
finally
Tb.Free;
end;
fmMain.RefreshData;
Close;
end;
procedure TfmAddPatients.FormShow(Sender: TObject);
var
Tb:TADOQuery;
begin
ADOQuery1.Open;
ADOQuery2.Open;
if MODE=wmAdd then
begin
fmAddPatients.Caption:= 'Добавление данных о пациенте';
end else
begin
fmAddPatients.Caption:='Изменение данных о пациенте';
Tb:=TADOQuery.Create(nil);
Tb.Connection:=fmMain.ADOConnection1;
try
Tb.SQL.Text:='select * from patients where id =:id';
Tb.Parameters[0].Value:=PATIENT_ID;
Tb.Open;
if not Tb.IsEmpty then begin
Edit1.Text:=Tb.FieldByName('FIO').AsString;
ComboBox1.ItemIndex:=Tb.FieldByName('POL').AsInteger;
DateTimePicker1.Date:=Tb.FieldByName('DATE_OF_BIRTH').AsDateTime;
DateTimePicker2.Date:=Tb.FieldByName('DATE_OF_SURVEY').AsDateTime;
DBLookupComboboxEh1.KeyValue:=Tb.FieldByName('PRELIMINARY_DIAGNOSIS').AsInteger;
ComboBox2.ItemIndex:=Tb.FieldByName('SMOKES').AsInteger;
ComboBox3.ItemIndex:=Tb.FieldByName('EXPECTANT').AsInteger;
DBLookupComboboxEh2.KeyValue:=Tb.FieldByName('MARKER').AsInteger;
Edit2.Text:=Tb.FieldByName('RESULT').AsString;
if Tb.FieldByName('MRT').AsInteger=1 then
CheckBox1.Checked:=true
else
CheckBox1.Checked:=false;
if Tb.FieldByName('UZI').AsInteger=1 then
CheckBox2.Checked:=true
else
CheckBox2.Checked:=false;
if Tb.FieldByName('RADIOGRAPHY').AsInteger=1 then
CheckBox3.Checked:=true
else
CheckBox3.Checked:=false;
end;
Tb.Close;
finally
Tb.Free;
end;
end;
end;
end.
Приложение Д
(обязательное)
Листинг программы «Окно добавление болезни»
unit AddDisease;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, DB, ADODB, SysUtilites;
type
TfmAddDisease = class(TForm)
Label1: TLabel;
Label2: TLabel;
Edit1: TEdit;
Memo1: TMemo;
Label3: TLabel;
Memo2: TMemo;
Label4: TLabel;
ComboBox1: TComboBox;
Button1: TButton;
Button2: TButton;
procedure FormClose(Sender: TObject; var Action: TCloseAction);
procedure FormDestroy(Sender: TObject);
procedure Button1Click(Sender: TObject);
procedure FormShow(Sender: TObject);
procedure Button2Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
MODE:TWorkMode;
DISEASE_ID:integer;
end;
var
fmAddDisease: TfmAddDisease;
implementation
uses Main;
{$R *.dfm}
procedure TfmAddDisease.FormClose(Sender: TObject;
var Action: TCloseAction);
begin
Action:=caFree;
end;
procedure TfmAddDisease.FormDestroy(Sender: TObject);
begin
fmAddDisease:=nil;
end;
procedure TfmAddDisease.Button1Click(Sender: TObject);
var
Tb:TADOQuery;
begin
Tb:=TADOQuery.Create(nil);
Tb.Connection:=fmMain.ADOConnection1;
try
if MODE = wmAdd then
begin
Tb.SQL.Text:='insert into disease(NAME,DESCRIPTION,SYMPTOM,TYPE) values(:NAME,:DESCRIPTION,:SYMPTOM,:TYPE)';
Tb.Parameters[0].Value:=Trim(Edit1.Text);
Tb.Parameters[1].Value:=Trim(Memo1.Lines.Text);
Tb.Parameters[2].Value:=Trim(Memo2.Lines.Text);
Tb.Parameters[3].Value:=ComboBox1.ItemIndex;
Tb.ExecSQL;
end else
begin
Tb.SQL.Text:='update disease set NAME=:NAME, DESCRIPTION=:DESCRIPTION, SYMPTOM=:SYMPTOM, TYPE=:TYPE where id =:id;';
Tb.Parameters[0].Value:=Trim(Edit1.Text);
Tb.Parameters[1].Value:=Trim(Memo1.Lines.Text);
Tb.Parameters[2].Value:=Trim(Memo2.Lines.Text);
Tb.Parameters[3].Value:=ComboBox1.ItemIndex;
Tb.Parameters[4].Value:=DISEASE_ID;
Tb.ExecSQL;
end;
finally
Tb.Free;
end;
fmMain.RefreshData;
Close;
end;
procedure TfmAddDisease.FormShow(Sender: TObject);
var
Tb:TADOQuery;
begin
if MODE = wmAdd then
begin
fmAddDisease.Caption:='Добавить болезнь';
end else
begin
fmAddDisease.Caption:='Изменить болезнь';
Tb:=TADOQuery.Create(nil);
Tb.Connection:=fmMain.ADOConnection1;
try
Tb.SQL.Text:='select * from disease where id =:id';
Tb.Parameters[0].Value:=DISEASE_ID;
Tb.Open;
if not Tb.IsEmpty then
begin
Edit1.Text:=Tb.FieldByName('NAME').AsString;
Memo1.Lines.Text:=Tb.FieldByName('DESCRIPTION').AsString;
Memo2.Lines.Text:=Tb.FieldByName('SYMPTOM').AsString;
Combobox1.ItemIndex:=Tb.FieldByName('TYPE').AsInteger;
end;
Tb.Close;
finally
Tb.Free;
end;
end;
end;
procedure TfmAddDisease.Button2Click(Sender: TObject);
begin
Close;
end;
end.
Приложение Е
(обязательное)
Листинг программы «Окно о программе»
unit About;
interface
uses Windows, SysUtils, Classes, Graphics, Forms, Controls, StdCtrls,
Buttons, ExtCtrls;
type
TfmAbout = class(TForm)
Panel1: TPanel;
ProgramIcon: TImage;
ProductName: TLabel;
Version: TLabel;
Copyright: TLabel;
Comments: TLabel;
OKButton: TButton;
procedure OKButtonClick(Sender: TObject);
procedure FormClose(Sender: TObject; var Action: TCloseAction);
procedure FormDestroy(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
fmAbout: TfmAbout;
implementation
{$R *.dfm}
procedure TfmAbout.OKButtonClick(Sender: TObject);
begin
Close;
end;
procedure TfmAbout.FormClose(Sender: TObject; var Action: TCloseAction);
begin
Action:=caFree;
end;
procedure TfmAbout.FormDestroy(Sender: TObject);
begin
fmAbout:=nil;
end;
end.
Приложение Ж
(обязательное)
Листинг программы «Окно сформировать отчет»
unit GenReport;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, ComCtrls, StdCtrls, DB, ADODB, DateUtils, COMObj, frxClass,
frxADOComponents;
type
TfmGenReport = class(TForm)
Button1: TButton;
Button2: TButton;
Label1: TLabel;
DateTimePicker1: TDateTimePicker;
Label2: TLabel;
DateTimePicker2: TDateTimePicker;
frxReport1: TfrxReport;
frxADOComponents1: TfrxADOComponents;
procedure Button2Click(Sender: TObject);
procedure FormClose(Sender: TObject; var Action: TCloseAction);
procedure FormDestroy(Sender: TObject);
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
fmGenReport: TfmGenReport;
implementation
uses Main;
{$R *.dfm}
procedure TfmGenReport.Button2Click(Sender: TObject);
begin
Close;
end;
procedure TfmGenReport.FormClose(Sender: TObject;
var Action: TCloseAction);
begin
Action:=caFree;
end;
procedure TfmGenReport.FormDestroy(Sender: TObject);
begin
fmGenReport:=nil;
end;
procedure TfmGenReport.Button1Click(Sender: TObject);
begin
frxReport1.LoadFromFile('report.fr3');
(frxReport1.FindObject('Memo14') as TfrxMemoView).Text:='Ñïèñîê ïàöèåíòîâ ïðîõîäèâøèõ îáñëåäîâàíèå çà ïåðèîä ñ '+DateToStr(DateTimePicker1.Date)+' ïî '+DateToStr(DateTimePicker2.Date);
(frxReport1.FindObject('ADOQuery1') as TfrxADOQuery).ParamByName('DATN').Value:=RecodeTime(DateTimePicker1.Date, 00, 00, 00, 00);
(frxReport1.FindObject('ADOQuery1') as TfrxADOQuery).ParamByName('DATK').Value:=RecodeTime(DateTimePicker2.Date, 23, 59, 59, 00);
frxReport1.ShowReport();
end;
end.
Приложение И
(обязательное)
Архитектура программы
Рисунок И.1 – Архитектура программы
Приложение К
(обязательное)