VistA-cprs/CPRS-Chart/Options/fOptionsOther.pas

273 lines
7.6 KiB
Plaintext

unit fOptionsOther;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
StdCtrls, ExtCtrls, ComCtrls, ORCtrls, ORFn, rOrders, uCore, ORDtTm;
type
TfrmOptionsOther = class(TForm)
pnlBottom: TPanel;
btnOK: TButton;
btnCancel: TButton;
bvlBottom: TBevel;
stStart: TStaticText;
stStop: TStaticText;
dtStart: TORDateBox;
dtStop: TORDateBox;
lblMedsTab: TLabel;
lblTabDefault: TStaticText;
lblTab: TLabel;
cboTab: TORComboBox;
chkLastTab: TCheckBox;
Bevel1: TBevel;
lblEncAppts: TLabel;
stStartEncAppts: TStaticText;
txtTodayMinus: TStaticText;
txtEncStart: TCaptionEdit;
txtDaysMinus: TStaticText;
spnEncStart: TUpDown;
txtDaysPlus: TStaticText;
spnEncStop: TUpDown;
txtEncStop: TCaptionEdit;
txtTodayPlus: TStaticText;
stStopEncAppts: TStaticText;
Bevel2: TBevel;
btnEncDefaults: TButton;
procedure FormShow(Sender: TObject);
procedure btnOKClick(Sender: TObject);
procedure FormCreate(Sender: TObject);
procedure dtStartExit(Sender: TObject);
procedure dtStopExit(Sender: TObject);
procedure dtStartChange(Sender: TObject);
procedure txtEncStartChange(Sender: TObject);
procedure txtEncStopChange(Sender: TObject);
procedure txtEncStartExit(Sender: TObject);
procedure txtEncStopExit(Sender: TObject);
procedure btnEncDefaultsClick(Sender: TObject);
private
{ Private declarations }
FstartDt: TFMDateTime;
FstopDt: TFMDateTime;
FEncStartDays, FEncStopDays, FEncDefStartDays, FEncDefStopDays: integer;
//FDefaultEvent: string;
public
{ Public declarations }
end;
var
frmOptionsOther: TfrmOptionsOther;
const
ENC_MAX_LIMIT = 999;
procedure DialogOptionsOther(topvalue, leftvalue, fontsize: integer; var actiontype: Integer);
implementation
{$R *.DFM}
uses
rOptions, uOptions, rCore, rSurgery, uConst, fMeds;
procedure DialogOptionsOther(topvalue, leftvalue, fontsize: integer; var actiontype: Integer);
// create the form and make it modal, return an action
var
frmOptionsOther: TfrmOptionsOther;
begin
frmOptionsOther := TfrmOptionsOther.Create(Application);
actiontype := 0;
try
with frmOptionsOther do
begin
if (topvalue < 0) or (leftvalue < 0) then
Position := poScreenCenter
else
begin
Position := poDesigned;
Top := topvalue;
Left := leftvalue;
end;
ResizeAnchoredFormToFont(frmOptionsOther);
ShowModal;
actiontype := btnOK.Tag;
end;
finally
frmOptionsOther.Release;
end;
end;
procedure TfrmOptionsOther.FormShow(Sender: TObject);
// displays defaults
// opening tab^use last tab^autosave seconds^verify note title
var
last: integer;
values, tab: string;
begin
cboTab.Items.Assign(rpcGetOtherTabs);
if (cboTab.Items.IndexOf('Surgery') > -1) and (not ShowSurgeryTab) then
cboTab.Items.Delete(cboTab.Items.IndexOf('Surgery'));
values := rpcGetOther;
tab := Piece(values, '^', 1);
last := strtointdef(Piece(values, '^', 2), 0);
cboTab.SelectByID(tab);
cboTab.Tag := strtointdef(tab, -1);
chkLastTab.Checked := last = 1;
chkLastTab.Tag := last;
cboTab.SetFocus;
rpcGetRangeForMeds(FstartDt, FstopDt);
if FstartDt > 1 then
dtStart.Text := FormatFMDateTime('mmm d, yyyy',FstartDt);
if FstopDt > 1 then
dtStop.Text := FormatFMDateTime('mmm d, yyyy', FstopDt);
rpcGetRangeForEncs(FEncDefStartDays, FEncDefStopDays, True); // True gets params settings above User/Service level.
if FEncDefStartDays < 1 then
FEncDefStartDays := 0;
if FEncDefStopDays < 1 then
FEncDefStopDays := 0;
rpcGetRangeForEncs(FEncStartDays, FEncStopDays, False); // False gets User/Service params.
if ((FEncStartDays < 0) and (FEncStartDays <> 0)) then
FEncStartDays := FEncDefStartDays;
txtEncStart.Text := IntToStr(FEncStartDays);
if ((FEncStopDays < 0) and (FEncStopDays <> 0)) then
FEncStopDays := FEncDefStopDays;
txtEncStop.Text := IntToStr(FEncStopDays);
end;
procedure TfrmOptionsOther.btnOKClick(Sender: TObject);
// opening tab^use last tab^autosave seconds^verify note title
var
values, theVal: string;
begin
values := '';
if cboTab.ItemIEN <> cboTab.Tag then
values := values + cboTab.ItemID;
values := values + '^';
if chkLastTab.Checked then
if chkLastTab.Tag <> 1 then
values := values + '1';
if not chkLastTab.Checked then
if chkLastTab.Tag <> 0 then
values := values + '0';
values := values + '^^';
rpcSetOther(values);
if (dtStop.FMDateTime > 0) and (dtStart.FMDateTime > 0) then
begin
if dtStop.FMDateTime < dtStart.FMDateTime then
begin
ShowMessage('The stop time can not prior to the start time.');
dtStop.FMDateTime := FMToday;
dtStop.SetFocus;
Exit;
end;
theVal := dtStart.RelativeTime + ';' + dtStop.RelativeTime;
rpcPutRangeForMeds(theVal);
end;
if (dtStart.Text = '') and (dtStop.Text = '') then
rpcPutRangeForMeds('');
rpcPutRangeForEncs(txtEncStart.Text, txtEncStop.Text);
if frmMeds <> nil then
frmMeds.RefreshMedLists;
end;
procedure TfrmOptionsOther.FormCreate(Sender: TObject);
begin
FStartDT := 0;
FStopDT := 0;
end;
procedure TfrmOptionsOther.dtStartExit(Sender: TObject);
begin
if dtStart.FMDateTime > FMToday then
begin
ShowMessage('Start time can not greater than today.');
dtStart.FMDateTime := FMToday;
dtStart.SetFocus;
Exit;
end;
end;
procedure TfrmOptionsOther.dtStopExit(Sender: TObject);
begin
if (dtStop.FMDateTime > 0) and (dtStart.FMDateTime > 0) then
if (dtStop.FMDateTime < dtStart.FMDateTime) then
begin
ShowMessage('Stop time can not prior to start time');
dtStop.FMDateTime := FMToday;
dtStop.SetFocus;
Exit;
end;
end;
procedure TfrmOptionsOther.dtStartChange(Sender: TObject);
begin
if (dtStart.FMDateTime > FMToday) then
begin
ShowMessage('Start time can not greater than today.');
dtStart.FMDateTime := FMToday;
dtStart.SetFocus;
Exit;
end;
end;
procedure TfrmOptionsOther.txtEncStartChange(Sender: TObject);
begin
with txtEncStart do
begin
if Text = '' then
Exit;
if Text = ' ' then
Text := '0';
if StrToInt(Text) < 0 then
Text := '0';
if StrToIntDef(Text, ENC_MAX_LIMIT) > ENC_MAX_LIMIT then
begin
Text := IntToStr(ENC_MAX_LIMIT);
Beep;
InfoBox('Number must be < ' + IntToStr(ENC_MAX_LIMIT), 'Warning', MB_OK or MB_ICONWARNING);
end;
end;
end;
procedure TfrmOptionsOther.txtEncStopChange(Sender: TObject);
begin
with txtEncStop do
begin
if Text = '' then
Exit;
if Text = ' ' then
Text := '0';
if StrToInt(Text) < 0 then
Text := '0';
if StrToIntDef(Text, ENC_MAX_LIMIT) > ENC_MAX_LIMIT then
begin
Text := IntToStr(ENC_MAX_LIMIT);
Beep;
InfoBox('Number must be < ' + IntToStr(ENC_MAX_LIMIT), 'Warning', MB_OK or MB_ICONWARNING);
end;
end;
end;
procedure TfrmOptionsOther.txtEncStartExit(Sender: TObject);
begin
with txtEncStart do
if Text = '' then
Text := '0';
end;
procedure TfrmOptionsOther.txtEncStopExit(Sender: TObject);
begin
with txtEncStart do
if Text = '' then
Text := '0';
end;
procedure TfrmOptionsOther.btnEncDefaultsClick(Sender: TObject);
begin
txtEncStart.Text := IntToStr(FEncDefStartDays);
txtEncStop.Text := IntToStr(FEncDefStopDays);
end;
end.