Module

fOptions

Path

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

Last Modified

7/15/2014 3:26:40 PM

Units Used in Interface

Name Comments
fAutoSz -
fBAOptionsDiagnoses -
fBase508Form -
UBAGlobals -

Units Used in Implementation

Name Comments
fFrame -
fGraphProfiles -
fGraphs -
fGraphSettings -
fOptionsCombinations -
fOptionsDays -
fOptionsLists -
fOptionsNotes -
fOptionsOther -
fOptionsPatientSelection -
fOptionsReminders -
fOptionsReportsCustom -
fOptionsReportsDefault -
fOptionsSurrogate -
fOptionsTeams -
fOptionsTitles -
rCore -
rGraphs -
rOptions -
UBACore -
uCore -
uGraphs -
uOptions -

Classes

Name Comments
TfrmOptions -
TRule -

Procedures

Name Owner Declaration Scope Comments
ApplyNotifications TfrmOptions procedure ApplyNotifications; Private Save Notification changes
ApplyOrderChecks TfrmOptions procedure ApplyOrderChecks; Private Save Order Check changes
ApplyOtherStuff TfrmOptions procedure ApplyOtherStuff; Private Save other changes
btnApplyClick TfrmOptions procedure btnApplyClick(Sender: TObject); Public/Published Save actions without exiting
btnCombinationsClick TfrmOptions procedure btnCombinationsClick(Sender: TObject); Public/Published Display Combination List Options
btnCoverDaysClick TfrmOptions procedure btnCoverDaysClick(Sender: TObject); Public/Published Display Date Range Defaults on Cover Sheet
btnCoverRemindersClick TfrmOptions procedure btnCoverRemindersClick(Sender: TObject); Public/Published Display Clinical Reminder Options
btnDiagnosesClick TfrmOptions procedure btnDiagnosesClick(Sender: TObject); Public/Published Display Personal Diagnoses List
btnGraphSettingsClick TfrmOptions procedure btnGraphSettingsClick(Sender: TObject); Public/Published Display GraphSettings
btnGraphViewsClick TfrmOptions procedure btnGraphViewsClick(Sender: TObject); Public/Published Display Graph Views
btnNotesNotesClick TfrmOptions procedure btnNotesNotesClick(Sender: TObject); Public/Published Display Notes Options
btnNotesTitlesClick TfrmOptions procedure btnNotesTitlesClick(Sender: TObject); Public/Published Display Titles Options
btnNotificationsRemoveClick TfrmOptions procedure btnNotificationsRemoveClick(Sender: TObject); Public/Published Confirm before clearing notifications
btnOtherParametersClick TfrmOptions procedure btnOtherParametersClick(Sender: TObject); Public/Published Display Other Parameters Options
btnPatientSelectionClick TfrmOptions procedure btnPatientSelectionClick(Sender: TObject); Public/Published Display Patient Selection Options
btnPersonalListsClick TfrmOptions procedure btnPersonalListsClick(Sender: TObject); Public/Published Display Personal Lists Options
btnReport1Click TfrmOptions procedure btnReport1Click(Sender: TObject); Public/Published -
btnReportsClick TfrmOptions procedure btnReportsClick(Sender: TObject); Public/Published -
btnSurrogateClick TfrmOptions procedure btnSurrogateClick(Sender: TObject); Public/Published Display Surrogate Options
btnTeamsClick TfrmOptions procedure btnTeamsClick(Sender: TObject); Public/Published Display Team Options
ChangeOnOff TfrmOptions procedure ChangeOnOff(aListView: TListView; aListItem: TListItem); Private Check if list items were edited
CheckApply TfrmOptions procedure CheckApply; Private Determine if Apply button is enabled
chkNotificationsFlaggedClick TfrmOptions procedure chkNotificationsFlaggedClick(Sender: TObject); Public/Published Set notification flagged status
DialogOptions - procedure DialogOptions(var actiontype: Integer); Interfaced Create the form and make in modal, return an action
FormCreate TfrmOptions procedure FormCreate(Sender: TObject); Public/Published Initialize form
FormDestroy TfrmOptions procedure FormDestroy(Sender: TObject); Public/Published Cleanup creation of objects
LoadListView TfrmOptions procedure LoadListView(aListView: TListView; aList: TStrings); Private Load a list view with: name, on/off, comment
LoadNotifications TfrmOptions procedure LoadNotifications; Private Load Notification tab
LoadOrderChecks TfrmOptions procedure LoadOrderChecks; Private Load Order Check tab
lvwNotificationsChange TfrmOptions procedure lvwNotificationsChange(Sender: TObject; Item: TListItem; Change: TItemChange); Public/Published Change on/off on checkmark
lvwNotificationsColumnClick TfrmOptions procedure lvwNotificationsColumnClick(Sender: TObject; Column: TListColumn); Public/Published Toggle sort
lvwNotificationsCompare TfrmOptions procedure lvwNotificationsCompare(Sender: TObject; Item1, Item2: TListItem; Data: Integer; var Compare: Integer); Public/Published Sort columns
lvwNotificationsDblClick TfrmOptions procedure lvwNotificationsDblClick(Sender: TObject); Public/Published Toggle check marks with double click
lvwNotificationsEnter TfrmOptions procedure lvwNotificationsEnter(Sender: TObject); Public/Published -
lvwNotificationsMouseDown TfrmOptions procedure lvwNotificationsMouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer); Public/Published -
Offset TfrmOptions procedure Offset(var topnum: integer; topoffset: integer; var leftnum: integer; leftoffset: integer); Private Get positions to display dialog
pagOptionsEnter TfrmOptions procedure pagOptionsEnter(Sender: TObject); Public/Published -

Global Variables

Name Type Declaration Comments
frmOptions TfrmOptions frmOptions: TfrmOptions; -


Module Source

1     unit fOptions;
2     
3     interface
4     
5     uses Windows, SysUtils, Classes, Graphics, Forms, Controls, StdCtrls,
6       Buttons, ComCtrls, ExtCtrls, ORCtrls, OrFn, Dialogs, ORDtTmRng, fBAOptionsDiagnoses,
7       UBAGlobals, fBase508Form, VA508AccessibilityManager, fAutoSz;
8     
9     type
10      TfrmOptions = class(TfrmAutoSz)
11        pnlMain: TPanel;
12        pnlBottom: TPanel;
13        pagOptions: TPageControl;
14        tsCoverSheet: TTabSheet;
15        tsNotifications: TTabSheet;
16        btnOK: TButton;
17        btnCancel: TButton;
18        btnApply: TButton;
19        tsOrderChecks: TTabSheet;
20        tsListsTeams: TTabSheet;
21        lblCoverReminderDesc: TMemo;
22        lblCoverReminders: TStaticText;
23        lblCoverDaysDesc: TMemo;
24        lblCoverDays: TStaticText;
25        btnCoverDays: TButton;
26        bvlCoverDays: TBevel;
27        btnCoverReminders: TButton;
28        bvlCoverReminders: TBevel;
29        imgCoverDays: TImage;
30        imgCoverReminders: TImage;
31        lblPatientSelectionDesc: TMemo;
32        lblPatientSelection: TStaticText;
33        btnPatientSelection: TButton;
34        bvlPatientSelection: TBevel;
35        btnPersonalLists: TButton;
36        imgPatientSelection: TImage;
37        lblNotificationsOptions: TStaticText;
38        lblNotifications: TStaticText;
39        bvlNotifications: TBevel;
40        imgNotifications: TImage;
41        lblOrderChecksDesc: TLabel;
42        lblOrderChecks: TStaticText;
43        bvlOrderChecks: TBevel;
44        imgOrderChecks: TImage;
45        lblTeamsDesc: TMemo;
46        lblTeams: TStaticText;
47        btnTeams: TButton;
48        bvlTeams: TBevel;
49        lvwNotifications: TCaptionListView;
50        lblNotificationView: TLabel;
51        btnNotificationsRemove: TButton;
52        chkNotificationsFlagged: TCheckBox;
53        lvwOrderChecks: TCaptionListView;
54        lblOrderChecksView: TLabel;
55        btnSurrogate: TButton;
56        lblNotificationsSurrogate: TStaticText;
57        lblNotificationsSurrogateText: TStaticText;
58        btnCombinations: TButton;
59        bvlOtherParameters: TBevel;
60        lblOtherParameters: TStaticText;
61        imgOtherParameters: TImage;
62        lblOtherParametersDesc: TMemo;
63        btnOtherParameters: TButton;
64        tsNotes: TTabSheet;
65        lblNotesNotesDesc: TMemo;
66        lblNotesNotes: TStaticText;
67        bvlNotesNotes: TBevel;
68        btnNotesNotes: TButton;
69        lblNotesTitles: TStaticText;
70        bvlNotesTitles: TBevel;
71        lblNotesTitlesDesc: TMemo;
72        btnNotesTitles: TButton;
73        imgNotesNotes: TImage;
74        imgNotes: TImage;
75        imgTeams: TImage;
76        tsCprsReports: TTabSheet;
77        lblReports: TStaticText;
78        bvlReports: TBevel;
79        memReports: TMemo;
80        imgReports: TImage;
81        btnReports: TButton;
82        lblReport1: TStaticText;
83        memReport1: TMemo;
84        btnReport1: TButton;
85        bvlReport1: TBevel;
86        btnDiagnoses: TButton;
87        tsGraphs: TTabSheet;
88        lblGraphSettings: TStaticText;
89        bvlGraphSettings: TBevel;
90        imgGraphSettings: TImage;
91        btnGraphSettings: TButton;
92        bvlGraphViews: TBevel;
93        lblGraphViews: TStaticText;
94        imgGraphViews: TImage;
95        btnGraphViews: TButton;
96        memGraphSettings: TMemo;
97        memGraphViews: TMemo;
98        bvlReport2: TBevel;
99        lblReport2: TStaticText;
100       memReport2: TMemo;
101       imgReport1: TImage;
102       imgReport2: TImage;
103       procedure FormCreate(Sender: TObject);
104       procedure FormDestroy(Sender: TObject);
105       procedure btnCoverDaysClick(Sender: TObject);
106       procedure btnCoverRemindersClick(Sender: TObject);
107       procedure btnOtherParametersClick(Sender: TObject);
108       procedure btnPatientSelectionClick(Sender: TObject);
109       procedure btnPersonalListsClick(Sender: TObject);
110       procedure btnTeamsClick(Sender: TObject);
111       procedure btnNotificationsRemoveClick(Sender: TObject);
112       procedure btnApplyClick(Sender: TObject);
113       procedure chkNotificationsFlaggedClick(Sender: TObject);
114       procedure lvwNotificationsChange(Sender: TObject; Item: TListItem;
115         Change: TItemChange);
116       procedure lvwNotificationsColumnClick(Sender: TObject;
117         Column: TListColumn);
118       procedure lvwNotificationsCompare(Sender: TObject; Item1,
119         Item2: TListItem; Data: Integer; var Compare: Integer);
120       procedure lvwNotificationsDblClick(Sender: TObject);
121       procedure btnSurrogateClick(Sender: TObject);
122       procedure btnCombinationsClick(Sender: TObject);
123       procedure btnNotesNotesClick(Sender: TObject);
124       procedure btnNotesTitlesClick(Sender: TObject);
125       procedure btnReportsClick(Sender: TObject);
126       procedure btnReport1Click(Sender: TObject);
127       procedure lvwNotificationsEnter(Sender: TObject);
128       procedure lvwNotificationsMouseDown(Sender: TObject;
129         Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
130       procedure btnDiagnosesClick(Sender: TObject);
131       procedure btnGraphSettingsClick(Sender: TObject);
132       procedure btnGraphViewsClick(Sender: TObject);
133       procedure pagOptionsEnter(Sender: TObject);
134     private
135       { Private declarations }
136       FdirtyNotifications: boolean;  // used to determine edit changes to Notifications
137       FdirtyOrderChecks: boolean;    // used to determine edit changes to Order Checks
138       FdirtyOtherStuff: boolean;     // used to determine edit changes to misc settings
139       FuseCheckBoxes: boolean;
140       FsortCol: integer;
141       FsortAscending: boolean;
142       FLastClickedItem: TListItem;
143       FGiveMultiTabMessage: boolean;
144       procedure Offset(var topnum: integer; topoffset: integer; var leftnum: integer; leftoffset: integer);
145       procedure LoadNotifications;
146       procedure LoadOrderChecks;
147       procedure ApplyNotifications;
148       procedure ApplyOrderChecks;
149       procedure ApplyOtherStuff;
150       procedure CheckApply;
151       procedure LoadListView(aListView: TListView; aList: TStrings);
152       procedure ChangeOnOff(aListView: TListView; aListItem: TListItem);
153     public
154       { Public declarations }
155     end;
156   
157   var
158     frmOptions: TfrmOptions;
159   
160   procedure DialogOptions(var actiontype: Integer);
161   
162   implementation
163   
164   uses fOptionsDays, fOptionsReminders, fOptionsSurrogate,
165        fOptionsPatientSelection, fOptionsLists, fOptionsTeams, fOptionsCombinations,
166        fOptionsOther, fOptionsNotes, fOptionsTitles, fOptionsReportsCustom, fOptionsReportsDefault,
167        fGraphs, fGraphSettings, fGraphProfiles, rGraphs, uGraphs,
168        rOptions, rCore, uCore, uOptions, UBACore, fFrame,
169     VA508AccessibilityRouter;
170        //fTestDialog;
171   
172   {$R *.DFM}
173   
174   type
175     TRule = class
176     public
177       IEN: string;
178       OriginalValue: string;
179       ItemText: string;
180   end;
181   
182   procedure DialogOptions(var actiontype: Integer);
183   // create the form and make in modal, return an action
184   const
185     PixelGapBetweenButtons = 5;
186   var
187     frmOptions: TfrmOptions;
188   begin
189     frmOptions := TfrmOptions.Create(Application);
190     try
191       with frmOptions do
192       begin
193         with pagOptions do
194         begin
195           tsCoverSheet.TabVisible := false;
196           tsNotifications.TabVisible := false;
197           tsOrderChecks.TabVisible := false;
198           tsListsTeams.TabVisible := false;
199           case actiontype of
200           1: begin
201                tsCoverSheet.TabVisible := true;
202              end;
203           2: begin
204                tsNotifications.TabVisible := true;
205              end;
206           3: begin
207                tsOrderChecks.TabVisible := true;
208              end;
209           4: begin
210                tsListsTeams.TabVisible := true;
211              end;
212           else
213              begin
214                tsCoverSheet.TabVisible := true;
215                tsNotifications.TabVisible := true;
216                tsOrderChecks.TabVisible := true;
217                tsListsTeams.TabVisible := true;
218                ActivePage := tsCoverSheet;
219                memReports.Text := 'Change the default date range and occurrence limits for all reports on ' +
220                                  'the CPRS Reports tab (excluding health summary reports) .';
221                memReport1.Text := 'Change the individual date range and occurrence limits for each report on ' +
222                                  'the CPRS Reports tab (excluding health summary reports) .';
223                btnReports.caption := 'Set All Reports...';
224                btnReport1.caption := 'Set Individual Reports...';
225                if User.IsReportsOnly then // For "Reports Only" users.
226                  begin
227                    tsCoverSheet.TabVisible := false;
228                    tsNotifications.TabVisible := false;
229                    tsOrderChecks.TabVisible := false;
230                    tsListsTeams.TabVisible := false;
231                    tsNotes.TabVisible := false;
232                    if (not User.ToolsRptEdit) then
233                    begin
234                      btnOK.visible := false;
235                      btnApply.visible := false;
236                      btnCancel.caption := 'Close';
237                    end;
238                  end;
239                if (not User.ToolsRptEdit) then // For users with Reports settings edit parameter not set.
240                  begin
241                    memReports.Text := 'View the default date range and occurrence limits for all reports on ' +
242                                      'the CPRS Reports tab (excluding health summary reports) .';
243                    memReport1.Text := 'View the individual date range and occurrence limits for each report on ' +
244                                      'the CPRS Reports tab (excluding health summary reports) .';
245                    btnReports.caption := 'View All Report Settings...';
246                    btnReport1.caption := 'View Individual Report Settings...';
247                  end;
248              end;
249           end;
250         end;
251         actiontype := 0;
252         ResizeAnchoredFormToFont(frmOptions);
253         btnApply.Left := pagOptions.Left + pagOptions.Width - btnApply.Width;
254         btnCancel.Left := btnApply.Left - btnCancel.Width - PixelGapBetweenButtons;
255         btnOK.Left := btnCancel.Left - btnOK.Width - PixelGapBetweenButtons;
256         ShowModal;
257         actiontype := btnOK.Tag;
258       end;
259     finally
260       frmOptions.Release;
261     end;
262   end;
263   
264   procedure TfrmOptions.FormCreate(Sender: TObject);
265   // initialize form
266   begin
267     LoadNotifications;
268     LoadOrderChecks;
269     FdirtyNotifications := false;
270     FdirtyOrderChecks := false;
271     FdirtyOtherStuff := false;
272     CheckApply;
273   
274     if (Encounter.Provider = 0) and not IsCIDCProvider(User.DUZ) then
275         btnDiagnoses.Enabled := False;
276     FGiveMultiTabMessage := ScreenReaderSystemActive;
277   end;
278   
279   procedure TfrmOptions.FormDestroy(Sender: TObject);
280   // cleanup creation of objects
281   var
282     i: integer;
283   begin
284     for i := 0 to lvwOrderChecks.Items.Count - 1 do
285       lvwOrderChecks.Items.Item[i].SubItems.Objects[2].free;
286     for i := 0 to lvwNotifications.Items.Count - 1 do
287       lvwNotifications.Items.Item[i].SubItems.Objects[2].free;
288   end;
289   
290   procedure TfrmOptions.btnCoverDaysClick(Sender: TObject);
291   // display Date Range Defaults on Cover Sheet
292   var
293     topsize, leftsize, value: integer;
294   begin
295     value := 0;
296     Offset(topsize, -60, leftsize, -60);
297     DialogOptionsDays(topsize, leftsize, Font.Size, value);
298   end;
299   
300   procedure TfrmOptions.btnCoverRemindersClick(Sender: TObject);
301   // display Clinical Reminder Options
302   var
303     topsize, leftsize, value: integer;
304   begin
305     value := 0;
306     Offset(topsize, -60, leftsize, -60);
307     DialogOptionsReminders(topsize, leftsize, Font.Size, value);
308   end;
309   
310   procedure TfrmOptions.btnOtherParametersClick(Sender: TObject);
311   // display Other Parameters Options
312   var
313     topsize, leftsize, value: integer;
314   begin
315     value := 0;
316     Offset(topsize, 40, leftsize, 40);
317     DialogOptionsOther(topsize, leftsize, Font.Size, value);
318   end;
319   
320   procedure TfrmOptions.btnPatientSelectionClick(Sender: TObject);
321   // display Patient Selection Options
322   var
323     topsize, leftsize, value: integer;
324   begin
325     value := 0;
326     Offset(topsize, -60, leftsize, -60);
327     DialogOptionsPatientSelection(topsize, leftsize, Font.Size, value);
328   end;
329   
330   procedure TfrmOptions.btnPersonalListsClick(Sender: TObject);
331   // display Personal Lists Options
332   var
333     topsize, leftsize, value: integer;
334   begin
335     value := 0;
336     Offset(topsize, -60, leftsize, -60);
337     DialogOptionsLists(topsize, leftsize, Font.Size, value);
338   end;
339   
340   procedure TfrmOptions.btnTeamsClick(Sender: TObject);
341   // display Team Options
342   var
343     topsize, leftsize, value: integer;
344   begin
345     value := 0;
346     Offset(topsize, -60, leftsize, -60);
347     DialogOptionsTeams(topsize, leftsize, Font.Size, value);
348   end;
349   
350   procedure TfrmOptions.btnNotificationsRemoveClick(Sender: TObject);
351   // confirm before clearing notifications
352   begin
353     if InfoBox('CAUTION: This will clear all the current notifications you have pending.'
354       + #13 + 'If you say YES, these changes will take place immediately.'
355       + #13 + 'Are you sure you want to erase all of your notifications?',
356       'Warning', MB_YESNO or MB_ICONWARNING) = IDYES then
357       begin
358         rpcClearNotifications;
359       end;
360   end;
361   
362   procedure TfrmOptions.Offset(var topnum: integer; topoffset: integer; var leftnum: integer; leftoffset: integer);
363   // get positions to display dialog
364   begin
365     // use these top and left values to display dialog
366     topnum := Top;
367     leftnum := Left;
368     topnum := topnum + topoffset;
369     if topnum < 0 then topnum := 0;
370     leftnum := leftnum + leftoffset;
371     if leftnum < 0 then leftnum := 0;
372   end;
373   
374   procedure TfrmOptions.pagOptionsEnter(Sender: TObject);
375   begin
376     if FGiveMultiTabMessage then // CQ#15483
377     begin
378       FGiveMultiTabMessage := FALSE;
379       GetScreenReader.Speak('Multi Tab Form');
380     end;
381   end;
382   
383   procedure TfrmOptions.btnApplyClick(Sender: TObject);
384   // save actions without exiting
385   begin
386     if FdirtyNotifications then
387       ApplyNotifications;
388     if FdirtyOrderChecks then
389       ApplyOrderChecks;
390     if FdirtyOtherStuff then
391       ApplyOtherStuff;
392     CheckApply;
393     if Sender = btnOK then
394       Close;
395   end;
396   
397   procedure TfrmOptions.LoadNotifications;
398   // load Notification tab
399   var
400     notifydefaults, surrogateinfo, flag, enableerase: string;
401   begin
402     LoadListView(lvwNotifications, rpcGetNotifications);
403     lvwNotificationsColumnClick(lvwNotifications, lvwNotifications.Column[0]); // make sure sorted
404     notifydefaults := rpcGetNotificationDefaults;
405     flag := Piece(notifydefaults, '^', 2);
406     enableerase := Piece(notifydefaults, '^', 3);
407     chkNotificationsFlagged.Checked := flag = '1';
408     btnNotificationsRemove.Enabled := enableerase = '1';
409     surrogateinfo := rpcGetSurrogateInfo;
410     btnSurrogate.Hint := surrogateinfo;
411     LabelSurrogate(surrogateinfo, lblNotificationsSurrogateText);
412   end;
413   
414   procedure TfrmOptions.LoadOrderChecks;
415   // load Order Check tab
416   begin
417     LoadListView(lvwOrderChecks, rpcGetOrderChecks);
418     lvwOrderChecks.Checkboxes := true;
419   end;
420   
421   procedure TfrmOptions.ApplyNotifications;
422   // save Notification changes
423   var
424     i: integer;
425     newonoff: string;
426     aRule: TRule;
427     aList: TStringList;
428   begin
429     aList := TStringList.Create;
430     for i := 0 to lvwNotifications.Items.Count - 1 do
431     begin
432       aRule := TRule(lvwNotifications.Items.Item[i].SubItems.Objects[2]);
433       if lvwNotifications.Items.Item[i].SubItems[1] <> 'Mandatory' then
434       begin
435         newonoff := Uppercase(lvwNotifications.Items.Item[i].SubItems[0]);
436         if aRule.OriginalValue <> newonoff then
437         begin
438           //***Show508Message(aRule.IEN + ' ' + aRule.OriginalValue + ' ' + newonoff);
439           aList.Add(aRule.IEN + '^' + newonoff);
440           aRule.OriginalValue := lvwNotifications.Items.Item[i].SubItems[0];
441         end;
442       end;
443     end;
444     rpcSetNotifications(aList);
445     aList.free;
446     FdirtyNotifications := false;
447   end;
448   
449   procedure TfrmOptions.ApplyOrderChecks;
450   // save Order Check changes
451   var
452     i: integer;
453     newonoff: string;
454     aRule: TRule;
455     aList: TStringList;
456   begin
457     aList := TStringList.Create;
458     for i := 0 to lvwOrderChecks.Items.Count - 1 do
459     begin
460       aRule := TRule(lvwOrderChecks.Items.Item[i].SubItems.Objects[2]);
461       newonoff := Uppercase(lvwOrderChecks.Items.Item[i].SubItems[0]);
462       if aRule.OriginalValue <> newonoff then
463       begin
464         aList.Add(aRule.IEN + '^' + newonoff);
465         aRule.OriginalValue := lvwOrderChecks.Items.Item[i].SubItems[0];
466       end;
467     end;
468     rpcSetOrderChecks(aList);
469     aList.free;
470     FdirtyOrderChecks := false;
471   end;
472   
473   procedure TfrmOptions.ApplyOtherStuff;
474   // save other changes
475   var
476     aString: string;
477   begin
478     aString := '';
479     if chkNotificationsFlagged.Checked then
480       aString := aString + '^1'
481     else
482       aString := aString + '^0';
483     rpcSetOtherStuff(aString);
484     FdirtyOtherStuff := false;
485   end;
486   
487   procedure TfrmOptions.CheckApply;
488   // determine if Apply button is enabled
489   begin
490     btnApply.Enabled :=  FdirtyOrderChecks or FdirtyNotifications or FdirtyOtherStuff;
491   end;
492   
493   procedure TfrmOptions.chkNotificationsFlaggedClick(Sender: TObject);
494   // set notification flagged status
495   begin
496     FdirtyOtherStuff := true;
497     CheckApply;
498   end;
499   
500   procedure TfrmOptions.LoadListView(aListView: TListView; aList: TStrings);
501   // load a list view with: name, on/off, comment
502   var
503     i: integer;
504     aListItem: TListItem;
505     aRule: TRule;
506     rulenum, ruletext, ruleonoff, rulecomment: string;
507   begin
508     FuseCheckBoxes := false;
509     aListView.Items.Clear;
510     aListView.SortType := stNone; // if Sorting during load then potential error
511     with aList do
512     begin
513       for i := 0 to aList.Count - 1 do
514       begin
515         rulenum := Piece(aList[i], '^', 1);
516         ruletext := Piece(aList[i], '^', 2);
517         ruleonoff := Piece(aList[i], '^', 3);
518         rulecomment := Piece(aList[i], '^', 4);
519         aListItem := aListView.Items.Add;
520         with aListItem do
521         begin
522           Caption := ruletext;
523           SubItems.Add(ruleonoff);
524           if ruleonoff = 'On' then Checked := true;
525           SubItems.Add(rulecomment);
526         end;
527         aRule := TRule.Create;
528         with aRule do
529         begin
530           IEN := rulenum;
531           OriginalValue := ruleonoff;
532           ItemText := ruletext;
533         end;
534         aListItem.SubItems.AddObject('rule object', aRule);
535       end;
536     end;
537     aListView.SortType := stBoth;
538     FuseCheckBoxes := true;
539   end;
540   
541   procedure TfrmOptions.lvwNotificationsChange(Sender: TObject;
542     Item: TListItem; Change: TItemChange);
543   // change on/off on checkmark
544   begin
545     if (Sender as TListView).ItemIndex = -1 then exit;
546     if not FuseCheckBoxes then exit;
547     if (Sender as TListView).Checkboxes = false then exit;
548     if (Item.SubItems[1] = 'Mandatory') and not Item.Checked then begin
549       Item.Checked := True;
550       exit;
551     end;
552     if Item.Checked then
553     begin
554       if Item.SubItems[0] <> 'On' then
555         ChangeOnOff(Sender as TListView, Item);
556       Item.SubItems[0] := 'On';
557     end
558     else
559     begin
560       if Item.SubItems[0] <> 'Off' then
561         ChangeOnOff(Sender as TListView, Item);
562       Item.SubItems[0] := 'Off';
563     end;
564   end;
565   
566   procedure TfrmOptions.lvwNotificationsColumnClick(Sender: TObject;
567     Column: TListColumn);
568   // toggle sort
569   begin
570     if FsortCol = Column.Index then
571       FsortAscending := not FsortAscending
572     else
573       FsortAscending := true;
574     FsortCol := Column.Index;
575     (Sender as TListView).AlphaSort;
576   end;
577   
578   procedure TfrmOptions.lvwNotificationsCompare(Sender: TObject; Item1,
579     Item2: TListItem; Data: Integer; var Compare: Integer);
580   //  sort columns
581   begin
582     if not(Sender is TListView) then exit;
583     if FsortAscending then
584     begin
585       if FsortCol = 0 then
586         Compare := CompareStr(Item1.Caption, Item2.Caption)
587       else
588         Compare := CompareStr(Item1.SubItems[FsortCol - 1],
589           Item2.SubItems[FsortCol - 1]);
590     end
591     else
592     begin
593       if FsortCol = 0 then
594         Compare := CompareStr(Item2.Caption, Item1.Caption)
595       else
596         Compare := CompareStr(Item2.SubItems[FsortCol - 1],
597           Item1.SubItems[FsortCol - 1]);
598     end;
599   end;
600   
601   procedure TfrmOptions.lvwNotificationsDblClick(Sender: TObject);
602   // toggle check marks with double click
603   var
604     aListItem: TListItem;
605   begin
606     with (Sender as TListView) do
607     begin
608       if Checkboxes = false then exit;
609       if Selected = nil then exit;
610       if Selected.SubItems[1] = 'Mandatory' then exit;
611       if Selected <> FLastClickedItem then exit;
612       aListItem := Selected;
613       aListItem.Checked := not aListItem.Checked;
614       ChangeOnOff(Sender as TListView, aListItem);
615   
616       if aListItem.Checked then
617         aListItem.SubItems[0] := 'On'
618       else
619         aListItem.SubItems[0] := 'Off';
620     end;
621   end;
622   
623   procedure TfrmOptions.ChangeOnOff(aListView: TListView; aListItem: TListItem);
624   // check if list items were edited
625   begin
626     if aListView = lvwNotifications then FdirtyNotifications := true;
627     if aListView = lvwOrderChecks then FdirtyOrderChecks := true;
628     CheckApply;
629   end;
630   
631   procedure TfrmOptions.btnSurrogateClick(Sender: TObject);
632   // display Surrogate Options
633   var
634     topsize, leftsize: integer;
635     surrogateinfo: string;
636   begin
637     surrogateinfo := btnSurrogate.Hint;
638     Offset(topsize, -30, leftsize, -30);
639     DialogOptionsSurrogate(topsize, leftsize, Font.Size, surrogateinfo);
640     LabelSurrogate(surrogateinfo, lblNotificationsSurrogateText);
641     btnSurrogate.Hint := surrogateinfo;
642   end;
643   
644   procedure TfrmOptions.btnCombinationsClick(Sender: TObject);
645   // display Combination List Options
646   var
647     topsize, leftsize, value: integer;
648   begin
649     value := 0;
650     Offset(topsize, -60, leftsize, -60);
651     DialogOptionsCombinations(topsize, leftsize, Font.Size, value);
652   end;
653   
654   procedure TfrmOptions.btnNotesNotesClick(Sender: TObject);
655   // display Notes Options
656   var
657     topsize, leftsize, value: integer;
658   begin
659     value := 0;
660     Offset(topsize, -60, leftsize, -60);
661     DialogOptionsNotes(topsize, leftsize, Font.Size, value);
662   end;
663   
664   procedure TfrmOptions.btnNotesTitlesClick(Sender: TObject);
665   // display Titles Options
666   var
667     topsize, leftsize, value: integer;
668   begin
669     value := 0;
670     Offset(topsize, -60, leftsize, -60);
671     DialogOptionsTitles(topsize, leftsize, Font.Size, value);
672   end;
673   
674   procedure TfrmOptions.btnReportsClick(Sender: TObject);
675   var
676     topsize, leftsize, value: integer;
677   begin
678     value := 0;
679     Offset(topsize, 90, leftsize, 23);
680     DialogOptionsHSDefault(topsize, leftsize, Font.Size, value);
681   end;
682   
683   procedure TfrmOptions.btnReport1Click(Sender: TObject);
684   var
685     topsize, leftsize, value: integer;
686   begin
687     value := 0;
688     Offset(topsize, -18, leftsize, -15);
689     DialogOptionsHSCustom(topsize, leftsize, Font.Size, value);
690   end;
691   
692   procedure TfrmOptions.lvwNotificationsEnter(Sender: TObject);
693   begin
694     with Sender as TListView do begin
695       if (Selected = nil) and (Items.Count > 0) then
696         Selected := Items[0];
697     end;
698   end;
699   
700   procedure TfrmOptions.lvwNotificationsMouseDown(Sender: TObject;
701     Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
702   begin
703     FLastClickedItem := (Sender as TListView).GetItemAt(X,Y);
704   end;
705   
706   procedure TfrmOptions.btnDiagnosesClick(Sender: TObject);
707   // display Personal Diagnoses List
708   var
709     topsize, leftsize, value: integer;
710   begin
711     if IsCIDCProvider(User.DUZ) then    //(hds7564)
712     begin
713        value := 0;
714        Offset(topsize, -60, leftsize, -60);
715        DialogOptionsDiagnoses(topsize, leftsize, Font.Size, value);
716     end;
717   end;
718   
719   procedure TfrmOptions.btnGraphSettingsClick(Sender: TObject);
720   // display GraphSettings
721   var
722     actiontype: boolean;
723     topsize, leftsize: integer;
724   begin
725     actiontype := false;
726     Offset(topsize, -60, leftsize, -60);
727     DialogOptionsGraphSettings(topsize, leftsize, Font.Size, actiontype);
728   end;
729   
730   procedure TfrmOptions.btnGraphViewsClick(Sender: TObject);
731   // display Graph Views
732   var
733     actiontype: boolean;
734   begin
735     actiontype := false;
736     DialogOptionsGraphProfiles(actiontype);
737     // if changes were made then view listing should be updated ***********
738   end;
739   
740   end.

Module Calls (2 levels)


fOptions
 ├fBAOptionsDiagnoses
 │ ├fAutoSz
 │ ├uCore
 │ ├rCore
 │ ├UBAGlobals
 │ ├fPCELex
 │ ├rPCE
 │ ├UBACore
 │ ├UBAMessages
 │ └UBAConst
 ├fBase508Form
 │ ├uConst
 │ └uHelpManager
 ├fAutoSz...
 ├fOptionsDays
 │ ├fBase508Form...
 │ ├rOptions
 │ └uOptions
 ├fOptionsReminders
 │ ├fBase508Form...
 │ ├rOptions...
 │ ├fRemCoverSheet
 │ └rReminders
 ├fOptionsSurrogate
 │ ├fBase508Form...
 │ ├rOptions...
 │ ├uOptions...
 │ └rCore...
 ├fOptionsPatientSelection
 │ ├fBase508Form...
 │ ├rOptions...
 │ ├uOptions...
 │ └rCore...
 ├fOptionsLists
 │ ├fBase508Form...
 │ ├fOptionsNewList
 │ ├rOptions...
 │ ├uOptions...
 │ ├rCore...
 │ └fPtSelOptns
 ├fOptionsTeams
 │ ├fBase508Form...
 │ ├rOptions...
 │ ├uOptions...
 │ └rCore...
 ├fOptionsCombinations
 │ ├fBase508Form...
 │ ├rOptions...
 │ └rCore...
 ├fOptionsOther
 │ ├fBase508Form...
 │ ├rOptions...
 │ ├rCore...
 │ ├rSurgery
 │ └fMeds
 ├fOptionsNotes
 │ ├fBase508Form...
 │ ├rOptions...
 │ ├rTIU
 │ └rDCSumm
 ├fOptionsTitles
 │ ├fBase508Form...
 │ ├rOptions...
 │ ├rTIU...
 │ ├rConsults
 │ └rDCSumm...
 ├fOptionsReportsCustom
 │ ├uConst
 │ ├rCore...
 │ ├fBase508Form...
 │ ├rOptions...
 │ ├fReports
 │ ├fLabs
 │ └uCore...
 ├fOptionsReportsDefault
 │ ├rCore...
 │ ├fBase508Form...
 │ ├rOptions...
 │ ├fReports...
 │ └uCore...
 ├fGraphSettings
 │ ├uGraphs
 │ ├fBase508Form...
 │ ├rGraphs
 │ └fGraphData
 ├fGraphProfiles
 │ ├uGraphs
 │ ├rCore...
 │ ├uCore...
 │ ├fBase508Form...
 │ ├rGraphs
 │ ├fGraphData...
 │ ├fGraphOthers
 │ └fRptBox
 ├rOptions...
 ├uCore...
 ├uOptions...
 └UBACore...

Module Called-By (2 levels)


                   fOptions
                   fFrame┘ 
              CPRSChart┤   
                  fPage┤   
                uOrders┤   
                fODBase┤   
                UBACore┤   
                fOrders┤   
                   uPCE┤   
      fBALocalDiagnoses┤   
             fEncVitals┤   
                fVitals┤   
                 fCover┤   
                 rCover┤   
              fPtSelMsg┤   
                 fPtSel┤   
            fOrdersSign┤   
         fPrintLocation┤   
                  fMeds┤   
                fRptBox┤   
                 fNotes┤   
               fReports┤   
                 fEncnt┤   
                 fProbs┤   
          fReportsPrint┤   
                fGraphs┤   
              fConsults┤   
                fDCSumm┤   
        fReminderDialog┤   
                  fLabs┤   
              fLabPrint┤   
                fReview┤   
            fIconLegend┤   
           fOrdersPrint┤   
               fSurgery┤   
uVA508CPRSCompatibility┤   
           fOrdersRenew┤   
             fODConsult┤   
                fODProc┤   
                 fODRad┤   
                 fODLab┤   
                fODMeds┤   
               fODMedIV┤   
              fODVitals┤   
                fODAuto┤   
                 fOMSet┤   
         fOrdersRelease┤   
              fODMedNVA┤   
         fOrdersOnChart┤   
             fOCSession┤   
              fODActive┤   
               fPCEEdit┘