VistA-cprs/CPRS-Chart/Encounter/fGAF.pas

211 lines
5.2 KiB
Plaintext
Raw Normal View History

unit fGAF;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
fPCEBase, StdCtrls, Buttons, ExtCtrls, Grids, ORFn, ORNet, ORCtrls,
2010-07-07 16:31:10 -04:00
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
2010-07-07 16:31:10 -04:00
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 <> ''));
2010-07-07 16:31:10 -04:00
FormActivate(Sender);
end;
2010-07-07 16:31:10 -04:00
initialization
SpecifyFormIsNotADialog(TfrmGAF);
end.