⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 qryprn.pas

📁 某大型医院护士站
💻 PAS
📖 第 1 页 / 共 2 页
字号:
unit QryPrn;

interface

uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  ComCtrls, StdCtrls, ExtCtrls, Grids, DBGrids, Wwdbigrd, Wwdbgrid, Db,
  DBTables, Buttons, quickrpt, Wwquery, wwstorep, Menus;

type
  TfrmQryPrn = class(TForm)
    Panel1: TPanel;
    rgBedRange: TRadioGroup;
    rgOrderType: TRadioGroup;
    gbUseage: TGroupBox;
    gdCurBeds: TwwDBGrid;
    btnInj: TBitBtn;
    btnMeal: TBitBtn;
    btnTest: TBitBtn;
    btnCheck: TBitBtn;
    btnCare: TBitBtn;
    btnCure: TBitBtn;
    btnOral: TBitBtn;
    GroupBox1: TGroupBox;
    btnInjPreview: TBitBtn;
    btnInjOther: TBitBtn;
    rgpatitype: TRadioGroup;
    Label1: TLabel;
    pbar2: TProgressBar;
    Label2: TLabel;
    btnPatDayfee: TButton;
    btnPatDayfeeDtl: TButton;
    dtp_FeeDate: TDateTimePicker;
    btnWardSumMed: TBitBtn;
    Bevel1: TBevel;
    btnBobyProperty: TBitBtn;
    btnIvdrip: TBitBtn;
    IvdripPopMenu: TPopupMenu;
    N1: TMenuItem;
    N2: TMenuItem;
    iv1: TMenuItem;
    iv2: TMenuItem;
    iv3: TMenuItem;
    iv4: TMenuItem;
    pmPrnSumMed: TPopupMenu;
    mmSendOP: TMenuItem;
    mmSendNPO: TMenuItem;
    N5: TMenuItem;
    mmAtoncePO: TMenuItem;
    mmAtonceNPO: TMenuItem;
    N8: TMenuItem;
    mmChineseMed: TMenuItem;
    pmPatDayfeeDtl: TPopupMenu;
    pmPntblDate: TMenuItem;
    pmCostDate: TMenuItem;
    mmSendDtlPO: TMenuItem;
    mmSendDtlNPO: TMenuItem;
    N6: TMenuItem;
    mmAtonceDtlPO: TMenuItem;
    mmAtonceDtlNPO: TMenuItem;
    N4: TMenuItem;
    procedure FormShow(Sender: TObject);
    procedure btnInjPreviewClick(Sender: TObject);
    procedure btnOralClick(Sender: TObject);
    procedure rgBedRangeClick(Sender: TObject);
    procedure btnInjClick(Sender: TObject);
    procedure btnMealClick(Sender: TObject);
    procedure btnTestClick(Sender: TObject);
    procedure btnCheckClick(Sender: TObject);
    procedure btnCareClick(Sender: TObject);
    procedure btnCureClick(Sender: TObject);
    procedure btnInjOtherClick(Sender: TObject);
    procedure btnPatDayfeeDtlClick(Sender: TObject);
    procedure btnPatDayfeeClick(Sender: TObject);
    procedure FormClose(Sender: TObject; var Action: TCloseAction);
    procedure btnBobyPropertyClick(Sender: TObject);
    procedure btnIvdripClick(Sender: TObject);
    procedure iv1Click(Sender: TObject);
    procedure iv2Click(Sender: TObject);
    procedure iv3Click(Sender: TObject);
    procedure iv4Click(Sender: TObject);
    procedure btnWardSumMedClick(Sender: TObject);
    procedure mmSendOPClick(Sender: TObject);
    procedure mmSendNPOClick(Sender: TObject);
    procedure mmAtoncePOClick(Sender: TObject);
    procedure mmAtonceNPOClick(Sender: TObject);
    procedure mmChineseMedClick(Sender: TObject);
    procedure pmPntblDateClick(Sender: TObject);
    procedure pmCostDateClick(Sender: TObject);
    procedure mmSendDtlPOClick(Sender: TObject);
    procedure mmSendDtlNPOClick(Sender: TObject);
    procedure mmAtonceDtlPOClick(Sender: TObject);
    procedure mmAtonceDtlNPOClick(Sender: TObject);
  private
    { Private declarations }
    procedure PrintProcBill( UsageTp : Integer);
    procedure InjectionLabelPrn(injtype: smallint);
    procedure PrnIvdripCard(IsToday ,Isincludeiv :smallint);
    procedure PrnWardSumBill(PrnType ,Excuplace :Smallint ;MsgType :string);
    procedure PrnWardDtlBill(PrnType ,Excuplace :Smallint ;MsgType :string);
    procedure PrnPatDayfeeDtl;
  public
     { Public declarations }
  end;

var
  frmQryPrn: TfrmQryPrn;

implementation
{$R *.DFM}

uses Datamodule, ProcBill1 , jilu ,PRNDataModule, HisUtilitis, LabelPrn,
     PrnSumBill, patdayfeedtl ,DayFeeView, WardDtlBill;

procedure TfrmQryprn.PrintProcBill( UsageTp : Integer);
var
  I : Integer;
begin
  PRN_DM.clr_OrderRep.ExecSQL;
  pbar2.Max := gdcurbeds.SelectedList.Count;
  label2.Visible := true;
  if gdCurBeds.SelectedList.Count = 0 then
     gdCurbeds.SelectRecord;   // Select current row;
try
  for I := 0 to gdCurbeds.SelectedList.Count - 1 do
  begin
    PRN_DM.qryCurrBeds.GotoBookmark(gdCurBeds.SelectedList.Items[i]);

    DM.ProjHisadt.StartTransaction;
    PRN_DM.spProcBill.Close;
    PRN_DM.spProcBill.Params[0].AsInteger  := PRN_DM.qryCurrBedsInid.AsInteger;
    PRN_DM.spProcBill.Params[1].AsSmallInt := rgOrderType.ItemIndex;
    PRN_DM.spProcBill.Params[2].AsSmallInt := UsageTp;
    PRN_DM.spProcBill.Params[3].AsSmallInt := rgpatitype.ItemIndex;
    PRN_DM.spProcBill.Open;
    DM.ProjHisadt.Commit;
    PRN_DM.tblOrderRep.Close;
    PRN_DM.MoveRep.Execute;
    PRN_DM.spProcBill.Close;
    pbar2.Position := i + 1;
    label2.Caption := format('%3.0f',[((i+1)/gdCurbeds.SelectedList.Count )*100])+'%';
    label2.Refresh;
  end;

  pbar2.Position := 0;
  label2.Visible := false;

  frmProcBill1 := TfrmProcBill1.Create(Self);

  with frmProcBill1 do
  begin
    Bed :='';
    Name :='';
    UsageName :='';
    OrderKind := -1;
    Kindid := -1;
    RowCount := 3;   // Zheng modified

    CurWardName.Caption := '['+DM.currWardName+']';
     //Calculate UsageTpName
    if rgpatitype.ItemIndex = 0 then
    begin
    Case UsageTp of
      0 : lbUsageTpName.Caption := '口服';
      1 : lbUsageTpName.Caption := '注射';
      2 : lbUsageTpName.Caption := '饮食';
      3 : lbUsageTpName.Caption := '治疗';
      4 : lbUsageTpName.Caption := '护理';
      5 : lbUsageTpName.Caption := '检验';
      6 : lbUsageTpName.Caption := '检查';
      7 : lbUsageTpName.Caption := '测体征';
    end;
    end
    else
    begin
     Case UsageTp of
      0 : lbUsageTpName.Caption := '小儿口服';
      1 : lbUsageTpName.Caption := '小儿注射';
      2 : lbUsageTpName.Caption := '小儿饮食';
      3 : lbUsageTpName.Caption := '小儿治疗';
      4 : lbUsageTpName.Caption := '小儿护理';
      5 : lbUsageTpName.Caption := '小儿检验';
      6 : lbUsageTpName.Caption := '小儿检查';
      7 : lbUsageTpName.Caption := '小儿测体征';
    end;
    end;
    if HisIsYesQuery('要打印执行时间吗?') then
       lbexetime.enabled := true
    else
       lbexetime.enabled := false;

    qryProcBill.Close;
    qryProcBill.Open;
    QRLabel2.Caption := DM.SUserName + '医嘱执行单';
    try
      Preview;
    finally
      free;
    end;
  end; //end with

  rgBedRange.OnClick(nil);
except
  if DM.ProjHisadt.InTransaction then
     DM.ProjHisadt.Rollback;
