📄 orderitem.pas
字号:
DM.tblExcutepos.Open;
DM.FStartTime := now;
with frmOrderItem do
begin
lookupBedNo.Text := DM.qryPatientBedNoBed.AsString;
lookupSubName.Text := DM.tblPatientSubPatDesc.AsString;
lbPrepay.Caption := strPrepay;
lbCost.Caption := strCost;
gridExOrderItem.ReadOnly := (DM.SCanModiExorder <> 1);
OrderStatusBar.Panels[0].Text := DM.currOperatorName;
OrderStatusBar.Panels[1].Text := DM.currWardName;
Screen.Cursor := crDefault;
Caption := '当前医嘱类型——有效长嘱';
ShowModal;
end;
end; //end procedure OpenOrder
procedure TfrmOrderItem.ChangeOrderItemFilter( FilterNo : Integer );
begin
if DM.OrderItem.State in [dsInsert,dsEdit] then
DM.OrderItem.Cancel;
{0 有效长嘱, 1 全部长嘱, 2 有效临嘱, 3 全部临嘱}
DM.OrderItemFilterNo := FilterNo;
DM.FKindId := 0;
DM.OrderItem.DisableControls;
if DM.OrderItemFilterNo in [0,1] then
begin
Caption := '长期医嘱';
DM.OrderItem.FieldByName('endtime').Visible:= True;
DM.isLongOrder := True;
DM.isViewPart := DM.OrderItemFilterNo = 0;
gridOrderItem.TitleColor := $00C1C1FF;
end
else
begin
Caption := '临时医嘱';
DM.OrderItem.fieldByName('endtime').visible:= False;
DM.isLongOrder := False;
DM.isViewPart := DM.OrderItemFilterNo = 2 ;
gridOrderItem.TitleColor := $00B6ECA6;
end;
DM.OrderItem.EnableControls;
end;
procedure TfrmOrderItem.NSLongOrderExecute(Sender: TObject);
begin
if pcFeeSelected.ActivePageIndex = 1 then
begin
DM.qryOtherBill.Close;
DM.ExOrderItem.Open;
btnPayBill.Down := False;
end;
frmOrderItem.ChangeOrderItemFilter(0);
DM.OrderItem.Refresh;
pcFeeSelected.ActivePageIndex := 0;
end;
procedure TfrmOrderItem.AllLongOrderExecute(Sender: TObject);
begin
if pcFeeSelected.ActivePageIndex = 1 then
begin
DM.qryOtherBill.Close;
DM.ExOrderItem.Open;
btnPayBill.Down := False;
end;
frmOrderItem.ChangeOrderItemFilter(1);
DM.OrderItem.Refresh;
pcFeeSelected.ActivePageIndex := 0;
end;
procedure TfrmOrderItem.NSTempOrderExecute(Sender: TObject);
begin
if pcFeeSelected.ActivePageIndex = 1 then
begin
DM.qryOtherBill.Close;
DM.ExOrderItem.Open;
btnPayBill.Down := False;
end;
frmOrderItem.ChangeOrderItemFilter(2);
DM.OrderItem.Refresh;
pcFeeSelected.ActivePageIndex := 0;
end;
procedure TfrmOrderItem.AllTempOrderExecute(Sender: TObject);
begin
if pcFeeSelected.ActivePageIndex = 1 then
begin
DM.qryOtherBill.Close;
DM.ExOrderItem.Open;
btnPayBill.Down := False;
end;
frmOrderItem.ChangeOrderItemFilter(3);
DM.OrderItem.Refresh;
pcFeeSelected.ActivePageIndex := 0;
end;
procedure TfrmOrderItem.FormShow(Sender: TObject);
begin
frmorderitem.Caption := '当前医嘱类型——有效长嘱';
btnPartLong.Down := True;
btnRowSelect.Down := False;
btnPayBill.Down := False;
pcFeeSelected.ActivePageIndex := 0;
DM.EditingField := gridOrderItem.SelectedField;
DM.FOpenDoc := '0000'; //初始化开医嘱医生工号
if StrtoFloat(lbprepay.Caption) < StrtoFloat(lbcost.Caption) then
begin
lbprepay.font.color := clred;
lbcost.font.color := clred;
end else
begin
lbprepay.font.color := clblue;
lbcost.font.color := clblue;
end;
if dm.maxamt = 100.0 then
Hisinfoprompt('该病人处于基本医疗状态,只能录入临嘱且费用不超过100元。');
if dm.maxamt = 3000.0 then
Hisinfoprompt('该病人处于急救通道状态,只能录入临嘱且费用不超过3000元。');
if dm.maxamt = 500.0 then
Hisinfoprompt('该病人处于出院通道状态,录入且费用不能超过500元。');
end;
procedure TfrmOrderItem.E2Click(Sender: TObject);
begin
Close;
end;
procedure TfrmOrderItem.lookupItemIDNotInList(Sender: TObject;
LookupTable: TDataSet; NewValue: String; var Accept: Boolean);
begin
Accept := False;
end;
procedure TfrmOrderItem.gridOrderItemKeyDown(Sender: TObject;
var Key: Word; Shift: TShiftState);
begin
if (key = 13) then
begin
if (gridOrderItem.SelectedField.Name = 'OrderItemDOSAGE') or
(gridOrderItem.SelectedField.Name = 'OrderItemITEMID') then
gridOrderItem.Selectedindex := gridOrderItem.Selectedindex + 1;
end;
if (key = VK_F2) then
begin
if ( gridOrderItem.SelectedField.Name = 'OrderItemITEMID' ) and
( DM.OrderItem.State in [dsInsert,dsEdit] ) then
begin
if (frmfindItemID.ShowModal = mrOK )then
DM.OrderItemItemId.Value := DM.itemid;
end;
end;
end;
procedure TfrmOrderItem.FormClose(Sender: TObject;
var Action: TCloseAction);
begin
if DM.OrderItem.State in [dsInsert,dsEdit] then DM.OrderItem.Cancel;
DM.qryOtherBill.Close;
DM.ExorderItem.Active := False;
DM.OrderItem.Active := False;
DM.tblPatientSub.Active := False;
DM.qryPatientBedNo.Active := False;
gridOrderItem.Options := gridOrderItem.Options - [dgRowSelect,dgMultiSelect];
gridOrderItem.SelectedList.Clear;
gridExOrderItem.Options := gridExOrderItem.Options - [dgRowSelect];
MultiSele.Checked := False;
end;
procedure TfrmOrderItem.lookupBedNoCloseUp(Sender: TObject; LookupTable,
FillTable: TDataSet; modified: Boolean);
var
strPrepay : string;
strCost : string;
WarningStr: string;
begin
lookupSubName.Text := DM.tblPatientSubPatDesc.AsString;
with DM.qryPreTotal do
begin
close;
Params[0].AsInteger := DM.qryPatientBedNoInid.AsInteger;
Params[1].AsSmallInt := DM.qryPatientBedNoTimes.Value;
Open;
strPrepay := format('%.2f',[DM.qryPreTotalPrepayTotal.Value]);
Close;
end;
with DM.qryFeeTotal do
begin
close;
Params[0].AsInteger := DM.qryPatientBedNoInid.AsInteger;
Params[1].AsSmallInt := DM.qryPatientBedNoTimes.Value;
Open;
strCost := format('%.2f',[DM.qryFeeTotalFeeTotal.Value]);
Close;
end;
if StrtoFloat(strPrepay) < StrtoFloat(strCost) then
begin
lbprepay.font.color := clred;
lbcost.font.color := clred;
end else
begin
lbprepay.font.color := clblue;
lbcost.font.color := clblue;
end;
lbprepay.Caption := strPrepay;
lbcost.Caption := strCost;
if ( (strtofloat(strPrepay)- strtofloat(strCost))
< DM.tblPatientSubFEELOWLEVEL.Value ) then
begin
WarningStr := Trim(DM.tblPatientSubPatDesc.Value)
+ '(' + DM.tblPatientSubBedID.Value + ')'
+ '剩余的押金已经低于'
+ floattostr(DM.tblPatientSubFEELOWLEVEL.Value) + '元' + #13
+ '请提醒医生或护士长做好催款工作!';
hisWarningPrompt(Pchar(WarningStr));
end;
frmOrderItem.gridOrderItem.ReadOnly :=
(DM.tblPatientSubInState.Value > 1)
OR (DM.tblPatientSubEnabled.Value = 0);
frmOrderItem.gdPayBill.ReadOnly := frmOrderitem.gridOrderItem.ReadOnly;
end;
procedure TfrmOrderItem.miPYExcodeInputClick(Sender: TObject);
begin
miPYExcodeInput.Checked := True;
OrderStatusBar.Panels[7].Text := '拼音码';
miNumInput.ImageIndex := -1;
miPYExcodeInput.ImageIndex := 8;
with DM.qryOrderCost do
begin
Close;
SQL.Clear;
SQL.Add('SELECT COSTID ,CNAME ,ENAME ,SPEC ,PRICE ,MADEIN , ');
SQL.Add('DOSAGE ,BASEDOSE ,EXCODE1 ,EXCODE2 ,EXCODE3 ');
SQL.Add(' FROM ORDERCOST ');
SQL.Add(' WHERE ENABLED = 1 ');
SQL.Add(' ORDER BY EXCODE1 ');
lookupItemID.Selected.Clear;
lookupItemID.Selected.Add('EXCODE1'+ #9 + '6' + #9 +'拼音码' + #9);
lookupItemID.Selected.Add('CNAME' + #9 + '20' + #9 +'中文名称' + #9);
lookupItemID.Selected.Add('ENAME' + #9 + '20' + #9 +'英文名称' + #9);
lookupItemID.Selected.Add('SPEC' + #9 + '16' + #9 +'规格' + #9);
lookupItemID.Selected.Add('PRICE' + #9 + '10' + #9 +'价格' + #9);
lookupItemID.Selected.Add('MADEIN' + #9 + '16' + #9 +'产地');
Open;
end;
end;
procedure TfrmOrderItem.miNumInputClick(Sender: TObject);
begin
miNumInput.Checked := True;
OrderStatusBar.Panels[7].Text := '数字码';
miNumInput.ImageIndex := 8;
miPYExcodeInput.ImageIndex := -1;
with DM.qryOrderCost do
begin
Close;
SQL.Clear;
SQL.Add('SELECT COSTID ,CNAME ,ENAME ,SPEC ,PRICE ,MADEIN , ');
SQL.Add('DOSAGE ,BASEDOSE ,EXCODE1 ,EXCODE2 ,EXCODE3 ');
SQL.Add(' FROM ORDERCOST ');
SQL.Add(' WHERE ENABLED = 1 ');
SQL.Add(' ORDER BY COSTID ');
lookupItemID.Selected.Clear;
lookupItemID.Selected.Add('COSTID' + #9 + '6' + #9 +'项目号' + #9);
lookupItemID.Selected.Add('CNAME' + #9 + '20' + #9 +'中文名称' + #9);
lookupItemID.Selected.Add('ENAME' + #9 + '20' + #9 +'英文名称' + #9);
lookupItemID.Selected.Add('SPEC' + #9 + '16' + #9 +'规格' + #9);
lookupItemID.Selected.Add('PRICE' + #9 + '10' + #9 +'价格' + #9);
lookupItemID.Selected.Add('MADEIN' + #9 + '16' + #9 +'产地');
Open;
end;
end;
procedure TfrmOrderItem.miStartTimeSortClick(Sender: TObject);
begin
miStartTimeSort.Checked := True;
miStartTimeSort.ImageIndex := 7;
miKindIdSort.ImageIndex := -1;
miDisplayIdSort.ImageIndex := -1;
DM.OrderItem.IndexFieldNames := 'INID;TIMES;SQID;STARTTIME'; //按照开始时间排序
end;
procedure TfrmOrderItem.miKindIdSortClick(Sender: TObject);
begin
miKindIdSort.Checked := True;
miStartTimeSort.ImageIndex := -1;
miKindIdSort.ImageIndex := 7;
miDisplayIdSort.ImageIndex := -1;
DM.OrderItem.IndexFieldNames := 'INID;TIMES;SQID;KINDID;SERIALID'; //按照配号排序
end;
procedure TfrmOrderItem.miDisplayIdSortClick(Sender: TObject);
begin
miDisplayIdSort.Checked := True;
miStartTimeSort.ImageIndex := -1;
miKindIdSort.ImageIndex := -1;
miDisplayIdSort.ImageIndex := 7;
DM.OrderItem.IndexFieldNames := 'INID;TIMES;SQID;DISPLAYID'; // 按输入顺序排序
end;
procedure TfrmOrderItem.ConfirmActionExecute(Sender: TObject);
var
sp_Result :integer;
begin
if pcFeeSelected.ActivePageIndex <> 0 then
begin
if DM.qryOtherBill.State in [dsInsert,dsEdit] then
DM.qryOtherBill.Cancel;
if DM.qryOtherBill.UpdatesPending then
DM.qryOtherBill.ApplyUpdates;
SysUtils.Abort;
end;
if DM.OrderItem.State in [dsInsert,dsEdit] then
DM.OrderItem.Cancel;
if ( DM.OrderItem.State = dsBrowse ) and
HisIsYesQuery('是否确认当前病人医嘱?') then
begin
with DM do
begin
try
if ProjHisadt.InTransaction then ProjHisadt.Commit;
DM.qryNoConfirmStop.Close;
DM.qryNoConfirmStop.Params[0].AsInteger := tblPatientSubInid.Value;
DM.qryNoConfirmStop.Params[1].AsSmallint := tblPatientSubTimes.Value;
DM.qryNoConfirmStop.Open;
while (DM.qryNoConfirmStop.RecordCount > 0) and
(not DM.qryNoConfirmStop.Eof) do
begin
spStopMulti.Params[0].AsString :=
DM.qryNoConfirmStop.FieldByName('SerialID').AsString;
spStopMulti.Params[1].AsDateTime :=
DM.qryNoConfirmStop.FieldByName('EndTime').AsDateTime;
spStopMulti.Params[2].AsDateTime :=
DM.qryNoConfirmStop.FieldByName('StdEndTime').AsDateTime;
spStopMulti.Params[3].AsSmallInt :=
Abs(DM.qryNoConfirmStop.FieldByName('Stoptype').AsInteger);
spStopMulti.Params[4].AsString := DM.currOperatorno;
spStopMulti.ExecProc; //执行停止医嘱
sp_Result := spStopMulti.Params[5].AsInteger;
if sp_Result < 0 then
begin
DM.qryNoConfirmStop.Close;
hisErrorPrompt('医嘱有错误,请认真查对!');
SysUtils.Abort;
end;
DM.qryNoConfirmStop.Next;
end;
DM.qryNoConfirmStop.Close;
ProjHisadt.StartTransaction;
spConfirm.Params[0].AsInteger := tblPatientSubInid.Value;
spConfirm.Params[1].AsSmallint := tblPatientSubTimes.Value;
spConfirm.Params[2].AsSmallint := tblPatientSubSqid.Value;
spConfirm.Params[3].AsString := currOperatorno;
spConfirm.Params[4].AsInteger := DM.SIsAutoAddIvdrip;
spConfirm.Params[5].AsInteger := 0; //正常医嘱确认
spConfirm.ExecProc;
ProjHisadt.Commit;
if spConfirm.Params[6].AsInteger < 0 then
hisErrorPrompt('医嘱有错误,请认真查对!');
OrderItem.Refresh;
ExorderItem.Refresh;
except
DM.qryNoConfirmStop.Close;
ProjHisadt.Rollback;
end;
end;
end;
end;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -