Sie sind auf Seite 1von 215

LISTING PROGRAM

(*********************************************)
(* Program *)
(* SISTEM PAKAR *)
(* UNTUK MELAKUKAN DIAGNOSIS *)
(* DAN MEMBERIKAN TERAPI *)
(* PENYAKIT EPILEPSI DAN KELUARGANYA *)
(* DENGAN MENGGUNAKAN CERTAINTY FACTOR *)
(* *)
(* oleh : Kusrini *)
(*********************************************)

program Epilepsi;

uses
Forms,
UMain in 'UMain.pas' {FrmMain},
UCampuran in 'UCampuran.pas' {FrmCampuran},
UDM in 'UDM.pas' {DM: TDataModule};

{$R *.RES}

begin
Application.Initialize;
Application.CreateForm(TFrmMain, FrmMain);
Application.CreateForm(TFrmCampuran,
FrmCampuran);
Application.CreateForm(TDM, DM);
Application.Run;
end.
unit UDM;

interface

uses
Windows, Messages, SysUtils, Classes,
Graphics, Controls,
Forms, Dialogs,
Db, IBCustomDataSet, IBQuery, IBDatabase;

type
TDM = class(TDataModule)
IBDB: TIBDatabase;
IBTrans: TIBTransaction;
Query2: TIBQuery;
Query1: TIBQuery;
Query: TIBQuery;
Query3: TIBQuery;
Query4: TIBQuery;

2
Query5: TIBQuery;
private
{ Private declarations }
public
{ Public declarations }
end;

var
DM: TDM;

implementation

{$R *.DFM}

end.

3
unit UCampuran;

interface

uses
Windows, Messages, SysUtils, Classes,
Graphics, Controls, Forms, Dialogs, StdCtrls;

type
TFrmCampuran = class(TForm)
Edit1: TEdit;
ComboBox1: TComboBox;
Button1: TButton;
private
{ Private declarations }
public
Procedure cariQ(str : string);
Procedure cariQ1(str : string);
Procedure cariQ2(str : string);
Procedure cariQ3(str : string);
Procedure cariQ4(str : string);
Procedure cariQ5(str : string);
Procedure Hapus(str : string);
Procedure Tambah(str : string);
procedure PilihEdit(sender : TObject;
x : TEdit; var Key: Char);
procedure PilihCombo(sender : TObject;
x : TComboBox; var Key: Char);
procedure PilihButton(sender : TObject;

4
x : TButton; var Key: Char);
procedure ExitCF(x : tEdit);
procedure TekanCF(x : TCombobox; var key :
char);
function IBCF(x : TEdit) : string;
function Kode(x : TCombobox) : string;
function Kombinasi(x : real; y : real) :
real;
function Min(x : array of real; y :
integer) : real;
function Max(x : array of real; y :
integer) : real;
end;

var
FrmCampuran: TFrmCampuran;

implementation

uses UDM;

{$R *.DFM}

function TFrmCampuran.Kombinasi(x : real; y :


real) : real;
var Minimum : real;
begin
if (x > 0) and (y > 0) then result := x + y
* (1 - x)
else if (x < 0) and (y < 0) then result := x
+ y * (1 + x)
else begin
Minimum := abs(x);
if Minimum > abs(y) then Minimum :=
abs(y);
if Minimum = 1 then Result := 0
else result := (x + y)/(1-Minimum)

5
end;
end;

function TFrmCampuran.Min(x : array of real;


y : integer) : real;
var temp : real;
i : integer;
begin
temp := x[1];
for i := 2 to y do
if temp > x[i] then temp := x[i];
Result := temp;
end;

function TFrmCampuran.Max(x : array of real;


y : integer) : real;
var temp : real;
i : integer;
begin
temp := x[1];
for i := 2 to y do if temp < x[i] then temp
:= x[i];
Result := temp;
end;

Procedure TFrmCampuran.cariQ(str : string);


begin
with DM.Query do
begin
Close;
SQL.Clear;
SQL.Add(str);
Open;
end;
end;

Procedure TFrmCampuran.cariQ1(str : string);

6
begin
with DM.Query1 do
begin
Close;
SQL.Clear;
SQL.Add(str);
Open;
end;
end;

Procedure TFrmCampuran.cariQ2(str : string);


begin
with DM.Query2 do
begin
Close;
SQL.Clear;
SQL.Add(str);
Open;
end;
end;

Procedure TFrmCampuran.cariQ3(str : string);


begin
with DM.Query3 do
begin
Close;
SQL.Clear;
SQL.Add(str);
Open;
end;
end;

Procedure TFrmCampuran.cariQ4(str : string);


begin
with DM.Query4 do
begin
Close;

7
SQL.Clear;
SQL.Add(str);
Open;
end;
end;

Procedure TFrmCampuran.cariQ5(str : string);


begin
with DM.Query5 do
begin
Close;
SQL.Clear;
SQL.Add(str);
Open;
end;
end;

Procedure TFrmCampuran.Hapus(str : string);


begin
with DM.Query do
begin
Close;
SQL.Clear;
SQL.Add(str);
ExecSQL;
end;
if DM.IBTrans.Active = false then
DM.IBTrans.Active := true;
DM.IBTrans.CommitRetaining;
end;

Procedure TFrmCampuran.Tambah(str : string);


begin
with DM.Query4 do
begin
Close;
SQL.Clear;

8
SQL.Add(str);
ExecSQL;
end;
if DM.IBTrans.Active = false then
DM.IBTrans.Active := true;
DM.IBTrans.CommitRetaining;
end;

function TFrmCampuran.IBCF(x : TEdit) : string;


var i : integer;
temp : string;
begin
if x.Text <> '' then
begin
temp :=
FormatFloat('0.00',StrToFloat(x.Text));
for i := 1 to length(temp) do
if temp[i] = ',' then temp[i] := '.'
else temp[i] := temp[i];
end else temp := '1.00';
Result := temp;
end;

procedure TFrmCampuran.PilihEdit(sender :
TObject; x : TEdit; var Key: Char);
var
Found: boolean;
i,SelSt: Integer;
TmpStr: string;
begin
if Key in ['a'..'z'] then
Dec(Key,32);//uppercase

if key = #13 then


begin
key := #0;
x.SetFocus;

9
exit;
end;

with (Sender as TComboBox) do


begin
SelSt := SelStart;
if (Key = Chr(vk_Back)) and (SelLength <>
0) then
TmpStr := Copy(Text,1,SelStart)+
Copy(Text,SelLength+SelStart+1,255)

else if Key = Chr(vk_Back) then //SelLength


= 0
TmpStr := Copy(Text,1,SelStart-
1)+Copy(Text,SelStart+1,255)
else //Key in ['A'..'Z', etc]
TmpStr := Copy(Text,1,SelStart)+Key+
Copy(Text,SelLength+SelStart+1,255);
if TmpStr = '' then Exit;
//update SelSt to the current insertion
point

if (Key = Chr(vk_Back)) and (SelSt > 0)


then Dec(SelSt)

else if Key <> Chr(vk_Back) then


Inc(SelSt);
Key := #0; // indicate that key was handled
if SelSt = 0 then
begin
Text:= '';
Exit;
end;

//Now that TmpStr is the currently typed


string, see if we can locate a match

10
Found := False;
for i := 1 to Items.Count do
if Copy(Items[i-1],1,Length(TmpStr)) =
TmpStr then
begin
Text := Items[i-1]; //update to the
match that was found
ItemIndex := i-1;
Found := True;
Break;
end;
if Found then //select the untyped end of
the string
begin
SelStart := SelSt;
SelLength := Length(Text)-SelSt;
end
else Beep;
end;
end;

procedure TFrmCampuran.PilihCombo(sender :
TObject; x : TComboBox; var Key: Char);
var
Found: boolean;
i,SelSt: Integer;
TmpStr: string;
begin
if Key in ['a'..'z'] then
Dec(Key,32);//uppercase

if key = #13 then


begin
key := #0;
x.SetFocus;
exit;
end;

11
with (Sender as TComboBox) do
begin
SelSt := SelStart;
if (Key = Chr(vk_Back)) and (SelLength <>
0) then
TmpStr := Copy(Text,1,SelStart)+
Copy(Text,SelLength+SelStart+1,255)

else if Key = Chr(vk_Back) then //SelLength


= 0
TmpStr := Copy(Text,1,SelStart-
1)+Copy(Text,SelStart+1,255)
else //Key in ['A'..'Z', etc]
TmpStr := Copy(Text,1,SelStart)+Key+
Copy(Text,SelLength+SelStart+1,255);
if TmpStr = '' then Exit;
//update SelSt to the current insertion
point

if (Key = Chr(vk_Back)) and (SelSt > 0)


then Dec(SelSt)

else if Key <> Chr(vk_Back) then


Inc(SelSt);
Key := #0; // indicate that key was handled
if SelSt = 0 then
begin
Text:= '';
Exit;
end;

//Now that TmpStr is the currently typed


string, see if we can locate a match

Found := False;
for i := 1 to Items.Count do

12
if Copy(Items[i-1],1,Length(TmpStr)) =
TmpStr then
begin
Text := Items[i-1]; //update to the
match that was found
ItemIndex := i-1;
Found := True;
Break;
end;
if Found then //select the untyped end of
the string
begin
SelStart := SelSt;
SelLength := Length(Text)-SelSt;
end
else Beep;
end;
end;

procedure TFrmCampuran.PilihButton(sender :
TObject; x : TButton; var Key: Char);
var
Found: boolean;
i,SelSt: Integer;
TmpStr: string;
begin
if Key in ['a'..'z'] then
Dec(Key,32);//uppercase

if key = #13 then


begin
key := #0;
x.SetFocus;
exit;
end;

with (Sender as TComboBox) do

13
begin
SelSt := SelStart;
if (Key = Chr(vk_Back)) and (SelLength <>
0) then
TmpStr := Copy(Text,1,SelStart)+
Copy(Text,SelLength+SelStart+1,255)

else if Key = Chr(vk_Back) then //SelLength


= 0
TmpStr := Copy(Text,1,SelStart-
1)+Copy(Text,SelStart+1,255)
else //Key in ['A'..'Z', etc]
TmpStr := Copy(Text,1,SelStart)+Key+
Copy(Text,SelLength+SelStart+1,255);
if TmpStr = '' then Exit;
//update SelSt to the current insertion
point

if (Key = Chr(vk_Back)) and (SelSt > 0)


then Dec(SelSt)

else if Key <> Chr(vk_Back) then


Inc(SelSt);
Key := #0; // indicate that key was handled
if SelSt = 0 then
begin
Text:= '';
Exit;
end;

//Now that TmpStr is the currently typed


string
Found := False;
for i := 1 to Items.Count do
if Copy(Items[i-1],1,Length(TmpStr)) =
TmpStr then
begin

14
Text := Items[i-1]; //update to the
match that was found
ItemIndex := i-1;
Found := True;
Break;
end;
if Found then //select the untyped end of
the string
begin
SelStart := SelSt;
SelLength := Length(Text)-SelSt;
end
else Beep;
end;
end;

procedure TFrmCampuran.ExitCF(x : TEdit);


begin
if x.Text <> '' then
begin
try
if (StrToFloat(x.Text) < -1) or
(StrToFloat(x.Text) > 1) then
begin
MessageDlg('CF harus antara 0 sampai
dengan 1',
mtInformation, [mbOk],0);
x.SetFocus;
Exit;
end;
except
MessageDlg('Isian CF tidak benar',
mtInformation, [mbOk],0);
x.SetFocus;
Exit;
end;
end;

15
end;

