| [459] | 1 | unit fOrdersSign;
 | 
|---|
 | 2 | 
 | 
|---|
 | 3 | {.$define debug}
 | 
|---|
 | 4 | 
 | 
|---|
 | 5 | interface
 | 
|---|
 | 6 | 
 | 
|---|
 | 7 | uses
 | 
|---|
 | 8 |   Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
 | 
|---|
 | 9 |   fAutoSz, StdCtrls, ORFn, ORCtrls, AppEvnts, mCoPayDesc, XUDIGSIGSC_TLB,
 | 
|---|
 | 10 |   ComCtrls, CheckLst, ExtCtrls, uConsults, UBAGlobals,UBACore, UBAMessages, UBAConst,
 | 
|---|
 | 11 |   Menus, ORClasses;
 | 
|---|
 | 12 | 
 | 
|---|
 | 13 | type
 | 
|---|
 | 14 |   TfrmSignOrders = class(TForm)
 | 
|---|
 | 15 |     cmdOK: TButton;
 | 
|---|
 | 16 |     cmdCancel: TButton;
 | 
|---|
 | 17 |     lblESCode: TLabel;
 | 
|---|
 | 18 |     txtESCode: TCaptionEdit;
 | 
|---|
 | 19 |     fraCoPay: TfraCoPayDesc;
 | 
|---|
 | 20 |     clstOrders: TCaptionCheckListBox;
 | 
|---|
 | 21 |     laDiagnosis: TLabel;
 | 
|---|
 | 22 |     gbdxLookup: TGroupBox;
 | 
|---|
 | 23 |     buOrdersDiagnosis: TButton;
 | 
|---|
 | 24 |     poBACopyPaste: TPopupMenu;
 | 
|---|
 | 25 |     Copy1: TMenuItem;
 | 
|---|
 | 26 |     Paste1: TMenuItem; 
 | 
|---|
 | 27 |     Diagnosis1: TMenuItem;
 | 
|---|
 | 28 |     Exit1: TMenuItem;
 | 
|---|
 | 29 |     Label2: TStaticText;
 | 
|---|
 | 30 |     procedure FormCreate(Sender: TObject);
 | 
|---|
 | 31 |     procedure cmdOKClick(Sender: TObject);
 | 
|---|
 | 32 |     procedure cmdCancelClick(Sender: TObject);
 | 
|---|
 | 33 |     procedure FormDestroy(Sender: TObject);
 | 
|---|
 | 34 |     procedure clstOrdersDrawItem(Control: TWinControl; Index: Integer; Rect: TRect; State: TOwnerDrawState);
 | 
|---|
 | 35 |     procedure clstOrdersMeasureItem(Control: TWinControl; Index: Integer; var AHeight: Integer);
 | 
|---|
 | 36 |     procedure clstOrdersClickCheck(Sender: TObject);
 | 
|---|
 | 37 |     procedure clstOrdersMouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer);
 | 
|---|
 | 38 |     procedure FormShow(Sender: TObject);
 | 
|---|
 | 39 |     procedure buOrdersDiagnosisClick(Sender: TObject);
 | 
|---|
 | 40 |     function IsSignatureRequired:boolean;
 | 
|---|
 | 41 |     procedure Exit1Click(Sender: TObject);
 | 
|---|
 | 42 |     procedure Copy1Click(Sender: TObject);
 | 
|---|
 | 43 |     procedure Paste1Click(Sender: TObject); 
 | 
|---|
 | 44 |     procedure clstOrdersMouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
 | 
|---|
 | 45 |     procedure clstOrdersClick(Sender: TObject);
 | 
|---|
 | 46 |     procedure FormKeyDown(Sender: TObject; var Key: Word;
 | 
|---|
 | 47 |       Shift: TShiftState);
 | 
|---|
 | 48 |     procedure FormMouseMove(Sender: TObject; Shift: TShiftState; X,
 | 
|---|
 | 49 |       Y: Integer); 
 | 
|---|
 | 50 |     procedure fraCoPaylblHNCMouseMove(Sender: TObject; Shift: TShiftState;
 | 
|---|
 | 51 |       X, Y: Integer);
 | 
|---|
 | 52 |     procedure fraCoPayLabel23Enter(Sender: TObject);
 | 
|---|
 | 53 |     procedure fraCoPayLabel23Exit(Sender: TObject);
 | 
|---|
 | 54 |     procedure clstOrdersKeyUp(Sender: TObject; var Key: Word;
 | 
|---|
 | 55 |       Shift: TShiftState);
 | 
|---|
 | 56 |   private
 | 
|---|
 | 57 |     OKPressed: Boolean;
 | 
|---|
 | 58 |     ESCode: string;
 | 
|---|
 | 59 |     FLastHintItem: integer;
 | 
|---|
 | 60 |     FOldHintPause: integer;
 | 
|---|
 | 61 |     FOldHintHidePause: integer;
 | 
|---|
 | 62 |     function ItemsAreChecked: Boolean;
 | 
|---|
 | 63 |     function GetNumberOfSelectedOrders : byte;
 | 
|---|
 | 64 |     procedure ShowTreatmentFactorHints(var pHintText: string; var pCompName: TORStaticText); // 508
 | 
|---|
 | 65 |     procedure SetItemTextToState;
 | 
|---|
 | 66 |     procedure FormatListForScreenReader;
 | 
|---|
 | 67 |   public
 | 
|---|
 | 68 |     procedure SetCheckBoxStatus(thisOrderID: string);
 | 
|---|
 | 69 |     function GetCheckBoxStatus(sourceOrderID : string) : string; overload; 
 | 
|---|
 | 70 |     
 | 
|---|
 | 71 | end;
 | 
|---|
 | 72 | 
 | 
|---|
 | 73 | {Begin BillingAware}
 | 
|---|
 | 74 |   { TODO 3 -oKW -cRefinement : Change to dynamic array or other dynamic structure for Billing Awareness Phase II. }
 | 
|---|
 | 75 |   TarRect = array[MIN_RECT..MAX_RECT] of TRect;
 | 
|---|
 | 76 | 
 | 
|---|
 | 77 |   var
 | 
|---|
 | 78 |     thisRect: TRect;
 | 
|---|
 | 79 |     j: shortint;
 | 
|---|
 | 80 |     ARect: TRect;
 | 
|---|
 | 81 |     arRect: TarRect;
 | 
|---|
 | 82 |     ProvDx:  TProvisionalDiagnosis;
 | 
|---|
 | 83 |     FOSTFHintWndActive: boolean;
 | 
|---|
 | 84 |     FOSTFhintWindow: THintWindow;
 | 
|---|
 | 85 |     tempList : TList;
 | 
|---|
 | 86 | 
 | 
|---|
 | 87 | {End BillingAware}
 | 
|---|
 | 88 | 
 | 
|---|
 | 89 | {Forward} function ExecuteSignOrders(SelectedList: TList): Boolean;
 | 
|---|
 | 90 | 
 | 
|---|
 | 91 | var
 | 
|---|
 | 92 |   crypto: IXuDigSigS;
 | 
|---|
 | 93 |   rectIndex: Integer;
 | 
|---|
 | 94 | 
 | 
|---|
 | 95 |   {Begin BillingAware}
 | 
|---|
 | 96 |     frmSignOrders: TfrmSignOrders;
 | 
|---|
 | 97 |     chkBoxStatus: string;
 | 
|---|
 | 98 |     srcOrderID: string;
 | 
|---|
 | 99 |     targetOrderID: string;
 | 
|---|
 | 100 |     tempStrList: TStringList;
 | 
|---|
 | 101 |     srcDx: string;
 | 
|---|
 | 102 |     tempBillableList :TStringList;
 | 
|---|
 | 103 |     tempOrderList: TStringList;
 | 
|---|
 | 104 |     copyOrderID: string;
 | 
|---|
 | 105 |     srcIndex: integer;
 | 
|---|
 | 106 |     CopyBuffer: TBADxRecord;
 | 
|---|
 | 107 |     //CopyActive: boolean;  //CQ6225
 | 
|---|
 | 108 |   {End BillingAware}
 | 
|---|
 | 109 | 
 | 
|---|
 | 110 | implementation
 | 
|---|
 | 111 | 
 | 
|---|
 | 112 | {$R *.DFM}
 | 
|---|
 | 113 | 
 | 
|---|
 | 114 | uses
 | 
|---|
 | 115 |   Hash, rCore, rOrders, uConst, fOrdersPrint, uCore, uOrders, uSignItems, fOrders,
 | 
|---|
| [460] | 116 |   fPCELex, rPCE, fODConsult, fBALocalDiagnoses, fClinicWardMeds, fFrame;
 | 
|---|
| [459] | 117 | 
 | 
|---|
 | 118 | const
 | 
|---|
 | 119 |   TX_SAVERR1 = 'The error, ';
 | 
|---|
 | 120 |   TX_SAVERR2 = ', occurred while trying to save:' + CRLF + CRLF;
 | 
|---|
 | 121 |   TC_SAVERR  = 'Error Saving Order';
 | 
|---|
 | 122 | 
 | 
|---|
 | 123 | function TfrmSignOrders.GetNumberOfSelectedOrders : byte;
 | 
|---|
 | 124 | {
 | 
|---|
 | 125 |  - Return the number of orders in clstOrders that are currently selected.
 | 
|---|
 | 126 | }
 | 
|---|
 | 127 | var
 | 
|---|
 | 128 |   i: integer;
 | 
|---|
 | 129 |   numSelected: byte;
 | 
|---|
 | 130 | begin
 | 
|---|
 | 131 |   Result := 0;
 | 
|---|
 | 132 |   if BILLING_AWARE then
 | 
|---|
 | 133 |      begin
 | 
|---|
 | 134 |       numSelected := 0;
 | 
|---|
 | 135 | 
 | 
|---|
 | 136 |         try
 | 
|---|
 | 137 |             for i := 0 to fOrdersSign.frmSignOrders.clstOrders.Items.Count-1 do
 | 
|---|
 | 138 |                 if (fOrdersSign.frmSignOrders.clstOrders.Selected[i]) then
 | 
|---|
 | 139 |                    Inc(numSelected);
 | 
|---|
 | 140 |         except
 | 
|---|
 | 141 |            on EListError do
 | 
|---|
 | 142 |               begin
 | 
|---|
 | 143 |               {$ifdef debug}ShowMessage('EListError in frmSignOrders.GetNumberOfSelectedOrders()');{$endif}
 | 
|---|
 | 144 |               raise;
 | 
|---|
 | 145 |               end;
 | 
|---|
 | 146 |         end;
 | 
|---|
 | 147 | 
 | 
|---|
 | 148 |       Result := numSelected;
 | 
|---|
 | 149 |      end;
 | 
|---|
 | 150 | end;
 | 
|---|
 | 151 | 
 | 
|---|
 | 152 | procedure TfrmSignOrders.SetCheckBoxStatus(thisOrderID: string);
 | 
|---|
 | 153 | {
 | 
|---|
 | 154 |  - Set the current GRID checkboxes status
 | 
|---|
 | 155 | }
 | 
|---|
 | 156 | begin
 | 
|---|
 | 157 |   if BILLING_AWARE then
 | 
|---|
 | 158 |      begin
 | 
|---|
 | 159 |         uSignItems.uSigItems.SetSigItems(clstOrders, thisOrderID);
 | 
|---|
 | 160 |      end;
 | 
|---|
 | 161 | end;
 | 
|---|
 | 162 | 
 | 
|---|
 | 163 | function TfrmSignOrders.GetCheckBoxStatus(sourceOrderID: string) : string;  //PASS IN ORDER ID - NOT GRID INDEX
 | 
|---|
 | 164 | {
 | 
|---|
 | 165 | - Obtain checkbox status for selected order - BY ORDER ID
 | 
|---|
 | 166 | }
 | 
|---|
 | 167 | var
 | 
|---|
 | 168 |   itemsList: TStringList;
 | 
|---|
 | 169 |   i: smallint;
 | 
|---|
 | 170 |   thisOrderID: string;
 | 
|---|
 | 171 | begin
 | 
|---|
 | 172 |   Result := '';
 | 
|---|
 | 173 |   itemsList := TStringList.Create;
 | 
|---|
 | 174 |   itemsList.Clear;
 | 
|---|
 | 175 |   itemsList := uSigItems.GetSigItems; //Get FItems list
 | 
|---|
 | 176 | 
 | 
|---|
 | 177 |   if BILLING_AWARE then
 | 
|---|
 | 178 |      begin
 | 
|---|
 | 179 |         try
 | 
|---|
 | 180 |            for i := 0 to itemsList.Count-1 do
 | 
|---|
 | 181 |               begin
 | 
|---|
 | 182 |               thisOrderID := Piece(itemsList[i],'^',1); //get the order ID
 | 
|---|
 | 183 |               if thisOrderID = sourceOrderID then   //compare to order ID of source order
 | 
|---|
 | 184 |                  begin
 | 
|---|
 | 185 |                  Result := Piece(itemsList[i],U,4);  //return TF status'
 | 
|---|
 | 186 |                  Break;
 | 
|---|
 | 187 |                  end;
 | 
|---|
 | 188 |               end;
 | 
|---|
 | 189 |         except
 | 
|---|
 | 190 |            on EListError do
 | 
|---|
 | 191 |               begin
 | 
|---|
 | 192 |               {$ifdef debug}ShowMessage('EListError in frmSignOrders.GetCheckBoxStatus()');{$endif}
 | 
|---|
 | 193 |               raise;
 | 
|---|
 | 194 |               end;
 | 
|---|
 | 195 |         end;
 | 
|---|
 | 196 |      end;
 | 
|---|
 | 197 | end;
 | 
