示例#1
0
        /// <summary>
        /// 发送医嘱
        /// </summary>
        /// <returns></returns>
        public int ComfirmExec()
        {
            Neusoft.HISFC.Models.Order.ExecOrder order = null;
            usageHelper  = new Neusoft.FrameWork.Public.ObjectHelper(manager.GetConstantList(Neusoft.HISFC.Models.Base.EnumConstant.USAGE));
            dosageHelper = new Neusoft.FrameWork.Public.ObjectHelper(manager.GetConstantList(Neusoft.HISFC.Models.Base.EnumConstant.DOSAGEFORM));

            #region 获得
            List <Neusoft.HISFC.Models.Order.ExecOrder> alExecOrder = new List <Neusoft.HISFC.Models.Order.ExecOrder>();
            for (int i = 0; i < this.fpOrderExecBrowser1.fpSpread.Sheets[0].RowCount; i++)
            {
                if (this.fpOrderExecBrowser1.fpSpread.Sheets[0].Cells[i, this.fpOrderExecBrowser1.ColumnIndexSelection].Text.ToUpper() == "TRUE")
                {
                    order = this.fpOrderExecBrowser1.fpSpread.Sheets[0].Rows[i].Tag as Neusoft.HISFC.Models.Order.ExecOrder;
                    if (order == null)
                    {
                        MessageBox.Show("没查询到医嘱!");
                        return(-1);
                    }
                    try
                    {
                        order.Order.Usage.Name = usageHelper.GetName(order.Order.Usage.ID);
                    }
                    catch
                    {
                        MessageBox.Show("获得用法出错!" + order.Order.Usage.ID);
                        return(-1);
                    }
                    try
                    {
                        ((Neusoft.HISFC.Models.Pharmacy.Item)order.Order.Item).DosageForm.Name = dosageHelper.GetName(((Neusoft.HISFC.Models.Pharmacy.Item)order.Order.Item).DosageForm.ID);
                    }
                    catch
                    {
                        MessageBox.Show("获得药品剂型出错!" + ((Neusoft.HISFC.Models.Pharmacy.Item)order.Order.Item).DosageForm.ID);
                        return(-1);
                    }
                    alExecOrder.Add(order);
                }
            }

            #endregion
            Neusoft.FrameWork.Management.PublicTrans.BeginTransaction();
            //Neusoft.FrameWork.Management.Transaction t = new Neusoft.FrameWork.Management.Transaction(this.orderManager.Connection);
            //t.BeginTransaction();
            orderManagement.SetTrans(Neusoft.FrameWork.Management.PublicTrans.Trans);
            if (orderManagement.SendDrug(alExecOrder, sendFlag) == -1)
            {
                Neusoft.FrameWork.Management.PublicTrans.RollBack();;
                MessageBox.Show(orderManagement.Err);
            }
            else
            {
                Neusoft.FrameWork.Management.PublicTrans.Commit();
            }
            this.RefreshQuery();
            return(0);
        }
 private int GetItemInfo()
 {
     if (this.neuTabControl1.SelectedTab == this.tabPage1)
     {
         Hashtable myhashtable = new Hashtable();
         for (int a = 0; a < this.neuSpread1_Sheet1.RowCount; a++)
         {
             if (Neusoft.FrameWork.Function.NConvert.ToBoolean(this.neuSpread1_Sheet1.Cells[a, 0].Value) == true)
             {
                 string strDrugStoreName = this.neuSpread1_Sheet1.Cells[a, 21].Text;
                 if (!myhashtable.ContainsKey(strDrugStoreName))
                 {
                     myhashtable.Add(strDrugStoreName, strDrugStoreName);
                 }
             }
         }
         if (myhashtable.Count > 1)
         {
             System.Windows.Forms.MessageBox.Show("您选择了多个药房的药品,请认真核对打印药方!");
             return(-1);
         }
         this.alExeOrder = new ArrayList();
         for (int i = 0; i < this.neuSpread1_Sheet1.RowCount; i++)
         {
             if (Neusoft.FrameWork.Function.NConvert.ToBoolean(this.neuSpread1_Sheet1.Cells[i, 0].Value) == true)
             {
                 if (this.neuSpread1_Sheet1.Cells[i, 2].Text == "长期医嘱")
                 {
                     System.Windows.Forms.MessageBox.Show("您在第【" + (i + 1).ToString() + " 】行选择了长期医嘱,请选择临时医嘱打印药方!");
                     return(-1);
                 }
                 if (this.neuSpread1_Sheet1.Cells[i, 21].Text == this.neuSpread1_Sheet1.Cells[i, 21].Text)
                 {
                 }
                 try
                 {
                     this.myExeOrder = new Neusoft.HISFC.Models.Order.ExecOrder();
                     Neusoft.HISFC.Models.Pharmacy.Item objPharmacy = new Neusoft.HISFC.Models.Pharmacy.Item();
                     objPharmacy.ID             = this.neuSpread1_Sheet1.Cells[i, 39].Text;                                                //药品编码
                     objPharmacy.Name           = this.neuSpread1_Sheet1.Cells[i, 5].Text;                                                 //药品名称
                     objPharmacy.Specs          = this.neuSpread1_Sheet1.Cells[i, 6].Text;                                                 //药品规格
                     objPharmacy.Memo           = this.neuSpread1_Sheet1.Cells[i, 21].Text;                                                //取药药房
                     this.myExeOrder.Order.Item = objPharmacy;                                                                             //执行档项目
                     this.myExeOrder.Order.Qty  = Neusoft.FrameWork.Function.NConvert.ToDecimal(this.neuSpread1_Sheet1.Cells[i, 7].Value); //药品数量
                     this.myExeOrder.Order.Unit = this.neuSpread1_Sheet1.Cells[i, 8].Text;                                                 //药品单位
                     this.alExeOrder.Add(this.myExeOrder);
                 }
                 catch (Exception ex)
                 {
                     return(-1);
                 }
             }
         }
     }
     return(1);
 }