procedure TFrmCampuran.TekanCF(x : TCombobox;


var key : char);
begin
if key = #13 then
begin
Key := #0;
x.SetFocus;
end else if not ((key in ['0' .. '9']) or
(key = #8) or (key = #46) or (key = #44))
then key := #0;
end;

function TFrmCampuran.Kode(x : TCombobox) :


string;
var i : integer;
begin
i := pos('|', x.Text);
result := copy(x.Text, i+2, Length(x.text)-
(i+1));
end;

end.

16
unit UMain;

interface

uses
Windows, Messages, SysUtils, Classes,
Graphics, Controls, Forms, Dialogs,
abcbarlv, Abcanfr, Abcbar, ExtCtrls,
Abcpanel, ImgList, Abcbtns,
ComCtrls, StdCtrls, Abcbtn, Abclabel,
Abcexctl, Abcbusy, Abcatlab, Grids,
Outline, Menus, jpeg;

type
TFrmMain = class(TForm)
Frame: TabcAnimationFrame;

17
PGejala: TabcPage;
PnlBtnGejala: TPanel;
PnlIsiGejala: TPanel;
LblNama: TLabel;
EdtNamaGejala: TEdit;
LblKetGejala: TLabel;
MemoKetGejala: TMemo;
SBGejala: TStatusBar;
PTentang: TabcPage;
PSawan: TabcPage;
PSyarat: TabcPage;
PEpilepsi: TabcPage;
PNonEpilepsi: TabcPage;
PObat: TabcPage;
PGejalaSawan: TabcPage;
PDE: TabcPage;
PDNE: TabcPage;
PTE: TabcPage;
PTNE: TabcPage;
PDA: TabcPage;
PKonsultasi: TabcPage;
BtnTambahGejala: TabcFormPicBtn;
BtnGantiGejala: TabcFormPicBtn;
BtnHapusGejala: TabcFormPicBtn;
BtnTutupGejala: TabcFormPicBtn;
PnlIsiSawan: TPanel;
LblNamaSawan: TLabel;
EdtNamaSawan: TEdit;
PnlBtnSawan: TPanel;
BtnTambahSawan: TabcFormPicBtn;
BtnGantiSawan: TabcFormPicBtn;
BtnHapusSawan: TabcFormPicBtn;
BtnTutupSawan: TabcFormPicBtn;
SBSawan: TStatusBar;
SBSyarat: TStatusBar;
PnlDaftarGejala: TPanel;
LVDaftarGejala: TListView;

18
PnlDaftarSawan: TPanel;
LVDaftarSawan: TListView;
PnlIsiSyarat: TPanel;
LblNamaSyarat: TLabel;
EdtNamaSyarat: TEdit;
PnlBtnSyarat: TPanel;
BtnTambahSyarat: TabcFormPicBtn;
BtnGantiSyarat: TabcFormPicBtn;
BtnHapusSyarat: TabcFormPicBtn;
BtnTutupSyarat: TabcFormPicBtn;
PnlDaftarSyarat: TPanel;
LVDaftarSyarat: TListView;
PnlIsiEpilepsi: TPanel;
LblNamaEpilepsi: TLabel;
EdtNamaEpilepsi: TEdit;
PnlBtnEpilepsi: TPanel;
BtnTambahEpilepsi: TabcFormPicBtn;
BtnGantiEpilepsi: TabcFormPicBtn;
BtnHapusEpilepsi: TabcFormPicBtn;
BtnTutupEpilepsi: TabcFormPicBtn;
PnlDaftarEpilepsi: TPanel;
LvDaftarEpilepsi: TListView;
SBEpilepsi: TStatusBar;
PnlIsiNonEpilepsi: TPanel;
LblNamaNonEpilepsi: TLabel;
EdtNamaNonEpilepsi: TEdit;
PnlBtnNonEpilepsi: TPanel;
BtnTambahNonEpilepsi: TabcFormPicBtn;
BtnGantiNonEpilepsi: TabcFormPicBtn;
BtnHapusNonEpilepsi: TabcFormPicBtn;
BtnTutupNonEpilepsi: TabcFormPicBtn;
PnlDaftarNonEpilepsi: TPanel;
LVDaftarNonEpilepsi: TListView;
SBNonEpilepsi: TStatusBar;
PnlIsiObat: TPanel;
PnlBtnObat: TPanel;
BtnTambahObat: TabcFormPicBtn;

19
BtnGantiObat: TabcFormPicBtn;
BtnHapusObat: TabcFormPicBtn;
BtnTutupObat: TabcFormPicBtn;
PnlDaftarObat: TPanel;
SBObat: TStatusBar;
LblNamaObat: TLabel;
LblDosisObat: TLabel;
LblEF1Obat: TLabel;
LblEF2Obat: TLabel;
LblLaranganObat: TLabel;
LblHargaObat: TLabel;
EdtNamaObat: TEdit;
EdtDosisObat: TEdit;
EdtEF1Obat: TEdit;
EdtEF2Obat: TEdit;
EDTLaranganObat: TEdit;
EdtHargaObat: TEdit;
PnlBtnGejalaSawan: TPanel;
BtnTambahGS: TabcFormPicBtn;
BtnTutupGS: TabcFormPicBtn;
PnlIsiGS: TPanel;
LblSawanGS: TLabel;
CmbSawanGS: TComboBox;
LblCFGS: TLabel;
EdtCFGS: TEdit;
LVGS: TListView;
LblJikaGS: TLabel;
CmbGejalaGS: TComboBox;
BtnMasukGS: TabcFormPicBtn;
BtnBersihGS: TabcFormPicBtn;
PnlIsiAEpilepsi: TPanel;
LblEpilepsi: TLabel;
LblCFEpilepsi: TLabel;
LblJikaAEpilepsi: TLabel;
CmbEpilepsiAEpilepsi: TComboBox;
EdtCFEpilepsi: TEdit;
LVEpilepsi: TListView;

20
PnlBtnAEpilepsi: TPanel;
BtnTambahAEpilepsi: TabcFormPicBtn;
BtnTutupAEpilepsi: TabcFormPicBtn;
BtnBersihAEpilepsi: TabcFormPicBtn;
PCEpilepsi: TPageControl;
TSSawanEpilepsi: TTabSheet;
TSSyaratEpilepsi: TTabSheet;
CmbSyaratEpilepsi: TComboBox;
BtnMasukLEpilepsi: TabcFormPicBtn;
CmbSawanEpilepsi: TComboBox;
BtnMasukSEpilepsi: TabcFormPicBtn;
PnlBtnNEpilepsi: TPanel;
BtnTambahNEpilepsi: TabcFormPicBtn;
BtnTutupNEpilepsi: TabcFormPicBtn;
BtnBersihNEpilepsi: TabcFormPicBtn;
PnlIsiNEpilepsi: TPanel;
LblNEpilepsi: TLabel;
LblCFNEpilepsi: TLabel;
LblJikaNE: TLabel;
CmbNEpilepsiNE: TComboBox;
EdtCFNEpilepsi: TEdit;
LVNEpilepsi: TListView;
LblNilaiAEpilepsi: TLabel;
EdtNilaiAEpilepsi: TEdit;
PCNEpilepsi: TPageControl;
TSGejalaNEpilepsi: TTabSheet;
CmbGejalaNEpilepsi: TComboBox;
BtnMasukGejalaNEpilepsi: TabcFormPicBtn;
TSSyaratNEpilspsi: TTabSheet;
LblNilaiNEpilepsi: TLabel;
CmbSyaratNEpilepsi: TComboBox;
BtnMasukNEpilepsi: TabcFormPicBtn;
EdtNilaiNEpilepsi: TEdit;
PnlBtnTE: TPanel;
BtnTambahTE: TabcFormPicBtn;
BtnTutupTE: TabcFormPicBtn;
BtnBersihTE: TabcFormPicBtn;

21
PnlIsiTE: TPanel;
LblObatTE: TLabel;
LblEpilepsiTE: TLabel;
LblCFTE: TLabel;
LblSdTE: TLabel;
CmbObatTE: TComboBox;
CmbEpilepsiTE: TComboBox;
EdtCF1TE: TEdit;
EdtCf2TE: TEdit;
LblJikaTE: TLabel;
PnlIsiTNE: TPanel;
LBLOnatTNE: TLabel;
LblNETNE: TLabel;
LblCFTNE: TLabel;
LblSdTNE: TLabel;
LblJikaTNE: TLabel;
CmbObatNE: TComboBox;
CmbNETNE: TComboBox;
EdtCF1TNE: TEdit;
EdtCF2TNE: TEdit;
PnlBtnTNE: TPanel;
BtnTambahTNE: TabcFormPicBtn;
BtnTutupTNE: TabcFormPicBtn;
BtnBersihTNE: TabcFormPicBtn;
PnlBtnAturan: TPanel;
BtnTampilAturan: TabcFormPicBtn;
BtnBersihAturan: TabcFormPicBtn;
BtnHapusAturan: TabcFormPicBtn;
BtnTutupAturan: TabcFormPicBtn;
PnlDaftarAturan: TPanel;
LVDaftarAturan: TListView;
pgbtampil: TProgressBar;
LblJenisAturan: TLabel;
CmbJenisAturan: TComboBox;
PPenjelasan: TabcPage;
PTerapi: TabcPage;
PnlBtnKonsultasi: TPanel;

22
BtnMulaiKonsultasi: TabcFormPicBtn;
BtnLanjutKonsultasi: TabcFormPicBtn;
BtnPenjelasanKonsultasi: TabcFormPicBtn;
BtnUlangKonsultasi: TabcFormPicBtn;
BtnTutupKonsultasi: TabcFormPicBtn;
PnlDiagnosis: TPanel;
PnlJawab: TPanel;
LblCFKonsultasi: TLabel;
RBYa: TRadioButton;
RBTidak: TRadioButton;
EdtCFKonsultasi: TEdit;
RBTTahu: TRadioButton;
PnlBtnPenjelasan: TPanel;
BtnTutupPenjelasan: TabcFormPicBtn;
PnlPenjelasan: TPanel;
PnlTerapi: TPanel;
PnlBtnTerapi: TPanel;
BtnTutupTerapi: TabcFormPicBtn;
LVTerapi: TListView;
BtnBersihGejala: TabcFormPicBtn;
BtnBersihSawan: TabcFormPicBtn;
BtnBersihEpilepsi: TabcFormPicBtn;
BtnBersihNonEpilepsi: TabcFormPicBtn;
BtnBersihObat: TabcFormPicBtn;
BtnBersihSyarat: TabcFormPicBtn;
LVDaftarObat: TListView;
BtnUtama: TabcButtonBar;
BPTentang: TabcButtonPage;
BtnKeluar: TabcPicSpeedBtn;
BtnTentang: TabcPicSpeedBtn;
BPData: TabcButtonPage;
BtnSyarat: TabcPicSpeedBtn;
BtnSawan: TabcPicSpeedBtn;
BtnNonEpilepsi: TabcPicSpeedBtn;
BtnGejala: TabcPicSpeedBtn;
BtnEpilepsi: TabcPicSpeedBtn;
BtnObat: TabcPicSpeedBtn;

23
BPAkuisisi: TabcButtonPage;
BtnAGS: TabcPicSpeedBtn;
BtnTNE: TabcPicSpeedBtn;
BtnDNE: TabcPicSpeedBtn;
BtnDE: TabcPicSpeedBtn;
BtnDaftarAturan: TabcPicSpeedBtn;
BtnTE: TabcPicSpeedBtn;
BPOp: TabcButtonPage;
BtnKonsultasi: TabcPicSpeedBtn;
MMUtama: TMainMenu;
SistemPakar1: TMenuItem;
Tentang1: TMenuItem;
Keluar1: TMenuItem;
DataPengetahuan1: TMenuItem;
Gejal1: TMenuItem;
Sawan1: TMenuItem;
Syarat1: TMenuItem;
N1: TMenuItem;
Epilepsi1: TMenuItem;
NonEpilepsi1: TMenuItem;
N2: TMenuItem;
Obat1: TMenuItem;
AkuisisiPengetahuan1: TMenuItem;
AturanGejalaSawan1: TMenuItem;
AturanEpilepsi1: TMenuItem;
AturanNonEpilepsi1: TMenuItem;
AturanTerapiEpilepsi1: TMenuItem;
AturanTerapiNonEpilepsi1: TMenuItem;
DaftarAturan1: TMenuItem;
Operasi1: TMenuItem;
Konsultasi1: TMenuItem;
SB: TStatusBar;
BtnTerapi: TabcFormPicBtn;
LVKonsultasi: TListView;
LVPenjelasan: TListView;
ImgTentang: TImage;
procedure BtnGejalaClick(Sender: TObject);

24
procedure BtnKeluarClick(Sender: TObject);
procedure BtnTentangClick(Sender: TObject);
procedure BtnSawanClick(Sender: TObject);
procedure BtnSyaratClick(Sender: TObject);
procedure BtnNonEpilepsiClick(Sender:
TObject);
procedure FormShow(Sender: TObject);
procedure BtnEpilepsiClick(Sender:
TObject);
procedure BtnObatClick(Sender: TObject);
procedure BtnAGSClick(Sender: TObject);
procedure BtnDEClick(Sender: TObject);
procedure BtnDNEClick(Sender: TObject);
procedure BtnTEClick(Sender: TObject);
procedure BtnTNEClick(Sender: TObject);
procedure BtnDaftarAturanClick(Sender:
TObject);
procedure BtnKonsultasiClick(Sender:
TObject);
procedure Tentang1Click(Sender: TObject);
procedure Keluar1Click(Sender: TObject);
procedure Gejal1Click(Sender: TObject);
procedure Sawan1Click(Sender: TObject);
procedure Syarat1Click(Sender: TObject);
procedure Epilepsi1Click(Sender: TObject);
procedure NonEpilepsi1Click(Sender:
TObject);
procedure Obat1Click(Sender: TObject);
procedure AturanGejalaSawan1Click(Sender:
TObject);
procedure AturanEpilepsi1Click(Sender:
TObject);
procedure AturanNonEpilepsi1Click(Sender:
TObject);
procedure
AturanTerapiEpilepsi1Click(Sender: TObject);

25
procedure
AturanTerapiNonEpilepsi1Click(Sender: TObject);
procedure DaftarAturan1Click(Sender:
TObject);
procedure Konsultasi1Click(Sender:
TObject);
procedure EdtNamaGejalaKeyPress(Sender:
TObject;
var Key: Char);
procedure MemoKetGejalaKeyPress(Sender:
TObject;
var Key: Char);
procedure BtnTambahGejalaClick(Sender:
TObject);
procedure BtnGantiGejalaClick(Sender:
TObject);
procedure BtnHapusGejalaClick(Sender:
TObject);
procedure BtnBersihGejalaClick(Sender:
TObject);
procedure BtnTutupGejalaClick(Sender:
TObject);
procedure LVDaftarGejalaDblClick(Sender:
TObject);
procedure LVDaftarGejalaKeyPress(Sender:
TObject;
var Key: Char);
procedure EdtNamaSawanKeyPress(Sender:
TObject;
var Key: Char);
procedure BtnTambahSawanClick(Sender:
TObject);
procedure BtnGantiSawanClick(Sender:
TObject);
procedure BtnHapusSawanClick(Sender:
TObject);

26
procedure BtnBersihSawanClick(Sender:
TObject);
procedure BtnTutupSawanClick(Sender:
TObject);
procedure LVDaftarSawanDblClick(Sender:
TObject);
procedure LVDaftarSawanKeyPress(Sender:
TObject;
var Key: Char);
procedure EdtNamaSyaratKeyPress(Sender:
TObject;
var Key: Char);
procedure BtnTambahSyaratClick(Sender:
TObject);
procedure BtnGantiSyaratClick(Sender:
TObject);
procedure BtnHapusSyaratClick(Sender:
TObject);
procedure BtnBersihSyaratClick(Sender:
TObject);
procedure BtnTutupSyaratClick(Sender:
TObject);
procedure LVDaftarSyaratDblClick(Sender:
TObject);
procedure LVDaftarSyaratKeyPress(Sender:
TObject;
var Key: Char);
procedure EdtNamaEpilepsiKeyPress(Sender:
TObject;
var Key: Char);
procedure BtnTambahEpilepsiClick(Sender:
TObject);
procedure BtnGantiEpilepsiClick(Sender:
TObject);
procedure BtnHapusEpilepsiClick(Sender:
TObject);

27
procedure BtnBersihEpilepsiClick(Sender:
TObject);
procedure BtnTutupEpilepsiClick(Sender:
TObject);
procedure LvDaftarEpilepsiDblClick(Sender:
TObject);
procedure LvDaftarEpilepsiKeyPress(Sender:
TObject;
var Key: Char);
procedure
EdtNamaNonEpilepsiKeyPress(Sender: TObject;
var Key: Char);
procedure BtnTambahNonEpilepsiClick(Sender:
TObject);
procedure BtnGantiNonEpilepsiClick(Sender:
TObject);
procedure BtnHapusNonEpilepsiClick(Sender:
TObject);
procedure BtnBersihNonEpilepsiClick(Sender:
TObject);
procedure BtnTutupNonEpilepsiClick(Sender:
TObject);
procedure
LVDaftarNonEpilepsiDblClick(Sender: TObject);
procedure
LVDaftarNonEpilepsiKeyPress(Sender: TObject;
var Key: Char);
procedure EdtNamaObatKeyPress(Sender:
TObject; var Key: Char);
procedure EdtDosisObatKeyPress(Sender:
TObject;
var Key: Char);
procedure EdtEF1ObatKeyPress(Sender:
TObject;
var Key: Char);
procedure EdtEF2ObatKeyPress(Sender:
TObject;

28
var Key: Char);
procedure EDTLaranganObatKeyPress(Sender:
TObject;
var Key: Char);
procedure EdtHargaObatKeyPress(Sender:
TObject;
var Key: Char);
procedure BtnTambahObatClick(Sender:
TObject);
procedure BtnGantiObatClick(Sender:
TObject);
procedure BtnHapusObatClick(Sender:
TObject);
procedure BtnBersihObatClick(Sender:
TObject);
procedure BtnTutupObatClick(Sender:
TObject);
procedure LVDaftarObatDblClick(Sender:
TObject);
procedure LVDaftarObatKeyPress(Sender:
TObject;
var Key: Char);
procedure CmbSawanGSKeyDown(Sender:
TObject;
var Key: Word; Shift: TShiftState);
procedure CmbSawanGSKeyPress(Sender:
TObject;
var Key: Char);
procedure EdtCFGSExit(Sender: TObject);
procedure EdtCFGSKeyPress(Sender: TObject;
var Key: Char);
procedure CmbGejalaGSKeyDown(Sender:
TObject;
var Key: Word; Shift: TShiftState);
procedure CmbGejalaGSKeyPress(Sender:
TObject;
var Key: Char);

29
procedure BtnMasukGSClick(Sender: TObject);
procedure BtnTambahGSClick(Sender:
TObject);
procedure BtnBersihGSClick(Sender:
TObject);
procedure BtnTutupGSClick(Sender: TObject);
procedure
CmbEpilepsiAEpilepsiKeyDown(Sender: TObject;
var Key: Word; Shift: TShiftState);
procedure
CmbEpilepsiAEpilepsiKeyPress(Sender: TObject;
var Key: Char);
procedure EdtCFEpilepsiExit(Sender:
TObject);
procedure EdtCFEpilepsiKeyPress(Sender:
TObject;
var Key: Char);
procedure CmbSawanEpilepsiKeyDown(Sender:
TObject;
var Key: Word; Shift: TShiftState);
procedure CmbSawanEpilepsiKeyPress(Sender:
TObject;
var Key: Char);
procedure BtnMasukSEpilepsiClick(Sender:
TObject);
procedure CmbSyaratEpilepsiKeyDown(Sender:
TObject;
var Key: Word; Shift: TShiftState);
procedure CmbSyaratEpilepsiKeyPress(Sender:
TObject;
var Key: Char);
procedure EdtNilaiAEpilepsiKeyPress(Sender:
TObject;
var Key: Char);
procedure BtnMasukLEpilepsiClick(Sender:
TObject);

30
procedure BtnTambahAEpilepsiClick(Sender:
TObject);
procedure BtnBersihAEpilepsiClick(Sender:
TObject);
procedure BtnTutupAEpilepsiClick(Sender:
TObject);
procedure CmbNEpilepsiNEKeyDown(Sender:
TObject;
var Key: Word; Shift: TShiftState);
procedure CmbNEpilepsiNEKeyPress(Sender:
TObject;
var Key: Char);
procedure EdtCFNEpilepsiKeyPress(Sender:
TObject;
var Key: Char);
procedure
CmbGejalaNEpilepsiKeyPress(Sender: TObject;
var Key: Char);
procedure
BtnMasukGejalaNEpilepsiClick(Sender: TObject);
procedure CmbSyaratNEpilepsiKeyDown(Sender:
TObject;
var Key: Word;
Shift: TShiftState);
procedure
CmbSyaratNEpilepsiKeyPress(Sender: TObject;
var Key: Char);
procedure EdtNilaiNEpilepsiKeyPress(Sender:
TObject;
var Key: Char);
procedure BtnMasukNEpilepsiClick(Sender:
TObject);
procedure BtnTambahNEpilepsiClick(Sender:
TObject);
procedure BtnBersihNEpilepsiClick(Sender:
TObject);

31
procedure BtnTutupNEpilepsiClick(Sender:
TObject);
procedure CmbObatTEKeyDown(Sender: TObject;
var Key: Word; Shift: TShiftState);
procedure CmbObatTEKeyPress(Sender:
TObject;
var Key: Char);
procedure CmbEpilepsiTEKeyDown(Sender:
TObject;
var Key: Word; Shift: TShiftState);
procedure CmbEpilepsiTEKeyPress(Sender:
TObject;
var Key: Char);
procedure EdtCF1TEExit(Sender: TObject);
procedure EdtCF1TEKeyPress(Sender: TObject;
var Key: Char);
procedure EdtCf2TEExit(Sender: TObject);
procedure EdtCf2TEKeyPress(Sender: TObject;
var Key: Char);
procedure BtnTambahTEClick(Sender:
TObject);
procedure BtnBersihTEClick(Sender:
TObject);
procedure BtnTutupTEClick(Sender: TObject);
procedure EdtCFNEpilepsiExit(Sender:
TObject);
procedure CmbObatNEKeyDown(Sender: TObject;
var Key: Word;
Shift: TShiftState);
procedure CmbObatNEKeyPress(Sender:
TObject;
var Key: Char);
procedure CmbNETNEKeyDown(Sender: TObject;
var Key: Word; Shift: TShiftState);
procedure CmbNETNEKeyPress(Sender: TObject;
var Key: Char);
procedure EdtCF1TNEExit(Sender: TObject);

32
procedure EdtCF1TNEKeyPress(Sender:
TObject;
var Key: Char);
procedure EdtCF2TNEExit(Sender: TObject);
procedure EdtCF2TNEKeyPress(Sender:
TObject;
var Key: Char);
procedure BtnTambahTNEClick(Sender:
TObject);
procedure BtnBersihTNEClick(Sender:
TObject);
procedure BtnTutupTNEClick(Sender:
TObject);
procedure CmbJenisAturanKeyDown(Sender:
TObject;
var Key: Word; Shift: TShiftState);
procedure CmbJenisAturanKeyPress(Sender:
TObject;
var Key: Char);
procedure LVDaftarAturanClick(Sender:
TObject);
procedure LVDaftarAturanKeyPress(Sender:
TObject;
var Key: Char);
procedure BtnTampilAturanClick(Sender:
TObject);
procedure BtnHapusAturanClick(Sender:
TObject);
procedure BtnBersihAturanClick(Sender:
TObject);
procedure BtnTutupAturanClick(Sender:
TObject);
procedure RBTTahuEnter(Sender: TObject);
procedure RBTTahuKeyPress(Sender: TObject;
var Key: Char);
procedure RBYaEnter(Sender: TObject);
procedure RBYaKeyPress(Sender: TObject;

33
var Key: Char);
procedure RBTidakEnter(Sender: TObject);
procedure RBTidakKeyPress(Sender: TObject;
var Key: Char);
procedure EdtCFKonsultasiExit(Sender:
TObject);
procedure EdtCFKonsultasiKeyPress(Sender:
TObject;
var Key: Char);
procedure BtnMulaiKonsultasiClick(Sender:
TObject);
procedure BtnLanjutKonsultasiClick(Sender:
TObject);
procedure
BtnPenjelasanKonsultasiClick(Sender: TObject);
procedure BtnUlangKonsultasiClick(Sender:
TObject);
procedure BtnTerapiClick(Sender: TObject);
procedure BtnTutupKonsultasiClick(Sender:
TObject);
procedure BtnTutupTerapiClick(Sender:
TObject);
procedure BtnTutupPenjelasanClick(Sender:
TObject);
private
procedure TampilGejala;
procedure TampilSawan;
procedure TampilSyarat;
procedure TampilEpilepsi;
procedure TampilNonEpilepsi;
procedure TampilObat;
public
Procedure Bersih;
Procedure Sawan(NE : integer);
Procedure Syarat(NE : integer);
Procedure SyaratP(NE : integer);
Procedure Penyakit;

34
Procedure Lewat;
Procedure LewatP;
Procedure GejalaP(NE : integer);
Function Pencarian : string;
Procedure TampilHasil;
end;

var
FrmMain: TFrmMain;
KodeSawanGS, NamaSawanGS, KodeGejalaGS,
NamaGejalaGS,
KodeEpilepsiAE, NamaEpilepsiAE, KodeSawanAE,
NamaSawanAE,
KodeSyaratAE, NamaSyaratAE, KodeNEpilepsiANE,
NamaNEpilepsiANE,
KodeGejalaANE, NamaGejalaANE, KodeSyaratANE,
NamaSyaratANE,
KodeObatTE, NamaObatTE, KodeEpilepsiTE,
NamaEpilepsiTE,
KodeObatTNE, NamaObatTNE, KodeEpilepsiTNE,
NamaEpilepsiTNE
: TStringList;

//untuk konsultasi
NE, NS, NG, NP, NOS, NOG, NOP, RE, RS, RL, RP
: integer;
CFNE, CFNS, CFNG, CFNL, CFNP, CFG1, CFG2,
CFS1, CFS2 : real;
CFS, CFG : array [1..100] of real;
Epilepsi, Gejala, BalikSawan, CekFinal :
boolean;
Nilai : string;
Cari : array[1..100] of integer;
Tor : integer;

const standar = 0.5;

35
implementation

uses UDM, UCampuran;

{$R *.DFM}

procedure TFrmMain.TampilGejala;
var Daftar : TlistItem;
begin
with DM.Query, Daftar do
begin
Close;
SQL.Clear;
SQL.Add(
' SELECT NOGEJALA, NAMAGEJALA,
KETERANGAN '+
' FROM GEJALA ORDER BY NAMAGEJALA');
Open;

LVDaftarGejala.Items.Clear;
while not eof do
begin
Daftar := LVDaftarGejala.Items.Add;
Daftar.Caption := Fields[1].AsString;
Daftar.SubItems.Add(Fields[2].AsString);
Daftar.SubItems.Add(Fields[0].AsString);
Next;
end;
end;
SBGejala.SimpleText := ' Jumlah Gejala : ' +
IntToStr(LVDaftarGejala.Items.Count);
end;

procedure TFrmMain.TampilSawan;
var Daftar : TlistItem;
begin
with DM.Query, Daftar do

36
begin
Close;
SQL.Clear;
SQL.Add(
' SELECT NOSAWAN, NAMASAWAN '+
' FROM SAWAN ORDER BY NAMASAWAN');
Open;

LVDaftarSawan.Items.Clear;
while not eof do
begin
Daftar := LVDaftarSawan.Items.Add;
Daftar.Caption := Fields[1].AsString;
Daftar.SubItems.Add(Fields[0].AsString);
Next;
end;
end;
SBSawan.SimpleText := ' Jumlah Sawan : ' +
IntToStr(LVDaftarSawan.Items.Count);
end;

procedure TFrmMain.TampilSyarat;
var Daftar : TlistItem;
begin
with DM.Query, Daftar do
begin
Close;
SQL.Clear;
SQL.Add(
' SELECT NOLAIN, NAMALAIN '+
' FROM LAIN ORDER BY NAMALAIN');
Open;

LVDaftarSyarat.Items.Clear;
while not eof do
begin
Daftar := LVDaftarSyarat.Items.Add;

37
Daftar.Caption := Fields[1].AsString;
Daftar.SubItems.Add(Fields[0].AsString);
Next;
end;
end;
SBSyarat.SimpleText := ' Jumlah Syarat
Lain : ' +
IntToStr(LVDaftarSyarat.Items.Count);
end;

procedure TFrmMain.TampilEpilepsi;
var Daftar : TlistItem;
begin
with DM.Query, Daftar do
begin
Close;
SQL.Clear;
SQL.Add(
' SELECT NOEPILEPSI, NAMAEPILEPSI '+
' FROM EPILEPSI ORDER BY
NAMAEPILEPSI');
Open;

LvDaftarEpilepsi.Items.Clear;
while not eof do
begin
Daftar := LvDaftarEpilepsi.Items.Add;
Daftar.Caption := Fields[1].AsString;
Daftar.SubItems.Add(Fields[0].AsString);
Next;
end;
end;
SBEpilepsi.SimpleText := ' Jumlah Syarat
Lain : ' +
IntToStr(LvDaftarEpilepsi.Items.Count);
end;

38
procedure TFrmMain.TampilNonEpilepsi;
var Daftar : TlistItem;
begin
with DM.Query, Daftar do
begin
Close;
SQL.Clear;
SQL.Add(
' SELECT NONONEPILEPSI, NAMANONEPILEPSI
'+
' FROM NONEPILEPSI ORDER BY
NAMANONEPILEPSI');
Open;

LVDaftarNonEpilepsi.Items.Clear;
while not eof do
begin
Daftar := LVDaftarNonEpilepsi.Items.Add;
Daftar.Caption := Fields[1].AsString;
Daftar.SubItems.Add(Fields[0].AsString);
Next;
end;
end;
SBSyarat.SimpleText := ' Jumlah Syarat
Lain : ' +
IntToStr(LVDaftarNonEpilepsi.Items.Count);
end;

procedure TFrmMain.TampilObat;
var Daftar : TlistItem;
i : integer;
begin
with DM.Query, Daftar do
begin
Close;
SQL.Clear;
SQL.Add(

39
' SELECT * FROM OBAT ORDER BY NAMAOBAT
');
Open;

LVDaftarObat.Items.Clear;
i := 0;
while not Eof do
begin
inc(i);
Daftar := LVDaftarObat.Items.Add;
Caption :=
FieldByName('namaobat').AsString;
SubItems.Add('');

SubItems.Add(FieldByName('noobat').AsString);

if FieldByName('dosis').AsString <> ''


then
begin
Daftar := LVDaftarObat.Items.Add;
Caption := ' Dosis';

SubItems.Add(FieldByName('dosis').AsString);
SubItems.Add('');
end;

if FieldByName('ES1').AsString <> '' then


begin
Daftar := LVDaftarObat.Items.Add;
Caption := ' E.Samping (sesuai
dosis)';

SubItems.Add(FieldByName('ES1').AsString);
SubItems.Add('');
end;

if FieldByName('ES2').AsString <> '' then

40
begin
Daftar := LVDaftarObat.Items.Add;
Caption := ' E.Samping (tdk sesuai
dosis)';

SubItems.Add(FieldByName('ES2').AsString);
SubItems.Add('');
end;

if FieldByName('larangan').AsString <> ''


then
begin
Daftar := LVDaftarObat.Items.Add;
Caption := ' Larangan';

SubItems.Add(FieldByName('larangan').AsString);
SubItems.Add('');
end;

if FieldByName('harga').AsString <> ''


then
begin
Daftar := LVDaftarObat.Items.Add;
Caption := ' Harga';

SubItems.Add(FieldByName('harga').AsString);
SubItems.Add('');
end;

Next;
end;
end;
SBObat.SimpleText := ' Jumlah Obat : ' +
IntToStr(i);
end;

procedure TFrmMain.FormShow(Sender: TObject);

41
begin
//cek koneksi
if DM.IBDB.Connected = false then
begin
DM.IBDB.Connected := true;
DM.IBTrans.Active := true;
end;

//bersihkan semua tampilan


//gejala
TampilGejala;
EdtNamaGejala.Text := '';
MemoKetGejala.Text := '';
BtnTambahGejala.Enabled := true;
BtnGantiGejala.Enabled := false;
BtnHapusGejala.Enabled := false;

//sawan
TampilSawan;
EdtNamaSawan.Text := '';
BtnTambahSawan.Enabled := true;
BtnGantiSawan.Enabled := false;
BtnHapusSawan.Enabled := false;

//syarat
TampilSyarat;
EdtNamaSyarat.Text := '';
BtnTambahSyarat.Enabled := true;
BtnGantiSyarat.Enabled := false;
BtnHapusSyarat.Enabled := false;

//epilepsi
TampilEpilepsi;
EdtNamaEpilepsi.Text := '';
BtnTambahEpilepsi.Enabled := true;
BtnGantiEpilepsi.Enabled := false;
BtnHapusEpilepsi.Enabled := false;

42
//non epilepsi
TampilNonEpilepsi;
EdtNamaNonEpilepsi.Text := '';
BtnTambahNonEpilepsi.Enabled := true;
BtnGantiNonEpilepsi.Enabled := false;
BtnHapusNonEpilepsi.Enabled := false;

//obat
TampilObat;
EdtNamaObat.Text := '';
EdtDosisObat.Text := '';
EdtEF1Obat.Text := '';
EdtEF2Obat.Text := '';
EDTLaranganObat.Text := '';
EdtHargaObat.Text := '';
BtnTambahObat.Enabled := true;
BtnGantiObat.Enabled := false;
BtnHapusObat.Enabled := false;

//gejalasawan
CmbSawanGS.ItemIndex := -1;
EdtCFGS.Text := '';
LVGS.Items.Clear;
LblJikaGS.Caption := 'JIKA';
CmbGejalaGS.ItemIndex := -1;

//aepilepsi
CmbEpilepsiAEpilepsi.ItemIndex := -1;
EdtCFEpilepsi.Text := '';
LVEpilepsi.Items.Clear;
LblJikaAEpilepsi.Caption := 'JIKA';
PCEpilepsi.ActivePage := TSSawanEpilepsi;
CmbSawanEpilepsi.ItemIndex := -1;
CmbSyaratEpilepsi.ItemIndex := -1;
EdtNilaiAEpilepsi.Text := '';
//anepilepsi

43
CmbNEpilepsiNE.ItemIndex := -1;
EdtCFNEpilepsi.Text := '';
LVNEpilepsi.Items.Clear;
LblJikaNE.Caption := 'JIKA';
PCNEpilepsi.ActivePage := TSGejalaNEpilepsi;
CmbGejalaNEpilepsi.ItemIndex := -1;
CmbSyaratNEpilepsi.ItemIndex := -1;
EdtNilaiNEpilepsi.Text := '';

//atepilespi
CmbObatTE.ItemIndex := -1;
CmbEpilepsiTE.ItemIndex := -1;
EdtCF1TE.Text := '';
EdtCf2TE.Text := '';

//atnepilepsi
CmbObatNE.ItemIndex := -1;
CmbNEpilepsiNE.ItemIndex := -1;
EdtCF1TNE.Text := '';
EdtCF2TNE.Text := '';

//daturan
CmbJenisAturan.ItemIndex := 0;

//konsultasi
LVKonsultasi.Items.Clear;
RBTTahu.Checked := true;
LblCFKonsultasi.Visible := false;
EdtCFKonsultasi.Text := '';
EdtCFKonsultasi.Visible := false;
BtnMulaiKonsultasi.Enabled := true;
BtnLanjutKonsultasi.Enabled := false;
BtnPenjelasanKonsultasi.Enabled := false;

//fokus
BtnUtama.ActivePage := BPTentang;
Frame.ActivePage := PTentang;

44
end;

procedure TFrmMain.BtnTentangClick(Sender:
TObject);
begin
PTentang.Show;
end;

procedure TFrmMain.BtnKeluarClick(Sender:
TObject);
begin
if MessageDlg('Anda Mau Keluar?',
mtConfirmation,
[mbYes, mbNo], 1) = mrYes then Close;
end;

procedure TFrmMain.BtnGejalaClick(Sender:
TObject);
begin
PGejala.Show;
EdtNamaGejala.SetFocus;
end;
procedure TFrmMain.BtnSawanClick(Sender:
TObject);
begin
PSawan.Show;
EdtNamaSawan.SetFocus;
end;

procedure TFrmMain.BtnSyaratClick(Sender:
TObject);
begin
PSyarat.Show;
EdtNamaSyarat.SetFocus;
end;

45
procedure TFrmMain.BtnEpilepsiClick(Sender:
TObject);
begin
PEpilepsi.Show;
EdtNamaEpilepsi.SetFocus;
end;

procedure TFrmMain.BtnNonEpilepsiClick(Sender:
TObject);
begin
PNonEpilepsi.show;
EdtNamaNonEpilepsi.SetFocus;
end;

procedure TFrmMain.BtnObatClick(Sender:
TObject);
begin
PObat.show;
EdtNamaObat.SetFocus;
end;

procedure TFrmMain.BtnAGSClick(Sender:
TObject);
begin
with DM.Query do
begin
//memasukkan sawan di cmbsawan
Close;
SQL.Clear;
SQL.Add(
' SELECT NOSAWAN, NAMASAWAN '+
' FROM SAWAN ORDER BY NAMASAWAN ');
Open;

CmbSawanGS.Items.Clear;
KodeSawanGS := TStringList.Create;

46
NamaSawanGS := TStringList.Create;
while not Eof do
begin
KodeSawanGS.Add(Fields[0].AsString);
NamaSawanGS.Add(Fields[1].AsString);
Next;
end;

CmbSawanGS.Items.Assign(NamaSawanGS);
CmbSawanGS.ItemIndex := -1;

//memasukkan gejala di cmbgejala


Close;
SQL.Clear;
SQL.Add(
' SELECT NOGEJALA, NAMAGEJALA '+
' FROM GEJALA ORDER BY NAMAGEJALA ');
Open;

CmbGejalaGS.Items.Clear;
KodeGejalaGS := TStringList.Create;
NamaGejalaGS := TStringList.Create;
while not Eof do
begin
KodeGejalaGS.Add(Fields[0].AsString);
NamaGejalaGS.Add(Fields[1].AsString);
Next;
end;
CmbGejalaGS.Items.Assign(NamaGejalaGS);
CmbGejalaGS.ItemIndex := -1;
end;
PGejalaSawan.Show;
CmbSawanGS.SetFocus;
end;

procedure TFrmMain.BtnDEClick(Sender: TObject);

47
begin
with DM.Query do
begin
//memasukkan epilepsi di cmbepilepsi
Close;
SQL.Clear;
SQL.Add(
' SELECT NOEPILEPSI, NAMAEPILEPSI '+
' FROM EPILEPSI ORDER BY NAMAEPILEPSI ');
Open;

CmbEpilepsiAEpilepsi.Items.Clear;
KodeEpilepsiAE := TStringList.Create;
NamaEpilepsiAE := TStringList.Create;
while not Eof do
begin
KodeEpilepsiAE.Add(Fields[0].AsString);
NamaEpilepsiAE.Add(Fields[1].AsString);
Next;
end;

CmbEpilepsiAEpilepsi.Items.Assign(NamaEpilepsiA
E);
CmbEpilepsiAEpilepsi.ItemIndex := -1;

//memasukkan sawan di cmbsawan


Close;
SQL.Clear;
SQL.Add(
' SELECT NOSAWAN, NAMASAWAN '+
' FROM SAWAN ORDER BY NAMASAWAN ');
Open;

CmbSawanEpilepsi.Items.Clear;
KodeSawanAE := TStringList.Create;
NamaSawanAE := TStringList.Create;

48
while not Eof do
begin
KodeSawanAE.Add(Fields[0].AsString);
NamaSawanAE.Add(Fields[1].AsString);
Next;
end;

CmbSawanEpilepsi.Items.Assign(NamaSawanAE);
CmbSawanEpilepsi.ItemIndex := -1;

//memasukkan syarat di cmbsyarat


Close;
SQL.Clear;
SQL.Add(
' SELECT NOLAIN, NAMALAIN '+
' FROM LAIN ORDER BY NAMALAIN ');
Open;

CmbSyaratEpilepsi.Items.Clear;
KodeSyaratAE := TStringList.Create;
NamaSyaratAE := TStringList.Create;
while not Eof do
begin
KodeSyaratAE.Add(Fields[0].AsString);
NamaSyaratAE.Add(Fields[1].AsString);
Next;
end;

CmbSyaratEpilepsi.Items.Assign(NamaSyaratAE);
CmbSyaratEpilepsi.ItemIndex := -1;
end;
PDE.Show;
CmbEpilepsiAEpilepsi.SetFocus;
end;

procedure TFrmMain.BtnDNEClick(Sender:
TObject);

49
begin
with DM.Query do
begin
//memasukkan non epilepsi di cmbnepilepsi
Close;
SQL.Clear;
SQL.Add(
' SELECT NONONEPILEPSI, NAMANONEPILEPSI
'+
' FROM NONEPILEPSI ORDER BY
NAMANONEPILEPSI ');
Open;

CmbNEpilepsiNE.Items.Clear;
KodeNEpilepsiANE := TStringList.Create;
NamaNEpilepsiANE := TStringList.Create;
while not Eof do
begin
KodeNEpilepsiANE.Add(Fields[0].AsString);
NamaNEpilepsiANE.Add(Fields[1].AsString);
Next;
end;

CmbNEpilepsiNE.Items.Assign(NamaNEpilepsiANE);
CmbNEpilepsiNE.ItemIndex := -1;

//memasukkan gejala di cmbgejala


Close;
SQL.Clear;
SQL.Add(
' SELECT NOGEJALA, NAMAGEJALA '+
' FROM GEJALA ORDER BY NAMAGEJALA ');
Open;

CmbGejalaNEpilepsi.Items.Clear;
KodeGejalaANE := TStringList.Create;

50
NamaGejalaANE := TStringList.Create;
while not Eof do
begin
KodeGejalaANE.Add(Fields[0].AsString);
NamaGejalaANE.Add(Fields[1].AsString);
Next;
end;

CmbGejalaNEpilepsi.Items.Assign(NamaGejalaANE);
CmbGejalaNEpilepsi.ItemIndex := -1;

//memasukkan syarat di cmbsyarat


Close;
SQL.Clear;
SQL.Add(
' SELECT NOLAIN, NAMALAIN '+
' FROM LAIN ORDER BY NAMALAIN ');
Open;

CmbSyaratNEpilepsi.Items.Clear;
KodeSyaratANE := TStringList.Create;
NamaSyaratANE := TStringList.Create;
while not Eof do
begin
KodeSyaratANE.Add(Fields[0].AsString);
NamaSyaratANE.Add(Fields[1].AsString);
Next;
end;

CmbSyaratNEpilepsi.Items.Assign(NamaSyaratANE);
CmbSyaratNEpilepsi.ItemIndex := -1;
end;
PDNE.Show;
CmbNEpilepsiNE.SetFocus;
end;

procedure TFrmMain.BtnTEClick(Sender: TObject);

51
begin
with DM.Query do
begin
//memasukkan obat di cmbobat
Close;
SQL.Clear;
SQL.Add(
' SELECT NOOBAT, NAMAOBAT '+
' FROM OBAT ORDER BY NAMAOBAT ');
Open;

CmbObatTE.Items.Clear;
KodeObatTE := TStringList.Create;
NamaObatTE := TStringList.Create;
while not Eof do
begin
KodeObatTE.Add(Fields[0].AsString);
NamaObatTE.Add(Fields[1].AsString);
Next;
end;

CmbObatTE.Items.Assign(NamaObatTE);
CmbObatTE.ItemIndex := -1;

//memasukkan epilepsi di cmbepilepsi


Close;
SQL.Clear;
SQL.Add(
' SELECT NOEPILEPSI, NAMAEPILEPSI '+
' FROM EPILEPSI ORDER BY NAMAEPILEPSI ');
Open;

CmbEpilepsiTE.Items.Clear;
KodeEpilepsiTE := TStringList.Create;
NamaEpilepsiTE := TStringList.Create;
while not Eof do
begin

52
KodeEpilepsiTE.Add(Fields[0].AsString);
NamaEpilepsiTE.Add(Fields[1].AsString);
Next;
end;

CmbEpilepsiTE.Items.Assign(NamaEpilepsiTE);
CmbEpilepsiTE.ItemIndex := -1;

end;
PTE.Show;
CmbObatTE.SetFocus;
end;

procedure TFrmMain.BtnTNEClick(Sender:
TObject);
begin
with DM.Query do
begin
//memasukkan obat di cmbobat
Close;
SQL.Clear;
SQL.Add(
' SELECT NOOBAT, NAMAOBAT '+
' FROM OBAT ORDER BY NAMAOBAT ');
Open;

CmbObatNE.Items.Clear;
KodeObatTNE := TStringList.Create;
NamaObatTNE := TStringList.Create;
while not Eof do
begin
KodeObatTNE.Add(Fields[0].AsString);
NamaObatTNE.Add(Fields[1].AsString);
Next;
end;

CmbObatNE.Items.Assign(NamaObatTNE);

53
CmbObatNE.ItemIndex := -1;

//memasukkan nonepilepsi di cmbnepilepsi


Close;
SQL.Clear;
SQL.Add(
' SELECT NONONEPILEPSI, NAMANONEPILEPSI
'+
' FROM NONEPILEPSI ORDER BY
NAMANONEPILEPSI ');
Open;

CmbNETNE.Items.Clear;
KodeEpilepsiTNE := TStringList.Create;
NamaEpilepsiTNE := TStringList.Create;
while not Eof do
begin
KodeEpilepsiTNE.Add(Fields[0].AsString);
NamaEpilepsiTNE.Add(Fields[1].AsString);
Next;
end;
CmbNETNE.Items.Assign(NamaEpilepsiTNE);
CmbNEpilepsiNE.ItemIndex := -1;
end;
PTNE.Show;
CmbObatNE.SetFocus;
end;

procedure TFrmMain.BtnDaftarAturanClick(Sender:
TObject);
begin
PDA.Show;
CmbJenisAturan.SetFocus;
end;
procedure TFrmMain.BtnKonsultasiClick(Sender:
TObject);

54
begin
PKonsultasi.Show;
BtnUlangKonsultasi.SetFocus;
end;

procedure TFrmMain.Tentang1Click(Sender:
TObject);
begin
BtnUtama.ActivePage := BPTentang;
BtnTentang.Click;
end;

procedure TFrmMain.Keluar1Click(Sender:
TObject);
begin
BtnUtama.ActivePage := BPTentang;
BtnKeluar.Click;
end;

procedure TFrmMain.Gejal1Click(Sender:
TObject);
begin
BtnUtama.ActivePage := BPData;
BtnGejala.Click;
end;

procedure TFrmMain.Sawan1Click(Sender:
TObject);
begin
BtnUtama.ActivePage := BPData;
BtnSawan.Click;
end;

procedure TFrmMain.Syarat1Click(Sender:
TObject);
begin
BtnUtama.ActivePage := BPData;

55
BtnSyarat.Click;
end;

procedure TFrmMain.Epilepsi1Click(Sender:
TObject);
begin
BtnUtama.ActivePage := BPData;
BtnEpilepsi.Click;
end;

procedure TFrmMain.NonEpilepsi1Click(Sender:
TObject);
begin
BtnUtama.ActivePage := BPData;
BtnNonEpilepsi.Click;
end;

procedure TFrmMain.Obat1Click(Sender: TObject);


begin
BtnUtama.ActivePage := BPData;
BtnObat.Click;
end;

procedure
TFrmMain.AturanGejalaSawan1Click(Sender:
TObject);
begin
BtnUtama.ActivePage := BPAkuisisi;
BtnAGS.Click;
end;

procedure TFrmMain.AturanEpilepsi1Click(Sender:
TObject);
begin
BtnUtama.ActivePage := BPAkuisisi;
BtnDE.Click;
end;

56
procedure
TFrmMain.AturanNonEpilepsi1Click(Sender:
TObject);
begin
BtnUtama.ActivePage := BPAkuisisi;
BtnDNE.Click;
end;

procedure
TFrmMain.AturanTerapiEpilepsi1Click(Sender:
TObject);
begin
BtnUtama.ActivePage := BPAkuisisi;
BtnTE.Click;
end;

procedure
TFrmMain.AturanTerapiNonEpilepsi1Click(Sender:
TObject);
begin
BtnUtama.ActivePage := BPAkuisisi;
BtnTNE.Click;
end;

procedure TFrmMain.DaftarAturan1Click(Sender:
TObject);
begin
BtnUtama.ActivePage := BPAkuisisi;
BtnDaftarAturan.Click;
end;

procedure TFrmMain.Konsultasi1Click(Sender:
TObject);
begin
BtnUtama.ActivePage := BPOp;
BtnKonsultasi.Click;

57
end;

procedure
TFrmMain.EdtNamaGejalaKeyPress(Sender: TObject;
var Key: Char);
begin
if Key = #13 then
begin
Key := #0;
MemoKetGejala.SetFocus;
end;
end;

procedure
TFrmMain.MemoKetGejalaKeyPress(Sender: TObject;
var Key: Char);
begin
if Key = #13 then
begin
Key := #0;
if BtnTambahGejala.Enabled = true then
BtnTambahGejala.SetFocus
else BtnGantiGejala.SetFocus;
end;
end;

procedure TFrmMain.BtnTambahGejalaClick(Sender:
TObject);
begin
if EdtNamaGejala.Text = '' then
begin
MessageDlg('Gejalanya diisi dong.....!!!',
mtInformation, [mbOK], 0);
EdtNamaGejala.SetFocus;
Exit;
end;

58
with DM.Query do
begin
try
Close;
SQL.Clear;
SQL.Add(
' INSERT INTO GEJALA (NOGEJALA, '+
' NAMAGEJALA, KETERANGAN) '+
' VALUES (GEN_ID(ID_GEJALA, 1),
:nama, :ket) ');
ParamByName('nama').AsString :=
UpperCase(EdtNamaGejala.Text);
ParamByName('ket').AsString :=
MemoKetGejala.Text;
ExecSQL;
if DM.IBTrans.Active = false then
DM.IBTrans.Active := true;
DM.IBTrans.CommitRetaining;
except
MessageDlg('Gejala '+ EdtNamaGejala.Text
+ ' sudah ada',
mtInformation,[mbOK],0);
EdtNamaGejala.SetFocus;
exit;
end;
Application.ProcessMessages;
end;
TampilGejala;
BtnBersihGejala.Click;
end;

procedure TFrmMain.BtnGantiGejalaClick(Sender:
TObject);
begin
if EdtNamaGejala.Text = '' then
begin
MessageDlg('Gejalanya diisi dong.....!!!',

59
mtInformation, [mbOK], 0);
EdtNamaGejala.SetFocus;
Exit;
end;
with DM.Query do
begin
try
Close;
SQL.Clear;
SQL.Add(
' UPDATE GEJALA SET NAMAGEJALA = :nama,
'+
' KETERANGAN = :ket WHERE NOGEJALA = '+

LVDaftarGejala.Selected.SubItems.Strings[1]);
ParamByName('nama').AsString :=
UpperCase(EdtNamaGejala.Text);
ParamByName('ket').AsString :=
MemoKetGejala.Text;
ExecSQL;
if DM.IBTrans.Active = false then
DM.IBTrans.Active := true;
DM.IBTrans.CommitRetaining;
Application.ProcessMessages;
except
MessageDlg('Gejala '+ EdtNamaGejala.Text
+ ' sudah ada',
mtInformation,[mbOK],0);
EdtNamaGejala.SetFocus;
exit;
end;
end;
TampilGejala;
BtnBersihGejala.Click;
end;

60
procedure TFrmMain.BtnHapusGejalaClick(Sender:
TObject);
begin
with DM.Query do
begin
Close;
SQL.Clear;
SQL.Add(
' DELETE FROM GEJALA WHERE NOGEJALA = '+

LVDaftarGejala.Selected.SubItems.Strings[1]);
ExecSQL;
if DM.IBTrans.Active = false then
DM.IBTrans.Active := true;
DM.IBTrans.CommitRetaining;
end;
TampilGejala;
BtnBersihGejala.Click;
end;

procedure TFrmMain.BtnBersihGejalaClick(Sender:
TObject);
begin
EdtNamaGejala.Text := '';
MemoKetGejala.Text := '';
BtnTambahGejala.Enabled := true;
BtnGantiGejala.Enabled := false;
BtnHapusGejala.Enabled := false;
EdtNamaGejala.SetFocus;
end;

procedure TFrmMain.BtnTutupGejalaClick(Sender:
TObject);
begin
BtnUtama.ActivePage := BPTentang;
Frame.ActivePage := PTentang;
BtnTentang.Show;

61
end;

procedure
TFrmMain.LVDaftarGejalaDblClick(Sender:
TObject);
begin
if LVDaftarGejala.SelCount = 0 then exit;
EdtNamaGejala.Text :=
LVDaftarGejala.Selected.Caption;
MemoKetGejala.Text :=

LVDaftarGejala.Selected.SubItems.Strings[0];
BtnTambahGejala.Enabled := false;
BtnGantiGejala.Enabled := true;
BtnHapusGejala.Enabled := true;
EdtNamaGejala.SetFocus;
end;

procedure
TFrmMain.LVDaftarGejalaKeyPress(Sender:
TObject;
var Key: Char);
begin
if key = #13 then
begin
key := #0;
LVDaftarGejala.OnDblClick(Sender);
end;
end;

procedure TFrmMain.EdtNamaSawanKeyPress(Sender:
TObject;
var Key: Char);
begin
if Key = #13 then
begin
Key := #0;

62
if BtnTambahSawan.Enabled = true then
BtnTambahSawan.SetFocus
else BtnGantiSawan.SetFocus;
end;
end;
procedure TFrmMain.BtnTambahSawanClick(Sender:
TObject);
begin
if EdtNamaSawan.Text = '' then
begin
MessageDlg('Nama sawannya diisi
dong.....!!!',
mtInformation, [mbOK], 0);
EdtNamaSawan.SetFocus;
Exit;
end;

with DM.Query do
begin
try
Close;
SQL.Clear;
SQL.Add(
' INSERT INTO SAWAN (NOSAWAN,
NAMASAWAN) '+
' VALUES (GEN_ID(ID_SAWAN, 1),
:nama)');
ParamByName('nama').AsString :=
UpperCase(EdtNamaSawan.Text);
ExecSQL;
if DM.IBTrans.Active = false then
DM.IBTrans.Active := true;
DM.IBTrans.CommitRetaining;
Application.ProcessMessages;
except
MessageDlg('Sawan '+ EdtNamaSawan.Text +
' sudah ada',

63
mtInformation,[mbOK],0);
EdtNamaSawan.SetFocus;
exit;
end;
end;
TampilSawan;
BtnBersihSawan.Click;
end;

procedure TFrmMain.BtnGantiSawanClick(Sender:
TObject);
begin
if EdtNamaSawan.Text = '' then
begin
MessageDlg('Nama sawannya diisi
dong.....!!!',
mtInformation, [mbOK], 0);
EdtNamaSawan.SetFocus;
Exit;
end;
with DM.Query do
begin
try
Close;
SQL.Clear;
SQL.Add(
' UPDATE SAWAN SET NAMASAWAN = :nama '+
' WHERE NOSAWAN = '+

LVDaftarSawan.Selected.SubItems.Strings[0]);
ParamByName('nama').AsString :=
UpperCase(EdtNamaSawan.Text);
ExecSQL;
if DM.IBTrans.Active = false then
DM.IBTrans.Active := true;
DM.IBTrans.CommitRetaining;
except

64
MessageDlg('Sawan '+ EdtNamaSawan.Text +
' sudah ada',mtInformation,[mbOK],0);
EdtNamaSawan.SetFocus;
exit;
end;
Application.ProcessMessages;
end;
TampilSawan;
BtnBersihSawan.Click;
end;

procedure TFrmMain.BtnHapusSawanClick(Sender:
TObject);
begin
with DM.Query do
begin
Close;
SQL.Clear;
SQL.Add(
' DELETE FROM SAWAN WHERE NOSAWAN = '+

LVDaftarSawan.Selected.SubItems.Strings[0]);
ExecSQL;
if DM.IBTrans.Active = false then
DM.IBTrans.Active := true;
DM.IBTrans.CommitRetaining;
end;
TampilSawan;
BtnBersihSawan.Click;
end;

procedure TFrmMain.BtnBersihSawanClick(Sender:
TObject);
begin
EdtNamaSawan.Text := '';
BtnTambahSawan.Enabled := true;
BtnGantiSawan.Enabled := false;

65
BtnHapusSawan.Enabled := false;
EdtNamaSawan.SetFocus;
end;

procedure TFrmMain.BtnTutupSawanClick(Sender:
TObject);
begin
BtnUtama.ActivePage := BPTentang;
Frame.ActivePage := PTentang;
BtnTentang.Show;
end;

procedure
TFrmMain.LVDaftarSawanDblClick(Sender:
TObject);
begin
if LVDaftarSawan.SelCount = 0 then exit;
EdtNamaSawan.Text :=
LVDaftarSawan.Selected.Caption;
BtnTambahSawan.Enabled := false;
BtnGantiSawan.Enabled := true;
BtnHapusSawan.Enabled := true;
EdtNamaSawan.SetFocus;
end;

procedure
TFrmMain.LVDaftarSawanKeyPress(Sender: TObject;
var Key: Char);
begin
if key = #13 then
begin
key := #0;
LVDaftarSawan.OnDblClick(sender);
end;
end;

66
procedure
TFrmMain.EdtNamaSyaratKeyPress(Sender: TObject;
var Key: Char);
begin
if Key = #13 then
begin
Key := #0;
if BtnTambahSyarat.Enabled = true then
BtnTambahSyarat.SetFocus
else BtnGantiSyarat.SetFocus;
end;
end;

procedure TFrmMain.BtnTambahSyaratClick(Sender:
TObject);
begin
if EdtNamaSyarat.Text = '' then
begin
MessageDlg('Nama syarat lainnya diisi
dong.....!!!',
mtInformation, [mbOK], 0);
EdtNamaSyarat.SetFocus;
Exit;
end;

with DM.Query do
begin
try
Close;
SQL.Clear;
SQL.Add(
' INSERT INTO LAIN (NOLAIN, NAMALAIN)
'+
' VALUES (GEN_ID(ID_LAIN, 1), :nama)
');
ParamByName('nama').AsString :=
UpperCase(EdtNamaSyarat.Text);

67
ExecSQL;
except
MessageDlg('Syarat '+ EdtNamaSyarat.Text
+ ' sudah ada',
mtInformation,[mbOK],0);
EdtNamaSyarat.SetFocus;
exit;
end;

if DM.IBTrans.Active = false then


DM.IBTrans.Active := true;
DM.IBTrans.CommitRetaining;
Application.ProcessMessages;
end;
TampilSyarat;
BtnBersihSyarat.Click;
end;

procedure TFrmMain.BtnGantiSyaratClick(Sender:
TObject);
begin
if EdtNamaSyarat.Text = '' then
begin
MessageDlg('Nama syarat lainnya diisi
dong.....!!!',
mtInformation, [mbOK], 0);
EdtNamaSyarat.SetFocus;
Exit;
end;

with DM.Query do
begin
try
Close;
SQL.Clear;
SQL.Add(

68
' update lain set namalain = :nama
where nolain = '+

LVDaftarSyarat.Selected.SubItems.Strings[0]);
ParamByName('nama').AsString :=
UpperCase(EdtNamaSyarat.Text);
ExecSQL;
except
MessageDlg('Syarat '+ EdtNamaSyarat.Text
+ ' sudah ada',
mtInformation,[mbOK],0);
EdtNamaSyarat.SetFocus;
exit;
end;

if DM.IBTrans.Active = false then


DM.IBTrans.Active := true;
DM.IBTrans.CommitRetaining;
Application.ProcessMessages;
end;
TampilSyarat;
BtnBersihSyarat.Click;
end;

procedure TFrmMain.BtnHapusSyaratClick(Sender:
TObject);
begin
with DM.Query do
begin
Close;
SQL.Clear;
SQL.Add(' delete from lain where nolain =
'+

LVDaftarSyarat.Selected.SubItems.Strings[0]);
ExecSQL;
if DM.IBTrans.Active = false then

69
DM.IBTrans.Active := true;
DM.IBTrans.CommitRetaining;
end;
TampilSyarat;
BtnBersihSyarat.Click;
end;

procedure TFrmMain.BtnBersihSyaratClick(Sender:
TObject);
begin
EdtNamaSyarat.Text := '';
BtnTambahSyarat.Enabled := true;
BtnGantiSyarat.Enabled := false;
BtnHapusSyarat.Enabled := false;
EdtNamaSyarat.SetFocus;
end;

procedure TFrmMain.BtnTutupSyaratClick(Sender:
TObject);
begin
BtnUtama.ActivePage := BPTentang;
Frame.ActivePage := PTentang;
BtnTentang.Show;
end;

procedure
TFrmMain.LVDaftarSyaratDblClick(Sender:
TObject);
begin
if LVDaftarSyarat.SelCount = 0 then exit;
EdtNamaSyarat.Text :=
LVDaftarSyarat.Selected.Caption;
BtnTambahSyarat.Enabled := false;
BtnGantiSyarat.Enabled := true;
BtnHapusSyarat.Enabled := true;
EdtNamaSyarat.SetFocus;
end;

70
procedure
TFrmMain.LVDaftarSyaratKeyPress(Sender:
TObject;
var Key: Char);
begin
if key = #13 then
begin
key := #0;
LVDaftarSyarat.OnDblClick(sender);
end;
end;

procedure
TFrmMain.EdtNamaEpilepsiKeyPress(Sender:
TObject;
var Key: Char);
begin
if Key = #13 then
begin
Key := #0;
if BtnTambahEpilepsi.Enabled = true then
BtnTambahEpilepsi.SetFocus
else BtnGantiEpilepsi.SetFocus;
end;
end;

procedure
TFrmMain.BtnTambahEpilepsiClick(Sender:
TObject);
begin
if EdtNamaEpilepsi.Text = '' then begin
MessageDlg('Nama epilepsinya diisi
dong.....!!!',
mtInformation, [mbOK], 0);
EdtNamaEpilepsi.SetFocus;
Exit;

71
end;

with DM.Query do
begin
try
Close;
SQL.Clear;
SQL.Add(
' INSERT INTO EPILEPSI (NOEPILEPSI,
NAMAEPILEPSI) '+
' VALUES (GEN_ID(ID_EPILEPSI,1),
:nama)');
ParamByName('nama').AsString :=
UpperCase(EdtNamaEpilepsi.Text);
ExecSQL;
except
MessageDlg('Epilepsi '+
EdtNamaEpilepsi.Text + ' sudah ada',
mtInformation,[mbOK],0);
EdtNamaEpilepsi.SetFocus;
exit;
end;

if DM.IBTrans.Active = false then


DM.IBTrans.Active := true;
DM.IBTrans.CommitRetaining;
Application.ProcessMessages;
end;
TampilEpilepsi;
BtnBersihEpilepsi.Click;
end;

procedure
TFrmMain.BtnGantiEpilepsiClick(Sender:
TObject);
begin
if EdtNamaEpilepsi.Text = '' then

72
begin
MessageDlg('Nama Epilepsinya diisi
dong.....!!!',
mtInformation, [mbOK], 0);
EdtNamaEpilepsi.SetFocus;
Exit;
end;

with DM.Query do
begin
try
Close;
SQL.Clear;
SQL.Add(' UPDATE EPILEPSI SET
NAMAEPILEPSI = :nama '+
' WHERE NOEPILEPSI = '+

LvDaftarEpilepsi.Selected.SubItems.Strings[0]);
ParamByName('nama').AsString :=
UpperCase(EdtNamaEpilepsi.Text);
ExecSQL;
except
MessageDlg('Epilepsi '+
EdtNamaEpilepsi.Text + ' sudah ada',
mtInformation,[mbOK],0);
EdtNamaEpilepsi.SetFocus;
exit;
end;

if DM.IBTrans.Active = false then


DM.IBTrans.Active := true;
DM.IBTrans.CommitRetaining;
Application.ProcessMessages;
end;
TampilEpilepsi;
BtnBersihEpilepsi.Click;
end;

73
procedure
TFrmMain.BtnHapusEpilepsiClick(Sender:
TObject);
begin
with DM.Query do
begin
Close;
SQL.Clear;
SQL.Add(
' DELETE FROM EPILEPSI WHERE NOEPILEPSI =
'+

LvDaftarEpilepsi.Selected.SubItems.Strings[0]);
ExecSQL;
if DM.IBTrans.Active = false then
DM.IBTrans.Active := true;
DM.IBTrans.CommitRetaining;
end;
TampilEpilepsi;
BtnBersihEpilepsi.Click;
end;

procedure
TFrmMain.BtnBersihEpilepsiClick(Sender:
TObject);
begin
EdtNamaEpilepsi.Text := '';
BtnTambahEpilepsi.Enabled := true;
BtnGantiEpilepsi.Enabled := false;
BtnHapusEpilepsi.Enabled := false;
EdtNamaEpilepsi.SetFocus;
end;

procedure
TFrmMain.BtnTutupEpilepsiClick(Sender:
TObject);

74
begin
BtnUtama.ActivePage := BPTentang;
Frame.ActivePage := PTentang;
BtnTentang.Show;
end;

procedure
TFrmMain.LvDaftarEpilepsiDblClick(Sender:
TObject);
begin
if LvDaftarEpilepsi.SelCount = 0 then exit;
EdtNamaEpilepsi.Text :=
LvDaftarEpilepsi.Selected.Caption;
BtnTambahEpilepsi.Enabled := false;
BtnGantiEpilepsi.Enabled := true;
BtnHapusEpilepsi.Enabled := true;
EdtNamaEpilepsi.SetFocus;
end;
procedure
TFrmMain.LvDaftarEpilepsiKeyPress(Sender:
TObject;
var Key: Char);
begin
if key = #13 then
begin
key := #0;
LvDaftarEpilepsi.OnDblClick(Sender);
end;
end;

procedure
TFrmMain.EdtNamaNonEpilepsiKeyPress(Sender:
TObject;
var Key: Char);
begin
if Key = #13 then
begin

75
Key := #0;
if BtnTambahNonEpilepsi.Enabled = true then
BtnTambahNonEpilepsi.SetFocus
else BtnGantiNonEpilepsi.SetFocus;
end;
end;

procedure
TFrmMain.BtnTambahNonEpilepsiClick(Sender:
TObject);
begin
if EdtNamaNonEpilepsi.Text = '' then
begin
MessageDlg('Nama penyakitnya diisi
dong.....!!!',
mtInformation, [mbOK], 0);
EdtNamaNonEpilepsi.SetFocus;
Exit;
end;

with DM.Query do
begin
try
Close;
SQL.Clear;
SQL.Add(
' INSERT INTO NONEPILEPSI '+
' (NONONEPILEPSI, NAMANONEPILEPSI) '+
' VALUES (GEN_ID(ID_NONEPILEPSI,1),
:nama)');
ParamByName('nama').AsString :=
UpperCase(EdtNamaNonEpilepsi.Text);
ExecSQL;
except
MessageDlg('Penyakit '+
EdtNamaNonEpilepsi.Text + ' sudah ada',
mtInformation,[mbOK],0);

76
EdtNamaNonEpilepsi.SetFocus;
exit;
end;
if DM.IBTrans.Active = false then
DM.IBTrans.Active := true;
DM.IBTrans.CommitRetaining;
Application.ProcessMessages;
end;
TampilNonEpilepsi;
BtnBersihNonEpilepsi.Click;
end;

procedure
TFrmMain.BtnGantiNonEpilepsiClick(Sender:
TObject);
begin
if EdtNamaNonEpilepsi.Text = '' then
begin
MessageDlg('Nama Penyakitnya diisi
dong.....!!!',
mtInformation, [mbOK], 0);
EdtNamaNonEpilepsi.SetFocus;
Exit;
end;

with DM.Query do
begin
try
Close;
SQL.Clear;
SQL.ADD(' UPDATE NONEPILEPSI SET '+
' NAMANONEPILEPSI = :nama '+
' WHERE NONONEPILEPSI = '+

LVDaftarNonEpilepsi.Selected.SubItems.Strings[0
]);
ParamByName('nama').AsString :=

77
UpperCase(EdtNamaNonEpilepsi.Text);
ExecSQL;
except
MessageDlg('Penyakit '+
EdtNamaNonEpilepsi.Text +
' sudah ada',mtInformation,[mbOK],0);
EdtNamaNonEpilepsi.SetFocus;
exit;
end;
if DM.IBTrans.Active = false then
DM.IBTrans.Active := true;
DM.IBTrans.CommitRetaining;
Application.ProcessMessages;
end;
TampilNonEpilepsi;
BtnBersihNEpilepsi.Click;
end;

procedure
TFrmMain.BtnHapusNonEpilepsiClick(Sender:
TObject);
begin
with DM.Query do
begin
Close;
SQL.Clear;
SQL.Add(' DELETE FROM NONEPILEPSI WHERE
NONONEPILEPSI = '+

LVDaftarNonEpilepsi.Selected.SubItems.Strings[0
]);
ExecSQL;
if DM.IBTrans.Active = false then
DM.IBTrans.Active := true;
DM.IBTrans.CommitRetaining;
end;
TampilNonEpilepsi;

78
BtnBersihNEpilepsi.Click;
end;
procedure
TFrmMain.BtnBersihNonEpilepsiClick(Sender:
TObject);
begin
EdtNamaNonEpilepsi.Text := '';
BtnTambahNonEpilepsi.Enabled := true;
BtnGantiNonEpilepsi.Enabled := false;
BtnHapusNonEpilepsi.Enabled := false;
EdtNamaNonEpilepsi.SetFocus;
end;

procedure
TFrmMain.BtnTutupNonEpilepsiClick(Sender:
TObject);
begin
BtnUtama.ActivePage := BPTentang;
Frame.ActivePage := PTentang;
BtnTentang.Show;
end;

procedure
TFrmMain.LVDaftarNonEpilepsiDblClick(Sender:
TObject);
begin
if LVDaftarNonEpilepsi.SelCount = 0 then
exit;
EdtNamaNonEpilepsi.Text :=
LVDaftarNonEpilepsi.Selected.Caption;
BtnTambahNonEpilepsi.Enabled := false;
BtnGantiNonEpilepsi.Enabled := true;
BtnHapusNonEpilepsi.Enabled := true;
EdtNamaNonEpilepsi.SetFocus;
end;

79
procedure
TFrmMain.LVDaftarNonEpilepsiKeyPress(Sender:
TObject;
var Key: Char);
begin
if key = #13 then
begin
key := #0;
LVDaftarNonEpilepsi.OnDblClick(Sender);
end;
end;

procedure TFrmMain.EdtNamaObatKeyPress(Sender:
TObject;
var Key: Char);
begin
if Key = #13 then
begin
Key := #0;
EdtDosisObat.SetFocus;
end;
end;

procedure TFrmMain.EdtDosisObatKeyPress(Sender:
TObject;
var Key: Char);
begin
if Key = #13 then
begin
Key := #0;
EdtEF1Obat.SetFocus;
end;
end;
procedure TFrmMain.EdtEF1ObatKeyPress(Sender:
TObject;
var Key: Char);
begin

80
if Key = #13 then
begin
Key := #0;
EdtEF2Obat.SetFocus;
end;
end;

procedure TFrmMain.EdtEF2ObatKeyPress(Sender:
TObject;
var Key: Char);
begin
if Key = #13 then
begin
Key := #0;
EDTLaranganObat.SetFocus;
end;
end;

procedure
TFrmMain.EDTLaranganObatKeyPress(Sender:
TObject;
var Key: Char);
begin
if Key = #13 then
begin
Key := #0;
EdtHargaObat.SetFocus;
end;
end;

procedure TFrmMain.EdtHargaObatKeyPress(Sender:
TObject;
var Key: Char);
begin
if Key = #13 then
begin
Key := #0;

81
if BtnTambahObat.Enabled = true then
BtnTambahObat.SetFocus
else BtnGantiObat.SetFocus;
end;
end;

procedure TFrmMain.BtnTambahObatClick(Sender:
TObject);
begin
if EdtNamaObat.Text = '' then
begin
MessageDlg('Nama obatnya diisi
dong.....!!!',
mtInformation, [mbOK], 0);
EdtNamaObat.SetFocus;
Exit;
end;

with DM.Query do
begin
try
Close;
SQL.Clear;
SQL.Add(' INSERT INTO OBAT (NOOBAT,
NAMAOBAT, DOSIS,'+
' ES1, ES2, LARANGAN, HARGA) '+
' VALUES (GEN_ID(ID_OBAT,1), :nama,
:dosis, '+
' :es1, :es2, :larangan, :harga)');
ParamByName('nama').AsString :=
UpperCase(trim(EdtNamaObat.Text));
ParamByName('dosis').AsString :=
trim(EdtDosisObat.Text);
ParamByName('es1').AsString :=
trim(EdtEF1Obat.Text);
ParamByName('es2').AsString :=
trim(EdtEF2Obat.Text);

82
ParamByName('larangan').AsString :=
trim(EDTLaranganObat.Text);
ParamByName('harga').AsString :=
trim(EdtHargaObat.Text);
ExecSQL;
except
MessageDlg('OBAT '+ EdtNamaObat.Text + '
sudah ada',
mtInformation,[mbOK],0);
EdtNamaObat.SetFocus;
exit;
end;

if DM.IBTrans.Active = false then


DM.IBTrans.Active := true;
DM.IBTrans.CommitRetaining;
Application.ProcessMessages;
end;
TampilObat;
BtnBersihObat.Click;
end;

procedure TFrmMain.BtnGantiObatClick(Sender:
TObject);
begin
if EdtNamaObat.Text = '' then
begin
MessageDlg('Nama obatnya diisi
dong.....!!!',
mtInformation, [mbOK], 0);
EdtNamaObat.SetFocus;
Exit;
end;

with DM.Query do
begin
try

83
Close;
SQL.Clear;
SQL.Add(' UPDATE OBAT SET '+
' NAMAOBAT = :nama, dosis = :dosis, '+
' ES1 = :es1, ES2 = :es2, LARANGAN =
:larangan, '+
' HARGA = :harga '+
' WHERE NOOBAT = '+

LVDaftarObat.Selected.SubItems.Strings[1]);
ParamByName('nama').AsString :=
UpperCase(trim(EdtNamaObat.Text));
ParamByName('dosis').AsString :=
trim(EdtDosisObat.Text);
ParamByName('es1').AsString :=
trim(EdtEF1Obat.Text);
ParamByName('es2').AsString :=
trim(EdtEF2Obat.Text);
ParamByName('larangan').AsString :=
trim(EDTLaranganObat.Text);
ParamByName('harga').AsString :=
trim(EdtHargaObat.Text);
ExecSQL;
except
MessageDlg('OBAT '+ EdtNamaObat.Text + '
sudah ada',
mtInformation,[mbOK],0);
EdtNamaObat.SetFocus;
exit;
end;

if DM.IBTrans.Active = false then


DM.IBTrans.Active := true;
DM.IBTrans.CommitRetaining;
Application.ProcessMessages;
end;
TampilObat;

84
BtnBersihObat.Click;
end;

procedure TFrmMain.BtnHapusObatClick(Sender:
TObject);
begin
with DM.Query do
begin
Close;
SQL.Clear;
SQL.Add(' DELETE FROM OBAT WHERE NOOBAT =
'+

LVDaftarObat.Selected.SubItems.Strings[1]);
ExecSQL;
if DM.IBTrans.Active = false then
DM.IBTrans.Active := true;
DM.IBTrans.CommitRetaining;
end;
TampilObat;
BtnBersihObat.Click;
end;

procedure TFrmMain.BtnBersihObatClick(Sender:
TObject);
begin
EdtNamaObat.Text := '';
EdtDosisObat.Text := '';
EdtEF1Obat.Text := '';
EdtEF2Obat.Text := '';
EDTLaranganObat.Text := '';
EdtHargaObat.Text := '';
BtnTambahObat.Enabled := true;
BtnGantiObat.Enabled := false;
BtnHapusObat.Enabled := false;
EdtNamaObat.SetFocus;
end;

85
procedure TFrmMain.BtnTutupObatClick(Sender:
TObject);
begin
BtnUtama.ActivePage := BPTentang;
Frame.ActivePage := PTentang;
BtnTentang.Show;
end;
procedure TFrmMain.LVDaftarObatDblClick(Sender:
TObject);
begin
if LVDaftarObat.SelCount = 0 then exit;
if LVDaftarObat.Selected.SubItems.Strings[1]
= '' then
exit;
with DM.Query do
begin
Close;
SQL.Clear;
SQL.Add(' SELECT * FROM OBAT '+
' WHERE NOOBAT = ' +

LVDaftarObat.Selected.SubItems.Strings[1]);
Open;

if IsEmpty then exit;

EdtNamaObat.Text :=
FieldByName('namaobat').AsString;
EdtDosisObat.Text :=
FieldByName('dosis').AsString;
EdtEF1Obat.Text :=
FieldByName('es1').AsString;
EdtEF2Obat.Text :=
FieldByName('es2').AsString;
EDTLaranganObat.Text :=
FieldByName('larangan').AsString;

86
EdtHargaObat.Text :=
FieldByName('harga').AsString;
end;
BtnTambahObat.Enabled := false;
BtnGantiObat.Enabled := true;
BtnHapusObat.Enabled := true;
EdtNamaObat.SetFocus;
end;

procedure TFrmMain.LVDaftarObatKeyPress(Sender:
TObject;
var Key: Char);
begin
if key = #13 then
begin
key := #0;
LVDaftarObat.OnDblClick(Sender);
end;
end;

procedure TFrmMain.CmbSawanGSKeyDown(Sender:
TObject;
var Key: Word; Shift: TShiftState);
begin
if Key = (VK_DELETE) then
begin
key := 0;
exit;
end;
end;

procedure TFrmMain.CmbSawanGSKeyPress(Sender:
TObject;
var Key: Char);
begin
FrmCampuran.PilihEdit(CmbSawanGS, EdtCFGS,
Key);

87
end;

88
procedure TFrmMain.EdtCFGSExit(Sender:
TObject);
begin
FrmCampuran.ExitCF(EdtCFGS);
end;

procedure TFrmMain.EdtCFGSKeyPress(Sender:
TObject;
var Key: Char);
begin
if key = #13 then
begin
Key := #0;
CmbGejalaGS.SetFocus;
end else if not ((key in ['0' .. '9'])
or (key = #8) or (key = #46)
or (key = #44)) then key := #0;
end;

procedure TFrmMain.CmbGejalaGSKeyDown(Sender:
TObject;
var Key: Word; Shift: TShiftState);
begin
if Key = (VK_DELETE) then
begin
key := 0;
exit;
end;
end;

procedure TFrmMain.CmbGejalaGSKeyPress(Sender:
TObject;
var Key: Char);
begin
FrmCampuran.PilihButton(CmbGejalaGS,
BtnMasukGS, Key);
end;

89
procedure TFrmMain.BtnMasukGSClick(Sender:
TObject);
var Daftar : TlistItem;
begin
if CmbGejalaGS.ItemIndex = -1 then
begin
MessageDlg('Gejala belum dipilih
lho....!!!',
mtInformation, [mbOK], 0);
CmbGejalaGS.SetFocus;
exit;
end;
LblJikaGS.Caption := 'DAN';

Daftar := LVGS.Items.Add;
if LVGS.Items.Count <= 1 then
Daftar.Caption := 'JIKA mengalami gejala '
+
CmbGejalaGS.Text
else Daftar.Caption := 'DAN mengalami gejala
' +
CmbGejalaGS.Text;
Daftar.SubItems.
Add(KodeGejalaGS.Strings[NamaGejalaGS.
IndexOf(CmbGejalaGS.Text)]);
//kodegejala

CmbGejalaGS.Items.Delete(CmbGejalaGS.ItemIndex)
;
CmbGejalaGS.Text := '';
CmbGejalaGS.ItemIndex := -1;
CmbGejalaGS.SetFocus;
end;

procedure TFrmMain.BtnTambahGSClick(Sender:
TObject);

90
var i : integer;
begin
if CmbSawanGS.Text = '' then
begin
MessageDlg('NAMA SAWAN belum dipilih!',
mtInformation, [mbOK], 0);
CmbSawanGS.SetFocus;
Exit;
end;

if LVGS.Items.Count < 1 then


begin
MessageDlg('GEJALA belum dimasukkan
daftar !',
mtInformation, [mbOK], 0);
CmbGejalaGS.SetFocus;
Exit;
end;

with DM.Query, FrmCampuran do


begin
Close;
SQL.Clear;
SQL.Add(
' INSERT INTO GEJALASAWAN '+
' (RULE, NOSAWAN, CFSAWAN, NOGEJALA) '+
' VALUES (GEN_ID(ID_RULE,1), '+
KodeSawanGS.Strings[NamaSawanGS.
IndexOf(CmbSawanGS.Text)] + ', ' +
IBCF(EdtCFGS) + ', '+
LVGS.Items[0].SubItems.Strings[0] +
')');
ExecSQL;

for i := 1 to LVGS.Items.Count - 1 do
begin
try

91
Close;
SQL.Clear;
SQL.Add(
' INSERT INTO GEJALASAWAN '+
' (RULE, NOSAWAN, CFSAWAN, NOGEJALA)
'+
' VALUES (GEN_ID(ID_RULE,0), '+
KodeSawanGS.Strings[NamaSawanGS.
IndexOf(CmbSawanGS.Text)] + ', ' +
IBCF(EdtCFGS) + ', '+
LVGS.Items[i].SubItems.Strings[0] +
')');
ExecSQL;
except
end;
end;
end;
if DM.IBTrans.Active = false then
DM.IBTrans.Active := true;
DM.IBTrans.CommitRetaining;
Application.ProcessMessages;
BtnBersihGS.Click;
end;

procedure TFrmMain.BtnBersihGSClick(Sender:
TObject);
begin
CmbSawanGS.ItemIndex := -1;
EdtCFGS.Text := '';
LVGS.Items.Clear;
LblJikaGS.Caption := 'JIKA';
CmbGejalaGS.Items.Clear;
CmbGejalaGS.Items.Assign(NamaGejalaGS);
CmbGejalaGS.ItemIndex := -1;
CmbSawanGS.SetFocus;
end;

92
procedure TFrmMain.BtnTutupGSClick(Sender:
TObject);
begin
BtnUtama.ActivePage := BPTentang;
Frame.ActivePage := PTentang;
BtnTentang.Show;
end;

procedure TFrmMain.CmbEpilepsiAEpilepsiKeyDown(
Sender: TObject; var Key: Word; Shift:
TShiftState);
begin
if Key = (VK_DELETE) then
begin
key := 0;
exit;
end;
end;

procedure
TFrmMain.CmbEpilepsiAEpilepsiKeyPress(
Sender: TObject; var Key: Char);
begin
FrmCampuran.PilihEdit(CmbEpilepsiAEpilepsi,
EdtCFEpilepsi, Key);
end;

procedure TFrmMain.EdtCFEpilepsiExit(Sender:
TObject);
begin
FrmCampuran.ExitCF(EdtCFEpilepsi);
end;

procedure
TFrmMain.EdtCFEpilepsiKeyPress(Sender: TObject;
var Key: Char);
begin

93
if key = #13 then
begin
Key := #0;
PCEpilepsi.ActivePage := TSSawanEpilepsi;
CmbSawanEpilepsi.SetFocus;
end else if not ((key in ['0' .. '9'])
or (key = #8)
or (key = #46)
or (key = #44)) then key := #0;
end;

procedure
TFrmMain.CmbSawanEpilepsiKeyDown(Sender:
TObject;
var Key: Word; Shift: TShiftState);
begin
if Key = (VK_DELETE) then
begin
key := 0;
exit;
end;
end;

procedure
TFrmMain.CmbSawanEpilepsiKeyPress(Sender:
TObject;
var Key: Char);
begin
FrmCampuran.PilihButton(CmbSawanEpilepsi,
BtnMasukSEpilepsi, Key);
end;

procedure
TFrmMain.BtnMasukSEpilepsiClick(Sender:
TObject);
var Daftar : TlistItem;
begin

94
if CmbSawanEpilepsi.ItemIndex = -1 then
begin
MessageDlg('SAWAN belum dipilih
lho....!!!',
mtInformation, [mbOK], 0);
CmbSawanEpilepsi.SetFocus;
exit;
end;
LblJikaAEpilepsi.Caption := 'DAN';

Daftar := LVEpilepsi.Items.Add;
if LVEpilepsi.Items.Count <= 1 then
Daftar.Caption := 'JIKA mengalami sawan '
+
CmbSawanEpilepsi.Text
else Daftar.Caption := 'DAN mengalami sawan '
+
CmbSawanEpilepsi.Text;
Daftar.SubItems.Add('0'); //masuk ke penyakit
Daftar.SubItems.
Add(KodeSawanAE.Strings[NamaSawanAE.
IndexOf(CmbSawanEpilepsi.Text)]);
//kodesawan
CmbSawanEpilepsi.Items.Delete(
CmbSawanEpilepsi.ItemIndex);
CmbSawanEpilepsi.ItemIndex := -1;
CmbSawanEpilepsi.SetFocus;
end;

95
procedure
TFrmMain.CmbSyaratEpilepsiKeyDown(Sender:
TObject;
var Key: Word; Shift: TShiftState);
begin
if Key = (VK_DELETE) then
begin
key := 0;
exit;
end;
end;
procedure
TFrmMain.CmbSyaratEpilepsiKeyPress(Sender:
TObject;
var Key: Char);
begin
FrmCampuran.PilihEdit(CmbSyaratEpilepsi,
EdtNilaiAEpilepsi, Key);
end;

procedure
TFrmMain.EdtNilaiAEpilepsiKeyPress(Sender:
TObject;
var Key: Char);
begin
if key = #13 then
begin
Key := #0;
BtnMasukLEpilepsi.SetFocus;
end;
end;

procedure
TFrmMain.BtnMasukLEpilepsiClick(Sender:
TObject);
var Daftar : TlistItem;
begin

96
if CmbSyaratEpilepsi.ItemIndex = -1 then
begin
MessageDlg('SYARAT LAIN belum dipilih
lho....!!!',
mtInformation, [mbOK], 0);
CmbSyaratEpilepsi.SetFocus;
exit;
end;
LblJikaAEpilepsi.Caption := 'DAN';
Daftar := LVEpilepsi.Items.Add;
if LVEpilepsi.Items.Count <= 1 then
Daftar.Caption := 'JIKA ' +
CmbSyaratEpilepsi.Text + ' : ' +
EdtNilaiAEpilepsi.Text
else Daftar.Caption := 'DAN ' +
CmbSyaratEpilepsi.Text + ' : ' +
EdtNilaiAEpilepsi.Text;
Daftar.SubItems.Add('1'); //masuk ke final
Daftar.SubItems.
Add(KodeSyaratAE.Strings[NamaSyaratAE.
IndexOf(CmbSyaratEpilepsi.Text)]);
//kodesyarat

Daftar.SubItems.Add(EdtNilaiAEpilepsi.Text); //
nilai
CmbSyaratEpilepsi.Items.Delete(
CmbSyaratEpilepsi.ItemIndex);
CmbSyaratEpilepsi.ItemIndex := -1;
EdtNilaiAEpilepsi.Text := '';
CmbSyaratEpilepsi.SetFocus;
end;

procedure
TFrmMain.BtnTambahAEpilepsiClick(Sender:
TObject);
var i : integer;
begin

97
if CmbEpilepsiAEpilepsi.Text = '' then
begin
MessageDlg('EPILEPSI belum dipilih!',
mtInformation, [mbOK], 0);
CmbEpilepsiAEpilepsi.SetFocus;
Exit;
end;

if LVEpilepsi.Items.Count < 1 then


begin
MessageDlg('SAWAN/SYARAT belum dimasukkan
daftar !',
mtInformation, [mbOK], 0);
PCEpilepsi.ActivePage := TSSawanEpilepsi;
CmbSawanEpilepsi.SetFocus;
Exit;
end;

with DM.Query, FrmCampuran do


begin
Close;
SQL.Clear;
if LVEpilepsi.Items[0].SubItems.Strings[0]
= '0' then
SQL.Add(
' INSERT INTO PENYAKIT '+
' (RULE, NOEPILEPSI, CFEPILEPSI,
NOSAWAN) '+
' VALUES (GEN_ID(ID_RULE,1), '+
KodeEpilepsiAE.Strings[NamaEpilepsiAE.
IndexOf(CmbEpilepsiAEpilepsi.Text)] +
', ' + IBCF(EdtCFEpilepsi) + ', '+
LVEpilepsi.Items[0].SubItems.Strings[1]
+ ')')
else
begin
SQL.Add(

98
' INSERT INTO FINAL '+
' (RULE, NOEPILEPSI, CFEPILEPSI,
NOLAIN, NILAI) '+
' VALUES (GEN_ID(ID_RULE,1), '+
KodeEpilepsiAE.Strings[NamaEpilepsiAE.
IndexOf(CmbEpilepsiAEpilepsi.Text)] +
', ' + IBCF(EdtCFEpilepsi) + ', '+
LVEpilepsi.Items[0].
SubItems.Strings[1] + ', :nilai )');
ParamByName('nilai').AsString :=

LVEpilepsi.Items[0].SubItems.Strings[2];
end;
ExecSQL;

for i := 1 to LVEpilepsi.Items.Count - 1 do
begin
try
Close;
SQL.Clear;
if
LVEpilepsi.Items[i].SubItems.Strings[0] = '0'
then
SQL.Add(
' INSERT INTO PENYAKIT '+
' (RULE, NOEPILEPSI, CFEPILEPSI,
NOSAWAN) '+
' VALUES (GEN_ID(ID_RULE,0), '+

KodeEpilepsiAE.Strings[NamaEpilepsiAE.

IndexOf(CmbEpilepsiAEpilepsi.Text)] +
', ' + IBCF(EdtCFEpilepsi) + ', '+

LVEpilepsi.Items[i].SubItems.Strings[1] + ')')
else
begin

99
SQL.Add(
' INSERT INTO FINAL '+
' (RULE, NOEPILEPSI, CFEPILEPSI,
NOLAIN, NILAI) '+
' VALUES (GEN_ID(ID_RULE,0), '+

KodeEpilepsiAE.Strings[NamaEpilepsiAE.

IndexOf(CmbEpilepsiAEpilepsi.Text)] +
', ' + IBCF(EdtCFEpilepsi) + ', '+

LVEpilepsi.Items[i].SubItems.Strings[1] +
', :nilai )');
ParamByName('nilai').AsString :=

LVEpilepsi.Items[i].SubItems.Strings[2];
end;
ExecSQL;
except
end;
end;
end;
if DM.IBTrans.Active = false then
DM.IBTrans.Active := true;
DM.IBTrans.CommitRetaining;
Application.ProcessMessages;
BtnBersihAEpilepsi.Click;
end;

procedure
TFrmMain.BtnBersihAEpilepsiClick(Sender:
TObject);
begin
CmbEpilepsiAEpilepsi.ItemIndex := -1;
EdtCFEpilepsi.Text := '';
LVEpilepsi.Items.Clear;
LblJikaAEpilepsi.Caption := 'JIKA';

100
PCEpilepsi.ActivePage := TSSawanEpilepsi;
CmbSawanEpilepsi.Items.Clear;
CmbSawanEpilepsi.Items.Assign(NamaSawanAE);
CmbSawanEpilepsi.ItemIndex := -1;
CmbSyaratEpilepsi.Items.Clear;
CmbSyaratEpilepsi.Items.Assign(NamaSyaratAE);
CmbSyaratEpilepsi.ItemIndex := -1;
EdtNilaiAEpilepsi.Text := '';
CmbEpilepsiAEpilepsi.SetFocus;
end;
procedure
TFrmMain.BtnTutupAEpilepsiClick(Sender:
TObject);
begin
BtnUtama.ActivePage := BPTentang;
Frame.ActivePage := PTentang;
BtnTentang.Show;
end;

procedure
TFrmMain.CmbNEpilepsiNEKeyDown(Sender: TObject;
var Key: Word; Shift: TShiftState);
begin
if Key = (VK_DELETE) then
begin
key := 0;
exit;
end;
end;

procedure TFrmMain.CmbNEpilepsiNEKeyPress(
Sender: TObject; var Key: Char);
begin
FrmCampuran.PilihEdit(CmbNEpilepsiNE,
EdtCFNEpilepsi, Key);
end;

101
procedure TFrmMain.EdtCFNEpilepsiExit(Sender:
TObject);
begin
FrmCampuran.ExitCF(EdtCFNEpilepsi);
end;

procedure
TFrmMain.EdtCFNEpilepsiKeyPress(Sender:
TObject;
var Key: Char);
begin
if key = #13 then
begin
Key := #0;
PCNEpilepsi.ActivePage :=
TSGejalaNEpilepsi;
CmbGejalaNEpilepsi.SetFocus;
end else if not ((key in ['0' .. '9'])
or (key = #8)
or (key = #46)
or (key = #44)) then key := #0;
end;

procedure
TFrmMain.CmbGejalaNEpilepsiKeyPress(Sender:
TObject;
var Key: Char);
begin
FrmCampuran.PilihButton(CmbGejalaNEpilepsi,
BtnMasukGejalaNEpilepsi,Key)
end;

procedure
TFrmMain.BtnMasukGejalaNEpilepsiClick(Sender:
TObject);
var Daftar : TlistItem;
begin

102
if CmbGejalaNEpilepsi.ItemIndex = -1 then
begin
MessageDlg('GEJALA belum dipilih
lho....!!!',
mtInformation, [mbOK], 0);
CmbGejalaNEpilepsi.SetFocus;
exit;
end;
LblJikaNE.Caption := 'DAN';

Daftar := LVNEpilepsi.Items.Add;
if LVNEpilepsi.Items.Count <= 1 then
Daftar.Caption := 'JIKA mengalami gejala '
+
CmbGejalaNEpilepsi.Text
else Daftar.Caption := 'DAN mengalami gejala
' +
CmbGejalaNEpilepsi.Text;
Daftar.SubItems.Add('0'); //masuk ke
penyakitnoneipilepsi
Daftar.SubItems.
Add(KodeGejalaANE.Strings[NamaGejalaANE.
IndexOf(CmbGejalaNEpilepsi.Text)]);
//kodegejala

CmbGejalaNEpilepsi.Items.Delete(CmbGejalaNEpile
psi.ItemIndex);
CmbGejalaNEpilepsi.ItemIndex := -1;
CmbGejalaNEpilepsi.SetFocus;
end;

procedure
TFrmMain.CmbSyaratNEpilepsiKeyDown(Sender:
TObject;
var Key: Word; Shift: TShiftState);
begin

103
if Key = (VK_DELETE) then
begin
key := 0;
exit;
end;
end;

procedure
TFrmMain.CmbSyaratNEpilepsiKeyPress(Sender:
TObject;
var Key: Char);
begin
FrmCampuran.PilihEdit(CmbSyaratNEpilepsi,
EdtNilaiNEpilepsi, Key);
end;

procedure
TFrmMain.EdtNilaiNEpilepsiKeyPress(Sender:
TObject;
var Key: Char);
begin
if key = #13 then
begin
Key := #0;
BtnMasukNEpilepsi.SetFocus;
end;
end;

procedure
TFrmMain.BtnMasukNEpilepsiClick(Sender:
TObject);
var Daftar : TlistItem;
begin
if CmbSyaratNEpilepsi.ItemIndex = -1 then
begin
MessageDlg('SYARAT LAIN belum dipilih
lho....!!!',

104
mtInformation, [mbOK], 0);
CmbSyaratNEpilepsi.SetFocus;
exit;
end;
LblJikaNE.Caption := 'DAN';

Daftar := LVNEpilepsi.Items.Add;
if LVNEpilepsi.Items.Count <= 1 then
Daftar.Caption := 'JIKA ' +
CmbSyaratNEpilepsi.Text + ' : ' +
EdtNilaiNEpilepsi.Text
else Daftar.Caption := 'DAN ' +
CmbSyaratNEpilepsi.Text + ' : ' +
EdtNilaiNEpilepsi.Text;
Daftar.SubItems.Add('1'); //masuk ke finalnon
epilepsi
Daftar.SubItems.
Add(KodeSyaratANE.Strings[NamaSyaratANE.
IndexOf(CmbSyaratNEpilepsi.Text)]);
//kodesyarat

Daftar.SubItems.Add(EdtNilaiNEpilepsi.Text); //
nilai

CmbSyaratNEpilepsi.Items.Delete(CmbSyaratNEpile
psi.ItemIndex);
CmbSyaratNEpilepsi.ItemIndex := -1;
EdtNilaiNEpilepsi.Text := '';
CmbSyaratNEpilepsi.SetFocus;
end;

procedure
TFrmMain.BtnTambahNEpilepsiClick(Sender:
TObject);
var i : integer;
begin
if CmbNEpilepsiNE.Text = '' then

105
begin
MessageDlg('Penyakit Non EPILEPSI belum
dipilih!',
mtInformation, [mbOK], 0);
CmbNEpilepsiNE.SetFocus;
Exit;
end;

if LVNEpilepsi.Items.Count < 1 then


begin
MessageDlg('GEJALA/SYARAT belum dimasukkan
daftar !',
mtInformation, [mbOK], 0);
PCNEpilepsi.ActivePage :=
TSGejalaNEpilepsi;
CmbGejalaNEpilepsi.SetFocus;
Exit;
end;

with DM.Query, FrmCampuran do


begin
Close;
SQL.Clear;
if LVNEpilepsi.Items[0].SubItems.Strings[0]
= '0' then
SQL.Add(
' INSERT INTO PENYAKITNONEPILEPSI '+
' (RULE, NONONEPILEPSI, CFNONEPILEPSI,
NOGEJALA) '+
' VALUES (GEN_ID(ID_RULE,1), '+

KodeNEpilepsiANE.Strings[NamaNEpilepsiANE.
IndexOf(CmbNEpilepsiNE.Text)] +
', ' + IBCF(EdtCFNEpilepsi) + ', '+

LVNEpilepsi.Items[0].SubItems.Strings[1] + ')')
else

106
begin
SQL.Add(
' INSERT INTO FINALNONEPILEPSI '+
' (RULE, NONONEPILEPSI, CFNONEPILEPSI,
NOLAIN, NILAI) '+
' VALUES (GEN_ID(ID_RULE,1), '+

KodeNEpilepsiANE.Strings[NamaNEpilepsiANE.
IndexOf(CmbNEpilepsiNE.Text)] +
', ' + IBCF(EdtCFNEpilepsi) + ', '+

LVNEpilepsi.Items[0].SubItems.Strings[1] +
', :nilai )');
ParamByName('nilai').AsString :=

LVNEpilepsi.Items[0].SubItems.Strings[2];
end;
ExecSQL;

for i := 1 to LVNEpilepsi.Items.Count - 1
do
begin
try
Close;
SQL.Clear;
if
LVNEpilepsi.Items[i].SubItems.Strings[0] = '0'
then
SQL.Add(
' INSERT INTO PENYAKITNONEPILEPSI
'+
' (RULE, NONONEPILEPSI,
CFNONEPILEPSI, NOGEJALA) '+
' VALUES (GEN_ID(ID_RULE,0), '+

KodeNEpilepsiANE.Strings[NamaNEpilepsiANE.
IndexOf(CmbNEpilepsiNE.Text)] +

107
', ' + IBCF(EdtCFNEpilepsi) + ', '+

LVNEpilepsi.Items[i].SubItems.Strings[1] + ')')
else
begin
SQL.Add(
' INSERT INTO FINALNONEPILEPSI '+
' (RULE,NONONEPILEPSI,
CFNONEPILEPSI, NOLAIN, NILAI)'+
' VALUES (GEN_ID(ID_RULE,0), '+

KodeNEpilepsiANE.Strings[NamaNEpilepsiANE.
IndexOf(CmbNEpilepsiNE.Text)] +
', ' + IBCF(EdtCFNEpilepsi) + ', '+

LVNEpilepsi.Items[i].SubItems.Strings[1]+',:nil
ai)');
ParamByName('nilai').AsString :=

LVNEpilepsi.Items[i].SubItems.Strings[2];
end;
ExecSQL;
except
end;
end;
end;
if DM.IBTrans.Active = false then
DM.IBTrans.Active := true;
DM.IBTrans.CommitRetaining;
Application.ProcessMessages;
BtnBersihNEpilepsi.Click;
end;

procedure
TFrmMain.BtnBersihNEpilepsiClick(Sender:
TObject);
begin

108
CmbNEpilepsiNE.ItemIndex := -1;
EdtCFNEpilepsi.Text := '';
LVNEpilepsi.Items.Clear;
LblJikaNE.Caption := 'JIKA';
PCNEpilepsi.ActivePage := TSGejalaNEpilepsi;
CmbGejalaNEpilepsi.Items.Clear;

CmbGejalaNEpilepsi.Items.Assign(NamaGejalaANE);
CmbGejalaNEpilepsi.ItemIndex := -1;
CmbSyaratNEpilepsi.Items.Clear;

CmbSyaratNEpilepsi.Items.Assign(NamaSyaratANE);
CmbSyaratNEpilepsi.ItemIndex := -1;
EdtNilaiNEpilepsi.Text := '';
CmbNEpilepsiNE.SetFocus;
end;

procedure
TFrmMain.BtnTutupNEpilepsiClick(Sender:
TObject);
begin
BtnUtama.ActivePage := BPTentang;
Frame.ActivePage := PTentang;
BtnTentang.Show;
end;

procedure TFrmMain.CmbObatTEKeyDown(Sender:
TObject;
var Key: Word; Shift: TShiftState);
begin
if Key = (VK_DELETE) then
begin
key := 0;
exit;
end;
end;

109
procedure TFrmMain.CmbObatTEKeyPress(Sender:
TObject;
var Key: Char);
begin
FrmCampuran.PilihCombo(CmbObatTE,
CmbEpilepsiTE, Key);
end;

procedure TFrmMain.CmbEpilepsiTEKeyDown(Sender:
TObject;
var Key: Word; Shift: TShiftState);
begin
if Key = (VK_DELETE) then
begin
key := 0;
exit;
end;
end;

procedure
TFrmMain.CmbEpilepsiTEKeyPress(Sender: TObject;
var Key: Char);
begin
FrmCampuran.PilihEdit(CmbEpilepsiTE,
EdtCF1TE, Key);
end;

procedure TFrmMain.EdtCF1TEExit(Sender:
TObject);
begin
FrmCampuran.ExitCF(EdtCF1TE);
end;

110
procedure TFrmMain.EdtCF1TEKeyPress(Sender:
TObject;
var Key: Char);
begin
if key = #13 then
begin
Key := #0;
EdtCf2TE.SetFocus;
end else if not ((key in ['0' .. '9'])
or (key = #8)or (key = #46)
or (key = #44)) then key := #0;
end;

procedure TFrmMain.EdtCf2TEExit(Sender:
TObject);
begin
FrmCampuran.ExitCF(EdtCf2TE);
end;

procedure TFrmMain.EdtCf2TEKeyPress(Sender:
TObject;
var Key: Char);
begin
if key = #13 then
begin
Key := #0;
BtnTambahTE.SetFocus;
end else if not ((key in ['0' .. '9'])
or (key = #8) or (key = #46)
or (key = #44)) then key := #0;
end;

procedure TFrmMain.BtnTambahTEClick(Sender:
TObject);
begin
if CmbObatTE.Text = '' then
begin

111
MessageDlg('OBAT belum dipilih!',
mtInformation, [mbOK], 0);
CmbObatTE.SetFocus;
Exit;
end;

if CmbEpilepsiTE.Text = '' then


begin
MessageDlg('EPILEPSI belum dipilih!',
mtInformation, [mbOK], 0);
CmbEpilepsiTE.SetFocus;
Exit;
end;

with DM.Query do
begin
Close;
SQL.Clear;
SQL.Add(
' INSERT INTO TERAPI '+
' (RULE, NOOBAT, NOEPILEPSI, CFTOTAL1,
CFTOTAL2) '+
' VALUES (GEN_ID(ID_RULE,1), '+
KodeObatTE.Strings[NamaObatTE.
IndexOf(CmbObatTE.Text)] + ', ' +
KodeEpilepsiTE.Strings[NamaEpilepsiTE.
IndexOf(CmbEpilepsiTE.Text)] +
', ' + FrmCampuran.IBCF(EdtCF1TE) + ', '
+
FrmCampuran.IBCF(EdtCF2TE) + ')');
ExecSQL;
if DM.IBTrans.Active = false then
DM.IBTrans.Active := true;
DM.IBTrans.CommitRetaining;
Application.ProcessMessages;
BtnBersihTE.Click;
end;

112
end;

procedure TFrmMain.BtnBersihTEClick(Sender:
TObject);
begin
CmbObatTE.ItemIndex := -1;
CmbEpilepsiTE.ItemIndex := -1;
EdtCF1TE.Text := '';
EdtCf2TE.Text := '';
CmbObatTE.SetFocus;
end;

procedure TFrmMain.BtnTutupTEClick(Sender:
TObject);
begin
BtnUtama.ActivePage := BPTentang;
Frame.ActivePage := PTentang;
BtnTentang.Show;
end;

procedure TFrmMain.CmbObatNEKeyDown(Sender:
TObject;
var Key: Word; Shift: TShiftState);
begin
if Key = (VK_DELETE) then
begin
key := 0;
exit;
end;
end;

procedure TFrmMain.CmbObatNEKeyPress(Sender:
TObject;
var Key: Char);
begin
FrmCampuran.PilihCombo(CmbObatNE, CmbNETNE,
Key)

113
end;

procedure TFrmMain.CmbNETNEKeyDown(Sender:
TObject;
var Key: Word; Shift: TShiftState);
begin
if Key = (VK_DELETE) then
begin
key := 0;
exit;
end;
end;

procedure TFrmMain.CmbNETNEKeyPress(Sender:
TObject;
var Key: Char);
begin
FrmCampuran.PilihEdit(CmbNETNE, EdtCF1TNE,
Key)
end;

procedure TFrmMain.EdtCF1TNEExit(Sender:
TObject);
begin
FrmCampuran.ExitCF(EdtCF1TNE);
end;

procedure TFrmMain.EdtCF1TNEKeyPress(Sender:
TObject;
var Key: Char);
begin
if key = #13 then
begin
Key := #0;
EdtCF2TNE.SetFocus;
end else if not ((key in ['0' .. '9'])
or (key = #8)

114
or (key = #46)
or (key = #44)) then key := #0;
end;

procedure TFrmMain.EdtCF2TNEExit(Sender:
TObject);
begin
FrmCampuran.ExitCF(EdtCF2TNE);
end;

procedure TFrmMain.EdtCF2TNEKeyPress(Sender:
TObject;
var Key: Char);
begin
if key = #13 then
begin
Key := #0;
BtnTambahTNE.SetFocus;
end else if not ((key in ['0' .. '9'])
or (key = #8)
or (key = #46)
or (key = #44)) then key := #0;
end;

procedure TFrmMain.BtnTambahTNEClick(Sender:
TObject);
begin
if CmbObatNE.Text = '' then
begin
MessageDlg('OBAT belum dipilih!',
mtInformation, [mbOK], 0);
CmbObatNE.SetFocus;
Exit;
end;

if CmbNETNE.Text = '' then


begin

115
MessageDlg('PENYAKIT belum dipilih!',
mtInformation, [mbOK], 0);
CmbNETNE.SetFocus;
Exit;
end;

with DM.Query do
begin
Close;
SQL.Clear;
SQL.Add(
' INSERT INTO TERAPI '+
' (RULE, NOOBAT, NONONEPILEPSI, CFTOTAL1,
CFTOTAL2) '+
' VALUES (GEN_ID(ID_RULE,1), '+
KodeObatTNE.Strings[NamaObatTNE.
IndexOf(CmbObatNE.Text)] + ', ' +
KodeEpilepsiTNE.Strings[NamaEpilepsiTNE.
IndexOf(CmbNETNE.Text)] +
', ' + FrmCampuran.IBCF(EdtCF1TNE) + ', '
+
FrmCampuran.IBCF(EdtCF2TNE) + ')');
ExecSQL;
if DM.IBTrans.Active = false then
DM.IBTrans.Active := true;
DM.IBTrans.CommitRetaining;
Application.ProcessMessages;
BtnBersihTNE.Click;
end;
end;

procedure TFrmMain.BtnBersihTNEClick(Sender:
TObject);
begin
CmbObatNE.ItemIndex := -1;
CmbNEpilepsiNE.ItemIndex := -1;
EdtCF1TNE.Text := '';

116
EdtCF2TNE.Text := '';
CmbObatNE.SetFocus;
end;

procedure TFrmMain.BtnTutupTNEClick(Sender:
TObject);
begin
BtnUtama.ActivePage := BPTentang;
Frame.ActivePage := PTentang;
BtnTentang.Show;
end;

procedure
TFrmMain.CmbJenisAturanKeyDown(Sender: TObject;
var Key: Word; Shift: TShiftState);
begin
if Key = (VK_DELETE) then
begin
key := 0;
exit;
end;
end;

117
procedure TFrmMain.CmbJenisAturanKeyPress(
Sender: TObject; var Key: Char);
begin
FrmCampuran.PilihButton(CmbJenisAturan,
BtnTampilAturan, Key);
end;

procedure TFrmMain.LVDaftarAturanClick(Sender:
TObject);
begin
if (LVDaftarAturan.SelCount <> 0) and
(LVDaftarAturan.Selected.Caption <> '' )
then
BtnHapusAturan.Enabled := true
else BtnHapusAturan.Enabled := false;
end;

procedure
TFrmMain.LVDaftarAturanKeyPress(Sender:
TObject;
var Key: Char);
begin
LVDaftarAturan.OnClick(sender);
end;

procedure TFrmMain.BtnTampilAturanClick(Sender:
TObject);
var rule : string;
jumlah : integer;
epil : TListItem;

procedure GSawan;
begin
with DM.Query, FrmCampuran, LVDaftarAturan
do
begin
// cari dari gejala sawan

118
cariQ(' SELECT B.RULE, S.NAMASAWAN,
G.NAMAGEJALA, '+
' G.KETERANGAN, B.CFSAWAN '+
' FROM GEJALASAWAN B, SAWAN S, GEJALA G
'+
' WHERE B.NOGEJALA = G.NOGEJALA '+
' AND B.NOSAWAN = S.NOSAWAN '+
' ORDER BY B.RULE, S.NOSAWAN');

if not eof then


begin
epil := Items.Add;
epil.Caption := '';
epil.SubItems.
Add('A T U R A N G E J A L A - S A
W A N');
epil.SubItems.Add('');
epil.SubItems.Add('');
epil := Items.Add;
epil.Caption := '';
epil.SubItems.Add('');
epil.SubItems.Add('');
epil.SubItems.Add('');
end;

while not eof do


begin
inc(jumlah);
rule := FieldByName('Rule').AsString;
epil := Items.Add;
epil.Caption := 'Aturan ' +
FieldByName('Rule').AsString;
epil.SubItems.Add('Mengalami Sawan "' +
FieldByName('NamaSawan').AsString +
'" dengan CF '+
FormatFloat('0.00',
FieldByName('CFsawan').AsFloat));

119
epil.SubItems.Add(FieldByName('Rule').AsString)
;
epil.SubItems.Add('0'); // dari
gejalasawan

epil := Items.Add;
epil.Caption := '';
epil.SubItems.Add('JIKA mengalami
gejala '+

FieldByName('namagejala').AsString );

epil.SubItems.Add(FieldByName('Rule').AsString)
;
epil.SubItems.Add('0'); // dari
gejalasawan
DM.Query.next;

while (not eof) and


(FieldByName('Rule').AsString = rule)
do
begin
epil := Items.Add;
epil.Caption := '';
epil.SubItems.Add('DAN mengalami
gejala '+

FieldByName('namagejala').AsString );

epil.SubItems.Add(FieldByName('Rule').AsString)
;
epil.SubItems.Add('0'); // dari
gejalasawan
DM.Query.next;
end;
Application.ProcessMessages;

120
if Application.Terminated or
(BtnTampilAturan.Tag = 0) then
begin
pgbtampil.Visible := false;
Exit;
end;
if pgbtampil.Position < 1000 then
pgbtampil.Position :=
pgbtampil.Position + 1 else
pgbtampil.Position := 0;
end;
end;
end;

Procedure PEpilepsi;
begin
with DM.Query, FrmCampuran, LVDaftarAturan
do
begin

// cari dari penyakit


cariQ(' SELECT P.RULE, S.NAMASAWAN,
E.NAMAEPILEPSI, '+
' P.CFEPILEPSI '+
' FROM PENYAKIT P, SAWAN S, EPILEPSI
E'+
' WHERE P.NOEPILEPSI = E.NOEPILEPSI '+
' AND P.NOSAWAN = S.NOSAWAN '+
' ORDER BY E.NOEPILEPSI ');

if not eof then


begin
epil := Items.Add;
epil.Caption := '';
epil.SubItems.Add('');
epil.SubItems.Add('');
epil.SubItems.Add('');

121
epil := Items.Add;
epil.Caption := '';
epil.SubItems.
Add('A T U R A N P E N Y A K I T E
P I L E P S I');
epil.SubItems.Add('');
epil.SubItems.Add('');
epil := Items.Add;
epil.Caption := '';
epil.SubItems.Add('');
epil.SubItems.Add('');
epil.SubItems.Add('');
end;

while not eof do


begin
inc(jumlah);
rule := FieldByName('Rule').AsString;
epil := Items.Add;
epil.Caption := 'Aturan ' +
FieldByName('Rule').AsString;
epil.SubItems.Add('Menderita Epilepsi
"' +
FieldByName('NamaEpilepsi').AsString
+
'" dengan CF '+
FormatFloat('0.00',
FieldByName('CFEpilepsi').AsFloat));

epil.SubItems.Add(FieldByName('Rule').AsString)
;
epil.SubItems.Add('1'); // dari
penyakit

epil := Items.Add;
epil.Caption := '';

122
epil.SubItems.Add('JIKA mengalami sawan
'+

FieldByName('namasawan').AsString);

epil.SubItems.Add(FieldByName('Rule').AsString)
;
epil.SubItems.Add('1'); // dari
penyakit
DM.Query.next;

while (not eof) and


(FieldByName('Rule').AsString = rule)
do
begin
epil := Items.Add;
epil.Caption := '';
epil.SubItems.Add('DAN mengalami
sawan '+

FieldByName('namasawan').AsString);

epil.SubItems.Add(FieldByName('Rule').AsString)
;
epil.SubItems.Add('1'); // dari
penyakit
DM.Query.next;
end;

with DM.Query1 do
begin
cariQ1(' SELECT F.RULE, L.NAMALAIN,
'+
' E.NAMAEPILEPSI, F.CFEPILEPSI,
F.NILAI '+

123
' FROM FINAL F, PENYAKIT P, LAIN L,
EPILEPSI E'+
' WHERE F.NOEPILEPSI = E.NOEPILEPSI
'+
' AND P.NOEPILEPSI = E.NOEPILEPSI '+
' AND F.NOLAIN = L.NOLAIN '+
' AND F.RULE = P.RULE '+
' AND F.RULE = '+ RULE +
' GROUP BY F.RULE, L.NAMALAIN,
E.NAMAEPILEPSI, '+
' F.CFEPILEPSI, F.NILAI');

while not DM.Query1.Eof do


begin
epil := Items.Add;
epil.Caption := '';
epil.SubItems.Add('DAN '+

FieldByName('namalain').AsString + ' ' +

FieldByName('nilai').AsString );

epil.SubItems.Add(FieldByName('Rule').AsString)
;
epil.SubItems.Add('1'); // dari
final
DM.Query1.next;
Application.ProcessMessages;
if Application.Terminated or
(BtnTampilAturan.Tag = 0) then
begin
pgbtampil.Visible := false;
Exit;
end;
if pgbtampil.Position < 1000 then
pgbtampil.Position :=
pgbtampil.Position + 1 else

124
pgbtampil.Position := 0;
end;
end;
end;
end;

with DM.Query1, FrmCampuran, LVDaftarAturan


do
begin
// cari dari final yang tidak ada di
penyakit
cariQ1(' SELECT F.RULE, E.NAMAEPILEPSI,
L.NAMALAIN, '+
' F.CFEPILEPSI, F.NILAI '+
' FROM FINAL F, EPILEPSI E, LAIN L'+
' WHERE F.NOEPILEPSI = E.NOEPILEPSI '+
' AND F.NOLAIN = L.NOLAIN '+
' AND F.RULE NOT IN (SELECT RULE FROM
PENYAKIT) '+
' GROUP BY F.RULE, E.NAMAEPILEPSI,
L.NAMALAIN, '+
' F.CFEPILEPSI, F.NILAI'+
' ORDER BY NOEPILEPSI ');

if not eof and DM.Query.IsEmpty then


begin
epil := Items.Add;
epil.Caption := '';
epil.SubItems.Add('');
epil.SubItems.Add('');
epil.SubItems.Add('');
epil := Items.Add;
epil.Caption := '';
epil.SubItems.
Add('A T U R A N P E N Y A K I T E
P I L E P S I');
epil.SubItems.Add('');

125
epil.SubItems.Add('');
epil := Items.Add;
epil.Caption := '';
epil.SubItems.Add('');
epil.SubItems.Add('');
epil.SubItems.Add('');
end;

while not eof do


begin
inc(jumlah);
rule := FieldByName('Rule').AsString;
epil := Items.Add;
epil.Caption := 'Aturan ' +
FieldByName('Rule').AsString;
epil.SubItems.Add('Menderita Epilepsi
"' +
FieldByName('NamaEpilepsi').AsString
+
'" dengan CF '+
FormatFloat('0.00',
FieldByName('CFEpilepsi').AsFloat));

epil.SubItems.Add(FieldByName('Rule').AsString)
;
epil.SubItems.Add('2'); // dari final
non penyakit
epil := Items.Add;
epil.Caption := '';
epil.SubItems.Add('JIKA ' +
FieldByName('namalain').AsString +
' ' +
FieldByName('nilai').AsString );

epil.SubItems.Add(FieldByName('Rule').AsString)
;

126
epil.SubItems.Add('2'); // dari final
noen epilepsi
DM.Query1.next;

while (not eof) and


(FieldByName('Rule').AsString = rule)
do
begin
epil := Items.Add;
epil.Caption := '';
epil.SubItems.Add('DAN ' +
FieldByName('namalain').AsString +
' ' +
FieldByName('nilai').AsString );

epil.SubItems.Add(FieldByName('Rule').AsString)
;
epil.SubItems.Add('2'); // dari final
noen epilepsi
DM.Query1.next;
end;
Application.ProcessMessages;
if Application.Terminated or
(BtnTampilAturan.Tag = 0) then
begin
pgbtampil.Visible := false;
Exit;
end;
if pgbtampil.Position < 1000 then
pgbtampil.Position :=
pgbtampil.Position + 1 else
pgbtampil.Position := 0;
end;
end;
end;

procedure PNonEpilepsi;

127
begin
with DM.Query, FrmCampuran, LVDaftarAturan
do
begin
// cari dari penyakit non epilepsi
cariQ(' SELECT P.RULE, G.NAMAGEJALA, '+
' E.NAMANONEPILEPSI, P.CFNONEPILEPSI
'+
' FROM PENYAKITNONEPILEPSI P, GEJALA
G, '+
' NONEPILEPSI E'+
' WHERE P.NONONEPILEPSI =
E.NONONEPILEPSI '+
' AND P.NOGEJALA = G.NOGEJALA '+
' ORDER BY NONONEPILEPSI ');

if not eof then


begin
epil := Items.Add;
epil.Caption := '';
epil.SubItems.Add('');
epil.SubItems.Add('');
epil.SubItems.Add('');
epil := Items.Add;
epil.Caption := '';
epil.SubItems.
Add('A T U R A N P E N Y A K I T N
O N '+
' E P I L E P S I');
epil.SubItems.Add('');
epil.SubItems.Add('');
epil := Items.Add;
epil.Caption := '';
epil.SubItems.Add('');
epil.SubItems.Add('');
epil.SubItems.Add('');
end;

128
while not eof do
begin
inc(jumlah);
rule := FieldByName('Rule').AsString;
epil := Items.Add;
epil.Caption := 'Aturan ' +
FieldByName('Rule').AsString;
epil.SubItems.Add('Menderita epilepsi
"' +

FieldByName('NamaNonEpilepsi').AsString +
'" dengan CF '+ FormatFloat('0.00',

FieldByName('CFNonEpilepsi').AsFloat));

epil.SubItems.Add(FieldByName('Rule').AsString)
;
epil.SubItems.Add('3'); // dari
penyakit non epilepsi

epil := Items.Add;
epil.Caption := '';
epil.SubItems.Add('JIKA mengalami
gejala '+

FieldByName('namagejala').AsString);

epil.SubItems.Add(FieldByName('Rule').AsString)
;
epil.SubItems.Add('3'); // dari
penyakit non epilepsi
DM.Query.next;

while (not eof) and


(FieldByName('Rule').AsString = rule)
do

129
begin
epil := Items.Add;
epil.Caption := '';
epil.SubItems.Add('DAN mengalami
gejala '+

FieldByName('namagejala').AsString);

epil.SubItems.Add(FieldByName('Rule').AsString)
;
epil.SubItems.Add('3'); // dari
penyakit non epilepsi
DM.Query.next;
end;

with DM.Query1 do
begin
cariQ1(' SELECT F.RULE, L.NAMALAIN,
'+
' E.NAMANONEPILEPSI, '+
' F.CFNONEPILEPSI, F.NILAI '+
' FROM FINALNONEPILEPSI F,
PENYAKITNONEPILEPSI P, '+
' LAIN L, NONEPILEPSI E'+
' WHERE F.NONONEPILEPSI =
E.NONONEPILEPSI '+
' AND P.NONONEPILEPSI =
E.NONONEPILEPSI '+
' AND F.NOLAIN = L.NOLAIN '+
' AND F.RULE = P.RULE '+
' AND F.RULE = '+ RULE +
' GROUP BY F.RULE, L.NAMALAIN,
E.NAMANONEPILEPSI, '+
' F.CFNONEPILEPSI, F.NILAI ');

while not DM.Query1.Eof do


begin

130
epil := Items.Add;
epil.Caption := '';
epil.SubItems.Add('DAN '+

DM.Query1.FieldByName('namalain').AsString + '
' +

DM.Query1.FieldByName('nilai').AsString );

epil.SubItems.Add(FieldByName('Rule').AsString)
;
epil.SubItems.Add('3'); // dari
finalnonepilepsi
DM.Query1.next;
Application.ProcessMessages;
if Application.Terminated or
(BtnTampilAturan.Tag = 0) then
begin
pgbtampil.Visible := false;
Exit;
end;
if pgbtampil.Position < 1000 then
pgbtampil.Position :=
pgbtampil.Position + 1 else
pgbtampil.Position := 0;
end;
end;

Application.ProcessMessages;
if Application.Terminated or
(BtnTampilAturan.Tag = 0) then
begin
pgbtampil.Visible := false;
Exit;
end;
if pgbtampil.Position < 1000 then

131
pgbtampil.Position :=
pgbtampil.Position + 1 else
pgbtampil.Position := 0;
end;
end;

with DM.Query1, FrmCampuran, LVDaftarAturan


do
begin
// cari dari finalnonepilepsi yang tidak
ada di
// penyakit non epilepsi
cariQ1(' SELECT F.RULE,
E.NAMANONEPILEPSI, L.NAMALAIN, '+
' F.CFNONEPILEPSI, F.NILAI '+
' FROM FINALNONEPILEPSI F, NONEPILEPSI
E, LAIN L'+
' WHERE F.NONONEPILEPSI =
E.NONONEPILEPSI '+
' AND F.NOLAIN = L.NOLAIN '+
' AND NOT F.RULE IN '+
' (SELECT RULE FROM
PENYAKITNONEPILEPSI) '+
' GROUP BY F.RULE, E.NAMANONEPILEPSI,
L.NAMALAIN, '+
' F.CFNONEPILEPSI, F.NILAI '+
' ORDER BY NONONEPILEPSI');

if not eof and DM.Query.IsEmpty then


begin
epil := Items.Add;
epil.Caption := '';
epil.SubItems.Add('');
epil.SubItems.Add('');
epil.SubItems.Add('');
epil := Items.Add;
epil.Caption := '';

132
epil.SubItems.
Add('A T U R A N P E N Y A K I T N
O N '+
' E P I L E P S I');
epil.SubItems.Add('');
epil.SubItems.Add('');
epil := Items.Add;
epil.Caption := '';
epil.SubItems.Add('');
epil.SubItems.Add('');
epil.SubItems.Add('');
end;

while not eof do


begin
inc(jumlah);
rule := FieldByName('Rule').AsString;
epil := Items.Add;
epil.Caption := 'Aturan ' +
FieldByName('Rule').AsString;
epil.SubItems.Add('Menderita Epilepsi
"' +

FieldByName('NamaNonEpilepsi').AsString +
'" dengan CF '+ FormatFloat('0.00',

FieldByName('CFNonEpilepsi').AsFloat));

epil.SubItems.Add(FieldByName('Rule').AsString)
;
epil.SubItems.Add('4');
// dari finalnonepilepsi non
penyakitnonepilepsi

epil := Items.Add;
epil.Caption := '';
epil.SubItems.Add('JIKA ' +

133
FieldByName('namalain').AsString +
' ' +
FieldByName('nilai').AsString );

epil.SubItems.Add(FieldByName('Rule').AsString)
;
epil.SubItems.Add('4');
// dari finalnonepilepsi non
penyakitnonepilepsi
DM.Query1.next;

while (not eof) and


(FieldByName('Rule').AsString = rule)
do
begin
epil := Items.Add;
epil.Caption := '';
epil.SubItems.Add('DAN ' +
FieldByName('namalain').AsString +
' ' +
FieldByName('nilai').AsString );

epil.SubItems.Add(FieldByName('Rule').AsString)
;
epil.SubItems.Add('4');
// dari finalnonepilepsi non
penyakitnonepilepsi
DM.Query1.next;
end;
Application.ProcessMessages;
if Application.Terminated
or (BtnTampilAturan.Tag = 0) then
begin
pgbtampil.Visible := false;
Exit;
end;
if pgbtampil.Position < 1000 then

134
pgbtampil.Position :=
pgbtampil.Position + 1 else
pgbtampil.Position := 0;
end;
end;
end;

Procedure TEpilepsi;
begin
with DM.Query, FrmCampuran, LVDaftarAturan
do
begin
// cari dari terapi
cariQ(' SELECT T.RULE, E.NAMAEPILEPSI,
O.NAMAOBAT, '+
' T.CFTOTAL1, T.CFTOTAL2 '+
' FROM TERAPI T, EPILEPSI E, OBAT O '+
' WHERE T.NOEPILEPSI = E.NOEPILEPSI '+
' AND T.NOOBAT = O.NOOBAT ');
if not eof then
begin
epil := Items.Add;
epil.Caption := '';
epil.SubItems.Add('');
epil.SubItems.Add('');
epil.SubItems.Add('');
epil := Items.Add;
epil.Caption := '';
epil.SubItems.
Add('A T U R A N T E R A P I E P I
L E P S I');
epil.SubItems.Add('');
epil.SubItems.Add('');
epil := Items.Add;
epil.Caption := '';
epil.SubItems.Add('');
epil.SubItems.Add('');

135
epil.SubItems.Add('');
end;

while not eof do


begin
inc(jumlah);
rule := FieldByName('Rule').AsString;
epil := Items.Add;
epil.Caption := 'Aturan ' +
FieldByName('Rule').AsString;
epil.SubItems.Add('Gunakan Obat "' +
FieldByName('NamaObat').AsString +
'"');

epil.SubItems.Add(FieldByName('Rule').AsString)
;
epil.SubItems.Add('5'); // dari terapi

epil := Items.Add;
epil.Caption := '';
epil.SubItems.Add('JIKA mengalami
epilepsi "' +
FieldByName('namaepilepsi').AsString
+
'" dengan CF ' + FormatFloat('0.00',
FieldByName('CFTotal1').AsFloat) +
' s/d ' + FormatFloat('0.00',
FieldByName('CFTotal2').AsFloat));

epil.SubItems.Add(FieldByName('Rule').AsString)
;
epil.SubItems.Add('5'); // dari terapi
DM.Query.next;
Application.ProcessMessages;
if Application.Terminated or
(BtnTampilAturan.Tag = 0) then
begin

136
pgbtampil.Visible := false;
Exit;
end;
if pgbtampil.Position < 1000 then
pgbtampil.Position :=
pgbtampil.Position + 1 else
pgbtampil.Position := 0;
end;
end;
end;
Procedure TNonEpilepsi;
begin
with DM.Query, FrmCampuran, LVDaftarAturan
do
begin
// cari dari terapi non epilepsi
cariQ(' SELECT T.RULE, E.NAMANONEPILEPSI,
O.NAMAOBAT, '+
' T.CFTOTAL1, T.CFTOTAL2 '+
' FROM TERAPI T, NONEPILEPSI E, OBAT O '+
' WHERE T.NONONEPILEPSI = E.NONONEPILEPSI
'+
' AND T.NOOBAT = O.NOOBAT ');

if not eof then


begin
epil := Items.Add;
epil.Caption := '';
epil.SubItems.Add('');
epil.SubItems.Add('');
epil.SubItems.Add('');
epil := Items.Add;
epil.Caption := '';
epil.SubItems.
Add('A T U R A N T E R A P I N O N
'+
' E P I L E P S I');

137
epil.SubItems.Add('');
epil.SubItems.Add('');
epil := Items.Add;
epil.Caption := '';
epil.SubItems.Add('');
epil.SubItems.Add('');
epil.SubItems.Add('');
end;

while not eof do


begin
inc(jumlah);
rule := FieldByName('Rule').AsString;
epil := Items.Add;
epil.Caption := 'Aturan ' +
FieldByName('Rule').AsString;
epil.SubItems.Add('Gunakan Obat "' +
FieldByName('NamaObat').AsString +
'"');

epil.SubItems.Add(FieldByName('Rule').AsString)
;
epil.SubItems.Add('5'); // dari terapi

epil := Items.Add;
epil.Caption := '';
epil.SubItems.Add('JIKA mengalami
penyakit "' +

FieldByName('namanonepilepsi').AsString +
'" dengan CF ' + FormatFloat('0.00',
FieldByName('CFTotal1').AsFloat) +
' s/d ' + FormatFloat('0.00',
FieldByName('CFTotal2').AsFloat));

epil.SubItems.Add(FieldByName('Rule').AsString)
;

138
epil.SubItems.Add('5'); // dari terapi
DM.Query.next;
Application.ProcessMessages;
if Application.Terminated or
(BtnTampilAturan.Tag = 0) then
begin
pgbtampil.Visible := false;
Exit;
end;
if pgbtampil.Position < 1000 then
pgbtampil.Position :=
pgbtampil.Position + 1 else
pgbtampil.Position := 0;
end;
end;
end;

begin
if DM.IBDB.Connected = false then
DM.IBDB.Connected := true;
jumlah := 0;
if BtnTampilAturan.Tag = 1 then
begin
BtnTampilAturan.Tag := 0;
SB.SimpleText := 'Pencarian
batal..........';
BtnTampilAturan.Caption := '&Tampil';
Exit;
end;
LVDaftarAturan.Items.Clear;
BtnTampilAturan.Tag := 1;
BtnTampilAturan.Caption := '&Stop';

//menampilkan pesan pencarian


pgbtampil.Visible := true;
pgbtampil.Max := 1000;
pgbtampil.Position := 0;

139
case CmbJenisAturan.ItemIndex of
0 : begin
GSawan;
PEpilepsi;
PNonEpilepsi;
TEpilepsi;
TNonEpilepsi;
end;
1 : GSawan;
2 : PEpilepsi;
3 : PNonEpilepsi;
4 : TEpilepsi;
5 : TNonEpilepsi;
end;
pgbtampil.Visible := false;
SB.SimpleText := 'Ditemukan ' +
IntToStr(jumlah) + ' aturan';
BtnTampilAturan.Tag := 0;
BtnTampilAturan.Caption := '&Tampil';
BtnHapusGejala.Enabled := false;
end;

140
procedure TFrmMain.BtnHapusAturanClick(Sender:
TObject);
begin
with FrmCampuran,
LVDaftarAturan.Selected.SubItems do
case StrToInt(Strings[2]) of
0 : Hapus('delete from gejalasawan where
rule = '+
Strings[1]);
1 : begin
Hapus('delete from penyakit where
rule = '+
Strings[1]);
Hapus('delete from final where rule
= '+
Strings[1]);
end;
2 : Hapus('delete from final where rule =
'+
Strings[1]);
3 : begin
Hapus('delete from
penyakitnonepilepsi where rule ='+
Strings[1]);
Hapus('delete from finalnonepilepsi
where rule = '+
Strings[1]);
end;
4 : Hapus('delete from finalnonepilepsi
where rule = '+
Strings[1]);
5 : Hapus('delete from terapi where rule
= '+ Strings[1]);
end;
BtnTampilAturan.Click;
BtnHapusAturan.Enabled := false;
BtnTampilAturan.SetFocus;

141
end;

procedure TFrmMain.BtnBersihAturanClick(Sender:
TObject);
begin
CmbJenisAturan.ItemIndex := 0;
LVDaftarAturan.Items.clear;
CmbJenisAturan.SetFocus;
end;

procedure TFrmMain.BtnTutupAturanClick(Sender:
TObject);
begin
BtnUtama.ActivePage := BPTentang;
Frame.ActivePage := PTentang;
BtnTentang.Show;
end;

procedure TFrmMain.RBTTahuEnter(Sender:
TObject);
begin
BtnLanjutKonsultasi.Enabled := true;
LblCFKonsultasi.Visible := false;
EdtCFKonsultasi.Visible := false;
end;

142
procedure TFrmMain.RBTTahuKeyPress(Sender:
TObject;
var Key: Char);
begin
if key = #13 then
begin
Key := #0;
if BtnMulaiKonsultasi.Enabled = true then
BtnMulaiKonsultasi.SetFocus
else BtnLanjutKonsultasi.SetFocus;
end;
end;

procedure TFrmMain.RBYaEnter(Sender: TObject);


begin
BtnLanjutKonsultasi.Enabled := true;
LblCFKonsultasi.Visible := true;
EdtCFKonsultasi.Visible := true;
end;

procedure TFrmMain.RBYaKeyPress(Sender:
TObject;
var Key: Char);
begin
if key = #13 then
begin
Key := #0;
EdtCFKonsultasi.SetFocus;
end;
end;

procedure TFrmMain.RBTidakEnter(Sender:
TObject);
begin
BtnLanjutKonsultasi.Enabled := true;
LblCFKonsultasi.Visible := true;
EdtCFKonsultasi.Visible := true;

143
end;

procedure TFrmMain.RBTidakKeyPress(Sender:
TObject;
var Key: Char);
begin
if key = #13 then
begin
Key := #0;
EdtCFKonsultasi.SetFocus;
end;
end;

procedure TFrmMain.EdtCFKonsultasiExit(Sender:
TObject);
begin
FrmCampuran.ExitCF(EdtCFKonsultasi);
end;

144
procedure
TFrmMain.EdtCFKonsultasiKeyPress(Sender:
TObject;
var Key: Char);
begin
if key = #13 then
begin
Key := #0;
if BtnMulaiKonsultasi.Enabled = true then
BtnMulaiKonsultasi.SetFocus
else BtnLanjutKonsultasi.SetFocus;
end else if not ((key in ['0' .. '9'])
or (key = #8) or (key = #46)
or (key = #44)) then key := #0;
end;

procedure
TFrmMain.BtnMulaiKonsultasiClick(Sender:
TObject);
var i : integer;
begin
BtnMulaiKonsultasi.Enabled := false;
BtnTerapi.Enabled := false;
BtnPenjelasanKonsultasi.Caption :=
'Men&gapa';
BtnPenjelasanKonsultasi.Enabled := true;
BtnUlangKonsultasi.Enabled := true;

with DM, FrmCampuran do


begin
// hapus isi tabel ceksawan, cekgejala,
ceksyarat dan hasil
Hapus('delete from ceksawan');
Hapus('delete from cekgejala');
Hapus('delete from ceklain');
Hapus('delete from hasil');

145
//kosongkan variabel sawan, gejala, syarat
NS := 0;
NOS := 0;
NG := 0;
NOG := 0; //nomor gejala
tor := 0; //top of rule
for i := 1 to 100 do
begin
CFS[i] := 0;
CFG[i] := 0;
end;

CFG1 := 0;
CFG2 := 0;
CFS1 := 0;
CFS2 := 0;
CekFinal := true;
BalikSawan := true;

cariQ(' select * from epilepsi order by


noepilepsi');
if Query.IsEmpty then
begin
Epilepsi := false;
if MessageDlg('Database penyakit epilepsi
kosong. '+ #13+
'Anda mau mengecek penyakit selain
epilepsi?',
mtConfirmation, [mbYes, mbNo], 1) =
mrNo then exit
else Penyakit;
end else
begin
while not Query.Eof do
begin
Epilepsi := true;

146
NE :=
Query.FieldByName('NoEpilepsi').AsInteger;

// cek dalam daftar penyakit epilepsi


cariQ1(' select * from penyakit where
noepilepsi = '+
IntToStr(NE) +
' order by cfepilepsi desc, rule');

if Query1.IsEmpty then
begin
BalikSawan := false;
//--> cari syaratnya
cariQ3(' select F.*, L.Namalain from
Final F, Lain L'+
' where F.noepilepsi = '+
IntToStr(NE) +
' and L.Nolain = F.Nolain '+
' order by F.CFepilepsi desc,
F.Rule');
if Query3.IsEmpty then Query.Next
//-->ke penyakit selanjutnya
else begin
CekFinal := false;
RE :=
Query3.FieldByName('rule').AsInteger;
CFNE :=
Query3.FieldByName('CFEpilepsi').AsFloat;
Syarat(NE);
exit;
end;
end else
begin
BalikSawan := true;
CekFinal := false;
RE :=
Query1.FieldByName('rule').AsInteger;

147
CFNE :=
Query1.FieldByName('CFEpilepsi').AsFloat;
Sawan(NE);
exit;
end;
end;
Penyakit;
end;
end;
end;

procedure
TFrmMain.BtnLanjutKonsultasiClick(Sender:
TObject);
var i : integer;
Temp, Temp1, kal : string;
Daftar : TListItem;
begin
Temp := EdtCFKonsultasi.Text;
if Temp <> '' then
begin
temp :=
FormatFloat('0.00',StrToFloat(Temp));
for i := 1 to length(temp) do
if Temp[i] = ',' then Temp[i] := '.' else
Temp[i] := Temp[i];
end else Temp := '1';

with DM, FrmCampuran, Daftar do


begin
if Epilepsi = true then
begin
if Gejala = true then
begin
if RBYa.Checked = true then
begin

148
Tambah(' insert into cekgejala
(NoGejala, CFGejala) ' +
' values('+ IntToStr(NG) +', '+
Temp +')');
inc(NOG);
if EdtCFKonsultasi.Text <> '' then
CFG[NOG] :=
StrToFloat(EdtCFKonsultasi.Text)
else CFG[NOG] := 1;
end else if RBTidak.Checked = true then
begin
Tambah(' insert into cekgejala
(NoGejala, CFGejala) ' +
' values('+ IntToStr(NG) +', -'+
Temp +')');
inc(NOG);
if EdtCFKonsultasi.Text <> '' then
CFG[NOG] := StrToFloat('-'
+EdtCFKonsultasi.Text)
else CFG[NOG] := -1;
end else
begin
Tambah(' insert into cekgejala
(NoGejala, CFGejala) ' +
' values('+ IntToStr(NG) +',
0)');

inc(NOG);
CFG[NOG] := 0;
end;
Bersih;

while not Query1.Eof do


begin
//cek RE = Rule
if not (RE =
Query1.FieldByName('Rule').AsInteger) then

149
begin
BalikSawan := true;
CFS2 := CFS[1];
for i := 2 to NOS do
if CFS2 > CFS[i] then CFS2 := CFS[i];

CFS2 := CFS2 * CFNE;


CFS1 := Kombinasi(CFS1, CFS2);
NOS := 0;

cariQ3(' select F.*, L.Namalain '+


' from Final F, Lain L '+
' where F.noepilepsi = '+
IntToStr(NE) +
' and L.Nolain = F.Nolain '+
' and F.Rule = ' + IntToStr(RE)
+
' order by F.CFepilepsi desc,
F.Rule');

if not Query3.IsEmpty then


begin
CekFinal := false;
Inc(Tor);
cari[Tor] := RE;
end;
Syarat(NE);
Exit;
end;

Query2.Next;
while not Query2.eof do
begin
//cek RS = Rule
if not (RS =
Query2.FieldByName('Rule').AsInteger) then
begin

150
CFG2 := CFG[1];
for i := 2 to NOG do
if CFG2 > CFG[i] then CFG2 :=
CFG[i];

CFG2 := CFG2 * CFNS;


CFG1 := Kombinasi(CFG1, CFG2);
NOG := 0;
RS :=
Query2.FieldByName('Rule').AsInteger;
CFNS :=
Query2.FieldByName('CFSawan').AsFloat;
end;

NG :=
Query2.FieldByName('NoGejala').AsInteger;

//cari dari tabel cek gejala


cariQ3(' select * from cekgejala
where nogejala = ' +
IntToStr(NG));
if not Query3.IsEmpty then
begin
inc(NOG);
CFG[NOG] :=
Query3.FieldByName('CFGejala').AsFloat
end else
begin
//Cari dari tabel gejala
cariQ3(' select * from gejala where
nogejala = ' +
IntToStr(NG));
//tanyakan ke pengguna
LVKonsultasi.Items.Clear;
RBYa.Enabled := true;
RBTidak.Enabled := true;
RBTTahu.Enabled := true;

151
Daftar := LVKonsultasi.Items.Add;
Caption := '';
Daftar := LVKonsultasi.Items.Add;
Caption := '';
i := 0;
kal := 'Apakah pasien mengalami
gejala ' +

Query3.FieldByName('NamaGejala').AsString + '
'+

Query3.FieldByName('Keterangan').AsString +'?';
while i < Length(kal) do
begin
Daftar := LVKonsultasi.Items.Add;
Caption := copy(kal, i+1, 50);
i := i +50;
end;
Gejala := true;
RBTTahu.SetFocus;
exit;
end;
Query2.Next;
end;
CFG2 := CFG[1];
for i := 2 to NOG do
if CFG2 > CFG[i] then CFG2 := CFG[i];

CFG2 := CFG2 * CFNS;


CFG1 := Kombinasi(CFG1, CFG2);
Inc(NOS);
CFS[NOS] := CFG1;
Temp1 := FloatToStr(CFG1);
Temp1 :=
FormatFloat('0.00',StrToFloat(Temp1));
for i := 1 to length(Temp1) do

152
if Temp1[i] = ',' then Temp1[i] :=
'.'
else Temp1[i] := Temp1[i];

Tambah(' insert into ceksawan (nosawan,


cfsawan) '+
' values(' + IntToStr(NS) +', '+
temp1 + ')');

//variabel sawan
NG := 0;
NOG := 0;
for i := 1 to 100 do CFG[i] := 0;

CFG1 := 0;
CFG2 := 0;

Query1.Next;
if not (RE =
Query1.FieldByName('Rule').AsInteger) then
begin
cariQ3(' select F.*, L.Namalain from
Final F, Lain L '+
' where F.noepilepsi = '+
IntToStr(NE) +
' and F.Rule = '+ IntToStr(RE) +
' and L.Nolain = F.Nolain '+
' order by F.CFepilepsi desc,
F.Rule');

if not Query3.IsEmpty then


begin
CekFinal := false;
inc(tor);
cari[Tor] := RE;
Syarat(NE);
exit;

153
end;
Syarat(NE);
Exit;
end else

begin
Sawan(NE);
exit;
end;
end;
CFS2 := CFS[1];
for i := 2 to NOS do
if CFS2 > CFS[i] then CFS2 := CFS[i];

CFS2 := CFS2 * CFNE;


CFS1 := Kombinasi(CFS1, CFS2);
NOS := 0;

BalikSawan := false;
if Tor <> 0 then
cariQ3(' select F.*, L.Namalain from
Final F, Lain L '+
' where F.noepilepsi = '+
IntToStr(NE) +
' and L.Nolain = F.Nolain '+
' and F.Rule in (' + pencarian + ')'+
' order by F.CFepilepsi desc,
F.Rule')
else
cariQ3(' select F.*, L.Namalain from
Final F, Lain L '+
' where F.noepilepsi = '+
IntToStr(NE) +
' and L.Nolain = F.Nolain '+
' order by F.CFepilepsi desc,
F.Rule');

154
if not Query3.IsEmpty then
begin
CekFinal := false;
Syarat(NE);
exit;
end;
Syarat(NE);
Exit;
end else //Syarat
begin
if RBYa.Checked = true then
begin
Tambah(' insert into ceklain (Nolain,
CFlain, Nilai) ' +
' values('+ IntToStr(NS) +', '+
Temp + ', "' +
Nilai + '")');
inc(NOS);
if EdtCFKonsultasi.Text <> '' then
CFS[NOS] :=
StrToFloat(EdtCFKonsultasi.Text)
else CFS[NOS] := 1;
end else if RBTidak.Checked = true then
begin
Tambah(' insert into ceklain (Nolain,
CFlain, Nilai) ' +
' values('+ IntToStr(NS) +', -'+
Temp + ', "' + Nilai + '")');

inc(NOS);

if EdtCFKonsultasi.Text <> '' then


CFS[NOS] := StrToFloat('-'
+EdtCFKonsultasi.Text)
else CFS[NOS] := -1;
if CFNE > standar then
begin

155
Lewat;
exit;
end;
end else
begin
Tambah(' insert into ceklain (Nolain,
CFlain, Nilai) ' +
' values('+ IntToStr(NS) +', 0, "'
+ Nilai + '")');
inc(NOS);
CFS[NOS] := 0;
end;
Bersih;

Query3.Next;
while not Query3.Eof do
begin
//cek apakah RE masih sama
if not (RE =
Query3.FieldByName('Rule').AsInteger) then
begin
CFS2 := CFS[1];
for i := 2 to NOS do
if CFS2 > CFS[i] then CFS2 := CFS[i];

CFS2 := CFS2 * CFNE;


CFS1 := Kombinasi(CFS1, CFS2);
NOS := 0;
RE :=
Query3.FieldByName('rule').AsInteger;
CFNE :=
Query3.FieldByName('CFEpilepsi').AsFloat;

if not Query1.Eof then


begin
Sawan(NE);
Exit;

156
end;
end;

NS :=
Query3.FieldByName('NoLain').AsInteger;
Nilai :=
Query3.FieldByName('Nilai').AsString;

//cari dari tabel ceklain


cariQ4(' select * from ceklain where
nolain = ' +
IntToStr(NS) +
' and nilai = "' + Nilai + '"' );

if not Query4.IsEmpty then


begin
if
Query4.FieldByName('CFLain').AsFloat < 0 then
if CFNE > standar then
begin
Lewat;
Exit;
end;
inc(NOS);
CFS[NOS] :=
Query4.FieldByName('CFLain').AsFloat;
end else
begin
//tanyakan ke pengguna
gejala := False;
LVKonsultasi.Items.Clear;
RBYa.Enabled := true;
RBTidak.Enabled := true;
RBTTahu.Enabled := true;
Daftar := LVKonsultasi.Items.Add;
Caption := '';
Daftar := LVKonsultasi.Items.Add;

157
Caption := '';

i := 0;
kal := 'Apakah ' +

Query3.FieldByName('NamaLain').AsString +
' = ' +
Query3.FieldByName('Nilai').AsString +'?';
while i < Length(kal) do
begin
Daftar := LVKonsultasi.Items.Add;
Caption := copy(kal, i+1, 50);
i := i +50;
end;
RBTTahu.SetFocus;
exit;
end;
Query3.Next;
end;

CFS2 := CFS[1];
for i := 2 to NOS do
if CFS2 > CFS[i] then CFS2 := CFS[i];

CFS2 := CFS2 * CFNE;


CFS1 := Kombinasi(CFS1, CFS2);
NOS := 0;

if not Query1.Eof then


begin
RE :=
Query1.FieldByName('rule').AsInteger;
CFNE :=
Query1.FieldByName('CFEpilepsi').AsFloat;
if not (RE =
Query1.FieldByName('Rule').AsInteger) then
begin

158
cariQ3(' select F.*, L.Namalain from
Final F, Lain L '+
' where F.noepilepsi = '+
IntToStr(NE) +
' and F.Rule = '+ IntToStr(RE) +
' and L.Nolain = F.Nolain '+
' order by F.CFepilepsi desc,
F.Rule');

if not Query3.IsEmpty then


begin
CekFinal := false;
inc(tor);
cari[Tor] := RE;
Syarat(NE);
exit;
end;
end else
begin
Sawan(NE);
Exit;
end;
end else
begin
with DM.Query4 do
begin
Close;
SQL.Clear;
SQL.Add('Insert into hasil values('+
IntToStr(NE) +
', :nama, '+ FormatFloat('0.00',
CFS1) +', "Y")');
ParamByName('nama').AsString :=

Query.FieldByName('Namaepilepsi').AsString;
ExecSQL;
end;

159
Lewat;
end;
end;
end else //epilepsi = false
begin
if Gejala = true then
begin
if RBYa.Checked = true then
begin
Tambah(' insert into cekgejala
(NoGejala, CFGejala) ' +
' values('+ IntToStr(NS) +', '+
Temp +')');

inc(NOS);

if EdtCFKonsultasi.Text <> '' then


CFS[NOS] :=
StrToFloat(EdtCFKonsultasi.Text)
else CFS[NOS] := 1;
end else if RBTidak.Checked = true then
begin
Tambah(' insert into cekgejala
(NoGejala, CFGejala) ' +
' values('+ IntToStr(NS) +', -'+
Temp +')');

inc(NOS);

if EdtCFKonsultasi.Text <> '' then


CFS[NOS] := StrToFloat('-'
+EdtCFKonsultasi.Text)
else CFS[NOS] := -1;
end else
begin
Tambah(' insert into cekgejala
(NoGejala, CFGejala) ' +

160
' values('+ IntToStr(NS) +', 0)');

inc(NOS);

CFS[NOS] := 0;
end;
Bersih;

Query1.Next;
while not Query1.Eof do
begin

//cek RE = Rule
if not (RE =
Query1.FieldByName('Rule').AsInteger) then
begin
BalikSawan := true;
CFS2 := CFS[1];
for i := 2 to NOS do
if CFS2 > CFS[i] then CFS2 := CFS[i];

CFS2 := CFS2 * CFNE;


CFS1 := Kombinasi(CFS1, CFS2);
NOS := 0;

if CekFinal = true then


begin
cariQ3(' select F.*, L.Namalain '+
' from FinalNonEpilepsi F, Lain
L '+
' where F.noNonepilepsi = '+
IntToStr(NE) +
' and L.Nolain = F.Nolain '+
' and F.Rule = ' + IntToStr(RE)
+
' order by F.CFNonepilepsi
desc, F.Rule');

161
if not Query3.IsEmpty then
begin
CekFinal := false;
Inc(Tor);
cari[Tor] := RE;
end;
end;
SyaratP(NE);
Exit;
end;

NS :=
Query1.FieldByName('NoGejala').AsInteger;

//cari dari tabel cek gejala


cariQ2(' select * from cekgejala where
nogejala = ' +
IntToStr(NS));
if not Query2.IsEmpty then
begin
inc(NOS);
CFS[NOS] :=
Query2.FieldByName('CFGejala').AsFloat;
end else
begin
//Cari dari tabel gejala
cariQ2(' select * from gejala where
nogejala = ' +
IntToStr(NS));

//tanyakan ke pengguna
LVKonsultasi.Items.Clear;
RBYa.Enabled := true;
RBTidak.Enabled := true;
RBTTahu.Enabled := true;
Daftar := LVKonsultasi.Items.Add;
Caption := '';

162
Daftar := LVKonsultasi.Items.Add;
Caption := '';

i := 0;
kal := 'Apakah pasien mengalami
gejala ' +

Query2.FieldByName('NamaGejala').AsString +
' ' +
Query2.FieldByName('Keterangan').AsString +'?';
while i < Length(kal) do
begin
Daftar := LVKonsultasi.Items.Add;
Caption := copy(kal, i +1, 50);
i := i +50;
end;
Gejala := true;
RBTTahu.SetFocus;
exit;
end;
Query1.Next;
end;

BalikSawan := false;

if Tor <> 0 then


cariQ3(' select F.*, L.Namalain '+
' from FinalNonEpilepsi F, Lain L '+
' where F.noNonepilepsi = '+
IntToStr(NE) +
' and L.Nolain = F.Nolain '+
' and F.Rule in (' + pencarian + ')'+
' order by F.CFNonepilepsi desc,
F.Rule')
else
cariQ3(' select F.*, L.Namalain '+
' from FinalNonEpilepsi F, Lain L '+

163
' where F.noNonepilepsi = '+
IntToStr(NE) +
' and L.Nolain = F.Nolain '+
' order by F.CFNonepilepsi desc,
F.Rule');

if not Query3.IsEmpty then


begin
CekFinal := false;
SyaratP(NE);
exit;
end;
SyaratP(NE);
Exit;
end else //Syarat
begin
if RBYa.Checked = true then
begin
Tambah(' insert into ceklain '+
' (Nolain, CFlain, Nilai) ' +
' values('+ IntToStr(NS) +', '+
Temp + ', "' + Nilai + '")');
inc(NOS);
if EdtCFKonsultasi.Text <> '' then
CFS[NOS] :=
StrToFloat(EdtCFKonsultasi.Text)
else CFS[NOS] := 1;
end else if RBTidak.Checked = true then
begin
Tambah(' insert into ceklain '+
' (Nolain, CFlain, Nilai) ' +
' values('+ IntToStr(NS) +', -'+
Temp + ', "' + Nilai + '")');
inc(NOS);
if EdtCFKonsultasi.Text <> '' then
CFS[NOS] := StrToFloat('-'
+EdtCFKonsultasi.Text)

164
else CFS[NOS] := -1;
if CFNE > standar then
begin
LewatP;
exit;
end;
end else
begin
Tambah(' insert into ceklain (Nolain,
CFlain, Nilai) ' +
' values('+ IntToStr(NOS) +', 0,
"' + Nilai + '")');
inc(NOS);
CFS[NOS] := 0;
end;
Bersih;

Query3.Next;
while not Query3.Eof do
begin
//cek apakah RE masih sama
if not (RE =
Query3.FieldByName('Rule').AsInteger) then
begin
CFS2 := CFS[1];
for i := 2 to NOS do
if CFS2 > CFS[i] then CFS2 := CFS[i];

CFS2 := CFS2 * CFNE;


CFS1 := Kombinasi(CFS1, CFS2);
NOS := 0;
RE :=
Query3.FieldByName('rule').AsInteger;
CFNE :=
Query3.FieldByName('CFNonEpilepsi').AsFloat;

if not Query1.Eof then

165
begin
GejalaP(NE);
Exit;
end else
begin
cariQ3(' select F.*, L.Namalain '+
' from FinalNonEpilepsi F, Lain
L '+
' where F.noNonepilepsi = '+
IntToStr(NE) +
' and L.Nolain = F.Nolain '+
' and F.Rule = ' + IntToStr(RE)
+
' order by F.CFNonepilepsi
desc, F.Rule');
if not Query3.IsEmpty then
begin
CekFinal := false;
Inc(Tor);
cari[Tor] := RE;
end;
end;
end;

NS :=
Query3.FieldByName('NoLain').AsInteger;
Nilai :=
Query3.FieldByName('Nilai').AsString;

//cari dari tabel ceklain


cariQ4(' select * from ceklain where
nolain = ' +
IntToStr(NS) + ' and nilai = "' +
Nilai + '"' );
if not Query4.IsEmpty then
begin

166
if
Query4.FieldByName('CFLain').AsFloat < 0 then
if CFNE > standar then
begin
LewatP;
Exit;
end;
inc(NOS);
CFS[NOS] :=
Query4.FieldByName('CFLain').AsFloat;
end else
begin
//tanyakan ke pengguna
gejala := False;
LVKonsultasi.Items.Clear;
RBYa.Enabled := true;
RBTidak.Enabled := true;
RBTTahu.Enabled := true;
Daftar := LVKonsultasi.Items.Add;
Caption := '';
Daftar := LVKonsultasi.Items.Add;
Caption := '';

i := 0;
kal := 'Apakah ' +

Query3.FieldByName('NamaLain').AsString +
' = ' +
Query3.FieldByName('Nilai').AsString +'?';
while i < Length(kal) do
begin
Daftar := LVKonsultasi.Items.Add;
Caption := copy(kal, i+1, 50);
i := i +50;
end;

RBTTahu.SetFocus;

167
exit;
end;
Query3.Next;
end;

CFS2 := CFS[1];
for i := 2 to NOS do
if CFS2 > CFS[i] then CFS2 := CFS[i];

CFS2 := CFS2 * CFNE;


CFS1 := Kombinasi(CFS1, CFS2);
NOS := 0;

if not Query1.eof then


begin
RE :=
Query1.FieldByName('rule').AsInteger;
CFNE :=
Query1.FieldByName('CFNonEpilepsi').AsFloat;
GejalaP(NE);
Exit;
end else
begin
with DM.Query4 do
begin
Close;
SQL.Clear;
SQL.Add('Insert into hasil values('+
IntToStr(NE) +
', :nama, '+ FormatFloat('0.00',
CFS1) + ', "T")');
ParamByName('nama').AsString :=

Query.FieldByName('NamaNonepilepsi').AsString;
ExecSQL;
end;
LewatP;

168
end;
end;
end;
end; //with DM
end;

procedure
TFrmMain.BtnPenjelasanKonsultasiClick(Sender:
TObject);
var Daftar : TlistItem;
begin
//penjelasan why
with DM.Query5, Daftar do
begin
if BtnLanjutKonsultasi.Enabled then
begin
LVPenjelasan.Items.Clear;
if Epilepsi = true then
begin
Close;
SQL.Clear;
SQL.Add('select G.namagejala '+
' from Gejala G, GejalaSawan S,
Penyakit P '+
' where P.NoEpilepsi = '+
IntToStr(NE) +
' and P.Nosawan = S.NoSawan ' +
' and S.NoGejala = G.NoGejala '+
' and S.NoSawan not in (select
nosawan from ceksawan) '+
' and G.NoGEjala not in '+
' (select nogejala from
cekgejala)'+
' group by G.NamaGejala' );
Open;

Daftar := LVPenjelasan.Items.Add;

169
Caption := '';
Daftar := LVPenjelasan.Items.Add;
Caption := 'Kalau mengalami gejala : ';
Daftar := LVPenjelasan.Items.Add;
Caption := '';
while Not Eof do
begin
Daftar := LVPenjelasan.Items.Add;
Caption := ' ' +
Fields[0].AsString;
Next;
end;

Close;
SQL.Clear;
SQL.Add('Select L.NamaLain, F.Nilai '+
' From Lain L, Final F '+
' where L.NoLain = F.Nolain '+
' and F.Noepilepsi = '+ IntToStr(NE)
+
' and L.noLain not in (select nolain
from ceklain)'+
' group by L.NamaLain, F.Nilai');
Open;

Daftar := LVPenjelasan.Items.Add;
Caption := '';
Daftar := LVPenjelasan.Items.Add;
Caption := 'dan memenuhi syarat : ';
Daftar := LVPenjelasan.Items.Add;
Caption := '';

while Not Eof do


begin
Daftar := LVPenjelasan.Items.Add;
Caption := ' ' +

170
Fields[0].AsString + ' : ' +
Fields[1].AsString;
Next;
end;

Close;
SQL.Clear;
SQL.Add('select namaepilepsi '+
' from epilepsi where noepilepsi = '+
IntToStr(NE));
Open;

Daftar := LVPenjelasan.Items.Add;
Caption := '';
Daftar := LVPenjelasan.Items.Add;
Caption := 'ada kemungkinan pasien
terkena '+
' penyakit epilepsi ' +
Fields[0].AsString;

end else
begin
Close;
SQL.Clear;
SQL.Add('select G.namagejala '+
' from Gejala G, PenyakitNonEpilepsi
P '+
' where P.NoNonEpilepsi = '+
IntToStr(NE) +
' and P.NoGejala = G.NoGejala '+
' and G.NoGEjala not in '+
' (select nogejala from cekgejala)'
+
' group by G.NamaGejala');
Open;

Daftar := LVPenjelasan.Items.Add;

171
Caption := '';
Daftar := LVPenjelasan.Items.Add;
Caption := 'Kalau mengalami gejala : ';
while Not Eof do
begin
Daftar := LVPenjelasan.Items.Add;
Caption := ' ' +
Fields[0].AsString;
Next;
end;

Close;
SQL.Clear;
SQL.Add('Select L.NamaLain, F.Nilai '+
' From Lain L, FinalNonEpilepsi F '+
' where L.NoLain = F.Nolain '+
' and F.NoNonepilepsi = '+
IntToStr(NE) +
' and L.noLain not in (select nolain
from ceklain)'+
' group by L.NamaLain, F.Nilai');
Open;

Daftar := LVPenjelasan.Items.Add;
Caption := '';
Daftar := LVPenjelasan.Items.Add;
Caption := 'dan memenuhi syarat : ';
Daftar := LVPenjelasan.Items.Add;
Caption := '';

while Not Eof do


begin
Daftar := LVPenjelasan.Items.Add;
Caption := ' ' +
Fields[0].AsString +
' : ' + Fields[1].AsString;
Next;

172
end;

Close;
SQL.Clear;
SQL.Add('select namaNonepilepsi from
Nonepilepsi '+
' where noNonepilepsi =
'+IntToStr(NE));
Open;

Daftar := LVPenjelasan.Items.Add;
Caption := '';
Daftar := LVPenjelasan.Items.Add;
Caption := 'ada kemungkinan pasien
terkena '+
' penyakit non epilepsi ' +
Fields[0].AsString;
end;
end;
end;

Frame.ActivePage := PPenjelasan;
BtnTutupPenjelasan.SetFocus;
end;

procedure
TFrmMain.BtnUlangKonsultasiClick(Sender:
TObject);
begin
LVKonsultasi.Items.Clear;
RBTTahu.Enabled := false;
RBYa.Enabled := false;
RBTidak.Enabled := false;
LblCFKonsultasi.Visible := false;
EdtCFKonsultasi.Text := '';
EdtCFKonsultasi.Visible := false;

173
BtnMulaiKonsultasi.Enabled := true;
BtnLanjutKonsultasi.Enabled := false;
BtnPenjelasanKonsultasi.Caption :=
'&Penjelasan';
BtnPenjelasanKonsultasi.Enabled := false;
BtnMulaiKonsultasi.SetFocus;
end;

procedure TFrmMain.BtnTerapiClick(Sender:
TObject);
begin
Frame.ActivePage := PTerapi;
BtnTutupTerapi.SetFocus;
end;

procedure
TFrmMain.BtnTutupKonsultasiClick(Sender:
TObject);
begin
BtnUtama.ActivePage := BPTentang;
Frame.ActivePage := PTentang;
BtnTentang.Show;
end;

Procedure TFrmMain.Bersih;
begin
RBYa.Checked := false;
RBTidak.Checked := false;
RBTTahu.Checked := false;
EdtCFKonsultasi.Text := '';
RBYa.Enabled := false;
RBTidak.Enabled := false;
RBTTahu.Enabled := false;
LblCFKonsultasi.Visible := false;
EdtCFKonsultasi.Visible := false;
BtnLanjutKonsultasi.Enabled := false;
LVKonsultasi.Items.Clear;

174
end;

Function TFrmMain.Pencarian : string;


var i : integer;
temp : string;
begin
for i := 1 to tor do
begin
if temp = '' then temp :=
IntToStr(cari[tor])
else temp := temp + ', ' +
IntToStr(cari[tor]);
end;
result := temp;
end;

Procedure TFrmMain.TampilHasil;
var Daftar : TlistItem;
temp, rule : string;
i : integer;

begin
BtnTerapi.Enabled := true;
RBYa.Checked := true;

RBYa.Enabled := false;
RBTidak.Enabled := false;
RBTTahu.Enabled := false;

BtnPenjelasanKonsultasi.Caption :=
'Ba&gaimana';
BtnLanjutKonsultasi.Enabled := false;

EdtCFKonsultasi.Text := '';
EdtCFKonsultasi.Visible := false;
LblCFKonsultasi.Visible := false;
LVTerapi.Items.Clear;

175
LVPenjelasan.Items.Clear;

FrmCampuran.cariQ('select * from hasil '+


' where epilepsi = "Y" '+
' order by CF, nomor');

if DM.Query.IsEmpty then
begin
Daftar := LVKonsultasi.Items.Add;
Daftar.Caption := '';
Daftar := LVKonsultasi.Items.Add;
Daftar.Caption := ' Tidak ditemukan
penyakit epilepsi';
end else
begin
//daftar penyakit epilepsi
Daftar := LVKonsultasi.Items.Add;
Daftar.Caption := '';
Daftar := LVKonsultasi.Items.Add;
Daftar.Caption := ' Kemungkinan Penyakit
Epilepsi : ';
end;

while Not DM.Query.Eof do


begin
Daftar := LVKonsultasi.Items.Add;
Daftar.Caption := ' ' +
DM.Query.FieldByName('nama').AsString +
' dengan CF : ' + FormatFloat('0.00',
DM.Query.FieldByName('cf').AsFloat);
DM.Query.Next;
end;

FrmCampuran.cariQ('select * from hasil '+


' where epilepsi = "T" '+
' order by CF, nomor');

176
if DM.Query.IsEmpty then
begin
Daftar := LVKonsultasi.Items.Add;
Daftar.Caption := '';
Daftar := LVKonsultasi.Items.Add;
Daftar.Caption := ' Tidak ditemukan
penyakit non epilepsi';
end else
begin
//daftar penyakit nonepilepsi
Daftar := LVKonsultasi.Items.Add;
Daftar.Caption := '';
Daftar := LVKonsultasi.Items.Add;
Daftar.Caption := ' Kemungkinan Penyakit
Non Epilepsi : ';
end;

while Not DM.Query.Eof do


begin
Daftar := LVKonsultasi.Items.Add;
Daftar.Caption := ' ' +
DM.Query.FieldByName('nama').AsString +
' dengan CF : ' + FormatFloat('0.00',
DM.Query.FieldByName('cf').AsFloat);
DM.Query.Next;
end;

Daftar := LVKonsultasi.Items.Add;
Daftar.Caption := '';

FrmCampuran.cariQ(' select * from hasil '+


' where cf = (select max(cf) from hasil) '+
' order by epilepsi desc, nomor');

if DM.Query.IsEmpty then
begin
Daftar := LVKonsultasi.Items.Add;

177
Daftar.Caption := ' Jenis penyakit tidak
dapat ditemukan';
BtnUlangKonsultasi.SetFocus;
Exit;
end;

Daftar := LVKonsultasi.Items.Add;
Daftar.Caption :=
' Diagnosis dapat menentukan penyakit :
';

LVTerapi.Items.Clear;
while not DM.Query.eof do
begin
Daftar := LVKonsultasi.Items.Add;
Daftar.Caption := ' ' +
DM.Query.FieldByName('Nama').AsString +
' dengan CF : ' + FormatFloat('0.00',
DM.Query.FieldByName('cf').AsFloat);

//cari obat
temp := FormatFloat('0.00',
DM.Query.FieldByName('CF').AsFloat);
for i := 1 to length(temp) do
if temp[i] = ',' then
temp[i] := '.'
else temp[i] := temp[i];

with DM.Query1, Daftar do


begin
Close;
SQL.Clear;
SQL.Add(' select O.* from Obat O, Terapi
T ');
if
DM.Query.FieldByName('epilepsi').AsString = 'T'
then

178
SQL.Add(' where T.NoNonepilepsi = ' +
DM.Query.FieldByName('Nomor').AsString)
else SQL.Add(' where T.Noepilepsi = ' +

DM.Query.FieldByName('Nomor').AsString);
SQL.Add(' and T.NoObat = O.NoObat '+
' and T.CFTotal1 <= :cf '+
' and T.CFTotal2 >= :cf '+
' order by namaobat ');
ParamByName('cf').AsString := temp;
Open;

Daftar := LVTerapi.Items.Add;
Caption := '';
Daftar := LVTerapi.Items.Add;
Caption := ' Penyakit ';
SubItems.add(': ' +
DM.Query.FieldByName('Nama').AsString);
if Eof then
begin
Daftar := LVTerapi.Items.Add;
Caption := '';
Daftar := LVTerapi.Items.Add;
Caption := ' Belum ada referensi
obat';
end else
begin

// kalau dapet tampilkan


while not Eof do
begin
Daftar := LVTerapi.Items.Add;
Caption := ' ';
Daftar := LVTerapi.Items.Add;
Caption := ' Nama Obat';
SubItems.Add(': ' +
FieldByName('NamaObat').AsString);

179
if FieldByName('Dosis').AsString <>
'' then
begin
Daftar := LVTerapi.Items.Add;
Caption := ' Dosis ';
SubItems.Add(': ' +
FieldByName('Dosis').AsString);
end;

if FieldByName('ES1').AsString <> ''


then
begin
Daftar := LVTerapi.Items.Add;
Caption := ' E.Samping (sesuai
dosis)';
SubItems.Add (': ' +
FieldByName('ES1').AsString);
end;

if FieldByName('ES2').AsString <> ''


then
begin
Daftar := LVTerapi.Items.Add;
Caption := ' E.Samping (tak
sesuai dosis)';
SubItems.Add(': ' +
FieldByName('ES2').AsString);
end;

if FieldByName('Larangan').AsString
<> '' then
begin
Daftar := LVTerapi.Items.Add;
Caption := ' Larangan';
SubItems.Add(': ' +
FieldByName('Larangan').AsString);

180
end;

if FieldByName('Harga').AsString <>
'' then
begin
Daftar := LVTerapi.Items.Add;
Caption := ' Harga';
SubItems.Add(': ' +
FieldByName('Harga').AsString);
end;
Next;
end;
end;
end;

//beri penjelasan bagaimana


Daftar := LVPenjelasan.Items.Add;
Daftar.Caption := '';
Daftar := LVPenjelasan.Items.Add;
Daftar.Caption := ' Dipilih penyakit
epilepsi ' +
DM.Query.FieldByName('nama').AsString;
Daftar := LVPenjelasan.Items.Add;
Daftar.Caption := ' karena aturan untuk
penyakit tersebut :';

//aturannya
if
DM.Query.FieldByName('epilepsi').AsString = 'Y'
then
begin
//aturan penyakit
with DM, FrmCampuran, Daftar,
LVPenjelasan do
begin
cariQ1(' select P.Rule, S.Namasawan,
E.NamaEpilepsi, '+

181
' P.CFEpilepsi '+
' from Penyakit P, Sawan S, Epilepsi
E'+
' where P.NoEpilepsi = E.NoEpilepsi '+
' and P.Nosawan = S.Nosawan '+
' and P.NoEpilepsi = ' +
Query.FieldByName('nomor').AsString +
' order by rule, noepilepsi ');

while not Query1.eof do


begin
rule :=
Query1.FieldByName('Rule').AsString;
Daftar := Items.Add;
Daftar.Caption := '';
Daftar := Items.Add;
Daftar.Caption := ' Aturan ' +

Query1.FieldByName('Rule').AsString;
Daftar := Items.Add;
Daftar.Caption := ' Menderita
Epilepsi "' +

Query1.FieldByName('NamaEpilepsi').AsString +
'" dengan CF '+
FormatFloat('0.00',

Query1.FieldByName('CFEpilepsi').AsFloat);
Daftar := Items.Add;
Daftar.Caption := ' JIKA
mengalami sawan '+

Query1.FieldByName('namasawan').AsString;
DM.Query1.next;

while (not Query1.eof) and

182
(Query1.FieldByName('Rule').AsString = rule) do
begin
Daftar := Items.Add;
Daftar.Caption := ' DAN
mengalami sawan '+

Query1.FieldByName('namasawan').AsString;
Query1.Next;
end;

cariQ2(' select F.Rule, L.NamaLain,


E.NamaEpilepsi, '+
' F.CFEpilepsi, F.Nilai '+
' from Final F, Penyakit P,
Lain L, Epilepsi E'+
' where F.NoEpilepsi =
E.NoEpilepsi '+
' and P.NoEpilepsi =
E.NoEpilepsi '+
' and F.NoLain = L.NoLain '+
' and F.Rule = P.Rule '+
' and F.Rule = '+ rule +
' group by F.Rule, L.NamaLain,
E.NamaEpilepsi, '+
' F.CFEpilepsi, F.Nilai');

while not DM.Query2.Eof do


begin
Daftar := Items.Add;
Daftar.Caption := ' DAN '+

Query2.FieldByName('namalain').AsString + ' ' +

Query2.FieldByName('nilai').AsString;
Query2.next;
Application.ProcessMessages;

183
end;
end;
end;

with DM, FrmCampuran, LVPenjelasan,


Daftar do
begin
// cari dari final yang tidak ada di
penyakit
cariQ1(' select F.Rule, E.NamaEpilepsi,
L.NamaLain, '+
' F.CFEpilepsi, F.Nilai '+
' from Final F, Epilepsi E, Lain L'+
' where F.NoEpilepsi = E.NoEpilepsi
'+
' and F.NoEpilepsi = '+
Query.FieldByName('nomor').AsString +
' and F.NoLain = L.NoLain '+
' and F.Rule not in (select rule from
penyakit) '+
' group by F.Rule, E.NamaEpilepsi,
L.NamaLain, '+
' F.CFEpilepsi, F.Nilai'+
' order by rule, noepilepsi ');

while not Query1.eof do


begin
rule :=
Query1.FieldByName('Rule').AsString;
Daftar := Items.Add;
Caption := '';
Daftar := Items.Add;
Caption := ' Aturan ' +

Query1.FieldByName('Rule').AsString;
Daftar := Items.Add;

184
Caption := ' Menderita Epilepsi
"' +

Query1.FieldByName('NamaEpilepsi').AsString +
'" dengan CF '+ FormatFloat('0.00',

Query1.FieldByName('CFEpilepsi').AsFloat);

Daftar := Items.Add;
Caption := ' JIKA ' +

Query1.FieldByName('namalain').AsString + ' ' +

Query1.FieldByName('nilai').AsString;
DM.Query1.next;

while (not Query1.eof) and

(Query1.FieldByName('Rule').AsString = rule) do
begin
Daftar := Items.Add;
Caption := ' DAN ' +

Query1.FieldByName('namalain').AsString + ' ' +

Query1.FieldByName('nilai').AsString;
DM.Query1.next;
end;
Application.ProcessMessages;
end;
end;

//aturan sawan
with DM, FrmCampuran, LVPenjelasan,
Daftar do
begin
// cari dari gejala sawan

185
cariQ1(' select B.Rule, S.Namasawan,
G.NamaGejala, '+
' G.Keterangan, B.CFSawan '+
' from gejalasawan B, Sawan S, Gejala
G, Penyakit P '+
' where B.Nogejala = G.NoGejala '+
' and B.Nosawan = S.Nosawan '+
' and P.NoSawan = B.NoSawan '+
' and P.NoEpilepsi = '+
Query.FieldByName('nomor').AsString +
' group by B.Rule, S.Namasawan,
G.NamaGejala, '+
' G.Keterangan, B.CFSawan '+
' order by B.rule, S.nosawan');

while not Query1.eof do


begin
rule :=
Query1.FieldByName('Rule').AsString;
Daftar := Items.Add;
Caption := '';
Daftar := Items.Add;
Caption := ' Aturan ' +

Query1.FieldByName('Rule').AsString;
Daftar := Items.Add;
Caption := ' Mengalami Sawan "'
+

Query1.FieldByName('NamaSawan').AsString +
'" dengan CF '+
FormatFloat('0.00',

Query1.FieldByName('CFsawan').AsFloat);

Daftar := Items.Add;

186
Caption := ' JIKA mengalami
gejala '+

Query1.FieldByName('namagejala').AsString ;
Query1.next;

while (not Query1.eof) and

(Query1.FieldByName('Rule').AsString = rule) do
begin
Daftar := Items.Add;
Caption := ' DAN mengalami
gejala '+

Query1.FieldByName('namagejala').AsString;
Query1.next;
end;
Application.ProcessMessages;
end;
end;
end else
begin
//aturan non penyakit
with DM, FrmCampuran, Daftar,
LVPenjelasan do
begin
cariQ1('select P.Rule, G.NamaGejala, '+
' E.NamaNonEpilepsi, P.CFNonEpilepsi
'+
' from PenyakitNonEpilepsi P, Gejala
G, NonEpilepsi E'+
' where P.NoNonEpilepsi =
E.NoNonEpilepsi '+
' and P.NoGejala = G.NoGejala '+
' and P.NoNonEpilepsi = ' +
Query.FieldByName('nomor').AsString +

187
' order by P.Rule, P.nononepilepsi
');

while not Query1.eof do


begin
rule :=
Query1.FieldByName('Rule').AsString;
Daftar := Items.Add;
Daftar.Caption := '';
Daftar := Items.Add;
Daftar.Caption := ' Aturan ' +

Query1.FieldByName('Rule').AsString;
Daftar := Items.Add;
Daftar.Caption :=
' Menderita Penyakit Non
Epilepsi "' +

Query1.FieldByName('NamaNonEpilepsi').AsString
+
'" dengan CF '+
FormatFloat('0.00',

Query1.FieldByName('CFNonEpilepsi').AsFloat);
Daftar := Items.Add;
Daftar.Caption := ' JIKA
mengalami gejala '+

Query1.FieldByName('namagejala').AsString;
DM.Query1.next;

while (not Query1.eof) and

(Query1.FieldByName('Rule').AsString = rule) do
begin
Daftar := Items.Add;

188
Daftar.Caption := ' DAN
mengalami gejala '+

Query1.FieldByName('namagejala').AsString;
Query1.Next;
end;

cariQ2(' select F.Rule, L.NamaLain,


E.NamaNonEpilepsi, '+
' F.CFNonEpilepsi, F.Nilai '+
' from FinalNonEpilepsi F,
PenyakitNonEpilepsi P, '+
' Lain L, NonEpilepsi E'+
' where F.NoNonEpilepsi =
E.NoNonEpilepsi '+
' and P.NoNonEpilepsi =
E.NoNonEpilepsi '+
' and F.NoLain = L.NoLain '+
' and F.Rule = P.Rule '+
' and F.Rule = '+ rule +
' group by F.Rule, L.NamaLain,
E.NamaNonEpilepsi, '+
' F.CFNonEpilepsi, F.Nilai ');

while not DM.Query2.Eof do


begin
Daftar := Items.Add;
Daftar.Caption := ' DAN '+

Query2.FieldByName('namalain').AsString + ' ' +

Query2.FieldByName('nilai').AsString;
Query2.next;
Application.ProcessMessages;
end;
end;
end;

189
with DM, FrmCampuran, LVPenjelasan,
Daftar do
begin
// cari dari final yang tidak ada di
penyakit non epilepsi
cariQ1(' select F.Rule,
E.NamaNonEpilepsi, L.NamaLain, '+
' F.CFNonEpilepsi, F.Nilai '+
' from FinalNonEpilepsi F,
NonEpilepsi E, Lain L'+
' where F.NoNonEpilepsi =
E.NoNonEpilepsi '+
' and F.NoLain = L.NoLain '+
' and F.NoNonepilepsi = ' +
Query.FieldByName('nomor').AsString
+
' and not F.rule in '+
' (select rule from
penyakitnonepilepsi) '+
' group by F.Rule,
E.NamaNonEpilepsi, L.NamaLain, '+
' F.CFNonEpilepsi, F.Nilai '+
' order by F.Rule,
E.nononepilepsi');

while not Query1.eof do


begin
rule :=
Query1.FieldByName('Rule').AsString;
Daftar := Items.Add;
Caption := '';
Daftar := Items.Add;
Caption := ' Aturan ' +

Query1.FieldByName('Rule').AsString;
Daftar := Items.Add;

190
Caption := ' Menderita Penyakit
Non Epilepsi "' +

Query1.FieldByName('NamaNonEpilepsi').AsString
+
'" dengan CF '+
FormatFloat('0.00',

Query1.FieldByName('CFNonEpilepsi').AsFloat);

Daftar := Items.Add;
Caption := ' JIKA ' +

Query1.FieldByName('namalain').AsString + ' ' +

Query1.FieldByName('nilai').AsString;
DM.Query1.next;

while (not Query1.eof) and

(Query1.FieldByName('Rule').AsString = rule) do
begin
Daftar := Items.Add;
Caption := ' DAN ' +

Query1.FieldByName('namalain').AsString + ' ' +

Query1.FieldByName('nilai').AsString;
DM.Query1.next;
end;
Application.ProcessMessages;
end;
end;
end;

DM.Query.next;
end;

191
//tampilkan data
Daftar := LVPenjelasan.Items.Add;
Daftar.Caption := '';
Daftar := LVPenjelasan.Items.Add;
Daftar.Caption := '';
Daftar := LVPenjelasan.Items.Add;
Daftar.Caption := ' Data yang ada : ';
with DM.Query, LVPenjelasan, Daftar,
FrmCampuran do
begin
cariQ(' select G.NamaGejala, C.CFGejala,
C.Jawab '+
' from Gejala G, Cekgejala C'+
' where G.NoGejala = C.NoGejala '+
' order by C.Jawab Desc, C.cfgejala');

Daftar := LVPenjelasan.Items.Add;
Daftar.Caption := '';
Daftar := LVPenjelasan.Items.Add;
Daftar.Caption := ' Data Gejala :';
while not Eof do
begin
Daftar := LVPenjelasan.Items.Add;
if FieldByName('jawab').AsString = '1'
then
Daftar.Caption := ' ada gejala
'+
FieldByName('NamaGejala').AsString +
' dengan CF ' + FormatFloat('0.00',
FieldByName('CFGejala').AsFloat)
else
Daftar.Caption := ' tidak ada
gejala '+
FieldByName('NamaGejala').AsString +
' dengan CF ' + FormatFloat('0.00',
FieldByName('CFGejala').AsFloat);

192
DM.Query.next;
end;

cariQ(' select S.namasawan, C.CFSawan,


C.Jawab '+
' from Sawan S, CekSawan C '+
' where S.NoSawan = C.NoSawan '+
' order by C.Jawab Desc, C.cfsawan');

Daftar := LVPenjelasan.Items.Add;
Daftar.Caption := '';
Daftar := LVPenjelasan.Items.Add;
Daftar.Caption := ' Data Sawan :';
while not Eof do
begin
Daftar := LVPenjelasan.Items.Add;
if FieldByName('jawab').AsString = '1'
then
Daftar.Caption := ' ada sawan '+
FieldByName('Namasawan').AsString +
' dengan CF ' + FormatFloat('0.00',
FieldByName('CFSawan').AsFloat)
else
Daftar.Caption := ' tidak ada
sawan '+
FieldByName('Namasawan').AsString +
' dengan CF ' + FormatFloat('0.00',
FieldByName('CFSawan').AsFloat);

DM.Query.next;
end;

cariQ(' select L.NamaLain, C.Nilai,


C.CFLain, C.Jawab '+
' from Lain L, Ceklain C '+
' where L.NoLain = C.NoLain '+

193
' order by C.Jawab, C.cflain, C.nilai');

Daftar := LVPenjelasan.Items.Add;
Daftar.Caption := '';
Daftar := LVPenjelasan.Items.Add;
Daftar.Caption := ' Data Syarat Lain :';
while not Eof do
begin
Daftar := LVPenjelasan.Items.Add;
if FieldByName('jawab').AsString = '1'
then
Daftar.Caption := ' ada syarat
'+
FieldByName('Namalain').AsString +
' : ' + FieldByName('Nilai').AsString
+
' dengan CF ' + FormatFloat('0.00',
FieldByName('CFLain').AsFloat)
else
Daftar.Caption := ' tidak ada
syarat '+
FieldByName('NamaLain').AsString +
' : ' + FieldByName('Nilai').AsString
+
' dengan CF ' + FormatFloat('0.00',
FieldByName('CFLain').AsFloat);

DM.Query.next;
end;
end;
BtnTerapi.SetFocus;
end;

Procedure TFrmMain.lewat;
var i : integer;
begin
with DM, FrmCampuran do

194
begin
//kosongkan variabel sawan, gejala,
syarat
NS := 0;
NOS := 0;
NG := 0;
NOG := 0;
for i := 1 to 100 do
begin
CFS[i] := 0;
CFG[i] := 0;
end;

CFG1 := 0;
CFG2 := 0;
CFS1 := 0;
CFS2 := 0;
Tor := 0;
CekFinal := true;

Query.Next;

while not Query.Eof do


begin
NE :=
Query.FieldByName('NoEpilepsi').AsInteger;
// cek dalam daftar penyakit epilepsi
cariQ1(' select * from penyakit where
noepilepsi = ' +
IntToStr(NE) + ' order by cfepilepsi
desc, rule');

if Query1.IsEmpty then
begin
BalikSawan := false;
cariQ3(' select F.*, L.Namalain
from Final F, Lain L '+

195
' where F.noepilepsi = '+
IntToStr(NE) +
' and L.Nolain = F.Nolain '+
' order by F.CFepilepsi desc,
F.Rule');
if Query3.IsEmpty then
Query.Next
else begin
CekFinal := false;
Syarat(NE);
exit;
end;
end else
begin
BalikSawan := true;
CekFinal := false;
Sawan(NE);
exit;
end;
end;
Penyakit;
end;
end;

Procedure TFrmMain.lewatP;
var i : integer;
begin
with DM, FrmCampuran do
begin
NS := 0;
NOS := 0;
for i := 1 to 100 do CFS[i] := 0;

CFS1 := 0;
CFS2 := 0;
tor := 0;
CekFinal := true;

196
BalikSawan := true;

Query.Next;

while not Query.Eof do


begin
NE :=
Query.FieldByName('NoNonEpilepsi').AsInteger;
// cek dalam daftar penyakit epilepsi
cariQ1(
' select * from PenyakitNonEpilepsi
'+
' where NoNonEpilepsi = ' +
IntToStr(NE) +
' order by cfnonepilepsi desc,
rule');

if Query1.IsEmpty then
begin
if CekFinal = true then
begin
cariQ3(
' select F.*, L.Namalain '+
' from FinalNonEpilepsi F,
Lain L '+
' where F.nononepilepsi = '+
IntToStr(NE) +
' and L.Nolain = F.Nolain '+
' order by F.CFnonepilepsi
desc, F.Rule');
if Query3.IsEmpty then
Query.Next
else begin
CekFinal := false;
SyaratP(NE);
exit;
end;

197
end else
begin
SyaratP(NE);
exit;
end;
end else
begin
GejalaP(NE);
exit;
end;
end;
TampilHasil;
end;
end;

Procedure TFrmMain.Sawan(NE : integer);


var i : integer;
temp1, kal : string;
Daftar : TListItem;
begin
with DM, FrmCampuran, Daftar do
begin
while not Query1.Eof do
begin
NS :=
Query1.FieldByName('NoSawan').AsInteger;
cariQ2(' select * from ceksawan where
nosawan = '+
IntToStr(NS));
if not Query2.IsEmpty then
begin
//jawab tidak
if
Query2.FieldByName('cfsawan').AsFloat < 0 then
if CFNE > standar then
begin
lewat;

198
exit;
end;
inc(NOS);
CFS[NOS] :=
Query2.FieldByName('CFSawan').AsFloat;

end else
begin
// Cari dari tabel gejala-sawan
cariQ2(' select * from gejalasawan
where nosawan = ' +
IntToStr(NS));
if not Query2.IsEmpty then
begin
RS :=
Query2.FieldByName('rule').AsInteger;
CFNS :=
Query2.FieldByName('CFSawan').AsFloat;
while not Query2.Eof do
begin
//cek apakah RS masih sama
if not(RS =
Query2.FieldByName('rule').AsInteger) then
begin
//hitung CFS sementara
CFG2 := CFG[1];
for i := 2 to NOG do
if CFG2 > CFG[i] then CFG2 :=
CFG[i];

CFG2 := CFG2 * CFNS;


CFG1 := Kombinasi(CFG1, CFG2);
RS :=
Query2.FieldByName('Rule').AsInteger;
CFNS :=
Query2.FieldByName('CFSawan').AsInteger;
end;

199
NG :=
Query2.FieldByName('NoGejala').AsInteger;

//cari dari tabel cek gejala


cariQ3(' select * from cekgejala
where nogejala = ' +
IntToStr(NG));
if not Query3.IsEmpty then
begin
inc(NOG);
CFG[NOG] :=
Query3.FieldByName('CFGejala').AsFloat;
end else
begin
//Cari dari tabel gejala
cariQ3('select * from gejala
where nogejala = ' +
IntToStr(NG));

//tanyakan ke pengguna
LVKonsultasi.Items.Clear;
RBYa.Enabled := true;
RBTidak.Enabled := true;
RBTTahu.Enabled := true;
Daftar := LVKonsultasi.Items.Add;
Caption := '';
Daftar := LVKonsultasi.Items.Add;
Caption := '';

i := 0;
kal := 'Apakah pasien mengalami
gejala ' +

Query3.FieldByName('NamaGejala').AsString + '
' +

200
Query3.FieldByName('Keterangan').AsString +'?';
while i < Length(kal) do
begin
Daftar :=
LVKonsultasi.Items.Add;
Caption := copy(kal, i+1, 50);
i := i +50;
end;
RBTTahu.SetFocus;
Gejala := true;
exit;
end;
Query2.Next;
end;

CFG2 := CFG[1];
for i := 2 to NOG do
if CFG2 > CFG[i] then CFG2 := CFG[i];

CFG2 := CFG2 * CFNS;


CFG1 := Kombinasi(CFG1, CFG2);
Inc(NOS);
CFS[NOS] := CFG1;
Temp1 := FloatToStr(CFG1);
Temp1 :=
FormatFloat('0.00',StrToFloat(Temp1));
for i := 1 to length(Temp1) do
if Temp1[i] = ',' then Temp1[i] :=
'.'
else Temp1[i] := Temp1[i];

Tambah(' insert into ceksawan


(nosawan, cfsawan) '+
' values(' + IntToStr(NS) +', '+
temp1 + ')');
//variabel sawan

201
NG := 0;
NOG := 0;
for i := 1 to 100 do CFG[i] := 0;

CFG1 := 0;
CFG2 := 0;
Query1.Next;
if not(RE =
Query1.FieldByName('Rule').AsInteger) then
begin
cariQ3(' select F.*, L.Namalain
from Final F, Lain L '+
' where F.noepilepsi = '+
IntToStr(NE) +
' and L.Nolain = F.Nolain '+
' and F.Rule = ' + IntToStr(RE) +
' order by F.CFepilepsi desc');

if not Query3.IsEmpty then


begin
CekFinal := false;
Inc(Tor);
cari[Tor] := RE;
Syarat(NE);
exit;
end;
end else
Sawan(NE);
Exit;
end;
end;
inc(NOS);
CFS[NOS] := 0;
Query1.Next;
end;
Query1.Next;

202
BalikSawan := false;

if Tor <> 0 then


cariQ3(' select F.*, L.Namalain from
Final F, Lain L '+
' where F.noepilepsi = '+
IntToStr(NE) +
' and L.Nolain = F.Nolain '+
' and F.Rule not in (' +
pencarian + ')'+
' order by F.CFepilepsi desc,
F.Rule')
else
cariQ3(' select F.*, L.Namalain from
Final F, Lain L '+
' where F.noepilepsi = '+
IntToStr(NE) +
' and L.Nolain = F.Nolain '+
' order by F.CFepilepsi desc,
F.Rule');

if not Query3.IsEmpty then


begin
CekFinal := false;
end;
Syarat(NE);
exit;
end;
end;

Procedure TFrmMain.Syarat(NE : integer);


var i : integer;
Daftar : TListItem;
kal : string;
begin
with DM, FrmCampuran, Daftar do
begin

203
while not Query3.Eof do
begin
Gejala := false;
NS :=
Query3.FieldByName('NoLain').Asinteger;
Nilai :=
Query3.FieldByName('Nilai').AsString;
cariQ4(' select * from ceklain where
nolain = ' +
IntToStr(NS) + ' and nilai =
"' + Nilai + '"');

if not Query4.IsEmpty then


begin
inc(NOS);
CFS[NOS] :=
Query4.FieldByName('CFLain').AsFloat;
end else
begin
//tanyakan ke pengguna
LVKonsultasi.Items.Clear;
RBYa.Enabled := true;
RBTidak.Enabled := true;
RBTTahu.Enabled := true;
Daftar := LVKonsultasi.Items.Add;
Caption := '';
Daftar := LVKonsultasi.Items.Add;
Caption := '';

i := 0;
kal := 'Apakah ' +

Query3.FieldByName('NamaLain').AsString +
' = ' +
Query3.FieldByName('Nilai').AsString +'?';
while i < Length(kal) do
begin

204
Daftar := LVKonsultasi.Items.Add;
Caption := copy(kal, i+1, 50);
i := i +50;
end;

RBTTahu.SetFocus;
exit;
end;
Query3.Next;
end;

if Not Query1.eof then


begin
Sawan(NE);
Exit;
end else
begin
with DM.Query4 do
begin
Close;
SQL.Clear;
SQL.Add('Insert into hasil values('+
IntToStr(NE) +
', :nama, :cf, "Y")');
ParamByName('nama').AsString :=

Query.FieldByName('Namaepilepsi').AsString;
ParamByName('cf').AsString :=
FloatToStr(CFS1);
ExecSQL;
end;
Lewat;
end;
end;
end;

Procedure TFrmMain.Penyakit;

205
var i : integer;
begin
Epilepsi := false;
with DM, FrmCampuran do
begin
NS := 0;
NOS := 0;
for i := 1 to 100 do CFS[i] := 0;

CFS1 := 0;
CFS2 := 0;

CekFinal := true;
BalikSawan := true;
Tor := 0;

cariQ(' select * from nonepilepsi order


by nononepilepsi');
if Query.IsEmpty then
begin
//cari terapi
TampilHasil;
end else
begin
while not Query.Eof do
begin
NE :=
Query.FieldByName('NoNonEpilepsi').AsInteger;

// cek dalam daftar penyakit


nonepilepsi
cariQ1(' select * from
penyakitNonEpilepsi '+
' where noNonepilepsi = ' +
IntToStr(NE) +
' order by cfNonepilepsi desc,
rule');

206
if Query1.IsEmpty then
begin
BalikSawan := false;
cariQ3('select F.*, L.NamaLain '+
' from finalnonepilepsi F, Lain
L '+
' where F.noNonepilepsi = ' +
IntToStr(NE) +
' and L.NoLain = F.NoLain '+
' order by F.cfNonepilepsi
desc, F.rule');

if Query3.IsEmpty then Query.Next


else begin
CekFinal := false;
RE :=
Query3.FieldByName('rule').AsInteger;
CFNE :=
Query3.FieldByName('CFNonEpilepsi').AsFloat;
SyaratP(NE);
exit;
end;
end else
begin
RE :=
Query1.FieldByName('rule').AsInteger;
CFNE :=
Query1.FieldByName('CFNonEpilepsi').AsFloat;
GejalaP(NE);
exit;
end;
end;
end;
end;
end;

207
procedure TFrmMain.GejalaP(NE : integer);
var i : integer;
Daftar : TlistItem;
kal : string;
begin
with DM, FrmCampuran, Daftar do
begin
while not Query1.Eof do
begin
//cek RE = Rule
if not (RE =
Query1.FieldByName('Rule').AsInteger) then
begin
cariQ3(' select F.*, L.Namalain '+
' from FinalNonEpilepsi F, Lain
L '+
' where F.noNonepilepsi = '+
IntToStr(NE) +
' and L.Nolain = F.Nolain '+
' and F.Rule = ' +
IntToStr(RE) +
' order by F.CFNonepilepsi
desc, F.Rule');
if not Query3.IsEmpty then
begin
CekFinal := false;
Inc(Tor);
Cari[Tor] := RE;
SyaratP(NE);
exit;
end;
end;

NS :=
Query1.FieldByName('NoGejala').AsInteger;
cariQ2(' select * from CekGejala where
Nogejala = '+

208
IntToStr(NS));
if not Query2.IsEmpty then
begin
//jawab tidak
if
Query2.FieldByName('cfgejala').AsFloat < 0 then
if CFNE > standar then
begin
lewatP;
exit;
end;
inc(NOS);
CFS[NOS] :=
Query2.FieldByName('CFGejala').AsFloat;
Query1.Next;
end else
begin

//Cari dari tabel gejala


cariQ2('select * from gejala where
nogejala = ' +
IntToStr(NS));

//tanyakan ke pengguna
LVKonsultasi.Items.Clear;
RBYa.Enabled := true;
RBTidak.Enabled := true;
RBTTahu.Enabled := true;
Daftar := LVKonsultasi.Items.Add;
Caption := '';
Daftar := LVKonsultasi.Items.Add;
Caption := '';

i := 0;
kal := 'Apakah pasien mengalami gejala
' +

209
Query2.FieldByName('NamaGejala').AsString +
' ' +
Query2.FieldByName('Keterangan').AsString +'?';
while i < Length(kal) do
begin
Daftar := LVKonsultasi.Items.Add;
Caption := copy(kal, i+1, 50);
i := i +50;
end;

RBTTahu.SetFocus;
Gejala := true;
exit;
end;
end;

BalikSawan := false;

if Tor <> 0 then


cariQ3(' select F.*, L.Namalain '+
' from FinalNonEpilepsi F, Lain L
'+
' where F.noNonepilepsi = '+
IntToStr(NE) +
' and L.Nolain = F.Nolain '+
' and F.Rule not in (' +
pencarian + ')'+
' order by F.CFNonepilepsi desc,
F.Rule')
else
cariQ3(' select F.*, L.Namalain '+
' from FinalNonEpilepsi F, Lain L
'+
' where F.noNonepilepsi = '+
IntToStr(NE) +
' and L.Nolain = F.Nolain '+

210
' order by F.CFNonepilepsi desc,
F.Rule');

if not Query3.IsEmpty then


begin
CekFinal := false;
if not (RE =
Query3.FieldByName('Rule').AsInteger) then
begin
CFS2 := CFS[1];
for i := 2 to NOS do
if CFS2 > CFS[i] then CFS2 := CFS[i];

CFS2 := CFS2 * CFNE;


CFS1 := Kombinasi(CFS1, CFS2);
NOS := 0;
end;
end;
SyaratP(NE);
exit;
end;
end;

procedure TFrmMain.SyaratP(NE : integer);


var i : integer;
Daftar : TListItem;
kal : string;
begin
with DM, FrmCampuran, Daftar do
begin

CekFinal := true;
while not Query3.Eof do
begin

//cek RE = Rule

211
if not (RE =
Query3.FieldByName('Rule').AsInteger) then
begin
CFS2 := CFS[1];
for i := 2 to NOS do
if CFS2 > CFS[i] then CFS2 :=
CFS[i];

CFS2 := CFS2 * CFNE;


CFS1 := Kombinasi(CFS1, CFS2);
NOS := 0;
RE :=
Query3.FieldByName('Rule').AsInteger;
CFNE :=
Query3.FieldByName('CFNonEpilepsi').AsFloat;

if not Query1.Eof then


begin
GejalaP(NE);
Exit;
end;
end else
begin
Gejala := false;
NS :=
Query3.FieldByName('NoLain').Asinteger;
Nilai :=
Query3.FieldByName('Nilai').AsString;
cariQ4(' select * from ceklain
where nolain = ' +
IntToStr(NS) +' and nilai = "' +
Nilai + '"');

if not Query4.IsEmpty then


begin
inc(NOS);

212
CFS[NOS] :=
Query4.FieldByName('CFLain').AsFloat;
end else
begin
//tanyakan ke pengguna
LVKonsultasi.Items.Clear;
RBYa.Enabled := true;
RBTidak.Enabled := true;
RBTTahu.Enabled := true;
Daftar :=
LVKonsultasi.Items.Add;
Caption := '';
Daftar :=
LVKonsultasi.Items.Add;
Caption := '';

i := 0;
kal := 'Apakah ' +

Query3.FieldByName('NamaLain').AsString +
' = ' +

Query3.FieldByName('Nilai').AsString +'?';
while i < Length(kal) do
begin
Daftar :=
LVKonsultasi.Items.Add;
Caption := copy(kal, i+1,
50);
i := i +50;
end;

RBTTahu.SetFocus;
exit;
end;
end;
Query3.Next;

213
end;

CFS2 := CFS[1];
for i := 2 to NOS do
if CFS2 > CFS[i] then CFS2 :=
CFS[i];

CFS2 := CFS2 * CFNE;


CFS1 := Kombinasi(CFS1, CFS2);
NOS := 0;

Query1.Next;
if not Query1.eof then
begin
GejalaP(NE);
Exit;
end else
begin
with DM.Query4 do
begin
Close;
SQL.Clear;
SQL.Add('Insert into hasil values('+
IntToStr(NE) +
', :nama, :cf, "T")');
ParamByName('nama').AsString :=

Query.FieldByName('NamaNonepilepsi').AsString;
ParamByName('cf').AsString :=
FloatToStr(CFS1);
ExecSQL;
end;
LewatP;
end;
end;
end;

214
procedure TFrmMain.BtnTutupTerapiClick(Sender:
TObject);
begin
Frame.ActivePage := PKonsultasi;
BtnTerapi.SetFocus;
end;

procedure
TFrmMain.BtnTutupPenjelasanClick(Sender:
TObject);
begin
Frame.ActivePage := PKonsultasi;
BtnPenjelasanKonsultasi.SetFocus;
end;

end.

215

Das könnte Ihnen auch gefallen