|---|
 | 198 | 
 | 
|---|
 | 199 | function ExecuteSignOrders(SelectedList: TList): Boolean;
 | 
|---|
 | 200 | var
 | 
|---|
 | 201 |   i, cidx,cnt, theSts: Integer;
 | 
|---|
 | 202 |   ShrinkHeight: integer;
 | 
|---|
 | 203 |   SignList: TStringList;
 | 
|---|
 | 204 |   Obj: TOrder;
 | 
|---|
 | 205 |   DigSigErr, DigStoreErr: Boolean;
 | 
|---|
 | 206 |   x, SigData, SigUser, SigDrugSch, SigDEA: string;
 | 
|---|
 | 207 |   cSignature, cHashData, cCrlUrl, cErr: string;
 | 
|---|
 | 208 |   cProvDUZ: Int64;
 | 
|---|
 | 209 |   OrderText: string;
 | 
|---|
| [460] | 210 |   PrintLoc: Integer;
 | 
|---|
| [459] | 211 |  // tempOrderID: string;
 | 
|---|
 | 212 | 
 | 
|---|
 | 213 |   function FindOrderText(const AnID: string): string;
 | 
|---|
 | 214 |   var
 | 
|---|
 | 215 |     i: Integer;
 | 
|---|
 | 216 |   begin
 | 
|---|
 | 217 |     Result := '';
 | 
|---|
 | 218 |     fOrdersSign.tempList := selectedList;
 | 
|---|
 | 219 |     with SelectedList do for i := 0 to Count - 1 do
 | 
|---|
 | 220 |       with TOrder(Items[i]) do if ID = AnID then
 | 
|---|
 | 221 |       begin
 | 
|---|
 | 222 |         Result := Text;
 | 
|---|
 | 223 |         Break;
 | 
|---|
 | 224 |       end;
 | 
|---|
 | 225 |   end;
 | 
|---|
 | 226 | 
 | 
|---|
 | 227 |   function SignNotRequired: Boolean;
 | 
|---|
 | 228 |   var
 | 
|---|
 | 229 |     i: Integer;
 | 
|---|
 | 230 |   begin
 | 
|---|
 | 231 |     Result := True;
 | 
|---|
 | 232 |     tempList := SelectedList;
 | 
|---|
 | 233 |     with SelectedList do for i := 0 to Pred(Count) do
 | 
|---|
 | 234 |     begin
 | 
|---|
 | 235 |       with TOrder(Items[i]) do if Signature <> OSS_NOT_REQUIRE then Result := False;
 | 
|---|
 | 236 |     end;
 | 
|---|
 | 237 |   end;
 | 
|---|
 | 238 | 
 | 
|---|
 | 239 |   function DigitalSign: Boolean;
 | 
|---|
 | 240 |   var
 | 
|---|
 | 241 |     i: Integer;
 | 
|---|
 | 242 |   begin
 | 
|---|
 | 243 |     Result := False;
 | 
|---|
 | 244 | 
 | 
|---|
 | 245 |     with SelectedList do for i := 0 to Pred(Count) do
 | 
|---|
 | 246 |     begin
 | 
|---|
 | 247 |       with TOrder(Items[i]) do if Copy(DigSigReq,1,1) = '2' then Result := True;
 | 
|---|
 | 248 |     end;
 | 
|---|
 | 249 |   end;
 | 
|---|
 | 250 | 
 | 
|---|
 | 251 | begin
 | 
|---|
 | 252 |   Result := False;
 | 
|---|
 | 253 |   DigSigErr := True;
 | 
|---|
| [460] | 254 |   PrintLoc := 0;
 | 
|---|
| [459] | 255 |   if SelectedList.Count = 0 then Exit;
 | 
|---|
 | 256 |   if BILLING_AWARE then
 | 
|---|
 | 257 |   begin
 | 
|---|
 | 258 |      tempOrderList := TStringList.Create;
 | 
|---|
 | 259 |      tempOrderList.Clear;
 | 
|---|
 | 260 |   end;
 | 
|---|
 | 261 |   frmSignOrders := TfrmSignOrders.Create(Application);
 | 
|---|
 | 262 |   try
 | 
|---|
 | 263 |     ResizeAnchoredFormToFont(frmSignOrders);
 | 
|---|
 | 264 |     SigItems.ResetOrders;
 | 
|---|
 | 265 |     with SelectedList do for i := 0 to Count - 1 do
 | 
|---|
 | 266 |       begin
 | 
|---|
 | 267 |         obj := TOrder(Items[i]);
 | 
|---|
 | 268 |         cidx := frmSignOrders.clstOrders.Items.AddObject(Obj.Text,Obj);
 | 
|---|
 | 269 |         SigItems.Add(CH_ORD,Obj.ID, cidx);
 | 
|---|
 | 270 |          //HDS6205 allows dx entry for NON CIDC Consult orders
 | 
|---|
 | 271 |    //    if BILLING_AWARE then  //HDS6205
 | 
|---|
 | 272 |    //        if UBAGlobals.BAConsultOrdersRequireDx.Count > 0 then  //HDS6205
 | 
|---|
 | 273 |    //        begin
 | 
|---|
 | 274 |   //            tempOrderID := UBACore.SetOrderIDConsultDxRequired(Piece(Obj.ID,';',1) + ';1');  //HDS6205
 | 
|---|
 | 275 |   //            tempOrderList.Add(tempOrderID);  //HDS6205
 | 
|---|
 | 276 |   //         end
 | 
|---|
 | 277 |   //         else
 | 
|---|
 | 278 |          if BILLING_AWARE then
 | 
|---|
 | 279 |             tempOrderList.Add(Obj.ID);
 | 
|---|
 | 280 | 
 | 
|---|
 | 281 |         frmSignOrders.clstOrders.Checked[cidx] := TRUE;
 | 
|---|
 | 282 | 
 | 
|---|
 | 283 |         if (TOrder(Items[i]).DGroupName) = NonVAMedGroup then
 | 
|---|
 | 284 |            frmSignOrders.clstOrders.State[cidx] := cbGrayed ;
 | 
|---|
 | 285 |       end;
 | 
|---|
 | 286 | 
 | 
|---|
 | 287 |     if SigItems.UpdateListBox(frmSignOrders.clstOrders) then
 | 
|---|
 | 288 |       frmSignOrders.fraCoPay.Visible := TRUE
 | 
|---|
 | 289 |     else
 | 
|---|
 | 290 |       begin
 | 
|---|
 | 291 | 
 | 
|---|
 | 292 |       {Begin BillingAware}
 | 
|---|
 | 293 |         if  BILLING_AWARE then
 | 
|---|
 | 294 |            frmSignOrders.gbDxLookup.Visible := FALSE;
 | 
|---|
 | 295 |        {End BillingAware}
 | 
|---|
 | 296 | 
 | 
|---|
 | 297 |         ShrinkHeight := frmSignOrders.fraCoPay.Height + 9;
 | 
|---|
 | 298 |         frmSignOrders.Height := frmSignOrders.Height - ShrinkHeight;
 | 
|---|
 | 299 |         frmSignOrders.Label2.Top := frmSignOrders.Label2.Top - ShrinkHeight;
 | 
|---|
 | 300 |         frmSignOrders.clstOrders.Top := frmSignOrders.clstOrders.Top - ShrinkHeight;
 | 
|---|
 | 301 |         frmSignOrders.clstOrders.Height := frmSignOrders.clstOrders.Height + ShrinkHeight;
 | 
|---|
 | 302 |       end;
 | 
|---|
 | 303 | 
 | 
|---|
 | 304 |     if GetPKISite and GetPKIUse and DigitalSign then //PKI setup for crypto card read
 | 
|---|
 | 305 |       begin
 | 
|---|
 | 306 |         try  //PKI object creation
 | 
|---|
 | 307 |           crypto := CoXuDigSigS.Create;
 | 
|---|
 | 308 |           crypto.GetCSP;
 | 
|---|
 | 309 |           StatusText(crypto.Reason);
 | 
|---|
 | 310 |           DigSigErr := False;
 | 
|---|
 | 311 |         except
 | 
|---|
 | 312 |           on  E: Exception do
 | 
|---|
 | 313 |             begin
 | 
|---|
 | 314 |               DigSigErr := True;
 | 
|---|
 | 315 |             end;
 | 
|---|
 | 316 |         end;
 | 
|---|
 | 317 |       end;
 | 
|---|
 | 318 | 
 | 
|---|
 | 319 |     if SignNotRequired then
 | 
|---|
 | 320 |       begin
 | 
|---|
 | 321 |         frmSignOrders.lblESCode.Visible := False;
 | 
|---|
 | 322 |         frmSignOrders.txtESCode.Visible := False;
 | 
|---|
 | 323 |       end;
 | 
|---|
 | 324 | 
 | 
|---|
 | 325 |     if BILLING_AWARE then
 | 
|---|
 | 326 |     begin
 | 
|---|
 | 327 |      //  build list of orders that are not billable based on order type
 | 
|---|
 | 328 |         UBAGlobals.NonBillableOrderList := rpcNonBillableOrders(tempOrderList);
 | 
|---|
 | 329 |     end;
 | 
|---|
 | 330 | 
 | 
|---|
 | 331 |      frmSignOrders.ShowModal;
 | 
|---|
 | 332 |       if frmSignOrders.OKPressed then
 | 
|---|
 | 333 |       begin
 | 
|---|
 | 334 |         Result := True;
 | 
|---|
 | 335 |         SignList := TStringList.Create;
 | 
|---|
 | 336 |         try
 | 
|---|
 | 337 |           with SelectedList do for i := 0 to Count - 1 do with TOrder(Items[i]) do
 | 
|---|
 | 338 |             begin
 | 
|---|
 | 339 |               DigStoreErr := false;
 | 
|---|
 | 340 |               if (DigSigErr = False) and (Copy(TOrder(Items[i]).DigSigReq,1,1) = '2') then
 | 
|---|
 | 341 |                 begin
 | 
|---|
 | 342 |                   StatusText('Retrieving DIGITAL SIGNATURE');
 | 
|---|
 | 343 |                   x := TOrder(Items[i]).ID;
 | 
|---|
 | 344 |                   SigDrugSch := GetDrugSchedule(x);
 | 
|---|
 | 345 |                   SigData := SetExternalText(x,SigDrugSch,User.DUZ);
 | 
|---|
 | 346 |                   if Length(SigData) < 1 then
 | 
|---|
 | 347 |                     begin
 | 
|---|
 | 348 |                       ShowMessage(TOrder(SelectedList.Items[i]).Text + CRLF + CRLF + 'Digital Signature failed with reason: Unable to get required data from server');
 | 
|---|
 | 349 |                       DigStoreErr := true;
 | 
|---|
 | 350 |                     end;
 | 
|---|
 | 351 |                   SigUser := piece(SigData,'^',18);
 | 
|---|
 | 352 |                   SigDEA := piece(SigData,'^',20);
 | 
|---|
 | 353 |                   cProvDUZ := User.DUZ;
 | 
|---|
 | 354 |                   if DigStoreErr = false then
 | 
|---|
 | 355 |                   try
 | 
|---|
 | 356 |                     crypto.Reset;
 | 
|---|
 | 357 |                     crypto.DEAsig := true;
 | 
|---|
 | 358 |                     crypto.UsrName := SigUser;
 | 
|---|
 | 359 |                     crypto.DrugSch := SigDrugSch;
 | 
|---|
 | 360 |                     crypto.UsrNumber := SigDEA;
 | 
|---|
 | 361 |                     crypto.DataBuffer := SigData;
 | 
|---|
 | 362 |                     if crypto.Signdata = true then
 | 
|---|
 | 363 |                       begin
 | 
|---|
 | 364 |                         cSignature := crypto.Signature;
 | 
|---|
 | 365 |                         cHashData := crypto.HashValue;
 | 
|---|
 | 366 |                         cCrlUrl := crypto.CrlUrl;
 | 
|---|
 | 367 |                       end
 | 
|---|
 | 368 |                     else
 | 
|---|
 | 369 |                       begin
 | 
|---|
 | 370 |                         ShowMessage(TOrder(SelectedList.Items[i]).Text + CRLF + CRLF + 'Digital Signature failed with reason: '+ piece(Crypto.Reason, '^', 2));
 | 
|---|
 | 371 |                         DigStoreErr := true;
 | 
|---|
 | 372 |                       end;
 | 
|---|
 | 373 |                   except
 | 
|---|
 | 374 |                     on  E: Exception do
 | 
|---|
 | 375 |                       begin
 | 
|---|
 | 376 |                         ShowMessage(TOrder(SelectedList.Items[i]).Text + CRLF + CRLF + 'Crypto raised an error: '+ E.Message);
 | 
|---|
 | 377 |                         DigStoreErr := true;
 | 
|---|
 | 378 |                       end;
 | 
|---|
 | 379 |                   end;  //except
 | 
|---|
 | 380 |                   if DigStoreErr = true then //PKI
 | 
|---|
 | 381 |                     begin
 | 
|---|
 | 382 |                       //NoOp
 | 
|---|
 | 383 |                     end
 | 
|---|
 | 384 |                   else
 | 
|---|
 | 385 |                     begin
 | 
|---|
 | 386 |                       cErr := '';
 | 
|---|
 | 387 |                       StoreDigitalSig(ID, cHashData, cProvDUZ, cSignature, cCrlUrl, cErr);
 | 
|---|
 | 388 |                       cidx := frmSignOrders.clstOrders.Items.IndexOfObject(TOrder(Items[i]));
 | 
|---|
 | 389 |                       if (cidx > -1 ) and (frmSignOrders.clstOrders.Checked[cidx]) and (cErr = '') then
 | 
