223 lines
6.2 KiB
Plaintext
223 lines
6.2 KiB
Plaintext
unit fProbLex;
|
|
|
|
interface
|
|
|
|
uses
|
|
SysUtils, WinTypes, WinProcs, Messages, Classes, Graphics, Controls,
|
|
Forms, Dialogs, ORFn, uProbs, StdCtrls, Buttons, ExtCtrls, ORctrls, uConst,
|
|
fAutoSz, uInit, fBase508Form, VA508AccessibilityManager;
|
|
|
|
type
|
|
TfrmPLLex = class(TfrmBase508Form)
|
|
Label1: TLabel;
|
|
bbCan: TBitBtn;
|
|
bbOK: TBitBtn;
|
|
pnlStatus: TPanel;
|
|
Bevel1: TBevel;
|
|
lblstatus: TVA508StaticText;
|
|
ebLex: TCaptionEdit;
|
|
lbLex: TORListBox;
|
|
bbSearch: TBitBtn;
|
|
procedure FormClose(Sender: TObject; var Action: TCloseAction);
|
|
procedure bbOKClick(Sender: TObject);
|
|
procedure bbCanClick(Sender: TObject);
|
|
procedure FormCreate(Sender: TObject);
|
|
procedure ebLexKeyPress(Sender: TObject; var Key: Char);
|
|
procedure bbSearchClick(Sender: TObject);
|
|
procedure lbLexClick(Sender: TObject);
|
|
procedure FormShow(Sender: TObject);
|
|
private
|
|
{ Private declarations }
|
|
public
|
|
{ Public declarations }
|
|
end;
|
|
|
|
|
|
implementation
|
|
|
|
uses
|
|
fprobs, rProbs, fProbEdt;
|
|
|
|
{$R *.DFM}
|
|
|
|
var
|
|
ProblemList:TstringList;
|
|
|
|
const
|
|
TX_CONTINUE_799 = 'A suitable term was not found based on user input and current defaults.'#13#10 +
|
|
'If you proceed with this nonspecific term, an ICD code of "799.9 - OTHER'#13#10 +
|
|
'UNKNOWN AND UNSPECIFIED CAUSE OF MORBIDITY OR MORTALITY" will be filed.'#13#10#13#10 +
|
|
'Use ';
|
|
|
|
procedure TfrmPLLex.FormClose(Sender: TObject; var Action: TCloseAction);
|
|
begin
|
|
ProblemList.free;
|
|
{frmProblems.lblProbList.Caption := frmProblems.pnlRight.Caption ;}
|
|
Release;
|
|
end;
|
|
|
|
procedure TfrmPLLex.bbOKClick(Sender: TObject);
|
|
const
|
|
TX799 = '799.9';
|
|
var
|
|
x, y: string;
|
|
i: integer;
|
|
begin
|
|
if (ebLex.Text = '') and ((lbLex.itemindex < 0) or (lbLex.Items.Count = 0)) then
|
|
exit {bail out - nothing selected}
|
|
else if ((lbLex.itemindex < 0) or (lbLex.Items.Count = 0)) then
|
|
begin
|
|
if InfoBox(TX_CONTINUE_799 + UpperCase(ebLex.Text) + '?', 'Unresolved Entry',
|
|
MB_YESNO or MB_DEFBUTTON2 or MB_ICONQUESTION) <> IDYES then Exit;
|
|
PLProblem:=u + ebLex.Text + u + TX799 + u;
|
|
end
|
|
else if (Piece(ProblemList[lbLex.ItemIndex], U, 3) = '') then
|
|
begin
|
|
if InfoBox(TX_CONTINUE_799 + UpperCase(lbLex.DisplayText[lbLex.ItemIndex]) + '?', 'Unresolved Entry',
|
|
MB_YESNO or MB_DEFBUTTON2 or MB_ICONQUESTION) <> IDYES then Exit;
|
|
PLProblem:=u + lbLex.DisplayText[lbLex.ItemIndex] + u + TX799 + u;
|
|
end
|
|
else
|
|
begin
|
|
x := ProblemList[lbLex.ItemIndex];
|
|
y := Piece(x, U, 2);
|
|
i := Pos(' *', y);
|
|
if i > 0 then y := Copy(y, 1, i - 1);
|
|
SetPiece(x, U, 2, y);
|
|
PLProblem := x;
|
|
end;
|
|
if (not Application.Terminated) and (not uInit.TimedOut) then {prevents GPF if system close box is clicked
|
|
while frmDlgProbs is visible}
|
|
if Assigned(frmProblems) then PostMessage(frmProblems.Handle, UM_PLLex, 0, 0) ;
|
|
Close;
|
|
end;
|
|
|
|
procedure TfrmPLLex.bbCanClick(Sender: TObject);
|
|
begin
|
|
PLProblem:='';
|
|
close;
|
|
end;
|
|
|
|
procedure TfrmPLLex.FormCreate(Sender: TObject);
|
|
begin
|
|
PLProblem := '';
|
|
ProblemList:=TStringList.create;
|
|
ResizeAnchoredFormToFont(self);
|
|
//Resize bevel to center horizontally
|
|
Bevel1.Width := pnlStatus.ClientWidth - Bevel1.Left- Bevel1.Left;
|
|
end;
|
|
|
|
procedure TfrmPLLex.ebLexKeyPress(Sender: TObject; var Key: Char);
|
|
begin
|
|
if key=#13 then
|
|
begin
|
|
bbSearchClick(Sender);
|
|
Key:=#0;
|
|
end
|
|
else
|
|
begin
|
|
lblStatus.caption:='';
|
|
lbLex.Items.clear;
|
|
end;
|
|
end;
|
|
|
|
procedure TfrmPLLex.bbSearchClick(Sender: TObject);
|
|
VAR
|
|
ALIST:Tstringlist;
|
|
v,Max, Found:string;
|
|
onlist: integer;
|
|
procedure SetLexList(v:string);
|
|
var {too bad ORCombo only allows 1 piece to be shown}
|
|
i, j: integer;
|
|
txt, term, code, sys, lin, x: String;
|
|
begin
|
|
lbLex.Clear;
|
|
onlist:=-1;
|
|
for i:=0 to pred(ProblemList.count) do
|
|
begin
|
|
txt:=ProblemList[i];
|
|
Term:=Piece(txt,u,2);
|
|
code:=Piece(txt,u,3);
|
|
sys:=Piece(txt,u,5);
|
|
lin:=Piece(txt,u,1) + u + term + ' ' + sys ;
|
|
if code<>'' then lin:=lin + ':(' + code + ')';
|
|
//lin:=Piece(txt,u,1) + u + term {+ ' ' + sys} ;
|
|
//{if code<>'' then lin:=lin + ':(' + code + ')'; }
|
|
j := Pos(' *', Term);
|
|
if j > 0 then
|
|
x := UpperCase(Copy(Term, 1, j-1))
|
|
else
|
|
x := UpperCase(Term);
|
|
if (x=V) or (code=V) then onlist:=i;
|
|
lbLex.Items.add(lin);
|
|
end;
|
|
if onlist < 0 then
|
|
begin {Search term not in return list, so add it}
|
|
lbLex.Items.insert(0,(u + V) );
|
|
ProblemList.insert(0,(u + V + u + u));
|
|
lbLex.itemIndex:=0;
|
|
end
|
|
else
|
|
begin {search term is on return list, so highlight it}
|
|
lbLex.itemIndex:=onlist;
|
|
ActiveControl := bbOK;
|
|
end;
|
|
lbLex.SetFocus;
|
|
end;
|
|
|
|
begin {body}
|
|
if ebLex.text='' then
|
|
begin
|
|
InfoBox('Enter a term to search for, then click "SEARCH"', 'Information', MB_OK or MB_ICONINFORMATION);
|
|
exit; {don't bother to drop if no text entered}
|
|
end ;
|
|
Alist:=TStringList.create;
|
|
try
|
|
if lblStatus.caption = '' then
|
|
begin
|
|
lblStatus.caption := 'Searching Lexicon...';
|
|
lblStatus.refresh;
|
|
end;
|
|
v:=uppercase(ebLex.text);
|
|
if (v<>'') and (lbLex.itemindex<1) then
|
|
begin
|
|
ProblemList.clear;
|
|
{FastAssign(ProblemLexiconSearch(v), Alist) ;}
|
|
FastAssign(OldProblemLexiconSearch(v, 100), Alist) ;
|
|
end;
|
|
if Alist.count > 0 then
|
|
begin
|
|
FastAssign(Alist, lbLex.Items);
|
|
FastAssign(Alist, ProblemList);
|
|
Max:=ProblemList[pred(ProblemList.count)]; {get max number found}
|
|
ProblemList.delete(pred(ProblemList.count)); {shed max# found}
|
|
SetLexList(V);
|
|
if onlist < 0 then
|
|
Found := inttostr(ProblemList.Count -1)
|
|
else
|
|
Found := inttostr(ProblemList.Count);
|
|
lblStatus.caption:='Search returned ' + Found + ' items.' +
|
|
' out of a possible ' + Max;
|
|
lbLex.Itemindex := 0 ;
|
|
end
|
|
else
|
|
begin
|
|
lblStatus.caption:='No Entries Found for "' + ebLex.text + '"';
|
|
end ;
|
|
finally
|
|
Alist.free;
|
|
end;
|
|
end;
|
|
|
|
procedure TfrmPLLex.lbLexClick(Sender: TObject);
|
|
begin
|
|
bbOKClick(sender);
|
|
end;
|
|
|
|
procedure TfrmPLLex.FormShow(Sender: TObject);
|
|
begin
|
|
ebLex.setfocus;
|
|
end;
|
|
|
|
end.
|