示例#1
0
        /// <summary>
        /// 该挂号信息包含的所有药物种类需计数为+1的药品种类集合.
        /// </summary>
        /// <param name="startTime">The start time.</param>
        /// <param name="endTime">The end time.</param>
        /// <returns>List&lt;System.String&gt;.</returns>
        public List <string> AllDrugCategoryNumberPositiveList(DateTime startTime, DateTime endTime)
        {
            List <string> result = new List <string>();
            //获取在startTime之前的所有药物种类总金额==0的集合,
            //并且获取在endTime之前的所有药物种类总金额 >0的集合

            var preStartTimeList = OutPatientPrescriptions.SelectMany(opp => opp.GetAllDrugMessage(this.ChargeTime, startTime)).ToList()
                                   .GroupBy(g => g.ProductNumber).Where(w => w.Sum(su => su.Cost) == 0).Select(s => s.Key).ToList();
            var preStartTimeGreaterZeroList = OutPatientPrescriptions.SelectMany(opp => opp.GetAllDrugMessage(this.ChargeTime, startTime)).ToList()
                                              .GroupBy(g => g.ProductNumber).Where(w => w.Sum(su => su.Cost) > 0).Select(s => s.Key).ToList();
            var preEndTimeList = OutPatientPrescriptions.SelectMany(opp => opp.GetAllDrugMessage(this.ChargeTime, endTime)).ToList()
                                 .GroupBy(g => g.ProductNumber).Where(w => w.Sum(su => su.Cost) > 0).Select(s => s.Key).ToList();

            //preStartTimeList  preEndTimeList 的交集,即为该挂号信息中有效的药品种类
            if (preStartTimeGreaterZeroList.Count > 0 && preEndTimeList.Count > 0)
            {
                //返回空,计数0
            }
            else if (preStartTimeList.Count > 0 && preEndTimeList.Count > 0)
            {
                result = preEndTimeList.Intersect(preEndTimeList).ToList();
            }
            else if (preStartTimeList.Count == 0 && preEndTimeList.Count > 0)
            {
                result = preEndTimeList;
            }
            return(result);
        }
示例#2
0
        /// <summary>
        /// 获取该挂号信息包含的所有抗菌药物编码列表.
        /// </summary>
        /// <param name="startTime">The start time.</param>
        /// <param name="endTime">The end time.</param>
        /// <returns>HashSet&lt;System.String&gt;.</returns>
        /// <remarks>取定时间段的抗菌药费用是否大于0,大于0说明需计数,再取对应的抗菌药品种</remarks>
        public List <string> AntibioticCategoryNumberList(DateTime startTime, DateTime endTime)
        {
            List <string> result = new List <string>();

            result = this.AntibioticPersonPositive(startTime, endTime) > 0
                ? OutPatientPrescriptions.SelectMany(opp => opp.AntibioticCategoryNumberList(startTime, endTime)).Distinct().ToList()
                : result;
            return(result);
        }
示例#3
0
        /// <summary>
        /// 该挂号信息包含的基本药物种类需计数为-1的药品种类集合.
        /// </summary>
        /// <param name="startTime">The start time.</param>
        /// <param name="endTime">The end time.</param>
        /// <returns>List&lt;System.String&gt;.</returns>
        internal List <string> DrugCategoryNumberNegativeList(DateTime startTime, DateTime endTime, EnumDrugCategories drugCategory)
        {
            List <string> result = new List <string>();
            //获取在startTime之前的基本药物种类总金额==0的集合,
            //并且获取在endTime之前的基本药物种类总金额 >0的集合

            var preStartTimeList = OutPatientPrescriptions.SelectMany(opp => opp.GetEssentialDrugMessage(this.ChargeTime, startTime)).ToList()
                                   .GroupBy(g => g.ProductNumber).Where(w => w.Sum(su => su.Cost) > 0).Select(s => s.Key).ToList();
            var preEndTimeList = OutPatientPrescriptions.SelectMany(opp => opp.GetEssentialDrugMessage(this.ChargeTime, endTime)).ToList()
                                 .GroupBy(g => g.ProductNumber).Where(w => w.Sum(su => su.Cost) == 0).Select(s => s.Key).ToList();

            //preStartTimeList  preEndTimeList 的交集,即为该挂号信息中有效的药品种类
            if (preStartTimeList.Count > 0 && preEndTimeList.Count > 0)
            {
                result = preEndTimeList.Intersect(preEndTimeList).ToList();
            }
            return(result);
        }