|---|
 | 390 |                       begin
 | 
|---|
 | 391 |                         UpdateOrderDGIfNeeded(ID);
 | 
|---|
 | 392 |                         SignList.Add(ID + U + SS_DIGSIG + U + RS_RELEASE + U + NO_PROVIDER);
 | 
|---|
 | 393 |                         BAOrderList.Add(TOrder(Items[i]).ID);
 | 
|---|
 | 394 |                       end;
 | 
|---|
 | 395 |                     end;
 | 
|---|
 | 396 |                 end
 | 
|---|
 | 397 |               else
 | 
|---|
 | 398 |                 begin
 | 
|---|
 | 399 |                   if GetPKISite and (Copy(TOrder(SelectedList.Items[i]).DigSigReq,1,1) = '2') then
 | 
|---|
 | 400 |                     begin
 | 
|---|
 | 401 |                       ShowMessage('ORDER NOT SENT TO PHARMACY' + CRLF + CRLF + TOrder(SelectedList.Items[i]).Text + CRLF + CRLF +
 | 
|---|
 | 402 |                         'This Schedule II medication cannot be electronically entered without a Digital Signature. ' +
 | 
|---|
 | 403 |                         CRLF + 'Please discontinue/cancel this order and create a hand written order for manual processing, or digitally sign the order at a PKI-enabled workstation.');
 | 
|---|
 | 404 |                     end
 | 
|---|
 | 405 |                   else
 | 
|---|
 | 406 |                     begin
 | 
|---|
 | 407 |                       cidx := frmSignOrders.clstOrders.Items.IndexOfObject(TOrder(Items[i]));
 | 
|---|
 | 408 |                       if TOrder(Items[i]).DGroupName = NonVAMedGroup  then  frmSignOrders.clstOrders.Checked[cidx] := True;    //Non VA MEDS
 | 
|---|
 | 409 |                       if (cidx > -1 ) and (frmSignOrders.clstOrders.Checked[cidx]) then
 | 
|---|
 | 410 |                       begin
 | 
|---|
 | 411 |                         UpdateOrderDGIfNeeded(ID);
 | 
|---|
 | 412 |                         SignList.Add(ID + U + SS_ESIGNED + U + RS_RELEASE + U + NO_PROVIDER);
 | 
|---|
 | 413 |                       end;
 | 
|---|
 | 414 |                     end;
 | 
|---|
 | 415 |                 end;
 | 
|---|
 | 416 |             end;
 | 
|---|
 | 417 |           StatusText('Sending Orders to Service(s)...');
 | 
|---|
 | 418 |           if SignList.Count > 0 then
 | 
|---|
 | 419 |           begin
 | 
|---|
| [460] | 420 | 
 | 
|---|
 | 421 |           //hds7591  Clinic/Ward movement.  Patient Admission IMO
 | 
|---|
 | 422 |           if not frmFrame.TimedOut then
 | 
|---|
 | 423 |           begin
 | 
|---|
 | 424 |              if IsValidIMOLoc(uCore.TempEncounterLoc,Patient.DFN) then
 | 
|---|
 | 425 |                 frmClinicWardMeds.ClinicOrWardLocation(SignList, Encounter.Location,uCore.Encounter.LocationName, PrintLoc)
 | 
|---|
 | 426 |              else
 | 
|---|
 | 427 |                 if (IsValidIMOLoc(Encounter.Location,Patient.DFN)) and ((frmClinicWardMeds.rpcIsPatientOnWard(patient.DFN)) and (Patient.Inpatient = false)) then
 | 
|---|
 | 428 |                    frmClinicWardMeds.ClinicOrWardLocation(SignList, Encounter.Location,Encounter.LocationName, PrintLoc);
 | 
|---|
 | 429 |           end;
 | 
|---|
 | 430 |           uCore.TempEncounterLoc := 0;
 | 
|---|
 | 431 |           uCore.TempEncounterLocName := '';
 | 
|---|
 | 432 |           //hds7591  Clinic/Ward movement  Patient Admission IMO
 | 
|---|
 | 433 | 
 | 
|---|
| [459] | 434 |             SigItems.SaveSettings; // Save CoPay FIRST!
 | 
|---|
 | 435 |             SendOrders(SignList, frmSignOrders.ESCode);
 | 
|---|
| [460] | 436 | 
 | 
|---|
 | 437 |         end;
 | 
|---|
 | 438 | 
 | 
|---|
 | 439 |             with SignList do if Count > 0 then for i := 0 to Count - 1 do
 | 
|---|
| [459] | 440 |             begin
 | 
|---|
 | 441 |               if Pos('E', Piece(SignList[i], U, 2)) > 0 then
 | 
|---|
 | 442 |                 begin
 | 
|---|
 | 443 |                   OrderText := FindOrderText(Piece(SignList[i], U, 1));
 | 
|---|
 | 444 |                   InfoBox(TX_SAVERR1 + Piece(SignList[i], U, 4) + TX_SAVERR2 + OrderText,
 | 
|---|
 | 445 |                           TC_SAVERR, MB_OK);
 | 
|---|
 | 446 |                 end;
 | 
|---|
 | 447 |               if Pos('R', Piece(SignList[i], U, 2)) > 0 then
 | 
|---|
 | 448 |                 NotifyOtherApps(NAE_ORDER, 'RL' + U + Piece(SignList[i], U, 1));
 | 
|---|
 | 449 |             end;
 | 
|---|
 | 450 |           StatusText('');
 | 
|---|
 | 451 |           for cnt := SignList.Count - 1 downto 0 do
 | 
|---|
 | 452 |           begin
 | 
|---|
 | 453 |               if Pos('E', Piece(SignList[cnt], U, 2)) > 0 then
 | 
|---|
 | 454 |               begin
 | 
|---|
 | 455 |                 SignList.Delete(cnt);
 | 
|---|
 | 456 |                 Continue;
 | 
|---|
 | 457 |               end;
 | 
|---|
 | 458 |               theSts := GetOrderStatus(Piece(SignList[cnt],U,1));
 | 
|---|
 | 459 |               if theSts = 10 then  SignList.Delete(cnt);  //signed delayed order should not be printed.
 | 
|---|
 | 460 |           end;
 | 
|---|
| [460] | 461 |           PrintOrdersOnSignRelease(SignList, NO_PROVIDER, PrintLoc);
 | 
|---|
| [459] | 462 |         finally
 | 
|---|
 | 463 |           SignList.Free;
 | 
|---|
 | 464 |         end;
 | 
|---|
 | 465 |       end; {if frmSignOrders.OKPressed}
 | 
|---|
 | 466 |   finally
 | 
|---|
 | 467 |     frmSignOrders.Free;
 | 
|---|
 | 468 |     with SelectedList do for i := 0 to Count - 1 do UnlockOrder(TOrder(Items[i]).ID);
 | 
|---|
 | 469 |   end;
 | 
|---|
 | 470 |   crypto := nil;
 | 
|---|
 | 471 | end;
 | 
|---|
 | 472 | 
 | 
|---|
 | 473 | procedure TfrmSignOrders.FormCreate(Sender: TObject);
 | 
|---|
 | 474 | begin
 | 
|---|
 | 475 |   inherited;
 | 
|---|
 | 476 |   FLastHintItem := -1;
 | 
|---|
 | 477 |   OKPressed := False;
 | 
|---|
 | 478 |   FOldHintPause := Application.HintPause;
 | 
|---|
 | 479 |   Application.HintPause := 250;
 | 
|---|
 | 480 |   FOldHintHidePause := Application.HintHidePause;
 | 
|---|
 | 481 |   Application.HintHidePause := 30000;
 | 
|---|
 | 482 |   tempList := TList.Create;
 | 
|---|
 | 483 | 
 | 
|---|
 | 484 |   {Begin BillingAware}
 | 
|---|
 | 485 |   //This is the DIAGNOSIS label above the Dx column
 | 
|---|
 | 486 |   if  BILLING_AWARE then
 | 
|---|
 | 487 |       begin
 | 
|---|
 | 488 |         clstOrders.Height := 234;
 | 
|---|
 | 489 |         clstOrders.Top :=  (gbdxLookup.top + 65);
 | 
|---|
 | 490 |         gbDxLookup.Visible := TRUE;
 | 
|---|
 | 491 |         label2.Top := (gbdxLookup.Top +  48);
 | 
|---|
 | 492 |         laDiagnosis.Top :=  Label2.Top;
 | 
|---|
 | 493 |         laDiagnosis.Left := 270;
 | 
|---|
 | 494 |         laDiagnosis.Visible := TRUE;
 | 
|---|
 | 495 |         rectIndex := 0;
 | 
|---|
 | 496 |       end
 | 
|---|
 | 497 |    else
 | 
|---|
 | 498 |       begin
 | 
|---|
 | 499 |          label2.Top := 145;
 | 
|---|
 | 500 |          label2.Left := 8;
 | 
|---|
 | 501 |      end;
 | 
|---|
 | 502 |  {End BillingAware}
 | 
|---|
 | 503 | 
 | 
|---|
 | 504 | end;
 | 
|---|
 | 505 | 
 | 
|---|
 | 506 | function TfrmSignOrders.IsSignatureRequired:boolean;
 | 
|---|
 | 507 | var
 | 
|---|
 | 508 |    i: Integer;
 | 
|---|
 | 509 | begin
 | 
|---|
 | 510 |     Result := FALSE;
 | 
|---|
 | 511 | 
 | 
|---|
 | 512 |     with tempList do for i := 0 to Pred(Count) do
 | 
|---|
 | 513 |     begin
 | 
|---|
 | 514 |       if frmSignOrders.clstOrders.Checked[i] then
 | 
|---|
 | 515 |       begin
 | 
|---|
 | 516 |       with TOrder(Items[i]) do if Signature <> OSS_NOT_REQUIRE then
 | 
|---|
 | 517 |          Result := TRUE;
 | 
|---|
 | 518 |       end;
 | 
|---|
 | 519 |     end;
 | 
|---|
 | 520 | end;
 | 
|---|
 | 521 | 
 | 
|---|
 | 522 | procedure TfrmSignOrders.cmdOKClick(Sender: TObject);
 | 
|---|
 | 523 | const
 | 
|---|
 | 524 |   TX_NO_CODE  = 'An electronic signature code must be entered to sign orders.';
 | 
|---|
 | 525 |   TC_NO_CODE  = 'Electronic Signature Code Required';
 | 
|---|
 | 526 |   TX_BAD_CODE = 'The electronic signature code entered is not valid.';
 | 
|---|
 | 527 |   TC_BAD_CODE = 'Invalid Electronic Signature Code';
 | 
|---|
 | 528 |   TC_NO_DX   =  'Incomplete Diagnosis Entry';
 | 
|---|
 | 529 |   TX_NO_DX   = 'A Diagnosis must be selected prior to signing any of the following order types:'
 | 
|---|
 | 530 |                 + CRLF + 'Lab, Radiology, Outpatient Medications, Prosthetics.';
 | 
|---|
 | 531 | begin
 | 
|---|
 | 532 |   inherited;
 | 
|---|
| [460] | 533 | 
 | 
|---|
| [459] | 534 |   if txtESCode.Visible and (Length(txtESCode.Text) = 0) then
 | 
|---|
 | 535 |   begin
 | 
|---|
 | 536 |     InfoBox(TX_NO_CODE, TC_NO_CODE, MB_OK);
 | 
|---|
 | 537 |     Exit;
 | 
|---|
 | 538 |   end;
 | 
|---|
 | 539 | 
 | 
|---|
 | 540 |   if txtESCode.Visible and not ValidESCode(txtESCode.Text) then
 | 
|---|
 | 541 |   begin
 | 
|---|
 | 542 |     InfoBox(TX_BAD_CODE, TC_BAD_CODE, MB_OK);
 | 
|---|
 | 543 |     txtESCode.SetFocus;
 | 
|---|
 | 544 |     txtESCode.SelectAll;
 | 
|---|
 | 545 |     Exit;
 | 
|---|
 | 546 |   end;
 | 
|---|
 | 547 | 
 | 
|---|
 | 548 | {Begin BillingAware}
 | 
|---|
 | 549 |   if  BILLING_AWARE then
 | 
|---|
 | 550 |   begin
 | 
|---|
 | 551 |     if SigItems.OK2SaveSettings then
 | 
|---|
| [460] | 552 |    
 | 
|---|
 | 553 |       if Not UBACore.BADxEntered then   //  if Dx have been entered and OK is pressed
 | 
|---|
| [459] | 554 |          begin                     // billing data will be saved. otherwise error message!
 | 
|---|
 | 555 |             InfoBox(TX_NO_DX, 'Sign Orders', MB_OK);
 | 
|---|
 | 556 |             Exit;
 | 
|---|
 | 557 |          end;
 | 
|---|
 | 558 |     end;
 | 
|---|
 | 559 | {End BillingAware}
 | 
|---|
 | 560 | 
 | 
|---|
 | 561 |   if not SigItems.OK2SaveSettings then
 | 
|---|
 | 562 |   begin
 | 
|---|
 | 563 |     InfoBox(TX_Order_Error, 'Sign Orders', MB_OK);
 | 
|---|
 | 564 |     Exit;
 | 
|---|
 | 565 |   end;
 | 
|---|
 | 566 | 
 | 
|---|
 | 567 |   if txtESCode.Visible then
 | 
|---|
 | 568 |      ESCode := Encrypt(txtESCode.Text) else ESCode := '';
 | 
|---|
 | 569 |      
 | 
|---|
 | 570 |   OKPressed := True;
 | 
|---|
 | 571 |   Close;
 | 
|---|
 | 572 | end;
 | 
|---|
 | 573 | 
 | 
|---|
 | 574 | procedure TfrmSignOrders.cmdCancelClick(Sender: TObject);
 | 
|---|
 | 575 | begin
 | 
|---|
 | 576 |   inherited;
 | 
|---|
 | 577 |   Close;
 | 
|---|
 | 578 | end;
 | 
|---|
 | 579 | 
 | 
|---|
 | 580 | procedure TfrmSignOrders.FormDestroy(Sender: TObject);
 | 
|---|
 | 581 | begin
 | 
|---|
 | 582 |   inherited;
 | 
|---|
 | 583 |   Application.HintPause := FOldHintPause;
 | 
|---|
 | 584 |   Application.HintHidePause := FOldHintHidePause;
 | 
|---|
 | 585 |   Crypto := nil;  //PKI object destroy
 | 
|---|
 | 586 | end;
 | 
|---|
 | 587 | 
 | 
|---|
 | 588 | procedure TfrmSignOrders.clstOrdersDrawItem(Control: TWinControl; Index: Integer; Rect: TRect; State: TOwnerDrawState);
 | 
|---|
 | 589 | var
 | 
|---|
 | 590 | {Begin BillingAware}
 | 
|---|
 | 591 |   str: String;
 | 
|---|
 | 592 |   tempID: string;
 | 
|---|
 | 593 |   thisRec: UBAGlobals.TBADxRecord;
 | 
|---|
 | 594 |  {End BillingAware}
 | 
|---|
 | 595 | 
 | 
|---|
 | 596 |   X: string;
 | 
|---|
 | 597 |   ARect: TRect;
 | 
|---|
 | 598 | begin
 | 
|---|
 | 599 |   inherited;
 | 
|---|
 | 600 |   X := '';
 | 
|---|
 | 601 |   ARect := Rect;
 | 
|---|
 | 602 | 
 | 
|---|
 | 603 | {Begin BillingAware}
 | 
|---|
 | 604 |   if  BILLING_AWARE then
 | 
|---|
 | 605 |   begin
 | 
|---|
 | 606 |      with clstOrders do
 | 
|---|
 | 607 |      begin
 | 
|---|
 | 608 |        if Index < Items.Count then
 | 
|---|
 | 609 |        begin
 | 
|---|
 | 610 |           Canvas.FillRect(ARect);
 | 
|---|
 | 611 |           Canvas.Pen.Color := clSilver;
 | 
|---|
 | 612 |           Canvas.MoveTo(ARect.Left, ARect.Bottom);
 | 
|---|
 | 613 |           Canvas.LineTo(ARect.Right, ARect.Bottom);
 | 
|---|
 | 614 |           x := FilteredString(Items[Index]);
 | 
|---|
 | 615 |           ARect.Right := ARect.Right - 50;    //50 to 40
 | 
|---|
 | 616 |           //Vertical column line
 | 
|---|
 | 617 |           Canvas.MoveTo(ARect.Right, Rect.Top);
 | 
|---|
 | 618 |           Canvas.LineTo(ARect.Right, Rect.Bottom);
 | 
|---|
 | 619 |           //Adjust position of 'Diagnosis' column label for font size
 | 
|---|
 | 620 |           laDiagnosis.Left := ARect.Right + 14;
 | 
|---|
 | 621 | 
 | 
|---|
 | 622 |               //ARect.Right below controls the right-hand side of the Dx Column
 | 
|---|
 | 623 |               //Adjust ARect.Right in conjunction with procedure uSignItems.TSigItems.lbDrawItem(), because the
 | 
|---|
 | 624 |               //two rectangles overlap each other.
 | 
|---|
 | 625 |            if  BILLING_AWARE then
 | 
|---|
 | 626 |            begin
 | 
|---|
 | 627 |               arRect[Index] := Classes.Rect(ARect.Right+2, ARect.Top, ARect.Right + 108, ARect.Bottom);
 | 
|---|
 | 628 |               Canvas.FillRect(arRect[Index]);
 | 
|---|
 | 629 |            end;
 | 
|---|
 | 630 | 
 | 
|---|
 | 631 |               //Win32 API - This call to DrawText draws the text of the ORDER - not the diagnosis code
 | 
|---|
 | 632 |                DrawText(Canvas.handle, PChar(x), Length(x), ARect, DT_LEFT or DT_NOPREFIX or DT_WORDBREAK);
 | 
|---|
 | 633 |        {v25 BA}
 | 
|---|
 | 634 |         if  BILLING_AWARE then
 | 
|---|
 | 635 |          begin
 | 
|---|
 | 636 |              if Assigned(UBAGlobals.tempDxList) then
 | 
|---|
 | 637 |                 begin
 | 
|---|
 | 638 |                 tempID := TOrder(clstOrders.Items.Objects[Index]).ID;
 | 
|---|
 | 639 | 
 | 
|---|
 | 640 |                 if UBAGlobals.tempDxNodeExists(tempID) then
 | 
|---|
 | 641 |                     begin
 | 
|---|
 | 642 |                        thisRec := TBADxRecord.Create;
 | 
|---|
 | 643 |                        UBAGlobals.GetBADxListForOrder(thisRec, tempID);
 | 
|---|
 | 644 |                        str := Piece(thisRec.FBADxCode,'^',1);
 | 
|---|
 | 645 |                        {v25 BA}
 | 
|---|
 | 646 |                        str := Piece(str,':',1);
 | 
|---|
 | 647 |                        DrawText(Canvas.handle, PChar(str), Length(str), arRect[Index], DT_LEFT or DT_NOPREFIX or DT_WORDBREAK);
 | 
|---|
 | 648 |                        if Not UBACore.IsOrderBillable(tempID) then //and
 | 
|---|
 | 649 |                       //    Not UBAGlobals.tempDxNodeExists(tempID) then   // if consult is non cidc but requires dx, show it.
 | 
|---|
 | 650 |                        begin
 | 
|---|
 | 651 |                             Canvas.Font.Color := clBlue;
 | 
|---|
 | 652 |                             DrawText(Canvas.handle, PChar(NOT_APPLICABLE), Length(NOT_APPLICABLE), {Length(str),} arRect[Index], DT_LEFT or DT_NOPREFIX or DT_WORDBREAK);
 | 
|---|
 | 653 |                        end;
 | 
|---|
 | 654 |                     end
 | 
|---|
 | 655 |                  else
 | 
|---|
 | 656 |                     begin
 | 
|---|
 | 657 |                       //   determine if order is billable, if NOT then insert NA in Dx field
 | 
|---|
 | 658 |                      if Not UBACore.IsOrderBillable(tempID) then
 | 
|---|
 | 659 |                         begin
 | 
|---|
 | 660 |                             Canvas.Font.Color := clBlue;
 | 
|---|
 | 661 |                             DrawText(Canvas.handle, PChar(NOT_APPLICABLE), Length(NOT_APPLICABLE), {Length(str),} arRect[Index], DT_LEFT or DT_NOPREFIX or DT_WORDBREAK);
 | 
|---|
 | 662 |                         end;
 | 
|---|
 | 663 |                     end;
 | 
|---|
 | 664 |                 end;
 | 
|---|
 | 665 |             end;
 | 
|---|
 | 666 |   
 | 
|---|
 | 667 |         end;
 | 
|---|
 | 668 |        end;
 | 
|---|
 | 669 |   end
 | 
|---|
 | 670 |   else
 | 
|---|
 | 671 |      begin
 | 
|---|
 | 672 |         X := '';
 | 
|---|
 | 673 |         ARect := Rect;
 | 
|---|
 | 674 |         with clstOrders do
 | 
|---|
 | 675 |            begin
 | 
|---|
 | 676 |              if Index < Items.Count then
 | 
|---|
 | 677 |                 begin
 | 
|---|
 | 678 |                 Canvas.FillRect(ARect);
 | 
|---|
 | 679 |                 Canvas.Pen.Color := clSilver;
 | 
|---|
 | 680 |                 Canvas.MoveTo(ARect.Left, ARect.Bottom - 1);
 | 
|---|
 | 681 |                 Canvas.LineTo(ARect.Right, ARect.Bottom - 1);
 | 
|---|
 | 682 |                 X := FilteredString(Items[Index]);
 | 
|---|
 | 683 |                 DrawText(Canvas.handle, PChar(x), Length(x), ARect, DT_LEFT or DT_NOPREFIX or DT_WORDBREAK);
 | 
|---|
 | 684 |                 end;
 | 
|---|
 | 685 |            end;
 | 
|---|
 | 686 |      end;
 | 
|---|
 | 687 | {End BillingAware}
 | 
|---|
 | 688 | end;
 | 
|---|
 | 689 | 
 | 
|---|
 | 690 | procedure TfrmSignOrders.clstOrdersMeasureItem(Control: TWinControl;
 | 
|---|
 | 691 |   Index: Integer; var AHeight: Integer);
 | 
|---|
 | 692 | var
 | 
|---|
 | 693 |   X: string;
 | 
|---|
 | 694 |   ARect: TRect;
 | 
|---|
 | 695 | begin
 | 
|---|
 | 696 |   inherited;
 | 
|---|
 | 697 |   AHeight := SigItemHeight;
 | 
|---|
 | 698 |   with clstOrders do if Index < Items.Count then
 | 
|---|
 | 699 |   begin
 | 
|---|
 | 700 |     ARect := ItemRect(Index);
 | 
|---|
 | 701 |     Canvas.FillRect(ARect);
 | 
|---|
 | 702 |     x := FilteredString(Items[Index]);
 | 
|---|
 | 703 |     AHeight := WrappedTextHeightByFont(Canvas, Font, x, ARect);
 | 
|---|
 | 704 |     if AHeight > 255 then AHeight := 255;
 | 
|---|
 | 705 |     //-------------------
 | 
|---|
 | 706 |     {Bug fix-HDS00001627}
 | 
|---|
 | 707 |     //if AHeight <  13 then AHeight := 13; {ORIG}
 | 
|---|
 | 708 |     if AHeight <  13 then AHeight := 15;
 | 
|---|
 | 709 |     //-------------------
 | 
|---|
 | 710 |   end;
 | 
|---|
 | 711 | end;
 | 
|---|
 | 712 | 
 | 
|---|
 | 713 | procedure TfrmSignOrders.clstOrdersClickCheck(Sender: TObject);
 | 
|---|
 | 714 | 
 | 
|---|
 | 715 |    procedure updateAllChilds(CheckedStatus: boolean; ParentOrderId: string);
 | 
|---|
 | 716 |    var
 | 
|---|
 | 717 |      idx: integer;
 | 
|---|
 | 718 |    begin
 | 
|---|
 | 719 |      for idx := 0 to clstOrders.Items.Count - 1 do
 | 
|---|
 | 720 |         if TOrder(clstOrders.Items.Objects[idx]).ParentID = ParentOrderId then
 | 
|---|
 | 721 |         begin
 | 
|---|
 | 722 |            if clstOrders.Checked[idx] <> CheckedStatus then
 | 
|---|
 | 723 |            begin
 | 
|---|
 | 724 |               clstOrders.Checked[idx] := CheckedStatus;
 | 
|---|
 | 725 |               SigItems.EnableSettings(idx, clstOrders.checked[Idx]);
 | 
|---|
 | 726 |            end;
 | 
|---|
 | 727 |         end;
 | 
|---|
 | 728 |    end;
 | 
|---|
 | 729 | 
 | 
|---|
 | 730 | begin
 | 
|---|
 | 731 |   with clstOrders do
 | 
|---|
 | 732 |   begin
 | 
|---|
 | 733 |     if Length(TOrder(Items.Objects[ItemIndex]).ParentID)>0 then
 | 
|---|
 | 734 |     begin
 | 
|---|
 | 735 |       SigItems.EnableSettings(ItemIndex, checked[ItemIndex]);
 | 
|---|
 | 736 |       updateAllChilds(checked[ItemIndex],TOrder(Items.Objects[ItemIndex]).ParentID);
 | 
|---|
 | 737 |     end else
 | 
|---|
 | 738 |       SigItems.EnableSettings(ItemIndex, checked[ItemIndex]);
 | 
|---|
 | 739 |   end;
 | 
|---|
 | 740 |   if ItemsAreChecked then
 | 
|---|
 | 741 |   begin
 | 
|---|
 | 742 |      lblESCode.Visible := IsSignatureRequired;
 | 
|---|
 | 743 |      txtESCode.Visible := IsSignatureRequired
 | 
|---|
 | 744 |   end
 | 
|---|
 | 745 |   else
 | 
|---|
 | 746 |   begin
 | 
|---|
 | 747 |     lblESCode.Visible := ItemsAreChecked;
 | 
|---|
 | 748 |     txtESCode.Visible := ItemsAreChecked;
 | 
|---|
 | 749 |   end;
 | 
|---|
 | 750 | end;
 | 
|---|
 | 751 | 
 | 
|---|
 | 752 | function TfrmSignOrders.ItemsAreChecked: Boolean;
 | 
|---|
 | 753 | { return true if any items in the Review List are checked for applying signature }
 | 
|---|
 | 754 | var
 | 
|---|
 | 755 |   i: Integer;
 | 
|---|
 | 756 | begin
 | 
|---|
 | 757 |   Result := False;
 | 
|---|
 | 758 | 
 | 
|---|
 | 759 |   with clstOrders do
 | 
|---|
 | 760 |      for i := 0 to Items.Count - 1 do
 | 
|---|
 | 761 |         if Checked[i] then
 | 
|---|
 | 762 |            begin
 | 
|---|
 | 763 |            Result := True;
 | 
|---|
 | 764 |            break;
 | 
|---|
 | 765 |            end;
 | 
|---|
 | 766 | end;
 | 
