Module

fOptionsLists

Path

C:\CPRS\CPRS30\Options\fOptionsLists.pas

Last Modified

7/15/2014 3:26:40 PM

Units Used in Interface

Name Comments
fBase508Form -

Units Used in Implementation

Name Comments
fOptionsNewList -
fPtSelOptns -
rCore -
rOptions -
uOptions -

Classes

Name Comments
TfrmOptionsLists -

Procedures

Name Owner Declaration Scope Comments
AddIfUnique TfrmOptionsLists procedure AddIfUnique(entry: string; aList: TORListBox); Private -
btnDeleteListClick TfrmOptionsLists procedure btnDeleteListClick(Sender: TObject); Public/Published -
btnListAddAllClick TfrmOptionsLists procedure btnListAddAllClick(Sender: TObject); Public/Published -
btnListAddClick TfrmOptionsLists procedure btnListAddClick(Sender: TObject); Public/Published -
btnListSaveChangesClick TfrmOptionsLists procedure btnListSaveChangesClick(Sender: TObject); Public/Published -
btnNewListClick TfrmOptionsLists procedure btnNewListClick(Sender: TObject); Public/Published -
btnOKClick TfrmOptionsLists procedure btnOKClick(Sender: TObject); Public/Published -
btnPersonalPatientRAClick TfrmOptionsLists procedure btnPersonalPatientRAClick(Sender: TObject); Public/Published -
btnPersonalPatientRClick TfrmOptionsLists procedure btnPersonalPatientRClick(Sender: TObject); Public/Published -
DialogOptionsLists - procedure DialogOptionsLists(topvalue, leftvalue, fontsize: integer; var actiontype: Integer); Interfaced Create the form and make it modal, return an action
FormCreate TfrmOptionsLists procedure FormCreate(Sender: TObject); Public/Published -
FormShow TfrmOptionsLists procedure FormShow(Sender: TObject); Public/Published -
grpVisibilityClick TfrmOptionsLists procedure grpVisibilityClick(Sender: TObject); Public/Published -
lstAddByChange TfrmOptionsLists procedure lstAddByChange(Sender: TObject); Public/Published -
lstAddByClick TfrmOptionsLists procedure lstAddByClick(Sender: TObject); Public/Published -
lstAddByKeyPress TfrmOptionsLists procedure lstAddByKeyPress(Sender: TObject; var Key: Char); Public/Published -
lstAddByNeedData TfrmOptionsLists procedure lstAddByNeedData(Sender: TObject; const StartFrom: String; Direction, InsertAt: Integer); Public/Published -
lstListPatsChange TfrmOptionsLists procedure lstListPatsChange(Sender: TObject); Public/Published -
lstListPatsMouseDown TfrmOptionsLists procedure lstListPatsMouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer); Public/Published -
lstPersonalListsChange TfrmOptionsLists procedure lstPersonalListsChange(Sender: TObject); Public/Published -
lstPersonalPatientsChange TfrmOptionsLists procedure lstPersonalPatientsChange(Sender: TObject); Public/Published -
lstPersonalPatientsMouseDown TfrmOptionsLists procedure lstPersonalPatientsMouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer); Public/Published -
mnuPatientIDClick TfrmOptionsLists procedure mnuPatientIDClick(Sender: TObject); Public/Published -
radAddByTypeClick TfrmOptionsLists procedure radAddByTypeClick(Sender: TObject); Public/Published -
ShowMatchingPatients - procedure ShowMatchingPatients; Local -
ShowMatchingPatients - procedure ShowMatchingPatients; Local -

Global Variables

Name Type Declaration Comments
frmOptionsLists TfrmOptionsLists frmOptionsLists: TfrmOptionsLists; -

Constants

Name Declaration Scope Comments
LIST_ADD 1 Global -
LIST_PERSONAL 2 Global -


Module Source

