using Microsoft.AspNetCore.Authorization; using Microsoft.AspNetCore.Mvc; using Shentun.WebPeis.AppointRegisterAsbitems; using Shentun.WebPeis.CustomerOrgs; using Shentun.WebPeis.Enums; using Shentun.WebPeis.MedicalPackages; using Shentun.WebPeis.Models; using Shentun.WebPeis.OrganizationUnits; using Shentun.WebPeis.PatientRegisters; using Shentun.WebPeis.Persons; using System; using System.Collections; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using Volo.Abp; using Volo.Abp.Application.Services; using Volo.Abp.Domain.Repositories; using Volo.Abp.Identity; using static Volo.Abp.Identity.Settings.IdentitySettingNames; namespace Shentun.WebPeis.AppointPatientRegisters { /// /// 微信预约 /// [ApiExplorerSettings(GroupName = "Work")] [Authorize] public class AppointPatientRegisterAppService : ApplicationService { private readonly IRepository _repository; private readonly IRepository _appointRegisterAsbitemRepository; private readonly IRepository _personRepository; private readonly IRepository _customerOrgRepository; private readonly IRepository _identityUserRepository; private readonly IRepository _asbitemRepository; private readonly IRepository _itemTypeRepository; private readonly IRepository _medicalPackageRepository; private readonly IRepository _medicalPackageDetailRepository; private readonly IRepository _customerOrgGroupRepository; private readonly IRepository _customerOrgGroupDetailRepository; private readonly CacheService _cacheService; private readonly AppointPatientRegisterManager _appointPatientRegisterManager; private readonly CustomerOrgManager _customerOrgManager; private readonly WebPeisOrganizationUnitManager _webPeisOrganizationUnitManager; private readonly IRepository _patientRegisterRepository; private readonly IRepository _patientRepository; private readonly IRepository _registerCheckRepository; private readonly IRepository _registerCheckAsbitemRepository; public AppointPatientRegisterAppService(IRepository repository, CacheService cacheService, IRepository itemTypeRepository, AppointPatientRegisterManager appointPatientRegisterManager, IRepository appointRegisterAsbitemRepository, IRepository personRepository, IRepository identityUserRepository, CustomerOrgManager customerOrgManager, IRepository medicalPackageRepository, IRepository customerOrgGroupRepository, IRepository asbitemRepository, IRepository customerOrgRepository, IRepository medicalPackageDetailRepository, IRepository customerOrgGroupDetailRepository, WebPeisOrganizationUnitManager webPeisOrganizationUnitManager, IRepository patientRegisterRepository, IRepository patientRepository, IRepository registerCheckRepository, IRepository registerCheckAsbitemRepository ) { _repository = repository; _cacheService = cacheService; _itemTypeRepository = itemTypeRepository; _appointPatientRegisterManager = appointPatientRegisterManager; _appointRegisterAsbitemRepository = appointRegisterAsbitemRepository; _personRepository = personRepository; _identityUserRepository = identityUserRepository; _customerOrgManager = customerOrgManager; _medicalPackageRepository = medicalPackageRepository; _customerOrgGroupRepository = customerOrgGroupRepository; _asbitemRepository = asbitemRepository; _customerOrgRepository = customerOrgRepository; _medicalPackageDetailRepository = medicalPackageDetailRepository; _customerOrgGroupDetailRepository = customerOrgGroupDetailRepository; _webPeisOrganizationUnitManager = webPeisOrganizationUnitManager; _patientRegisterRepository = patientRegisterRepository; _patientRepository = patientRepository; _registerCheckAsbitemRepository = registerCheckAsbitemRepository; _registerCheckRepository = registerCheckRepository; } /// /// 预约,小程序使用 /// /// /// /// [HttpPost("api/app/AppointPatientRegister/Create")] public async Task CreateAsync(CreateAppointPatientRegisterDto input) { var entity = ObjectMapper.Map(input); var asbitems = ObjectMapper.Map, List>(input.Asbitems); entity.AppointRegisterAsbitems = asbitems; Guid medicalCenterId; if (input.MedicalCenterId == null || input.MedicalCenterId == Guid.Empty) { var webPeisOrganizationUnit = await _webPeisOrganizationUnitManager.GetMedicalCenterListAsync(); if (webPeisOrganizationUnit.Count > 1 || webPeisOrganizationUnit.Count == 0) { throw new UserFriendlyException("体检中心参数不能为空"); } medicalCenterId = webPeisOrganizationUnit.First().Id; } else { medicalCenterId = (Guid)input.MedicalCenterId; } entity.MedicalCenterId = medicalCenterId; entity = await _appointPatientRegisterManager.CreateAsync(entity); await _repository.InsertAsync(entity); var result = ObjectMapper.Map(entity); return result; } /// /// 通过手机号等获取预约列表信息,体检程序前台登记使用 /// /// /// /// [AllowAnonymous] [HttpPost("api/app/AppointPatientRegister/GetListByFilter")] public async Task> GetListByFilterAsync(AppointPatientRegisterInputDto input) { if (input == null) throw new UserFriendlyException("参数不能为空"); Guid medicalCenterId; if (input.MedicalCenterId == null || input.MedicalCenterId == Guid.Empty) { var webPeisOrganizationUnit = await _webPeisOrganizationUnitManager.GetMedicalCenterListAsync(); if (webPeisOrganizationUnit.Count > 1 || webPeisOrganizationUnit.Count == 0) { throw new UserFriendlyException("体检中心参数不能为空"); } medicalCenterId = webPeisOrganizationUnit.First().Id; } else { medicalCenterId = (Guid)input.MedicalCenterId; } if (input.AppointStartDate == null) { input.AppointStartDate = DateTime.Now.Date; } else { input.AppointStartDate = ((DateTime)input.AppointStartDate).Date; } if (input.AppointStopDate == null) { input.AppointStopDate = DateTime.Now.Date.AddDays(3650); } else { input.AppointStopDate = ((DateTime)input.AppointStopDate).Date.AddDays(1); } if (string.IsNullOrWhiteSpace(input.MobilePhone) && string.IsNullOrWhiteSpace(input.IdNo)) { throw new UserFriendlyException("手机号和身份证必须至少填一个"); } var query = (from user in await _identityUserRepository.GetQueryableAsync() join person in await _personRepository.GetQueryableAsync() on user.Id equals person.PersonId join appointPatientRegister in await _repository.GetQueryableAsync() on person.PersonId equals appointPatientRegister.PersonId join medicalPackage in await _medicalPackageRepository.GetQueryableAsync() on appointPatientRegister.MedicalPackageId equals medicalPackage.MedicalPackageId into canEmptyMedicalPackage from haveMedicalPackage in canEmptyMedicalPackage.DefaultIfEmpty() join customerOrgGroup in await _customerOrgGroupRepository.GetQueryableAsync() on appointPatientRegister.CustomerOrgGroupId equals customerOrgGroup.CustomerOrgGroupId into canEmptyCustomerOrgGroup from haveCustomerOrgGroup in canEmptyCustomerOrgGroup.DefaultIfEmpty() join appointRegisterAsbitem in await _appointRegisterAsbitemRepository.GetQueryableAsync() on appointPatientRegister.AppointPatientRegisterId equals appointRegisterAsbitem.AppointPatientRegisterId join asbitem in await _asbitemRepository.GetQueryableAsync() on appointRegisterAsbitem.AsbitemId equals asbitem.AsbitemId join customerOrg in await _customerOrgRepository.GetQueryableAsync() on appointPatientRegister.CustomerOrgId equals customerOrg.CustomerOrgId where appointPatientRegister.MedicalCenterId == medicalCenterId && appointPatientRegister.AppointDate >= input.AppointStartDate && appointPatientRegister.AppointDate < input.AppointStopDate orderby appointPatientRegister.AppointDate select new { user, person, appointPatientRegister, appointRegisterAsbitem, asbitem, haveMedicalPackage, haveCustomerOrgGroup, customerOrg } ); if (!string.IsNullOrWhiteSpace(input.IdNo)) { if (input.IdNo.Length != 18) { throw new UserFriendlyException("身份证长度必须是18位"); } query = query.Where(o => o.person.IdNo == input.IdNo); } else { if (input.MobilePhone.Length != 11) { throw new UserFriendlyException("手机号长度必须是11位"); } query = query.Where(o => o.user.PhoneNumber == input.MobilePhone); } if(input.CompleteFlag != null) { query = query.Where(o => o.appointPatientRegister.CompleteFlag == input.CompleteFlag); } var appointPatientRegisterDtos = query.ToList(); var list = appointPatientRegisterDtos.GroupBy(o => o.appointPatientRegister) .Select(o => new AppointPatientRegisterDto() { AppointPatientRegisterId = o.FirstOrDefault().appointPatientRegister.AppointPatientRegisterId, PersonId = o.FirstOrDefault().appointPatientRegister.PersonId, PersonName = o.FirstOrDefault().user.Name, IdNo = o.FirstOrDefault().person.IdNo, MobileTelephone = o.FirstOrDefault().user.PhoneNumber, SexId = o.FirstOrDefault().person.SexId, MaritalStatusId = o.FirstOrDefault().person.MaritalStatusId, CustomerOrgId = o.FirstOrDefault().appointPatientRegister.CustomerOrgId, ChildCustomerOrgName = o.FirstOrDefault().customerOrg.PathCode.Length == 5 ? "" : o.FirstOrDefault().customerOrg.CustomerOrgName, CustomerOrgGroupId = o.FirstOrDefault().appointPatientRegister.CustomerOrgGroupId, CustomerOrgGroupName = o.FirstOrDefault().haveCustomerOrgGroup == null ? "" : o.FirstOrDefault().haveCustomerOrgGroup.CustomerOrgGroupName, CustomerOrgRegisterId = o.FirstOrDefault().appointPatientRegister.CustomerOrgRegisterId, MedicalPackageId = o.FirstOrDefault().appointPatientRegister.MedicalPackageId, MedicalPackageName = o.FirstOrDefault().haveMedicalPackage == null ? "" : o.FirstOrDefault().haveMedicalPackage.MedicalPackageName, MedicalCenterId = o.FirstOrDefault().appointPatientRegister.MedicalCenterId, CompleteFlag = o.FirstOrDefault().appointPatientRegister.CompleteFlag, IsCharge = o.FirstOrDefault().appointPatientRegister.IsCharge, AppointDate = o.FirstOrDefault().appointPatientRegister.AppointDate, Remark = o.FirstOrDefault().appointPatientRegister.Remark, PregnantFlag = o.FirstOrDefault().appointPatientRegister.PregnantFlag, Height = o.FirstOrDefault().appointPatientRegister.Height, Weight = o.FirstOrDefault().appointPatientRegister.Weight, SexName = _cacheService.GetSexNameAsync(o.FirstOrDefault().person.SexId).Result, MaritalStatusName = _cacheService.GetMaritalStatusNameAsync(o.FirstOrDefault().person.MaritalStatusId).Result, CustomerOrgName = _customerOrgManager.GetTopCustomerOrgAsync(o.FirstOrDefault().appointPatientRegister.CustomerOrgId).Result.CustomerOrgName }).ToList(); return list; } /// /// 获取某人的预约列表,小程序使用 /// /// /// /// [HttpPost("api/app/AppointPatientRegister/GetListByPersonId")] public async Task> GetListByPersonIdAsync(PersonIdInputDto input) { if (input == null) throw new UserFriendlyException("参数不能为空"); var query = (from user in await _identityUserRepository.GetQueryableAsync() join person in await _personRepository.GetQueryableAsync() on user.Id equals person.PersonId join appointPatientRegister in await _repository.GetQueryableAsync() on person.PersonId equals appointPatientRegister.PersonId join medicalPackage in await _medicalPackageRepository.GetQueryableAsync() on appointPatientRegister.MedicalPackageId equals medicalPackage.MedicalPackageId into canEmptyMedicalPackage from haveMedicalPackage in canEmptyMedicalPackage.DefaultIfEmpty() join customerOrgGroup in await _customerOrgGroupRepository.GetQueryableAsync() on appointPatientRegister.CustomerOrgGroupId equals customerOrgGroup.CustomerOrgGroupId into canEmptyCustomerOrgGroup from haveCustomerOrgGroup in canEmptyCustomerOrgGroup.DefaultIfEmpty() join appointRegisterAsbitem in await _appointRegisterAsbitemRepository.GetQueryableAsync() on appointPatientRegister.AppointPatientRegisterId equals appointRegisterAsbitem.AppointPatientRegisterId join asbitem in await _asbitemRepository.GetQueryableAsync() on appointRegisterAsbitem.AsbitemId equals asbitem.AsbitemId join customerOrg in await _customerOrgRepository.GetQueryableAsync() on appointPatientRegister.CustomerOrgId equals customerOrg.CustomerOrgId where appointPatientRegister.PersonId == input.PersonId && appointPatientRegister.CompleteFlag != AppointPatientRegisterCompleteFlag.CancelAppoint orderby appointPatientRegister.AppointDate select new { user, person, appointPatientRegister, appointRegisterAsbitem, asbitem, haveMedicalPackage, haveCustomerOrgGroup, customerOrg } ); var appointPatientRegisterDtos = query.ToList(); var list = appointPatientRegisterDtos.GroupBy(o => o.appointPatientRegister) .Select(o => new AppointPatientRegisterDto() { AppointPatientRegisterId = o.FirstOrDefault().appointPatientRegister.AppointPatientRegisterId, PersonId = o.FirstOrDefault().appointPatientRegister.PersonId, PersonName = o.FirstOrDefault().user.Name, IdNo = o.FirstOrDefault().person.IdNo, SexId = o.FirstOrDefault().person.SexId, MaritalStatusId = o.FirstOrDefault().person.MaritalStatusId, CustomerOrgId = o.FirstOrDefault().appointPatientRegister.CustomerOrgId, ChildCustomerOrgName = o.FirstOrDefault().customerOrg.PathCode.Length == 5 ? "" : o.FirstOrDefault().customerOrg.CustomerOrgName, CustomerOrgGroupId = o.FirstOrDefault().appointPatientRegister.CustomerOrgGroupId, CustomerOrgGroupName = o.FirstOrDefault().haveCustomerOrgGroup == null ? "" : o.FirstOrDefault().haveCustomerOrgGroup.CustomerOrgGroupName, CustomerOrgRegisterId = o.FirstOrDefault().appointPatientRegister.CustomerOrgRegisterId, MedicalPackageId = o.FirstOrDefault().appointPatientRegister.MedicalPackageId, MedicalPackageName = o.FirstOrDefault().haveMedicalPackage == null ? "" : o.FirstOrDefault().haveMedicalPackage.MedicalPackageName, MedicalCenterId = o.FirstOrDefault().appointPatientRegister.MedicalCenterId, CompleteFlag = o.FirstOrDefault().appointPatientRegister.CompleteFlag, AppointDate = o.FirstOrDefault().appointPatientRegister.AppointDate, Remark = o.FirstOrDefault().appointPatientRegister.Remark, PregnantFlag = o.FirstOrDefault().appointPatientRegister.PregnantFlag, Height = o.FirstOrDefault().appointPatientRegister.Height, Weight = o.FirstOrDefault().appointPatientRegister.Weight, SexName = _cacheService.GetSexNameAsync(o.FirstOrDefault().person.SexId).Result, MaritalStatusName = _cacheService.GetMaritalStatusNameAsync(o.FirstOrDefault().person.MaritalStatusId).Result, CustomerOrgName = _customerOrgManager.GetTopCustomerOrgAsync(o.FirstOrDefault().appointPatientRegister.CustomerOrgId).Result.CustomerOrgName }).ToList(); return list; } /// /// 取消预约 /// /// /// /// [HttpPost("api/app/AppointPatientRegister/CancelAppoint")] public async Task CancelAppointAsync(AppointPatientRegisterIdInputDto input) { var appointPatientRegister = await _repository.GetAsync(o => o.AppointPatientRegisterId == input.AppointPatientRegisterId); if(appointPatientRegister.IsCharge == 'Y') { throw new UserFriendlyException("已收费不能取消"); } if (appointPatientRegister.CompleteFlag == AppointPatientRegisterCompleteFlag.Check) { throw new UserFriendlyException("已到检不能取消"); } if (appointPatientRegister.CompleteFlag == AppointPatientRegisterCompleteFlag.CancelAppoint) { throw new UserFriendlyException("已取消预约不能重复取消"); } appointPatientRegister.CompleteFlag = AppointPatientRegisterCompleteFlag.CancelAppoint; await _repository.UpdateAsync(appointPatientRegister); } /// /// 获取预约的组合项目 /// /// /// [AllowAnonymous] [HttpPost("api/app/AppointPatientRegister/GetAppointRegisterAsbitemListById")] public async Task> GetAppointRegisterAsbitemListByIdAsync(AppointPatientRegisterIdInputDto input) { var appointPatientRegister = await _repository.GetAsync(o => o.AppointPatientRegisterId == input.AppointPatientRegisterId); var appointRegisterAsbitemDtos = ( from appointRegisterAsbitem in await _appointRegisterAsbitemRepository.GetQueryableAsync() join asbitem in await _asbitemRepository.GetQueryableAsync() on appointRegisterAsbitem.AsbitemId equals asbitem.AsbitemId join itemType in await _itemTypeRepository.GetQueryableAsync() on asbitem.ItemTypeId equals itemType.ItemTypeId orderby appointPatientRegister.AppointDate where appointRegisterAsbitem.AppointPatientRegisterId == input.AppointPatientRegisterId select new AppointRegisterAsbitemDto() { AppointPatientRegisterId = input.AppointPatientRegisterId, AsbitemId = appointRegisterAsbitem.AsbitemId, AsbitemName = asbitem.AsbitemName, StandardPrice = appointRegisterAsbitem.StandardPrice, ChargePrice = appointRegisterAsbitem.ChargePrice, Amount = appointRegisterAsbitem.Amount, IsCharge = appointRegisterAsbitem.IsCharge, DisplayOrder = asbitem.DisplayOrder, ItemTypeId = itemType.ItemTypeId, ItemTypeName = itemType.ItemTypeName, ItemTypeDisplayOrder = itemType.DisplayOrder, PayTypeFlag = appointRegisterAsbitem.PayTypeFlag } ).ToList(); List asbitems = new List(); if (appointPatientRegister.MedicalPackageId != null) { asbitems = (await _medicalPackageDetailRepository.GetQueryableAsync()) .Where(o => o.MedicalPackageId == appointPatientRegister.MedicalPackageId) .Select(x => x.AsbitemId).ToList(); ; } else if (appointPatientRegister.CustomerOrgGroupId != null) { asbitems = (await _customerOrgGroupDetailRepository.GetQueryableAsync()) .Where(o => o.CustomerOrgGroupId == appointPatientRegister.CustomerOrgGroupId) .Select(x => x.AsbitemId).ToList(); } var itemTypes = await _itemTypeRepository.GetListAsync(); appointRegisterAsbitemDtos.ForEach(o => { if (asbitems.Where(x => x == o.AsbitemId).ToList().Any()) { o.IsBelongGroupPackage = 'Y'; } var itemType = itemTypes.Where(o => o.ItemTypeId == o.ItemTypeId).First(); itemType = itemTypes.Where(o => o.PathCode == itemType.PathCode.Substring(0, 5)).First(); o.ItemTypeId = itemType.ItemTypeId; o.ItemTypeDisplayOrder = itemType.DisplayOrder; }); appointRegisterAsbitemDtos = appointRegisterAsbitemDtos.OrderBy(o => o.ItemTypeDisplayOrder) .OrderBy(o => o.DisplayOrder).ToList(); return appointRegisterAsbitemDtos; } /// /// 获取单位预约病人 /// /// /// [HttpPost("api/app/AppointPatientRegister/GetCustomerOrgAppointPatientRegisterByPersonId")] public async Task GetCustomerOrgAppointPatientRegisterByPersonIdAsync(PersonIdInputDto input) { var patientRegisterDto = (from user in await _identityUserRepository.GetQueryableAsync() join person in await _personRepository.GetQueryableAsync() on user.Id equals person.PersonId join patient in await _patientRepository.GetQueryableAsync() on new { idNo = person.IdNo, phone = user.PhoneNumber } equals new { idNo = patient.IdNo, phone = patient.MobileTelephone } join patientRegister in await _patientRegisterRepository.GetQueryableAsync() on patient.PatientId equals patientRegister.PatientId join customerOrg in await _customerOrgRepository.GetQueryableAsync() on patientRegister.CustomerOrgId equals customerOrg.CustomerOrgId join customerOrgGroup in await _customerOrgGroupRepository.GetQueryableAsync() on patientRegister.CustomerOrgGroupId equals customerOrgGroup.CustomerOrgGroupId into canEmptyCustomerOrgGroup from haveCustomerOrgGroup in canEmptyCustomerOrgGroup.DefaultIfEmpty() where user.Id == input.PersonId && (patientRegister.CompleteFlag == PatientRegisterCompleteFlag.PreRegistration || patientRegister.CompleteFlag == PatientRegisterCompleteFlag.Registration) && patientRegister.MedicalStartDate >= DateTime.Now.Date.AddDays(-365) orderby patientRegister.MedicalStartDate descending select new PatientRegisterDto() { PatientRegisterId = patientRegister.PatientRegisterId, CustomerOrgId = customerOrg.CustomerOrgId, ChildCustomerOrgName = customerOrg.CustomerOrgName, CustomerOrgRegisterId = patientRegister.CustomerOrgRegisterId, CustomerOrgGroupId = patientRegister.CustomerOrgGroupId, CustomerOrgGroupName = haveCustomerOrgGroup == null?"": haveCustomerOrgGroup.CustomerOrgGroupName, Price = haveCustomerOrgGroup == null ? 0:haveCustomerOrgGroup.Price, CanAddMoney = haveCustomerOrgGroup == null ? 0 : haveCustomerOrgGroup.CanAddMoney, }).FirstOrDefault(); if (patientRegisterDto == null) { return patientRegisterDto; } var customerOrgEntity = await _customerOrgRepository.GetAsync(o => o.CustomerOrgId == patientRegisterDto.CustomerOrgId); customerOrgEntity = await _customerOrgRepository.GetAsync(o => o.PathCode == customerOrgEntity.PathCode.Substring(0, 5)); patientRegisterDto.CustomerOrgName = customerOrgEntity.CustomerOrgName; var appointPatientRegisters = await _repository.GetListAsync(o => o.PersonId == input.PersonId && o.AppointDate >= DateTime.Now.Date && o.CustomerOrgRegisterId == patientRegisterDto.CustomerOrgRegisterId && o.CompleteFlag != AppointPatientRegisterCompleteFlag.CancelAppoint); if (appointPatientRegisters .Any()) { throw new UserFriendlyException("已有今天及之后的团检预约订单,必须先取消订单才能重新预约"); } return patientRegisterDto; } /// /// 获取团检中个人备案项目 /// /// /// [HttpPost("api/app/AppointPatientRegister/GetCheckTypeWithAsbitemsListByPatientRegisterId")] public async Task> GetCheckTypeWithAsbitemsListByPatientRegisterIdAsync(PatientRegisterIdInputDto input) { //获取团检个人所有组合项目 var asbitems = (from registerCheck in await _registerCheckRepository.GetQueryableAsync() join registerCheckAsbitem in await _registerCheckAsbitemRepository.GetQueryableAsync() on registerCheck.RegisterCheckId equals registerCheckAsbitem.RegisterCheckId join asbitem in await _asbitemRepository.GetQueryableAsync() on registerCheckAsbitem.AsbitemId equals asbitem.AsbitemId where registerCheck.PatientRegisterId == input.PatientRegisterId select new MedicalPackageAsbitem() { ItemTypeId = asbitem.ItemTypeId, AsbitemId = asbitem.AsbitemId, AsbitemName = asbitem.AsbitemName, ShortName = asbitem.ShortName, Price = asbitem.Price, ForSexId = asbitem.ForSexId, //ForSexName = _cacheService.GetForSexNameAsync(asbitem.ForSexId).Result, IsBeforeEat = asbitem.IsBeforeEat, ClinicalMeaning = asbitem.ClinicalMeaning, IsCheck = asbitem.IsCheck, Warn = asbitem.Warn, DiseaseScreeningTypeId = asbitem.DiseaseScreeningTypeId, SimpleCode = asbitem.SimpleCode, DisplayOrder = asbitem.DisplayOrder, } ).ToList(); //获取检查分类 var medicalPackageAsbitemDtos = new List() { new MedicalPackageCheckTypeWithAsbitemsDto(){CheckTypeFlag = CheckTypeFlag.Regular,CheckTypeFlagName = "科室检查",DisplayOrder = 1}, new MedicalPackageCheckTypeWithAsbitemsDto(){CheckTypeFlag = CheckTypeFlag.Laboratory,CheckTypeFlagName = "检验",DisplayOrder = 2}, new MedicalPackageCheckTypeWithAsbitemsDto(){CheckTypeFlag =CheckTypeFlag.SpecialInspection,CheckTypeFlagName = "特检",DisplayOrder = 3}, new MedicalPackageCheckTypeWithAsbitemsDto(){CheckTypeFlag = CheckTypeFlag.Radiology,CheckTypeFlagName = "放射",DisplayOrder = 4} }; var itemTypes = await _itemTypeRepository.GetListAsync(); foreach (var asbitem in asbitems) { asbitem.ForSexName = await _cacheService.GetForSexNameAsync(asbitem.ForSexId); var itemType = itemTypes.Where(o => o.ItemTypeId == asbitem.ItemTypeId).Single(); if (itemType.PathCode.Length > 5) { itemType = itemTypes.Where(o => o.PathCode == itemType.PathCode.Substring(0, 5)).Single(); asbitem.ItemTypeId = itemType.ItemTypeId; } asbitem.CheckTypeFlag = itemType.CheckTypeFlag; } //设置每个分类包含的组合项目 foreach (var medicalPackageAsbitemDto in medicalPackageAsbitemDtos) { medicalPackageAsbitemDto.Asbitems = asbitems.Where(o => o.CheckTypeFlag == medicalPackageAsbitemDto.CheckTypeFlag).ToList(); } return medicalPackageAsbitemDtos; } } }