示例#3
0
        public void SetExecOrder(System.Collections.ArrayList alExecOrder)
        {
            this.neuSpread1_Sheet1.Rows.Count = 0;

            System.Collections.Hashtable hsPatientName      = new System.Collections.Hashtable();
            System.Collections.Hashtable hsPatientOrderItem = new System.Collections.Hashtable();
            foreach (Neusoft.HISFC.Models.Order.ExecOrder info in alExecOrder)
            {
                string patientName = "";
                if (hsPatientName.ContainsKey(info.Order.Patient.ID))
                {
                    patientName = hsPatientName[info.Order.Patient.ID] as string;
                }
                else
                {
                    Neusoft.HISFC.BizProcess.Integrate.RADT radtIntegrate = new Neusoft.HISFC.BizProcess.Integrate.RADT();
                    Neusoft.HISFC.Models.RADT.PatientInfo   p             = radtIntegrate.GetPatientInfoByPatientNO(info.Order.Patient.ID);

                    patientName = p.PVisit.PatientLocation.Bed.ID + p.Name;

                    hsPatientName.Add(p.ID, patientName);
                }

                if (hsPatientOrderItem.ContainsKey(info.Order.Patient.ID + info.Order.Item.ID))
                {
                    Neusoft.HISFC.Models.Order.ExecOrder execOrder = hsPatientOrderItem[info.Order.Patient.ID + info.Order.Item.ID] as Neusoft.HISFC.Models.Order.ExecOrder;

                    execOrder.Order.Qty = execOrder.Order.Qty + info.Order.Qty;
                }
                else
                {
                    Neusoft.HISFC.Models.Order.ExecOrder execOrder = info.Clone();
                    execOrder.Order.Patient.Name = patientName;

                    hsPatientOrderItem.Add(execOrder.Order.Patient.ID + info.Order.Item.ID, execOrder);
                }
            }

            int iRow = 0;

            foreach (Neusoft.HISFC.Models.Order.ExecOrder totalExecOrder in hsPatientOrderItem.Values)
            {
                this.neuSpread1_Sheet1.Rows.Add(iRow, 1);

                this.neuSpread1_Sheet1.Cells[iRow, 0].Text = totalExecOrder.Order.Patient.Name;

                Neusoft.HISFC.Models.Pharmacy.Item item = totalExecOrder.Order.Item as Neusoft.HISFC.Models.Pharmacy.Item;

                this.neuSpread1_Sheet1.Cells[iRow, 1].Text  = item.Name + "[" + item.Specs + "]";
                this.neuSpread1_Sheet1.Cells[iRow, 2].Text  = totalExecOrder.Order.Qty.ToString();
                this.neuSpread1_Sheet1.Cells[iRow, 3].Text  = totalExecOrder.Order.Unit;
                this.neuSpread1_Sheet1.Cells[iRow, 4].Value = item.PriceCollection.RetailPrice / item.PackQty;
                this.neuSpread1_Sheet1.Cells[iRow, 5].Value = totalExecOrder.Order.Qty * item.PriceCollection.RetailPrice / item.PackQty;
            }
        }
