📄 orderitem.pas
字号:
if pcFeeSelected.ActivePageIndex <> 0 then SysUtils.Abort;
if DM.OrderItem.State in [dsInsert,dsEdit] then
DM.OrderItem.Cancel;
if DM.OrderItem.IsEmpty then SysUtils.Abort;
if gridOrderItem.ReadOnly then SysUtils.Abort;
if not Hisisyesquery('召回医嘱吗?' ) then SysUtils.Abort;
SelectCount := gridOrderitem.SelectedList.Count;
if ( SelectCount = 0 ) or ( Selectcount = 1 ) then
begin
if ( DM.OrderItemstoptype.AsInteger > 0 ) and
( DM.OrderItemstoptype.AsInteger <> 1 ) then
begin
Hiserrorprompt('非临时停止的医嘱不能召回.');
sysUtils.Abort;
end;
if ( DM.OrderItemWARDID.AsString <> DM.currWardid ) then
begin
Hiserrorprompt('非本科的医嘱不能召回。');
sysutils.Abort;
end;
try
if DM.ProjHisadt.InTransaction then
DM.ProjHisadt.Commit;
DM.ProjHisadt.StartTransaction;
DM.spRecall.Params[0].AsString :=
DM.OrderItemSerialId.AsString;
DM.spRecall.Params[1].AsString := DM.currOperatorno;
DM.spRecall.ExecProc;
DM.ProjHisadt.Commit;
gridOrderItem.SelectedList.Clear;
spResult := DM.spRecall.Params[2].AsInteger;
case spResult of
-1 : HisErrorPrompt('此医嘱不能召回!');
-2 : HisErrorprompt(PChar('不能召回' + InttoStr(DM.SRecallCnstn) +'小时前停止的医嘱!'));
end;
DM.OrderItem.Refresh;
except
DM.ProjHisadt.Rollback;
HisErrorPrompt('请稍后再试.');
end;
end
else
if ( SelectCount > 1 ) then
begin
try
DM.OrderItem.DisableControls;
for i := 0 to SelectCount - 1 do
begin
DM.OrderItem.GotoBookmark(gridOrderItem.SelectedList.items[i]);
DM.OrderItem.Freebookmark(gridOrderItem.SelectedList.items[i]);
if dm.OrderItemstoptype.AsInteger = 0 then
begin
Hiserrorprompt('非临时停止的医嘱不能召回.');
Continue;
end;
if dm.OrderItemWARDID.AsString <> dm.currWardid then
begin
Hiserrorprompt('非本科的医嘱不能召回。');
gridOrderItem.SelectedList.Clear;
SysUtils.Abort;
Continue;
end;
try
if DM.ProjHisadt.InTransaction then
DM.ProjHisadt.Commit;
DM.ProjHisadt.StartTransaction;
DM.spRecall.Params[0].AsString :=
DM.OrderItemSerialId.AsString;
DM.spRecall.Params[1].AsString := DM.currOperatorno;
DM.spRecall.ExecProc;
DM.ProjHisAdt.Commit;
spResult := DM.spRecall.Params[2].AsInteger;
case spResult of
-1 : HisErrorPrompt('此医嘱不能召回!');
-2 : HisErrorprompt(PChar('不能召回' + InttoStr(DM.SRecallCnstn) +'小时前停止的医嘱!'));
end;
except
DM.ProjHisadt.Rollback;
HisErrorPrompt('请稍后再试.');
end ;
end; //end for
gridOrderItem.SelectedList.Clear;
finally
gridOrderItem.SelectedList.Clear;
DM.OrderItem.EnableControls;
end;
end;
//召回后自动确认
with DM do
begin
try
if ProjHisadt.InTransaction then ProjHisadt.Commit;
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 := 1; //医嘱召回确认
spConfirm.ExecProc;
ProjHisadt.Commit;
if spConfirm.Params[6].AsInteger < 0 then
hisErrorPrompt('医嘱有错误,请认真查对!');
OrderItem.Refresh;
ExorderItem.Refresh;
except
ProjHisadt.Rollback;
end;
end;
end;
procedure TfrmOrderItem.gridOrderItemColEnter(Sender: TObject);
begin
DM.EditingField := (Sender as TwwDBGrid).SelectedField;
end;
procedure TfrmOrderItem.gridOrderItemExit(Sender: TObject);
begin
DM.FKindID := 0;
if ( DM.OrderItem.State in [dsInsert,dsEdit] ) then
DM.OrderItem.Cancel;
end;
procedure TfrmOrderItem.LookupSubNameCloseUp(Sender: TObject; LookupTable,
FillTable: TDataSet; modified: Boolean);
begin
frmOrderItem.gridOrderItem.ReadOnly :=
(DM.tblPatientSubInState.Value > 1)
OR (DM.tblPatientSubEnabled.Value = 0);
frmOrderItem.gdPayBill.ReadOnly := frmOrderitem.gridOrderItem.ReadOnly;
end;
procedure TfrmOrderItem.btnPayBillClick(Sender: TObject);
begin
if btnPayBill.Down then
begin
dtp_CostDate.Date := Date;
DM.FPayBillDate := Date;
DM.qryOtherBill.Filtered := False;
DM.qryOtherBill.Filtered := True;
DM.qryOtherBill.Open;
pcFeeSelected.ActivePageIndex := 1;
DM.ExOrderItem.Close;
pcFeeSelected.SetFocus;
end else
begin
btnPartLong.Down := True;
NSLongOrderExecute(Sender);
DM.ExOrderItem.Open;
pcFeeSelected.ActivePageIndex := 0;
DM.qryOtherBill.Close;
gridOrderItem.SetFocus;
end;
end;
procedure TfrmOrderItem.dtp_CostDateChange(Sender: TObject);
begin
DM.FPayBillDate := dtp_CostDate.Date;
with DM.qryOtherBill do
begin
Cancel;
DisableControls;
Filtered := False;
Filtered := True;
EnableControls;
end;
end;
procedure TfrmOrderItem.ppMenuOrderItemPopup(Sender: TObject);
begin
case pcFeeSelected.ActivePageIndex of
0: begin
mmOrderConfirm.Enabled := True;
mmOrderStop.Enabled := True;
mmEmergency.Enabled := True;
mmOrderCancel.Enabled := True;
mmFeeqrymodi.Enabled := True;
miStartTimeSort.Enabled:= True;
miKindIdSort.Enabled := True;
miDisplayIDSort.Enabled:= True;
miNumInput.Enabled := True;
miPYExcodeInput.Enabled:= True;
miOrderItemRowSelect.Enabled:= True;
miOrderItemSelectAll.Enabled:= True;
end;
1: begin
mmOrderConfirm.Enabled := False;
mmOrderStop.Enabled := False;
mmEmergency.Enabled := False;
mmOrderCancel.Enabled := False;
mmFeeqrymodi.Enabled := False;
miStartTimeSort.Enabled:= False;
miKindIdSort.Enabled := False;
miDisplayIDSort.Enabled:= False;
miNumInput.Enabled := True;
miPYExcodeInput.Enabled:= True;
miOrderItemRowSelect.Enabled:= False;
miOrderItemSelectAll.Enabled:= False;
end;
end;
end;
procedure TfrmOrderItem.gdPayBillCalcCellColors(Sender: TObject;
Field: TField; State: TGridDrawState; Highlight: Boolean; AFont: TFont;
ABrush: TBrush);
begin
if not ( DM.qryOtherBillPNtblDate.IsNull
and (DM.qryOtherBillPay.Value = 0) ) then
begin
AFont.Color := clBlue;
ABrush.Color := clWhite;
end
else begin
AFont.Color := clBlack;
ABrush.Color := clWhite;
end;
if Highlight then
begin
AFont.Color := clWhite;
ABrush.Color := clHighlight;
end;
end;
procedure TfrmOrderItem.btnRecipeClick(Sender: TObject);
begin
if btnRecipe.Down then
begin
pcFeeSelected.ActivePageIndex := 2;
DM.Doctor.Open;
DM.ExcutePos.Open;
DM.ExOrderItem.Close;
pcFeeSelected.SetFocus;
end else
begin
btnPartLong.Down := True;
NSLongOrderExecute(Sender);
DM.ExOrderItem.Open;
pcFeeSelected.ActivePageIndex := 0;
gridOrderItem.SetFocus;
end;
end;
procedure TfrmOrderItem.lcbRecipeTypeNotInList(Sender: TObject;
LookupTable: TDataSet; NewValue: String; var Accept: Boolean);
begin
Accept := False;
end;
procedure TfrmOrderItem.mmFeeqrymodiClick(Sender: TObject);
begin
try
frmFeeDtl := TfrmFeeDtl.Create(self);
with DM.qryItemFeeDtl do
begin
Close;
Params[0].AsString := DM.OrderItemSerialID.Value;
Open;
end;
frmFeeDtl.ShowModal;
finally
frmFeeDtl.free;
end;
end;
procedure TfrmOrderItem.gdPayBillKeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
begin
if (key = VK_F2) then
begin
if ( DM.qryOtherBill.State in [dsInsert,dsEdit] ) then
begin
if (frmfindItemID.ShowModal = mrOK )then
DM.qryOtherBillItemId.Value := DM.itemid;
end;
end;
end;
procedure TfrmOrderItem.CancelOrderActionExecute(Sender: TObject);
var
i, SelectCount ,spResult: Integer;
begin
if pcFeeSelected.ActivePageIndex <> 0 then
SysUtils.Abort;
if DM.OrderItem.State in [dsInsert,dsEdit] then
DM.OrderItem.Cancel;
if DM.OrderItem.IsEmpty then SysUtils.Abort;
SelectCount := gridOrderitem.SelectedList.Count;
if ( SelectCount = 0 ) or ( Selectcount = 1 ) then
begin
// check if stopped already
if (not DM.OrderItemEndTime.IsNull) then
begin
// Issued today
HisErrorPrompt('已经停止的医嘱不能取消医嘱!');
SysUtils.Abort;
end
else
if not HisIsYesQuery('是否确定取消(D.C.)医嘱?') then SysUtils.Abort;
try
if DM.ProjHisadt.InTransaction then
DM.ProjHisadt.Commit;
DM.ProjHisadt.StartTransaction;
DM.spCancelOrder.Params[0].AsInteger := DM.OrderItemInid.Value;
DM.spCancelOrder.Params[1].AsString := DM.currWardid;
DM.spCancelOrder.Params[2].AsString :=
DM.OrderItemSerialId.AsString;
DM.spCancelOrder.Params[3].AsString := DM.currOperatorno;
DM.spCancelOrder.ExecProc; //执行取消(D.C.)医嘱
DM.ProjHisAdt.Commit;
spResult := DM.spCancelOrder.Params[4].AsInteger;
case spResult of
-1 : HisErrorPrompt('当前医嘱内容有误,取消(D.C.)失败!');
-2 : HisErrorPrompt('中心药房正在处理该医嘱!' + #13 +
'请通知中心药房取消发药后,再取消医嘱!');
end;
gridOrderItem.SelectedList.Clear;
DM.OrderItem.Refresh;
except
DM.ProjHisadt.Rollback;
HisErrorPrompt('当前医嘱内容有误,取消(D.C.)失败!');
end;
end
else
if ( SelectCount > 1 ) then
begin
try
if not HisIsYesQuery('是否确定取消(D.C.)医嘱?') then
SysUtils.Abort;
DM.OrderItem.DisableControls;
for i := 0 to SelectCount - 1 do
begin
DM.OrderItem.GotoBookmark(gridOrderItem.SelectedList.items[i]);
DM.OrderItem.Freebookmark(gridOrderItem.SelectedList.items[i]);
if DM.OrderItemEndTime.IsNull then
begin
try
if DM.ProjHisadt.InTransaction then
DM.ProjHisadt.Commit;
DM.ProjHisadt.StartTransaction;
DM.spCancelOrder.Params[0].AsInteger := DM.OrderItemInid.Value;
DM.spCancelOrder.Params[1].AsString := DM.currWardid;
DM.spCancelOrder.Params[2].AsString :=
DM.OrderItemSerialId.AsString;
DM.spCancelOrder.Params[3].AsString := DM.currOperatorno;
DM.spCancelOrder.ExecProc; //执行取消(D.C.)医嘱
DM.ProjHisAdt.Commit;
spResult := DM.spCancelOrder.Params[4].AsInteger;
case spResult of
-1 : HisErrorPrompt('当前医嘱内容有误,取消(D.C.)失败!');
-2 : HisErrorPrompt('中心药房正在处理该医嘱!' + #13 +
'请通知中心药房取消发药后,再取消医嘱!');
end;
except
DM.ProjHisadt.Rollback;
gridOrderItem.SelectedList.Clear;
HisErrorPrompt('当前医嘱内容有误,停止失败!');
end ;
end;
end;
gridOrderItem.SelectedList.Clear;
DM.OrderItem.Refresh;
finally
DM.OrderItem.EnableControls;
end;
end;
end;
end.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -