Пример #1
0
        /// <summary>
        /// 获取病人处方
        /// </summary>
        /// <param name="patlistid">病人ID</param>
        /// <param name="status">状态</param>
        /// <param name="isCharge">是否收费处检索</param>
        /// <param name="beginDate">开始时间</param>
        /// <param name="endDate">结束时间</param>
        /// <param name="invoiceNo">发票号</param>
        /// <param name="execDeptCode">执行科室ID</param>
        /// <returns>处方信息</returns>
        public List <Prescription> GetPrescriptions(int patlistid, OP_Enum.PresStatus status, bool isCharge, string beginDate, string endDate, string invoiceNo, int execDeptCode)
        {
            BasicDataManagement basicdata = NewObject <BasicDataManagement>();
            List <Prescription> preslist  = new List <Prescription>();
            string condiction             = string.Empty;

            switch (status)
            {
            case PresStatus.全部:
                condiction = " PatListID = " + patlistid + " AND ChargeStatus in (0,1)";
                break;

            case PresStatus.未收费:
                condiction = " PatListID = " + patlistid + " AND ChargeFlag = 0 AND ChargeStatus = 0";
                break;

            case PresStatus.已收费未发药:
            case PresStatus.已收费已退药:
                condiction = " PatListID = " + patlistid + " AND ChargeFlag = 1 AND ChargeStatus = 0 And DistributeFlag = 0";
                break;

            case PresStatus.已收费已发药:
                condiction = " PatListID = " + patlistid + " AND ChargeFlag = 1 AND ChargeStatus = 0 And DistributeFlag = 1";
                break;
            }

            condiction += " and DocPresHeadID=0 ";
            if (execDeptCode != 0)
            {
                condiction = condiction + " and ExecDeptID = " + execDeptCode;
            }

            if (string.IsNullOrEmpty(invoiceNo))
            {
                if (!string.IsNullOrEmpty(beginDate.Trim()))
                {
                    condiction = condiction + " and PresDate>='" + beginDate + "'";
                }

                if (endDate.Trim() != string.Empty)
                {
                    condiction = condiction + " and PresDate<='" + endDate + "'";
                }
            }

            if (!string.IsNullOrEmpty(invoiceNo))
            {
                condiction = condiction + " and regflag=0 and CostHeadID in (select CostHeadID from OP_CostHead where EndInvoiceNO='" + invoiceNo + "' and CostStatus IN (0,1))";
            }
            int presGroupID = 0;
            List <OP_FeeItemHead> presMastList = NewObject <OP_FeeItemHead>().getlist <OP_FeeItemHead>(condiction);

            if (presMastList.Count > 0)
            {
                DataTable           dtPres  = NewDao <IOPManageDao>().GetPrescription(condiction);
                List <Prescription> oldPres = EFWCoreLib.CoreFrame.Common.ConvertExtend.ToList <Prescription>(dtPres);
                for (int i = 0; i < presMastList.Count; i++)
                {
                    List <Prescription> presDetailList = oldPres.Where(p => p.FeeItemHeadID == presMastList[i].FeeItemHeadID).ToList();
                    if (presDetailList.Count == 0)
                    {
                        continue;
                    }
                    presGroupID += 1;
                    for (int j = 0; j < presDetailList.Count; j++)
                    {
                        #region 明细
                        presDetailList[j].PrescGroupID = presGroupID;
                        presDetailList[j].presNO       = j == 0 ? presGroupID : 0;
                        presDetailList[j].PresDeptID   = presMastList[i].PresDeptID;
                        presDetailList[j].PresEmpID    = presMastList[i].PresEmpID;
                        presDetailList[j].ExecDeptID   = presMastList[i].ExecDeptID;
                        presDetailList[j].ModifyFlag   = 0;
                        presDetailList[j].Selected     = 1;
                        if (Convert.ToInt32(presDetailList[j].ItemType) == (int)OP_Enum.ItemType.收费项目 || Convert.ToInt32(presDetailList[j].ItemType) == (int)OP_Enum.ItemType.组合项目)
                        {
                            presDetailList[j].MiniAmount = presDetailList[j].Amount;
                            presDetailList[j].PackAmount = (presDetailList[j].Amount - presDetailList[j].MiniAmount) / presDetailList[j].UnitNO;
                        }
                        else
                        {
                            presDetailList[j].MiniAmount = presDetailList[j].Amount % presDetailList[j].UnitNO;
                            presDetailList[j].PackAmount = (presDetailList[j].Amount - presDetailList[j].MiniAmount) / presDetailList[j].UnitNO;
                        }

                        presDetailList[j].DocPresHeadID = presMastList[i].DocPresHeadID;
                        #endregion
                        preslist.Add(presDetailList[j]);
                    }

                    Prescription presTotal = new Prescription();
                    presTotal.ExecDetpName = "小 计";
                    presTotal.SubTotalFlag = 1;
                    presTotal.PrescGroupID = presGroupID;
                    presTotal.presNO       = 0;
                    presTotal.TotalFee     = presMastList[i].TotalFee;
                    presTotal.Selected     = 1;
                    preslist.Add(presTotal);
                }
            }

            //如果有医生站处方,则读取医生站处方
            string obj = NewObject <CommonMethod>().GetOpConfig(OpConfigConstant.HasOpDSystem);
            if (Convert.ToInt32(obj) == 1)
            {
                presGroupID += 1;
                List <Prescription> docPresList = GetOpdPres(patlistid, presGroupID);
                foreach (Prescription docPres in docPresList)
                {
                    preslist.Add(docPres);
                }
            }

            return(preslist);
        }
