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

📄 orderitem.pas

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