|---|
 | 767 | 
 | 
|---|
 | 768 | procedure TfrmSignOrders.clstOrdersMouseMove(Sender: TObject;
 | 
|---|
 | 769 |   Shift: TShiftState; X, Y: Integer);
 | 
|---|
 | 770 | var
 | 
|---|
 | 771 |   Itm: integer;
 | 
|---|
 | 772 | {Begin BillingAware}
 | 
|---|
 | 773 |   thisRec: UBAGlobals.TBADxRecord;
 | 
|---|
 | 774 |   i: smallint;
 | 
|---|
 | 775 |   thisOrderID: string;
 | 
|---|
 | 776 | {End BillingAware}
 | 
|---|
 | 777 | begin
 | 
|---|
 | 778 |   inherited;
 | 
|---|
 | 779 |   Itm := clstOrders.ItemAtPos(Point(X, Y), TRUE);
 | 
|---|
 | 780 |   if (Itm >= 0) then
 | 
|---|
 | 781 |   begin
 | 
|---|
 | 782 |     if (Itm <> FLastHintItem) then
 | 
|---|
 | 783 |     begin
 | 
|---|
 | 784 |       Application.CancelHint;
 | 
|---|
 | 785 |    {Begin BillingAware}
 | 
|---|
 | 786 |     if  BILLING_AWARE then
 | 
|---|
 | 787 |     begin
 | 
|---|
 | 788 |        //Billing Awareness 'flyover' hint includes Dx code(s) when Dx code(s) have been assigned to an order
 | 
|---|
 | 789 |            thisOrderID := TChangeItem(fOrdersSign.frmSignOrders.clstOrders.Items.Objects[Itm]).ID;
 | 
|---|
 | 790 | 
 | 
|---|
 | 791 |            if UBAGlobals.tempDxNodeExists(thisOrderID) then
 | 
|---|
 | 792 |                  begin
 | 
|---|
 | 793 |                  if Assigned(tempDxList) then
 | 
|---|
 | 794 |                  try
 | 
|---|
 | 795 |                       for i := 0 to (tempDxList.Count - 1) do
 | 
|---|
 | 796 |                          begin
 | 
|---|
 | 797 |                           thisRec := TBADxRecord(tempDxList.Items[i]);
 | 
|---|
 | 798 | 
 | 
|---|
 | 799 |                           if Assigned(thisRec) then
 | 
|---|
 | 800 |                             if (thisRec.FOrderID = thisOrderID) then
 | 
|---|
 | 801 |                                 begin
 | 
|---|
 | 802 |                                 with thisRec do
 | 
|---|
 | 803 |                                    begin
 | 
|---|
 | 804 |                                       FBADxCode := StringReplace(thisrec.FBADxCode,'^',':',[rfReplaceAll]);
 | 
|---|
 | 805 |                                       FBASecDx1 := StringReplace(thisrec.FBASecDx1,'^',':',[rfReplaceAll]);
 | 
|---|
 | 806 |                                       FBASecDx2 := StringReplace(thisrec.FBASecDx2,'^',':',[rfReplaceAll]);;
 | 
|---|
 | 807 |                                       FBASecDx3 := StringReplace(thisrec.FBASecDx3,'^',':',[rfReplaceAll]);
 | 
|---|
 | 808 |                                    end;
 | 
|---|
 | 809 | 
 | 
