public ServiceResponseData GetExecuteBills()
        {
            DrugStoreManagement model = NewObject <DrugStoreManagement>();
            DataTable           dt    = model.GetExecuteBills();

            responseData.AddData(dt);
            return(responseData);
        }
        public ServiceResponseData GetFeeItemDetail()
        {
            var feeItemHeadId         = requestData.GetData <int>(0);//费用主表Id
            DrugStoreManagement model = NewObject <DrugStoreManagement>();
            DataTable           dt    = model.GetFeeItemDetail(feeItemHeadId);

            responseData.AddData(dt);
            return(responseData);
        }
        public ServiceResponseData GetRefundQueryDetail()
        {
            var queryCondition        = requestData.GetData <Dictionary <string, string> >(0);
            DrugStoreManagement model = NewObject <DrugStoreManagement>();
            DataTable           dt    = model.GetRefundDetail(queryCondition);

            responseData.AddData(dt);
            return(responseData);
        }
        public ServiceResponseData GetFeeItemHead()
        {
            var invoiceNO             = requestData.GetData <string>(0);
            var deptId                = requestData.GetData <int>(1);
            DrugStoreManagement model = NewObject <DrugStoreManagement>();
            DataTable           dt    = model.GetFeeItemHead(invoiceNO, deptId);

            responseData.AddData(dt);
            return(responseData);
        }
        public ServiceResponseData QueryPatientInfo()
        {
            var code                  = requestData.GetData <string>(0); //发票号或会员卡号
            var execDeptId            = requestData.GetData <int>(1);    //执行科室Id
            var distributeFlag        = requestData.GetData <int>(2);
            DrugStoreManagement model = NewObject <DrugStoreManagement>();
            DataTable           dt    = model.QueryPatientInfo(code, execDeptId, distributeFlag);

            responseData.AddData(dt);
            return(responseData);
        }
