| [459] | 1 | unit fEncounterFrame; | 
|---|
|  | 2 |  | 
|---|
|  | 3 | interface | 
|---|
|  | 4 |  | 
|---|
|  | 5 | uses | 
|---|
|  | 6 | Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, | 
|---|
|  | 7 | Tabs, ComCtrls, ExtCtrls, Menus, StdCtrls, Buttons, fPCEBase, | 
|---|
|  | 8 | fVisitType, fDiagnoses, fProcedure, fImmunization, fSkinTest, fPatientEd, | 
|---|
|  | 9 | fHealthFactor, fExam, uPCE, rPCE, rTIU, ORCtrls, ORFn, fEncVitals,rvitals; | 
|---|
|  | 10 |  | 
|---|
|  | 11 | const | 
|---|
|  | 12 | //tab names | 
|---|
|  | 13 | CT_VisitNm = 'Visit Type'; | 
|---|
|  | 14 | CT_DiagNm  = 'Diagnoses'; | 
|---|
|  | 15 | CT_ProcNm  = 'Procedures'; | 
|---|
|  | 16 | CT_ImmNm   = 'Immunizations'; | 
|---|
|  | 17 | CT_SkinNm  = 'Skin Tests'; | 
|---|
|  | 18 | CT_PedNm   = 'Patient Ed'; | 
|---|
|  | 19 | CT_HlthNm  = 'Health Factors'; | 
|---|
|  | 20 | CT_XamNm   = 'Exams'; | 
|---|
|  | 21 | CT_VitNm   = 'Vitals'; | 
|---|
|  | 22 | CT_GAFNm   = 'GAF'; | 
|---|
|  | 23 |  | 
|---|
|  | 24 | //numbers assigned to tabs to make changes easier | 
|---|
|  | 25 | //they must be sequential | 
|---|
|  | 26 | CT_NOPAGE        = -1; | 
|---|
|  | 27 | CT_UNKNOWN       = 0; | 
|---|
|  | 28 | CT_VISITTYPE     = 1; CT_FIRST = 1; | 
|---|
|  | 29 | CT_DIAGNOSES     = 2; | 
|---|
|  | 30 | CT_PROCEDURES    = 3; | 
|---|
|  | 31 | CT_IMMUNIZATIONS = 4; | 
|---|
|  | 32 | CT_SKINTESTS     = 5; | 
|---|
|  | 33 | CT_PATIENTED     = 6; | 
|---|
|  | 34 | CT_HEALTHFACTORS = 7; | 
|---|
|  | 35 | CT_EXAMS         = 8; | 
|---|
|  | 36 | CT_VITALS        = 9; | 
|---|
|  | 37 | CT_GAF           = 10; CT_LAST = 10; | 
|---|
|  | 38 |  | 
|---|
|  | 39 | NUM_TABS       = 3; | 
|---|
|  | 40 | TAG_VTYPE      = 10; | 
|---|
|  | 41 | TAG_DIAG       = 20; | 
|---|
|  | 42 | TAG_PROC       = 30; | 
|---|
|  | 43 | TAG_IMMUNIZ    = 40; | 
|---|
|  | 44 | TAG_SKIN       = 50; | 
|---|
|  | 45 | TAG_PED        = 60; | 
|---|
|  | 46 | TAG_HF         = 70; | 
|---|
|  | 47 | TAG_XAM        = 80; | 
|---|
|  | 48 | TAG_TRT        = 90; | 
|---|
|  | 49 |  | 
|---|
|  | 50 | TX_NOSECTION = '-1^No sections found'; | 
|---|
|  | 51 | TX_PROV_REQ = 'A primary encounter provider must be selected before encounter data can' + CRLF + | 
|---|
|  | 52 | 'be saved.  Select the Primary Encounter Provider on the VISIT TYPE tab.' + CRLF + | 
|---|
|  | 53 | 'Otherwise, press <Cancel> to quit without saving data.'; | 
|---|
|  | 54 |  | 
|---|
|  | 55 | TC_PROV_REQ = 'Missing Primary Provider for Encounter'; | 
|---|
|  | 56 |  | 
|---|
|  | 57 | type | 
|---|
|  | 58 | TfrmEncounterFrame = class(TForm) | 
|---|
|  | 59 | StatusBar1: TStatusBar; | 
|---|
|  | 60 | pnlPage: TPanel; | 
|---|
|  | 61 | Bevel1: TBevel; | 
|---|
|  | 62 | TabControl: TTabControl; | 
|---|
|  | 63 |  | 
|---|
|  | 64 | procedure tabPageChange(Sender: TObject; NewTab: Integer; | 
|---|
|  | 65 | var AllowChange: Boolean); | 
|---|
|  | 66 | procedure FormResize(Sender: TObject); | 
|---|
|  | 67 | procedure SectionClick(Sender: TObject); | 
|---|
|  | 68 | procedure FormDestroy(Sender: TObject); | 
|---|
|  | 69 | procedure FormCreate(Sender: TObject); | 
|---|
|  | 70 | procedure FormCloseQuery(Sender: TObject; var CanClose: Boolean); | 
|---|
|  | 71 | procedure TabControlChange(Sender: TObject); | 
|---|
|  | 72 | procedure TabControlChanging(Sender: TObject; | 
|---|
|  | 73 | var AllowChange: Boolean); | 
|---|
|  | 74 | procedure TabControlExit(Sender: TObject); | 
|---|
|  | 75 | procedure FormKeyDown(Sender: TObject; var Key: Word; | 
|---|
|  | 76 | Shift: TShiftState); | 
|---|
| [460] | 77 | procedure FormClose(Sender: TObject; var Action: TCloseAction); | 
|---|
| [459] | 78 | procedure FormCanResize(Sender: TObject; var NewWidth, | 
|---|
|  | 79 | NewHeight: Integer; var Resize: Boolean); | 
|---|
|  | 80 |  | 
|---|
|  | 81 | private | 
|---|
|  | 82 | FAutoSave: boolean; | 
|---|
|  | 83 | FSaveNeeded: boolean; | 
|---|
|  | 84 | FChangeSource: Integer; | 
|---|
|  | 85 | FCancel:  Boolean; //Indicates the cancel button has been pressed; | 
|---|
|  | 86 | FAbort: boolean; // indicates that neither OK or Cancel has been pressed | 
|---|
|  | 87 | FormList: TStringList;  //Holds the types of any forms that will be used | 
|---|
|  | 88 | //in the frame.  They must be available at compile time | 
|---|
|  | 89 | FLastPage: TfrmPCEBase; | 
|---|
|  | 90 | procedure CreateChildForms(Sender: TObject; Location: integer); | 
|---|
|  | 91 | procedure SynchPCEData; | 
|---|
|  | 92 | procedure SwitchToPage(NewForm: TfrmPCEBase);   //was tfrmPage | 
|---|
|  | 93 | function PageIDToForm(PageID: Integer): TfrmPCEBase; | 
|---|
|  | 94 | function PageIDToTab(PageID: Integer): string; | 
|---|
|  | 95 | procedure LoadFormList(Location: integer); | 
|---|
|  | 96 | procedure CreateForms; | 
|---|
|  | 97 | procedure AddTabs; | 
|---|
|  | 98 | function FormListContains(item: string): Boolean; | 
|---|
|  | 99 | procedure SendData; | 
|---|
|  | 100 | procedure UpdateEncounter(PCE: TPCEData); | 
|---|
|  | 101 | procedure SetFormFonts; | 
|---|
|  | 102 |  | 
|---|
|  | 103 | public | 
|---|
|  | 104 | procedure SelectTab(NewTabName: string); | 
|---|
|  | 105 | property ChangeSource:    Integer read FChangeSource; | 
|---|
|  | 106 | property Forms:           tstringlist read FormList; | 
|---|
|  | 107 | property Cancel:          Boolean read FCancel write FCancel; | 
|---|
|  | 108 | property Abort:          Boolean read FAbort write FAbort; | 
|---|
|  | 109 | end; | 
|---|
|  | 110 |  | 
|---|
|  | 111 | var | 
|---|
|  | 112 | frmEncounterFrame: TfrmEncounterFrame; | 
|---|
|  | 113 | uSCCond:              TSCConditions; | 
|---|
|  | 114 | uVisitType:           TPCEProc;       // contains info for visit type page | 
|---|
|  | 115 | uEncPCEData: TPCEData; | 
|---|
|  | 116 | uProviders: TPCEProviderList; | 
|---|
|  | 117 |  | 
|---|
|  | 118 | // Returns true if PCE data still needs to be saved - vitals/gaf are always saved | 
|---|
|  | 119 | function UpdatePCE(PCEData: TPCEData; SaveOnExit: boolean = TRUE): boolean; | 
|---|
|  | 120 |  | 
|---|
|  | 121 | implementation | 
|---|
|  | 122 |  | 
|---|
|  | 123 | uses | 
|---|
|  | 124 | uCore, | 
|---|
|  | 125 | fGAF, uConst, | 
|---|
| [460] | 126 | rCore, fPCEProvider, rMisc; | 
|---|
| [459] | 127 |  | 
|---|
|  | 128 | {$R *.DFM} | 
|---|
|  | 129 |  | 
|---|
|  | 130 | {/////////////////////////////////////////////////////////////////////////////// | 
|---|
|  | 131 | //Name: function TfrmEncounterFrame.PageIDToTab(PageID: Integer): String; | 
|---|
|  | 132 | //Created: Jan 1999 | 
|---|
|  | 133 | //By: Robert Bott | 
|---|
|  | 134 | //Location: ISL | 
|---|
|  | 135 | //Description: returns the tab index that corresponds to a given PageID . | 
|---|
|  | 136 | ///////////////////////////////////////////////////////////////////////////////} | 
|---|
|  | 137 | function TfrmEncounterFrame.PageIDToTab(PageID: Integer): String; | 
|---|
|  | 138 | begin | 
|---|
|  | 139 | result := ''; | 
|---|
|  | 140 | case PageID of | 
|---|
|  | 141 | CT_NOPAGE:        Result := ''; | 
|---|
|  | 142 | CT_UNKNOWN:       Result := ''; | 
|---|
|  | 143 | CT_VISITTYPE:     Result := CT_VisitNm; | 
|---|
|  | 144 | CT_DIAGNOSES:     Result := CT_DiagNm; | 
|---|
|  | 145 | CT_PROCEDURES:    Result := CT_ProcNm; | 
|---|
|  | 146 | CT_IMMUNIZATIONS: Result := CT_ImmNm; | 
|---|
|  | 147 | CT_SKINTESTS:     Result := CT_SkinNm; | 
|---|
|  | 148 | CT_PATIENTED:     Result := CT_PedNm; | 
|---|
|  | 149 | CT_HEALTHFACTORS: Result := CT_HlthNm; | 
|---|
|  | 150 | CT_EXAMS:         Result := CT_XamNm; | 
|---|
|  | 151 | CT_VITALS:        Result := CT_VitNm; | 
|---|
|  | 152 | CT_GAF:           Result := CT_GAFNm; | 
|---|
|  | 153 |  | 
|---|
|  | 154 | end; | 
|---|
|  | 155 | end; | 
|---|
|  | 156 |  | 
|---|
|  | 157 |  | 
|---|
|  | 158 | {/////////////////////////////////////////////////////////////////////////////// | 
|---|
|  | 159 | //Name: function TfrmEncounterFrame.PageIDToForm(PageID: Integer): TfrmPCEBase; | 
|---|
|  | 160 | //Created: Jan 1999 | 
|---|
|  | 161 | //By: Robert Bott | 
|---|
|  | 162 | //Location: ISL | 
|---|
|  | 163 | //Description: return the form name based on the PageID} | 
|---|
|  | 164 | ///////////////////////////////////////////////////////////////////////////////} | 
|---|
|  | 165 | function TfrmEncounterFrame.PageIDToForm(PageID: Integer): TfrmPCEBase; | 
|---|
|  | 166 | begin | 
|---|
|  | 167 | case PageID of | 
|---|
|  | 168 | CT_VISITTYPE:     Result := frmVisitType; | 
|---|
|  | 169 | CT_DIAGNOSES:     Result := frmDiagnoses; | 
|---|
|  | 170 | CT_PROCEDURES:    Result := frmProcedures; | 
|---|
|  | 171 | CT_IMMUNIZATIONS: Result := frmImmunizations; | 
|---|
|  | 172 | CT_SKINTESTS:     Result := frmSkinTests; | 
|---|
|  | 173 | CT_PATIENTED:     Result := frmPatientEd; | 
|---|
|  | 174 | CT_HEALTHFACTORS: Result := frmHealthFactors; | 
|---|
|  | 175 | CT_EXAMS:         Result := frmExams; | 
|---|
|  | 176 | CT_VITALS:        Result := frmEncVitals; | 
|---|
|  | 177 | CT_GAF:           Result := frmGAF; | 
|---|
|  | 178 | else  //not a valid form | 
|---|
|  | 179 | result := frmPCEBase; | 
|---|
|  | 180 | end; | 
|---|
|  | 181 | end; | 
|---|
|  | 182 |  | 
|---|
|  | 183 |  | 
|---|
|  | 184 | {/////////////////////////////////////////////////////////////////////////////// | 
|---|
|  | 185 | //Name: procedure TfrmEncounterFrame.CreatChildForms(Sender: TObject); | 
|---|
|  | 186 | //Created: Jan 1999 | 
|---|
|  | 187 | //By: Robert Bott | 
|---|
|  | 188 | //Location: ISL | 
|---|
|  | 189 | //Description: Finds out what pages to display, has the pages and tabs created. | 
|---|
|  | 190 | ///////////////////////////////////////////////////////////////////////////////} | 
|---|
|  | 191 | procedure TfrmEncounterFrame.CreateChildForms(Sender: TObject; Location: integer); | 
|---|
|  | 192 | begin | 
|---|
|  | 193 | //load FormList with a list of all forms to display. | 
|---|
|  | 194 | inherited; | 
|---|
|  | 195 | LoadFormList(Location); | 
|---|
|  | 196 | AddTabs; | 
|---|
|  | 197 | CreateForms; | 
|---|
|  | 198 | end; | 
|---|
|  | 199 |  | 
|---|
|  | 200 |  | 
|---|
|  | 201 |  | 
|---|
|  | 202 | {/////////////////////////////////////////////////////////////////////////////// | 
|---|
|  | 203 | //Name: TfrmEncounterFrame.LoadFormList; | 
|---|
|  | 204 | //Created: Jan 1999 | 
|---|
|  | 205 | //By: Robert Bott | 
|---|
|  | 206 | //Location: ISL | 
|---|
|  | 207 | //Description: Loads Formlist with the forms to create, will be replaced by RPC call. | 
|---|
|  | 208 | ///////////////////////////////////////////////////////////////////////////////} | 
|---|
|  | 209 | procedure TfrmEncounterFrame.LoadFormList(Location: integer); | 
|---|
|  | 210 | begin | 
|---|
|  | 211 | //change this to an RPC in RPCE.pas | 
|---|
|  | 212 | FormList.clear; | 
|---|
|  | 213 | FormList.add(CT_VisitNm); | 
|---|
|  | 214 | FormList.add(CT_DiagNm); | 
|---|
|  | 215 | FormList.add(CT_ProcNm); | 
|---|
|  | 216 | formList.add(CT_VitNm); | 
|---|
|  | 217 | formList.add(CT_ImmNm); | 
|---|
|  | 218 | formList.add(CT_SkinNm); | 
|---|
|  | 219 | formList.add(CT_PedNm); | 
|---|
|  | 220 | formList.add(CT_HlthNm); | 
|---|
|  | 221 | formList.add(CT_XamNm); | 
|---|
|  | 222 | if MHClinic(Location) then | 
|---|
|  | 223 | formList.add(CT_GAFNm); | 
|---|
|  | 224 | end; | 
|---|
|  | 225 |  | 
|---|
|  | 226 |  | 
|---|
|  | 227 | {/////////////////////////////////////////////////////////////////////////////// | 
|---|
|  | 228 | //Name: function TfrmEncounterFrame.FormListContains(item: string): Boolean; | 
|---|
|  | 229 | //Created: 12/06/98 | 
|---|
|  | 230 | //By: Robert Bott | 
|---|
|  | 231 | //Location: ISL | 
|---|
|  | 232 | //Description: Returns a boolean value indicating if a given string exists in | 
|---|
|  | 233 | // the formlist. | 
|---|
|  | 234 | ///////////////////////////////////////////////////////////////////////////////} | 
|---|
|  | 235 | function TfrmEncounterFrame.FormListContains(item: string): Boolean; | 
|---|
|  | 236 | begin | 
|---|
|  | 237 | result := false; | 
|---|
|  | 238 | if (FormList.IndexOf(item) <> -1 ) then | 
|---|
|  | 239 | result := true; | 
|---|
|  | 240 | end; | 
|---|
|  | 241 |  | 
|---|
|  | 242 | {/////////////////////////////////////////////////////////////////////////////// | 
|---|
|  | 243 | //Name: procedure TfrmEncounterFrame.CreateForms; | 
|---|
|  | 244 | //Created: Jan 1999 | 
|---|
|  | 245 | //By: Robert Bott | 
|---|
|  | 246 | //Location: ISL | 
|---|
|  | 247 | //Description:  Creates all of the forms in the list. | 
|---|
|  | 248 | ///////////////////////////////////////////////////////////////////////////////} | 
|---|
|  | 249 | procedure TfrmEncounterFrame.CreateForms; | 
|---|
|  | 250 | var | 
|---|
|  | 251 | i: integer; | 
|---|
|  | 252 | begin | 
|---|
|  | 253 | //could this be placed in a loop using PagedIdToTab & PageIDToFOrm & ? | 
|---|
|  | 254 |  | 
|---|
|  | 255 | if FormListContains(CT_VisitNm) then | 
|---|
|  | 256 | frmVisitType  := TfrmVisitType.CreateLinked(pnlPage); | 
|---|
|  | 257 | if FormListContains(CT_DiagNm) then | 
|---|
|  | 258 | frmDiagnoses  := TfrmDiagnoses.CreateLinked(pnlPage); | 
|---|
|  | 259 | if FormListContains(CT_ProcNm) then | 
|---|
|  | 260 | frmProcedures := TfrmProcedures.CreateLinked(pnlPage); | 
|---|
|  | 261 | if FormListContains(CT_VitNm) then | 
|---|
|  | 262 | frmEncVitals := TfrmEncVitals.CreateLinked(pnlPage); | 
|---|
|  | 263 | if FormListContains(CT_ImmNm) then | 
|---|
|  | 264 | frmImmunizations := TfrmImmunizations.CreateLinked(pnlPage); | 
|---|
|  | 265 | if FormListContains(CT_SkinNm) then | 
|---|
|  | 266 | frmSkinTests := TfrmSkinTests.CreateLinked(pnlPage); | 
|---|
|  | 267 | if FormListContains(CT_PedNm) then | 
|---|
|  | 268 | frmPatientEd := TfrmPatientEd.CreateLinked(pnlPage); | 
|---|
|  | 269 | if FormListContains(CT_HlthNm) then | 
|---|
|  | 270 | frmHealthFactors := TfrmHEalthFactors.CreateLinked(pnlPage); | 
|---|
|  | 271 | if FormListContains(CT_XamNm) then | 
|---|
|  | 272 | frmExams := TfrmExams.CreateLinked(pnlPage); | 
|---|
|  | 273 | if FormListContains(CT_GAFNm) then | 
|---|
|  | 274 | frmGAF := TfrmGAF.CreateLinked(pnlPage); | 
|---|
|  | 275 | //must switch based on caption, as all tabs may not be present. | 
|---|
|  | 276 | for i := CT_FIRST to CT_LAST do | 
|---|
|  | 277 | begin | 
|---|
|  | 278 | if Formlist.IndexOf(PageIdToTab(i)) <> -1 then | 
|---|
|  | 279 | PageIDToForm(i).Visible := (Formlist.IndexOf(PageIdToTab(i)) = 0); | 
|---|
|  | 280 | end; | 
|---|
|  | 281 | end; | 
|---|
|  | 282 |  | 
|---|
|  | 283 |  | 
|---|
|  | 284 | {/////////////////////////////////////////////////////////////////////////////// | 
|---|
|  | 285 | //Name: TfrmEncounterFrame.SwitchToPage(NewForm: tfrmPCEBase); | 
|---|
|  | 286 | //Created: Jan 1999 | 
|---|
|  | 287 | //By: Robert Bott | 
|---|
|  | 288 | //Location: ISL | 
|---|
|  | 289 | //Description: Brings the selected page to the front for display. | 
|---|
|  | 290 | ///////////////////////////////////////////////////////////////////////////////} | 
|---|
|  | 291 | procedure TfrmEncounterFrame.SwitchToPage(NewForm: tfrmPCEBase);// was TfrmPage); | 
|---|
|  | 292 | { unmerge/merge menus, bring page to top of z-order, call form-specific OnDisplay code } | 
|---|
|  | 293 | begin | 
|---|
|  | 294 | if (NewForm = nil) or (FLastPage = NewForm) then Exit; | 
|---|
|  | 295 | if Assigned(FLastPage) then | 
|---|
|  | 296 | FLastPage.Hide; | 
|---|
|  | 297 | FLastPage := NewForm; | 
|---|
|  | 298 | //  KeyPreview := (NewForm = frmEncVitals); | 
|---|
|  | 299 | NewForm.DisplayPage;  // this calls BringToFront for the form | 
|---|
|  | 300 | end; | 
|---|
|  | 301 |  | 
|---|
|  | 302 |  | 
|---|
|  | 303 |  | 
|---|
|  | 304 | {/////////////////////////////////////////////////////////////////////////////// | 
|---|
|  | 305 | //Name: procedure TfrmEncounterFrame.tabPageChange(Sender: TObject; NewTab: Integer; var AllowChange: Boolean); | 
|---|
|  | 306 | //Created: Jan 1999 | 
|---|
|  | 307 | //By: Robert Bott | 
|---|
|  | 308 | //Location: ISL | 
|---|
|  | 309 | //Description: Finds the page, and calls SwithToPage to display it. | 
|---|
|  | 310 | ///////////////////////////////////////////////////////////////////////////////} | 
|---|
|  | 311 | procedure TfrmEncounterFrame.tabPageChange(Sender: TObject; NewTab: Integer; var AllowChange: Boolean); | 
|---|
|  | 312 | { switches to form linked to NewTab } | 
|---|
|  | 313 | var | 
|---|
|  | 314 | i: integer; | 
|---|
|  | 315 | begin | 
|---|
|  | 316 | //must switch based on caption, as all tabs may not be present. | 
|---|
|  | 317 | for i := CT_FIRST to CT_LAST do | 
|---|
|  | 318 | begin | 
|---|
|  | 319 | With Formlist do | 
|---|
|  | 320 | if NewTab = IndexOf(PageIdToTab(i)) then | 
|---|
|  | 321 | begin | 
|---|
|  | 322 | PageIDToForm(i).show; | 
|---|
|  | 323 | SwitchToPage(PageIDToForm(i)); | 
|---|
|  | 324 | end; | 
|---|
|  | 325 | end; | 
|---|
|  | 326 | end; | 
|---|
|  | 327 |  | 
|---|
|  | 328 | { Resize and Font-Change procedures --------------------------------------------------------- } | 
|---|
|  | 329 |  | 
|---|
|  | 330 | {/////////////////////////////////////////////////////////////////////////////// | 
|---|
|  | 331 | //Name: procedure TfrmEncounterFrame.FormResize(Sender: TObject); | 
|---|
|  | 332 | //Created: Jan 1999 | 
|---|
|  | 333 | //By: Robert Bott | 
|---|
|  | 334 | //Location: ISL | 
|---|
|  | 335 | //Description: Resizes all windows when parent changes. | 
|---|
|  | 336 | ///////////////////////////////////////////////////////////////////////////////} | 
|---|
|  | 337 | procedure TfrmEncounterFrame.FormResize(Sender: TObject); | 
|---|
|  | 338 | var | 
|---|
|  | 339 | i: integer; | 
|---|
|  | 340 | begin | 
|---|
|  | 341 | for i := CT_FIRST to CT_LAST do | 
|---|
|  | 342 | if (FormList.IndexOf(PageIdToTab(i)) <> -1) then | 
|---|
|  | 343 | MoveWindow(PageIdToForm(i).Handle, 0, 0, pnlPage.ClientWidth, pnlpage.ClientHeight, true); | 
|---|
|  | 344 | self.repaint; | 
|---|
|  | 345 | end; | 
|---|
|  | 346 |  | 
|---|
|  | 347 | {/////////////////////////////////////////////////////////////////////////////// | 
|---|
|  | 348 | //Name: procedure TfrmEncounterFrame.AddTabs; | 
|---|
|  | 349 | //Created: Jan 1999 | 
|---|
|  | 350 | //By: Robert Bott | 
|---|
|  | 351 | //Location: ISL | 
|---|
|  | 352 | //Description: adds a tab for each page that will be displayed | 
|---|
|  | 353 | ///////////////////////////////////////////////////////////////////////////////} | 
|---|
|  | 354 | procedure TfrmEncounterFrame.AddTabs; | 
|---|
|  | 355 |  | 
|---|
|  | 356 | var | 
|---|
|  | 357 | i: integer; | 
|---|
|  | 358 | begin | 
|---|
|  | 359 | TabControl.Tabs.Clear; | 
|---|
|  | 360 | for I := 0 to (Formlist.count - 1) do | 
|---|
|  | 361 | TabControl.Tabs.Add(Formlist.Strings[i]); | 
|---|
|  | 362 | end; | 
|---|
|  | 363 |  | 
|---|
|  | 364 |  | 
|---|
|  | 365 | {/////////////////////////////////////////////////////////////////////////////// | 
|---|
|  | 366 | //Name: procedure UpdatePCE(PCEData: TPCEData); | 
|---|
|  | 367 | //Created: Jan 1999 | 
|---|
|  | 368 | //By: Robert Bott | 
|---|
|  | 369 | //Location: ISL | 
|---|
|  | 370 | //Description: The main call to open the encounter frame and capture encounter | 
|---|
|  | 371 | // information. | 
|---|
|  | 372 | ///////////////////////////////////////////////////////////////////////////////} | 
|---|
|  | 373 | function UpdatePCE(PCEData: TPCEData; SaveOnExit: boolean = TRUE): boolean; | 
|---|
|  | 374 | var | 
|---|
|  | 375 | //  FontHeight, | 
|---|
|  | 376 | //  FontWidth: Integer; | 
|---|
|  | 377 | AUser: string; | 
|---|
|  | 378 |  | 
|---|
|  | 379 | begin | 
|---|
|  | 380 | frmEncounterFrame := TfrmEncounterFrame.Create(Application); | 
|---|
|  | 381 | try | 
|---|
|  | 382 | frmEncounterFrame.FAutoSave := SaveOnExit; | 
|---|
|  | 383 |  | 
|---|
|  | 384 | uEncPCEData := PCEData; | 
|---|
|  | 385 | if(uEncPCEData.Empty and ((uEncPCEData.Location = 0) or (uEncPCEData.VisitDateTime = 0)) and | 
|---|
|  | 386 | (not Encounter.NeedVisit)) then | 
|---|
|  | 387 | uEncPCEData.UseEncounter := TRUE; | 
|---|
|  | 388 | frmEncounterFrame.Caption := 'Encounter Form for ' + ExternalName(uEncPCEData.Location, 44) + | 
|---|
|  | 389 | '  (' + FormatFMDateTime('mmm dd,yyyy@hh:nn', uEncPCEData.VisitDateTime) + ')'; | 
|---|
|  | 390 |  | 
|---|
|  | 391 | uProviders.Assign(uEncPCEData.Providers); | 
|---|
|  | 392 | SetDefaultProvider(uProviders, uEncPCEData); | 
|---|
|  | 393 | AUser := IntToStr(uProviders.PendingIEN(FALSE)); | 
|---|
|  | 394 | if(AUser <> '0') and (uProviders.IndexOfProvider(AUser) < 0) and | 
|---|
|  | 395 | AutoCheckout(uEncPCEData.Location) then | 
|---|
|  | 396 | uProviders.AddProvider(AUser, uProviders.PendingName(FALSE), FALSE); | 
|---|
|  | 397 |  | 
|---|
|  | 398 | frmEncounterFrame.CreateChildForms(frmEncounterFrame, PCEData.Location); | 
|---|
|  | 399 | ResizeAnchoredFormToFont(frmEncounterFrame); | 
|---|
| [460] | 400 | SetFormPosition(frmEncounterFrame); | 
|---|
| [459] | 401 |  | 
|---|
|  | 402 | with frmEncounterFrame do | 
|---|
|  | 403 | begin | 
|---|
|  | 404 | SetRPCEncLocation(PCEData.Location); | 
|---|
|  | 405 | SynchPCEData; | 
|---|
|  | 406 | TabControl.Tabindex := 0; | 
|---|
|  | 407 | TabControlChange(TabControl); | 
|---|
|  | 408 |  | 
|---|
|  | 409 | ShowModal; | 
|---|
|  | 410 | Result := FSaveNeeded; | 
|---|
|  | 411 | end; | 
|---|
|  | 412 | finally | 
|---|
|  | 413 | // frmEncounterFrame.Free;   v22.11 (JD and SM) | 
|---|
|  | 414 | frmEncounterFrame.Release; | 
|---|
|  | 415 | //frmEncounterFrame := nil;  access violation source?  removed 7/28/03 RV | 
|---|
|  | 416 | end; | 
|---|
|  | 417 | end; | 
|---|
|  | 418 |  | 
|---|
|  | 419 | {/////////////////////////////////////////////////////////////////////////////// | 
|---|
|  | 420 | //Name: TfrmEncounterFrame.SectionClick(Sender: TObject); | 
|---|
|  | 421 | //Created: Jan 1999 | 
|---|
|  | 422 | //By: Robert Bott | 
|---|
|  | 423 | //Location: ISL | 
|---|
|  | 424 | //Description: Call the procedure apropriate for the selected tab | 
|---|
|  | 425 | ///////////////////////////////////////////////////////////////////////////////} | 
|---|
|  | 426 | procedure TfrmEncounterFrame.SectionClick(Sender: TObject); | 
|---|
|  | 427 | begin | 
|---|
|  | 428 | with Sender as TListBox do case Tag of | 
|---|
|  | 429 | TAG_VTYPE:   if FormListContains(CT_VisitNm) then | 
|---|
|  | 430 | begin | 
|---|
|  | 431 | with frmVisitType do | 
|---|
|  | 432 | lstVTypeSectionClick(Sender); | 
|---|
|  | 433 | end; | 
|---|
|  | 434 | end; | 
|---|
|  | 435 | end; | 
|---|
|  | 436 |  | 
|---|
|  | 437 | {/////////////////////////////////////////////////////////////////////////////// | 
|---|
|  | 438 | //Name: procedure TfrmEncounterFrame.SynchPCEData; | 
|---|
|  | 439 | //Created: Jan 1999 | 
|---|
|  | 440 | //By: Robert Bott | 
|---|
|  | 441 | //Location: ISL | 
|---|
|  | 442 | //Description: Synchronize any existing PCE data with what is displayed in the form. | 
|---|
|  | 443 | ///////////////////////////////////////////////////////////////////////////////} | 
|---|
|  | 444 | procedure TfrmEncounterFrame.SynchPCEData; | 
|---|
|  | 445 |  | 
|---|
|  | 446 | procedure InitList(AListBox: TORListBox); | 
|---|
|  | 447 | var | 
|---|
|  | 448 | DoClick: boolean; | 
|---|
|  | 449 |  | 
|---|
|  | 450 | begin | 
|---|
|  | 451 | with AListBox do | 
|---|
|  | 452 | begin | 
|---|
|  | 453 | DoClick := TRUE; | 
|---|
|  | 454 | case Tag of | 
|---|
|  | 455 | TAG_VTYPE:   begin | 
|---|
|  | 456 | if FormListContains(CT_VisitNm) then | 
|---|
|  | 457 | ListVisitTypeSections(Items); | 
|---|
|  | 458 | DoClick := AutoSelectVisit(PCERPCEncLocation); | 
|---|
|  | 459 | end; | 
|---|
|  | 460 | end; | 
|---|
|  | 461 | if Items.Count > 0 then | 
|---|
|  | 462 | begin | 
|---|
|  | 463 | if DoClick then | 
|---|
|  | 464 | begin | 
|---|
|  | 465 | ItemIndex := 0; | 
|---|
|  | 466 | SectionClick(AListBox); | 
|---|
|  | 467 | end; | 
|---|
|  | 468 | end | 
|---|
|  | 469 | else Items.Add(TX_NOSECTION); | 
|---|
|  | 470 | end; | 
|---|
|  | 471 | end; | 
|---|
|  | 472 |  | 
|---|
|  | 473 | begin | 
|---|
|  | 474 | if FormListContains(CT_VisitNm) then | 
|---|
|  | 475 | with frmVisitType do | 
|---|
|  | 476 | begin | 
|---|
|  | 477 | InitList(frmVisitType.lstVTypeSection);                     // set up Visit Type page | 
|---|
|  | 478 | ListSCDisabilities(memSCDisplay.Lines); | 
|---|
|  | 479 | uSCCond := EligbleConditions; | 
|---|
|  | 480 | frmVisitType.fraVisitRelated.InitAllow(uSCCond); | 
|---|
|  | 481 | end; | 
|---|
|  | 482 | with uEncPCEData do                               // load any existing data from PCEData | 
|---|
|  | 483 | begin | 
|---|
|  | 484 | if FormListContains(CT_VisitNm) then | 
|---|
|  | 485 | frmVisitType.fraVisitRelated.InitRelated(uEncPCEData); | 
|---|
|  | 486 | if FormListContains(CT_DiagNm) then | 
|---|
|  | 487 | frmDiagnoses.InitTab(CopyDiagnoses, ListDiagnosisSections); | 
|---|
|  | 488 | if FormListContains(CT_ProcNm) then | 
|---|
|  | 489 | frmProcedures.InitTab(CopyProcedures, ListProcedureSections); | 
|---|
|  | 490 | if FormListContains(CT_ImmNm) then | 
|---|
|  | 491 | frmImmunizations.InitTab(CopyImmunizations,ListImmunizSections); | 
|---|
|  | 492 | if FormListContains(CT_SkinNm) then | 
|---|
|  | 493 | frmSkinTests.InitTab(CopySkinTests, ListSkinSections); | 
|---|
|  | 494 | if FormListContains(CT_PedNm) then | 
|---|
|  | 495 | frmPatientEd.InitTab(CopyPatientEds, ListPatientSections); | 
|---|
|  | 496 | if FormListContains(CT_HlthNm) then | 
|---|
|  | 497 | frmHealthFactors.InitTab(CopyHealthFactors, ListHealthSections); | 
|---|
|  | 498 | if FormListContains(CT_XamNm) then | 
|---|
|  | 499 | frmExams.InitTab(CopyExams, ListExamsSections); | 
|---|
|  | 500 | uVisitType.Assign(VisitType); | 
|---|
|  | 501 | if FormListContains(CT_VisitNm) then | 
|---|
|  | 502 | with frmVisitType do | 
|---|
|  | 503 | begin | 
|---|
|  | 504 | MatchVType; | 
|---|
|  | 505 | end; | 
|---|
|  | 506 | end; | 
|---|
|  | 507 | end; | 
|---|
|  | 508 |  | 
|---|
|  | 509 |  | 
|---|
|  | 510 | {/////////////////////////////////////////////////////////////////////////////// | 
|---|
|  | 511 | //Name: procedure TfrmEncounterFrame.FormDestroy(Sender: TObject); | 
|---|
|  | 512 | //Created: Jan 1999 | 
|---|
|  | 513 | //By: Robert Bott | 
|---|
|  | 514 | //Location: ISL | 
|---|
|  | 515 | //Description: Free up objects in memory when destroying form. | 
|---|
|  | 516 | ///////////////////////////////////////////////////////////////////////////////} | 
|---|
|  | 517 | procedure TfrmEncounterFrame.FormDestroy(Sender: TObject); | 
|---|
|  | 518 | var | 
|---|
|  | 519 | i: integer; | 
|---|
|  | 520 |  | 
|---|
|  | 521 | begin | 
|---|
|  | 522 | inherited; | 
|---|
|  | 523 | for i := ComponentCount-1 downto 0 do | 
|---|
|  | 524 | if(Components[i] is TForm) then | 
|---|
|  | 525 | TForm(Components[i]).Free; | 
|---|
|  | 526 |  | 
|---|
|  | 527 | formlist.clear; | 
|---|
|  | 528 | KillObj(@uProviders); | 
|---|
|  | 529 | uVisitType.Free; | 
|---|
|  | 530 | Formlist.free; | 
|---|
|  | 531 | end; | 
|---|
|  | 532 |  | 
|---|
|  | 533 |  | 
|---|
|  | 534 | {/////////////////////////////////////////////////////////////////////////////// | 
|---|
|  | 535 | //Name: procedure TfrmEncounterFrame.FormCreate(Sender: TObject); | 
|---|
|  | 536 | //Created: Jan 1999 | 
|---|
|  | 537 | //By: Robert Bott | 
|---|
|  | 538 | //Location: ISL | 
|---|
|  | 539 | //Description: Create instances of the objects needed. | 
|---|
|  | 540 | ///////////////////////////////////////////////////////////////////////////////} | 
|---|
|  | 541 | procedure TfrmEncounterFrame.FormCreate(Sender: TObject); | 
|---|
|  | 542 | begin | 
|---|
|  | 543 | uProviders := TPCEProviderList.Create; | 
|---|
|  | 544 | uVisitType := TPCEProc.create; | 
|---|
|  | 545 | //uVitalOld  := TStringList.create; | 
|---|
|  | 546 | //uVitalNew  := TStringList.create; | 
|---|
|  | 547 | FormList := TStringList.create; | 
|---|
|  | 548 | fCancel := False; | 
|---|
|  | 549 | FAbort := TRUE; | 
|---|
|  | 550 | SetFormFonts; | 
|---|
|  | 551 | end; | 
|---|
|  | 552 |  | 
|---|
|  | 553 |  | 
|---|
|  | 554 | {/////////////////////////////////////////////////////////////////////////////// | 
|---|
|  | 555 | //Name: procedure TfrmEncounterFrame.SendData; | 
|---|
|  | 556 | //Created: Jan 1999 | 
|---|
|  | 557 | //By: Robert Bott | 
|---|
|  | 558 | //Location: ISL | 
|---|
|  | 559 | //Description: Send Data back to the M side sor storing. | 
|---|
|  | 560 | ///////////////////////////////////////////////////////////////////////////////} | 
|---|
|  | 561 | procedure TfrmEncounterFrame.SendData; | 
|---|
|  | 562 | //send PCE data to the RPC | 
|---|
|  | 563 | var | 
|---|
|  | 564 | StoreMessage: string; | 
|---|
|  | 565 | GAFScore: integer; | 
|---|
|  | 566 | GAFDate: TFMDateTime; | 
|---|
|  | 567 | GAFStaff: Int64; | 
|---|
|  | 568 |  | 
|---|
|  | 569 | begin | 
|---|
|  | 570 | inherited; | 
|---|
|  | 571 | // do validation for vitals & anything else here | 
|---|
|  | 572 |  | 
|---|
|  | 573 | //process vitals | 
|---|
|  | 574 | if FormListContains(CT_VitNm) then | 
|---|
|  | 575 | begin | 
|---|
|  | 576 | with frmEncVitals do | 
|---|
|  | 577 | if HasData then | 
|---|
|  | 578 | begin | 
|---|
|  | 579 | if AssignVitals then | 
|---|
|  | 580 | begin | 
|---|
|  | 581 | StoreMessage := ValAndStoreVitals(frmEncVitals.VitalNew); | 
|---|
|  | 582 | if (Storemessage <> 'True') then | 
|---|
|  | 583 | begin | 
|---|
|  | 584 | showmessage(storemessage); | 
|---|
|  | 585 | //        exit; | 
|---|
|  | 586 | end; | 
|---|
|  | 587 | end; | 
|---|
|  | 588 | end; | 
|---|
|  | 589 | end; | 
|---|
|  | 590 |  | 
|---|
|  | 591 | if(FormListContains(CT_GAFNm)) then | 
|---|
|  | 592 | begin | 
|---|
|  | 593 | frmGAF.GetGAFScore(GAFScore, GAFDate, GAFStaff); | 
|---|
|  | 594 | if(GAFScore > 0) then | 
|---|
|  | 595 | SaveGAFScore(GAFScore, GAFDate, GAFStaff); | 
|---|
|  | 596 | end; | 
|---|
|  | 597 |  | 
|---|
|  | 598 | //PCE | 
|---|
|  | 599 |  | 
|---|
|  | 600 | UpdateEncounter(uEncPCEData); | 
|---|
|  | 601 | with uEncPCEData do | 
|---|
|  | 602 | begin | 
|---|
|  | 603 | if FAutoSave then | 
|---|
|  | 604 | Save | 
|---|
|  | 605 | else | 
|---|
|  | 606 | FSaveNeeded := TRUE; | 
|---|
|  | 607 | end; | 
|---|
|  | 608 | Close; | 
|---|
|  | 609 | end; | 
|---|
|  | 610 |  | 
|---|
|  | 611 | {/////////////////////////////////////////////////////////////////////////////// | 
|---|
|  | 612 | //Name: procedure TfrmEncounterFrame.FormCloseQuery(Sender: TObject; | 
|---|
|  | 613 | //Created: Jan 1999 | 
|---|
|  | 614 | //By: Robert Bott | 
|---|
|  | 615 | //Location: ISL | 
|---|
|  | 616 | //Description: Check to see if the Cancel button was pressed, if not, call | 
|---|
|  | 617 | // procedure to send the data to the server. | 
|---|
|  | 618 | ///////////////////////////////////////////////////////////////////////////////} | 
|---|
|  | 619 | procedure TfrmEncounterFrame.FormCloseQuery(Sender: TObject; | 
|---|
|  | 620 | var CanClose: Boolean); | 
|---|
|  | 621 |  | 
|---|
|  | 622 | const | 
|---|
|  | 623 | TXT_SAVECHANGES = 'Save Changes?'; | 
|---|
|  | 624 |  | 
|---|
|  | 625 | var | 
|---|
|  | 626 | TmpPCEData: TPCEData; | 
|---|
|  | 627 | ask, ChangeOK: boolean; | 
|---|
|  | 628 |  | 
|---|
|  | 629 | begin | 
|---|
|  | 630 | CanClose := True; | 
|---|
|  | 631 | if(FAbort) then | 
|---|
|  | 632 | FCancel := (InfoBox(TXT_SAVECHANGES, TXT_SAVECHANGES, MB_YESNO) = ID_NO); | 
|---|
|  | 633 | if FCancel then Exit;  //*KCM* | 
|---|
|  | 634 |  | 
|---|
|  | 635 | if(uProviders.PrimaryIdx >= 0) then | 
|---|
|  | 636 | ask := TRUE | 
|---|
|  | 637 | else | 
|---|
|  | 638 | begin | 
|---|
|  | 639 | TmpPCEData := TPCEData.Create; | 
|---|
|  | 640 | try | 
|---|
|  | 641 | uEncPCEData.CopyPCEData(TmpPCEData); | 
|---|
|  | 642 | UpdateEncounter(TmpPCEData); | 
|---|
|  | 643 | ask := TmpPCEData.NeedProviderInfo; | 
|---|
|  | 644 | finally | 
|---|
|  | 645 | TmpPCEData.Free; | 
|---|
|  | 646 | end; | 
|---|
|  | 647 | end; | 
|---|
|  | 648 | if ask and (NoPrimaryPCEProvider(uProviders, uEncPCEData)) then | 
|---|
|  | 649 | begin | 
|---|
|  | 650 | InfoBox(TX_PROV_REQ, TC_PROV_REQ, MB_OK or MB_ICONWARNING); | 
|---|
|  | 651 | CanClose := False; | 
|---|
|  | 652 | Exit; | 
|---|
|  | 653 | end; | 
|---|
|  | 654 |  | 
|---|
|  | 655 | uVisitType.Provider := uProviders.PrimaryIEN;  {RV - v20.1} | 
|---|
|  | 656 |  | 
|---|
|  | 657 | if FormListContains(CT_VitNm) then | 
|---|
|  | 658 | CanClose := frmEncVitals.OK2SaveVitals; | 
|---|
|  | 659 |  | 
|---|
|  | 660 | if CanClose and FormListContains(CT_ProcNm) then | 
|---|
|  | 661 | begin | 
|---|
|  | 662 | CanClose := frmProcedures.OK2SaveProcedures; | 
|---|
|  | 663 | if not CanClose then | 
|---|
|  | 664 | begin | 
|---|
|  | 665 | tabPageChange(Self, FormList.IndexOf(CT_ProcNm), ChangeOK); | 
|---|
|  | 666 | SwitchToPage(PageIDToForm(CT_PROCEDURES)); | 
|---|
|  | 667 | TabControl.TabIndex := FormList.IndexOf(CT_ProcNm); | 
|---|
|  | 668 | end; | 
|---|
|  | 669 | end; | 
|---|
|  | 670 |  | 
|---|
|  | 671 | if CanClose then SendData;  //*KCM* | 
|---|
|  | 672 |  | 
|---|
|  | 673 | end; | 
|---|
|  | 674 |  | 
|---|
|  | 675 | procedure TfrmEncounterFrame.TabControlChange(Sender: TObject); | 
|---|
|  | 676 | var | 
|---|
|  | 677 | i: integer; | 
|---|
|  | 678 | begin | 
|---|
|  | 679 | //must switch based on caption, as all tabs may not be present. | 
|---|
|  | 680 | if (sender as tTabControl).tabindex = -1 then exit; | 
|---|
|  | 681 |  | 
|---|
|  | 682 | for i := CT_FIRST to CT_LAST do | 
|---|
|  | 683 | begin | 
|---|
|  | 684 | with Formlist do | 
|---|
|  | 685 | with sender as tTabControl do | 
|---|
|  | 686 | if Tabindex = IndexOf(PageIdToTab(i)) then | 
|---|
|  | 687 | begin | 
|---|
|  | 688 | PageIDToForm(i).show; | 
|---|
|  | 689 | SwitchToPage(PageIDToForm(i)); | 
|---|
|  | 690 | end; | 
|---|
|  | 691 | end; | 
|---|
|  | 692 | end; | 
|---|
|  | 693 |  | 
|---|
|  | 694 | procedure TfrmEncounterFrame.TabControlChanging(Sender: TObject; | 
|---|
|  | 695 | var AllowChange: Boolean); | 
|---|
|  | 696 | begin | 
|---|
|  | 697 | if(assigned(FLastPage)) then | 
|---|
|  | 698 | FLastPage.AllowTabChange(AllowChange); | 
|---|
|  | 699 | end; | 
|---|
|  | 700 |  | 
|---|
|  | 701 | procedure TfrmEncounterFrame.UpdateEncounter(PCE: TPCEData); | 
|---|
|  | 702 | begin | 
|---|
|  | 703 | with PCE do | 
|---|
|  | 704 | begin | 
|---|
|  | 705 | if FormListContains(CT_VisitNm) then | 
|---|
|  | 706 | begin | 
|---|
|  | 707 | VisitType := uVisitType; | 
|---|
|  | 708 | frmVisitType.fraVisitRelated.GetRelated(uEncPCEData); | 
|---|
|  | 709 | Providers.Merge(uProviders); | 
|---|
|  | 710 | end; | 
|---|
|  | 711 |  | 
|---|
|  | 712 | if FormListContains(CT_DiagNm) then | 
|---|
|  | 713 | SetDiagnoses(frmDiagnoses.lbGrid.Items); | 
|---|
|  | 714 | if FormListContains(CT_ProcNm) then | 
|---|
|  | 715 | SetProcedures(frmProcedures.lbGrid.Items); | 
|---|
|  | 716 | if FormListContains(CT_ImmNm) then | 
|---|
|  | 717 | SetImmunizations(frmImmunizations.lbGrid.Items); | 
|---|
| [460] | 718 | if FormListContains(CT_SkinNm) then | 
|---|
| [459] | 719 | SetSkinTests(frmSkinTests.lbGrid.Items); | 
|---|
|  | 720 | if FormListContains(CT_PedNm) then | 
|---|
|  | 721 | SetPatientEds(frmPatientEd.lbGrid.Items); | 
|---|
| [460] | 722 | if FormListContains(CT_HlthNm) then | 
|---|
| [459] | 723 | SetHealthFactors(frmHealthFactors.lbGrid.Items); | 
|---|
| [460] | 724 | if FormListContains(CT_XamNm) then | 
|---|
| [459] | 725 | SetExams(frmExams.lbGrid.Items); | 
|---|
|  | 726 | end; | 
|---|
|  | 727 | end; | 
|---|
|  | 728 |  | 
|---|
|  | 729 | procedure TfrmEncounterFrame.SelectTab(NewTabName: string); | 
|---|
|  | 730 | var | 
|---|
|  | 731 | AllowChange: boolean; | 
|---|
|  | 732 | begin | 
|---|
|  | 733 | AllowChange := True; | 
|---|
|  | 734 | tabControl.TabIndex := FormList.IndexOf(NewTabName); | 
|---|
|  | 735 | tabPageChange(Self, tabControl.TabIndex, AllowChange); | 
|---|
|  | 736 | end; | 
|---|
|  | 737 |  | 
|---|
|  | 738 | procedure TfrmEncounterFrame.TabControlExit(Sender: TObject); | 
|---|
|  | 739 | var | 
|---|
|  | 740 | i: integer; | 
|---|
|  | 741 | begin | 
|---|
|  | 742 | //Keep the focus on the active page | 
|---|
|  | 743 | if (sender as tTabControl).tabindex = -1 then exit; | 
|---|
|  | 744 |  | 
|---|
|  | 745 | for i := CT_FIRST to CT_LAST do | 
|---|
|  | 746 | begin | 
|---|
|  | 747 | with Formlist do | 
|---|
|  | 748 | with sender as tTabControl do | 
|---|
|  | 749 | if Tabindex = IndexOf(PageIdToTab(i)) then | 
|---|
|  | 750 | begin | 
|---|
|  | 751 | PageIDToForm(i).FocusFirstControl; | 
|---|
|  | 752 | end; | 
|---|
|  | 753 | end; | 
|---|
|  | 754 | end; | 
|---|
|  | 755 |  | 
|---|
|  | 756 | procedure TfrmEncounterFrame.FormKeyDown(Sender: TObject; var Key: Word; | 
|---|
|  | 757 | Shift: TShiftState); | 
|---|
|  | 758 | var | 
|---|
|  | 759 | CanChange: boolean; | 
|---|
|  | 760 | begin | 
|---|
|  | 761 | if (Key = VK_ESCAPE) then | 
|---|
|  | 762 | begin | 
|---|
|  | 763 | Key := 0; | 
|---|
|  | 764 | FLastPage.btnCancel.Click; | 
|---|
|  | 765 | end | 
|---|
|  | 766 | else if Key = VK_TAB then | 
|---|
|  | 767 | begin | 
|---|
|  | 768 | if ssCtrl in Shift then | 
|---|
|  | 769 | begin | 
|---|
|  | 770 | CanChange := True; | 
|---|
|  | 771 | if Assigned(TabControl.OnChanging) then | 
|---|
|  | 772 | TabControl.OnChanging(TabControl, CanChange); | 
|---|
|  | 773 | if CanChange then | 
|---|
|  | 774 | begin | 
|---|
|  | 775 | if ssShift in Shift then | 
|---|
|  | 776 | begin | 
|---|
|  | 777 | if TabControl.TabIndex < 1 then | 
|---|
|  | 778 | TabControl.TabIndex := TabControl.Tabs.Count -1 | 
|---|
|  | 779 | else | 
|---|
|  | 780 | TabControl.TabIndex := TabControl.TabIndex - 1; | 
|---|
|  | 781 | end | 
|---|
|  | 782 | else | 
|---|
|  | 783 | TabControl.TabIndex := (TabControl.TabIndex + 1) mod TabControl.Tabs.Count; | 
|---|
|  | 784 | if Assigned(TabControl.OnChange) then | 
|---|
|  | 785 | TabControl.OnChange(TabControl); | 
|---|
|  | 786 | end; | 
|---|
|  | 787 | Key := 0; | 
|---|
|  | 788 | end; | 
|---|
|  | 789 | end; | 
|---|
|  | 790 | if FLastPage = frmEncVitals then | 
|---|
|  | 791 | frmEncVitals.FormKeyDown(Sender, Key, Shift); | 
|---|
|  | 792 | end; | 
|---|
|  | 793 |  | 
|---|
|  | 794 | procedure TfrmEncounterFrame.SetFormFonts; | 
|---|
|  | 795 | var | 
|---|
|  | 796 | NewFontSize: integer; | 
|---|
|  | 797 | begin | 
|---|
|  | 798 | NewFontSize := MainFontsize; | 
|---|
|  | 799 | if FormListContains(CT_VisitNm) then | 
|---|
|  | 800 | frmVisitType.Font.Size := NewFontSize; | 
|---|
|  | 801 | if FormListContains(CT_DiagNm) then | 
|---|
|  | 802 | frmDiagnoses.Font.Size := NewFontSize; | 
|---|
|  | 803 | if FormListContains(CT_ProcNm) then | 
|---|
|  | 804 | frmProcedures.Font.Size := NewFontSize; | 
|---|
|  | 805 | if FormListContains(CT_ImmNm) then | 
|---|
|  | 806 | frmImmunizations.Font.Size := NewFontSize; | 
|---|
|  | 807 | if FormListContains(CT_SkinNm) then | 
|---|
|  | 808 | frmSkinTests.Font.Size := NewFontSize; | 
|---|
|  | 809 | if FormListContains(CT_PedNm) then | 
|---|
|  | 810 | frmPatientEd.Font.Size := NewFontSize; | 
|---|
|  | 811 | if FormListContains(CT_HlthNm) then | 
|---|
|  | 812 | frmHealthFactors.Font.Size := NewFontSize; | 
|---|
|  | 813 | if FormListContains(CT_XamNm) then | 
|---|
|  | 814 | frmExams.Font.Size := NewFontSize; | 
|---|
|  | 815 | if FormListContains(CT_VitNm) then | 
|---|
|  | 816 | frmEncVitals.Font.Size := NewFontSize; | 
|---|
|  | 817 | if FormListContains(CT_GAFNm) then | 
|---|
|  | 818 | frmGAF.SetFontSize(NewFontSize); | 
|---|
|  | 819 | end; | 
|---|
|  | 820 |  | 
|---|
| [460] | 821 | procedure TfrmEncounterFrame.FormClose(Sender: TObject; | 
|---|
|  | 822 | var Action: TCloseAction); | 
|---|
| [459] | 823 | begin | 
|---|
| [460] | 824 | SaveUserBounds(Self); | 
|---|
|  | 825 | end; | 
|---|
|  | 826 |  | 
|---|
|  | 827 | procedure TfrmEncounterFrame.FormCanResize(Sender: TObject; var NewWidth, | 
|---|
|  | 828 | NewHeight: Integer; var Resize: Boolean); | 
|---|
|  | 829 | begin | 
|---|
| [459] | 830 | //CQ4740 | 
|---|
|  | 831 | if NewWidth < 200 then | 
|---|
|  | 832 | begin | 
|---|
|  | 833 | NewWidth := 200; | 
|---|
|  | 834 | Resize := false; | 
|---|
|  | 835 | end; | 
|---|
|  | 836 | end; | 
|---|
|  | 837 |  | 
|---|
|  | 838 | end. | 
|---|