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

📄 orderitem.pas

📁 某大型医院护士站
💻 PAS
📖 第 1 页 / 共 4 页
字号:
  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 + -