end;
end;

procedure TfrmQryPrn.FormShow(Sender: TObject);
begin
  with Prn_DM do
  begin
    qryCurrBeds.Close;
    qryCurrBeds.Params[0].AsString := DM.CurrWardID ;
    qryCurrBeds.Open;   //Pruduce Current Used Beds
  // Move to current beds number
    qryCurrBeds.Locate('Bed',DM.CurrBedNo,[]);
  end;

  dtp_FeeDate.Date := Date - 1
end;

procedure TfrmQryPrn.PrnIvdripCard(IsToday ,IsIncludeiv :smallint);
var
  i : Integer;
  h : Integer;
  Pbed : String;
  Ppnm : String;
  Pusageid : String;
  Pusagename : String;
  Porderkind : Smallint;
  Pkindid : Smallint;
  Pitemname : String;
  Pdosage : real;
  Pdosunit : String;
  Ptmname : String;
  Prepnb : Integer;
  Pcounts : Integer;
  Ptmnum  : Smallint;
begin
  PRN_DM.Clr_InjLabel.ExecSQL;

  if gdCurBeds.SelectedList.Count = 0 then
    gdCurbeds.SelectRecord;
  pbar2.Max := gdCurbeds.SelectedList.Count ;
  label2.Visible := true;

  for I := 0 to gdCurbeds.SelectedList.Count - 1 do
  begin
    PRN_DM.qryCurrBeds.GotoBookmark(gdCurBeds.SelectedList.Items[i]);

    if DM.ProjHisadt.InTransaction then
       DM.ProjHisadt.Commit;

    DM.ProjHisadt.StartTransaction;
    with PRN_DM.spInjLabel do
    begin
      Close;
      Params[0].AsInteger  := PRN_DM.qryCurrBedsInid.AsInteger;
      Params[1].AsSmallInt := rgOrderType.ItemIndex;
      Params[2].AsSmallInt := 0;
      Params[3].AsSmallInt := IsIncludeiv;
      Params[4].assmallint := rgpatitype.ItemIndex;
      Open;
    end;
    DM.ProjHisadt.Commit;

    PRN_DM.InjMove.Execute;
    PRN_DM.spInjLabel.Close;
    PRN_DM.tblinjLabel.Close;

    pbar2.Position := i + 1;
    label2.Caption := format('%3.0f',[((i+1)/gdCurbeds.SelectedList.Count )*100])+'%';
    label2.Refresh;
  end;//end for

  pbar2.Position := 0;
  label2.Visible:= false;
  PRN_DM.tblinjlabel.open;
  PRN_DM.tblInjLabel.Last;

  while not PRN_DM.tblInjLabel.BOF do
  begin
    for h := 1 to PRN_DM.tblInjLabelTmNum.Value - 1 do
    begin
      Pbed       := PRN_DM.tblinjlabelbed.AsString;
      Ppnm       := PRN_DM.tblinjlabelpnm.AsString;
      Pusageid   := PRN_DM.tblinjlabelusageid.AsString;
      Pusagename := PRN_DM.tblinjlabelusagename.AsString;
      Porderkind := PRN_DM.tblinjlabelorderkind.Value;
      Pkindid    := PRN_DM.tblinjlabelkindid.Value;
      Pitemname  := PRN_DM.tblinjlabelitemname.AsString;
      Pdosage    := PRN_DM.tblinjlabeldosage.AsFloat;
      Pdosunit   := PRN_DM.tblinjlabeldosunit.AsString;
      Ptmname    := PRN_DM.tblinjlabeltmname.AsString;
      Prepnb     := h + 1;
      Pcounts    := PRN_DM.tblinjlabelcounts.AsInteger;
      Ptmnum     := PRN_DM.tblINJLABELTmnum.Value;

      PRN_DM.tblInjLabel.Insert;
      PRN_DM.tblInjLabel.FieldByName('bed').asString := Pbed;
      PRN_DM.tblInjLabel.FieldByName('pnm').asString := Ppnm;
      PRN_DM.tblInjLabel.FieldByName('usageid').asString := Pusageid;
      PRN_DM.tblInjLabel.FieldByName('usagename').asString := Pusagename;
      PRN_DM.tblInjLabel.FieldByName('orderkind').Value := Porderkind;
      PRN_DM.tblInjLabel.FieldByName('kindid').Value := Pkindid;
      PRN_DM.tblInjLabel.FieldByName('itemname').asString := Pitemname;
      PRN_DM.tblInjLabel.FieldByName('dosage').asFloat := Pdosage;
      PRN_DM.tblInjLabel.FieldByName('dosunit').asString := Pdosunit;
      PRN_DM.tblInjLabel.FieldByName('tmname').asString := Ptmname;
      PRN_DM.tblInjLabel.FieldByName('repnb').asinteger := Prepnb;
      PRN_DM.tblInjLabel.FieldByName('counts').asInteger := Pcounts;
      PRN_DM.tblInjLabel.FieldByName('tmnum').Value := ptmnum;
      PRN_DM.tblinjLabel.post;
    end; //end for

    PRN_DM.tblInjLabel.Prior;
  end;   //end while

  rgBedRange.OnClick(nil);

  try
    frmqrjilu := Tfrmqrjilu.Create(Self);
    with frmqrjilu do
    begin

      qryjilu.Close;
      qryjilu.Open;
      qryjilu.First;

      if IsToday = 1 then
         prtdate := DateToStr(Date)
      else
         prtdate := DateToStr(Date + 1);

      prtname             := qryjilupnm.asString;
      lbwardname.Caption  := DM.currWardName;
      lbname.Caption      := qryjiluPNM.AsString;
      lbbed.Caption       := qryjiluBED.AsString;
      lbdate.caption      := prtdate;
      lbusagename.Caption := qryjiluUSAGENAME.AsString;
      lbTMName.Caption     := qryjiluTMNAME.AsString;
      num := 0;

      if rgpatitype.ItemIndex = 0 then
      begin
        QRLabel2.Caption := '输液记录表';
        QRLabel5.Caption := '输液记录表';
        labelb.caption:= '';
      end else
      begin
        QRLabel2.Caption := '小儿输液记录表';
        QRLabel5.Caption := '小儿输液记录表';
        labelb.caption := '(婴)';
      end;

      QRLabel1.Caption := DM.SUserName;
      QRLabel3.Caption := DM.SUserName;

      preview;
    end; //end with
  finally
    frmqrjilu.Free;
  end;
