You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

103 lines
4.5 KiB

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<SumSummaryContent, Guid> _sumSummaryContentRepository;
private readonly IRepository<RegisterCheck, Guid> _registerCheckRepository;
private readonly IRepository<PatientRegister, Guid> _patientRegisterRepository;
private readonly SysParmValueManager _sysParmValueManager;
public SumSummaryHeaderManager(
IRepository<SumSummaryHeader, Guid> sumSummaryHeaderRepository,
IRepository<SumSummaryContent, Guid> sumSummaryContentRepository,
IRepository<RegisterCheck, Guid> registerCheckRepository,
IRepository<PatientRegister, Guid> patientRegisterRepository,
SysParmValueManager sysParmValueManager
)
{
this._sumSummaryContentRepository = sumSummaryContentRepository;
this._registerCheckRepository = registerCheckRepository;
_sysParmValueManager = sysParmValueManager;
_patientRegisterRepository = patientRegisterRepository;
}
public async Task<List<RegisterCheck>> 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<RegisterCheckSummary>()
{
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;
}
}
}