using Microsoft.EntityFrameworkCore; using Shentun.Peis.Models; using Shentun.Peis.SysParmValues; using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using Volo.Abp.Domain.Repositories; using Volo.Abp.Domain.Services; namespace Shentun.Peis.SumSummaryHeaders { public class SumSummaryHeaderManager : DomainService { private readonly IRepository _sumSummaryContentRepository; private readonly IRepository _registerCheckRepository; private readonly IRepository _patientRegisterRepository; private readonly SysParmValueManager _sysParmValueManager; public SumSummaryHeaderManager( IRepository sumSummaryHeaderRepository, IRepository sumSummaryContentRepository, IRepository registerCheckRepository, IRepository patientRegisterRepository, SysParmValueManager sysParmValueManager ) { this._sumSummaryContentRepository = sumSummaryContentRepository; this._registerCheckRepository = registerCheckRepository; _sysParmValueManager = sysParmValueManager; _patientRegisterRepository = patientRegisterRepository; } public async Task> GetSumSummarysByDoctorCheck(Guid PatientRegisterId) { var patientRegister = await _patientRegisterRepository.GetAsync(PatientRegisterId); //总检综述包含正常结果 var isSummaryCheckSummayContainNormalResult = await _sysParmValueManager. GetSysParmValueInMedicalCenterId(patientRegister.MedicalCenterId, "summary_check_summay_contain_normal_result"); //默认综述 var summaryCheckDefaultSummayContent = await _sysParmValueManager. GetSysParmValueInMedicalCenterId(patientRegister.MedicalCenterId, "summary_check_default_summay_content"); var checklist = (await _registerCheckRepository.GetDbSetAsync()) .Include(x => x.RegisterCheckAsbitems) .ThenInclude(x => x.Asbitem).ThenInclude(x=>x.ItemType) .Include(x => x.RegisterCheckSummaries) .Where(m => m.RegisterCheckAsbitems.Select(s => s.PatientRegisterId).Contains(PatientRegisterId) && m.RegisterCheckSummaries.Count > 0) .ToList(); //排序 checklist = checklist.OrderBy(o=>o.RegisterCheckAsbitems.Max(x=>x.Asbitem.ItemType.DisplayOrder)). ToList().OrderBy(o => o.RegisterCheckAsbitems.Max(x => x.Asbitem.DisplayOrder)).ToList(); if (isSummaryCheckSummayContainNormalResult != "Y") { //去掉小结和默认结果一致的小结 for (var i = 0; i < checklist.Count; i++) { var registerCheck = checklist[i]; var registerCheckSummaries = registerCheck.RegisterCheckSummaries.ToList(); var registerCheckAsbitems = registerCheck.RegisterCheckAsbitems.ToList(); if (registerCheck.RegisterCheckSummaries.Count() == 1) { if (registerCheckSummaries[0].Summary == registerCheckAsbitems[0].Asbitem.DefaultResult) { checklist.Remove(registerCheck); i--; } } } } if(!checklist.Any()) { checklist.Add(new RegisterCheck() { RegisterCheckSummaries = new List() { new RegisterCheckSummary() { Summary = summaryCheckDefaultSummayContent, } } }); } return checklist; } public SumSummaryHeader CreateAsync(Guid patientRegisterId, string summaryTitle,char? summaryFlag,int displayOrder) { var entity = new SumSummaryHeader(GuidGenerator.Create()) { PatientRegisterId = patientRegisterId, SummaryTitle = summaryTitle, SummaryFlag = summaryFlag, DisplayOrder = displayOrder }; return entity; } } }