|
|
|
@ -1,9 +1,12 @@ |
|
|
|
using Microsoft.AspNetCore.Authorization; |
|
|
|
using Microsoft.AspNetCore.Mvc; |
|
|
|
using Microsoft.EntityFrameworkCore; |
|
|
|
using Shentun.Peis.Enums; |
|
|
|
using Shentun.Peis.Models; |
|
|
|
using Shentun.Peis.OcCheckTypes; |
|
|
|
using Shentun.Peis.PatientOccupationalDiseases; |
|
|
|
using Shentun.Peis.PatientRegisters; |
|
|
|
using Shentun.Peis.SumSummaryReports; |
|
|
|
using System; |
|
|
|
using System.Collections.Generic; |
|
|
|
using System.Linq; |
|
|
|
@ -12,6 +15,7 @@ using System.Threading.Tasks; |
|
|
|
using Volo.Abp; |
|
|
|
using Volo.Abp.Application.Services; |
|
|
|
using Volo.Abp.Domain.Repositories; |
|
|
|
using Volo.Abp.Identity; |
|
|
|
using Volo.Abp.ObjectMapping; |
|
|
|
|
|
|
|
namespace Shentun.Peis.OccupationalDiseases |
|
|
|
@ -29,13 +33,44 @@ namespace Shentun.Peis.OccupationalDiseases |
|
|
|
private readonly IRepository<PatientSymptom> _patientSymptomRepository; |
|
|
|
private readonly PatientOccupationalDiseaseManager _patientOccupationalDiseaseManager; |
|
|
|
private readonly CacheService _cacheService; |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
private readonly IRepository<Patient, Guid> _patientRepository; |
|
|
|
private readonly IRepository<RegisterCheck, Guid> _registerCheckRepository; |
|
|
|
private readonly IRepository<IdentityUser, Guid> _identityUserRepository; |
|
|
|
private readonly IRepository<ItemType, Guid> _itemTypeRepository; |
|
|
|
private readonly IRepository<RegisterCheckItem> _registerCheckItemRepository; |
|
|
|
private readonly IRepository<Item, Guid> _itemRepository; |
|
|
|
private readonly IRepository<PatientRegister, Guid> _patientRegisterRepository; |
|
|
|
private readonly IRepository<RegisterCheckAsbitem, Guid> _registerCheckAsbitemRepository; |
|
|
|
private readonly IRepository<ResultStatus> _resultStatusRepository; |
|
|
|
private readonly IRepository<RegisterCheckSummary, Guid> _registerCheckSummaryRepository; |
|
|
|
private readonly IRepository<Asbitem, Guid> _asbitemRepository; |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
public OccupationalDiseaseAppService( |
|
|
|
IRepository<PatientOccupationalDisease, Guid> patientOccupationalDiseaseRepository, |
|
|
|
IRepository<PatientOccupationalHistory, Guid> patientOccupationalHistoryRepository, |
|
|
|
IRepository<PatientPoison> patientPoisonRepository, |
|
|
|
IRepository<PatientSymptom> patientSymptomRepository, |
|
|
|
PatientOccupationalDiseaseManager patientOccupationalDiseaseManager, |
|
|
|
CacheService cacheService) |
|
|
|
CacheService cacheService, |
|
|
|
IRepository<Patient, Guid> patientRepository, |
|
|
|
IRepository<RegisterCheck, Guid> registerCheckRepository, |
|
|
|
IRepository<IdentityUser, Guid> identityUserRepository, |
|
|
|
IRepository<ItemType, Guid> itemTypeRepository, |
|
|
|
IRepository<RegisterCheckItem> registerCheckItemRepository, |
|
|
|
IRepository<Item, Guid> itemRepository, |
|
|
|
IRepository<PatientRegister, Guid> patientRegisterRepository, |
|
|
|
IRepository<RegisterCheckAsbitem, Guid> registerCheckAsbitemRepository, |
|
|
|
IRepository<ResultStatus> resultStatusRepository, |
|
|
|
IRepository<RegisterCheckSummary, Guid> registerCheckSummaryRepository, |
|
|
|
IRepository<Asbitem, Guid> asbitemRepository) |
|
|
|
{ |
|
|
|
_patientOccupationalDiseaseRepository = patientOccupationalDiseaseRepository; |
|
|
|
_patientOccupationalHistoryRepository = patientOccupationalHistoryRepository; |
|
|
|
@ -43,6 +78,17 @@ namespace Shentun.Peis.OccupationalDiseases |
|
|
|
_patientSymptomRepository = patientSymptomRepository; |
|
|
|
_patientOccupationalDiseaseManager = patientOccupationalDiseaseManager; |
|
|
|
_cacheService = cacheService; |
|
|
|
_patientRepository = patientRepository; |
|
|
|
_registerCheckRepository = registerCheckRepository; |
|
|
|
_identityUserRepository = identityUserRepository; |
|
|
|
_itemTypeRepository = itemTypeRepository; |
|
|
|
_registerCheckItemRepository = registerCheckItemRepository; |
|
|
|
_itemRepository = itemRepository; |
|
|
|
_patientRegisterRepository = patientRegisterRepository; |
|
|
|
_registerCheckAsbitemRepository = registerCheckAsbitemRepository; |
|
|
|
_resultStatusRepository = resultStatusRepository; |
|
|
|
_registerCheckSummaryRepository = registerCheckSummaryRepository; |
|
|
|
_asbitemRepository = asbitemRepository; |
|
|
|
} |
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
@ -310,5 +356,144 @@ namespace Shentun.Peis.OccupationalDiseases |
|
|
|
await _patientOccupationalDiseaseRepository.UpdateAsync(patientOccupationalDiseaseEnt); |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
/// 获取体征结果
|
|
|
|
/// </summary>
|
|
|
|
/// <param name="input">人员登记ID</param>
|
|
|
|
/// <returns></returns>
|
|
|
|
[HttpPost("api/app/OccupationalDisease/GetDetailResults")] |
|
|
|
public async Task<List<SumSummaryReportDetailResultDto>> GetDetailResultsAsync(PatientRegisterIdInputDto input) |
|
|
|
{ |
|
|
|
List<SumSummaryReportDetailResultDto> msg = new List<SumSummaryReportDetailResultDto>(); |
|
|
|
|
|
|
|
var userlist = await _identityUserRepository.GetListAsync(); |
|
|
|
var resultStatus = await _resultStatusRepository.GetListAsync(); |
|
|
|
var list = (from patient in await _patientRepository.GetQueryableAsync() |
|
|
|
join patientRegister in await _patientRegisterRepository.GetQueryableAsync() |
|
|
|
on patient.Id equals patientRegister.PatientId |
|
|
|
join registerCheck in await _registerCheckRepository.GetQueryableAsync() |
|
|
|
on patientRegister.Id equals registerCheck.PatientRegisterId |
|
|
|
join registerCheckAsbitem in await _registerCheckAsbitemRepository.GetQueryableAsync() |
|
|
|
on registerCheck.Id equals registerCheckAsbitem.RegisterCheckId |
|
|
|
join registerCheckSummary in await _registerCheckSummaryRepository.GetQueryableAsync() |
|
|
|
on registerCheck.Id equals registerCheckSummary.RegisterCheckId |
|
|
|
join asbitem in await _asbitemRepository.GetQueryableAsync() |
|
|
|
on registerCheckAsbitem.AsbitemId equals asbitem.Id |
|
|
|
join registerCheckItem in await _registerCheckItemRepository.GetQueryableAsync() |
|
|
|
on registerCheck.Id equals registerCheckItem.RegisterCheckId |
|
|
|
join item in await _itemRepository.GetQueryableAsync() |
|
|
|
on registerCheckItem.ItemId equals item.Id |
|
|
|
join itemType in await _itemTypeRepository.GetQueryableAsync() |
|
|
|
on asbitem.ItemTypeId equals itemType.Id |
|
|
|
where patientRegister.Id == input.PatientRegisterId |
|
|
|
&& registerCheck.CompleteFlag == RegisterCheckCompleteFlag.Checked |
|
|
|
&& asbitem.IsCheck == 'Y' |
|
|
|
select new |
|
|
|
{ |
|
|
|
patient, |
|
|
|
patientRegister, |
|
|
|
registerCheck, |
|
|
|
registerCheckSummary, |
|
|
|
registerCheckAsbitem, |
|
|
|
asbitem, |
|
|
|
registerCheckItem, |
|
|
|
item, |
|
|
|
itemType |
|
|
|
|
|
|
|
}).AsNoTracking().ToList(); |
|
|
|
|
|
|
|
if (!list.Any()) |
|
|
|
{ |
|
|
|
return null; |
|
|
|
} |
|
|
|
|
|
|
|
//将子项目类别设置为父项目类别
|
|
|
|
var itemTypes = await _itemTypeRepository.GetListAsync(); |
|
|
|
foreach (var listItem in list) |
|
|
|
{ |
|
|
|
var parentItemType = itemTypes.Where(o => o.Id == listItem.itemType.ParentId).FirstOrDefault(); |
|
|
|
if (parentItemType != null) |
|
|
|
{ |
|
|
|
listItem.asbitem.DisplayOrder = listItem.itemType.DisplayOrder * 1000 + listItem.asbitem.DisplayOrder; |
|
|
|
listItem.itemType.DisplayName = parentItemType.DisplayName; |
|
|
|
listItem.itemType.DisplayOrder = parentItemType.DisplayOrder; |
|
|
|
|
|
|
|
} |
|
|
|
} |
|
|
|
var detailedResultsList_Asbitems = new List<SumSummaryReportDetailResultWithAsbitem>(); |
|
|
|
var registerCheckIds = list.OrderBy(o => o.itemType.DisplayOrder) |
|
|
|
.OrderBy(o => o.asbitem.DisplayOrder) |
|
|
|
.Select(o => o.registerCheck.Id).Distinct().ToList(); |
|
|
|
foreach (var registerCheckId in registerCheckIds) |
|
|
|
{ |
|
|
|
var listItem = list.Where(o => o.registerCheck.Id == registerCheckId).First(); |
|
|
|
var detailedResultsList_Asbitem = new SumSummaryReportDetailResultWithAsbitem() |
|
|
|
{ |
|
|
|
|
|
|
|
ItemTypeName = listItem.itemType.DisplayName, |
|
|
|
AsbitemNames = string.Join(",", list.Where(o => o.registerCheck.Id == registerCheckId) |
|
|
|
.OrderBy(o => o.itemType.DisplayOrder).OrderBy(o => o.asbitem.DisplayOrder) |
|
|
|
.Select(o => o.asbitem.DisplayName).Distinct().ToList()), |
|
|
|
ItemTypeDisplayOrder = listItem.itemType.DisplayOrder, |
|
|
|
AsbitemDisplayOrder = listItem.asbitem.DisplayOrder, |
|
|
|
CheckDate = ((DateTime)listItem.registerCheck.CheckDate).Date, |
|
|
|
CheckDoctorName = EntityHelper.GetCheckDoctorName(listItem.registerCheck.CheckDoctorId, userlist), |
|
|
|
Items = list.Where(o => o.registerCheck.Id == registerCheckId) |
|
|
|
.OrderBy(o => o.itemType.DisplayOrder) |
|
|
|
.OrderBy(o => o.asbitem.DisplayOrder) |
|
|
|
.OrderBy(o => o.item.DisplayOrder) |
|
|
|
.GroupBy(o => o.registerCheckItem.ItemId) |
|
|
|
.Select(o => new SumSummaryReportDetailResultWithItem() |
|
|
|
{ |
|
|
|
ItemId = o.FirstOrDefault().registerCheckItem.ItemId, |
|
|
|
ItemName = o.FirstOrDefault().item.DisplayName, |
|
|
|
ItemResult = o.FirstOrDefault().registerCheckItem.Result, |
|
|
|
ReferenceRangeValue = o.FirstOrDefault().registerCheckItem.ReferenceRangeValue, |
|
|
|
CriticalRangeValue = o.FirstOrDefault().registerCheckItem.CriticalRangeValue, |
|
|
|
Unit = o.FirstOrDefault().registerCheckItem.Unit, |
|
|
|
ResultStatusId = o.FirstOrDefault().registerCheckItem.ResultStatusId, |
|
|
|
ResultStatusName = (resultStatus.Where(x => x.Id == o.FirstOrDefault().registerCheckItem.ResultStatusId).FirstOrDefault() == null) ? "" : resultStatus.Where(x => x.Id == o.FirstOrDefault().registerCheckItem.ResultStatusId).FirstOrDefault().ReportPrompt, |
|
|
|
ReportFontColor = (resultStatus.Where(x => x.Id == o.FirstOrDefault().registerCheckItem.ResultStatusId).FirstOrDefault() == null) ? 0 : resultStatus.Where(x => x.Id == o.FirstOrDefault().registerCheckItem.ResultStatusId).FirstOrDefault().ReportFontColor, |
|
|
|
ReportBackgroundColor = (resultStatus.Where(x => x.Id == o.FirstOrDefault().registerCheckItem.ResultStatusId).FirstOrDefault() == null) ? 16777215 : resultStatus.Where(x => x.Id == o.FirstOrDefault().registerCheckItem.ResultStatusId).FirstOrDefault().ReportBackgroundColor, |
|
|
|
}).ToList(), |
|
|
|
Summarys = list.Where(o => o.registerCheck.Id == registerCheckId) |
|
|
|
.OrderBy(o => o.registerCheckSummary.DisplayOrder) |
|
|
|
.GroupBy(o => o.registerCheckSummary.Summary) |
|
|
|
.Select(o => new SumSummaryReportDetailResultWithSummary() |
|
|
|
{ |
|
|
|
Summary = o.FirstOrDefault().registerCheckSummary.Summary |
|
|
|
}) |
|
|
|
.ToList<SumSummaryReportDetailResultWithSummary>(), |
|
|
|
|
|
|
|
}; |
|
|
|
detailedResultsList_Asbitem.Summarys = detailedResultsList_Asbitem.Summarys.Distinct().ToList(); |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
detailedResultsList_Asbitems.Add(detailedResultsList_Asbitem); |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
var grouplist = detailedResultsList_Asbitems.OrderBy(o => o.ItemTypeDisplayOrder) |
|
|
|
.OrderBy(o => o.AsbitemDisplayOrder) |
|
|
|
.GroupBy(g => g.ItemTypeName); |
|
|
|
|
|
|
|
foreach (var g in grouplist) |
|
|
|
{ |
|
|
|
var glist = g.OrderBy(o => o.ItemTypeDisplayOrder).OrderBy(o => o.AsbitemDisplayOrder).ToList(); |
|
|
|
var resultlist = new SumSummaryReportDetailResultDto |
|
|
|
{ |
|
|
|
ItemTypeDisplayOrder = glist.FirstOrDefault().ItemTypeDisplayOrder, |
|
|
|
ItemTypeName = glist.FirstOrDefault().ItemTypeName, |
|
|
|
Asbitems = glist |
|
|
|
}; |
|
|
|
|
|
|
|
msg.Add(resultlist); |
|
|
|
} |
|
|
|
msg = msg.OrderBy(o => o.ItemTypeDisplayOrder).ToList(); |
|
|
|
return msg; |
|
|
|
} |
|
|
|
|
|
|
|
} |
|
|
|
} |