Ignore:
Timestamp:
Jul 6, 2008, 8:20:14 PM (16 years ago)
Author:
Kevin Toppenberg
Message:

Uploading from OR_30_258

File:
1 edited

Legend:

Unmodified
Added
Removed
  • cprs/branches/foia-cprs/CPRS-Chart/fLabs.pas

    r459 r460  
    77  fHSplit, StdCtrls, ExtCtrls, ORCtrls, ComCtrls, Grids, Buttons, fLabTest,
    88  fLabTests, fLabTestGroups, ORFn, TeeProcs, TeEngine, Chart, Series, Menus,
    9   uConst, ORDtTmRng, OleCtrls, SHDocVw, Variants;
     9  uConst, ORDtTmRng, OleCtrls, SHDocVw, Variants, StrUtils;
    1010
    1111type
     
    8383    TabControl1: TTabControl;
    8484    WebBrowser1: TWebBrowser;
     85    lblGraph: TLabel;
    8586    procedure FormCreate(Sender: TObject);
    8687    procedure DisplayHeading;
     
    133134    procedure Memo1KeyUp(Sender: TObject; var Key: Word;
    134135      Shift: TShiftState);
     136    procedure UpdateRemoteStatus(aSiteID, aStatus: string);
    135137  private
    136138    { Private declarations }
     
    159161    function FMToDateTime(FMDateTime: string): TDateTime;
    160162    procedure RequestPrint; override;
     163    procedure ExtlstReportsClick(Sender: TObject; Ext: boolean);
    161164
    162165end;
     
    169172  uLabLocalReportData: TStringList;  //Storage for Local report data
    170173  uLabRemoteReportData: TStringList; //Storage for Remote lab query
     174  uUpdateStat: boolean;             //flag turned on when remote status is being updated
    171175
    172176implementation
    173177
    174178uses uCore, rLabs, rCore, rCover, rOrders, fLabPrint, fFrame, fRptBox, Printers,
    175      clipbrd, rReports, activex, mshtml, uAccessibleStringGrid;
     179     clipbrd, rReports, rGraphs, activex, mshtml, uAccessibleStringGrid;
    176180
    177181const
     
    189193var
    190194  uFrozen: Boolean;
     195  uGraphingActivated: Boolean;
    191196  uRemoteCount: Integer;
    192197  uHTMLDoc: string;
     
    240245
    241246procedure TfrmLabs.FormCreate(Sender: TObject);
     247var
     248  aList: TStrings;
    242249begin
    243250  inherited;
     
    246253  memLab.Color := ReadOnlyColor;
    247254  uFrozen := False;
     255  aList := TStringList.Create;
     256  FastAssign(rpcGetGraphSettings, aList);
     257  uGraphingActivated := aList.Count > 0;
     258  aList.Free;
    248259  uRemoteCount := 0;
    249260  tmpGrid := TStringList.Create;
     
    258269  SerTest.GetHorizAxis.Increment := DateTimeStep[dtOneMinute];
    259270  TAccessibleStringGrid.WrapControl(grdLab);
     271end;
     272
     273procedure TfrmLabs.UpdateRemoteStatus(aSiteID, aStatus: string);
     274var
     275  j: integer;
     276  s: string;
     277  c: boolean;
     278begin
     279  if uUpdateStat = true then exit;                 //uUpdateStat also looked at in fFrame
     280  uUpdateStat := true;
     281  for j := 0 to frmFrame.lstCIRNLocations.Items.Count - 1 do
     282    begin
     283      s := frmFrame.lstCIRNLocations.Items[j];
     284      c := frmFrame.lstCIRNLocations.checked[j];
     285      if piece(s, '^', 1) = aSiteID then
     286        begin
     287          frmFrame.lstCIRNLocations.Items[j] := pieces(s, '^', 1, 3) + '^' + aStatus;
     288          frmFrame.lstCIRNLocations.checked[j] := c;
     289        end;
     290    end;
     291  uUpdateStat := false;
    260292end;
    261293
     
    296328  TabControl1.Tabs.Clear;
    297329  TabControl1.Visible := false;
     330  tmpGrid.Clear;
    298331  with grdLab do
    299332  begin
     
    374407
    375408procedure TfrmLabs.lstReportsClick(Sender: TObject);
     409begin
     410  ExtlstReportsClick(Sender, false);
     411end;
     412
     413procedure TfrmLabs.ExtlstReportsClick(Sender: TObject; Ext: boolean);
    376414var
    377415  i,iCat: integer;
     
    436474         lblSpecimen.Caption := '';
    437475       end;
    438        SelectTests(Font.Size);
     476       if not Ext then SelectTests(Font.Size);
    439477       if lstTests.Items.Count > 0 then
    440478       begin
     
    445483         RedrawActivate(memLab.Handle);
    446484         lstDatesClick(self);
    447          cmdOtherTests.SetFocus;
     485         if not Ext then cmdOtherTests.SetFocus;
    448486         cmdOtherTests.Default := true;
    449487       end
    450        else uPrevReportIndex := lstReports.ItemIndex;
     488       else lstReports.ItemIndex := uPrevReportIndex;
    451489     end;
    452490  5: begin               // Worksheet
     
    456494         lblSpecimen.Caption := '';
    457495       end;
    458        SelectTestGroups(Font.Size);
     496       if not Ext then SelectTestGroups(Font.Size);
    459497       if lstTests.Items.Count > 0 then
    460498       begin
     
    472510         //chkZoomClick(self);
    473511         lstDatesClick(self);
    474          cmdOtherTests.SetFocus;
     512         if not Ext then cmdOtherTests.SetFocus;
    475513         cmdOtherTests.Default := true;
    476514       end
    477        else uPrevReportIndex := lstReports.ItemIndex;
     515       else lstReports.ItemIndex := uPrevReportIndex;
    478516     end;
    479517  6: begin               // Graph
    480        if uPrevReportIndex <> lstReports.ItemIndex then
     518        // do if graphing is activiated
     519       if uGraphingActivated then
    481520       begin
    482          lblSingleTest.Caption := '';
    483          lblSpecimen.Caption := '';
    484        end;
    485        SelectTest(Font.Size);
    486        if (length(lblSingleTest.Caption) > 2) and (length(lblSpecimen.Caption) > 2) then
     521         memLab.Clear;
     522         chkBrowser;
     523         FormResize(self);
     524         memLab.Align := alClient;
     525         CommonComponentVisible(false,false,false,false,false,false,false,false,false);
     526         RedrawActivate(memLab.Handle);
     527         StatusText('');
     528         memLab.Lines.Insert(0, ' ');
     529         memLab.Lines.Insert(1, 'Graphing activated');
     530         memLab.SelStart := 0;
     531         frmFrame.mnuToolsGraphingClick(self);  // make it just lab tests ??
     532         //lstReports.ItemIndex := uPrevReportIndex;
     533       end
     534       else  // otherwise, do lab graph
    487535       begin
    488          CommonComponentVisible(false,false,true,true,true,true,false,false,true);
    489          pnlChart.Visible := true;
    490          chtChart.Visible := true;
    491          pnlButtons.Visible := false;
    492          pnlWorksheet.Visible := false;
    493          pnlGraph.Visible := true;
    494          memLab.Height := pnlRight.Height div 5;
    495          memLab.Clear;
    496          if uReportType = 'H' then
     536         if uPrevReportIndex <> lstReports.ItemIndex then
     537         begin
     538           lblSingleTest.Caption := '';
     539           lblSpecimen.Caption := '';
     540         end;
     541         if not Ext then SelectTest(Font.Size);
     542         if (length(lblSingleTest.Caption) > 2) and (length(lblSpecimen.Caption) > 2) then
     543         begin
     544           CommonComponentVisible(false,false,true,true,true,true,false,false,true);
     545           pnlChart.Visible := true;
     546           chtChart.Visible := true;
     547           pnlButtons.Visible := false;
     548           pnlWorksheet.Visible := false;
     549           pnlGraph.Visible := true;
     550           memLab.Height := pnlRight.Height div 5;
     551           memLab.Clear;
     552           if uReportType = 'H' then
    497553           begin
    498554             WebBrowser1.Visible := true;
     
    502558             memLab.Visible := false;
    503559           end
     560           else
     561           begin
     562             WebBrowser1.Visible := false;
     563             WebBrowser1.SendToBack;
     564             memLab.Visible := true;
     565             memLab.BringToFront;
     566           end;
     567           lstTestGraph.Items.Clear;
     568           lstTestGraph.Width := 0;
     569           FormResize(self);
     570           RedrawActivate(memLab.Handle);
     571           lblFooter.Caption := '';
     572           chkGraphZoom.Checked := false;
     573           chkGraphZoomClick(self);
     574           chkGraph3DClick(self);
     575           chkGraphValuesClick(self);
     576           lstDatesClick(self);
     577           if not Ext then cmdOtherTests.SetFocus;
     578           cmdOtherTests.Default := true;
     579         end
    504580         else
    505           begin
    506             WebBrowser1.Visible := false;
    507             WebBrowser1.SendToBack;
    508             memLab.Visible := true;
    509             memLab.BringToFront;
    510           end;
    511          lstTestGraph.Items.Clear;
    512          lstTestGraph.Width := 0;
    513          FormResize(self);
    514          RedrawActivate(memLab.Handle);
    515          lblFooter.Caption := '';
    516          chkGraphZoom.Checked := false;
    517          chkGraphZoomClick(self);
    518          chkGraph3DClick(self);
    519          chkGraphValuesClick(self);
    520          lstDatesClick(self);
    521          cmdOtherTests.SetFocus;
    522          cmdOtherTests.Default := true;
    523        end
    524        else uPrevReportIndex := lstReports.ItemIndex;
    525      end;
    526   else
     581           lstReports.ItemIndex := uPrevReportIndex;
     582       end;
     583     end
     584    else // case
    527585    begin
    528586      //added to deal with other reports from file 101.24
     
    734792     end;
    735793  6: begin            // Graph
    736        chtChart.BottomAxis.Automatic := true;
    737        chkGraphZoom.Checked := false;
    738        chkGraphZoomClick(self);
    739        memLab.Clear;
    740        uLabLocalReportData.Clear;
    741        uLabRemoteReportData.Clear;
    742        tmpList := TStringList.Create;
    743        try
    744          StatusText('Retrieving data for graph...');
    745          tmpList.Assign(GetChart(Patient.DFN, date1, date2,
    746            Piece(lblSpecimen.Caption, '^', 1),
    747            Piece(lblSingleTest.Caption, '^', 1)));
    748          if tmpList.Count > 1 then
    749          begin
    750            chtChart.Visible := true;
    751            GraphChart(lblSingleTest.Caption, tmpList);
    752            chtChart.ZoomPercent(ZOOM_PERCENT);
    753            for i := strtoint(Piece(tmpList[0], '^', 1)) + 1 to tmpList.Count - 1
    754              do memLab.Lines.Add(tmpList[i]);
    755            if memLab.Lines.Count < 2 then
    756              memLab.Lines.Add('<No comments on specimens.>');
    757            memLab.SelStart := 0;
    758          end
    759          else
    760          begin
    761            if Piece(lblSpecimen.Caption, '^', 1) = '0' then
    762              pnlChart.Caption := '<No results can be graphed for ' +
    763                Piece(lblSingleTest.Caption, '^', 2) + ' in this date range.>'
     794       if not uGraphingActivated then
     795       begin
     796         chtChart.BottomAxis.Automatic := true;
     797         chkGraphZoom.Checked := false;
     798         chkGraphZoomClick(self);
     799         memLab.Clear;
     800         uLabLocalReportData.Clear;
     801         uLabRemoteReportData.Clear;
     802         tmpList := TStringList.Create;
     803         try
     804           StatusText('Retrieving data for graph...');
     805           tmpList.Assign(GetChart(Patient.DFN, date1, date2,
     806             Piece(lblSpecimen.Caption, '^', 1),
     807             Piece(lblSingleTest.Caption, '^', 1)));
     808           if tmpList.Count > 1 then
     809           begin
     810             chtChart.Visible := true;
     811             GraphChart(lblSingleTest.Caption, tmpList);
     812             chtChart.ZoomPercent(ZOOM_PERCENT);
     813             for i := strtoint(Piece(tmpList[0], '^', 1)) + 1 to tmpList.Count - 1
     814               do memLab.Lines.Add(tmpList[i]);
     815             if memLab.Lines.Count < 2 then
     816               memLab.Lines.Add('<No comments on specimens.>');
     817             memLab.SelStart := 0;
     818             lblGraph.Visible := false;
     819           end
    764820           else
    765              pnlChart.Caption := '<No results can be graphed for ' +
    766                Piece(lblSingleTest.Caption, '^', 2)
    767                + ' (' + Piece(lblSpecimen.Caption, '^', 2) +
    768                  ') in this date range.>';
    769            chtChart.Visible := false;
     821           begin
     822             lblGraph.Left := chtChart.Left + ((chtChart.Width - lblGraph.Width) div 2);
     823             lblGraph.Top := 2;
     824             lblGraph.Visible := true;
     825             if Piece(lblSpecimen.Caption, '^', 1) = '0' then
     826               pnlChart.Caption := '<No results can be graphed for ' +
     827                 Piece(lblSingleTest.Caption, '^', 2) + ' in this date range.> '
     828                 + 'Results may be available, but cannot be graphed. Please try an alternate view.'
     829             else
     830               pnlChart.Caption := '<No results can be graphed for ' +
     831                 Piece(lblSingleTest.Caption, '^', 2)
     832                 + ' (' + Piece(lblSpecimen.Caption, '^', 2) +
     833                   ') in this date range.> '
     834                 + 'Results may be available, but cannot be graphed. Please try an alternate view.';
     835             chtChart.Visible := false;
     836           end;
     837         finally
     838           tmpList.Free;
    770839         end;
    771        finally
    772          tmpList.Free;
    773840       end;
    774841     end;
     
    12851352  if valuecount = 0 then
    12861353  begin
     1354    lblGraph.Left := chtChart.Left + ((chtChart.Width - lblGraph.Width) div 2);
     1355    lblGraph.Top := 2;
     1356    lblGraph.Visible := true;
    12871357    if length(Piece(specimen, '^', 2)) > 0 then
    1288       pnlChart.Caption := '<No results can be graphed for ' + serTest.Title + ' in this date range.>'
     1358      pnlChart.Caption := '<No results can be graphed for ' + serTest.Title + ' in this date range.> '
    12891359    else
    12901360      pnlChart.Caption := '<No results can be graphed for ' + Piece(test, '^', 2) + ' in this date range.>';
    12911361    chtChart.Visible := false;
    1292   end;
     1362  end
     1363  else
     1364    lblGraph.Visible := false;
    12931365  if not chkZoom.Checked then
    12941366  begin
     
    13501422       memLab.Align := alBottom;
    13511423       grdLab.Align := alClient;
     1424       if tmpGrid.Count > 0 then HGrid(tmpGrid);
    13521425       if (grdLab.VisibleRowCount + 1) < grdLab.RowCount then
    13531426         grdLab.ColWidths[4] := grdLab.ColWidths[4] - 18;
     
    13871460     end;
    13881461  6: begin               // Graph
    1389        memLab.Height := pnlLeft.Height div 4;
    1390        memLab.Align := alBottom;
    1391        pnlChart.Top := pnlHeader.Height;
    1392        pnlChart.Align := alClient;
    1393        memLab.Height := pnlLeft.Height div 4;
    1394        memLab.Align := alBottom;
    1395        memLab.Repaint;
     1462       if not uGraphingActivated then
     1463       begin
     1464         memLab.Height := pnlLeft.Height div 4;
     1465         memLab.Align := alBottom;
     1466         pnlChart.Top := pnlHeader.Height;
     1467         pnlChart.Align := alClient;
     1468         memLab.Height := pnlLeft.Height div 4;
     1469         memLab.Align := alBottom;
     1470         memLab.Repaint;
     1471       end;
    13961472     end;
    13971473  7: begin               // Anatomic Path
     
    19852061                    Timer1.Enabled := False;
    19862062                    TRemoteSite(Items[i]).LabQueryStatus := '-1^Timed out';
     2063                    UpdateRemoteStatus(TRemoteSite(Items[i]).SiteID, 'Timed out');
    19872064                    StatusText('');
    19882065                    TabControl1.OnChange(nil);
     
    20342111        begin
    20352112          TRemoteSite(Items[i]).LabClear;
     2113          if (LeftStr(TRemoteSite(Items[i]).SiteID, 5) = '200HD') then
     2114          begin
     2115            TRemoteSite(Items[i]).LabQueryStatus := '1^Not Included';
     2116            UpdateRemoteStatus(TRemoteSite(Items[i]).SiteID, 'NOT INCLUDED');
     2117            TabControl1.OnChange(nil);
     2118            continue;
     2119          end;
    20362120          TRemoteSite(Items[i]).CurrentLabQuery := 'Lab' + Patient.DFN + ';' + Patient.ICN +
    20372121            '^' + IntToStr(AItem) + '^' + IntToStr(AReportID) + '^^' + ARpc + '^' + AHSType +
     
    20552139                TRemoteSite(Items[i]).LabRemoteHandle := '';
    20562140                TRemoteSite(Items[i]).LabQueryStatus := '1^Done';
     2141                UpdateRemoteStatus(TRemoteSite(Items[i]).SiteID, 'Done');
    20572142                TabControl1.OnChange(nil);
    20582143              end
     
    20842169              end;
    20852170              if Dest[0] = '' then
    2086                 TRemoteSite(Items[i]).LabQueryStatus := '-1^Communication error'
     2171                begin
     2172                  TRemoteSite(Items[i]).LabQueryStatus := '-1^Communication error';
     2173                  UpdateRemoteStatus(TRemoteSite(Items[i]).SiteID, 'Communication error');
     2174                end
    20872175              else
    20882176                begin
    20892177                  TRemoteSite(Items[i]).LabRemoteHandle := Dest[0];
    20902178                  TRemoteSite(Items[i]).LabQueryStatus := '0^initialization...';
     2179                  UpdateRemoteStatus(TRemoteSite(Items[i]).SiteID, 'Initialization');
    20912180                  Timer1.Enabled := True;
    20922181                  StatusText('Retrieving reports from '
Note: See TracChangeset for help on using the changeset viewer.