Пример #2
0
        public ServiceResponseData GetPatPrescription()
        {
            int patlistid = requestData.GetData <int>(0);                                            //病人ID

            OP_Enum.PresStatus presStatus = requestData.GetData <OP_Enum.PresStatus>(1);             //处方状态
            int  costPatTypeID            = requestData.GetData <int>(2);                            //病人结算类型
            bool isMedicarePat            = NewObject <CommonMethod>().IsMedicarePat(costPatTypeID); //根据病人类型ID判断是否是医保病人
            List <Prescription> preslist  = NewObject <PrescriptionProcess>().GetPrescriptions(patlistid, presStatus, true);

            #region 应北京医保要求,相关大项目ID相同的只取第一条
            //应北京医保要求,相关大项目ID相同的只取第一条
            if (isMedicarePat)
            {
                string statString = NewObject <CommonMethod>().GetOpConfig(OpConfigConstant.MedicalNotBalanceStatID);
                if (!string.IsNullOrEmpty(statString))
                {
                    string[] statIDs = statString.Split(',');
                    for (int i = 0; i < statIDs.Length; i++)
                    {
                        if (!string.IsNullOrEmpty(statIDs[i]))
                        {
                            List <Prescription> presSameList = preslist.Where(p => p.StatID == Convert.ToInt32(statIDs[i])).OrderBy(p => p.ItemID).ThenBy(p => p.PrescGroupID).ToList();
                            if (presSameList.Count > 1)
                            {
                                int itemid = presSameList[0].ItemID;
                                for (int j = 1; j < presSameList.Count; j++)
                                {
                                    if (presSameList[j].ItemID == itemid)
                                    {
                                        int groupid = presSameList[j].PrescGroupID;
                                        preslist.Remove(presSameList[j]);
                                        List <Prescription> presGroupList = preslist.FindAll(p => p.PrescGroupID == groupid);
                                        if (presGroupList.Count > 0 && presGroupList.Count == 1)
                                        {
                                            preslist.Remove(presGroupList[0]);
                                        }
                                        else
                                        {
                                            List <Prescription> totalPres = presGroupList.FindAll(p => p.SubTotalFlag == 1);
                                            if (totalPres.Count > 0)
                                            {
                                                totalPres[0].TotalFee = totalPres[0].TotalFee - presSameList[j].TotalFee;
                                            }
                                        }
                                    }

                                    itemid = presSameList[j].ItemID;
                                }
                            }
                        }
                    }
                }
            }
            #endregion
            //返回处方信息
            DataTable dtPres = EFWCoreLib.CoreFrame.Common.ConvertExtend.ToDataTable <Prescription>(preslist);// EFWCoreLib.CoreFrame.Common.ConvertExtend.ToDataTable(preslist);
            responseData.AddData(dtPres);

            //返回医生诊断信息
            List <OPD_DiagnosisRecord> diagnoseList = NewObject <OPD_DiagnosisRecord>().getlist <OPD_DiagnosisRecord>(" PatlistID=" + patlistid).OrderBy(p => p.SortNo).ToList();
            responseData.AddData(diagnoseList);
            return(responseData);
        }
Пример #3
0
 /// <summary>
 /// 获取病人处方
 /// </summary>
 /// <param name="patlistid">病人ID</param>
 /// <param name="status">状态</param>
 /// <param name="isCharge">是否收费处检索</param>
 /// <returns>处方信息</returns>
 public List <Prescription> GetPrescriptions(int patlistid, OP_Enum.PresStatus status, bool isCharge)
 {
     return(GetPrescriptions(patlistid, status, isCharge, string.Empty, string.Empty, string.Empty, 0));
 }