|---|
 | 810 |                                 clstOrders.Hint := TrimRight(clstOrders.Items[Itm] + #13 +
 | 
|---|
 | 811 |                                                              thisRec.FBADxCode + #13 + thisRec.FBASecDx1 + #13 + thisRec.FBASecDx2 + #13 + thisRec.FBASecDx3);
 | 
|---|
 | 812 |                                 end
 | 
|---|
 | 813 |                           end
 | 
|---|
 | 814 |                  except
 | 
|---|
 | 815 |                     on EListError do
 | 
|---|
 | 816 |                        begin
 | 
|---|
 | 817 |                        {$ifdef debug}ShowMessage('EListError in frmSignOrders.clstOrdersMouseMove()');{$endif}
 | 
|---|
 | 818 |                        raise;
 | 
|---|
 | 819 |                        end;
 | 
|---|
 | 820 |                  end;
 | 
|---|
 | 821 | 
 | 
|---|
 | 822 |                  end
 | 
|---|
 | 823 |            else
 | 
|---|
 | 824 |                clstOrders.Hint := TrimRight(clstOrders.Items[Itm]);
 | 
|---|
 | 825 |   end;
 | 
|---|
 | 826 |   {End BillingAware}
 | 
|---|
 | 827 |     FLastHintItem := Itm;
 | 
|---|
 | 828 |     Application.ActivateHint(Point(X, Y));
 | 
|---|
 | 829 |    end;
 | 
|---|
 | 830 |   end
 | 
|---|
 | 831 |   else
 | 
|---|
 | 832 |   begin
 | 
|---|
 | 833 |     clstOrders.Hint := '';
 | 
|---|
 | 834 |     FLastHintItem := -1;
 | 
|---|
 | 835 |     Application.CancelHint;
 | 
|---|
 | 836 |   end;
 | 
|---|
 | 837 | end;
 | 
|---|
 | 838 | 
 | 
|---|
 | 839 | procedure TfrmSignOrders.FormShow(Sender: TObject);
 | 
|---|
 | 840 | begin
 | 
|---|
 | 841 | {Begin BillingAware}
 | 
|---|
 | 842 | 
 | 
|---|
 | 843 |   //INITIALIZATIONS
 | 
|---|
 | 844 |   Paste1.Enabled := false;
 | 
|---|
 | 845 |   fOrdersSign.srcOrderID := '';
 | 
|---|
 | 846 |   fOrdersSign.srcDx := '';
 | 
|---|
 | 847 |   if txtESCode.Visible then
 | 
|---|
 | 848 |      frmSignOrders.txtESCode.SetFocus;
 | 
|---|
 | 849 | 
 | 
|---|
 | 850 |     if  BILLING_AWARE then
 | 
|---|
 | 851 |        begin
 | 
|---|
 | 852 |          //List to contain loading OrderID's
 | 
|---|
 | 853 |         if not Assigned(UBAGlobals.OrderIDList) then
 | 
|---|
 | 854 |            UBAGlobals.OrderIDList := TStringList.Create;
 | 
|---|
 | 855 | 
 | 
|---|
 | 856 |         if  BILLING_AWARE then
 | 
|---|
 | 857 |            clstOrders.Multiselect := true;
 | 
|---|
 | 858 | 
 | 
|---|
 | 859 |          with fraCoPay do
 | 
|---|
 | 860 |            begin
 | 
|---|
 | 861 |             Label24.Caption := 'Service &Connected Condition';
 | 
|---|
 | 862 |             StaticText4.Caption := 'Combat &Vet (Combat Related)';
 | 
|---|
 | 863 |             Label18.Caption := 'Agent &Orange Exposure';
 | 
|---|
 | 864 |             Label16.Caption := 'Ionizing &Radiation Exposure';
 | 
|---|
 | 865 |             Label14.Caption := '&Environmental Contaminants';
 | 
|---|
 | 866 |             Label12.Caption := '&MST';
 | 
|---|
 | 867 |             lblHNC2.Caption := '&Head and/or Neck Cancer';
 | 
|---|
 | 868 |             Label24.ShowAccelChar := true;
 | 
|---|
 | 869 |             StaticText4.ShowAccelChar := true;
 | 
|---|
 | 870 |             Label18.ShowAccelChar := true;
 | 
|---|
 | 871 |             Label16.ShowAccelChar := true;
 | 
|---|
 | 872 |             Label14.ShowAccelChar := true;
 | 
|---|
 | 873 |             Label12.ShowAccelChar := true;
 | 
|---|
 | 874 |             lblHNC2.ShowAccelChar := true;
 | 
|---|
 | 875 |            end;
 | 
|---|
 | 876 |         end;  //BILLING_AWARE
 | 
|---|
 | 877 | 
 | 
|---|
 | 878 |   clstOrders.TabOrder := 0; //CQ5057
 | 
|---|
 | 879 |   FormatListForScreenReader;
 | 
|---|
 | 880 | 
 | 
|---|
 | 881 |   //CQ5172
 | 
|---|
 | 882 |   if clstOrders.Count = 1 then
 | 
|---|
 | 883 |   begin
 | 
|---|
 | 884 |      clstOrders.Selected[0] := true;
 | 
|---|
 | 885 |      buOrdersDiagnosis.Enabled := True;
 | 
|---|
 | 886 |      Diagnosis1.Enabled := True;
 | 
|---|
 | 887 |      // if number of orders is 1 and order is billable select order and disable diagnosis button
 | 
|---|
 | 888 |      if NOT UBACore.IsOrderBillable(TChangeItem(fOrdersSign.frmSignOrders.clstOrders.Items.Objects[0]).ID) then
 | 
|---|
 | 889 |      begin
 | 
|---|
 | 890 |         buOrdersDiagnosis.Enabled := False;
 | 
|---|
 | 891 |         Diagnosis1.Enabled := False;
 | 
|---|
 | 892 |         clstOrders.Selected[0] := False;
 | 
|---|
 | 893 |      end
 | 
|---|
 | 894 |      else
 | 
|---|
 | 895 |         if Piece(TChangeItem(fOrdersSign.frmSignOrders.clstOrders.Items.Objects[0]).ID,';',2) = DISCONTINUED_ORDER then
 | 
|---|
 | 896 |         begin
 | 
|---|
 | 897 |            buOrdersDiagnosis.Enabled := False;
 | 
|---|
 | 898 |            Diagnosis1.Enabled := False;
 | 
|---|
 | 899 |         end;
 | 
|---|
 | 900 |   end;
 | 
|---|
 | 901 |  //end CQ5172
 | 
|---|
 | 902 | end;
 | 
|---|
 | 903 | 
 | 
|---|
 | 904 |  {Begin BillingAware}
 | 
|---|
 | 905 |  //   New BA Button....
 | 
|---|
 | 906 | procedure TfrmSignOrders.buOrdersDiagnosisClick(Sender: TObject);
 | 
|---|
 | 907 | var
 | 
|---|
 | 908 |   i: smallint;
 | 
|---|
 | 909 |   thisOrderID: string;
 | 
|---|
 | 910 |   match: boolean;
 | 
|---|
 | 911 |   allBlank: boolean;
 | 
|---|
 | 912 |   numSelected: smallint;
 | 
|---|
 | 913 | begin
 | 
|---|
 | 914 | {Begin BillingAware}
 | 
|---|
 | 915 | 
 | 
|---|
 | 916 |   match := false;
 | 
|---|
 | 917 |   allBlank := false;
 | 
|---|
 | 918 |   //orderIDList := TStringList.Create;
 | 
|---|
 | 919 |   if Assigned (orderIDList) then orderIDList.Clear;
 | 
|---|
 | 920 |   if Assigned(UBAGlobals.PLFactorsIndexes) then UBAGlobals.PLFactorsIndexes.Clear;
 | 
|---|
 | 921 |   if Assigned (BAtmpOrderList) then BAtmpOrderList.Clear;
 | 
|---|
 | 922 | 
 | 
|---|
 | 923 |    try
 | 
|---|
 | 924 |      // User has selected no orders to sign
 | 
|---|
 | 925 |         for i := 0 to fOrdersSign.frmSignOrders.clstOrders.Items.Count-1 do
 | 
|---|
 | 926 |            begin
 | 
|---|
 | 927 |             if (fOrdersSign.frmSignOrders.clstOrders.Selected[i]) then
 | 
|---|
 | 928 |                begin
 | 
|---|
 | 929 |                thisOrderID := TChangeItem(fOrdersSign.frmSignOrders.clstOrders.Items.Objects[i]).ID;
 | 
|---|
 | 930 |                orderIDList.Add(thisOrderID);
 | 
|---|
 | 931 |                {BAV25 Code}
 | 
|---|
 | 932 |                BAtmpOrderList.Add(TOrder(fOrdersSign.frmSignOrders.clstOrders.Items.Objects[i]).TEXT);
 | 
|---|
 | 933 |                // stringlist holding index and stsFactors
 | 
|---|
 | 934 |                UBAGlobals.PLFactorsIndexes.Add(IntToStr(i)+ U + GetCheckBoxStatus(thisOrderID) );  // store indexes and flags of selected orders
 | 
|---|
 | 935 |                {BAV25 Code}
 | 
|---|
 | 936 |                // Test for blank Dx on current grid item
 | 
|---|
 | 937 |                 if not (tempDxNodeExists(thisOrderID)) then
 | 
|---|
 | 938 |                    if Assigned(UBAGlobals.globalDxRec) then
 | 
|---|
 | 939 |                    InitializeNewDxRec(UBAGlobals.globalDxRec);
 | 
|---|
 | 940 |                if (tempDxNodeExists(thisOrderID)) then
 | 
|---|
 | 941 |                begin
 | 
|---|
 | 942 |                    // Create UBAGlobals.globalDxRec with loaded fields
 | 
|---|
 | 943 |                   if not Assigned(UBAGlobals.globalDxRec) then
 | 
|---|
 | 944 |                      begin
 | 
|---|
 | 945 |                         UBAGlobals.globalDxRec := UBAGlobals.TBADxRecord.Create;
 | 
|---|
 | 946 |                         InitializeNewDxRec(UBAGlobals.globalDxRec);
 | 
|---|
 | 947 |                         GetBADxListForOrder(UBAGlobals.globalDxRec, thisOrderID);
 | 
|---|
 | 948 |                      end
 | 
|---|
 | 949 |                  else
 | 
|---|
 | 950 |                     GetBADxListForOrder(UBAGlobals.globalDxRec, thisOrderID);
 | 
|---|
 | 951 | 
 | 
|---|
 | 952 |                  {$ifdef debug}
 | 
|---|
 | 953 |                  with UBAGlobals.globalDxRec do
 | 
|---|
 | 954 |                     //ShowMessage('globalDxRec:'+#13+FOrderID+#13+FBADxCode+#13+FBASecDx1+#13+FBASecDx2+#13+FBASecDx3);
 | 
|---|
 | 955 |                  {$endif}
 | 
|---|
 | 956 |                   end;
 | 
|---|
 | 957 |            end; //if
 | 
|---|
 | 958 |         end; //for
 | 
|---|
 | 959 |      except
 | 
|---|
 | 960 |         on E: Exception  do
 | 
|---|
 | 961 |            ShowMessage(E.ClassName+' error raised, with message : '+E.Message);
 | 
|---|
 | 962 |    end;
 | 
|---|
 | 963 | 
 | 
|---|
 | 964 |   numSelected  := CountSelectedOrders(UBAConst.F_ORDERS_SIGN);
 | 
|---|
 | 965 |   
 | 
|---|
 | 966 |   if numSelected = 0 then
 | 
|---|
 | 967 |      begin
 | 
|---|
 | 968 |      ShowMessage(UBAMessages.BA_NO_ORDERS_SELECTED);
 | 
|---|
 | 969 |      Exit;
 | 
|---|
 | 970 |      end
 | 
|---|
 | 971 |   else
 | 
|---|
 | 972 |      if numSelected = 1 then
 | 
|---|
 | 973 |         match := true;
 | 
|---|
 | 974 | 
 | 
|---|
 | 975 |   if (UBAGlobals.CompareOrderDx(UBAConst.F_ORDERS_SIGN)) then
 | 
|---|
 | 976 |      match := true;
 | 
|---|
 | 977 | 
 | 
|---|
 | 978 | 
 | 
|---|
 | 979 |   if UBAGlobals.AllSelectedDxBlank(UBAConst.F_ORDERS_SIGN) then
 | 
|---|
 | 980 |      allBlank := true;
 | 
|---|
 | 981 | 
 | 
|---|
 | 982 |   if ((match and allBlank) or (match and (not allBlank))) then  // All selected are blank or matching-not-blank
 | 
|---|
 | 983 | //     begin
 | 
|---|
 | 984 |      { TODO 3 -oKW -cRefinement : Define a const to replace string literal }
 | 
|---|
 | 985 |        frmBALocalDiagnoses.Enter(UBAConst.F_ORDERS_SIGN, orderIDList)
 | 
|---|
 | 986 |    else
 | 
|---|
 | 987 |      begin
 | 
|---|
 | 988 |      //Warning message
 | 
|---|
 | 989 |      //If 'Yes' on warning message then open localDiagnosis
 | 
|---|
 | 990 |      if (not allBlank) then
 | 
|---|
 | 991 |          if MessageDlg(UBAMessages.BA_CONFIRM_DX_OVERWRITE, mtConfirmation, [mbYes, mbNo], 0) = mrNo then
 | 
|---|
 | 992 |               Exit
 | 
|---|
 | 993 |          else
 | 
|---|
 | 994 | //              begin
 | 
|---|
 | 995 |               if Assigned(UBAGlobals.globalDxRec) then
 | 
|---|
 | 996 |                  InitializeNewDxRec(UBAGlobals.globalDxRec);
 | 
|---|
 | 997 |               frmBALocalDiagnoses.Enter(UBAConst.F_ORDERS_SIGN, orderIDList);
 | 
|---|
 | 998 |      end;
 | 
|---|
 | 999 |  // TFactors come from FBALocalDiagnoses(Problem List Dx's Only).
 | 
|---|
 | 1000 |     if Length(UBAGlobals.TFactors) > 0 then
 | 
|---|
 | 1001 |     begin
 | 
|---|
 | 1002 |        UBACore.SetTreatmentFactors(UBAGlobals.TFactors);
 | 
|---|
 | 1003 |        SigItems.DisplayPlTreatmentFactors;
 | 
|---|
 | 1004 |     end;
 | 
|---|
 | 1005 |  {End BillingAware}
 | 
|---|
 | 1006 |  txtESCode.SetFocus;
 | 
|---|
 | 1007 | end;
 | 
|---|
 | 1008 | 
 | 
|---|
 | 1009 | procedure TfrmSignOrders.Exit1Click(Sender: TObject);
 | 
|---|
 | 1010 | begin
 | 
|---|
 | 1011 |   Close;
 | 
|---|
 | 1012 | end;
 | 
|---|
 | 1013 | 
 | 
|---|
 | 1014 | procedure TfrmSignOrders.Copy1Click(Sender: TObject);
 | 
|---|
 | 1015 | {
 | 
|---|
 | 1016 |    - Copy contents of the 'source' order for copy/paste operation
 | 
|---|
 | 1017 | }
 | 
|---|
 | 1018 | var
 | 
|---|
 | 1019 |   i : byte;
 | 
|---|
 | 1020 |   numSelected: byte;
 | 
|---|
 | 1021 |   thisChangeItem: TChangeItem;
 | 
|---|
 | 1022 | begin
 | 
|---|
 | 1023 |    try
 | 
|---|
 | 1024 |      if BILLING_AWARE then
 | 
|---|
 | 1025 |         begin
 | 
|---|
 | 1026 |         Paste1.Enabled := true;
 | 
|---|
 | 1027 | 
 | 
|---|
 | 1028 |          numSelected := GetNumberOfSelectedOrders;
 | 
|---|
 | 1029 | 
 | 
|---|
 | 1030 |          if numSelected > 1 then
 | 
|---|
 | 1031 |            begin
 | 
|---|
 | 1032 |            ShowMessage('Only 1 order at a time may be selected for ''Copying''');
 | 
|---|
 | 1033 |            Exit;
 | 
|---|
 | 1034 |            end;
 | 
|---|
 | 1035 | 
 | 
|---|
 | 1036 |          for i := 0 to fOrdersSign.frmSignOrders.clstOrders.Items.Count-1 do
 | 
|---|
 | 1037 |              if (fOrdersSign.frmSignOrders.clstOrders.Selected[i]) then
 | 
|---|
 | 1038 |                begin
 | 
|---|
 | 1039 |                thisChangeItem := TChangeItem.Create;
 | 
|---|
 | 1040 |                thisChangeItem := nil;
 | 
|---|
 | 1041 |                thisChangeItem := TChangeItem(clstOrders.Items.Objects[i]);
 | 
|---|
 | 1042 |                //Skip this one if it's a "header" on the grid
 | 
|---|
 | 1043 |                  if (thisChangeItem = nil) then //or (thisChangeItem.ItemType <> CH_ORD)) then
 | 
|---|
 | 1044 |                     begin
 | 
|---|
 | 1045 |                     FreeAndNil(thisChangeItem);
 | 
|---|
 | 1046 |                     Exit;
 | 
|---|
 | 1047 |                     end;
 | 
|---|
 | 1048 | 
 | 
|---|
 | 1049 |                fOrdersSign.srcOrderID := TChangeItem(frmSignOrders.clstOrders.Items.Objects[i]).ID;
 | 
|---|
 | 1050 | 
 | 
|---|
 | 1051 |                //Copy source order to COPY BUFFER and add it to the Dx List
 | 
|---|
 | 1052 |                CopyBuffer := TBADxRecord.Create;
 | 
|---|
 | 1053 |                InitializeNewDxRec(CopyBuffer);
 | 
|---|
 | 1054 |                GetBADxListForOrder(CopyBuffer, fOrdersSign.srcOrderID);
 | 
|---|
 | 1055 |                fOrdersSign.CopyBuffer.FOrderID := BUFFER_ORDER_ID;
 | 
|---|
 | 1056 |                UBAGlobals.tempDxList.Add(CopyBuffer);
 | 
|---|
 | 1057 | 
 | 
|---|
 | 1058 |                //*************************************************************************
 | 
|---|
 | 1059 |                if (NOT UBACore.IsOrderBillable(fOrdersSign.srcOrderID) ) then //and
 | 
|---|
 | 1060 |              //    (NOT tempDxNodeExists(fOrdersSign.srcOrderID)) then   // added to allow copy to NON CIDC consult order the requires a DX. then
 | 
|---|
 | 1061 |                  begin
 | 
|---|
 | 1062 |                  ShowMessage(BA_NA_COPY_DISALLOWED);
 | 
|---|
 | 1063 |                  fOrdersSign.srcOrderID := '';
 | 
|---|
 | 1064 |                  Exit;
 | 
|---|
 | 1065 |                  end;
 | 
|---|
 | 1066 |                //*************************************************************************
 | 
|---|
 | 1067 | 
 | 
|---|
 | 1068 |                fOrdersSign.srcIndex := clstOrders.ItemIndex;
 | 
|---|
 | 1069 |                fOrdersSign.chkBoxStatus := GetCheckBoxStatus(fOrdersSign.srcOrderID);
 | 
|---|
 | 1070 |                Break;
 | 
|---|
 | 1071 |                end;
 | 
|---|
 | 1072 |          end; //if BILLING_AWARE
 | 
|---|
 | 1073 |    except
 | 
|---|
 | 1074 |      on EListError do
 | 
|---|
 | 1075 |         begin
 | 
|---|
 | 1076 |         ShowMessage('EListError in frmSignOrders.Copy1Click()');
 | 
|---|
 | 1077 |         raise;
 | 
|---|
 | 1078 |         end;
 | 
|---|
 | 1079 |    end;
 | 
|---|
 | 1080 | 
 | 
|---|
 | 1081 |   //CopyActive := true; //CQ6225
 | 
|---|
 | 1082 |   //Paste1.Enabled := true; //CQ6225
 | 
|---|
 | 1083 | end;
 | 
|---|
 | 1084 | 
 | 
|---|
 | 1085 | procedure TfrmSignOrders.Paste1Click(Sender: TObject);
 | 
|---|
 | 1086 | {
 | 
|---|
 | 1087 |  - Populate 'target' orders of a copy/paste operation with contents of 'source' order
 | 
|---|
 | 1088 | }  
 | 
|---|
 | 1089 | var
 | 
|---|
 | 1090 |   i: byte;
 | 
|---|
 | 1091 |   newRec: TBADxRecord;
 | 
|---|
 | 1092 | begin
 | 
|---|
 | 1093 |   if BILLING_AWARE then
 | 
|---|
 | 1094 |      begin
 | 
|---|
 | 1095 |       if not Assigned(fOrdersSign.CopyBuffer) then //CQ5414
 | 
|---|
 | 1096 |         fOrdersSign.CopyBuffer := TBADxRecord.Create; //CQ5414
 | 
|---|
 | 1097 | 
 | 
|---|
 | 1098 |      try
 | 
|---|
 | 1099 |          for i := 0 to clstOrders.Count - 1 do
 | 
|---|
 | 1100 |                begin
 | 
|---|
 | 1101 |                if (fOrdersSign.frmSignOrders.clstOrders.Selected[i]) then
 | 
|---|
 | 1102 |                  begin
 | 
|---|
 | 1103 |                  fOrdersSign.targetOrderID := TChangeItem(fOrdersSign.frmSignOrders.clstOrders.Items.Objects[i]).ID;
 | 
|---|
 | 1104 | 
 | 
|---|
 | 1105 |                   if fOrdersSign.targetOrderID = fOrdersSign.srcOrderID then //disallow copying an order to itself
 | 
|---|
 | 1106 |                      Continue
 | 
|---|
 | 1107 |                   else
 | 
|---|
 | 1108 |                      begin
 | 
|---|
 | 1109 |                        fOrdersSign.CopyBuffer.FOrderID := BUFFER_ORDER_ID;
 | 
|---|
 | 1110 | 
 | 
|---|
 | 1111 |                      //***************************************************************
 | 
|---|
 | 1112 |                      if Not UBACore.IsOrderBillable(targetOrderID) then
 | 
|---|
 | 1113 |                        begin
 | 
|---|
 | 1114 |                        ShowMessage(BA_NA_PASTE_DISALLOWED);
 | 
|---|
 | 1115 |                        fOrdersSign.targetOrderID := '';
 | 
|---|
 | 1116 |                        Continue;
 | 
|---|
 | 1117 |                        end;
 | 
|---|
 | 1118 |                      //***************************************************************
 | 
|---|
 | 1119 | 
 | 
|---|
 | 1120 |                      newRec := TBADxRecord.Create;
 | 
|---|
 | 1121 |                      with newRec do
 | 
|---|
 | 1122 |                        begin
 | 
|---|
 | 1123 |                        FOrderID :=  fOrdersSign.targetOrderID;
 | 
|---|
 | 1124 |                        FBADxCode := CopyBuffer.FBADxCode;
 | 
|---|
 | 1125 |                        FBASecDx1 := CopyBuffer.FBASecDx1;
 | 
|---|
 | 1126 |                        FBASecDx2 := CopyBuffer.FBASecDx2;
 | 
|---|
 | 1127 |                        FBASecDx3 := CopyBuffer.FBASecDx3;
 | 
|---|
 | 1128 |                        end;
 | 
|---|
 | 1129 | 
 | 
|---|
 | 1130 |                     tempDxList.Add(newRec);
 | 
|---|
 | 1131 | 
 | 
|---|
 | 1132 |                     CopyTFCIToTargetOrder( fOrdersSign.targetOrderID, fOrdersSign.chkBoxStatus);
 | 
|---|
 | 1133 |                     SetCheckBoxStatus( fOrdersSign.targetOrderID);  //calls uSignItems.SetSigItems()
 | 
|---|
 | 1134 |                   end;
 | 
|---|
 | 1135 |                  end;
 | 
|---|
 | 1136 |                end;
 | 
|---|
 | 1137 |      except
 | 
|---|
 | 1138 |         on EListError do
 | 
|---|
 | 1139 |            begin
 | 
|---|
 | 1140 |            ShowMessage('EListError in frmSignOrders.Paste1Click()'+#13+'for i := 0 to clstOrders.Count - 1 do');
 | 
|---|
 | 1141 |            raise;
 | 
|---|
 | 1142 |            end;
 | 
|---|
 | 1143 |      end;
 | 
|---|
 | 1144 |          clstOrders.Refresh; //Update grid to show pasted Dx
 | 
|---|
 | 1145 |      end;
 | 
|---|
 | 1146 | {
 | 
|---|
 | 1147 |   //CQ6225
 | 
|---|
 | 1148 |   if CopyActive then
 | 
|---|
 | 1149 |      begin
 | 
|---|
 | 1150 |      Paste1.Enabled := false;
 | 
|---|
 | 1151 |      CopyActive := false;
 | 
|---|
 | 1152 |      end;
 | 
|---|
 | 1153 |   //end CQ6225
 | 
|---|
 | 1154 | }
 | 
|---|
 | 1155 | end;
 | 
|---|
 | 1156 | 
 | 
|---|
 | 1157 | procedure TfrmSignOrders.clstOrdersMouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
 | 
|---|
 | 1158 | {
 | 
|---|
 | 1159 |  - Open copy/paste popup menu.
 | 
|---|
 | 1160 | }
 | 
|---|
 | 1161 | var
 | 
|---|
 | 1162 |   ClientPoint: TPoint;
 | 
|---|
 | 1163 |   ScreenPoint: TPoint;
 | 
|---|
 | 1164 | begin
 | 
|---|
 | 1165 |   if not BILLING_AWARE then clstOrders.PopupMenu := nil;
 | 
|---|
 | 1166 |   
 | 
|---|
 | 1167 |   if BILLING_AWARE then
 | 
|---|
 | 1168 |      begin
 | 
|---|
 | 1169 |      try
 | 
|---|
 | 1170 |         if Button = mbRight then  //Right-click to open copy/paste popup menu
 | 
|---|
 | 1171 |            begin
 | 
|---|
 | 1172 |            //CQ3325
 | 
|---|
 | 1173 |            if fOrdersSign.frmSignOrders.clstOrders.Items.Count = 1 then
 | 
|---|
 | 1174 |               begin
 | 
|---|
 | 1175 |               Copy1.Enabled := false;
 | 
|---|
 | 1176 |               Paste1.Enabled := false
 | 
|---|
 | 1177 |               end
 | 
|---|
 | 1178 |            else
 | 
|---|
 | 1179 |               begin
 | 
|---|
 | 1180 |               Copy1.Enabled := true;
 | 
|---|
 | 1181 |               //Paste1.Enabled := true; //commented out for CQ6225
 | 
|---|
 | 1182 |               end;
 | 
|---|
 | 1183 |            //End CQ3325
 | 
|---|
 | 1184 | 
 | 
|---|
 | 1185 |            if not frmSignOrders.clstOrders.Selected[clstOrders.ItemIndex] then
 | 
|---|
 | 1186 |               (Sender as TCheckListBox).Selected[clstOrders.ItemIndex] := true;
 | 
|---|
 | 1187 | 
 | 
|---|
 | 1188 |            ClientPoint.X := X;
 | 
|---|
 | 1189 |            ClientPoint.Y := Y;
 | 
|---|
 | 1190 |            ScreenPoint := clstOrders.ClientToScreen(ClientPoint);
 | 
|---|
 | 1191 |            poBACopyPaste.Popup(ScreenPoint.X, ScreenPoint.Y);
 | 
|---|
 | 1192 |            end;
 | 
|---|
 | 1193 |      except
 | 
|---|
 | 1194 |         on EListError do
 | 
|---|
 | 1195 |            begin
 | 
|---|
 | 1196 |            ShowMessage('EListError in frmSignOrders.clstOrdersMouseDown()');
 | 
|---|
 | 1197 |            raise;
 | 
|---|
 | 1198 |            end;
 | 
|---|
 | 1199 |      end;
 | 
|---|
 | 1200 |      end;
 | 
|---|
 | 1201 | end;
 | 
|---|
 | 1202 | 
 | 
|---|
 | 1203 | 
 | 
|---|
 | 1204 | procedure TfrmSignOrders.clstOrdersClick(Sender: TObject);
 | 
|---|
 | 1205 | //If grid item is an order-able item, then enable the Diagnosis button
 | 
|---|
 | 1206 | // else disable the Diagnosis button.
 | 
|---|
 | 1207 | var
 | 
|---|
 | 1208 |   thisChangeItem: TChangeItem;
 | 
|---|
 | 1209 |   i: smallint;
 | 
|---|
 | 1210 |   thisOrderList: TStringList;
 | 
|---|
 | 1211 | begin
 | 
|---|
 | 1212 |   thisOrderList := TStringList.Create;
 | 
|---|
 | 1213 | 
 | 
|---|
 | 1214 |  {Begin BillingAware}
 | 
|---|
 | 1215 |  if  BILLING_AWARE then
 | 
|---|
 | 1216 |  begin
 | 
|---|
 | 1217 | 
 | 
|---|
 | 1218 |  if clstOrders.Items.Count > 1 then
 | 
|---|
 | 1219 |         copy1.Enabled := True
 | 
|---|
 | 1220 |      else
 | 
|---|
 | 1221 |         copy1.Enabled := False;
 | 
|---|
 | 1222 | 
 | 
|---|
 | 1223 |      for i := 0 to clstOrders.Items.Count - 1 do
 | 
|---|
 | 1224 |         begin
 | 
|---|
 | 1225 |            if clstOrders.Selected[i] then
 | 
|---|
 | 1226 |               begin
 | 
|---|
 | 1227 |               thisChangeItem := TChangeItem(clstOrders.Items.Objects[i]);
 | 
|---|
 | 1228 | 
 | 
|---|
 | 1229 |               //Disallow copying of a grid HEADER item on LEFT MOUSE CLICK
 | 
|---|
 | 1230 |               if thisChangeItem = nil then
 | 
|---|
 | 1231 |                  begin
 | 
|---|
 | 1232 |                  Copy1.Enabled := false;
 | 
|---|
 | 1233 |                  buOrdersDiagnosis.Enabled := false;
 | 
|---|
 | 1234 |                  Exit;
 | 
|---|
 | 1235 |                  end;
 | 
|---|
 | 1236 | 
 | 
|---|
 | 1237 |               if (thisChangeItem <> nil) then //Blank row - not an order item
 | 
|---|
 | 1238 |                  begin
 | 
|---|
 | 1239 |                  thisOrderList.Clear;
 | 
|---|
 | 1240 |                  thisOrderList.Add(thisChangeItem.ID);
 | 
|---|
 | 1241 | 
 | 
|---|
 | 1242 |                  if IsAllOrdersNA(thisOrderList) then
 | 
|---|
 | 1243 |                  begin
 | 
|---|
 | 1244 |                     Diagnosis1.Enabled := false;
 | 
|---|
 | 1245 |                     buOrdersDiagnosis.Enabled := false;
 | 
|---|
 | 1246 |                  end
 | 
|---|
 | 1247 |                  else
 | 
|---|
 | 1248 |                  begin
 | 
|---|
 | 1249 |                     Diagnosis1.Enabled := true;
 | 
|---|
 | 1250 |                     buOrdersDiagnosis.Enabled := true;
 | 
|---|
 | 1251 |                  end
 | 
|---|
 | 1252 |               end
 | 
|---|
 | 1253 |               else
 | 
|---|
 | 1254 |               begin
 | 
|---|
 | 1255 |                  buOrdersDiagnosis.Enabled := false;
 | 
|---|
 | 1256 |                  Diagnosis1.Enabled := False;
 | 
|---|
 | 1257 |                  Break;
 | 
|---|
 | 1258 |               end;
 | 
|---|
 | 1259 |            end;
 | 
|---|
 | 1260 |         end;
 | 
|---|
 | 1261 | 
 | 
|---|
 | 1262 |   if Assigned(thisOrderList) then thisOrderList.Free;
 | 
|---|
 | 1263 |   end;        
 | 
|---|
 | 1264 | end;
 | 
|---|
 | 1265 | 
 | 
|---|
 | 1266 | procedure TfrmSignOrders.FormKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState);
 | 
|---|
 | 1267 | var
 | 
|---|
 | 1268 |   j: integer; //CQ5054
 | 
|---|
 | 1269 | begin
 | 
|---|
| [460] | 1270 | 
 | 
|---|
| [459] | 1271 |        if FOSTFHintWndActive then
 | 
|---|
 | 1272 |        begin
 | 
|---|
 | 1273 |           FOSTFhintWindow.ReleaseHandle ;
 | 
|---|
 | 1274 |           FOSTFHintWndActive := False ;
 | 
|---|
 | 1275 |        end;
 | 
|---|
 | 1276 | 
 | 
|---|
 | 1277 |        case Key of
 | 
|---|
 | 1278 |            67,99:  if (ssAlt in Shift) then ShowTreatmentFactorHints(BAFactorsRec.FBAFactorSC,fraCoPay.Label24); //C,c
 | 
|---|
 | 1279 |            86,118: if (ssAlt in Shift) then ShowTreatmentFactorHints(BAFactorsRec.FBAFactorCV,fraCoPay.staticText4); //V,v
 | 
|---|
 | 1280 |            79,111: if (ssAlt in Shift) then ShowTreatmentFactorHints(BAFactorsRec.FBAFactorAO,fraCoPay.Label18); //O,o
 | 
|---|
 | 1281 |            82,114: if (ssAlt in Shift) then ShowTreatmentFactorHints(BAFactorsRec.FBAFactorIR,fraCoPay.Label16); //R,r
 | 
|---|
 | 1282 |            69,101: if (ssAlt in Shift) then ShowTreatmentFactorHints(BAFactorsRec.FBAFactorEC,fraCoPay.Label14); //E,e
 | 
|---|
 | 1283 |            77,109: if (ssAlt in Shift) then ShowTreatmentFactorHints(BAFactorsRec.FBAFactorMST,fraCoPay.Label12); //M,m
 | 
|---|
 | 1284 |            72,104: if (ssAlt in Shift) then ShowTreatmentFactorHints(BAFactorsRec.FBAFactorHNC,fraCoPay.lblHNC2); //H,h
 | 
|---|
 | 1285 |            //CQ5054
 | 
|---|
 | 1286 |            83,115: if (ssAlt in Shift) then
 | 
|---|
 | 1287 |                 begin
 | 
|---|
 | 1288 |                 for j := 0 to clstOrders.Items.Count-1 do
 | 
|---|
 | 1289 |                       clstOrders.Selected[j] := false;
 | 
|---|
 | 1290 |                 clstOrders.Selected[0] := true;
 | 
|---|
 | 1291 |                 clstOrders.SetFocus;
 | 
|---|
 | 1292 |                 end;
 | 
|---|
 | 1293 |            //end CQ5054
 | 
|---|
 | 1294 |        end;
 | 
|---|
 | 1295 | end;
 | 
|---|
 | 1296 | 
 | 
|---|
 | 1297 | //BILLING AWARE Procedure
 | 
|---|
 | 1298 | procedure TfrmSignOrders.ShowTreatmentFactorHints(var pHintText: string; var pCompName: TORStaticText); // 508
 | 
|---|
 | 1299 | var
 | 
|---|
 | 1300 |  HRect: TRect;
 | 
|---|
 | 1301 |  thisRect: TRect;
 | 
|---|
 | 1302 |  x,y: integer;
 | 
|---|
 | 1303 | 
 | 
|---|
 | 1304 | begin
 | 
|---|
 | 1305 |   try
 | 
|---|
 | 1306 |      if FOSTFhintWndActive then
 | 
|---|
 | 1307 |         begin
 | 
|---|
 | 1308 |         FOSTFhintWindow.ReleaseHandle;
 | 
|---|
 | 1309 |         FOSTFhintWndActive := False;
 | 
|---|
 | 1310 |         end;
 | 
|---|
 | 1311 |   except
 | 
|---|
 | 1312 |      on E: Exception do
 | 
|---|
 | 1313 |         begin
 | 
|---|
 | 1314 |         {$ifdef debug}ShowMessage('Unhandled exception in procedure TfrmSignOrders.ShowTreatmentFactorHints()');{$endif}
 | 
|---|
 | 1315 |         raise;
 | 
|---|
 | 1316 |         end;
 | 
|---|
 | 1317 |   end;
 | 
|---|
 | 1318 | 
 | 
|---|
 | 1319 |   try
 | 
|---|
 | 1320 |       FOSTFhintWindow := THintWindow.Create(frmSignOrders);
 | 
|---|
 | 1321 |       FOSTFhintWindow.Color := clInfoBk;
 | 
|---|
 | 1322 |       GetWindowRect(pCompName.Handle,thisRect);
 | 
|---|
 | 1323 |       x := thisRect.Left;
 | 
|---|
 | 1324 |       y := thisRect.Top;
 | 
|---|
 | 1325 |       hrect := FOSTFhintWindow.CalcHintRect(Screen.Width, pHintText,nil);
 | 
|---|
 | 1326 |       hrect.Left   := hrect.Left + X;
 | 
|---|
 | 1327 |       hrect.Right  := hrect.Right + X;
 | 
|---|
 | 1328 |       hrect.Top    := hrect.Top + Y;
 | 
|---|
 | 1329 |       hrect.Bottom := hrect.Bottom + Y;
 | 
|---|
 | 1330 | 
 | 
|---|
 | 1331 |   if FOSTFHintWndActive then
 | 
|---|
 | 1332 |      begin
 | 
|---|
 | 1333 |      with fraCoPay do
 | 
|---|
 | 1334 |         begin
 | 
|---|
 | 1335 |         //Abbreviated captions
 | 
|---|
 | 1336 |         Label23.ShowHint := false;
 | 
|---|
 | 1337 |         StaticText1.ShowHint := false;
 | 
|---|
 | 1338 |         Label17.ShowHint := false;
 | 
|---|
 | 1339 |         Label15.ShowHint := false;
 | 
|---|
 | 1340 |         Label13.ShowHint := false;
 | 
|---|
 | 1341 |         Label11.ShowHint := false;
 | 
|---|
 | 1342 |         lblHNC.ShowHint := false;
 | 
|---|
 | 1343 |         //Long captions
 | 
|---|
 | 1344 |         staticText4.ShowHint := false;
 | 
|---|
 | 1345 |         Label17.ShowHint := false;
 | 
|---|
 | 1346 |         Label18.ShowHint := false;
 | 
|---|
 | 1347 |         Label15.ShowHint := false;
 | 
|---|
 | 1348 |         Label16.ShowHint := false;
 | 
|---|
 | 1349 |         Label13.ShowHint := false;
 | 
|---|
 | 1350 |         Label14.ShowHint := false;
 | 
|---|
 | 1351 |         Label11.ShowHint := false;
 | 
|---|
 | 1352 |         Label12.ShowHint := false;
 | 
|---|
 | 1353 |         lblHNC.ShowHint := false;
 | 
|---|
 | 1354 |         lblHNC2.ShowHint := false;
 | 
|---|
 | 1355 |         end;
 | 
|---|
 | 1356 |      end
 | 
|---|
 | 1357 |   else
 | 
|---|
 | 1358 |      begin
 | 
|---|
 | 1359 |      with fraCoPay do
 | 
|---|
 | 1360 |         begin
 | 
|---|
 | 1361 |         //Abbreviated captions
 | 
|---|
 | 1362 |         Label23.ShowHint := true;
 | 
|---|
 | 1363 |         StaticText1.ShowHint := true;
 | 
|---|
 | 1364 |         Label17.ShowHint := true;
 | 
|---|
 | 1365 |         Label15.ShowHint := true;
 | 
|---|
 | 1366 |         Label13.ShowHint := true;
 | 
|---|
 | 1367 |         Label11.ShowHint := true;
 | 
|---|
 | 1368 |         lblHNC.ShowHint := true;
 | 
|---|
 | 1369 |         //Long captions        
 | 
|---|
 | 1370 |         staticText4.ShowHint := true;
 | 
|---|
 | 1371 |         Label17.ShowHint := true;
 | 
|---|
 | 1372 |         Label18.ShowHint := true;
 | 
|---|
 | 1373 |         Label15.ShowHint := true;
 | 
|---|
 | 1374 |         Label16.ShowHint := true;
 | 
|---|
 | 1375 |         Label13.ShowHint := true;
 | 
|---|
 | 1376 |         Label14.ShowHint := true;
 | 
|---|
 | 1377 |         Label11.ShowHint := true;
 | 
|---|
 | 1378 |         Label12.ShowHint := true;
 | 
|---|
 | 1379 |         lblHNC.ShowHint := true;
 | 
|---|
 | 1380 |         lblHNC2.ShowHint := true;
 | 
|---|
 | 1381 |         end;
 | 
|---|
 | 1382 |      end;
 | 
|---|
 | 1383 | 
 | 
|---|
 | 1384 |       FOSTFhintWindow.ActivateHint(hrect, pHintText);
 | 
|---|
 | 1385 |       FOSTFHintWndActive := True;
 | 
|---|
 | 1386 |   except
 | 
|---|
 | 1387 |      on E: Exception do
 | 
|---|
 | 1388 |         begin
 | 
|---|
 | 1389 |         {$ifdef debug}ShowMessage('Unhandled exception in procedure TfrmSignOrders.ShowTreatmentFactorHints()');{$endif}
 | 
|---|
 | 1390 |         raise;
 | 
|---|
 | 1391 |         end;
 | 
|---|
 | 1392 |   end;
 | 
|---|
 | 1393 | end;
 | 
|---|
 | 1394 | 
 | 
|---|
 | 1395 | procedure TfrmSignOrders.FormMouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer);
 | 
|---|
 | 1396 | begin
 | 
|---|
 | 1397 |    try
 | 
|---|
| [460] | 1398 |       if FOSTFhintWndActive then
 | 
|---|
 | 1399 |       begin
 | 
|---|
 | 1400 |          FOSTFhintWindow.ReleaseHandle;
 | 
|---|
 | 1401 |          FOSTFHintWndActive := False;
 | 
|---|
 | 1402 |          Application.ProcessMessages;
 | 
|---|
 | 1403 |       end;
 | 
|---|
| [459] | 1404 |   except
 | 
|---|
 | 1405 |      on E: Exception do
 | 
|---|
 | 1406 |         begin
 | 
|---|
 | 1407 |         {$ifdef debug}ShowMessage('Unhandled exception in procedure TfrmSignOrders.FormMouseMove()');{$endif}
 | 
|---|
 | 1408 |         raise;
 | 
|---|
 | 1409 |         end;
 | 
|---|
 | 1410 |   end;
 | 
|---|
 | 1411 | end;
 | 
|---|
 | 1412 | 
 | 
|---|
 | 1413 | procedure TfrmSignOrders.fraCoPaylblHNCMouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer);
 | 
|---|
 | 1414 | begin
 | 
|---|
 | 1415 |   if FOSTFHintWndActive then
 | 
