예제 #1
0
        public ServiceResponseData GetRegItemShowCard()
        {
            FeeItemDataSource feeitem = NewObject <FeeItemDataSource>();
            DataTable         dt      = feeitem.GetSimpleFeeItemDataDt(FeeBusinessType.记账业务);

            responseData.AddData(dt);
            return(responseData);
        }
예제 #2
0
        public ServiceResponseData GetShowCardData()
        {
            int orderCategory            = requestData.GetData <int>(0);
            FeeItemDataSource feeitem    = NewObject <FeeItemDataSource>();
            DataTable         dtDrugItem = feeitem.GetFeeItemDataDt(FeeBusinessType.医嘱业务);

            responseData.AddData(dtDrugItem);
            return(responseData);
        }
예제 #3
0
        public ServiceResponseData GetExamItemDetailDt()
        {
            int examItemID                 = requestData.GetData <int>(0);
            FeeItemDataSource feeitem      = NewObject <FeeItemDataSource>();
            DataTable         dtDetailItem = feeitem.GetExamItemDetailDt(examItemID);

            responseData.AddData(dtDetailItem);//药品项目选项卡数据
            return(responseData);
        }
예제 #4
0
        public ServiceResponseData GetRegItemShowCard()
        {
            FeeItemDataSource feeitem   = NewObject <FeeItemDataSource>();
            DataTable         dt        = feeitem.GetSimpleFeeItemDataDt(FeeBusinessType.记账业务);// EFWCoreLib.CoreFrame.Common.ConvertExtend.ToDataTable(feeitem.GetSimpleFeeItemData(FeeBusinessType.记账业务));
            string            regStatID = NewObject <CommonMethod>().GetOpConfig(OpConfigConstant.RegFeeStatID);
            DataView          dv        = dt.DefaultView;

            if (!string.IsNullOrEmpty(regStatID))
            {
                dv.RowFilter = " statid in (" + regStatID + ")";
            }

            responseData.AddData(dv.Table);
            return(responseData);
        }
예제 #5
0
        /// <summary>
        /// 医嘱本身费用
        /// </summary>
        /// <param name="record">医嘱对象</param>
        /// <param name="dtDrugItem">药品项目数据</param>
        /// <param name="ipPatlist">病人对象</param>
        private void GenerateFee(IPD_OrderRecord record, DataTable dtDrugItem, IP_PatList ipPatlist)
        {
            if (record.ItemType == 4)
            {
                #region 组合项目明细费用生成
                FeeItemDataSource feeDataSource = NewObject <FeeItemDataSource>();
                DataTable         dtDetailItem  = feeDataSource.GetExamItemDetailDt(record.ItemID);
                for (int index = 0; index < dtDetailItem.Rows.Count; index++)
                {
                    int       feeitemId = Convert.ToInt32(dtDetailItem.Rows[index]["ITEMID"]);
                    decimal   amount    = Convert.ToDecimal(dtDetailItem.Rows[index]["ItemAmount"]);
                    DataRow[] rows      = dtDrugItem.Select(" ItemID=" + feeitemId);
                    if (rows.Length < 1)
                    {
                        continue;
                    }

                    IP_FeeItemGenerate feeItem = GenerateRecordFee(amount, 1, record, ipPatlist, rows[0]);
                    feeItem.FeeSource   = 1;
                    feeItem.CalCostMode = 0;
                    this.BindDb(feeItem);
                    feeItem.save();
                }
                #endregion
            }
            else
            {
                #region 医嘱本身费用生成
                if (record.ItemID <= 0 || record.StatID == 0 || record.ItemType == 5)
                {
                    return;
                }

                DataRow[] rows = dtDrugItem.Select(" ItemID=" + record.ItemID);
                if (rows.Length < 1)
                {
                    return;
                }

                IP_FeeItemGenerate feeItem = GenerateRecordFee(record.Amount * record.UnitNO, Convert.ToInt32(record.DoseNum), record, ipPatlist, rows[0]);
                feeItem.FeeSource   = 0;
                feeItem.CalCostMode = 0;
                this.BindDb(feeItem);
                feeItem.save();
                #endregion
            }
        }
