Ignore:
Timestamp:
Jul 7, 2010, 4:51:54 PM (14 years ago)
Author:
Kevin Toppenberg
Message:

Upgrading to version 27

File:
1 edited

Legend:

Unmodified
Added
Removed
  • cprs/trunk/CPRS-Chart/fReports.pas

    r456 r830  
    66  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
    77  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;
    910
    1011type
     
    2829    pnlRightBottom: TPanel;
    2930    pnlRightMiddle: TPanel;
    30     lblTitle: TOROffsetLabel;
    3131    TabControl1: TTabControl;
    3232    lvReports: TCaptionListView;
     
    5454    lstDateRange: TORListBox;
    5555    pnlTopViews: TPanel;
     56    pnlTopRtLabel: TPanel;
     57    lblTitle: TOROffsetLabel;
     58    chkMaxFreq: TCheckBox;
     59    imgLblImages: TVA508ImageListLabeler;
    5660    procedure lstQualifierClick(Sender: TObject);
    5761    procedure GotoTop1Click(Sender: TObject);
     
    6670    procedure TabControl1Change(Sender: TObject);
    6771    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);
    6973    procedure lstHeadersClick(Sender: TObject);
    7074    procedure Splitter1CanResize(Sender: TObject; var NewSize: Integer;
     
    107111    procedure tvProceduresExpanding(Sender: TObject; Node: TTreeNode;                   
    108112      var AllowExpansion: Boolean);
    109     procedure tvProceduresClick(Sender: TObject);                                       
     113    procedure tvProceduresClick(Sender: TObject);
    110114    procedure tvProceduresChange(Sender: TObject; Node: TTreeNode);
    111115    procedure tvProceduresKeyDown(Sender: TObject; var Key: Word;                       
     
    116120    procedure lstDateRangeClick(Sender: TObject);
    117121    procedure sptHorzMoved(Sender: TObject);
     122    procedure chkMaxFreqClick(Sender: TObject);
    118123
    119124  private
     
    123128    procedure Graph(reportien: integer);
    124129    procedure GraphPanel(active: boolean);
    125 
    126130  public
    127131    procedure ClearPtData; override;
     
    167171
    168172uses 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;
    170177
    171178const
     
    209216  lblProcTypeMsg.Visible := FALSE;
    210217  lvReports.SmallImages := uEmptyImageList;
     218  imgLblImages.ComponentImageListChanged;
    211219  lvReports.Items.Clear;
    212220  uLocalReportData.Clear;
     
    215223  TabControl1.Visible := false;
    216224  TabControl1.TabStop := false;
     225  lstDateRange.Tag := 0; // used to reset date default on graph
    217226  if (GraphForm <> nil) and GraphFormActive then
    218227  with GraphForm do
     
    222231    DisplayData('top');
    223232    DisplayData('bottom');
    224     lstCheck.Items.Clear;
     233    GtslCheck.Clear;
    225234    GraphFormActive := false;
    226235  end;
     
    251260        DisplayData('top');
    252261        DisplayData('bottom');
    253         lstCheck.Items.Clear;
     262        GtslCheck.Clear;
    254263        GraphPanel(true);
    255         lstTypes.Hint := Patient.DFN;
     264        frmGraphData.pnlData.Hint := Patient.DFN;
    256265        BringToFront;
    257266      end;
     
    269278  else if GraphForm.btnClose.Tag = 1 then
    270279    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
    274282    with GraphForm do
    275     begin  // new report
     283    if pnlMain.Tag <> reportien then
     284    begin  // different report
    276285      pnlMain.Tag := reportien;
    277286      Initialize;
    278       //DisplayData('top');
    279       //DisplayData('bottom');
    280       lstCheck.Items.Clear;
     287      GtslCheck.Clear;
    281288      GraphPanel(true);
    282289      BringToFront;
    283290    end;
    284     //no action
    285   end
    286   else if GraphForm.lstTypes.Hint = Patient.DFN then
    287   begin   // same patient, bring back graph
    288     GraphPanel(true);
    289     BringToFront;
    290     GraphFormActive := true;
    291   end
    292   else
    293   with GraphForm do
    294   begin  // new patient
    295     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;
    304291  end;
    305292end;
     
    307294procedure TfrmReports.GraphPanel(active: boolean);
    308295var
    309   aQualifier, aStartTime, aStopTime: string;
     296  adddaterange: boolean;
     297  i: integer;
     298  aQualifier, aStartTime, aStopTime, aNewLine: string;
    310299begin
    311300  if active then
     
    326315      aStartTime  :=  Piece(aQualifier,';',1);
    327316      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);
    331327      lstDateRange.Items := GraphForm.cboDateRange.Items;
     328      GraphForm.DateDefaults;
     329      lstDateRange.ItemIndex := GraphForm.cboDateRange.ItemIndex;
    332330      //lstDateRange.ItemIndex := lstDateRange.Items.Count - 1;
    333       lstDateRange.ItemIndex := lstDateRange.Items.Count - 2;      //set to all results till fixed
     331      //lstDateRange.ItemIndex := lstDateRange.Items.Count - 2;      //set to all results till fixed
    334332      lstDateRangeClick(self);
    335333    end;
     
    438436                  + '<TD nowrap><B>Patient: ' + Patient.Name + '</B></TD>'
    439437                  + '<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{}
    441442                  + '</TR></TABLE></DIV><HR>';
    442443                  //the preferred method would be to use headers and footers
     
    454455  if InitPatient and not (CallingContext = CC_NOTIFICATION) then
    455456    begin
     457      uColChange := '';
    456458      lstQualifier.Clear;
    457459      tvProcedures.Items.Clear;
    458460      lblProcTypeMsg.Visible := FALSE;
    459461      lvReports.SmallImages := uEmptyImageList;
     462      imgLblImages.ComponentImageListChanged;
    460463      lvReports.Items.Clear;
    461464      lvReports.Columns.Clear;
     
    477480          begin
    478481            tvReports.Selected := tvReports.Items.GetFirstNode;
     482            tvReportsClick(self);
    479483          end;
    480484    end;
     
    482486    CC_INIT_PATIENT:  if not InitPatient then
    483487                        begin
     488                        uColChange := '';
    484489                        lstQualifier.Clear;
    485490                        tvProcedures.Items.Clear;
    486491                        lblProcTypeMsg.Visible := FALSE;     
    487492                        lvReports.SmallImages := uEmptyImageList;
     493                        imgLblImages.ComponentImageListChanged;
    488494                        lvReports.Items.Clear;
    489495                        Splitter1.Visible := false;
     
    493499                            begin
    494500                              tvReports.Selected := tvReports.Items.GetFirstNode;
     501                              tvReportsClick(self);
    495502                            end;
    496503                        end;
    497504    CC_NOTIFICATION:  ProcessNotifications;
    498   end; 
     505  end;
    499506end;
    500507
     
    523530var
    524531  i,j: integer;
    525   currentNode, parentNode, grandParentNode: TTreeNode;
     532  currentNode, parentNode, grandParentNode, gtGrandParentNode: TTreeNode;
    526533  x: string;
    527   addchild, addgrandchild: boolean;
     534  addchild, addgrandchild, addgtgrandchild: boolean;
    528535begin
    529536  tvReports.Items.Clear;
     
    532539  WebBrowser1.Navigate('about:blank');
    533540  tvProcedures.Items.Clear;
    534   lblProcTypeMsg.Visible := FALSE;     
     541  lblProcTypeMsg.Visible := FALSE;
    535542  lvReports.SmallImages := uEmptyImageList;
     543  imgLblImages.ComponentImageListChanged;
    536544  lvReports.Items.Clear;
    537545  uTreeStrings.Clear;
     
    541549  addchild := false;
    542550  addgrandchild := false;
     551  addgtgrandchild := false;
    543552  parentNode := nil;
    544553  grandParentNode := nil;
     554  gtGrandParentNode := nil;
    545555  currentNode := nil;
    546556  for i := 0 to uTreeStrings.Count - 1 do
     
    549559      if UpperCase(Piece(x,'^',1))='[PARENT END]' then
    550560        begin
    551           if addgrandchild = true then
     561          if addgtgrandchild = true then
    552562            begin
    553               currentNode := grandParentNode;
    554               addgrandchild := false;
     563              currentNode := gtgrandParentNode;
     564              addgtgrandchild := false;
    555565            end
    556566          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;
    561577          continue;
    562578        end;
    563579      if UpperCase(Piece(x,'^',1))='[PARENT START]' then
    564580        begin
    565           if addgrandchild = true then
    566             currentNode := tvReports.Items.AddChildObject(grandParentNode,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)))
    567583          else
    568             if addchild = true then
     584            if addgrandchild = true then
    569585              begin
    570                 currentNode := tvReports.Items.AddChildObject(parentNode,Piece(x,'^',3),MakeReportTreeObject(Pieces(x,'^',2,15)));
    571                 addgrandchild := true;
    572                 grandParentNode := currentNode;
     586                currentNode := tvReports.Items.AddChildObject(grandParentNode,Piece(x,'^',3),MakeReportTreeObject(Pieces(x,'^',2,21)));
     587                addgtgrandchild := true;
     588                gtgrandParentNode := currentNode;
    573589              end
    574590            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;
    580603        end
    581604      else
     
    587610        else
    588611          begin
    589             if addgrandchild = true then
    590                 currentNode := tvReports.Items.AddChildObject(grandParentNode,Piece(x,'^',2),MakeReportTreeObject(x))
     612            if addgtgrandchild = true then
     613                currentNode := tvReports.Items.AddChildObject(gtGrandParentNode,Piece(x,'^',2),MakeReportTreeObject(x))
    591614            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));
    593619          end;
    594620    end;
     
    607633
    608634procedure TfrmReports.SetFontSize(NewFontSize: Integer);
    609 begin
     635var
     636  pnlRightMiddlePct: Real;
     637  frmReportsHeight, pnlRightHeight: Integer;
     638
     639begin
     640  pnlRightMiddlePct := (pnlRightMiddle.Height / (pnlRight.Height - (sptHorzRight.Height + pnlRightTop.Height)));
     641  pnlRightMiddle.Constraints.MaxHeight := 20;
    610642  inherited SetFontSize(NewFontSize);
    611643  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;
    612654end;
    613655
     
    798840          begin
    799841            SmallImages := dmodShared.imgImages;
     842            imgLblImages.ComponentImageListChanged;
    800843            for i := 0 to Items.Count - 1 do
    801               if Items[i].SubItems[7] = 'Y' then
     844              if (Items[i].SubItems.Count > 7) and (Items[i].SubItems[7] = 'Y') then
    802845                Items[i].SubItemImages[1] := IMG_1_IMAGE
    803846              else
    804847                Items[i].SubItemImages[1] := IMG_NO_IMAGES;
    805848          end
    806         else lvReports.SmallImages := uEmptyImageList;
     849        else //lvReports.SmallImages := uEmptyImageList;
    807850        if uRptID = 'OR_PN:PROGRESS NOTES' then with lvReports do  //set image indicator for "Progress Notes" report
    808851          begin
    809852            SmallImages := dmodShared.imgImages;
     853            imgLblImages.ComponentImageListChanged;
    810854            for i := 0 to Items.Count - 1 do
    811               if StrToInt(Items[i].SubItems[7]) > 0 then
     855              if (Items[i].SubItems.Count > 7) and (StrToInt(Items[i].SubItems[7]) > 0) then
    812856                Items[i].SubItemImages[2] := IMG_1_IMAGE
    813857              else
    814858                Items[i].SubItemImages[2] := IMG_NO_IMAGES;
    815859          end
    816         else lvReports.SmallImages := uEmptyImageList;
     860        else begin
     861          lvReports.SmallImages := uEmptyImageList;
     862          imgLblImages.ComponentImageListChanged;
     863        end;
    817864      end;
    818865  end;
    819866  if aErr = 1 then
    820867    if User.HasKey('XUPROGMODE') then
    821       ShowMessage('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');
    822869end;
    823870
     
    825872var
    826873  MoreID: String;  //Restores MaxOcc value
    827   aRemote, aHDR: string;
     874  aRemote, aHDR, aFHIE: string;
    828875  i: integer;
    829876begin
     
    835882    end;
    836883  MoreID := ';' + Piece(uQualifier,';',3);
     884  if chkMaxFreq.checked = true then
     885    begin
     886      MoreID := '';
     887      SetPiece(uQualifier,';',3,'');
     888    end;
    837889  aRemote :=  piece(uRemoteType,'^',1);
    838890  aHDR := piece(uRemoteType,'^',7);
     891  aFHIE := piece(uRemoteType,'^',8);
    839892  SetPiece(uRemoteType,'^',5,lstQualifier.ItemID);
    840893  uHSComponents.Clear;
     
    933986        begin     //      = 5
    934987          lvReports.SmallImages := uEmptyImageList;
     988          imgLblImages.ComponentImageListChanged;
    935989          lvReports.Items.Clear;
    936990          memText.Lines.Clear;
    937991          RowObjects.Clear;
    938992          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;
    9431006                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;
    9631018        end;
    9641019      QT_HSWPCOMPONENT:
    9651020        begin      //      = 6
    9661021          lvReports.SmallImages := uEmptyImageList;
     1022          imgLblImages.ComponentImageListChanged;
    9671023          lvReports.Items.Clear;
    9681024          RowObjects.Clear;
     
    9711027            begin
    9721028              Screen.Cursor := crDefault;
    973               GoRemote(uRemoteReportData, uRptID, lstQualifier.ItemID + MoreID, uReportRPC, uHState, aHDR);
     1029              GoRemote(uRemoteReportData, uRptID, lstQualifier.ItemID + MoreID, uReportRPC, uHState, aHDR, aFHIE);
    9741030            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
    9881035                  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;
    9981055        end
    9991056      else
    10001057        begin
    10011058          Screen.Cursor := crDefault;
    1002           GoRemote(uRemoteReportData, uRptID, lstQualifier.ItemID + MoreID, uReportRPC, uHState, aHDR);
     1059          GoRemote(uRemoteReportData, uRptID, lstQualifier.ItemID + MoreID, uReportRPC, uHState, aHDR, aFHIE);
    10031060          if Pos('ECS',Piece(uRptID,':',1))>0 then
    10041061          begin
     
    10181075            LoadECSReportText(uLocalReportData, uECSReport);
    10191076          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);
    10231082        end;
    10241083    end;
     
    11391198  inherited;
    11401199  PageID := CT_REPORTS;
    1141   memText.Color := ReadOnlyColor;
    11421200  uFrozen := False;
    11431201  uHSComponents := TStringList.Create;
     
    11561214procedure TfrmReports.ProcessNotifications;
    11571215var
    1158   i: integer;
     1216  j, AnIndex, IDColumn: integer;
    11591217  SelectID: string;
    1160   Found: boolean;
    11611218  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
     1259begin
     1260  IDColumn := 0;
    11761261  case Notifications.Followup of
    11771262    NF_IMAGING_RESULTS, NF_ABNORMAL_IMAGING_RESULTS, NF_IMAGING_RESULTS_AMENDED:
    11781263      begin
    1179         tvReports.Selected := tvReports.Items[i];
     1264        if not FindReport(QT_IMAGING, AnIndex) then exit;
     1265        tvReports.Selected := tvReports.Items[AnIndex];
    11801266        SelectID := 'i' + Piece(Notifications.AlertData, '~', 1) +
    11811267          '-' + 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];
    11841271      end;
    11851272    NF_IMAGING_REQUEST_CHANGED:
    11861273      begin
    1187         tvReports.Selected := tvReports.Items[i];
     1274        if not FindReport(QT_IMAGING, AnIndex) then exit;
     1275        tvReports.Selected := tvReports.Items[AnIndex];
    11881276        SelectID := 'i' + Piece(Notifications.AlertData, '/', 2) +
    11891277          '-' + 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];
    11921281      end;
    11931282    NF_STAT_RESULTS                  :
    11941283      begin
    1195         tvReports.Selected := tvReports.Items[i];
     1284        if not FindReport(QT_IMAGING, AnIndex) then exit;
     1285        tvReports.Selected := tvReports.Items[AnIndex];
    11961286        SelectID := 'i' + Piece(Notifications.AlertData, '~', 2) +
    11971287          '-' + 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];
    12001291      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];
    12021345  end;
    12031346  if tvReports.Selected <> nil then
    12041347    begin
    12051348      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
    12071351       begin
    1208          ListItem := lvReports.Items[i];
    1209          if ListItem.Subitems[0] = SelectID then
     1352         ListItem := lvReports.Items[j];
     1353         if ListItem.Subitems[IDColumn] = SelectID then
    12101354           begin
    1211              lvReports.Selected := lvReports.Items[i];
     1355             lvReports.Selected := lvReports.Items[j];
    12121356             break;
    12131357           end;
     
    12491393          end;
    12501394        if length(piece(aRanges,';',1)) > 0 then
     1395          if uReportType <> 'G' then    // graphs don't display date ranges here
    12511396          begin
    12521397            d1 := ValidDateTimeStr(piece(aRanges,';',1),'');
    12531398            d2 := ValidDateTimeStr(piece(aRanges,';',2),'');
    12541399            y := FormatFMDateTime('mmm dd,yyyy',d1);
     1400            if Copy(y,8,2) = '18' then y := 'EARLIEST RESULT';
    12551401            z := FormatFMDateTime('mmm dd,yyyy',d2);
    12561402            x1 := ' [From: ' + y + ' to ' + z + ']';
     
    12691415        end;
    12701416      end;
     1417    if piece(uRemoteType, '^', 9) = '1' then x := x + ' <<ONLY REMOTE DOD DATA INCLUDED IN REPORT>>';
    12711418    Caption := x;
    12721419  end;
     
    14831630end;
    14841631
    1485 procedure TfrmReports.GoRemote(Dest: TStringList; AItem: string; AQualifier, ARpc: string; AHSTag: string; AHDR: string);
     1632procedure TfrmReports.GoRemote(Dest: TStringList; AItem: string; AQualifier, ARpc: string; AHSTag: string; AHDR: string; aFHIE: string);
    14861633var
    14871634  i, j: integer;
    1488   LocalHandle, Query, Report: string;
     1635  LocalHandle, Query, Report, Seq: string;
    14891636  HSType, DaysBack, ExamID, MaxOcc: string;
    14901637  Alpha, Omega, Trans: double;
     
    14951642  Alpha := 0;
    14961643  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 := '';
    15041645  if AHDR = '1' then
    15051646    begin
     
    15091650          Exit;
    15101651        end;
     1652      InfoBox('You must use VistaWeb to view this report.', 'Use VistaWeb for HDR data', MB_OK);
    15111653      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';
    15131655      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';
    15151657    end;
    15161658  if CharAt(AQualifier, 1) = 'd' then
     
    15521694            TRemoteSite(Items[i]).QueryStatus := '1^Not Included';
    15531695            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.');
    15541702            TabControl1.OnChange(nil);
     1703            if (length(piece(uHState,';',2)) > 0) then
     1704              LoadListView(TRemoteSite(Items[i]).Data);
    15551705            continue;
    15561706          end;
     
    15591709            TRemoteSite(Items[i]).QueryStatus := '1^Not Included';
    15601710            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.');
    15611717            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);
    15621735            continue;
    15631736          end;
     
    16001773                    TRemoteSite(Items[i]).QueryStatus := '-1^Communication error';
    16011774                    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);
    16021782                  end
    16031783                else
     
    16201800                    TRemoteSite(Items[i]).QueryStatus := '-1^Communication error';
    16211801                    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);
    16221809                  end
    16231810                else
     
    16461833      for i := 0 to lvReports.Columns.Count - 1 do
    16471834        aColChange := aColChange + IntToStr(lvReports.Column[i].width) + ',';
    1648       if aColChange <> piece(uColchange,'^',2) then
     1835      if (Length(aColChange) > 0) and (aColChange <> piece(uColchange,'^',2)) then
    16491836        SaveColumnSizes(piece(uColChange,'^',1) + '^' + aColChange);
    16501837      uColChange := '';
     
    17551942  aHeading, aReportType, aRPC, aQualifier, aStartTime, aStopTime, aMax, aRptCode, aRemote, aCategory, aSortOrder, aDaysBack, x: string;
    17561943  aIFN: integer;
    1757   aID, aHSTag, aRadParam, aColChange, aDirect, aHDR, aQualifierID: string;
     1944  aID, aHSTag, aRadParam, aColChange, aDirect, aHDR, aFHIE, aFHIEONLY, aQualifierID: string;
    17581945  CurrentParentNode, CurrentNode: TTreeNode;
    17591946begin
     
    17761963  aDirect     :=  PReportTreeObject(tvReports.Selected.Data)^.Direct;
    17771964  aHDR        :=  PReportTreeObject(tvReports.Selected.Data)^.HDR;
     1965  aFHIE       :=  PReportTreeObject(tvReports.Selected.Data)^.FHIE;
     1966  aFHIEONLY   :=  PReportTreeObject(tvReports.Selected.Data)^.FHIEONLY;
    17781967  aStartTime  :=  Piece(aQualifier,';',1);
    17791968  aStopTime   :=  Piece(aQualifier,';',2);
     
    17861975      for i := 0 to lvReports.Columns.Count - 1 do
    17871976        aColChange := aColChange + IntToStr(lvReports.Column[i].width) + ',';
    1788       if aColChange <> piece(uColchange,'^',2) then
     1977      if (Length(aColChange) > 0) and (aColChange <> piece(uColchange,'^',2)) then
    17891978        SaveColumnSizes(piece(uColChange,'^',1) + '^' + aColChange);
    17901979      uColChange := '';
     
    18051994  uQualifier := aQualifier;
    18061995  uSortOrder := aSortOrder;
    1807   uRemoteType := aRemote + '^' + aReportType + '^' + IntToStr(aIFN) + '^' + aHeading + '^' + aRptCode + '^' + aDaysBack + '^' + aHDR;
     1996  uRemoteType := aRemote + '^' + aReportType + '^' + IntToStr(aIFN) + '^' + aHeading + '^' + aRptCode + '^' + aDaysBack + '^' + aHDR + '^' + aFHIE + '^' + aFHIEONLY;
    18081997  pnlRightTop.Height := lblTitle.Height;  // see below
    18091998  RedrawSuspend(tvReports.Handle);
     
    18362025  lblProcTypeMsg.Visible := FALSE;
    18372026  lvReports.SmallImages := uEmptyImageList;
     2027  imgLblImages.ComponentImageListChanged;
    18382028  lvReports.Items.Clear;
    18392029  lvReports.Columns.Clear;
     
    18562046        with lvReports do
    18572047          begin
    1858             RedrawSuspend(lvReports.Handle);
    1859             Items.BeginUpdate;
     2048            Columns.BeginUpdate;
    18602049            ViewStyle := vsReport;
    18612050            ColumnHeaders(uColumns, IntToStr(aIFN));
     
    18812070                  uNewColumn.Width := 0;
    18822071              end;
    1883             Items.EndUpdate;
    1884             RedrawActivate(lvReports.Handle);
     2072            Columns.EndUpdate;
    18852073          end;
    18862074        pnlRightMiddle.Visible := true;
     
    18922080        memText.TabStop := true;
    18932081        memText.BringToFront;
    1894         RedrawActivate(memText.Handle);
    18952082      end
    18962083    else
     
    19042091        memText.TabStop := true;
    19052092        memText.BringToFront;
    1906         RedrawActivate(memText.Handle);
    19072093      end;
    19082094  uLocalReportData.Clear;
     
    19812167                splitter1.Visible := false;
    19822168                StatusText('Retrieving ' + tvReports.Selected.Text + '...');
    1983                 GoRemote(uRemoteReportData, aID, aRptCode, aRPC, uHState, aHDR);
     2169                GoRemote(uRemoteReportData, aID, aRptCode, aRPC, uHState, aHDR, aFHIE);
    19842170                uReportInstruction := #13#10 + 'Retrieving data...';
    19852171                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;
    19882177                if uLocalReportData.Count > 0 then
    19892178                    TabControl1.OnChange(nil);
     
    20042193                  lstQualifier.ItemIndex := lstQualifier.Items.Add(aStartTime + ';' + aStopTime + '^' + aStartTime + ' to ' + aStopTime);
    20052194                  lvReports.SmallImages := uEmptyImageList;
     2195                  imgLblImages.ComponentImageListChanged;
    20062196                  lvReports.Items.Clear;
    20072197                  lstQualifierClick(self);
     
    20232213            with lvReports do
    20242214              begin
    2025                 RedrawSuspend(lvReports.Handle);
    20262215                Items.BeginUpdate;
    20272216                ViewStyle := vsReport;
    20282217                SmallImages := dmodShared.imgImages;
     2218                imgLblImages.ComponentImageListChanged;
    20292219                CurrentParentNode := nil;
    20302220                CurrentNode := nil;
     
    20532243                pnlLeftBottom.Visible := FALSE;
    20542244                pnlProcedures.Visible := TRUE;
    2055                 Splitter1.Visible := True;                                     
     2245                Splitter1.Visible := True;
    20562246                if lvReports.Columns.Count > 0 then lvReports.Columns[1].Width := 0;
    20572247                Items.EndUpdate;
    2058                 RedrawActivate(lvReports.Handle);
    20592248                tvProcedures.TopItem := tvProcedures.Selected;
    20602249              end;
     
    20792268            with lvReports do
    20802269              begin
    2081                 RedrawSuspend(lvReports.Handle);
    20822270                Items.BeginUpdate;
    20832271                ViewStyle := vsReport;
     
    20922280                if lvReports.Columns.Count > 0 then lvReports.Columns[1].Width := 0;
    20932281                Items.EndUpdate;
    2094                 RedrawActivate(lvReports.Handle);
    20952282              end;
    20962283            if TabControl1.TabIndex > 0 then TabControl1.TabIndex := 0;
     
    21082295        QT_HSCOMPONENT:
    21092296          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);
    21112301            pnlLeftBottom.Visible := false;
    21122302            splitter1.Visible := false;
     
    21142304            uReportInstruction := #13#10 + 'Retrieving data...';
    21152305            lvReports.SmallImages := uEmptyImageList;
     2306            imgLblImages.ComponentImageListChanged;
    21162307            lvReports.Items.Clear;
    21172308            RowObjects.Clear;
     
    21262317                      begin
    21272318                        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')
    21292320                        else
    21302321                          if length(aStartTime) > 0 then lstQualifier.ItemIndex := lstQualifier.Items.Add(aStartTime + ';' + aStopTime + '^' + aStartTime + ' to ' + aStopTime);
     
    21332324                    else
    21342325                      begin
    2135                         GoRemote(uRemoteReportData, aID, aQualifier, aRPC, uHState, aHDR);
     2326                        GoRemote(uRemoteReportData, aID, aQualifier, aRPC, uHState, aHDR, aFHIE);
    21362327                        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')
    21382329                        else
    21392330                          if length(aStartTime) > 0 then lstQualifier.ItemIndex := lstQualifier.Items.Add(aStartTime + ';' + aStopTime + '^' + aStartTime + ' to ' + aStopTime);
     2331                        lstQualifierClick(self);
    21402332                      end;
    21412333                    lblQualifier.Caption := 'Date Range';
     
    21462338                  begin
    21472339                    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
    21492342                      begin
    21502343                        LoadReportText(uLocalReportData, aID, aQualifier, aRPC, uHState);
     
    21602353                sptHorzRight.Visible := false;
    21612354                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);
    21642358                if uLocalReportData.Count < 1 then
    21652359                  uReportInstruction := '<No Report Available>'
     
    22032397        QT_HSWPCOMPONENT:
    22042398          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);
    22062403            pnlLeftBottom.Visible := false;
    22072404            splitter1.Visible := false;
     
    22122409            memText.Lines.Clear;
    22132410            lvReports.SmallImages := uEmptyImageList;
     2411            imgLblImages.ComponentImageListChanged;
    22142412            lvReports.Items.Clear;
    22152413            if (length(piece(aHSTag,';',2)) > 0) then
     
    22222420                      begin
    22232421                        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')
    22252423                        else
    22262424                          if length(aStartTime) > 0 then lstQualifier.ItemIndex := lstQualifier.Items.Add(aStartTime + ';' + aStopTime + '^' + aStartTime + ' to ' + aStopTime);
     
    22292427                    else
    22302428                      begin
    2231                         GoRemote(uRemoteReportData, aID, aQualifier, aRPC, uHState, aHDR);
     2429                        GoRemote(uRemoteReportData, aID, aQualifier, aRPC, uHState, aHDR, aFHIE);
    22322430                        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')
    22342432                        else
    22352433                          if length(aStartTime) > 0 then lstQualifier.ItemIndex := lstQualifier.Items.Add(aStartTime + ';' + aStopTime + '^' + aStartTime + ' to ' + aStopTime);
     2434                        lstQualifierClick(self);
    22362435                      end;
    22372436                    lblQualifier.Caption := 'Date Range';
     
    22412440                else
    22422441                  begin
    2243                     GoRemote(uRemoteReportData, aID, aQualifier, aRPC, uHState, aHDR);
    2244                     if not (aRemote = '2' ) then
     2442                    GoRemote(uRemoteReportData, aID, aQualifier, aRPC, uHState, aHDR, aFHIE);
     2443                    if not (aRemote = '2' ) and (not(piece(uRemoteType, '^', 9) = '1')) then
    22452444                      begin
    22462445                        LoadReportText(uLocalReportData, aID, aQualifier, aRPC, uHState);
     
    22552454                sptHorzRight.Visible := false;
    22562455                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);
    22592459                if uLocalReportData.Count < 1 then
    22602460                  uReportInstruction := '<No Report Available>'
     
    22952495            with lvReports do
    22962496              begin
    2297                 RedrawSuspend(lvReports.Handle);
    22982497                Items.BeginUpdate;
    22992498                ViewStyle := vsReport;
     
    23082507                if lvReports.Columns.Count > 0 then lvReports.Columns[1].Width := 0;
    23092508                Items.EndUpdate;
    2310                 RedrawActivate(lvReports.Handle);
    23112509              end;
    23122510            if uLocalReportData.Count > 0
     
    23282526            with lvReports do
    23292527              begin
    2330                 RedrawSuspend(lvReports.Handle);
    23312528                Items.BeginUpdate;
    23322529                ViewStyle := vsReport;
     
    23412538                if lvReports.Columns.Count > 0 then lvReports.Columns[1].Width := 0;
    23422539                Items.EndUpdate;
    2343                 RedrawActivate(lvReports.Handle);
    23442540              end;
    23452541            if uLocalReportData.Count > 0
     
    23572553            splitter1.Visible := false;
    23582554            StatusText('Retrieving ' + tvReports.Selected.Text + '...');
    2359             GoRemote(uRemoteReportData, aID, aRptCode, aRPC, uHState, aHDR);
     2555            GoRemote(uRemoteReportData, aID, aRptCode, aRPC, uHState, aHDR, aFHIE);
    23602556            uReportInstruction := #13#10 + 'Retrieving data...';
    23612557            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);
    23642561            if uLocalReportData.Count < 1 then
    23652562              uReportInstruction := '<No Report Available>'
     
    23832580  SendMessage(tvReports.Handle, WM_HSCROLL, SB_THUMBTRACK, 0);
    23842581  RedrawActivate(tvReports.Handle);
     2582  RedrawActivate(memText.Handle);
    23852583  if WebBrowser1.Visible = true then
    23862584    begin
     
    23932591      memText.TabStop := true;
    23942592      memText.BringToFront;
    2395       RedrawActivate(memText.Handle);
    23962593    end
    23972594  else
     
    24062603      end;
    24072604    end;
     2605  lvReports.Columns.BeginUpdate;
     2606  lvReports.Columns.EndUpdate;
    24082607  Screen.Cursor := crDefault;
    24092608end;
     
    25772776  aBasket: TStringList;
    25782777  aWPFlag: Boolean;
     2778  x, HasImages: string;
    25792779
    25802780begin
     
    26352835                aMoreID := '#' + Item.SubItems[5];
    26362836                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;
    26442850              end;
    26452851            QT_NUTR:
     
    26502856                  memText.Lines.Add('===============================================================================');
    26512857                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;
    26552864              end;
    26562865            QT_HSWPCOMPONENT:
     
    26772886                                    aWPFlag := true;
    26782887                                    MemText.Lines.Add(TCellObject(RowObjects.ColumnList[j]).Name);
    2679                                     aBasket.Assign(TCellObject(RowObjects.ColumnList[j]).Data);
     2888                                    FastAssign(TCellObject(RowObjects.ColumnList[j]).Data, aBasket);
    26802889                                    for k := 0 to aBasket.Count - 1 do
    26812890                                      MemText.Lines.Add('  ' + aBasket[k]);
     
    26982907                          aWPFlag := true;
    26992908                          MemText.Lines.Add(TCellObject(RowObjects.ColumnList[i]).Name);
    2700                           aBasket.Assign(TCellObject(RowObjects.ColumnList[i]).Data);
     2909                          FastAssign(TCellObject(RowObjects.ColumnList[i]).Data, aBasket);
    27012910                          for j := 0 to aBasket.Count - 1 do
    27022911                            MemText.Lines.Add('  ' + aBasket[j]);
     
    27082917                  end;
    27092918                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;
    27202938                if uRptID = 'OR_PN:PROGRESS NOTES' then
    27212939                  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;
    27232946              end;
    27242947            QT_PROCEDURES:
     
    27292952                  memText.Lines.Add('===============================================================================');
    27302953                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;
    27342960              end;
    27352961            QT_SURGERY:
     
    27402966                  memText.Lines.Add('===============================================================================');
    27412967                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;
    27462975              end;
    27472976      end;
     
    29613190  FirstChild: TTreeNode;
    29623191  aID, aMoreID: string;
     3192  x, HasImages: string;
    29633193begin
    29643194  inherited;
     
    29943224            uLocalReportData.Clear;
    29953225            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;
    30043240          end
    30053241       else if PProcTreeObj(Node.Data)^.MemberOfSet = '1' then    //examset - individual reports
     
    30323268end;
    30333269
     3270procedure TfrmReports.chkMaxFreqClick(Sender: TObject);
     3271begin
     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);
     3283end;
     3284
    30343285procedure TfrmReports.btnChangeViewClick(Sender: TObject);
    30353286begin
     
    30593310    GraphForm.cboDateRange.ItemIndex := lstDateRange.ItemIndex;
    30603311    GraphForm.cboDateRangeChange(self);
    3061     lstDateRange.Items.Assign(GraphForm.cboDateRange.Items);
     3312    FastAssign(GraphForm.cboDateRange.Items, lstDateRange.Items);
    30623313    lstDateRange.ItemIndex := GraphForm.cboDateRange.ItemIndex;
    30633314    //Exit;
    30643315  end;
     3316
    30653317end;
    30663318
     
    30713323end;
    30723324
     3325initialization
     3326  SpecifyFormIsNotADialog(TfrmReports);
     3327
    30733328end.
Note: See TracChangeset for help on using the changeset viewer.