148 lines
3.7 KiB
Plaintext
148 lines
3.7 KiB
Plaintext
unit fPCEEdit;
|
|
|
|
interface
|
|
|
|
uses
|
|
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
|
|
StdCtrls, ORFn, uPCE, fBase508Form, VA508AccessibilityManager;
|
|
|
|
type
|
|
TfrmPCEEdit = class(TfrmBase508Form)
|
|
btnNew: TButton;
|
|
btnNote: TButton;
|
|
lblNew: TMemo;
|
|
lblNote: TMemo;
|
|
btnCancel: TButton;
|
|
Label1: TStaticText;
|
|
procedure FormCreate(Sender: TObject);
|
|
private
|
|
{ Private declarations }
|
|
public
|
|
{ Public declarations }
|
|
end;
|
|
|
|
function EditPCEData(NoteData: TPCEData): boolean;
|
|
|
|
implementation
|
|
|
|
uses uCore, rCore, fEncnt, fFrame, fEncounterFrame;
|
|
|
|
{$R *.DFM}
|
|
|
|
const
|
|
TX_NEED_VISIT2 = 'A visit is required before entering encounter information.';
|
|
TX_NOPCE_TXT1 = 'the encounter date is in the future.';
|
|
TX_NOPCE_TXT2 = 'encounter entry has been disabled.';
|
|
TX_NOPCE_TXT = 'You can not edit encounter information because ';
|
|
TX_NOPCE_HDR = 'Can not edit encounter';
|
|
|
|
var
|
|
uPCETemp: TPCEData = nil;
|
|
uPCETempOld: TPCEData = nil;
|
|
uPatient: string = '';
|
|
|
|
function EditPCEData(NoteData: TPCEData): boolean; // Returns TRUE if NoteData is edited
|
|
var
|
|
frmPCEEdit: TfrmPCEEdit;
|
|
BtnTxt, NewTxt, txt: string;
|
|
Ans: integer;
|
|
|
|
begin
|
|
Result := FALSE;
|
|
if (Encounter.VisitCategory = 'H') then
|
|
begin
|
|
if Assigned(NoteData) then
|
|
Ans := mrNo
|
|
else
|
|
begin
|
|
InfoBox('Can not edit admission encounter', 'Error', MB_OK or MB_ICONERROR);
|
|
Ans := mrCancel;
|
|
end;
|
|
end
|
|
else
|
|
if not Assigned(NoteData) then
|
|
Ans := mrYes
|
|
else
|
|
if (NoteData.VisitString = Encounter.VisitStr) then
|
|
Ans := mrNo
|
|
else
|
|
begin
|
|
frmPCEEdit := TfrmPCEEdit.Create(Application);
|
|
try
|
|
if Encounter.NeedVisit then
|
|
begin
|
|
NewTxt := 'Create New Encounter';
|
|
BtnTxt := 'New Encounter';
|
|
end
|
|
else
|
|
begin
|
|
NewTxt := 'Edit Encounter for ' + Encounter.LocationName + ' on ' +
|
|
FormatFMDateTime('mmm dd yyyy hh:nn', Encounter.DateTime);
|
|
BtnTxt := 'Edit Current Encounter';
|
|
end;
|
|
frmPCEEdit.lblNew.Text := NewTxt;
|
|
frmPCEEdit.btnNew.Caption := BtnTxt;
|
|
frmPCEEdit.lblNote.Text := 'Edit Note Encounter for ' + ExternalName(NoteData.Location, 44) + ' on ' +
|
|
FormatFMDateTime('mmm dd yyyy hh:nn', NoteData.VisitDateTime);
|
|
ans := frmPCEEdit.ShowModal;
|
|
finally
|
|
frmPCEEdit.Free;
|
|
end;
|
|
end;
|
|
if ans = mrYes then
|
|
begin
|
|
if Encounter.NeedVisit then
|
|
begin
|
|
UpdateVisit(8);
|
|
frmFrame.DisplayEncounterText;
|
|
end;
|
|
if Encounter.NeedVisit then
|
|
begin
|
|
InfoBox(TX_NEED_VISIT2, TX_NO_VISIT, MB_OK or MB_ICONWARNING);
|
|
Exit;
|
|
end;
|
|
if not assigned(uPCETemp) then
|
|
uPCETemp := TPCEData.Create;
|
|
uPCETemp.UseEncounter := True;
|
|
if not CanEditPCE(uPCETemp) then
|
|
begin
|
|
if FutureEncounter(uPCETemp) then
|
|
txt := TX_NOPCE_TXT1
|
|
else
|
|
txt := TX_NOPCE_TXT2;
|
|
InfoBox(TX_NOPCE_TXT + txt, TX_NOPCE_HDR, MB_OK or MB_ICONWARNING);
|
|
Exit;
|
|
end;
|
|
uPCETemp.PCEForNote(USE_CURRENT_VISITSTR, uPCETempOld);
|
|
UpdatePCE(uPCETemp);
|
|
if not assigned(uPCETempOld) then
|
|
uPCETempOld := TPCEData.Create;
|
|
uPCETemp.CopyPCEData(uPCETempOld);
|
|
end
|
|
else
|
|
if ans = mrNo then
|
|
begin
|
|
UpdatePCE(NoteData);
|
|
Result := TRUE;
|
|
end;
|
|
end;
|
|
|
|
procedure TfrmPCEEdit.FormCreate(Sender: TObject);
|
|
begin
|
|
if uPatient <> Patient.DFN then
|
|
begin
|
|
KillObj(@uPCETemp);
|
|
KillObj(@uPCETempOld);
|
|
end;
|
|
uPatient := Patient.DFN;
|
|
end;
|
|
|
|
initialization
|
|
|
|
finalization
|
|
KillObj(@uPCETemp);
|
|
KillObj(@uPCETempOld);
|
|
uPatient := '';
|
|
|
|
end.
|