Example #6
0
        public ServiceResponseData IsDrugStore()
        {
            List <IPD_OrderRecord> records    = requestData.GetData <List <IPD_OrderRecord> >(0);
            List <IPD_OrderRecord> errRecords = new List <IPD_OrderRecord>();
            DrugStoreManagement    drugStore  = NewObject <DrugStoreManagement>();

            foreach (IPD_OrderRecord record in records)
            {
                if (record.ItemType == 1)
                {
                    if (drugStore.GetStorage(record.ItemID, record.ExecDeptID) < record.Amount * record.UnitNO)
                    {
                        errRecords.Add(record);
                    }
                }
            }

            responseData.AddData(errRecords);
            return(responseData);
        }
        /// <summary>
        /// 药品收费后减虚拟库库存
        /// </summary>
        /// <param name="prescriptions">处方信息</param>
        /// <param name="isAdd">true加库存false减库存</param>
        public void MinisStorage(List <Prescription> prescriptions, bool isAdd)
        {
            foreach (Prescription presc in prescriptions)
            {
                if (Convert.ToInt32(presc.ItemType) == (int)OP_Enum.ItemType.药品)
                {
                    DrugStoreManagement drugManager = NewObject <DrugStoreManagement>();

                    //退费减虚拟库存
                    if (isAdd)
                    {
                        drugManager.UpdateStorage(presc.ItemID, presc.ExecDeptID, presc.Amount);
                    }
                    else
                    {
                        drugManager.UpdateStorage(presc.ItemID, presc.ExecDeptID, presc.Amount * (-1));
                    }
                }
            }
        }
        public ServiceResponseData OPDisp()
        {
            List <DS_OPDispHead> dispHead  = new List <DS_OPDispHead>();
            DataTable            dtFeeHead = requestData.GetData <DataTable>(0);
            int    sendEmpID   = requestData.GetData <int>(1);
            string sendEmpName = requestData.GetData <string>(2);
            int    deptId      = requestData.GetData <int>(3);
            string feeHeadIds  = "(";

            foreach (DataRow row in dtFeeHead.Rows)
            {
                DS_OPDispHead       modelHead = new DS_OPDispHead();
                DrugStoreManagement model     = NewObject <DrugStoreManagement>();
                if (model.HasRefund(row["InvoiceNO"].ToString()))
                {
                    throw new Exception("本张单据不能发药,存在退费记录,请进行退费操作");
                }

                modelHead.BillNO         = 0;
                modelHead.BusiType       = DGConstant.OP_DS_OPDISPENSE;
                modelHead.RetailFee      = Convert.ToDecimal(row["TotalFee"]);
                modelHead.PatListID      = Convert.ToInt32(row["PatListID"]);
                modelHead.PatName        = row["PatName"].ToString();
                modelHead.PatSex         = row["PatSex"].ToString();
                modelHead.Diagnose       = row["DiseaseName"].ToString();
                modelHead.PatAge         = row["Age"].ToString();
                modelHead.PresDocID      = Convert.ToInt32(row["PresEmpID"]);
                modelHead.PresDocName    = row["PresEmpName"].ToString();
                modelHead.PresDeptID     = Convert.ToInt32(row["PresDeptID"]);
                modelHead.PresDeptName   = row["PresDeptName"].ToString();
                modelHead.DispenserID    = sendEmpID;
                modelHead.DispenserName  = sendEmpName;
                modelHead.PharmacistID   = sendEmpID;
                modelHead.PharmacistName = sendEmpName;
                modelHead.RefundFlag     = 0;//发药0退药1
                modelHead.DispTime       = System.DateTime.Now;
                modelHead.FeeNO          = row["FeeNo"].ToString();
                modelHead.InvoiceNO      = row["InvoiceNO"].ToString();
                modelHead.ChargeTime     = Convert.ToDateTime(row["ChargeDate"]);
                modelHead.ChargeEmpID    = Convert.ToInt32(row["ChargeEmpID"]);
                modelHead.ChargeEmpName  = row["ChargeEmpName"].ToString();
                modelHead.FeeItemHeadID  = Convert.ToInt32(row["CostHeadID"]);
                modelHead.RecipeID       = Convert.ToInt32(row["FeeItemHeadID"]);
                modelHead.RecipeType     = row["PresType"].ToString();
                modelHead.RecipeAmount   = Convert.ToInt32(row["PresAmount"]);
                modelHead.DeptID         = deptId;
                dispHead.Add(modelHead);
                feeHeadIds += row["FeeItemHeadID"].ToString() + ",";
            }

            feeHeadIds = feeHeadIds.Substring(0, feeHeadIds.Length - 1) + ")";

            //获取该结算单所有明细记录
            List <DS_OPDispDetail> dispDetail = ConvertFeeDetailModel(feeHeadIds, deptId);
            OPDispBill             iProcess   = NewObject <OPDispBill>();
            DGBillResult           rtn        = new DGBillResult();

            try
            {
                oleDb.BeginTransaction();
                rtn = iProcess.OPDisp(dispHead, dispDetail, sendEmpID);
                if (rtn.Result == 0)
                {
                    oleDb.CommitTransaction();
                }
                else
                {
                    oleDb.RollbackTransaction();
                }

                responseData.AddData(rtn);
            }
            catch (Exception error)
            {
                oleDb.RollbackTransaction();
                rtn.ErrMsg = error.Message;
                rtn.Result = 2;
                responseData.AddData(rtn);
            }

            return(responseData);
        }
