/// <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); }
/// <summary> /// 获得该处方包含的基本药物信息的集合. /// </summary> /// <param name="startTime">The start time.</param> /// <param name="endTime">The end time.</param> /// <returns>List<EssentialDrugMessage>.</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); }
/// <summary> /// 该挂号信息包含的基本药物种类需计数为-1的药品种类集合. /// </summary> /// <param name="startTime">The start time.</param> /// <param name="endTime">The end time.</param> /// <returns>List<System.String>.</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); }