예제 #6
0
        public ServiceResponseData GetDrugItemShowCard()
        {
            FeeItemDataSource feeitem = NewObject <FeeItemDataSource>();
            string            obj     = NewObject <CommonMethod>().GetOpConfig(OpConfigConstant.HasOpDSystem); //判断是否上医生站,上了医生站不能录入药品和组合项目

            if (Convert.ToInt32(obj) == 0)
            {
                DataTable dtDrugItem = feeitem.GetSimpleFeeItemDataDt(FeeBusinessType.处方业务); //项目和药品选项卡来源数据
                responseData.AddData(dtDrugItem);                                            //药品项目选项卡数据
            }
            else
            {
                DataTable dtDrugItem = feeitem.GetSimpleFeeItemDataDt(FeeBusinessType.基础业务); //项目和药品选项卡来源数据
                responseData.AddData(dtDrugItem);                                            //药品项目选项卡数据
            }

            return(responseData);
        }
예제 #7
0
        public ServiceResponseData OrderDataInit()
        {
            int orderCategory            = requestData.GetData <int>(0);
            FeeItemDataSource feeitem    = NewObject <FeeItemDataSource>();
            DataTable         dtDrugItem = feeitem.GetFeeItemDataDt(FeeBusinessType.医嘱业务);

            responseData.AddData(dtDrugItem);

            List <Basic_Channel> list = NewObject <Basic_Channel>().getlist <Basic_Channel>(" DelFlag=0 and InUsed=1");

            responseData.AddData(list);

            List <Basic_Frequency> listFre = NewObject <Basic_Frequency>().getlist <Basic_Frequency>(" DelFlag=0");

            responseData.AddData(listFre);

            List <Basic_Entrust> listEntrust = NewObject <Basic_Entrust>().getlist <Basic_Entrust>(" DelFlag=0");

            responseData.AddData(listEntrust);
            return(responseData);
        }
