211 lines
5.2 KiB
Plaintext
211 lines
5.2 KiB
Plaintext
unit fGAF;
|
|
|
|
interface
|
|
|
|
uses
|
|
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
|
|
fPCEBase, StdCtrls, Buttons, ExtCtrls, Grids, ORFn, ORNet, ORCtrls,
|
|
ORDtTm, ComCtrls, fPCEBaseGrid, Menus, VA508AccessibilityManager;
|
|
|
|
type
|
|
TfrmGAF = class(TfrmPCEBaseGrid)
|
|
lblGAF: TStaticText;
|
|
edtScore: TCaptionEdit;
|
|
udScore: TUpDown;
|
|
dteGAF: TORDateBox;
|
|
lblEntry: TStaticText;
|
|
lblScore: TLabel;
|
|
lblDate: TLabel;
|
|
lblDeterminedBy: TLabel;
|
|
cboGAFProvider: TORComboBox;
|
|
btnURL: TButton;
|
|
Spacer1: TLabel;
|
|
Spacer2: TLabel;
|
|
procedure cboGAFProviderNeedData(Sender: TObject; const StartFrom: String;
|
|
Direction, InsertAt: Integer);
|
|
procedure edtScoreChange(Sender: TObject);
|
|
procedure dteGAFExit(Sender: TObject);
|
|
procedure cboGAFProviderExit(Sender: TObject);
|
|
procedure FormActivate(Sender: TObject);
|
|
procedure FormShow(Sender: TObject);
|
|
procedure btnURLClick(Sender: TObject);
|
|
procedure FormCreate(Sender: TObject);
|
|
private
|
|
FDataLoaded: boolean;
|
|
procedure LoadScores;
|
|
function BADData(ShowMessage: boolean): boolean;
|
|
public
|
|
procedure AllowTabChange(var AllowChange: boolean); override;
|
|
procedure GetGAFScore(var Score: integer; var Date: TFMDateTime; var Staff: Int64);
|
|
end;
|
|
|
|
function ValidGAFData(Score: integer; Date: TFMDateTime; Staff: Int64): boolean;
|
|
|
|
var
|
|
frmGAF: TfrmGAF;
|
|
|
|
implementation
|
|
|
|
uses rPCE, rCore, uCore, uPCE, fEncounterFrame, VA508AccessibilityRouter;
|
|
|
|
{$R *.DFM}
|
|
|
|
function ValidGAFData(Score: integer; Date: TFMDateTime; Staff: Int64): boolean;
|
|
begin
|
|
if(Score < 1) or (Score > 100) or (Date <= 0) or (Staff = 0) then
|
|
Result := FALSE
|
|
else
|
|
Result := ((Patient.DateDied <= 0) or (Date <= Patient.DateDied));
|
|
end;
|
|
|
|
procedure TfrmGAF.LoadScores;
|
|
var
|
|
i: integer;
|
|
tmp: string;
|
|
|
|
begin
|
|
RecentGafScores(3);
|
|
if(RPCBrokerV.Results.Count > 0) and (RPCBrokerV.Results[0] = '[DATA]') then
|
|
begin
|
|
for i := 1 to RPCBrokerV.Results.Count-1 do
|
|
begin
|
|
tmp := RPCBrokerV.Results[i];
|
|
lbGrid.Items.Add(Piece(tmp,U,5) + U + Piece(Piece(tmp,U,2),NoPCEValue,1) + U +
|
|
Piece(tmp,U,7) + U + Piece(tmp,U,8));
|
|
end;
|
|
end;
|
|
if(lbGrid.Items.Count > 0) then
|
|
SyncGridData
|
|
else
|
|
lbGrid.Items.Add('No GAF scores found.');
|
|
end;
|
|
|
|
procedure TfrmGAF.cboGAFProviderNeedData(Sender: TObject;
|
|
const StartFrom: String; Direction, InsertAt: Integer);
|
|
begin
|
|
inherited;
|
|
cboGAFProvider.ForDataUse(SubSetOfPersons(StartFrom, Direction));
|
|
end;
|
|
|
|
function TfrmGAF.BADData(ShowMessage: boolean): boolean;
|
|
var
|
|
PName, msg: string;
|
|
GAFDate: TFMDateTime;
|
|
UIEN: Int64;
|
|
|
|
begin
|
|
GAFDate := dteGAF.FMDateTime;
|
|
msg := ValidateGAFDate(GAFDate);
|
|
if(dteGAF.FMDateTime <> GAFDate) then
|
|
dteGAF.FMDateTime := GAFDate;
|
|
|
|
if(cboGAFProvider.ItemID = '') then
|
|
begin
|
|
if(msg <> '') then
|
|
msg := msg + CRLF;
|
|
msg := msg + 'A determining party is required to enter a GAF score.';
|
|
UIEN := uProviders.PCEProvider;
|
|
if(UIEN <> 0) then
|
|
begin
|
|
PName := uProviders.PCEProviderName;
|
|
msg := msg + ' Determined By changed to ' + PName + '.';
|
|
cboGAFProvider.SelectByIEN(UIEN);
|
|
if(cboGAFProvider.ItemID = '') then
|
|
begin
|
|
cboGAFProvider.InitLongList(PName);
|
|
cboGAFProvider.SelectByIEN(UIEN);
|
|
end;
|
|
end;
|
|
end;
|
|
|
|
if(ShowMessage and (msg <> '')) then
|
|
InfoBox(msg, 'Invalid GAF Data', MB_OK);
|
|
|
|
if(udScore.Position > udScore.Min) then
|
|
Result := (msg <> '')
|
|
else
|
|
Result := FALSE;
|
|
end;
|
|
|
|
procedure TfrmGAF.edtScoreChange(Sender: TObject);
|
|
var
|
|
i: integer;
|
|
|
|
begin
|
|
inherited;
|
|
i := StrToIntDef(edtScore.Text,udScore.Min);
|
|
if(i < udScore.Min) or (i > udScore.Max) then
|
|
i := udScore.Min;
|
|
udScore.Position := i;
|
|
edtScore.Text := IntToStr(i);
|
|
edtScore.SelStart := length(edtScore.Text);
|
|
end;
|
|
|
|
procedure TfrmGAF.dteGAFExit(Sender: TObject);
|
|
begin
|
|
inherited;
|
|
// BadData(TRUE);
|
|
end;
|
|
|
|
procedure TfrmGAF.cboGAFProviderExit(Sender: TObject);
|
|
begin
|
|
inherited;
|
|
BadData(TRUE);
|
|
end;
|
|
|
|
procedure TfrmGAF.AllowTabChange(var AllowChange: boolean);
|
|
begin
|
|
AllowChange := (not BadData(TRUE));
|
|
end;
|
|
|
|
procedure TfrmGAF.GetGAFScore(var Score: integer; var Date: TFMDateTime; var Staff: Int64);
|
|
begin
|
|
Score := udScore.Position;
|
|
if(Score > 0) then BadData(TRUE);
|
|
Date := dteGAF.FMDateTime;
|
|
Staff := cboGAFProvider.ItemIEN;
|
|
if(not ValidGAFData(Score, Date, Staff)) then
|
|
begin
|
|
Score := 0;
|
|
Date := 0;
|
|
Staff := 0
|
|
end;
|
|
end;
|
|
|
|
procedure TfrmGAF.FormActivate(Sender: TObject);
|
|
begin
|
|
inherited;
|
|
if(not FDataLoaded) then
|
|
begin
|
|
FDataLoaded := TRUE;
|
|
LoadScores;
|
|
cboGAFProvider.InitLongList(Encounter.ProviderName);
|
|
BadData(FALSE);
|
|
end;
|
|
end;
|
|
|
|
procedure TfrmGAF.FormShow(Sender: TObject);
|
|
begin
|
|
inherited;
|
|
FormActivate(Sender);
|
|
end;
|
|
|
|
procedure TfrmGAF.btnURLClick(Sender: TObject);
|
|
begin
|
|
inherited;
|
|
GotoWebPage(GAFURL);
|
|
end;
|
|
|
|
procedure TfrmGAF.FormCreate(Sender: TObject);
|
|
begin
|
|
inherited;
|
|
FTabName := CT_GAFNm;
|
|
btnURL.Visible := (User.WebAccess and (GAFURL <> ''));
|
|
FormActivate(Sender);
|
|
end;
|
|
|
|
initialization
|
|
SpecifyFormIsNotADialog(TfrmGAF);
|
|
|
|
end.
|