示例#4
0
        /// <summary>
        /// 打印
        /// </summary>
        public void Print()
        {
            try
            {
                if (this.dwMain.RowCount <= 0)
                {
                    return;
                }

                //数据窗口打印
                dwMain.Print(true, true);

                #region 更新已经打印标记
                if (!this.checkBox1.Checked)
                {
                    Neusoft.FrameWork.Management.PublicTrans.BeginTransaction();

                    //Neusoft.FrameWork.Management.Transaction t = new Neusoft.FrameWork.Management.Transaction(orderManager.Connection);
                    //t.BeginTransaction();

                    this.orderManager.SetTrans(Neusoft.FrameWork.Management.PublicTrans.Trans);
                    string itemType = null;
                    for (int i = 0; i < this.curValues.Count; i++)
                    {
                        Neusoft.HISFC.Models.Order.ExecOrder exeord = curValues[i] as Neusoft.HISFC.Models.Order.ExecOrder;
                        //if (exeord.Order.Item.IsPharmacy)
                        if (exeord.Order.Item.ItemType == Neusoft.HISFC.Models.Base.EnumItemType.Drug)
                        {
                            itemType = "1";
                        }
                        else
                        {
                            itemType = "2";
                        }
                        if (this.orderManager.UpdateExecOrderPrinted(exeord.ID, itemType) == -1)
                        {
                            Neusoft.FrameWork.Management.PublicTrans.RollBack();
                            MessageBox.Show("更新打印标记失败!" + orderManager.Err);
                            return;
                        }
                    }
                    Neusoft.FrameWork.Management.PublicTrans.Commit();


                    this.Query(myPatients, usage, dt1, dt2, isPrint);
                }
                #endregion
            }
            catch (Exception ex) { MessageBox.Show(ex.Message); }
            return;
        }
        /// <summary>
        /// 向Fp内加入信息
        /// </summary>
        /// <param name="execOrder">医嘱执行挡信息</param>
        /// <param name="iRowIndex">行索引</param>
        /// <returns>成功返回1 失败返回-1</returns>
        protected int AddDataToFp(Neusoft.HISFC.Models.Order.ExecOrder execOrder, int iRowIndex)
        {
            this.neuSpread1_Sheet1.Rows.Add(iRowIndex, 1);

            string patientName = "";

            if (this.hsPatientInfo.ContainsKey(execOrder.Order.Patient.ID))
            {
                Neusoft.HISFC.Models.RADT.PatientInfo patient = this.hsPatientInfo[execOrder.Order.Patient.ID] as Neusoft.HISFC.Models.RADT.PatientInfo;

                patientName = "[" + patient.PVisit.PatientLocation.Bed.ID + "]" + patient.Name;
            }
            else
            {
                Neusoft.HISFC.BizProcess.Integrate.RADT radtIntegrate = new Neusoft.HISFC.BizProcess.Integrate.RADT();
                Neusoft.HISFC.Models.RADT.PatientInfo   patient       = radtIntegrate.GetPatientInfoByPatientNO(execOrder.Order.Patient.ID);

                if (patient == null)
                {
                    MessageBox.Show(Language.Msg("根据患者流水号获取患者信息发生错误") + radtIntegrate.Err);
                    return(-1);
                }

                patientName = "[" + patient.PVisit.PatientLocation.Bed.ID + "]" + patient.Name;

                this.hsPatientInfo.Add(patient.ID, patient);
            }


            this.neuSpread1_Sheet1.Cells[iRowIndex, (int)ColumnSet.ColName].Text   = patientName;
            this.neuSpread1_Sheet1.Cells[iRowIndex, (int)ColumnSet.ColCheck].Value = true;

            Neusoft.HISFC.Models.Pharmacy.Item item = ((Neusoft.HISFC.Models.Pharmacy.Item)execOrder.Order.Item);
            this.neuSpread1_Sheet1.Cells[iRowIndex, (int)ColumnSet.ColTradeNameSpecs].Text = item.Name + "[" + item.Specs + "]";

            //组标记  ...
            this.neuSpread1_Sheet1.Cells[iRowIndex, (int)ColumnSet.ColDoseonce].Text   = execOrder.Order.DoseOnce.ToString();
            this.neuSpread1_Sheet1.Cells[iRowIndex, (int)ColumnSet.ColFrequency].Text  = execOrder.Order.Frequency.Name;
            this.neuSpread1_Sheet1.Cells[iRowIndex, (int)ColumnSet.ColUsage].Text      = execOrder.Order.Usage.Name;
            this.neuSpread1_Sheet1.Cells[iRowIndex, (int)ColumnSet.ColQty].Text        = execOrder.Order.Qty.ToString() + execOrder.Order.Unit;
            this.neuSpread1_Sheet1.Cells[iRowIndex, (int)ColumnSet.ColEmergency].Value = execOrder.Order.IsEmergency;
            this.neuSpread1_Sheet1.Cells[iRowIndex, (int)ColumnSet.ColRecipeDoc].Text  = execOrder.Order.ReciptDoctor.Name;
            this.neuSpread1_Sheet1.Cells[iRowIndex, (int)ColumnSet.ColMemo].Text       = execOrder.Order.Memo;
            this.neuSpread1_Sheet1.Cells[iRowIndex, (int)ColumnSet.ColSortID].Text     = execOrder.Order.SortID.ToString();
            this.neuSpread1_Sheet1.Cells[iRowIndex, (int)ColumnSet.ColExecID].Text     = execOrder.ID;
            this.neuSpread1_Sheet1.Cells[iRowIndex, (int)ColumnSet.ColComboNO].Text    = execOrder.Order.Combo.ID + execOrder.DateUse.ToString();

            this.neuSpread1_Sheet1.Rows[iRowIndex].Tag = execOrder;
            return(1);
        }
        /// <summary>
        /// 更新有效标记 addby xuewj 2009-8-24 恢复误操作的作废项目,以便使患者能正常用药,作废执行档 {01F18F48-887D-4d2a-A0F9-757B61A5B8A6}
        /// </summary>
        /// <param name="RowIndex"></param>
        private void SetValidFlag(int RowIndex, string flag)
        {
            //if (this.neuSpread1_Sheet1.Cells[RowIndex, 3].Text.Trim() == "有效")
            //{
            //    return;
            //}

            if (this.neuSpread1_Sheet1.Cells[RowIndex, 4].Text.Trim() != "未发送")
            {
                MessageBox.Show("只有未发送的药品才可以操作!");
                return;
            }

            DialogResult r;

            if (flag == "0")
            {
                r = MessageBox.Show("确定要恢复该条记录的有效性吗?", "提示", MessageBoxButtons.OKCancel, MessageBoxIcon.Warning, MessageBoxDefaultButton.Button2);
            }
            else
            {
                r = MessageBox.Show("确定要作废该条记录吗?,该操作不可撤销", "提示", MessageBoxButtons.OKCancel, MessageBoxIcon.Warning, MessageBoxDefaultButton.Button2);
            }
            if (r == DialogResult.Cancel)
            {
                return;
            }

            string execOrderID = this.neuSpread1_Sheet1.Cells[RowIndex, 26].Text.Trim();

            if (execOrderID == null || execOrderID.Length <= 0)
            {
                MessageBox.Show("执行流水号为空!");
                return;
            }
            if (flag == "1")
            {
                if (this.neuSpread1_Sheet1.Cells[RowIndex, 3].Text.Trim() != "有效")
                {
                    MessageBox.Show("该条记录已经作废!");
                    return;
                }

                this.myExeOrder = new Neusoft.HISFC.Models.Order.ExecOrder();
                Neusoft.HISFC.Models.Pharmacy.Item objPharmacy = new Neusoft.HISFC.Models.Pharmacy.Item();
                objPharmacy.ID             = this.neuSpread1_Sheet1.Cells[RowIndex, 39].Text;                                                //药品编码
                objPharmacy.Name           = this.neuSpread1_Sheet1.Cells[RowIndex, 5].Text;                                                 //药品名称
                objPharmacy.Specs          = this.neuSpread1_Sheet1.Cells[RowIndex, 6].Text;                                                 //药品规格
                objPharmacy.Memo           = this.neuSpread1_Sheet1.Cells[RowIndex, 21].Text;                                                //取药药房
                this.myExeOrder.Order.Item = objPharmacy;                                                                                    //执行档项目
                this.myExeOrder.Order.Qty  = Neusoft.FrameWork.Function.NConvert.ToDecimal(this.neuSpread1_Sheet1.Cells[RowIndex, 7].Value); //药品数量
                this.myExeOrder.Order.Unit = this.neuSpread1_Sheet1.Cells[RowIndex, 8].Text;                                                 //药品单位
                this.myExeOrder.ID         = execOrderID;

                int _Ret = this.myOrder.DcExecImmediate(this.myExeOrder, this.myOrder.Operator);

                //int _Ret = this.myOrder.UpdateExecValidFlag(execOrderID, true, flag);

                if (_Ret < 0)
                {
                    MessageBox.Show("作废记录出错!");
                    return;
                }

                //_Ret = this.myCharegeBill.DeleteChargeBill(execOrderID);

                //if (_Ret < 0)
                //{
                //    MessageBox.Show("删除出单纪录出错!");
                //    return;
                //}

                MessageBox.Show("作废记录成功!");
                this.ShowData(this.patient.ID);

                if (this.neuSpread1_Sheet1.Cells[RowIndex, 28].Text.Trim() == "已记")
                {
                    MessageBox.Show("该记录已经收费,请退费!");
                }
            }
            else
            {
                int _Ret = this.myOrder.UpdateExecValidFlag(execOrderID, true, "1");

                if (_Ret < 0)
                {
                    MessageBox.Show("恢复记录出错!");
                    return;
                }

                MessageBox.Show("恢复记录成功!");
                this.ShowData(this.patient.ID);
            }
        }
        /// <summary>
        /// 添加一行
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="i"></param>
        /// <returns></returns>
        public int AddRow(object sender, int i)
        {
            if (sender.GetType() != typeof(Neusoft.HISFC.Models.Order.ExecOrder))
            {
                return(-1);
            }

            Neusoft.HISFC.Models.Order.ExecOrder order = sender as Neusoft.HISFC.Models.Order.ExecOrder;
            this.fpSpread.Sheets[0].Rows.Add(i, 1);

            //暂时根据开立时间判断(以后需要增加字段来保存首日量,然后根据开始时间判断) {AB3F34F0-37AF-4e97-9B5A-05A4AD8CE801}
            //if (order.DateUse <= new DateTime(order.Order.BeginTime.Year, order.Order.BeginTime.Month, order.Order.BeginTime.Day, 12, 0, 0))
            if (order.DateUse <= order.Order.MOTime)
            {
                this.fpSpread.Sheets[0].Rows[i].ForeColor = Color.Blue;
            }

            if (this.bIsShowBed)
            {
                this.fpSpread.Sheets[0].SetValue(i, 0, order.Order.Patient.Name + "[" + Classes.Function.BedDisplay(order.Order.Patient.PVisit.PatientLocation.Bed.ID) + "]", false);
            }
            else
            {
                this.fpSpread.Sheets[0].SetValue(i, 0, order.Order.Patient.Name, false);
            }
            if (order.Order.Combo.ID == "0" || order.Order.Combo.ID == "")
            {
            }
            else
            {
                this.fpSpread.Sheets[0].SetValue(i, 3, order.Order.Combo.ID + order.DateUse.ToString(), false);
            }

            if (order.Order.Item.Specs == null || order.Order.Item.Specs == "")//规格
            {
                this.fpSpread.Sheets[0].SetValue(i, 2, order.Order.Item.Name, false);
            }
            else
            {
                this.fpSpread.Sheets[0].SetValue(i, 2, order.Order.Item.Name + "[" + order.Order.Item.Specs + "]", false);
            }
            //药品
            //药品项目
            if (order.Order.Item.GetType() == typeof(Neusoft.HISFC.Models.Pharmacy.Item))
            {
                Neusoft.HISFC.Models.Pharmacy.Item item = (Neusoft.HISFC.Models.Pharmacy.Item)order.Order.Item;
                if (order.Order.OrderType.IsDecompose)                   //长期医嘱
                {
                    if (item.BaseDose != 0 && order.Order.DoseOnce != 0) //草药没有一次剂量,显示付数
                    {
                        decimal d = 0;
                        if (order.Order.Qty == 0)                     //总量为零,可拆分的药
                        {
                            d = order.Order.DoseOnce / item.BaseDose; //长期
                        }
                        else//不可拆分
                        {
                            d = order.Order.Qty;
                        }
                        this.fpSpread.Sheets[0].SetValue(i, 5, d, false);
                        this.fpSpread.Sheets[0].SetValue(i, 6, item.MinUnit, false);
                    }
                    else//草药,中成药,一次剂量为零
                    {
                        if (order.Order.HerbalQty == 0)
                        {
                            order.Order.HerbalQty = 1;
                        }
                        this.fpSpread.Sheets[0].SetValue(i, 5, order.Order.Qty * order.Order.HerbalQty, false); //显示总量
                        if (order.Order.Qty == 0)                                                               //一次剂量为零&&总量为零的 为错误数据
                        {
                            this.fpSpread.Sheets[0].SetValue(i, 6, "基本剂量为零!", false);
                            this.fpSpread.Sheets[0].Cells[i, 6].BackColor = Color.CadetBlue;
                        }
                        else//显示总量及单位
                        {
                            this.fpSpread.Sheets[0].SetValue(i, 6, order.Order.Unit, false);
                        }
                    }
                }
                else//临时医嘱
                {
                    this.fpSpread.Sheets[0].SetValue(i, 5, order.Order.Qty, false);
                    this.fpSpread.Sheets[0].SetValue(i, 6, item.MinUnit, false);
                }
                #region {13EAF764-E1CA-4d5a-8250-056AD1DEE61B}
                //增加取药科室
                this.fpSpread.Sheets[0].Columns[11].Visible = true;
                this.fpSpread.Sheets[0].SetValue(i, 11, this.deptHelper.GetName(order.Order.StockDept.ID), false);//取药科室
                #endregion
            }
            else//非药品
            {
                this.fpSpread.Sheets[0].SetValue(i, 5, order.Order.Qty, false);

                this.fpSpread.Sheets[0].SetValue(i, 6, order.Order.Unit, false);
                #region {13EAF764-E1CA-4d5a-8250-056AD1DEE61B}
                this.fpSpread.Sheets[0].Columns[11].Visible = false;
                #endregion
            }
            this.fpSpread.Sheets[0].SetValue(i, 7, order.Order.Usage.Name, false);
            this.fpSpread.Sheets[0].SetValue(i, 8, order.Order.Frequency.ID, false);
            this.fpSpread.Sheets[0].SetValue(i, 9, order.DateUse.ToString(), false);
            this.fpSpread.Sheets[0].SetValue(i, 10, order.Order.SortID, false);
            #region addby xuewj 2010-10-9 增加医嘱类型列 {CA8705F5-C25E-4126-BF15-F498AE82AFAE}
            this.fpSpread.Sheets[0].SetValue(i, this.ColumnIndexOrderType, this.orderTypeHelper.GetName(order.Order.OrderType.ID), false);
            #endregion
            this.fpSpread.Sheets[0].Rows[i].Tag = order;
            return(0);
        }
