189 lines
4.8 KiB
Plaintext
189 lines
4.8 KiB
Plaintext
unit fPCEProvider;
|
|
|
|
interface
|
|
|
|
uses
|
|
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
|
|
StdCtrls, ORCtrls, ExtCtrls, uPCE, ORFn, fBase508Form,
|
|
VA508AccessibilityManager;
|
|
|
|
type
|
|
TfrmPCEProvider = class(TfrmBase508Form)
|
|
cboPrimary: TORComboBox;
|
|
lblMsg: TMemo;
|
|
btnYes: TButton;
|
|
btnNo: TButton;
|
|
btnSelect: TButton;
|
|
Spacer1: TLabel;
|
|
procedure cboPrimaryNeedData(Sender: TObject; const StartFrom: String;
|
|
Direction, InsertAt: Integer);
|
|
procedure cboPrimaryChange(Sender: TObject);
|
|
procedure FormCreate(Sender: TObject);
|
|
procedure btnSelectClick(Sender: TObject);
|
|
private
|
|
FPCEData: TPCEData;
|
|
FUseDefault: boolean;
|
|
FIEN: array[boolean] of Int64;
|
|
FName: array[boolean] of string;
|
|
public
|
|
procedure AskUser(ForceSelect: boolean);
|
|
end;
|
|
|
|
function NoPrimaryPCEProvider(AProviders: TPCEProviderList; PCEData: TPCEData): boolean;
|
|
|
|
implementation
|
|
|
|
uses rCore, uCore, rTIU, rPCE;
|
|
|
|
{$R *.DFM}
|
|
|
|
const
|
|
AreYouStr = 'Are You, ';
|
|
PEPStr2 = ' the Primary Provider for this Encounter';
|
|
PEPStr = PEPStr2 + '?';
|
|
IsStr = 'Is ';
|
|
SelectStr = 'Please Select' + PEPStr2 + '.';
|
|
|
|
function NoPrimaryPCEProvider(AProviders: TPCEProviderList; PCEData: TPCEData): boolean;
|
|
var
|
|
frmPCEProvider: TfrmPCEProvider;
|
|
idx: integer;
|
|
b: boolean;
|
|
X: string;
|
|
mr: TModalResult;
|
|
|
|
begin
|
|
if(AProviders.PrimaryIdx < 0) then
|
|
SetDefaultProvider(AProviders, PCEData);
|
|
if(AProviders.PrimaryIdx < 0) then
|
|
begin
|
|
frmPCEProvider := TfrmPCEProvider.Create(Application);
|
|
try
|
|
with frmPCEProvider do
|
|
begin
|
|
FPCEData := PCEData;
|
|
for b := FALSE to TRUE do
|
|
begin
|
|
FIEN[b] := AProviders.PendingIEN(b);
|
|
FName[b] := AProviders.PendingNAME(b);
|
|
end;
|
|
if(FIEN[TRUE] = 0) and (FIEN[FALSE] = 0) then
|
|
begin
|
|
AskUser(TRUE);
|
|
mr := ModalResult;
|
|
end
|
|
else
|
|
begin
|
|
FUseDefault := TRUE;
|
|
AskUser(FALSE);
|
|
mr := ModalResult;
|
|
if((mr in [mrAbort, mrNo]) and (FIEN[TRUE] <> FIEN[FALSE])) then
|
|
begin
|
|
FUseDefault := FALSE;
|
|
AskUser(FALSE);
|
|
mr := ModalResult;
|
|
end;
|
|
end;
|
|
if (mr = mrYes) then
|
|
begin
|
|
AProviders.AddProvider(IntToStr(FIEN[FUseDefault]), FName[FUseDefault], TRUE);
|
|
end
|
|
else
|
|
if (mr = mrOK) then
|
|
begin
|
|
idx := cboPrimary.ItemIndex;
|
|
if(idx >= 0) then
|
|
begin
|
|
X := frmPCEProvider.cboPrimary.Items[idx];
|
|
AProviders.AddProvider(Piece(X, U, 1), Piece(X, U, 2), TRUE);
|
|
end;
|
|
end;
|
|
end;
|
|
finally
|
|
frmPCEProvider.Free;
|
|
end;
|
|
Result := (AProviders.PrimaryIdx < 0);
|
|
end
|
|
else
|
|
Result := FALSE;
|
|
end;
|
|
|
|
{ TfrmPCEProvider }
|
|
|
|
procedure TfrmPCEProvider.cboPrimaryNeedData(Sender: TObject;
|
|
const StartFrom: String; Direction, InsertAt: Integer);
|
|
begin
|
|
if(FPCEData.VisitCategory = 'E') then
|
|
cboPrimary.ForDataUse(SubSetOfPersons(StartFrom, Direction))
|
|
else
|
|
cboPrimary.ForDataUse(SubSetOfUsersWithClass(StartFrom, Direction,
|
|
FloatToStr(FPCEData.PersonClassDate)));
|
|
end;
|
|
|
|
procedure TfrmPCEProvider.cboPrimaryChange(Sender: TObject);
|
|
var
|
|
txt: string;
|
|
|
|
begin
|
|
if(cboPrimary.ItemIEN <> 0) and (FPCEData.VisitCategory <> 'E') then
|
|
begin
|
|
txt := InvalidPCEProviderTxt(cboPrimary.ItemIEN, FPCEData.PersonClassDate);
|
|
if(txt <> '') then
|
|
begin
|
|
InfoBox(cboPrimary.DisplayText[cboPrimary.ItemIndex] + txt, TX_BAD_PROV, MB_OK);
|
|
cboPrimary.ItemIndex := -1;
|
|
end;
|
|
end;
|
|
end;
|
|
|
|
procedure TfrmPCEProvider.FormCreate(Sender: TObject);
|
|
begin
|
|
ResizeAnchoredFormToFont(self);
|
|
ClientHeight := cboPrimary.Top;
|
|
end;
|
|
|
|
procedure TfrmPCEProvider.btnSelectClick(Sender: TObject);
|
|
begin
|
|
ClientHeight := cboPrimary.Top + cboPrimary.Height + 5;
|
|
cboPrimary.Visible := TRUE;
|
|
btnSelect.Visible := FALSE;
|
|
btnYes.Caption := '&OK';
|
|
btnYes.ModalResult := mrOK;
|
|
btnNo.Caption := '&Cancel';
|
|
btnNo.ModalResult := mrCancel;
|
|
lblMsg.Text := SelectStr;
|
|
cboPrimary.Caption := lblMsg.Text;
|
|
cboPrimary.InitLongList(User.Name);
|
|
end;
|
|
|
|
procedure TfrmPCEProvider.AskUser(ForceSelect: boolean);
|
|
var
|
|
msg: string;
|
|
|
|
begin
|
|
if(ForceSelect) then
|
|
begin
|
|
btnSelectClick(Self);
|
|
end
|
|
else
|
|
begin
|
|
if(FIEN[FUseDefault] = 0) then
|
|
begin
|
|
ModalResult := mrAbort;
|
|
exit;
|
|
end
|
|
else
|
|
begin
|
|
if(FIEN[FUseDefault] = User.DUZ) then
|
|
msg := AreYouStr + FName[FUseDefault] + ',' + PEPStr
|
|
else
|
|
msg := IsStr + FName[FUseDefault] + PEPStr;
|
|
end;
|
|
lblMsg.text := msg;
|
|
cboPrimary.Caption := lblMsg.text;
|
|
end;
|
|
ShowModal;
|
|
end;
|
|
|
|
end.
|