예제 #8
0
        /// <summary>
        /// 保存医技申请
        /// </summary>
        /// <param name="head">申请头实体</param>
        /// <param name="itemData">项目数据</param>
        /// <param name="dt">明细数据</param>
        /// <returns>申请头id</returns>
        public int SaveMedicalApply(EXA_MedicalApplyHead head, DataTable itemData, DataTable dt)
        {
            DataRow dr = null;

            head.Remark = GetItemName(itemData);
            DeleteData(itemData, dt);
            if (dt != null)
            {
                head.ApplyHeadID = Convert.ToInt32(dt.Rows[0]["ApplyHeadID"].ToString());
            }

            this.BindDb(head);
            head.save();
            int          headid   = head.ApplyHeadID;
            OPD_PresHead presHead = new OPD_PresHead();

            if (head.SystemType == 0)
            {
                if (dt != null)
                {
                    presHead.PresHeadID = Convert.ToInt32(dt.Rows[0]["PresHeadID"].ToString());
                }

                presHead.MemberID  = head.MemberID;
                presHead.PatListID = head.PatListID;
                presHead.PresType  = 4;
                BindDb(presHead);
                int presheadid = presHead.save();
                NewObject <PrescriptionProcess>().UpdatePatCurrentDoctorID(head.PatListID, head.ApplyDoctorID, head.ApplyDeptID);
            }

            for (int i = 0; i < itemData.Rows.Count; i++)
            {
                dr = NewDao <IOPDDao>().GetPresNO().Rows[0];
                int             predetailid = 0;
                OPD_PresDetail  presdetail  = new OPD_PresDetail();
                IPD_OrderRecord orderRecord = new IPD_OrderRecord();
                DataRow         detaildr    = null;
                DataTable       orderdt     = NewDao <IOPDDao>().GetStatID(itemData.Rows[i]["ExamItemID"].ToString());
                if (dt != null)
                {
                    detaildr = dt.Select("ItemID=" + Convert.ToInt32(itemData.Rows[i]["ExamItemID"].ToString())).FirstOrDefault();
                }

                if (head.SystemType == 0)
                {
                    if (detaildr != null)
                    {
                        presdetail.PresDetailID = Convert.ToInt32(detaildr["PresDetailID"]);
                    }

                    if (head.ApplyType == 2)
                    {
                        presdetail.Price        = Convert.ToDecimal(itemData.Rows[i]["Price"].ToString()) * Convert.ToInt32(itemData.Rows[i]["Amount"].ToString());
                        presdetail.ChargeAmount = Convert.ToInt32(itemData.Rows[i]["Amount"].ToString());
                        presdetail.PresAmount   = Convert.ToInt32(itemData.Rows[i]["Amount"].ToString());
                    }
                    else
                    {
                        presdetail.Price        = Convert.ToDecimal(itemData.Rows[i]["Price"].ToString());
                        presdetail.ChargeAmount = 1;
                        presdetail.PresAmount   = 1;
                    }

                    presdetail.DoseNum    = 1;
                    presdetail.PresHeadID = presHead.PresHeadID;
                    presdetail.ItemID     = Convert.ToInt32(itemData.Rows[i]["ExamItemID"].ToString());
                    presdetail.ItemName   = itemData.Rows[i]["ExamItemName"].ToString();
                    presdetail.ExecDeptID = head.ExecuteDeptID;
                    presdetail.StatID     = Convert.ToInt32(orderdt.Rows[0]["StatID"]);
                    if (dr != null)
                    {
                        if (dr["PresNO"] == null || dr["PresNO"].ToString() == string.Empty)
                        {
                            presdetail.PresNO = 1;
                        }
                        else
                        {
                            presdetail.PresNO = Convert.ToInt32(dr["PresNO"]) + 1;
                        }
                    }

                    presdetail.IsEmergency    = 0;
                    presdetail.IsLunacyPosion = 0;
                    presdetail.PresDate       = head.ApplyDate;
                    presdetail.PresDeptID     = head.ApplyDeptID;
                    presdetail.PresDoctorID   = head.ApplyDoctorID;
                    BindDb(presdetail);
                    predetailid = presdetail.save();
                    if (presdetail.PresDetailID > 0)
                    {
                        predetailid = presdetail.PresDetailID;
                    }
                }
                else
                {
                    if (detaildr != null)
                    {
                        orderRecord.OrderID = Convert.ToInt32(detaildr["PresDetailID"]);
                    }

                    DataTable          ipPatlist          = NewDao <IOPDDao>().GetInBedPatient(head.PatListID);
                    SerialNumberSource serialNumberSource = NewObject <SerialNumberSource>();
                    string             groupID            = serialNumberSource.GetSerialNumber(SnType.医嘱组号);
                    orderRecord.GroupID       = Convert.ToInt32(groupID);
                    orderRecord.ExecDeptID    = head.ExecuteDeptID;
                    orderRecord.OrderCategory = 1;
                    orderRecord.CancelFlag    = 0;
                    orderRecord.DeleteFlag    = 0;
                    orderRecord.AstFlag       = -1;
                    orderRecord.DoseNum       = 1;
                    orderRecord.Dosage        = 1;
                    // orderRecord.DosageUnit = itemData.Rows[i][""].ToString();
                    orderRecord.OrderStatus = 1;
                    orderRecord.PatDeptID   = Convert.ToInt32(ipPatlist.Rows[0]["CurrDeptID"]);
                    orderRecord.WardID      = Convert.ToInt32(ipPatlist.Rows[0]["EnterWardID"]);
                    orderRecord.StatID      = Convert.ToInt32(orderdt.Rows[0]["StatID"]);
                    orderRecord.ItemID      = Convert.ToInt32(itemData.Rows[i]["ExamItemID"].ToString());
                    orderRecord.PresDeptID  = head.ApplyDeptID;
                    orderRecord.OrderDoc    = head.ApplyDoctorID;
                    orderRecord.ItemName    = itemData.Rows[i]["ExamItemName"].ToString();
                    orderRecord.Amount      = Convert.ToInt32(itemData.Rows[i]["Amount"].ToString());
                    orderRecord.OrderBdate  = head.CheckDate; //DateTime.Now; 20170418改成检查时间
                    if (head.ApplyType == 2)
                    {
                        orderRecord.ItemPrice = Convert.ToDecimal(itemData.Rows[i]["Price"].ToString()) * Convert.ToInt32(itemData.Rows[i]["Amount"].ToString());
                    }
                    else
                    {
                        orderRecord.ItemPrice = Convert.ToDecimal(itemData.Rows[i]["Price"].ToString());
                    }

                    orderRecord.ItemType  = 4;
                    orderRecord.PatListID = head.PatListID;
                    BindDb(orderRecord);
                    predetailid = orderRecord.save();
                    //插入费用明细
                    FeeItemDataSource feeDataSource = NewObject <FeeItemDataSource>();
                    DataTable         dtDetailItem  = feeDataSource.GetExamItemDetailDt(orderRecord.ItemID);

                    for (int index = 0; index < dtDetailItem.Rows.Count; index++)
                    {
                        int       feeitemId  = Convert.ToInt32(dtDetailItem.Rows[index]["ITEMID"]);
                        DataTable dtDrugItem = NewDao <IOPDDao>().GetFeeItemData(feeitemId);
                        decimal   amount     = Convert.ToDecimal(dtDetailItem.Rows[index]["ItemAmount"]);
                        DataRow[] rows       = dtDrugItem.Select(" ItemID=" + feeitemId);
                        if (rows.Length < 1)
                        {
                            continue;
                        }

                        IP_FeeItemGenerate feeItem = GenerateRecordFee(amount, 1, orderRecord, ipPatlist, rows[0]);
                        feeItem.FeeSource   = 1;
                        feeItem.CalCostMode = 0;
                        this.BindDb(feeItem);
                        feeItem.save();
                    }
                }

                EXA_MedicalApplyDetail detail = new EXA_MedicalApplyDetail();
                if (detaildr != null)
                {
                    detail.ApplyDetailID = Convert.ToInt32(detaildr["ApplyDetailID"]);
                }

                detail.SystemType   = head.SystemType;
                detail.PresDetailID = predetailid;
                detail.ApplyHeadID  = head.ApplyHeadID;
                detail.ItemID       = Convert.ToInt32(itemData.Rows[i]["ExamItemID"].ToString());
                detail.ItemName     = itemData.Rows[i]["ExamItemName"].ToString();
                detail.Price        = Convert.ToDecimal(itemData.Rows[i]["Price"].ToString());
                if (head.ApplyType == 2)
                {
                    detail.Amount   = Convert.ToInt32(itemData.Rows[i]["Amount"].ToString());
                    detail.TotalFee = Convert.ToDecimal(itemData.Rows[i]["Price"].ToString()) * detail.Amount;
                }
                else
                {
                    detail.Amount   = 1;
                    detail.TotalFee = Convert.ToDecimal(itemData.Rows[i]["Price"].ToString());
                }

                BindDb(detail);
                detail.save();
            }

            return(headid);
        }