|---|
 | 1416 |      begin
 | 
|---|
 | 1417 |      with fraCoPay do
 | 
|---|
 | 1418 |         begin
 | 
|---|
 | 1419 |         //Abbreviated captions
 | 
|---|
 | 1420 |         Label23.ShowHint := false;
 | 
|---|
 | 1421 |         StaticText1.ShowHint := false;
 | 
|---|
 | 1422 |         Label17.ShowHint := false;
 | 
|---|
 | 1423 |         Label15.ShowHint := false;
 | 
|---|
 | 1424 |         Label13.ShowHint := false;
 | 
|---|
 | 1425 |         Label11.ShowHint := false;
 | 
|---|
 | 1426 |         lblHNC.ShowHint := false;
 | 
|---|
 | 1427 |         //Long captions
 | 
|---|
 | 1428 |         Label24.ShowHint := false;
 | 
|---|
 | 1429 |         staticText4.ShowHint := false;
 | 
|---|
 | 1430 |         Label17.ShowHint := false;
 | 
|---|
 | 1431 |         Label18.ShowHint := false;
 | 
|---|
 | 1432 |         Label15.ShowHint := false;
 | 
|---|
 | 1433 |         Label16.ShowHint := false;
 | 
|---|
 | 1434 |         Label13.ShowHint := false;
 | 
|---|
 | 1435 |         Label14.ShowHint := false;
 | 
|---|
 | 1436 |         Label11.ShowHint := false;
 | 
|---|
 | 1437 |         Label12.ShowHint := false;
 | 
|---|
 | 1438 |         lblHNC.ShowHint := false;
 | 
|---|
 | 1439 |         lblHNC2.ShowHint := false;
 | 
|---|
 | 1440 |         end;
 | 
|---|
 | 1441 |      end
 | 
|---|
 | 1442 |   else
 | 
|---|
 | 1443 |      begin
 | 
|---|
 | 1444 |      with fraCoPay do
 | 
|---|
 | 1445 |         begin
 | 
|---|
 | 1446 |         //Abbreviated captions
 | 
|---|
 | 1447 |         Label23.ShowHint := true;
 | 
|---|
 | 1448 |         StaticText1.ShowHint := true;
 | 
|---|
 | 1449 |         Label17.ShowHint := true;
 | 
|---|
 | 1450 |         Label15.ShowHint := true;
 | 
|---|
 | 1451 |         Label13.ShowHint := true;
 | 
|---|
 | 1452 |         Label11.ShowHint := true;
 | 
|---|
 | 1453 |         lblHNC.ShowHint := true;
 | 
|---|
 | 1454 |         //Long captions
 | 
|---|
 | 1455 |         Label24.ShowHint := true;
 | 
|---|
 | 1456 |         staticText4.ShowHint := true;
 | 
|---|
 | 1457 |         Label17.ShowHint := true;
 | 
|---|
 | 1458 |         Label18.ShowHint := true;
 | 
|---|
 | 1459 |         Label15.ShowHint := true;
 | 
|---|
 | 1460 |         Label16.ShowHint := true;
 | 
|---|
 | 1461 |         Label13.ShowHint := true;
 | 
|---|
 | 1462 |         Label14.ShowHint := true;
 | 
|---|
 | 1463 |         Label11.ShowHint := true;
 | 
|---|
 | 1464 |         Label12.ShowHint := true;
 | 
|---|
 | 1465 |         lblHNC.ShowHint := true;
 | 
|---|
 | 1466 |         lblHNC2.ShowHint := true;
 | 
|---|
 | 1467 |         end;
 | 
|---|
 | 1468 |      end;
 | 
|---|
 | 1469 | 
 | 
|---|
 | 1470 | end;
 | 
|---|
 | 1471 | 
 | 
|---|
 | 1472 | procedure TfrmSignOrders.fraCoPayLabel23Enter(Sender: TObject);
 | 
|---|
 | 1473 | begin
 | 
|---|
 | 1474 |     (Sender as TORStaticText).Font.Style := [fsBold];
 | 
|---|
 | 1475 | end;
 | 
|---|
 | 1476 | 
 | 
|---|
 | 1477 | procedure TfrmSignOrders.fraCoPayLabel23Exit(Sender: TObject);
 | 
|---|
 | 1478 | begin
 | 
|---|
 | 1479 |     (Sender as TORStaticText).Font.Style := [];
 | 
|---|
 | 1480 | end;
 | 
|---|
 | 1481 | 
 | 
|---|
 | 1482 | procedure TfrmSignOrders.SetItemTextToState;
 | 
|---|
 | 1483 | var
 | 
|---|
 | 1484 |   i : integer;
 | 
|---|
 | 1485 | begin
 | 
|---|
 | 1486 |   //The with statement below would cause access violations on other Delphi machines.
 | 
|---|
 | 1487 |   {  with clstOrders do
 | 
|---|
 | 1488 |     begin }
 | 
|---|
 | 1489 |   //Must use fully qualifying path includeing the unit... very wierd!
 | 
|---|
 | 1490 | 
 | 
|---|
 | 1491 |   if fOrdersSign.frmSignOrders.clstOrders.Count < 1 then Exit;
 | 
|---|
 | 1492 |   for i := 0 to fOrdersSign.frmSignOrders.clstOrders.Count-1 do
 | 
|---|
 | 1493 |     if fOrdersSign.frmSignOrders.clstOrders.Items.Objects[i] <> nil then //Not a Group Title
 | 
|---|
 | 1494 |     begin
 | 
|---|
 | 1495 |       if fOrdersSign.frmSignOrders.clstOrders.Items.Objects[i] is TOrder then
 | 
|---|
 | 1496 |       if fOrdersSign.frmSignOrders.clstOrders.Checked[i] then
 | 
|---|
 | 1497 |         fOrdersSign.frmSignOrders.clstOrders.Items[i] := 'Checked '+TOrder(fOrdersSign.frmSignOrders.clstOrders.Items.Objects[i]).Text
 | 
|---|
 | 1498 |       else
 | 
|---|
 | 1499 |         fOrdersSign.frmSignOrders.clstOrders.Items[i] := 'Not Checked '+TOrder(fOrdersSign.frmSignOrders.clstOrders.Items.Objects[i]).Text;
 | 
|---|
 | 1500 |     end;
 | 
|---|
 | 1501 |   if fOrdersSign.frmSignOrders.clstOrders.ItemIndex >= 0 then
 | 
|---|
 | 1502 |     fOrdersSign.frmSignOrders.clstOrders.Selected[fOrdersSign.frmSignOrders.clstOrders.ItemIndex] := True;
 | 
|---|
 | 1503 | //    end;
 | 
|---|
 | 1504 | end;
 | 
|---|
 | 1505 | 
 | 
|---|
 | 1506 | procedure TfrmSignOrders.clstOrdersKeyUp(Sender: TObject; var Key: Word;
 | 
|---|
 | 1507 |   Shift: TShiftState);
 | 
|---|
 | 1508 | begin
 | 
|---|
 | 1509 |   if (Key = VK_Space) then
 | 
|---|
 | 1510 |     FormatListForScreenReader
 | 
|---|
 | 1511 | end;
 | 
|---|
 | 1512 | 
 | 
|---|
 | 1513 | procedure TfrmSignOrders.FormatListForScreenReader;
 | 
|---|
 | 1514 | var
 | 
|---|
| [460] | 1515 |   ListStateOn : longbool;
 | 
|---|
 | 1516 |   Success: longbool;
 | 
|---|
| [459] | 1517 | begin
 | 
|---|
 | 1518 |   //Determine if a screen reader is currently being used.
 | 
|---|
| [460] | 1519 |   Success := SystemParametersInfo(SPI_GETSCREENREADER, 0, @ListStateOn,0);
 | 
|---|
 | 1520 |   if Success and ListStateOn then
 | 
|---|
 | 1521 |     SetItemTextToState;
 | 
|---|
| [459] | 1522 | end;
 | 
|---|
 | 1523 | 
 | 
|---|
 | 1524 | end.
 | 
|---|