📄 qryprn.pas
字号:
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 + -