예제 #9
0
        /// <summary>
        /// 医嘱保存
        /// </summary>
        /// <param name="records">医嘱数据</param>
        public void SaveRecords(List <IPD_OrderRecord> records)
        {
            IP_PatList ipPatlist = NewObject <IP_PatList>().getmodel(records[0].PatListID) as IP_PatList;

            if (ipPatlist.Status != 2 || ipPatlist.IsLeaveHosOrder == 1)
            {
                throw new Exception("病人已经出院,不能再保存医嘱");
            }

            //判断病人是否存在未完成的转科医嘱
            List <IPD_TransDept> trans = NewObject <IPD_TransDept>().getlist <IPD_TransDept>(" Patlistid=" + records[0].PatListID + " and CancelFlag=0 and FinishFlag=0");

            if (trans != null && trans.Count > 0)
            {
                throw new Exception("病人已转科,不能再保存医嘱");
            }

            FeeItemDataSource feeitem    = NewObject <FeeItemDataSource>();
            DataTable         dtDrugItem = feeitem.GetFeeItemDataDt(FeeBusinessType.医嘱业务);
            List <int>        groupIDs   = new List <int>();

            groupIDs.Add(records[0].GroupID);
            for (int i = 1; i < records.Count; i++)
            {
                if (records[i].GroupID != records[i - 1].GroupID)
                {
                    groupIDs.Add(records[i].GroupID);
                }
            }

            for (int i = 0; i < records.Count; i++)
            {
                if (records[i].OrderID > 0)
                {
                    //原来存在费用,原来一组费用删除,重新生成
                    List <IP_FeeItemGenerate> feeItems = NewObject <IP_FeeItemGenerate>().getlist <IP_FeeItemGenerate>(" GroupId=" + records[i].GroupID + " and orderid=" + records[i].OrderID);
                    if (feeItems.Count > 0)
                    {
                        foreach (IP_FeeItemGenerate fee in feeItems)
                        {
                            this.BindDb(fee);
                            fee.delete();
                        }
                    }
                }
            }
            for (int i = 0; i < groupIDs.Count; i++)
            {
                int groupid = groupIDs[i];
                List <IPD_OrderRecord> sameGroupRecord = records.Where(p => p.GroupID == groupid).ToList();
                #region 如果已经转抄,就不能修改 按组转抄,只要判断一条医嘱就可
                if (sameGroupRecord[0].OrderStatus <= 1 && sameGroupRecord[0].OrderID > 0)
                {
                    IPD_OrderRecord newRecord = NewObject <IPD_OrderRecord>().getmodel(sameGroupRecord[0].OrderID) as IPD_OrderRecord;
                    if (newRecord.OrderStatus > 1)
                    {
                        //如果已经转抄,就不能修改
                        break;
                    }
                }
                #endregion
                //原来存在费用,原来一组费用删除,重新生成
                //List<IP_FeeItemGenerate> feeItems = NewObject<IP_FeeItemGenerate>().getlist<IP_FeeItemGenerate>(" GroupID=" + groupid );
                //if (feeItems.Count > 0)
                //{
                //    foreach (IP_FeeItemGenerate fee in feeItems)
                //    {
                //        this.BindDb(fee);
                //        fee.delete();
                //    }
                //}

                foreach (IPD_OrderRecord record in sameGroupRecord)
                {
                    #region 医嘱保存
                    if (record.OrderStatus <= 1 && record.ItemName != string.Empty)
                    {
                        record.PatDeptID = ipPatlist.CurrDeptID;
                        record.WardID    = ipPatlist.CurrWardID;
                        this.BindDb(record);
                        record.save();
                    }
                    #endregion
                    GenerateFee(record, dtDrugItem, ipPatlist);
                    if (record.AstFlag == 0)
                    {
                        //需要皮试,保存时增加皮试医嘱
                        InsertPSYZ(dtDrugItem, record, ipPatlist);
                    }
                }

                if (sameGroupRecord[0].ChannelID == 0)
                {
                    continue;
                }
                #region 用法关联费用明细生成
                GenerateChannelFee(sameGroupRecord[0], dtDrugItem, ipPatlist);
                #endregion
            }
        }