end;


Procedure TfrmQryprn.InjectionLabelPrn(injtype: smallint);
var
  I ,J: Integer;
  h : Integer;
  Pbed : String;
  Ppnm : String;
  Pusageid : String;
  Pusagename : String;
  Porderkind : Smallint;
  Pkindid : Smallint;
  Pitemname : String;
  Pdosage : real;
  Pdosunit : String;
  Ptmname : String;
  Prepnb : Integer;
  Pcounts : Integer;
  Ptmnum  : Smallint;
begin
  PRN_DM.Clr_InjLabel.ExecSQL;
  pbar2.Max := gdcurbeds.SelectedList.Count;
  label2.Visible := true;
  if gdCurBeds.SelectedList.Count = 0 then
     gdCurbeds.SelectRecord;

try

  J := gdCurbeds.SelectedList.Count;
  for I := 0 to J - 1 do
  begin
    PRN_DM.qryCurrBeds.GotoBookmark(gdCurBeds.SelectedList.Items[i]);

    DM.ProjHisadt.StartTransaction;
    with PRN_DM.spInjLabel do
    begin
      Close;
      Params[0].AsInteger  := PRN_DM.qryCurrBedsInid.AsInteger;
      Params[1].AsSmallInt := rgOrderType.ItemIndex;
      Params[2].AsSmallInt := injtype;
      Params[3].assmallint := 0;
      Params[4].assmallint := rgpatitype.ItemIndex;
      Open;
    end;
    DM.ProjHisadt.Commit;