Example #9
0
        /// <summary>
        /// 处方保存
        /// </summary>
        /// <param name="curPalist">病人对象</param>
        /// <param name="prescriptions">处方对象</param>
        /// <param name="feeHeadCount">费用头ID</param>
        /// <param name="operatorid">操作员ID</param>
        public void SavePrescription(OP_PatList curPalist, List <Prescription> prescriptions, List <int> feeHeadCount, int operatorid)
        {
            try
            {
                DrugStoreManagement drugManager = NewObject <DrugStoreManagement>();
                DateTime            presdate    = DateTime.Now;
                for (int i = 0; i < feeHeadCount.Count; i++)
                {
                    int groupid = feeHeadCount[i];
                    List <Prescription> presModifyDetails = prescriptions.Where(p => p.PrescGroupID == groupid && p.SubTotalFlag == 0 && p.ModifyFlag == 1).ToList();
                    if (presModifyDetails.Count == 0)
                    {
                        continue;
                    }

                    List <Prescription> presDetails = prescriptions.Where(p => p.PrescGroupID == groupid && p.SubTotalFlag == 0).ToList();
                    if (presDetails.Count > 0)
                    {
                        OP_FeeItemHead feeitemHead = new OP_FeeItemHead();

                        //OP_FeeItemHead赋值
                        SetFeeHeadValue(feeitemHead, presDetails[0], curPalist);
                        feeitemHead.ChargeEmpID = operatorid;
                        decimal roundingMoney = 0;
                        feeitemHead.TotalFee    = NewObject <PrescMoneyCalculate>().GetPrescriptionTotalMoney(presDetails, out roundingMoney);
                        feeitemHead.RoungingFee = roundingMoney;
                        if (feeitemHead.DocPresHeadID > 0)
                        {
                            feeitemHead.PresDate = presDetails[0].DocPresDate;
                        }
                        else
                        {
                            feeitemHead.PresDate = presdate;
                        }

                        feeitemHead.RegFlag = 0;
                        if (feeitemHead.FeeItemHeadID == 0)
                        {
                            feeitemHead.FeeNo = DateTime.Now.Ticks;// Convert.ToDecimal( DateTime.Now.ToString("yyyyMMddHHmmssffff"));// GetTimeStamp();//生成费用流水号
                        }

                        if (Convert.ToInt32(presDetails[0].ItemType) == (int)OP_Enum.ItemType.药品)
                        {
                            if (presDetails[0].StatID == 100)
                            {
                                feeitemHead.PresType = "1";//西药处方
                            }
                            else if (presDetails[0].StatID == 101)
                            {
                                feeitemHead.PresType = "2";//中成药处方
                            }
                            else if (presDetails[0].StatID == 102)
                            {
                                feeitemHead.PresType = "3";//中草药处方
                            }
                        }
                        else
                        {
                            feeitemHead.PresType = "0";//非药品处方
                        }

                        this.BindDb(feeitemHead);
                        feeitemHead.save();

                        for (int j = 0; j < prescriptions.Count; j++)
                        {
                            if (prescriptions[j].PrescGroupID == groupid && prescriptions[j].SubTotalFlag == 0)
                            {
                                OP_FeeItemDetail feeDetail = new OP_FeeItemDetail();

                                //OP_FeeItemDetail赋值
                                SetFeeDetailValue(feeDetail, prescriptions[j], curPalist);
                                if (feeDetail.Amount == 0)
                                {
                                    throw new Exception("【" + feeDetail.ItemName + "】数量为零,请输入一个大于零的数");
                                }

                                if (Convert.ToInt32(feeDetail.ItemType) == (int)ItemType.药品 && prescriptions[j].Selected == 1)
                                {
                                    //判断实时库存
                                    decimal storAmount = drugManager.GetStorage(feeDetail.ItemID, feeitemHead.ExecDeptID);
                                    if (storAmount < feeDetail.Amount)
                                    {
                                        throw new Exception("【" + feeDetail.ItemName + "】库存不足,请重新输入");
                                    }
                                }

                                feeDetail.FeeItemHeadID = feeitemHead.FeeItemHeadID;
                                this.BindDb(feeDetail);
                                feeDetail.save();
                                prescriptions[j].FeeItemHeadID = feeitemHead.FeeItemHeadID;
                                prescriptions[j].PresDetailID  = feeDetail.PresDetailID;
                                prescriptions[j].FeeNo         = feeitemHead.FeeNo;
                                prescriptions[j].ModifyFlag    = 0;
                            }
                        }

                        this.BindDb(curPalist);
                        curPalist.save();
                    }
                }
            }
            catch (Exception err)
            {
                throw new Exception(err.Message);
            }
        }