Changeset 830 for cprs/trunk/CPRS-Chart/fReports.pas
- Timestamp:
- Jul 7, 2010, 4:51:54 PM (14 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
cprs/trunk/CPRS-Chart/fReports.pas
r456 r830 6 6 Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, 7 7 fHSplit, StdCtrls, ExtCtrls, ORCtrls, ComCtrls, Menus, uConst, ORDtTmRng, 8 OleCtrls, SHDocVw, Buttons, ClipBrd, rECS, Variants, StrUtils; 8 OleCtrls, SHDocVw, Buttons, ClipBrd, rECS, Variants, StrUtils, fBase508Form, 9 VA508AccessibilityManager, VA508ImageListLabeler; 9 10 10 11 type … … 28 29 pnlRightBottom: TPanel; 29 30 pnlRightMiddle: TPanel; 30 lblTitle: TOROffsetLabel;31 31 TabControl1: TTabControl; 32 32 lvReports: TCaptionListView; … … 54 54 lstDateRange: TORListBox; 55 55 pnlTopViews: TPanel; 56 pnlTopRtLabel: TPanel; 57 lblTitle: TOROffsetLabel; 58 chkMaxFreq: TCheckBox; 59 imgLblImages: TVA508ImageListLabeler; 56 60 procedure lstQualifierClick(Sender: TObject); 57 61 procedure GotoTop1Click(Sender: TObject); … … 66 70 procedure TabControl1Change(Sender: TObject); 67 71 procedure FormDestroy(Sender: TObject); 68 procedure GoRemote(Dest: TStringList; AItem: string; AQualifier, ARpc: string; AHSTag: string; AHDR: string );72 procedure GoRemote(Dest: TStringList; AItem: string; AQualifier, ARpc: string; AHSTag: string; AHDR: string; aFHIE: string); 69 73 procedure lstHeadersClick(Sender: TObject); 70 74 procedure Splitter1CanResize(Sender: TObject; var NewSize: Integer; … … 107 111 procedure tvProceduresExpanding(Sender: TObject; Node: TTreeNode; 108 112 var AllowExpansion: Boolean); 109 procedure tvProceduresClick(Sender: TObject); 113 procedure tvProceduresClick(Sender: TObject); 110 114 procedure tvProceduresChange(Sender: TObject; Node: TTreeNode); 111 115 procedure tvProceduresKeyDown(Sender: TObject; var Key: Word; … … 116 120 procedure lstDateRangeClick(Sender: TObject); 117 121 procedure sptHorzMoved(Sender: TObject); 122 procedure chkMaxFreqClick(Sender: TObject); 118 123 119 124 private … … 123 128 procedure Graph(reportien: integer); 124 129 procedure GraphPanel(active: boolean); 125 126 130 public 127 131 procedure ClearPtData; override; … … 167 171 168 172 uses ORFn, rCore, rReports, fFrame, uCore, uReports, fReportsPrint, 169 fReportsAdhocComponent1, activex, mshtml, dShared, fGraphs, rGraphs; //***** 173 fReportsAdhocComponent1, activex, mshtml, dShared, fGraphs, fGraphData, rGraphs, 174 VA508AccessibilityRouter, VAUtils 175 { TODO -oRV -cWVEHR Long Age : Changed to use long age } 176 , rWVEHR; 170 177 171 178 const … … 209 216 lblProcTypeMsg.Visible := FALSE; 210 217 lvReports.SmallImages := uEmptyImageList; 218 imgLblImages.ComponentImageListChanged; 211 219 lvReports.Items.Clear; 212 220 uLocalReportData.Clear; … … 215 223 TabControl1.Visible := false; 216 224 TabControl1.TabStop := false; 225 lstDateRange.Tag := 0; // used to reset date default on graph 217 226 if (GraphForm <> nil) and GraphFormActive then 218 227 with GraphForm do … … 222 231 DisplayData('top'); 223 232 DisplayData('bottom'); 224 lstCheck.Items.Clear;233 GtslCheck.Clear; 225 234 GraphFormActive := false; 226 235 end; … … 251 260 DisplayData('top'); 252 261 DisplayData('bottom'); 253 lstCheck.Items.Clear;262 GtslCheck.Clear; 254 263 GraphPanel(true); 255 lstTypes.Hint := Patient.DFN;264 frmGraphData.pnlData.Hint := Patient.DFN; 256 265 BringToFront; 257 266 end; … … 269 278 else if GraphForm.btnClose.Tag = 1 then 270 279 Exit 271 else if GraphFormActive and (GraphForm.lstTypes.Hint = Patient.DFN) then 272 begin // displaying same patient 273 if Tag <> reportien then 280 else 281 begin 274 282 with GraphForm do 275 begin // new report 283 if pnlMain.Tag <> reportien then 284 begin // different report 276 285 pnlMain.Tag := reportien; 277 286 Initialize; 278 //DisplayData('top'); 279 //DisplayData('bottom'); 280 lstCheck.Items.Clear; 287 GtslCheck.Clear; 281 288 GraphPanel(true); 282 289 BringToFront; 283 290 end; 284 //no action285 end286 else if GraphForm.lstTypes.Hint = Patient.DFN then287 begin // same patient, bring back graph288 GraphPanel(true);289 BringToFront;290 GraphFormActive := true;291 end292 else293 with GraphForm do294 begin // new patient295 pnlMain.Tag := reportien;296 Initialize;297 DisplayData('top');298 DisplayData('bottom');299 lstCheck.Items.Clear;300 lstTypes.Hint := Patient.DFN;301 GraphPanel(true);302 BringToFront;303 GraphFormActive := true;304 291 end; 305 292 end; … … 307 294 procedure TfrmReports.GraphPanel(active: boolean); 308 295 var 309 aQualifier, aStartTime, aStopTime: string; 296 adddaterange: boolean; 297 i: integer; 298 aQualifier, aStartTime, aStopTime, aNewLine: string; 310 299 begin 311 300 if active then … … 326 315 aStartTime := Piece(aQualifier,';',1); 327 316 aStopTime := Piece(aQualifier,';',2); 328 GraphForm.cboDateRange.Items.Add( 329 '^' + aStartTime + ' to ' + aStopTime +'^^^' + aStartTime + ';' + aStopTime + 330 '^' + floattostr(strtofmdatetime(aStartTime)) + '^' + floattostr(strtofmdatetime(aStopTime))); 317 adddaterange := true; 318 aNewLine := '^' + aStartTime + ' to ' + aStopTime +'^^^' + aStartTime + ';' + aStopTime + 319 '^' + floattostr(strtofmdatetime(aStartTime)) + '^' + floattostr(strtofmdatetime(aStopTime)); 320 for i := 0 to GraphForm.cboDateRange.Items.Count - 1 do 321 if GraphForm.cboDateRange.Items[i] = aNewLine then 322 begin 323 adddaterange := false; 324 break; 325 end; 326 if adddaterange then GraphForm.cboDateRange.Items.Add(aNewLine); 331 327 lstDateRange.Items := GraphForm.cboDateRange.Items; 328 GraphForm.DateDefaults; 329 lstDateRange.ItemIndex := GraphForm.cboDateRange.ItemIndex; 332 330 //lstDateRange.ItemIndex := lstDateRange.Items.Count - 1; 333 lstDateRange.ItemIndex := lstDateRange.Items.Count - 2; //set to all results till fixed331 //lstDateRange.ItemIndex := lstDateRange.Items.Count - 2; //set to all results till fixed 334 332 lstDateRangeClick(self); 335 333 end; … … 438 436 + '<TD nowrap><B>Patient: ' + Patient.Name + '</B></TD>' 439 437 + '<TD nowrap><B>' + Patient.SSN + '</B></TD>' 440 + '<TD nowrap><B>Age: ' + IntToStr(Patient.Age) + '</B></TD>' 438 { TODO -oRV -cWVEHR Long Age : Changed to use long age } 439 //+ '<TD nowrap><B>Age: ' + IntToStr(Patient.Age) + '</B></TD>' 440 + '<TD nowrap><B>Age: ' + GetPatientBriefAge(Patient.DFN) + '</B></TD>' 441 {} 441 442 + '</TR></TABLE></DIV><HR>'; 442 443 //the preferred method would be to use headers and footers … … 454 455 if InitPatient and not (CallingContext = CC_NOTIFICATION) then 455 456 begin 457 uColChange := ''; 456 458 lstQualifier.Clear; 457 459 tvProcedures.Items.Clear; 458 460 lblProcTypeMsg.Visible := FALSE; 459 461 lvReports.SmallImages := uEmptyImageList; 462 imgLblImages.ComponentImageListChanged; 460 463 lvReports.Items.Clear; 461 464 lvReports.Columns.Clear; … … 477 480 begin 478 481 tvReports.Selected := tvReports.Items.GetFirstNode; 482 tvReportsClick(self); 479 483 end; 480 484 end; … … 482 486 CC_INIT_PATIENT: if not InitPatient then 483 487 begin 488 uColChange := ''; 484 489 lstQualifier.Clear; 485 490 tvProcedures.Items.Clear; 486 491 lblProcTypeMsg.Visible := FALSE; 487 492 lvReports.SmallImages := uEmptyImageList; 493 imgLblImages.ComponentImageListChanged; 488 494 lvReports.Items.Clear; 489 495 Splitter1.Visible := false; … … 493 499 begin 494 500 tvReports.Selected := tvReports.Items.GetFirstNode; 501 tvReportsClick(self); 495 502 end; 496 503 end; 497 504 CC_NOTIFICATION: ProcessNotifications; 498 end; 505 end; 499 506 end; 500 507 … … 523 530 var 524 531 i,j: integer; 525 currentNode, parentNode, grandParentNode : TTreeNode;532 currentNode, parentNode, grandParentNode, gtGrandParentNode: TTreeNode; 526 533 x: string; 527 addchild, addgrandchild : boolean;534 addchild, addgrandchild, addgtgrandchild: boolean; 528 535 begin 529 536 tvReports.Items.Clear; … … 532 539 WebBrowser1.Navigate('about:blank'); 533 540 tvProcedures.Items.Clear; 534 lblProcTypeMsg.Visible := FALSE; 541 lblProcTypeMsg.Visible := FALSE; 535 542 lvReports.SmallImages := uEmptyImageList; 543 imgLblImages.ComponentImageListChanged; 536 544 lvReports.Items.Clear; 537 545 uTreeStrings.Clear; … … 541 549 addchild := false; 542 550 addgrandchild := false; 551 addgtgrandchild := false; 543 552 parentNode := nil; 544 553 grandParentNode := nil; 554 gtGrandParentNode := nil; 545 555 currentNode := nil; 546 556 for i := 0 to uTreeStrings.Count - 1 do … … 549 559 if UpperCase(Piece(x,'^',1))='[PARENT END]' then 550 560 begin 551 if addg randchild = true then561 if addgtgrandchild = true then 552 562 begin 553 currentNode := g randParentNode;554 addg randchild := false;563 currentNode := gtgrandParentNode; 564 addgtgrandchild := false; 555 565 end 556 566 else 557 begin 558 currentNode := parentNode; 559 addchild := false; 560 end; 567 if addgrandchild = true then 568 begin 569 currentNode := grandParentNode; 570 addgrandchild := false; 571 end 572 else 573 begin 574 currentNode := parentNode; 575 addchild := false; 576 end; 561 577 continue; 562 578 end; 563 579 if UpperCase(Piece(x,'^',1))='[PARENT START]' then 564 580 begin 565 if addg randchild = true then566 currentNode := tvReports.Items.AddChildObject(g randParentNode,Piece(x,'^',3),MakeReportTreeObject(Pieces(x,'^',2,15)))581 if addgtgrandchild = true then 582 currentNode := tvReports.Items.AddChildObject(gtGrandParentNode,Piece(x,'^',3),MakeReportTreeObject(Pieces(x,'^',2,21))) 567 583 else 568 if add child = true then584 if addgrandchild = true then 569 585 begin 570 currentNode := tvReports.Items.AddChildObject( parentNode,Piece(x,'^',3),MakeReportTreeObject(Pieces(x,'^',2,15)));571 addg randchild := true;572 g randParentNode := currentNode;586 currentNode := tvReports.Items.AddChildObject(grandParentNode,Piece(x,'^',3),MakeReportTreeObject(Pieces(x,'^',2,21))); 587 addgtgrandchild := true; 588 gtgrandParentNode := currentNode; 573 589 end 574 590 else 575 begin 576 currentNode := tvReports.Items.AddObject(currentNode,Piece(x,'^',3),MakeReportTreeObject(Pieces(x,'^',2,15))); 577 parentNode := currentNode; 578 addchild := true; 579 end; 591 if addchild = true then 592 begin 593 currentNode := tvReports.Items.AddChildObject(parentNode,Piece(x,'^',3),MakeReportTreeObject(Pieces(x,'^',2,21))); 594 addgrandchild := true; 595 grandParentNode := currentNode; 596 end 597 else 598 begin 599 currentNode := tvReports.Items.AddObject(currentNode,Piece(x,'^',3),MakeReportTreeObject(Pieces(x,'^',2,21))); 600 parentNode := currentNode; 601 addchild := true; 602 end; 580 603 end 581 604 else … … 587 610 else 588 611 begin 589 if addg randchild = true then590 currentNode := tvReports.Items.AddChildObject(g randParentNode,Piece(x,'^',2),MakeReportTreeObject(x))612 if addgtgrandchild = true then 613 currentNode := tvReports.Items.AddChildObject(gtGrandParentNode,Piece(x,'^',2),MakeReportTreeObject(x)) 591 614 else 592 currentNode := tvReports.Items.AddChildObject(parentNode,Piece(x,'^',2),MakeReportTreeObject(x)); 615 if addgrandchild = true then 616 currentNode := tvReports.Items.AddChildObject(grandParentNode,Piece(x,'^',2),MakeReportTreeObject(x)) 617 else 618 currentNode := tvReports.Items.AddChildObject(parentNode,Piece(x,'^',2),MakeReportTreeObject(x)); 593 619 end; 594 620 end; … … 607 633 608 634 procedure TfrmReports.SetFontSize(NewFontSize: Integer); 609 begin 635 var 636 pnlRightMiddlePct: Real; 637 frmReportsHeight, pnlRightHeight: Integer; 638 639 begin 640 pnlRightMiddlePct := (pnlRightMiddle.Height / (pnlRight.Height - (sptHorzRight.Height + pnlRightTop.Height))); 641 pnlRightMiddle.Constraints.MaxHeight := 20; 610 642 inherited SetFontSize(NewFontSize); 611 643 memText.Font.Size := NewFontSize; 644 frmReportsHeight := frmFrame.pnlPatientSelectedHeight - (frmFrame.pnlToolbar.Height + frmFrame.stsArea.Height + frmFrame.tabPage.Height + 2); 645 pnlRightHeight := frmReportsHeight - shpPageBottom.Height; 646 pnlRightMiddle.Constraints.MaxHeight := 0; 647 pnlRightMiddle.Height := (Round((pnlRightHeight - (sptHorzRight.Height + pnlRightTop.Height)) * pnlRightMiddlePct) - 14); 648 if frmFrame.Height <> frmFrame.frmFrameHeight then 649 begin 650 pnlRight.Height := pnlRightHeight; 651 frmReports.Height := frmReportsHeight; 652 frmFrame.Height := frmFrame.frmFrameHeight; 653 end; 612 654 end; 613 655 … … 798 840 begin 799 841 SmallImages := dmodShared.imgImages; 842 imgLblImages.ComponentImageListChanged; 800 843 for i := 0 to Items.Count - 1 do 801 if Items[i].SubItems[7] = 'Y'then844 if (Items[i].SubItems.Count > 7) and (Items[i].SubItems[7] = 'Y') then 802 845 Items[i].SubItemImages[1] := IMG_1_IMAGE 803 846 else 804 847 Items[i].SubItemImages[1] := IMG_NO_IMAGES; 805 848 end 806 else lvReports.SmallImages := uEmptyImageList;849 else //lvReports.SmallImages := uEmptyImageList; 807 850 if uRptID = 'OR_PN:PROGRESS NOTES' then with lvReports do //set image indicator for "Progress Notes" report 808 851 begin 809 852 SmallImages := dmodShared.imgImages; 853 imgLblImages.ComponentImageListChanged; 810 854 for i := 0 to Items.Count - 1 do 811 if StrToInt(Items[i].SubItems[7]) > 0then855 if (Items[i].SubItems.Count > 7) and (StrToInt(Items[i].SubItems[7]) > 0) then 812 856 Items[i].SubItemImages[2] := IMG_1_IMAGE 813 857 else 814 858 Items[i].SubItemImages[2] := IMG_NO_IMAGES; 815 859 end 816 else lvReports.SmallImages := uEmptyImageList; 860 else begin 861 lvReports.SmallImages := uEmptyImageList; 862 imgLblImages.ComponentImageListChanged; 863 end; 817 864 end; 818 865 end; 819 866 if aErr = 1 then 820 867 if User.HasKey('XUPROGMODE') then 821 ShowM essage('Programmer message: One or more Column ID''s in file 101.24 do not match ID''s coded in extract routine');868 ShowMsg('Programmer message: One or more Column ID''s in file 101.24 do not match ID''s coded in extract routine'); 822 869 end; 823 870 … … 825 872 var 826 873 MoreID: String; //Restores MaxOcc value 827 aRemote, aHDR : string;874 aRemote, aHDR, aFHIE: string; 828 875 i: integer; 829 876 begin … … 835 882 end; 836 883 MoreID := ';' + Piece(uQualifier,';',3); 884 if chkMaxFreq.checked = true then 885 begin 886 MoreID := ''; 887 SetPiece(uQualifier,';',3,''); 888 end; 837 889 aRemote := piece(uRemoteType,'^',1); 838 890 aHDR := piece(uRemoteType,'^',7); 891 aFHIE := piece(uRemoteType,'^',8); 839 892 SetPiece(uRemoteType,'^',5,lstQualifier.ItemID); 840 893 uHSComponents.Clear; … … 933 986 begin // = 5 934 987 lvReports.SmallImages := uEmptyImageList; 988 imgLblImages.ComponentImageListChanged; 935 989 lvReports.Items.Clear; 936 990 memText.Lines.Clear; 937 991 RowObjects.Clear; 938 992 if ((aRemote = '1') or (aRemote = '2')) then 939 GoRemote(uRemoteReportData, uRptID, lstQualifier.ItemID + MoreID, uReportRPC, uHState, aHDR); 940 if (length(piece(uHState,';',2)) > 0) then 941 begin 942 if not(aRemote = '2') then 993 GoRemote(uRemoteReportData, uRptID, lstQualifier.ItemID + MoreID, uReportRPC, uHState, aHDR, aFHIE); 994 if not(piece(uRemoteType, '^', 9) = '1') then 995 if (length(piece(uHState,';',2)) > 0) then 996 begin 997 if not(aRemote = '2') then 998 LoadReportText(uLocalReportData, uRptID, lstQualifier.ItemID + MoreID, uReportRPC, uHState); 999 LoadListView(uLocalReportData); 1000 end 1001 else 1002 begin 1003 if ((aRemote = '1') or (aRemote = '2')) then 1004 ShowTabControl; 1005 pnlRightMiddle.Visible := false; 943 1006 LoadReportText(uLocalReportData, uRptID, lstQualifier.ItemID + MoreID, uReportRPC, uHState); 944 LoadListView(uLocalReportData); 945 end 946 else 947 begin 948 if ((aRemote = '1') or (aRemote = '2')) then 949 ShowTabControl; 950 pnlRightMiddle.Visible := false; 951 LoadReportText(uLocalReportData, uRptID, lstQualifier.ItemID + MoreID, uReportRPC, uHState); 952 if uLocalReportData.Count < 1 then 953 begin 954 uReportInstruction := '<No Report Available>'; 955 memText.Lines.Add(uReportInstruction); 956 end 957 else 958 begin 959 QuickCopy(uLocalReportData,memText); 960 TabControl1.OnChange(nil); 961 end; 962 end; 1007 if uLocalReportData.Count < 1 then 1008 begin 1009 uReportInstruction := '<No Report Available>'; 1010 memText.Lines.Add(uReportInstruction); 1011 end 1012 else 1013 begin 1014 QuickCopy(uLocalReportData,memText); 1015 TabControl1.OnChange(nil); 1016 end; 1017 end; 963 1018 end; 964 1019 QT_HSWPCOMPONENT: 965 1020 begin // = 6 966 1021 lvReports.SmallImages := uEmptyImageList; 1022 imgLblImages.ComponentImageListChanged; 967 1023 lvReports.Items.Clear; 968 1024 RowObjects.Clear; … … 971 1027 begin 972 1028 Screen.Cursor := crDefault; 973 GoRemote(uRemoteReportData, uRptID, lstQualifier.ItemID + MoreID, uReportRPC, uHState, aHDR );1029 GoRemote(uRemoteReportData, uRptID, lstQualifier.ItemID + MoreID, uReportRPC, uHState, aHDR, aFHIE); 974 1030 end; 975 if (length(piece(uHState,';',2)) > 0) then 976 begin 977 if not(aRemote = '2') then 978 LoadReportText(uLocalReportData, uRptID, lstQualifier.ItemID + MoreID, uReportRPC, uHState); 979 LoadListView(uLocalReportData); 980 end 981 else 982 begin 983 if ((aRemote = '1') or (aRemote = '2')) then 984 ShowTabControl; 985 pnlRightMiddle.Visible := false; 986 if not (aRemote = '2') then 987 begin 1031 if not(piece(uRemoteType, '^', 9) = '1') then 1032 if (length(piece(uHState,';',2)) > 0) then 1033 begin 1034 if not(aRemote = '2') then 988 1035 LoadReportText(uLocalReportData, uRptID, lstQualifier.ItemID + MoreID, uReportRPC, uHState); 989 if uLocalReportData.Count < 1 then 990 begin 991 uReportInstruction := '<No Report Available>'; 992 memText.Lines.Add(uReportInstruction); 993 end 994 else 995 QuickCopy(uLocalReportData,memText); 996 end; 997 end; 1036 LoadListView(uLocalReportData); 1037 end 1038 else 1039 begin 1040 if ((aRemote = '1') or (aRemote = '2')) then 1041 ShowTabControl; 1042 pnlRightMiddle.Visible := false; 1043 if not (aRemote = '2') then 1044 begin 1045 LoadReportText(uLocalReportData, uRptID, lstQualifier.ItemID + MoreID, uReportRPC, uHState); 1046 if uLocalReportData.Count < 1 then 1047 begin 1048 uReportInstruction := '<No Report Available>'; 1049 memText.Lines.Add(uReportInstruction); 1050 end 1051 else 1052 QuickCopy(uLocalReportData,memText); 1053 end; 1054 end; 998 1055 end 999 1056 else 1000 1057 begin 1001 1058 Screen.Cursor := crDefault; 1002 GoRemote(uRemoteReportData, uRptID, lstQualifier.ItemID + MoreID, uReportRPC, uHState, aHDR );1059 GoRemote(uRemoteReportData, uRptID, lstQualifier.ItemID + MoreID, uReportRPC, uHState, aHDR, aFHIE); 1003 1060 if Pos('ECS',Piece(uRptID,':',1))>0 then 1004 1061 begin … … 1018 1075 LoadECSReportText(uLocalReportData, uECSReport); 1019 1076 end else 1020 LoadReportText(uLocalReportData, uRptID, lstQualifier.ItemID + MoreID, uReportRPC, uHState); 1021 if TabControl1.TabIndex < 1 then 1022 QuickCopy(uLocalReportData,memText); 1077 if not(piece(uRemoteType, '^', 9) = '1') then 1078 LoadReportText(uLocalReportData, uRptID, lstQualifier.ItemID + MoreID, uReportRPC, uHState); 1079 if not(piece(uRemoteType, '^', 9) = '1') then 1080 if TabControl1.TabIndex < 1 then 1081 QuickCopy(uLocalReportData,memText); 1023 1082 end; 1024 1083 end; … … 1139 1198 inherited; 1140 1199 PageID := CT_REPORTS; 1141 memText.Color := ReadOnlyColor;1142 1200 uFrozen := False; 1143 1201 uHSComponents := TStringList.Create; … … 1156 1214 procedure TfrmReports.ProcessNotifications; 1157 1215 var 1158 i: integer;1216 j, AnIndex, IDColumn: integer; 1159 1217 SelectID: string; 1160 Found: boolean;1161 1218 ListItem: TListItem; 1162 begin 1163 Found := False; 1164 with tvReports do 1165 begin 1166 for i := 0 to Items.Count -1 do 1167 if StrToIntDef(Piece(PReportTreeObject(tvReports.Items[i].Data)^.Qualifier,';',4),0) = QT_IMAGING then 1168 begin 1169 Found := True; 1170 break; 1171 end; 1172 end; 1173 1174 if not Found then exit; // no imaging entry in treeview would result in error below, and loss of alert 1175 1219 tmpRptID: string; 1220 1221 function FindReport(QualType: integer; var AnIndex: integer): boolean; overload; 1222 var 1223 Found: boolean; 1224 i: integer; 1225 begin 1226 Found := False; 1227 with tvReports do 1228 begin 1229 for i := 0 to Items.Count -1 do 1230 if StrToIntDef(Piece(PReportTreeObject(tvReports.Items[i].Data)^.Qualifier,';',4),0) = QualType then 1231 begin 1232 Found := True; 1233 break; 1234 end; 1235 end; 1236 Result := Found ; 1237 AnIndex := i; 1238 end; 1239 1240 function FindReport(ReportID: string; var AnIndex: integer): boolean; overload; 1241 var 1242 Found: boolean; 1243 i: integer; 1244 begin 1245 Found := False; 1246 with tvReports do 1247 begin 1248 for i := 0 to Items.Count -1 do 1249 if Piece(PReportTreeObject(tvReports.Items[i].Data)^.ID, ':', 1) = ReportID then 1250 begin 1251 Found := True; 1252 break; 1253 end; 1254 end; 1255 Result := Found ; 1256 AnIndex := i; 1257 end; 1258 1259 begin 1260 IDColumn := 0; 1176 1261 case Notifications.Followup of 1177 1262 NF_IMAGING_RESULTS, NF_ABNORMAL_IMAGING_RESULTS, NF_IMAGING_RESULTS_AMENDED: 1178 1263 begin 1179 tvReports.Selected := tvReports.Items[i]; 1264 if not FindReport(QT_IMAGING, AnIndex) then exit; 1265 tvReports.Selected := tvReports.Items[AnIndex]; 1180 1266 SelectID := 'i' + Piece(Notifications.AlertData, '~', 1) + 1181 1267 '-' + Piece(Notifications.AlertData, '~', 2); 1182 if tvReports.Selected <> tvReports.Items[i] then 1183 tvReports.Selected := tvReports.Items[i]; 1268 IDColumn := 0; 1269 if tvReports.Selected <> tvReports.Items[AnIndex] then 1270 tvReports.Selected := tvReports.Items[AnIndex]; 1184 1271 end; 1185 1272 NF_IMAGING_REQUEST_CHANGED: 1186 1273 begin 1187 tvReports.Selected := tvReports.Items[i]; 1274 if not FindReport(QT_IMAGING, AnIndex) then exit; 1275 tvReports.Selected := tvReports.Items[AnIndex]; 1188 1276 SelectID := 'i' + Piece(Notifications.AlertData, '/', 2) + 1189 1277 '-' + Piece(Notifications.AlertData, '/', 3); 1190 if tvReports.Selected <> tvReports.Items[i] then 1191 tvReports.Selected := tvReports.Items[i]; 1278 IDColumn := 0; 1279 if tvReports.Selected <> tvReports.Items[AnIndex] then 1280 tvReports.Selected := tvReports.Items[AnIndex]; 1192 1281 end; 1193 1282 NF_STAT_RESULTS : 1194 1283 begin 1195 tvReports.Selected := tvReports.Items[i]; 1284 if not FindReport(QT_IMAGING, AnIndex) then exit; 1285 tvReports.Selected := tvReports.Items[AnIndex]; 1196 1286 SelectID := 'i' + Piece(Notifications.AlertData, '~', 2) + 1197 1287 '-' + Piece(Piece(Notifications.AlertData, '~', 3), '@', 1); 1198 if tvReports.Selected <> tvReports.Items[i] then 1199 tvReports.Selected := tvReports.Items[i]; 1288 IDColumn := 0; 1289 if tvReports.Selected <> tvReports.Items[AnIndex] then 1290 tvReports.Selected := tvReports.Items[AnIndex]; 1200 1291 end; 1201 else with tvReports do if Items.Count > 0 then Selected := Items[0]; 1292 NF_MAMMOGRAM_RESULTS : 1293 begin 1294 if not FindReport('OR_R18', AnIndex) then exit; 1295 tvReports.Selected := tvReports.Items[AnIndex]; 1296 SelectID := 'i' + Piece(Notifications.AlertData, '~', 1) + 1297 '-' + Piece(Notifications.AlertData, '~', 2); 1298 IDColumn := 8; 1299 if tvReports.Selected <> tvReports.Items[AnIndex] then 1300 tvReports.Selected := tvReports.Items[AnIndex]; 1301 end; 1302 NF_ANATOMIC_PATHOLOGY_RESULTS : 1303 //OR_SP^Surgical Pathology 1304 //OR_CY^Cytology 1305 //OR_EM^Electron Microscopy 1306 //OR_AU^Autopsy 1307 begin 1308 if Notifications.AlertData = '^1^^^0^0^0' then //code snippet to handle the processing of v26 AP alerts in a v27 environment. 1309 begin 1310 if pnlRightMiddle.Visible then pnlRightMiddle.Visible := FALSE; 1311 InfoBox('This alert was generated in a v26 environment as an informational alert and' 1312 + CRLF + 'therefore cannot be processed as an action alert in a v27 environment.', 1313 'Unable to Process as Action Alert', MB_OK or MB_ICONWARNING); 1314 memText.Text := 'Unable to Process as an Action Alert. In order to view the associated Anatomic Pathology report, please manually' 1315 + CRLF + 'locate the appropriate report under the Anatomic Pathology section (also found under Laboratory, Clinical Reports).'; 1316 Notifications.Delete; 1317 exit; 1318 end; 1319 tmpRptID := Piece(Notifications.AlertData, U, 1); 1320 //if tmpRptID = 'CY' then tmpRptID := 'APR'; 1321 //if tmpRptID = 'EM' then tmpRptID := 'APR'; 1322 //if tmpRptID = 'SP' then tmpRptID := 'APR'; 1323 if not FindReport('OR_' + tmpRptID, AnIndex) then exit; 1324 tvReports.Selected := tvReports.Items[AnIndex]; 1325 SelectID := Piece(Notifications.AlertData, U, 2); 1326 if (tmpRptID = 'CY') or (tmpRptID = 'EM') or (tmpRptID = 'SP') then 1327 IDColumn := 3; 1328 //if tmpRptID = 'APR' then IDColumn := 3 1329 //else if tmpRptID = 'SP' then IDColumn := 3 1330 //else if tmpRptID = 'EM' then IDColumn := 3 1331 //else if tmpRptID = 'CY' then IDColumn := 3 ; 1332 if tvReports.Selected <> tvReports.Items[AnIndex] then 1333 tvReports.Selected := tvReports.Items[AnIndex]; 1334 end; 1335 NF_PAP_SMEAR_RESULTS : 1336 begin 1337 if not FindReport('OR_CY', AnIndex) then exit; 1338 tvReports.Selected := tvReports.Items[AnIndex]; 1339 SelectID := Piece(Notifications.AlertData, U, 2); 1340 IDColumn := 3; 1341 if tvReports.Selected <> tvReports.Items[AnIndex] then 1342 tvReports.Selected := tvReports.Items[AnIndex]; 1343 end; 1344 else with tvReports do if Items.Count > 0 then Selected := Items[0]; 1202 1345 end; 1203 1346 if tvReports.Selected <> nil then 1204 1347 begin 1205 1348 tvReportsClick(Self); 1206 for i := 0 to lvReports.Items.Count - 1 do 1349 Application.ProcessMessages; 1350 for j := 0 to lvReports.Items.Count - 1 do 1207 1351 begin 1208 ListItem := lvReports.Items[ i];1209 if ListItem.Subitems[ 0] = SelectID then1352 ListItem := lvReports.Items[j]; 1353 if ListItem.Subitems[IDColumn] = SelectID then 1210 1354 begin 1211 lvReports.Selected := lvReports.Items[ i];1355 lvReports.Selected := lvReports.Items[j]; 1212 1356 break; 1213 1357 end; … … 1249 1393 end; 1250 1394 if length(piece(aRanges,';',1)) > 0 then 1395 if uReportType <> 'G' then // graphs don't display date ranges here 1251 1396 begin 1252 1397 d1 := ValidDateTimeStr(piece(aRanges,';',1),''); 1253 1398 d2 := ValidDateTimeStr(piece(aRanges,';',2),''); 1254 1399 y := FormatFMDateTime('mmm dd,yyyy',d1); 1400 if Copy(y,8,2) = '18' then y := 'EARLIEST RESULT'; 1255 1401 z := FormatFMDateTime('mmm dd,yyyy',d2); 1256 1402 x1 := ' [From: ' + y + ' to ' + z + ']'; … … 1269 1415 end; 1270 1416 end; 1417 if piece(uRemoteType, '^', 9) = '1' then x := x + ' <<ONLY REMOTE DOD DATA INCLUDED IN REPORT>>'; 1271 1418 Caption := x; 1272 1419 end; … … 1483 1630 end; 1484 1631 1485 procedure TfrmReports.GoRemote(Dest: TStringList; AItem: string; AQualifier, ARpc: string; AHSTag: string; AHDR: string );1632 procedure TfrmReports.GoRemote(Dest: TStringList; AItem: string; AQualifier, ARpc: string; AHSTag: string; AHDR: string; aFHIE: string); 1486 1633 var 1487 1634 i, j: integer; 1488 LocalHandle, Query, Report : string;1635 LocalHandle, Query, Report, Seq: string; 1489 1636 HSType, DaysBack, ExamID, MaxOcc: string; 1490 1637 Alpha, Omega, Trans: double; … … 1495 1642 Alpha := 0; 1496 1643 Omega := 0; 1497 if UseVistaWeb then 1498 begin 1499 if AHDR = '1' then 1500 InfoBox('You must use VistaWeb to view this report. To use RDV Classic, change your default setting.', 1501 'Use VistaWeb for HDR data', MB_OK); 1502 Exit; 1503 end; 1644 Seq := ''; 1504 1645 if AHDR = '1' then 1505 1646 begin … … 1509 1650 Exit; 1510 1651 end; 1652 InfoBox('You must use VistaWeb to view this report.', 'Use VistaWeb for HDR data', MB_OK); 1511 1653 if (Piece(AItem, ':', 1) = 'OR_VWAL') or (Piece(AItem, ':', 1) = 'OR_VWRX') then 1512 AQualifier := 'T- 75000;T+75000;99999';1654 AQualifier := 'T-50000;T+50000;99999'; 1513 1655 if (Piece(AItem, ':', 1) = 'OR_VWVS') and (CharAt(AQualifier, 1) = ';') then 1514 AQualifier := 'T- 75000;T+75000;99999';1656 AQualifier := 'T-50000;T+50000;99999'; 1515 1657 end; 1516 1658 if CharAt(AQualifier, 1) = 'd' then … … 1552 1694 TRemoteSite(Items[i]).QueryStatus := '1^Not Included'; 1553 1695 UpdateRemoteStatus(TRemoteSite(Items[i]).SiteID, 'NOT INCLUDED'); 1696 TRemoteSite(Items[i]).RemoteHandle := ''; 1697 TRemoteSite(Items[i]).QueryStatus := '1^Done'; 1698 if uQualifierType = 6 then seq := '1^'; 1699 TRemoteSite(Items[i]).Data.Add(seq + TRemoteSite(Items[i]).SiteName); 1700 if uQualifierType = 6 then seq := '2^'; 1701 TRemoteSite(Items[i]).Data.Add(seq + '<No HDR Data Included> - Use "HDR Reports" menu for HDR Data.'); 1554 1702 TabControl1.OnChange(nil); 1703 if (length(piece(uHState,';',2)) > 0) then 1704 LoadListView(TRemoteSite(Items[i]).Data); 1555 1705 continue; 1556 1706 end; … … 1559 1709 TRemoteSite(Items[i]).QueryStatus := '1^Not Included'; 1560 1710 UpdateRemoteStatus(TRemoteSite(Items[i]).SiteID, 'NOT INCLUDED'); 1711 TRemoteSite(Items[i]).RemoteHandle := ''; 1712 TRemoteSite(Items[i]).QueryStatus := '1^Done'; 1713 if uQualifierType = 6 then seq := '1^'; 1714 TRemoteSite(Items[i]).Data.Add(seq + TRemoteSite(Items[i]).SiteName); 1715 if uQualifierType = 6 then seq := '2^'; 1716 TRemoteSite(Items[i]).Data.Add(seq + '<No HDR Data> This site is not a source for HDR Data.'); 1561 1717 TabControl1.OnChange(nil); 1718 if (length(piece(uHState,';',2)) > 0) then 1719 LoadListView(TRemoteSite(Items[i]).Data); 1720 continue; 1721 end; 1722 if (LeftStr(TRemoteSite(Items[i]).SiteID, 5) = '200') and not(aFHIE = '1') then 1723 begin 1724 TRemoteSite(Items[i]).QueryStatus := '1^Not Included'; 1725 UpdateRemoteStatus(TRemoteSite(Items[i]).SiteID, 'NOT INCLUDED'); 1726 TRemoteSite(Items[i]).RemoteHandle := ''; 1727 TRemoteSite(Items[i]).QueryStatus := '1^Done'; 1728 if uQualifierType = 6 then seq := '1^'; 1729 TRemoteSite(Items[i]).Data.Add(seq + TRemoteSite(Items[i]).SiteName); 1730 if uQualifierType = 6 then seq := '2^'; 1731 TRemoteSite(Items[i]).Data.Add(seq + '<No DOD Data> - Use "Dept. of Defense Reports" Menu to retrieve data from DOD.'); 1732 TabControl1.OnChange(nil); 1733 if (length(piece(uHState,';',2)) > 0) then 1734 LoadListView(TRemoteSite(Items[i]).Data); 1562 1735 continue; 1563 1736 end; … … 1600 1773 TRemoteSite(Items[i]).QueryStatus := '-1^Communication error'; 1601 1774 UpdateRemoteStatus(TRemoteSite(Items[i]).SiteID,'Communication error'); 1775 if uQualifierType = 6 then seq := '1^'; 1776 TRemoteSite(Items[i]).Data.Add(seq + TRemoteSite(Items[i]).SiteName); 1777 if uQualifierType = 6 then seq := '2^'; 1778 TRemoteSite(Items[i]).Data.Add(seq + '<ERROR>- Unable to communicate with Remote site'); 1779 TabControl1.OnChange(nil); 1780 if (length(piece(uHState,';',2)) > 0) then 1781 LoadListView(TRemoteSite(Items[i]).Data); 1602 1782 end 1603 1783 else … … 1620 1800 TRemoteSite(Items[i]).QueryStatus := '-1^Communication error'; 1621 1801 UpdateRemoteStatus(TRemoteSite(Items[i]).SiteID,'Communication error'); 1802 if uQualifierType = 6 then seq := '1^'; 1803 TRemoteSite(Items[i]).Data.Add(seq + TRemoteSite(Items[i]).SiteName); 1804 if uQualifierType = 6 then seq := '2^'; 1805 TRemoteSite(Items[i]).Data.Add(seq + '<ERROR>- Unable to communicate with Remote site'); 1806 TabControl1.OnChange(nil); 1807 if (length(piece(uHState,';',2)) > 0) then 1808 LoadListView(TRemoteSite(Items[i]).Data); 1622 1809 end 1623 1810 else … … 1646 1833 for i := 0 to lvReports.Columns.Count - 1 do 1647 1834 aColChange := aColChange + IntToStr(lvReports.Column[i].width) + ','; 1648 if aColChange <> piece(uColchange,'^',2) then1835 if (Length(aColChange) > 0) and (aColChange <> piece(uColchange,'^',2)) then 1649 1836 SaveColumnSizes(piece(uColChange,'^',1) + '^' + aColChange); 1650 1837 uColChange := ''; … … 1755 1942 aHeading, aReportType, aRPC, aQualifier, aStartTime, aStopTime, aMax, aRptCode, aRemote, aCategory, aSortOrder, aDaysBack, x: string; 1756 1943 aIFN: integer; 1757 aID, aHSTag, aRadParam, aColChange, aDirect, aHDR, a QualifierID: string;1944 aID, aHSTag, aRadParam, aColChange, aDirect, aHDR, aFHIE, aFHIEONLY, aQualifierID: string; 1758 1945 CurrentParentNode, CurrentNode: TTreeNode; 1759 1946 begin … … 1776 1963 aDirect := PReportTreeObject(tvReports.Selected.Data)^.Direct; 1777 1964 aHDR := PReportTreeObject(tvReports.Selected.Data)^.HDR; 1965 aFHIE := PReportTreeObject(tvReports.Selected.Data)^.FHIE; 1966 aFHIEONLY := PReportTreeObject(tvReports.Selected.Data)^.FHIEONLY; 1778 1967 aStartTime := Piece(aQualifier,';',1); 1779 1968 aStopTime := Piece(aQualifier,';',2); … … 1786 1975 for i := 0 to lvReports.Columns.Count - 1 do 1787 1976 aColChange := aColChange + IntToStr(lvReports.Column[i].width) + ','; 1788 if aColChange <> piece(uColchange,'^',2) then1977 if (Length(aColChange) > 0) and (aColChange <> piece(uColchange,'^',2)) then 1789 1978 SaveColumnSizes(piece(uColChange,'^',1) + '^' + aColChange); 1790 1979 uColChange := ''; … … 1805 1994 uQualifier := aQualifier; 1806 1995 uSortOrder := aSortOrder; 1807 uRemoteType := aRemote + '^' + aReportType + '^' + IntToStr(aIFN) + '^' + aHeading + '^' + aRptCode + '^' + aDaysBack + '^' + aHDR ;1996 uRemoteType := aRemote + '^' + aReportType + '^' + IntToStr(aIFN) + '^' + aHeading + '^' + aRptCode + '^' + aDaysBack + '^' + aHDR + '^' + aFHIE + '^' + aFHIEONLY; 1808 1997 pnlRightTop.Height := lblTitle.Height; // see below 1809 1998 RedrawSuspend(tvReports.Handle); … … 1836 2025 lblProcTypeMsg.Visible := FALSE; 1837 2026 lvReports.SmallImages := uEmptyImageList; 2027 imgLblImages.ComponentImageListChanged; 1838 2028 lvReports.Items.Clear; 1839 2029 lvReports.Columns.Clear; … … 1856 2046 with lvReports do 1857 2047 begin 1858 RedrawSuspend(lvReports.Handle); 1859 Items.BeginUpdate; 2048 Columns.BeginUpdate; 1860 2049 ViewStyle := vsReport; 1861 2050 ColumnHeaders(uColumns, IntToStr(aIFN)); … … 1881 2070 uNewColumn.Width := 0; 1882 2071 end; 1883 Items.EndUpdate; 1884 RedrawActivate(lvReports.Handle); 2072 Columns.EndUpdate; 1885 2073 end; 1886 2074 pnlRightMiddle.Visible := true; … … 1892 2080 memText.TabStop := true; 1893 2081 memText.BringToFront; 1894 RedrawActivate(memText.Handle);1895 2082 end 1896 2083 else … … 1904 2091 memText.TabStop := true; 1905 2092 memText.BringToFront; 1906 RedrawActivate(memText.Handle);1907 2093 end; 1908 2094 uLocalReportData.Clear; … … 1981 2167 splitter1.Visible := false; 1982 2168 StatusText('Retrieving ' + tvReports.Selected.Text + '...'); 1983 GoRemote(uRemoteReportData, aID, aRptCode, aRPC, uHState, aHDR );2169 GoRemote(uRemoteReportData, aID, aRptCode, aRPC, uHState, aHDR, aFHIE); 1984 2170 uReportInstruction := #13#10 + 'Retrieving data...'; 1985 2171 TabControl1.OnChange(nil); 1986 LoadReportText(uLocalReportData, aID, aRptCode, aRPC, uHState); 1987 memText.Lines.Assign(uLocalReportData); 2172 if not(piece(uRemoteType, '^', 9) = '1') then 2173 begin 2174 LoadReportText(uLocalReportData, aID, aRptCode, aRPC, uHState); 2175 QuickCopy(uLocalReportData, memText); 2176 end; 1988 2177 if uLocalReportData.Count > 0 then 1989 2178 TabControl1.OnChange(nil); … … 2004 2193 lstQualifier.ItemIndex := lstQualifier.Items.Add(aStartTime + ';' + aStopTime + '^' + aStartTime + ' to ' + aStopTime); 2005 2194 lvReports.SmallImages := uEmptyImageList; 2195 imgLblImages.ComponentImageListChanged; 2006 2196 lvReports.Items.Clear; 2007 2197 lstQualifierClick(self); … … 2023 2213 with lvReports do 2024 2214 begin 2025 RedrawSuspend(lvReports.Handle);2026 2215 Items.BeginUpdate; 2027 2216 ViewStyle := vsReport; 2028 2217 SmallImages := dmodShared.imgImages; 2218 imgLblImages.ComponentImageListChanged; 2029 2219 CurrentParentNode := nil; 2030 2220 CurrentNode := nil; … … 2053 2243 pnlLeftBottom.Visible := FALSE; 2054 2244 pnlProcedures.Visible := TRUE; 2055 Splitter1.Visible := True; 2245 Splitter1.Visible := True; 2056 2246 if lvReports.Columns.Count > 0 then lvReports.Columns[1].Width := 0; 2057 2247 Items.EndUpdate; 2058 RedrawActivate(lvReports.Handle);2059 2248 tvProcedures.TopItem := tvProcedures.Selected; 2060 2249 end; … … 2079 2268 with lvReports do 2080 2269 begin 2081 RedrawSuspend(lvReports.Handle);2082 2270 Items.BeginUpdate; 2083 2271 ViewStyle := vsReport; … … 2092 2280 if lvReports.Columns.Count > 0 then lvReports.Columns[1].Width := 0; 2093 2281 Items.EndUpdate; 2094 RedrawActivate(lvReports.Handle);2095 2282 end; 2096 2283 if TabControl1.TabIndex > 0 then TabControl1.TabIndex := 0; … … 2108 2295 QT_HSCOMPONENT: 2109 2296 begin // = 5 2110 pnlRightMiddle.Height := pnlRight.Height - (pnlRight.Height div 2); 2297 if Notifications.AlertData <> '' then 2298 pnlRightMiddle.Height := 75 2299 else 2300 pnlRightMiddle.Height := pnlRight.Height - (pnlRight.Height div 2); 2111 2301 pnlLeftBottom.Visible := false; 2112 2302 splitter1.Visible := false; … … 2114 2304 uReportInstruction := #13#10 + 'Retrieving data...'; 2115 2305 lvReports.SmallImages := uEmptyImageList; 2306 imgLblImages.ComponentImageListChanged; 2116 2307 lvReports.Items.Clear; 2117 2308 RowObjects.Clear; … … 2126 2317 begin 2127 2318 if aHDR = '1' then 2128 lstQualifier.ItemIndex := lstQualifier.Items.Add('T- 75000' + ';' + 'T+75000' + '^' + 'T-75000' + ' to ' + 'T+75000')2319 lstQualifier.ItemIndex := lstQualifier.Items.Add('T-50000' + ';' + 'T+50000' + '^' + 'T-50000' + ' to ' + 'T+50000') 2129 2320 else 2130 2321 if length(aStartTime) > 0 then lstQualifier.ItemIndex := lstQualifier.Items.Add(aStartTime + ';' + aStopTime + '^' + aStartTime + ' to ' + aStopTime); … … 2133 2324 else 2134 2325 begin 2135 GoRemote(uRemoteReportData, aID, aQualifier, aRPC, uHState, aHDR );2326 GoRemote(uRemoteReportData, aID, aQualifier, aRPC, uHState, aHDR, aFHIE); 2136 2327 if aHDR = '1' then 2137 lstQualifier.ItemIndex := lstQualifier.Items.Add('T- 75000' + ';' + 'T+75000' + '^' + 'T-75000' + ' to ' + 'T+75000')2328 lstQualifier.ItemIndex := lstQualifier.Items.Add('T-50000' + ';' + 'T+50000' + '^' + 'T-50000' + ' to ' + 'T+50000') 2138 2329 else 2139 2330 if length(aStartTime) > 0 then lstQualifier.ItemIndex := lstQualifier.Items.Add(aStartTime + ';' + aStopTime + '^' + aStartTime + ' to ' + aStopTime); 2331 lstQualifierClick(self); 2140 2332 end; 2141 2333 lblQualifier.Caption := 'Date Range'; … … 2146 2338 begin 2147 2339 if not (aRemote = '2' ) then 2148 GoRemote(uRemoteReportData, aID, aQualifier, aRPC, uHState, aHDR); 2340 GoRemote(uRemoteReportData, aID, aQualifier, aRPC, uHState, aHDR, aFHIE); 2341 if not(piece(uRemoteType, '^', 9) = '1') then 2149 2342 begin 2150 2343 LoadReportText(uLocalReportData, aID, aQualifier, aRPC, uHState); … … 2160 2353 sptHorzRight.Visible := false; 2161 2354 pnlRightMiddle.Visible := false; 2162 GoRemote(uRemoteReportData, aID, aQualifier, aRPC, uHState, aHDR); 2163 LoadReportText(uLocalReportData, aID, aQualifier, aRPC, uHState); 2355 GoRemote(uRemoteReportData, aID, aQualifier, aRPC, uHState, aHDR, aFHIE); 2356 if not(piece(uRemoteType, '^', 9) = '1') then 2357 LoadReportText(uLocalReportData, aID, aQualifier, aRPC, uHState); 2164 2358 if uLocalReportData.Count < 1 then 2165 2359 uReportInstruction := '<No Report Available>' … … 2203 2397 QT_HSWPCOMPONENT: 2204 2398 begin // = 6 2205 pnlRightMiddle.Height := pnlRight.Height - (pnlRight.Height div 2); 2399 if Notifications.AlertData <> '' then 2400 pnlRightMiddle.Height := 75 2401 else 2402 pnlRightMiddle.Height := pnlRight.Height - (pnlRight.Height div 2); 2206 2403 pnlLeftBottom.Visible := false; 2207 2404 splitter1.Visible := false; … … 2212 2409 memText.Lines.Clear; 2213 2410 lvReports.SmallImages := uEmptyImageList; 2411 imgLblImages.ComponentImageListChanged; 2214 2412 lvReports.Items.Clear; 2215 2413 if (length(piece(aHSTag,';',2)) > 0) then … … 2222 2420 begin 2223 2421 if aHDR = '1' then 2224 lstQualifier.ItemIndex := lstQualifier.Items.Add('T- 75000' + ';' + 'T+75000' + '^' + 'T-75000' + ' to ' + 'T+75000')2422 lstQualifier.ItemIndex := lstQualifier.Items.Add('T-50000' + ';' + 'T+50000' + '^' + 'T-50000' + ' to ' + 'T+50000') 2225 2423 else 2226 2424 if length(aStartTime) > 0 then lstQualifier.ItemIndex := lstQualifier.Items.Add(aStartTime + ';' + aStopTime + '^' + aStartTime + ' to ' + aStopTime); … … 2229 2427 else 2230 2428 begin 2231 GoRemote(uRemoteReportData, aID, aQualifier, aRPC, uHState, aHDR );2429 GoRemote(uRemoteReportData, aID, aQualifier, aRPC, uHState, aHDR, aFHIE); 2232 2430 if aHDR = '1' then 2233 lstQualifier.ItemIndex := lstQualifier.Items.Add('T- 75000' + ';' + 'T+75000' + '^' + 'T-75000' + ' to ' + 'T+75000')2431 lstQualifier.ItemIndex := lstQualifier.Items.Add('T-50000' + ';' + 'T+50000' + '^' + 'T-50000' + ' to ' + 'T+50000') 2234 2432 else 2235 2433 if length(aStartTime) > 0 then lstQualifier.ItemIndex := lstQualifier.Items.Add(aStartTime + ';' + aStopTime + '^' + aStartTime + ' to ' + aStopTime); 2434 lstQualifierClick(self); 2236 2435 end; 2237 2436 lblQualifier.Caption := 'Date Range'; … … 2241 2440 else 2242 2441 begin 2243 GoRemote(uRemoteReportData, aID, aQualifier, aRPC, uHState, aHDR );2244 if not (aRemote = '2' ) then2442 GoRemote(uRemoteReportData, aID, aQualifier, aRPC, uHState, aHDR, aFHIE); 2443 if not (aRemote = '2' ) and (not(piece(uRemoteType, '^', 9) = '1')) then 2245 2444 begin 2246 2445 LoadReportText(uLocalReportData, aID, aQualifier, aRPC, uHState); … … 2255 2454 sptHorzRight.Visible := false; 2256 2455 pnlRightMiddle.Visible := false; 2257 GoRemote(uRemoteReportData, aID, aQualifier, aRPC, uHState, aHDR); 2258 LoadReportText(uLocalReportData, aID, aQualifier, aRPC, uHState); 2456 GoRemote(uRemoteReportData, aID, aQualifier, aRPC, uHState, aHDR, aFHIE); 2457 if not(piece(uRemoteType, '^', 9) = '1') then 2458 LoadReportText(uLocalReportData, aID, aQualifier, aRPC, uHState); 2259 2459 if uLocalReportData.Count < 1 then 2260 2460 uReportInstruction := '<No Report Available>' … … 2295 2495 with lvReports do 2296 2496 begin 2297 RedrawSuspend(lvReports.Handle);2298 2497 Items.BeginUpdate; 2299 2498 ViewStyle := vsReport; … … 2308 2507 if lvReports.Columns.Count > 0 then lvReports.Columns[1].Width := 0; 2309 2508 Items.EndUpdate; 2310 RedrawActivate(lvReports.Handle);2311 2509 end; 2312 2510 if uLocalReportData.Count > 0 … … 2328 2526 with lvReports do 2329 2527 begin 2330 RedrawSuspend(lvReports.Handle);2331 2528 Items.BeginUpdate; 2332 2529 ViewStyle := vsReport; … … 2341 2538 if lvReports.Columns.Count > 0 then lvReports.Columns[1].Width := 0; 2342 2539 Items.EndUpdate; 2343 RedrawActivate(lvReports.Handle);2344 2540 end; 2345 2541 if uLocalReportData.Count > 0 … … 2357 2553 splitter1.Visible := false; 2358 2554 StatusText('Retrieving ' + tvReports.Selected.Text + '...'); 2359 GoRemote(uRemoteReportData, aID, aRptCode, aRPC, uHState, aHDR );2555 GoRemote(uRemoteReportData, aID, aRptCode, aRPC, uHState, aHDR, aFHIE); 2360 2556 uReportInstruction := #13#10 + 'Retrieving data...'; 2361 2557 TabControl1.OnChange(nil); 2362 LoadReportText(uLocalReportData, aID, aRptCode, aRPC, uHState); 2363 LoadReportText(uLocalReportData, aID, '', aRPC, uHState); 2558 //LoadReportText(uLocalReportData, aID, aRptCode, aRPC, uHState); 2559 if not(piece(uRemoteType, '^', 9) = '1') then 2560 LoadReportText(uLocalReportData, aID, '', aRPC, uHState); 2364 2561 if uLocalReportData.Count < 1 then 2365 2562 uReportInstruction := '<No Report Available>' … … 2383 2580 SendMessage(tvReports.Handle, WM_HSCROLL, SB_THUMBTRACK, 0); 2384 2581 RedrawActivate(tvReports.Handle); 2582 RedrawActivate(memText.Handle); 2385 2583 if WebBrowser1.Visible = true then 2386 2584 begin … … 2393 2591 memText.TabStop := true; 2394 2592 memText.BringToFront; 2395 RedrawActivate(memText.Handle);2396 2593 end 2397 2594 else … … 2406 2603 end; 2407 2604 end; 2605 lvReports.Columns.BeginUpdate; 2606 lvReports.Columns.EndUpdate; 2408 2607 Screen.Cursor := crDefault; 2409 2608 end; … … 2577 2776 aBasket: TStringList; 2578 2777 aWPFlag: Boolean; 2778 x, HasImages: string; 2579 2779 2580 2780 begin … … 2635 2835 aMoreID := '#' + Item.SubItems[5]; 2636 2836 SetPiece(uRemoteType,'^',5,aID + aMoreID); 2637 LoadReportText(uLocalReportData, uRptID, aID + aMoreID, uReportRPC, ''); 2638 for i := 0 to uLocalReportData.Count - 1 do 2639 MemText.Lines.Add(uLocalReportData[i]); 2640 if Item.SubItems.Count > 5 then 2641 NotifyOtherApps(NAE_REPORT, 'RA^' + aID + U + Item.SubItems[5]) 2642 else 2643 NotifyOtherApps(NAE_REPORT, 'RA^' + aID); 2837 if not(piece(uRemoteType, '^', 9) = '1') then 2838 begin 2839 LoadReportText(uLocalReportData, uRptID, aID + aMoreID, uReportRPC, ''); 2840 for i := 0 to uLocalReportData.Count - 1 do 2841 MemText.Lines.Add(uLocalReportData[i]); 2842 if Item.SubItems.Count > 5 then 2843 x := 'RA^' + aID + U + Item.SubItems[5] 2844 else 2845 x := 'RA^' + aID; 2846 HasImages := BOOLCHAR[Item.SubItemImages[1] = IMG_1_IMAGE]; 2847 SetPiece(x, U, 10, HasImages); 2848 NotifyOtherApps(NAE_REPORT, x); 2849 end; 2644 2850 end; 2645 2851 QT_NUTR: … … 2650 2856 memText.Lines.Add('==============================================================================='); 2651 2857 SetPiece(uRemoteType,'^',5,aID); 2652 LoadReportText(uLocalReportData, uRptID, aID, uReportRPC, ''); 2653 for i := 0 to uLocalReportData.Count - 1 do 2654 MemText.Lines.Add(uLocalReportData[i]); 2858 if not(piece(uRemoteType, '^', 9) = '1') then 2859 begin 2860 LoadReportText(uLocalReportData, uRptID, aID, uReportRPC, ''); 2861 for i := 0 to uLocalReportData.Count - 1 do 2862 MemText.Lines.Add(uLocalReportData[i]); 2863 end; 2655 2864 end; 2656 2865 QT_HSWPCOMPONENT: … … 2677 2886 aWPFlag := true; 2678 2887 MemText.Lines.Add(TCellObject(RowObjects.ColumnList[j]).Name); 2679 aBasket.Assign(TCellObject(RowObjects.ColumnList[j]).Data);2888 FastAssign(TCellObject(RowObjects.ColumnList[j]).Data, aBasket); 2680 2889 for k := 0 to aBasket.Count - 1 do 2681 2890 MemText.Lines.Add(' ' + aBasket[k]); … … 2698 2907 aWPFlag := true; 2699 2908 MemText.Lines.Add(TCellObject(RowObjects.ColumnList[i]).Name); 2700 aBasket.Assign(TCellObject(RowObjects.ColumnList[i]).Data);2909 FastAssign(TCellObject(RowObjects.ColumnList[i]).Data, aBasket); 2701 2910 for j := 0 to aBasket.Count - 1 do 2702 2911 MemText.Lines.Add(' ' + aBasket[j]); … … 2708 2917 end; 2709 2918 if uRptID = 'OR_R18:IMAGING' then 2710 if (Item.SubItems.Count > 4) and (Item.SubItems.Count > 8) then 2711 NotifyOtherApps(NAE_REPORT, 'RA^' + Item.SubItems[8] + U + Item.SubItems[4] + U + Item.Caption) 2712 else 2713 if Item.SubItems.Count > 8 then 2714 NotifyOtherApps(NAE_REPORT, 'RA^' + Item.SubItems[8] + U + U + Item.Caption) 2715 else if Item.SubItemImages[1] = 1 then 2716 begin 2717 memText.Lines.Insert(0,'<Imaging links not active at this site>'); 2718 memText.Lines.Insert(1,' '); 2719 end; 2919 begin 2920 if (Item.SubItems.Count > 8) then //has id, may have case (?) 2921 begin 2922 x := 'RA^' + Item.SubItems[8] + U + Item.SubItems[4] + U + Item.Caption; 2923 SetPiece(x, U, 10, BOOLCHAR[Item.SubItemImages[1] = IMG_1_IMAGE]); 2924 NotifyOtherApps(NAE_REPORT, x); 2925 end 2926 else if (Item.SubItems.Count > 4) then 2927 begin 2928 x := 'RA^' + U + U + Item.SubItems[4] + U + Item.Caption; 2929 SetPiece(x, U, 10, BOOLCHAR[Item.SubItemImages[1] = IMG_1_IMAGE]); 2930 NotifyOtherApps(NAE_REPORT, x); 2931 end 2932 else if Item.SubItemImages[1] = IMG_1_IMAGE then 2933 begin 2934 memText.Lines.Insert(0,'<Imaging links not active at this site>'); 2935 memText.Lines.Insert(1,' '); 2936 end; 2937 end; 2720 2938 if uRptID = 'OR_PN:PROGRESS NOTES' then 2721 2939 if (Item.SubItems.Count > 7) then 2722 NotifyOtherApps(NAE_REPORT, 'PN^' + Item.SubItems[7] + U + Item.SubItems[1] + U + Item.Caption); 2940 begin 2941 if StrToIntDef(Item.SubItems[7], 0) > 0 then HasImages := '1' else HasImages := '0'; 2942 x := 'PN^' + Item.SubItems[7] + U + Item.SubItems[1] + U + Item.Caption; 2943 SetPiece(x, U, 10, HasImages); 2944 NotifyOtherApps(NAE_REPORT, x); 2945 end; 2723 2946 end; 2724 2947 QT_PROCEDURES: … … 2729 2952 memText.Lines.Add('==============================================================================='); 2730 2953 SetPiece(uRemoteType,'^',5,aID); 2731 LoadReportText(uLocalReportData, uRptID, aID + aMoreID, uReportRPC, ''); 2732 for i := 0 to uLocalReportData.Count - 1 do 2733 MemText.Lines.Add(uLocalReportData[i]); 2954 if not(piece(uRemoteType, '^', 9) = '1') then 2955 begin 2956 LoadReportText(uLocalReportData, uRptID, aID + aMoreID, uReportRPC, ''); 2957 for i := 0 to uLocalReportData.Count - 1 do 2958 MemText.Lines.Add(uLocalReportData[i]); 2959 end; 2734 2960 end; 2735 2961 QT_SURGERY: … … 2740 2966 memText.Lines.Add('==============================================================================='); 2741 2967 SetPiece(uRemoteType,'^',5,aID); 2742 LoadReportText(uLocalReportData, uRptID, aID + aMoreID, uReportRPC, ''); 2743 for i := 0 to uLocalReportData.Count - 1 do 2744 MemText.Lines.Add(uLocalReportData[i]); 2745 NotifyOtherApps(NAE_REPORT, 'SUR^' + aID); 2968 if not(piece(uRemoteType, '^', 9) = '1') then 2969 begin 2970 LoadReportText(uLocalReportData, uRptID, aID + aMoreID, uReportRPC, ''); 2971 for i := 0 to uLocalReportData.Count - 1 do 2972 MemText.Lines.Add(uLocalReportData[i]); 2973 NotifyOtherApps(NAE_REPORT, 'SUR^' + aID); 2974 end; 2746 2975 end; 2747 2976 end; … … 2961 3190 FirstChild: TTreeNode; 2962 3191 aID, aMoreID: string; 3192 x, HasImages: string; 2963 3193 begin 2964 3194 inherited; … … 2994 3224 uLocalReportData.Clear; 2995 3225 MemText.Lines.Clear; 2996 LoadReportText(uLocalReportData, uRptID, aID + aMoreID, uReportRPC, ''); 2997 for i := 0 to uLocalReportData.Count - 1 do 2998 MemText.Lines.Add(uLocalReportData[i]); 2999 memText.SelStart := 0; 3000 if lvReports.Items[Associate].SubItems.Count > 5 then 3001 NotifyOtherApps(NAE_REPORT, 'RA^' + aID + U + lvReports.Items[Associate].SubItems[5]) 3002 else 3003 NotifyOtherApps(NAE_REPORT, 'RA^' + aID); 3226 if not(piece(uRemoteType, '^', 9) = '1') then 3227 begin 3228 LoadReportText(uLocalReportData, uRptID, aID + aMoreID, uReportRPC, ''); 3229 for i := 0 to uLocalReportData.Count - 1 do 3230 MemText.Lines.Add(uLocalReportData[i]); 3231 memText.SelStart := 0; 3232 if lvReports.Items[Associate].SubItems.Count > 5 then 3233 x := 'RA^' + aID + U + lvReports.Items[Associate].SubItems[5] 3234 else 3235 x := 'RA^' + aID; 3236 HasImages := BOOLCHAR[lvReports.Items[Associate].SubItemImages[1] = IMG_1_IMAGE]; 3237 SetPiece(x, U, 10, HasImages); 3238 NotifyOtherApps(NAE_REPORT, x); 3239 end; 3004 3240 end 3005 3241 else if PProcTreeObj(Node.Data)^.MemberOfSet = '1' then //examset - individual reports … … 3032 3268 end; 3033 3269 3270 procedure TfrmReports.chkMaxFreqClick(Sender: TObject); 3271 begin 3272 inherited; 3273 if chkMaxFreq.Checked = true then 3274 begin 3275 uMaxOcc := piece(uQualifier, ';', 3); 3276 SetPiece(uQualifier, ';', 3, ''); 3277 end 3278 else 3279 begin 3280 SetPiece(uQualifier, ';', 3, uMaxOcc); 3281 end; 3282 tvReportsClick(self); 3283 end; 3284 3034 3285 procedure TfrmReports.btnChangeViewClick(Sender: TObject); 3035 3286 begin … … 3059 3310 GraphForm.cboDateRange.ItemIndex := lstDateRange.ItemIndex; 3060 3311 GraphForm.cboDateRangeChange(self); 3061 lstDateRange.Items.Assign(GraphForm.cboDateRange.Items);3312 FastAssign(GraphForm.cboDateRange.Items, lstDateRange.Items); 3062 3313 lstDateRange.ItemIndex := GraphForm.cboDateRange.ItemIndex; 3063 3314 //Exit; 3064 3315 end; 3316 3065 3317 end; 3066 3318 … … 3071 3323 end; 3072 3324 3325 initialization 3326 SpecifyFormIsNotADialog(TfrmReports); 3327 3073 3328 end.
Note:
See TracChangeset
for help on using the changeset viewer.