//Transfer Romoted Data to Local
    PRN_DM.tblinjLabel.Close;
    PRN_DM.InjMove.Execute;
    PRN_DM.spInjLabel.Close;

    pbar2.Position := i + 1;
    label2.Caption := format('%3.0f',[((i + 1) / J )*100])+'%';
    label2.Refresh;
  end;

  pbar2.Position := 0;
  label2.Visible := false;

  PRN_DM.tblinjlabel.open;
  PRN_DM.tblInjLabel.Last;

  while not PRN_DM.tblInjLabel.BOF do
  begin
    for h := 1 to PRN_DM.tblInjLabelTmNum.Value - 1 do
    begin
      Pbed := PRN_DM.tblinjlabelbed.AsString;
      Ppnm := PRN_DM.tblinjlabelpnm.AsString;
      Pusageid := PRN_DM.tblinjlabelusageid.AsString;
      Pusagename := PRN_DM.tblinjlabelusagename.AsString;
      Porderkind := PRN_DM.tblinjlabelorderkind.Value;
      Pkindid := PRN_DM.tblinjlabelkindid.Value;
      Pitemname := PRN_DM.tblinjlabelitemname.AsString;
      Pdosage := PRN_DM.tblinjlabeldosage.AsFloat;
      Pdosunit := PRN_DM.tblinjlabeldosunit.AsString;
      Ptmname := PRN_DM.tblinjlabeltmname.AsString;
      Prepnb := h + 1;
      Pcounts := PRN_DM.tblinjlabelcounts.AsInteger;
      Ptmnum  := PRN_DM.tblInjLabelTmnum.Value;
      PRN_DM.tblInjLabel.Insert;
      PRN_DM.tblInjLabel.FieldByName('bed').asString := Pbed;
      PRN_DM.tblInjLabel.FieldByName('pnm').asString := Ppnm;
      PRN_DM.tblInjLabel.FieldByName('usageid').asString := Pusageid;
      PRN_DM.tblInjLabel.FieldByName('usagename').asString := Pusagename;
      PRN_DM.tblInjLabel.FieldByName('orderkind').Value := Porderkind;
      PRN_DM.tblInjLabel.FieldByName('kindid').Value := Pkindid;
      PRN_DM.tblInjLabel.FieldByName('itemname').asString := Pitemname;
      PRN_DM.tblInjLabel.FieldByName('dosage').asFloat := Pdosage;
      PRN_DM.tblInjLabel.FieldByName('dosunit').asString := Pdosunit;
      PRN_DM.tblInjLabel.FieldByName('tmname').asString := Ptmname;
      PRN_DM.tblInjLabel.FieldByName('repnb').asinteger := Prepnb;
      PRN_DM.tblInjLabel.FieldByName('counts').asInteger := Pcounts;
      PRN_DM.tblInjLabel.FieldByName('tmnum').Value := ptmnum;
      PRN_DM.tblinjLabel.post;
    end; //end for

  PRN_DM.tblInjLabel.Prior;
  end; //end while

  frmLabelPrn := TfrmLabelPrn.Create(Self);

  with frmLabelPrn do
  begin
    RowCount := 0;
    PageRows := 47;
    QRLabel1.Caption := DM.SUserName + '注射标签' ;
    CurWard.Caption := '['+DM.currWardName+']';

    if injtype = 0 then
       begin
       if rgpatitype.ItemIndex = 0 then
       lblTypeName.Caption := '(滴注)'
        else
       lblTypeName.Caption := '小儿(滴注)';
       end
    else
       begin
       if rgpatitype.ItemIndex = 0 then
       lblTypeName.Caption := '(肌注/静注)'
       else
       lblTypeName.Caption := '(肌注/静注)';
     end;
    if rgpatitype.ItemIndex = 0 then
       frmlabelprn.labelb.Caption := ''
       else
       frmlabelprn.labelb.Caption := '婴';
    qryInjLabel.Close;
    qryInjLabel.Open;

    QuickRep1.Preview;
    free;
  end;

  rgBedRange.OnClick(nil);
except
  if DM.ProjHisadt.InTransaction then
     DM.ProjHisadt.Rollback;
end;
end;

procedure TfrmQryPrn.PrnWardSumBill(PrnType ,Excuplace:Smallint ;
                                    MsgType :String);
begin
  with PRN_DM do
  begin
     qryPrnSumData.Close;
     qryPrnSumData.SQL.Clear;
     qryPrnSumData.SQL.ADD('SELECT WARDID ,DeptNum ,ItemID ,TotalQty , ');
     qryPrnSumData.SQL.ADD('SendQty ,AtonceQty ,ItemType ,Excuplace ');
     qryPrnSumData.SQL.ADD('From MsgDetail ');
     qryPrnSumData.SQL.ADD('WHERE Wardid  = :i_wardid ');
     qryPrnSumData.SQL.ADD('AND Excuplace = :i_excuplace');

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -