Changeset 829 for cprs/trunk/CPRS-Chart/Orders/fOrders.pas
- Timestamp:
- Jul 7, 2010, 4:31:10 PM (15 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
cprs/trunk/CPRS-Chart/Orders/fOrders.pas
r456 r829 8 8 Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, fHSplit, StdCtrls, 9 9 ExtCtrls, Menus, ORCtrls, ComCtrls, ORFn, rOrders, fODBase, uConst, uCore, uOrders,UBACore, 10 UBAGlobals ;10 UBAGlobals, VA508AccessibilityManager, fBase508Form; 11 11 12 12 type … … 165 165 private 166 166 { Private declarations } 167 OrderListClickProcessing : Boolean; 167 168 FDfltSort: Integer; 168 169 FCurrentView: TOrderView; … … 184 185 FDontCheck: boolean; 185 186 FParentComplexOrderID: string; 187 FHighContrast2Mode: boolean; 186 188 function CanChangeOrderView: Boolean; 187 189 function GetEvtIFN(AnIndex: integer): string; … … 205 207 procedure UseDefaultSort; 206 208 procedure SynchListToOrders; 207 //procedure ActivateDeactiveRenew;209 procedure ActivateDeactiveRenew; 208 210 procedure ValidateSelected(const AnAction, WarningMsg, WarningTitle: string); 209 211 procedure ViewAlertedOrders(OrderIEN: string; Status: integer; DispGrp: string; … … 214 216 function MeasureColumnHeight(AnOrder: TOrder; Index: Integer; Column: integer):integer; 215 217 function GetPlainText(AnOrder: TOrder; index: integer):string; 216 function PatientStatusChanged: boolean;218 //function PatientStatusChanged: boolean; 217 219 procedure UMEventOccur(var Message: TMessage); message UM_EVENTOCCUR; 218 220 function CheckOrderStatus: boolean; 221 procedure RightClickMessageHandler(var Msg: TMessage; var Handled: Boolean); 219 222 public 220 223 procedure setSectionWidths; //CQ6170 … … 267 270 fOMNavA, rCore, fOCSession, fOrdersPrint, fOrdersTS, fEffectDate, fODActive, fODChild, 268 271 fOrdersCopy, fOMVerify, fODAuto, rODBase, uODBase, rMeds,fODValidateAction, fMeds, uInit, fBALocalDiagnoses, 269 fODConsult, fClinicWardMeds, fActivateDeactivate; 272 fODConsult, fClinicWardMeds, fActivateDeactivate, VA2006Utils, rodMeds, 273 VA508AccessibilityRouter, VAUtils; 270 274 271 275 {$R *.DFM} … … 467 471 AChildList: TStringlist; 468 472 CplxOrderID: string; 473 DCNewOrder: boolean; 474 DCChangeItem: TChangeItem; 469 475 470 476 procedure RemoveFromOrderList(ChildOrderID: string); … … 512 518 then CanSign := CH_SIGN_YES 513 519 else CanSign := CH_SIGN_NA; 514 DCOrder(OrderForList, GetReqReason, ReturnedType); 520 DCNEwOrder := false; 521 if Changes.Orders.Count > 0 then 522 begin 523 for j := 0 to Changes.Orders.Count - 1 do 524 begin 525 DCChangeItem := TChangeItem(Changes.Orders.Items[j]); 526 if DCChangeItem.ID = OrderForList.ID then 527 begin 528 if (Pos('DC', OrderForList.ActionOn) = 0) then 529 DCNewOrder := True; 530 //else DCNewOrder := False; 531 end; 532 end; 533 end; 534 DCOrder(OrderForList, GetReqReason, DCNewOrder, ReturnedType); 515 535 Changes.Add(CH_ORD, OrderForList.ID, OrderForList.Text, '', CanSign); 516 536 FCompress := True; … … 587 607 begin 588 608 inherited; 609 OrderListClickProcessing := false; 610 FixHeaderControlDelphi2006Bug(hdrOrders); 589 611 PageID := CT_ORDERS; 590 lstOrders.Color := ReadOnlyColor;591 612 uOrderList := TList.Create; 592 613 uEvtDCList := TList.Create; … … 608 629 FDontCheck := False; 609 630 FParentComplexOrderID := ''; 631 // 508 black color scheme that causes problems 632 FHighContrast2Mode := BlackColorScheme and (ColorToRGB(clInfoBk) <> ColorToRGB(clBlack)); 633 AddMessageHandler(lstOrders, RightClickMessageHandler); 610 634 end; 611 635 … … 613 637 begin 614 638 inherited; 639 RemoveMessageHandler(lstOrders, RightClickMessageHandler); 615 640 ClearOrders(uOrderList); 616 641 uEvtDCList.Clear; … … 684 709 SaveTop := TopIndex; 685 710 Clear; 711 repaint; 686 712 for i := 0 to uOrderList.Count - 1 do 687 713 begin … … 881 907 inherited; 882 908 if not CanChangeOrderView then Exit; 883 AnOrderView := TOrderView.Create; 884 AnOrderView.Filter := STS_ACTIVE; 885 AnOrderView.DGroup := DGroupAll; 886 AnOrderView.ViewName := 'All Services, Active'; 887 AnOrderView.InvChrono := True; 888 AnOrderView.ByService := True; 889 AnOrderView.CtxtTime := 0; 890 AnOrderView.TextView := 0; 891 AnOrderView.EventDelay.EventType := 'C'; 892 AnOrderView.EventDelay.Specialty := 0; 893 AnOrderView.EventDelay.Effective := 0; 894 AnOrderView.EventDelay.EventIFN := 0; 895 AnOrderView.EventDelay.EventName := 'All Services, Active'; 896 SelectOrderView(AnOrderView); 897 with AnOrderView do if Changed then 898 begin 899 FCurrentView := AnOrderView; 900 if FCurrentView.Filter in [15,16,17,24] then 901 begin 902 FCompress := False; 903 mnuActRel.Visible := True; 904 popOrderRel.Visible := True; 905 end else 906 begin 907 mnuActRel.Visible := False; 908 popOrderRel.Visible := False; 909 end; 910 911 lstSheets.ItemIndex := -1; 912 lblWrite.Caption := 'Write Orders'; 913 lstWrite.Clear; 914 lstWrite.Caption := lblWrite.Caption; 915 LoadWriteOrders(lstWrite.Items); 916 RefreshOrderList(FROM_SERVER); 917 918 if ByService then 919 begin 920 if InvChrono then FDfltSort := OVS_CATINV else FDfltSort := OVS_CATFWD; 921 end else 922 begin 923 if InvChrono then FDfltSort := OVS_INVERSE else FDfltSort := OVS_FORWARD; 924 end; 909 AnOrderView := TOrderView.Create; // - this starts fresh instead, since CPRS v22 910 try 911 AnOrderView.Assign(FCurrentView); // RV - v27.1 - preload form with current view params 912 (* AnOrderView.Filter := STS_ACTIVE; - CQ #11261 913 AnOrderView.DGroup := DGroupAll; 914 AnOrderView.ViewName := 'All Services, Active'; 915 AnOrderView.InvChrono := True; 916 AnOrderView.ByService := True; 917 AnOrderView.CtxtTime := 0; 918 AnOrderView.TextView := 0; 919 AnOrderView.EventDelay.EventType := 'C'; 920 AnOrderView.EventDelay.Specialty := 0; 921 AnOrderView.EventDelay.Effective := 0; 922 AnOrderView.EventDelay.EventIFN := 0; 923 AnOrderView.EventDelay.EventName := 'All Services, Active';*) 924 SelectOrderView(AnOrderView); 925 with AnOrderView do if Changed then 926 begin 927 FCurrentView.Assign(AnOrderView); 928 if FCurrentView.Filter in [15,16,17,24] then 929 begin 930 FCompress := False; 931 mnuActRel.Visible := True; 932 popOrderRel.Visible := True; 933 end else 934 begin 935 mnuActRel.Visible := False; 936 popOrderRel.Visible := False; 937 end; 938 939 //lstSheets.ItemIndex := -1; 940 lstSheets.Items[0] := 'C;0^' + FCurrentView.ViewName; // v27.5 - RV 941 942 lblWrite.Caption := 'Write Orders'; 943 lstWrite.Clear; 944 lstWrite.Caption := lblWrite.Caption; 945 LoadWriteOrders(lstWrite.Items); 946 RefreshOrderList(FROM_SERVER); 947 948 if ByService then 949 begin 950 if InvChrono then FDfltSort := OVS_CATINV else FDfltSort := OVS_CATFWD; 951 end else 952 begin 953 if InvChrono then FDfltSort := OVS_INVERSE else FDfltSort := OVS_FORWARD; 954 end; 955 end; 956 finally 957 AnOrderView.free; 925 958 end; 926 959 end; … … 984 1017 AnOrderID := Piece(BigOrderID, ';', 1); 985 1018 if StrToIntDef(AnOrderID,0) = 0 then 986 ShowM essage('Detail view is not available for selected order.')1019 ShowMsg('Detail view is not available for selected order.') 987 1020 else 988 1021 begin 989 tmpList.Assign(DetailOrder(BigOrderID));1022 FastAssign(DetailOrder(BigOrderID), tmpList); 990 1023 if ((TOrder(Items.Objects[i]).DGroupName = 'Inpt. Meds') or 991 1024 (TOrder(Items.Objects[i]).DGroupName = 'Out. Meds') or 992 (TOrder(Items.Objects[i]).DGroupName = 'Clin .Orders') or1025 (TOrder(Items.Objects[i]).DGroupName = 'Clinic Orders') or 993 1026 (TOrder(Items.Objects[i]).DGroupName = 'Infusion')) then 994 1027 begin … … 996 1029 tmpList.Add(StringOfChar('=', 74)); 997 1030 tmpList.Add(''); 998 tmpList.AddStrings(MedAdminHistory(AnOrderID));1031 FastAddStrings(MedAdminHistory(AnOrderID), tmpList); 999 1032 end; 1000 1033 … … 1243 1276 end; 1244 1277 1278 procedure TfrmOrders.RightClickMessageHandler(var Msg: TMessage; 1279 var Handled: Boolean); 1280 begin 1281 if Msg.Msg = WM_RBUTTONUP then 1282 lstOrders.RightClickSelect := (lstOrders.SelCount < 1); 1283 end; 1284 1245 1285 function TfrmOrders.GetPlainText(AnOrder: TOrder; index: integer):string; 1246 1286 var … … 1254 1294 else 1255 1295 FirstColumnDisplayed := 1; 1256 for i:= FirstColumnDisplayed to 8do begin1296 for i:= FirstColumnDisplayed to 9 do begin 1257 1297 x := GetOrderText(AnOrder, index, i); 1258 1298 if x <> '' then … … 1297 1337 {measure height of start/stop times} 1298 1338 NewHeight := HigherOf(NewHeight, MeasureColumnHeight(AnOrder, Index, 3)); 1299 if NewHeight > 255 then NewHeight := 255; 1339 if NewHeight > 255 then NewHeight := 255; // This is maximum allowed by a Windows 1300 1340 if NewHeight < 13 then NewHeight := 13; 1301 1341 end; … … 1316 1356 1317 1357 function TfrmOrders.GetOrderText(AnOrder: TOrder; Index: integer; Column: integer): string; 1358 var 1359 AReason: TStringlist; 1360 i: integer; 1318 1361 begin 1319 1362 if AnOrder <> nil then with AnOrder do … … 1334 1377 result := Text; 1335 1378 if Flagged then 1336 result := result + ' *Flagged*'; 1379 begin 1380 if Notifications.Active then 1381 begin 1382 AReason := TStringList.Create; 1383 try 1384 result := result + crlf; 1385 LoadFlagReason(AReason, ID); 1386 for i := 0 to AReason.Count - 1 do 1387 result := result + AReason[i] + CRLF; 1388 finally 1389 AReason.Free; 1390 end; 1391 end 1392 else 1393 result := result + ' *Flagged*'; 1394 end; 1337 1395 end; 1338 1396 3: result := GetStartStopText( StartTime, StopTime); … … 1375 1433 end; 1376 1434 Canvas.FillRect(ARect); 1377 Canvas.Pen.Color := clSilver;1435 Canvas.Pen.Color := Get508CompliantColor(clSilver); 1378 1436 Canvas.MoveTo(ARect.Left, ARect.Bottom - 1); 1379 1437 Canvas.LineTo(ARect.Right, ARect.Bottom - 1); … … 1405 1463 if i = FirstColumnDisplayed then 1406 1464 begin 1407 if Flagged and (ColorToRGB(clWindowText) = ColorToRGB(clBlack))then1465 if Flagged then 1408 1466 begin 1409 Canvas.Brush.Color := clRed;1467 Canvas.Brush.Color := Get508CompliantColor(clRed); 1410 1468 Canvas.FillRect(ARect); 1411 1469 end; … … 1417 1475 if not (odSelected in State) and (AnOrder.Signature = OSS_UNSIGNED) then 1418 1476 begin 1419 if ColorToRGB(clWindowText) = ColorToRGB(clBlack) then 1420 Canvas.Font.Color := clBlue; 1477 if FHighContrast2Mode then 1478 Canvas.Font.Color := clBlue 1479 else 1480 Canvas.Font.Color := Get508CompliantColor(clBlue); 1421 1481 end; 1422 1482 end; … … 1435 1495 inherited; 1436 1496 FEvtColWidth := hdrOrders.Sections[0].Width; 1437 RedrawSuspend(Self.Handle);1438 1497 RedrawOrderList; 1439 RedrawActivate(Self.Handle);1440 1498 lstOrders.Invalidate; 1441 1499 pnlRight.Refresh; … … 1457 1515 NextIndex: Integer; 1458 1516 begin 1459 if PatientStatusChanged then exit; 1517 if OrderListClickProcessing then Exit; 1518 OrderListClickProcessing := true; //Make sure this gets set to false prior to exiting. 1519 //if PatientStatusChanged then exit; 1460 1520 if BILLING_AWARE then //CQ5114 1461 1521 fODConsult.displayDXCode := ''; //CQ5114 … … 1466 1526 NextIndex := lstWrite.ItemIndex; 1467 1527 if (FCurrentView.EventDelay.PtEventIFN>0) and (PtEvtCompleted(FCurrentView.EventDelay.PtEventIFN, FCurrentView.EventDelay.EventName)) then 1528 begin 1529 OrderListClickProcessing := false; 1468 1530 Exit; 1531 end; 1469 1532 if not ReadyForNewOrder(FCurrentView.EventDelay) then 1470 1533 begin 1471 1534 lstWrite.ItemIndex := RefNumFor(Self); 1535 OrderListClickProcessing := false; 1472 1536 Exit; 1473 1537 end; 1474 1538 1475 1539 // don't write delayed orders for non-VA meds: 1476 1540 if (FCurrentView.EventDelay.EventIFN>0) and (Piece(lstWrite.ItemID,';',2) = '145') then 1477 1541 begin 1478 1542 InfoBox('Delayed orders cannot be written for Non-VA Medications.', 'Meds, Non-VA', MB_OK); 1543 OrderListClickProcessing := false; 1479 1544 Exit; 1480 1545 end; … … 1488 1553 begin 1489 1554 lstWrite.ItemIndex := -1; 1555 OrderListClickProcessing := false; 1490 1556 Exit; 1491 1557 end; 1492 if frmFrame.CCOWDrivedChange then 1558 if frmFrame.CCOWDrivedChange then begin 1559 OrderListClickProcessing := false; 1493 1560 Exit; 1561 end; 1494 1562 PositionTopOrder(StrToIntDef(Piece(lstWrite.ItemID, ';', 3), 0)); // position Display Group 1495 1563 case CharAt(Piece(lstWrite.ItemID, ';', 4), 1) of … … 1517 1585 lstSheetsClick(Self); 1518 1586 end; 1587 OrderListClickProcessing := false; 1519 1588 if (FCurrentView <> nil) and (FCurrentView.EventDelay.PtEventIFN>0) and 1520 1589 (PtEvtCompleted(FCurrentView.EventDelay.PtEventIFN, FCurrentView.EventDelay.EventName)) then … … 1560 1629 begin 1561 1630 AnOrder := TOrder(Items.Objects[i]); 1631 if (AnAction = 'RN') and (PassDrugTest(StrtoINT(Piece(AnOrder.ID, ';',1)), 'E', True, True)=True) then 1632 begin 1633 ShowMsg('Cannot renew Clozapine orders.'); 1634 Selected[i] := false; 1635 end; 1562 1636 if (AnAction = 'RN') and (AnOrder.Status=6) and (AnOrder.DGroupName = 'Inpt. Meds') and (Patient.inpatient) and (IsClinicLoc(Encounter.Location)) then 1563 1637 begin … … 1570 1644 begin 1571 1645 if (AnAction = 'RN') then 1572 ShowM essage('The order contains invalid schedule and can not be renewed.')1646 ShowMsg('The order contains invalid schedule and can not be renewed.') 1573 1647 else if (AnAction = 'EV') then 1574 ShowM essage('The order contains invalid schedule and can not be changed to event delayed order.');1648 ShowMsg('The order contains invalid schedule and can not be changed to event delayed order.'); 1575 1649 1576 1650 Selected[i] := False; … … 1720 1794 //if CheckOrderStatus = True then Exit; 1721 1795 ValidateSelected(OA_DC, TX_NO_DC, TC_NO_DC); // validate DC action on each order 1722 //ActivateDeactiveRenew;AGP 26.53 TURN OFF UNTIL FINAL DECISION CAN BE MADE1796 ActivateDeactiveRenew; //AGP 26.53 TURN OFF UNTIL FINAL DECISION CAN BE MADE 1723 1797 MakeSelectedList(SelectedList); // build list of orders that remain 1724 1798 // updating the Changes object happens in ExecuteDCOrders, based on individual order … … 1748 1822 if not CanManualRelease then 1749 1823 begin 1750 ShowM essage('You are not authorized to manual release delayed orders.');1824 ShowMsg('You are not authorized to manual release delayed orders.'); 1751 1825 Exit; 1752 1826 end; … … 2085 2159 ChangeIFNList.Free; 2086 2160 end; 2161 if frmFrame.TimedOut then Exit; 2087 2162 RedrawOrderList; 2088 2163 end; … … 2281 2356 if (User.OrderRole <> 2) and (User.OrderRole <> 3) then 2282 2357 begin 2283 ShowM essage('Sorry, You don''t have the permission to release selected orders manually');2358 ShowMsg('Sorry, You don''t have the permission to release selected orders manually'); 2284 2359 Exit; 2285 2360 end; … … 2995 3070 if i > 0 then 2996 3071 IsDefaultDlg := False; 3072 2997 3073 ADest.ItemIndex := -1; 2998 3074 for j := 0 to ADest.Items.Count - 1 do … … 3107 3183 begin 3108 3184 inherited; 3109 if PatientStatusChanged then exit;3185 //if PatientStatusChanged then exit; 3110 3186 //frmFrame.UpdatePtInfoOnRefresh; 3111 3187 end; … … 3114 3190 begin 3115 3191 inherited; 3116 if PatientStatusChanged then exit;3192 //if PatientStatusChanged then exit; 3117 3193 //frmFrame.UpdatePtInfoOnRefresh; 3118 3194 end; … … 3121 3197 begin 3122 3198 inherited; 3123 if PatientStatusChanged then exit;3199 //if PatientStatusChanged then exit; 3124 3200 //frmFrame.UpdatePtInfoOnRefresh; 3125 3201 end; … … 3128 3204 begin 3129 3205 inherited; 3130 if PatientStatusChanged then exit;3206 //if PatientStatusChanged then exit; 3131 3207 //frmFrame.UpdatePtInfoOnRefresh; 3132 3208 end; … … 3273 3349 end; 3274 3350 3275 function TfrmOrders.PatientStatusChanged: boolean;3351 {function TfrmOrders.PatientStatusChanged: boolean; 3276 3352 const 3277 3353 … … 3302 3378 Result := True; 3303 3379 end; 3304 end; 3380 end;} 3305 3381 3306 3382 function TfrmOrders.CheckOrderStatus: boolean; … … 3308 3384 i: integer; 3309 3385 AnOrder: TOrder; 3386 OrderArray: TStringList; 3310 3387 begin 3311 3388 Result := False; 3389 OrderArray := TStringList.Create; 3312 3390 with lstOrders do for i := 0 to Items.Count - 1 do if Selected[i] then 3313 3391 begin 3314 3392 AnOrder := TOrder(Items.Objects[i]); 3315 if AnORder.Status <> GetOrderStatus(AnOrder.ID) then 3316 begin 3317 MessageDlg('The Order status has changed.' + #13#10#13 + 'CPRS needs to refresh patient information to display the correct order status', mtWarning, [mbOK], 0); 3318 frmFrame.mnuFileRefreshClick(Application); 3319 Result := True; 3320 EXIT; 3321 end; 3322 end; 3323 end; 3324 3325 (*procedure TfrmOrders.ActivateDeactiveRenew; 3393 OrderArray.Add(AnOrder.ID + U + InttoStr(AnOrder.Status)); 3394 end; 3395 if (OrderArray <> nil) and (not DoesOrderStatusMatch(OrderArray)) then 3396 begin 3397 MessageDlg('The Order status has changed.' + #13#10#13 + 'CPRS needs to refresh patient information to display the correct order status', mtWarning, [mbOK], 0); 3398 frmFrame.mnuFileRefreshClick(Application); 3399 Result := True; 3400 end; 3401 ORderArray.Free; 3402 end; 3403 3404 procedure TfrmOrders.ActivateDeactiveRenew; 3326 3405 var 3327 3406 i: Integer; … … 3336 3415 end; 3337 3416 if tmpArr <> nil then frmActivateDeactive.fActivateDeactive(tmpArr); 3338 end; *)3417 end; 3339 3418 3340 3419 procedure TfrmOrders.ViewInfo(Sender: TObject); … … 3395 3474 end; 3396 3475 3476 initialization 3477 SpecifyFormIsNotADialog(TfrmOrders); 3478 3397 3479 end. 3398 3480
Note:
See TracChangeset
for help on using the changeset viewer.