/// <summary>
        /// 根据药品的种类获获得药物的编码和药物名称.
        /// </summary>
        /// <returns>EssentialDrugMessage.</returns>
        internal DrugMessage GetDrugCategoryMessage(EnumDrugCategories drugCategory)
        {
            var result = new DrugMessage
            {
                ProductNumber = DrugMaintenances.ProductNumber,
                ProductName   = DrugMaintenances.ProductName,
                Cost          = DrugMaintenances.UnitCost * Quantity
            };;

            switch (drugCategory)
            {
            case EnumDrugCategories.ALL_DRUG:

                break;

            case EnumDrugCategories.ESSENTIAL_DRUG:
                if (!IsEssential)
                {
                    result = null;
                }
                break;

            case EnumDrugCategories.ANTIBIOTIC_DRUG:
                if (!(DrugMaintenances.AntibioticManageLevelId >= 1 && DrugMaintenances.AntibioticManageLevelId <= 3))
                {
                    result = null;
                }
                break;

            default:
                break;
            }
            return(result);
        }
예제 #2
0
        /// <summary>
        /// 获得该处方包含的基本药物信息的集合.
        /// </summary>
        /// <param name="startTime">The start time.</param>
        /// <param name="endTime">The end time.</param>
        /// <returns>List&lt;EssentialDrugMessage&gt;.</returns>
        internal List <DrugMessage> GetDrugCategoryMessage(DateTime startTime, DateTime endTime, EnumDrugCategories drugCategory)
        {
            List <DrugMessage> result = new List <DrugMessage>();

            if (this.ChargeTime >= startTime && this.ChargeTime < endTime)
            {
                result = OutPatientPrescriptionDetails.Select(oop => oop.GetDrugCategoryMessage(drugCategory)).ToList();
            }
            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);
        }