1     unit fOptionsLists;
2     
3     interface
4     
5     uses
6       Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
7       StdCtrls, ExtCtrls, ORCtrls, OrFn, Menus, fBase508Form,
8       VA508AccessibilityManager;
9     
10    type
11      TfrmOptionsLists = class(TfrmBase508Form)
12        pnlBottom: TPanel;
13        btnOK: TButton;
14        btnCancel: TButton;
15        lblAddby: TLabel;
16        lblPatientsAdd: TLabel;
17        lblPersonalPatientList: TLabel;
18        lblPersonalLists: TLabel;
19        lstAddBy: TORComboBox;
20        btnPersonalPatientRA: TButton;
21        btnPersonalPatientR: TButton;
22        lstListPats: TORListBox;
23        lstPersonalPatients: TORListBox;
24        btnListAddAll: TButton;
25        btnNewList: TButton;
26        btnDeleteList: TButton;
27        lstPersonalLists: TORListBox;
28        radAddByType: TRadioGroup;
29        btnListSaveChanges: TButton;
30        btnListAdd: TButton;
31        lblInfo: TMemo;
32        bvlBottom: TBevel;
33        mnuPopPatient: TPopupMenu;
34        mnuPatientID: TMenuItem;
35        grpVisibility: TRadioGroup;
36        procedure FormCreate(Sender: TObject);
37        procedure btnNewListClick(Sender: TObject);
38        procedure radAddByTypeClick(Sender: TObject);
39        procedure lstPersonalListsChange(Sender: TObject);
40        procedure lstAddByClick(Sender: TObject);
41        procedure btnDeleteListClick(Sender: TObject);
42        procedure btnListSaveChangesClick(Sender: TObject);
43        procedure btnPersonalPatientRAClick(Sender: TObject);
44        procedure btnListAddAllClick(Sender: TObject);
45        procedure btnPersonalPatientRClick(Sender: TObject);
46        procedure lstPersonalPatientsChange(Sender: TObject);
47        procedure btnListAddClick(Sender: TObject);
48        procedure lstListPatsChange(Sender: TObject);
49        procedure FormShow(Sender: TObject);
50        procedure lstAddByNeedData(Sender: TObject; const StartFrom: String;
51          Direction, InsertAt: Integer);
52        procedure btnOKClick(Sender: TObject);
53        procedure mnuPatientIDClick(Sender: TObject);
54        procedure lstListPatsMouseDown(Sender: TObject; Button: TMouseButton;
55          Shift: TShiftState; X, Y: Integer);
56        procedure lstPersonalPatientsMouseDown(Sender: TObject;
57          Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
58        procedure lstAddByKeyPress(Sender: TObject; var Key: Char);
59        procedure grpVisibilityClick(Sender: TObject);
60        procedure lstAddByChange(Sender: TObject);
61      private
62        { Private declarations }
63        FLastList: integer;
64        FChanging: boolean;
65        procedure AddIfUnique(entry: string; aList: TORListBox);
66      public
67        { Public declarations }
68      end;
69    
70    var
71      frmOptionsLists: TfrmOptionsLists;
72    
73    procedure DialogOptionsLists(topvalue, leftvalue, fontsize: integer; var actiontype: Integer);
74    
75    implementation
76    
77    uses fOptionsNewList, rOptions, uOptions, rCore, fPtSelOptns, VAUtils;
78    
79    {$R *.DFM}
80    
81    const
82      LIST_ADD = 1;
83      LIST_PERSONAL = 2;
84    
85    procedure DialogOptionsLists(topvalue, leftvalue, fontsize: integer; var actiontype: Integer);
86    // create the form and make it modal, return an action
87    var
88      frmOptionsLists: TfrmOptionsLists;
89    begin
90      frmOptionsLists := TfrmOptionsLists.Create(Application);
91      actiontype := 0;
92      try
93        with frmOptionsLists do
94        begin
95          if (topvalue < 0) or (leftvalue < 0) then
96            Position := poScreenCenter
97          else
98          begin
99            Position := poDesigned;
100           Top := topvalue;
101           Left := leftvalue;
102         end;
103         ResizeAnchoredFormToFont(frmOptionsLists);
104         ShowModal;
105         actiontype := btnOK.Tag;
106       end;
107     finally
108       frmOptionsLists.Release;
109     end;
110   end;
111   
112   procedure TfrmOptionsLists.FormCreate(Sender: TObject);
113   begin
114     rpcGetPersonalLists(lstPersonalLists.Items);
115     grpVisibility.ItemIndex := 1;
116     grpVisibility.Enabled := FALSE;
117     radAddByType.ItemIndex := 0;
118     radAddByTypeClick(self);
119     FLastList := 0;
120   end;
121   
122   procedure TfrmOptionsLists.btnNewListClick(Sender: TObject);
123   var
124     newlist: string;
125     newlistnum: integer;
126   begin
127     newlist := '';
128     DialogOptionsNewList(Font.Size, newlist);
129     newlistnum := strtointdef(Piece(newlist, '^', 1), 0);
130     if newlistnum > 0 then
131     begin
132       with lstPersonalLists do
133       begin
134         Items.Add(newlist);
135         SelectByIEN(newlistnum);
136       end;
137       lstPersonalListsChange(self);
138       lstPersonalPatients.Items.Clear;
139       lstPersonalPatientsChange(self);
140     end;
141   end;
142   
143   procedure TfrmOptionsLists.radAddByTypeClick(Sender: TObject);
144   begin
145     with lstAddBy do
146     begin
147       case radAddByType.ItemIndex of
148         0: begin
149              ListItemsOnly := false;
150              LongList := true;
151              InitLongList('');
152              lblAddby.Caption := 'Patient:';
153            end;
154         1: begin
155              ListItemsOnly := false;
156              LongList := false;
157              ListWardAll(lstAddBy.Items);
158              lblAddby.Caption := 'Ward:';
159            end;
160         2: begin
161              ListItemsOnly := true;
162              LongList := true;
163              InitLongList('');
164              lblAddby.Caption := 'Clinic:';
165            end;
166         3: begin
167              ListItemsOnly := true;
168              LongList := true;
169              InitLongList('');
170              lblAddby.Caption := 'Provider:';
171            end;
172         4: begin
173              ListItemsOnly := false;
174              LongList := false;
175              ListSpecialtyAll(lstAddBy.Items);
176              lblAddby.Caption := 'Specialty:';
177            end;
178         5: begin
179              ListItemsOnly := false;
180              LongList := false;
181              ListTeamAll(lstAddBy.Items);
182              lblAddby.Caption := 'List:';
183            end;
184       end;
185       lstAddby.Caption := lblAddby.Caption;
186       ItemIndex := -1;
187       Text := '';
188     end;
189       lstListPats.Items.Clear;
190       lstListPatsChange(self);
191   end;
192   
193   procedure TfrmOptionsLists.AddIfUnique(entry: string; aList: TORListBox);
194   var
195     i: integer;
196     ien: string;
197     inlist: boolean;
198   begin
199     ien := Piece(entry, '^', 1);
200     inlist := false;
201     with aList do
202     for i := 0 to Items.Count - 1 do
203       if ien = Piece(Items[i], '^', 1) then
204       begin
205         inlist := true;
206         break;
207       end;
208     if not inlist then
209       aList.Items.Add(entry);
210   end;
211   
212   procedure TfrmOptionsLists.lstPersonalListsChange(Sender: TObject);
213   var
214     x: integer;
215   begin
216     if (btnListSaveChanges.Enabled) and (not FChanging) then
217     begin
218       if InfoBox('Do you want to save changes to '
219           + Piece(lstPersonalLists.Items[FLastList], '^', 2) + '?',
220           'Confirmation', MB_YESNO or MB_ICONQUESTION) = IDYES then
221         btnListSaveChangesClick(self);
222     end;
223     if lstPersonalLists.ItemIndex > -1 then FLastList := lstPersonalLists.ItemIndex;
224     lstPersonalPatients.Items.Clear;
225     btnDeleteList.Enabled := lstPersonalLists.ItemIndex > -1;
226     with lstPersonalLists do
227     begin
228       if (ItemIndex < 0) or (Items.Count <1) then
229       begin
230         btnListAdd.Enabled := false;
231         btnListAddAll.Enabled := false;
232         btnPersonalPatientR.Enabled := false;
233         btnPersonalPatientRA.Enabled := false;
234         btnListSaveChanges.Enabled := false;
235         grpVisibility.Enabled := False;
236         exit;
237       end;
238       ListPtByTeam(lstPersonalPatients.Items, strtointdef(Piece(Items[ItemIndex], '^', 1), 0));
239       grpVisibility.Enabled := TRUE;
240       FChanging := True;
241       x := StrToIntDef(Piece(Items[ItemIndex], '^', 9), 1);
242       if x = 2 then x := 1;
243       grpVisibility.ItemIndex := x;
244       FChanging := False;
245       btnDeleteList.Enabled := true;
246     end;
247     if lstPersonalPatients.Items.Count = 1 then         // avoid selecting '^No patients found.' msg
248       if Piece(lstPersonalPatients.Items[0], '^', 1) = '' then
249       begin
250         btnPersonalPatientR.Enabled := false;
251         btnPersonalPatientRA.Enabled := false;
252         exit;
253       end;
254     btnPersonalPatientR.Enabled := lstPersonalPatients.SelCount > 0;
255     btnPersonalPatientRA.Enabled := lstPersonalPatients.Items.Count > 0;
256     btnListSaveChanges.Enabled := false;
257   end;
258   
259   procedure TfrmOptionsLists.lstAddByChange(Sender: TObject);
260     procedure ShowMatchingPatients;
261     begin
262       with lstAddBy do begin
263         if ShortCount > 0 then begin
264           if ShortCount = 1 then begin
265             ItemIndex := 0;
266           end;
267           Items.Add(LLS_LINE);
268           Items.Add(LLS_SPACE);
269         end;
270         InitLongList('');
271       end;
272     end;
273   
274   begin
275     inherited;
276     if radAddByType.ItemIndex = 0 {patient} then begin
277       with lstAddBy do
278       if frmPtSelOptns.IsLast5(Text) then begin
279           ListPtByLast5(Items, Text);
280           ShowMatchingPatients;
281         end
282       else if frmPtSelOptns.IsFullSSN(Text) then begin
283           ListPtByFullSSN(Items, Text);
284           ShowMatchingPatients;
285       end;
286     end;
287   end;
288   
289   
290   procedure TfrmOptionsLists.lstAddByClick(Sender: TObject);
291   var
292     ien: string;
293     visitstart, visitstop, i: integer;
294     visittoday, visitbegin, visitend: TFMDateTime;
295     aList: TStringList;
296     PtRec: TPtIDInfo;
297   begin
298     if lstAddBy.ItemIndex < 0 then exit;
299     ien := Piece(lstAddBy.Items[lstAddBy.ItemIndex], '^', 1);
300     If ien = '' then exit;
301     case radAddByType.ItemIndex of
302       0:
303       begin
304         PtRec := GetPtIDInfo(ien);
305         lblAddBy.Caption := 'Patient:   SSN: ' + PtRec.SSN;
306         lstAddby.Caption := lblAddby.Caption;
307         AddIfUnique(lstAddBy.Items[lstAddBy.ItemIndex], lstListPats);
308       end;
309       1:
310       begin
311         ListPtByWard(lstListPats.Items, strtointdef(ien,0));
312       end;
313       2:
314       begin
315         rpcGetApptUserDays(visitstart, visitstop);   // use user's date range for appointments
316         visittoday := FMToday;
317         visitbegin := FMDateTimeOffsetBy(visittoday, LowerOf(visitstart, visitstop));
318         visitend := FMDateTimeOffsetBy(visittoday, HigherOf(visitstart, visitstop));
319         aList := TStringList.Create;
320         ListPtByClinic(lstListPats.Items, strtointdef(ien, 0), floattostr(visitbegin), floattostr(visitend));
321         for i := 0 to aList.Count - 1 do
322           AddIfUnique(aList[i], lstListPats);
323         aList.Free;
324       end;
325       3:
326       begin
327         ListPtByProvider(lstListPats.Items, strtoint64def(ien,0));
328       end;
329       4:
330       begin
331         ListPtBySpecialty(lstListPats.Items, strtointdef(ien,0));
332       end;
333       5:
334       begin
335         ListPtByTeam(lstListPats.Items, strtointdef(ien,0));
336       end;
337     end;
338     if lstListPats.Items.Count = 1 then         // avoid selecting '^No patients found.' msg
339       if Piece(lstListPats.Items[0], '^', 1) = '' then
340       begin
341         btnListAddAll.Enabled := false;
342         btnListAdd.Enabled := false;
343         exit;
344       end;
345     btnListAddAll.Enabled := (lstListPats.Items.Count > 0) and (lstPersonalLists.ItemIndex > -1);
346     btnListAdd.Enabled := (lstListPats.SelCount > 0) and (lstPersonalLists.ItemIndex > -1);
347   end;
348   
349   procedure TfrmOptionsLists.btnDeleteListClick(Sender: TObject);
350   var
351     oldindex: integer;
352     deletemsg: string;
353   begin
354     with lstPersonalLists do
355       deletemsg := 'You have selected "' + DisplayText[ItemIndex]
356         + '" to be deleted.' + CRLF + 'Are you sure you want to delete this list?';
357     if InfoBox(deletemsg, 'Confirmation', MB_YESNO or MB_ICONQUESTION) = IDYES then
358     begin
359       btnListSaveChanges.Enabled := false;
360       with lstPersonalLists do
361       begin
362         oldindex := ItemIndex;
363         if oldindex > -1 then
364         begin
365           rpcDeleteList(Piece(Items[oldindex], '^', 1));
366           Items.Delete(oldindex);
367           btnPersonalPatientRAClick(self);
368           btnListSaveChanges.Enabled := false;
369         end;
370         if Items.Count > 0 then
371         begin
372           if oldindex = 0 then
373             ItemIndex := 0
374           else if oldindex > (Items.Count - 1) then
375             ItemIndex := Items.Count - 1
376           else
377             ItemIndex := oldindex;
378           btnListSaveChanges.Enabled := false;
379           lstPersonalListsChange(self);
380         end;
381       end;
382     end;
383   end;
384   
385   procedure TfrmOptionsLists.btnListSaveChangesClick(Sender: TObject);
386   var
387     listien: integer;
388   begin
389     listien := strtointdef(Piece(lstPersonalLists.Items[FLastList], '^', 1), 0);
390     rpcSaveListChanges(lstPersonalPatients.Items, listien, grpVisibility.ItemIndex);
391     btnListSaveChanges.Enabled := false;
392     rpcGetPersonalLists(lstPersonalLists.Items);
393     lstPersonalLists.ItemIndex := FLastList;
394     lstPersonalListsChange(Self);
395     if lstPersonalPatients.CanFocus then
396       lstPersonalPatients.SetFocus;
397   end;
398   
399   procedure TfrmOptionsLists.btnPersonalPatientRAClick(Sender: TObject);
400   begin
401     lstPersonalPatients.Items.Clear;
402     btnPersonalPatientR.Enabled := lstPersonalPatients.SelCount > 0;
403     btnPersonalPatientRA.Enabled := lstPersonalPatients.Items.Count > 0;
404     btnListSaveChanges.Enabled := true;
405   end;
406   
407   procedure TfrmOptionsLists.btnListAddAllClick(Sender: TObject);
408   var
409     i: integer;
410   begin
411     with lstPersonalPatients do
412     begin
413       if Items.Count = 1 then
414         if Piece(Items[0], '^', 1) = '' then
415           Items.Clear;
416     end;
417     with lstListPats do
418     begin
419       for i := 0 to Items.Count - 1 do
420         AddIfUnique(Items[i], lstPersonalPatients);
421       Items.Clear;
422       lstPersonalPatientsChange(self);
423       lstAddBy.ItemIndex := -1;
424       btnListAddAll.Enabled := false;
425       lstPersonalPatientsChange(self);
426     end;
427     btnListSaveChanges.Enabled := true;
428   end;
429   
430   procedure TfrmOptionsLists.btnPersonalPatientRClick(Sender: TObject);
431   var
432     i: integer;
433   begin
434     if not btnPersonalPatientR.Enabled then exit;
435     with lstPersonalPatients do
436     for i := Items.Count - 1 downto 0 do
437       if Selected[i] then
438         Items.Delete(i);
439     btnPersonalPatientR.Enabled := lstPersonalPatients.SelCount > 0;
440     btnPersonalPatientRA.Enabled := lstPersonalPatients.Items.Count > 0;
441     btnListSaveChanges.Enabled := true;
442   end;
443   
444   procedure TfrmOptionsLists.lstPersonalPatientsChange(Sender: TObject);
445   begin
446     if lstPersonalPatients.SelCount = 1 then         // avoid selecting '^No patients found.' msg
447       if Piece(lstPersonalPatients.Items[0], '^', 1) = '' then
448       begin
449         btnPersonalPatientR.Enabled := false;
450         btnPersonalPatientRA.Enabled := false;
451         exit;
452       end;
453     btnPersonalPatientR.Enabled := lstPersonalPatients.SelCount > 0;
454     btnPersonalPatientRA.Enabled := lstPersonalPatients.Items.Count > 0;
455   end;
456   
457   procedure TfrmOptionsLists.btnListAddClick(Sender: TObject);
458   var
459     i: integer;
460   begin
461     if not btnListAdd.Enabled then exit;
462     with lstPersonalPatients do
463     begin
464       if Items.Count = 1 then
465         if Piece(Items[0], '^', 1) = '' then
466           Items.Clear;
467     end;
468     with lstListPats do
469     for i := Items.Count - 1 downto 0 do
470       if Selected[i] then
471       begin
472         AddIfUnique(Items[i], lstPersonalPatients);
473         Items.Delete(i);
474       end;
475     lstListPatsChange(self);
476     lstPersonalPatientsChange(self);
477     btnListSaveChanges.Enabled := true;
478   end;
479   
480   procedure TfrmOptionsLists.lstListPatsChange(Sender: TObject);
481   begin
482     if lstListPats.SelCount = 1 then         // avoid selecting '^No patients found.' msg
483       if Piece(lstListPats.Items[0], '^', 1) = '' then
484         exit;
485     btnListAdd.Enabled := (lstListPats.SelCount > 0) and (lstPersonalLists.ItemIndex > -1);
486     btnListAddAll.Enabled := (lstListPats.Items.Count > 0) and (lstPersonalLists.ItemIndex > -1);
487   end;
488   
489   procedure TfrmOptionsLists.FormShow(Sender: TObject);
490   begin
491     with lstPersonalLists do
492       if Items.Count < 1 then
493         ShowMsg('You have no personal lists. Use "New List..." to create one.')
494       else
495       begin
496         ItemIndex := 0;
497         lstPersonalListsChange(self);
498       end;
499   end;
500   
501   procedure TfrmOptionsLists.grpVisibilityClick(Sender: TObject);
502   begin
503     inherited;
504     if not FChanging then btnListSaveChanges.Enabled := True;
505   end;
506   
507   procedure TfrmOptionsLists.lstAddByNeedData(Sender: TObject;
508     const StartFrom: String; Direction, InsertAt: Integer);
509   begin
510     with lstAddBy do
511     begin
512       case radAddByType.ItemIndex of
513         0: begin
514              Pieces := '2';
515              ForDataUse(SubSetOfPatients(StartFrom, Direction));
516            end;
517         1: begin
518              Pieces := '2';
519            end;
520         2: begin
521              Pieces := '2';
522              ForDataUse(SubSetOfClinics(StartFrom, Direction));
523            end;
524         3: begin
525              Pieces := '2,3';
526              ForDataUse(SubSetOfProviders(StartFrom, Direction));
527            end;
528         4: begin
529              Pieces := '2';
530            end;
531         5: begin
532              Pieces := '2';
533            end;
534       end;
535     end;
536   end;
537   
538   procedure TfrmOptionsLists.btnOKClick(Sender: TObject);
539   begin
540     if btnListSaveChanges.Enabled then
541     begin
542       if InfoBox('Do you want to save changes to '
543           + Piece(lstPersonalLists.Items[FLastList], '^', 2) + '?',
544           'Confirmation', MB_YESNO or MB_ICONQUESTION) = IDYES then
545         btnListSaveChangesClick(self);
546     end;
547   end;
548   
549   procedure TfrmOptionsLists.mnuPatientIDClick(Sender: TObject);
550   begin
551     case mnuPopPatient.Tag of
552       LIST_PERSONAL: DisplayPtInfo(lstPersonalPatients.ItemID);
553       LIST_ADD:      DisplayPtInfo(lstListPats.ItemID);
554     end;
555   end;
556   
557   procedure TfrmOptionsLists.lstListPatsMouseDown(Sender: TObject;
558     Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
559   begin
560     mnuPopPatient.AutoPopup :=      (lstListPats.Items.Count > 0)
561                                 and (lstListPats.ItemIndex > -1)
562                                 and (lstListPats.SelCount = 1)
563                                 and (Button = mbRight)
564                                 and (btnListAdd.Enabled);
565     mnuPopPatient.Tag := LIST_ADD;
566   end;
567   
568   procedure TfrmOptionsLists.lstPersonalPatientsMouseDown(Sender: TObject;
569     Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
570   begin
571     mnuPopPatient.AutoPopup :=      (lstPersonalPatients.Items.Count > 0)
572                                 and (lstPersonalPatients.ItemIndex > -1)
573                                 and (lstPersonalPatients.SelCount = 1)
574                                 and (Button = mbRight)
575                                 and (btnPersonalPatientR.Enabled);
576     mnuPopPatient.Tag := LIST_PERSONAL;
577   end;
578   
579   procedure TfrmOptionsLists.lstAddByKeyPress(Sender: TObject;
580     var Key: Char);
581   
582     procedure ShowMatchingPatients;
583     begin
584       with lstAddBy do
585       begin
586         if ShortCount > 0 then
587         begin
588           if ShortCount = 1 then
589           begin
590             ItemIndex := 0;
591           end;
592           Items.Add(LLS_LINE);
593           Items.Add(LLS_SPACE);
594         end;
595         InitLongList('');
596       end;
597       Key := #0; //Now that we've selected it, don't process the last keystroke!
598     end;
599   
600   var
601     FutureText: string;
602   begin
603     if radAddByType.ItemIndex = 0 {patient} then
604     begin
605       with lstAddBy do
606       begin
607         FutureText := Text + Key;
608         if frmPtSelOptns.IsLast5(FutureText) then
609           begin
610             ListPtByLast5(Items, FutureText);
611             ShowMatchingPatients;
612           end
613         else if frmPtSelOptns.IsFullSSN(FutureText) then
614           begin
615             ListPtByFullSSN(Items, FutureText);
616             ShowMatchingPatients;
617           end;
618       end;
619     end;
620   end;
621   
622   end.

Module Calls (2 levels)


fOptionsLists
 ├fBase508Form
 │ ├uConst
 │ └uHelpManager
 ├fOptionsNewList
 │ ├fBase508Form...
 │ └rOptions
 ├rOptions...
 ├uOptions
 │ ├rCore
 │ └fRptBox
 ├rCore...
 └fPtSelOptns
   ├fBase508Form...
   ├rCore...
   ├fPtSelOptSave
   └fPtSel

Module Called-By (2 levels)


fOptionsLists
   fOptions┘ 
   fFrame┘