示例#8
0
        /// <summary>
        /// 查询
        /// </summary>
        /// <param name="patients"></param>
        /// <param name="usageCode"></param>
        /// <param name="dtBegin"></param>
        /// <param name="dtEnd"></param>
        /// <param name="isPrinted"></param>
        public void Query(List <Neusoft.HISFC.Models.RADT.PatientInfo> patients, string usageCode, DateTime dtBegin, DateTime dtEnd, bool isPrinted)
        {
            #region donggq--2010.10.05--{5A2283DE-279D-4433-AB2F-77B072EEE1D8}

            start = dtBegin;
            end   = dtEnd;

            #endregion

            //给患者列表赋值
            this.myPatients = patients;
            //更改治疗单标题
            this.dwMain.Modify("t_title.text= " + "'" + this.Tag.ToString() + "'");
            #region {0A2D3FF0-85B0-4322-8E0A-9E11D02344EF}
            try
            {
                Neusoft.HISFC.BizProcess.Integrate.Manager managerMgr = new Neusoft.HISFC.BizProcess.Integrate.Manager();
                string hosname = managerMgr.GetHospitalName();
                this.dwMain.Modify("t_hospitalname.text= " + "'" + hosname + "'");
            }
            catch { }
            #endregion
            ArrayList alOrder      = new ArrayList();
            ArrayList al           = new ArrayList();
            string    paramPatient = "";
            //获得in的患者id参数
            for (int i = 0; i < patients.Count; i++)
            {
                Neusoft.HISFC.Models.RADT.PatientInfo p = patients[i] as Neusoft.HISFC.Models.RADT.PatientInfo;
                paramPatient = "'" + p.ID + "'," + paramPatient;
                //获得护理分组

                p.PVisit.PatientLocation.Bed.Memo = manager.GetNurseTendGroupFromBed(p.PVisit.PatientLocation.Bed.ID);

                if (p.PVisit.PatientLocation.Bed == null)
                {
                    MessageBox.Show(manager.Err);
                    return;
                }
            }

            if (paramPatient == "")
            {
                paramPatient = "''";
            }
            else
            {
                paramPatient = paramPatient.Substring(0, paramPatient.Length - 1);//去掉后面的逗号
            }

            #region {D05A3C7C-1CA1-4b9a-96B6-5D3018CF8FD7}
            Neusoft.FrameWork.Models.NeuObject execBillInfo = this.execBillManager.GetExecBillInfoByBillNO(usageCode);
            if (execBillInfo == null || execBillInfo.ID == "")
            {
                MessageBox.Show("查询执行信息失败!" + this.execBillManager.Err);
                return;
            }
            if (execBillInfo.Memo == "1")
            {
                alOrder = this.orderManager.QueryOrderExecBillForSingle(paramPatient, dtBegin, dtEnd, usageCode, isPrinted);
            }
            else
            {
                alOrder = this.orderManager.QueryOrderExecBill(paramPatient, dtBegin, dtEnd, usageCode, isPrinted);//查询医嘱,传入参数
            }
            #endregion

            this.curValues = alOrder;

            #region 将同一条医嘱合并在一起
            ArrayList alTemp = alOrder.Clone() as ArrayList;
            alOrder = new ArrayList();
            for (int k = 0; k < alTemp.Count; k++)
            {
                if (isPrinted && ((Neusoft.HISFC.Models.Order.ExecOrder)alTemp[k]).Order.BeginTime.Date < dtBegin.Date &&
                    ((Neusoft.HISFC.Models.Order.ExecOrder)alTemp[k]).DateUse < new DateTime(dtBegin.Year, dtBegin.Month, dtBegin.Day, 12, 1, 0))
                {
                    continue;//去掉非首日量的,使用时间小于今天12点的时间
                }

                bool isHave = false;

                TimeSpan span;
                string   sMing = "";
                for (int j = 0; j < alOrder.Count; j++)
                {
                    sMing = "";
                    if (((Neusoft.HISFC.Models.Order.ExecOrder)alOrder[j]).Order.ID == ((Neusoft.HISFC.Models.Order.ExecOrder)alTemp[k]).Order.ID)
                    {
                        if (((Neusoft.HISFC.Models.Order.ExecOrder)alOrder[j]).Order.Memo.Length > 2 &&
                            ((Neusoft.HISFC.Models.Order.ExecOrder)alOrder[j]).Order.Memo.Substring(0, 2) == "时间")
                        {
                            //特殊频次
                        }
                        else
                        {
                            isHave = true;//包含添加时间
                            span   = new TimeSpan(((Neusoft.HISFC.Models.Order.ExecOrder)alTemp[k]).DateUse.Date.Ticks - dtBegin.Date.Ticks);
                            if (span.Days == 1)
                            {
                                sMing = "明";
                            }
                            if (span.Days == 2)
                            {
                                sMing = "后";
                            }
                            if (span.Days > 2)
                            {
                                sMing = "[" + ((Neusoft.HISFC.Models.Order.ExecOrder)alTemp[k]).DateUse.Day.ToString() + "日]";
                            }
                            ((Neusoft.HISFC.Models.Order.ExecOrder)alOrder[j]).Memo += "," + sMing + ((Neusoft.HISFC.Models.Order.ExecOrder)alTemp[k]).DateUse.Hour.ToString().PadLeft(2, '0');
                            break;
                        }
                    }
                }
                if (!isHave)
                {
                    span = new TimeSpan(((Neusoft.HISFC.Models.Order.ExecOrder)alTemp[k]).DateUse.Date.Ticks - dtBegin.Date.Ticks);
                    if (span.Days == 1)
                    {
                        sMing = "明";
                    }
                    if (span.Days == 2)
                    {
                        sMing = "后";
                    }
                    if (span.Days > 2)
                    {
                        sMing = "[" + ((Neusoft.HISFC.Models.Order.ExecOrder)alTemp[k]).DateUse.Day.ToString() + "日]";
                    }
                    if (((Neusoft.HISFC.Models.Order.ExecOrder)alTemp[k]).Order.OrderType.Type == Neusoft.HISFC.Models.Order.EnumType.LONG)//临时医嘱暂时不显示执行时间 by zuowy
                    {
                        ((Neusoft.HISFC.Models.Order.ExecOrder)alTemp[k]).Memo = sMing + ((Neusoft.HISFC.Models.Order.ExecOrder)alTemp[k]).DateUse.Hour.ToString().PadLeft(2, '0');
                    }
                    alOrder.Add(alTemp[k]);
                }

                #endregion
            }
            string    Combno = "";
            ArrayList alComb = new ArrayList();
            #region 至组合号
            for (int j = 0; j < alOrder.Count; j++)
            {
                Neusoft.HISFC.Models.Order.ExecOrder obj;

                obj = (Neusoft.HISFC.Models.Order.ExecOrder)alOrder[j];
                for (int kk = 0; kk < patients.Count; kk++)
                {
                    if (((Neusoft.FrameWork.Models.NeuObject)patients[kk]).ID == obj.Order.Patient.ID)
                    {
                        obj.Order.Patient = ((Neusoft.HISFC.Models.RADT.PatientInfo)patients[kk]).Clone();
                        break;
                    }
                }
                //判断组合
                if (obj.Order.Combo.ID != "0" && obj.Order.Combo.ID != "")
                {
                    if (Combno != obj.Order.Combo.ID + obj.DateUse.ToString())
                    {
                        //非组合
                        if (alComb.Count == 1)
                        {
                            al.Add((Neusoft.HISFC.Models.Order.ExecOrder)alComb[0]);
                        }
                        //组合
                        else if (alComb.Count > 1)
                        {
                            for (int n = 0; n < alComb.Count; n++)
                            {
                                Neusoft.HISFC.Models.Order.ExecOrder objC;
                                objC = (Neusoft.HISFC.Models.Order.ExecOrder)alComb[n];
                                if (n == 0)
                                {
                                    objC.Order.Combo.Memo = "┏";
                                }
                                else if (n == alComb.Count - 1)
                                {
                                    objC.Order.Combo.Memo = "┗";
                                }
                                else
                                {
                                    objC.Order.Combo.Memo = "┃";
                                }
                                al.Add(objC);
                            }
                        }
                        alComb = new ArrayList();
                        alComb.Add(obj);
                        Combno = obj.Order.Combo.ID + obj.DateUse.ToString();
                        if (j == alOrder.Count - 1)
                        {
                            al.Add(obj);                        //最后一条
                        }
                    }
                    else
                    {
                        alComb.Add(obj);
                        if (j == alOrder.Count - 1)
                        {
                            for (int row = 0; row < alComb.Count; row++)
                            {
                                Neusoft.HISFC.Models.Order.ExecOrder exe = alComb[row] as Neusoft.HISFC.Models.Order.ExecOrder;
                                if (alComb.Count == 1)
                                {
                                    al.Add(exe);
                                    break;
                                }
                                if (row == 0)
                                {
                                    exe.Order.Combo.Memo = "┏";
                                }
                                else if (row == alComb.Count - 1)
                                {
                                    exe.Order.Combo.Memo = "┗";
                                }
                                else
                                {
                                    exe.Order.Combo.Memo = "┃";
                                }
                                al.Add(exe);
                            }
                        }
                    }
                }
                else
                {
                    al.Add(obj);
                }
            }
            #endregion
            if (this.dwMain.RowCount > 0)
            {
                this.dwMain.Reset();
            }
            this.SetValues(al);
            this.dwMain.CalculateGroups();
            return;
        }
示例#9
0
        /// <summary>
        /// 更新查询显示
        /// </summary>
        /// <returns></returns>
        protected int RefreshQuery()
        {
            if (this.cmbDept.Tag == null || this.cmbDept.Tag.ToString() == "")
            {
                MessageBox.Show("请先选择科室!");
                return(0);
            }

            Neusoft.FrameWork.WinForms.Classes.Function.ShowWaitForm("正在查询,请稍候...");
            Application.DoEvents();
            ArrayList alOrders = null;

            this.fpOrderExecBrowser1.fpSpread.Sheets[0].RowCount = 0;

            alOrders = orderManager.QureyExecOrderNeedSendDrug(this.cmbDept.Tag.ToString());//查询未发药的
            if (alOrders == null)
            {
                MessageBox.Show(orderManagement.Err);
                return(-1);
            }
            string pid = "";

            Neusoft.HISFC.Models.RADT.PatientInfo p = new Neusoft.HISFC.Models.RADT.PatientInfo();
            for (int j = 0; j < alOrders.Count; j++)
            {
                Neusoft.HISFC.Models.Order.ExecOrder order = alOrders[j] as Neusoft.HISFC.Models.Order.ExecOrder;

                #region
                //"每次重新取患者信息 只记录患者姓名、床号 否则 在原科室分解后发生转科的时候,药应该发送到原科室 ,取科室后发送到新科室去了"
                if (pid != order.Order.Patient.ID)
                {
                    pid = order.Order.Patient.ID;
                    p   = radtManager.GetPatientInfomation(pid);
                    if (p == null)
                    {
                        MessageBox.Show("获得患者住院号出错!\n" + radtManager.Err);
                        return(-1);
                    }
                    order.Order.Patient.Name = p.Name;
                    order.Order.Patient.PVisit.PatientLocation.Bed.ID = p.PVisit.PatientLocation.Bed.ID;
                }
                else
                {
                    order.Order.Patient.Name = p.Name;
                    order.Order.Patient.PVisit.PatientLocation.Bed.ID = p.PVisit.PatientLocation.Bed.ID;
                }
                #endregion

                if (order.IsCharge)
                { //显示已经收费的
                    if (this.rdoTemp.Checked)
                    {
                        if (order.Order.OrderType.Type == Neusoft.HISFC.Models.Order.EnumType.SHORT)
                        {
                            this.fpOrderExecBrowser1.AddRow(order);
                        }
                    }
                    else
                    {
                        this.fpOrderExecBrowser1.AddRow(order);
                    }
                }
            }
            this.fpOrderExecBrowser1.RefreshComboNo();
            Neusoft.FrameWork.WinForms.Classes.Function.HideWaitForm();
            bool b = true;//全选
            for (int i = 0; i < this.fpOrderExecBrowser1.fpSpread.Sheets[0].Rows.Count; i++)
            {
                this.fpOrderExecBrowser1.fpSpread.Sheets[0].Cells[i, this.fpOrderExecBrowser1.ColumnIndexSelection].Value = b;
            }
            return(0);
        }
        /// <summary>
        /// 查询
        /// </summary>
        /// <param name="patients"></param>
        /// <param name="usageCode"></param>
        /// <param name="dtBegin"></param>
        /// <param name="dtEnd"></param>
        /// <param name="isPrinted"></param>
        public void Query(List <Neusoft.HISFC.Models.RADT.PatientInfo> patients, string usageCode, DateTime dtBegin, DateTime dtEnd, bool isPrinted)
        {
            ArrayList al = new ArrayList();//获得的全部信息

            for (int i = 0; i < patients.Count; i++)
            {
                ArrayList alOrder = orderManager.QueryOrderExec(((Neusoft.FrameWork.Models.NeuObject)patients[i]).ID, dtBegin, dtEnd, usageCode, isPrinted);
                if (alOrder == null) //为提示出错
                {
                    MessageBox.Show(orderManager.Err);
                    return;
                }

                string    strDiff     = "";             //分组用
                ArrayList alObjects   = null;           //分组用
                int       iComboNum   = 0;
                int       MaxComboNum = 8;              //每页最多4个药 addby xuewj 2010-9-28 {4628BA40-7AB2-4396-80E8-9BB361B36496} 瓶贴打印
                int       iPage       = 0;              //分页用
                for (int j = 0; j < alOrder.Count; j++) //医嘱信息
                {
                    //赋全患者信息
                    ((Neusoft.HISFC.Models.Order.ExecOrder)alOrder[j]).Order.Patient = ((Neusoft.HISFC.Models.RADT.PatientInfo)patients[i]).Clone();//患者信息付数值
                    //按组合分组给输液卡对象
                    if (((Neusoft.HISFC.Models.Order.ExecOrder)alOrder[j]).Order.Combo.ID != "0" &&
                        ((Neusoft.HISFC.Models.Order.ExecOrder)alOrder[j]).Order.Combo.ID != "")
                    {
                        if (strDiff != ((Neusoft.HISFC.Models.Order.ExecOrder)alOrder[j]).Order.Combo.ID +
                            ((Neusoft.HISFC.Models.Order.ExecOrder)alOrder[j]).DateUse.ToString())
                        {
                            iComboNum = 0;
                            if (alObjects != null)
                            {
                                al.Add(alObjects);  //不同的
                            }
                            alObjects = new ArrayList();

                            strDiff = ((Neusoft.HISFC.Models.Order.ExecOrder)alOrder[j]).Order.Combo.ID + ((Neusoft.HISFC.Models.Order.ExecOrder)alOrder[j]).DateUse.ToString();
                            alObjects.Add(alOrder[j]);

                            iPage = 1;                                                                    //分页页码第一页

                            ((Neusoft.HISFC.Models.Order.ExecOrder)alOrder[j]).User01 = iPage.ToString(); //存页码
                        }
                        else//相同的
                        {
                            iComboNum++;
                            if ((iComboNum % MaxComboNum) == 0)
                            {
                                if (alObjects != null)
                                {
                                    al.Add(alObjects);  //分页
                                }
                                alObjects = new ArrayList();
                            }
                            iPage = (int)(iComboNum / MaxComboNum) + 1;//分页页码

                            ((Neusoft.HISFC.Models.Order.ExecOrder)alOrder[j]).User01 = iPage.ToString();

                            alObjects.Add(alOrder[j]);
                        }
                    }
                    else//没有组合号的
                    {
                        if (alObjects != null)
                        {
                            al.Add(alObjects);
                        }
                        alObjects = new ArrayList();
                        alObjects.Add(alOrder[j]);
                        iPage = 1;//分页页码第一页

                        ((Neusoft.HISFC.Models.Order.ExecOrder)alOrder[j]).User01 = iPage.ToString();
                    }
                }
                if (alObjects != null)
                {
                    al.Add(alObjects);
                }
            }

            int iPages = 1;

            for (int i = al.Count - 1; i >= 0; i--)
            {
                ArrayList alTemp = al[i] as ArrayList;
                Neusoft.HISFC.Models.Order.ExecOrder order = alTemp[0] as Neusoft.HISFC.Models.Order.ExecOrder;
                if (Neusoft.FrameWork.Function.NConvert.ToInt32(order.User01) > 1)
                {
                    if (iPages > 1)//已经有最高页了
                    {
                        order.User02 = iPages.ToString();
                    }
                    else//新的
                    {
                        iPages       = Neusoft.FrameWork.Function.NConvert.ToInt32(order.User01);//获得最高页
                        order.User02 = iPages.ToString();
                    }
                }
                else if (Neusoft.FrameWork.Function.NConvert.ToInt32(order.User01) <= 1) //到第一页了
                {
                    order.User02 = iPages.ToString();
                    iPages       = 1;
                }
            }

            this.SetValues(al);

            this.isPrint = isPrinted;//是否补打
            usage        = usageCode;
            dt1          = dtBegin;
            dt2          = dtEnd;
            myPatients   = patients;
        }