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.

612 lines
31 KiB

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;
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 Volo.Abp.ObjectMapping;
namespace Shentun.Peis.OccupationalDiseases
{
/// <summary>
/// 职业病业务
/// </summary>
[ApiExplorerSettings(GroupName = "Work")]
[Authorize]
public class OccupationalDiseaseAppService : ApplicationService
{
private readonly IRepository<PatientOccupationalDisease, Guid> _patientOccupationalDiseaseRepository;
private readonly IRepository<PatientOccupationalHistory, Guid> _patientOccupationalHistoryRepository;
private readonly IRepository<PatientPoison> _patientPoisonRepository;
private readonly IRepository<PatientSymptom> _patientSymptomRepository;
private readonly IRepository<PatientOccupationalMedicalHistory, Guid> _patientOccupationalMedicalHistoryRepository;
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,
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,
IRepository<PatientOccupationalMedicalHistory, Guid> patientOccupationalMedicalHistoryRepository)
{
_patientOccupationalDiseaseRepository = patientOccupationalDiseaseRepository;
_patientOccupationalHistoryRepository = patientOccupationalHistoryRepository;
_patientPoisonRepository = patientPoisonRepository;
_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;
_patientOccupationalMedicalHistoryRepository = patientOccupationalMedicalHistoryRepository;
}
/// <summary>
/// 创建职业病信息
/// </summary>
/// <returns></returns>
[HttpPost("api/app/OccupationalDisease/CreateOccupationalDiseaseWithDetail")]
public async Task<OccupationalDiseaseWithDetailByPatientRegisterIdDto> CreateOccupationalDiseaseWithDetailAsync(OccupationalDiseaseWithDetailInputDto input)
{
if (input == null)
{
throw new UserFriendlyException("请求参数有误");
}
if (input.PatientRegisterId == Guid.Empty)
throw new UserFriendlyException("人员ID不正确");
#region 基础信息
if (input.PatientOccupationalDisease == null)
throw new UserFriendlyException("职业病基础信息有误");
var patientOccupationalDiseaseInput = ObjectMapper.Map<PatientOccupationalDiseaseInputDto, PatientOccupationalDisease>(input.PatientOccupationalDisease);
patientOccupationalDiseaseInput.PatientRegisterId = input.PatientRegisterId;
var patientOccupationalDiseaseEnt = await _patientOccupationalDiseaseRepository.FirstOrDefaultAsync(f => f.PatientRegisterId == input.PatientRegisterId);
if (patientOccupationalDiseaseEnt == null)
{
var entity = _patientOccupationalDiseaseManager.CreateAsync(patientOccupationalDiseaseInput);
await _patientOccupationalDiseaseRepository.InsertAsync(entity, true);
}
else
{
_patientOccupationalDiseaseManager.UpdateAsync(patientOccupationalDiseaseInput, patientOccupationalDiseaseEnt);
await _patientOccupationalDiseaseRepository.UpdateAsync(patientOccupationalDiseaseEnt, true);
}
#endregion
#region 毒害因素
var patientPoisonsInput = ObjectMapper.Map<List<PatientPoisonInputDto>, List<PatientPoison>>(input.PatientPoisons);
await _patientPoisonRepository.DeleteAsync(d => d.PatientRegisterId == input.PatientRegisterId);
List<PatientPoison> patientPoisonList = new List<PatientPoison>();
foreach (var item in patientPoisonsInput)
{
patientPoisonList.Add(new PatientPoison
{
PatientRegisterId = input.PatientRegisterId,
PoisonId = item.PoisonId
});
}
await _patientPoisonRepository.InsertManyAsync(patientPoisonList, true);
#endregion
#region 症状
var patientSymptomsInput = ObjectMapper.Map<List<PatientSymptomInputDto>, List<PatientSymptom>>(input.PatientSymptoms);
await _patientSymptomRepository.DeleteAsync(d => d.PatientRegisterId == input.PatientRegisterId);
List<PatientSymptom> patientSymptomList = new List<PatientSymptom>();
foreach (var item in patientSymptomsInput)
{
patientSymptomList.Add(new PatientSymptom
{
PatientRegisterId = input.PatientRegisterId,
Degree = item.Degree,
SymptomId = item.SymptomId,
TimeLength = item.TimeLength
});
}
await _patientSymptomRepository.InsertManyAsync(patientSymptomList, true);
#endregion
#region 职业病史
var patientOccupationalMedicalHistorysInput = ObjectMapper.Map<List<PatientOccupationalMedicalHistoryInputDto>, List<PatientOccupationalMedicalHistory>>(input.PatientOccupationalMedicalHistorys);
await _patientOccupationalMedicalHistoryRepository.DeleteAsync(d => d.PatientRegisterId == input.PatientRegisterId);
List<PatientOccupationalMedicalHistory> patientOccupationalMedicalHistoryList = new List<PatientOccupationalMedicalHistory>();
foreach (var item in patientOccupationalMedicalHistorysInput)
{
patientOccupationalMedicalHistoryList.Add(new PatientOccupationalMedicalHistory
{
PatientRegisterId = input.PatientRegisterId,
DiagnosisDate = item.DiagnosisDate,
DiagnosisHospital = item.DiagnosisHospital,
IsRecovery = item.IsRecovery,
OccupationalDisease = item.OccupationalDisease,
TreatmentMethods = item.TreatmentMethods
});
}
await _patientOccupationalMedicalHistoryRepository.InsertManyAsync(patientOccupationalMedicalHistoryList, true);
#endregion
#region 职业史
var patientOccupationalHistorysInput = ObjectMapper.Map<List<PatientOccupationalHistoryInputDto>, List<PatientOccupationalHistory>>(input.PatientOccupationalHistorys);
await _patientOccupationalHistoryRepository.DeleteAsync(d => d.PatientRegisterId == input.PatientRegisterId);
List<PatientOccupationalHistory> patientOccupationalHistoryList = new List<PatientOccupationalHistory>();
foreach (var item in patientOccupationalHistorysInput)
{
patientOccupationalHistoryList.Add(new PatientOccupationalHistory
{
PatientRegisterId = input.PatientRegisterId,
BeginDate = item.BeginDate,
EndDate = item.EndDate,
Org = item.Org,
Poison = item.Poison,
ProtectiveMeasures = item.ProtectiveMeasures,
WorkShop = item.WorkShop,
WorkType = item.WorkType
});
}
await _patientOccupationalHistoryRepository.InsertManyAsync(patientOccupationalHistoryList, true);
#endregion
return await GetOccupationalDiseaseWithDetailByPatientRegisterIdAsync(new PatientRegisterIdInputDto
{
PatientRegisterId = input.PatientRegisterId
});
}
/// <summary>
/// 获取职业病信息 根据人员登记ID
/// </summary>
/// <returns></returns>
[HttpPost("api/app/OccupationalDisease/GetOccupationalDiseaseWithDetailByPatientRegisterId")]
public async Task<OccupationalDiseaseWithDetailByPatientRegisterIdDto> GetOccupationalDiseaseWithDetailByPatientRegisterIdAsync(PatientRegisterIdInputDto input)
{
if (input == null)
{
throw new UserFriendlyException("请求参数有误");
}
if (input.PatientRegisterId == Guid.Empty)
throw new UserFriendlyException("人员ID不正确");
var result = new OccupationalDiseaseWithDetailByPatientRegisterIdDto();
#region 基础信息
var patientOccupationalDiseaseEnt = await _patientOccupationalDiseaseRepository.FirstOrDefaultAsync(f => f.PatientRegisterId == input.PatientRegisterId);
if (patientOccupationalDiseaseEnt != null)
{
result.PatientOccupationalDisease = new PatientOccupationalDiseaseDto
{
AbnormalTimes = patientOccupationalDiseaseEnt.AbnormalTimes,
AbortionTimes = patientOccupationalDiseaseEnt.AbortionTimes,
ChildrenNum = patientOccupationalDiseaseEnt.ChildrenNum,
CreationTime = patientOccupationalDiseaseEnt.CreationTime,
CreatorId = patientOccupationalDiseaseEnt.CreatorId,
DrinkFlag = patientOccupationalDiseaseEnt.DrinkFlag,
DrinkNum = patientOccupationalDiseaseEnt.DrinkNum,
DrinkYears = patientOccupationalDiseaseEnt.DrinkYears,
FirstMenstruation = patientOccupationalDiseaseEnt.FirstMenstruation,
HandleSuggestion = patientOccupationalDiseaseEnt.HandleSuggestion,
Id = patientOccupationalDiseaseEnt.Id,
JobType = patientOccupationalDiseaseEnt.JobType,
LastMenstrualPeriodDate = patientOccupationalDiseaseEnt.LastMenstrualPeriodDate,
LastModificationTime = patientOccupationalDiseaseEnt.LastModificationTime,
LastModifierId = patientOccupationalDiseaseEnt.LastModifierId,
MenstruationCycle = patientOccupationalDiseaseEnt.MenstruationCycle,
MenstruationEndAge = patientOccupationalDiseaseEnt.MenstruationEndAge,
MenstruationFlag = patientOccupationalDiseaseEnt.MenstruationFlag,
MenstruationTimeLength = patientOccupationalDiseaseEnt.MenstruationTimeLength,
NoOccupAbSuggestion = patientOccupationalDiseaseEnt.NoOccupAbSuggestion,
NoOccupationalAbnormal = patientOccupationalDiseaseEnt.NoOccupationalAbnormal,
OcCheckTypeId = patientOccupationalDiseaseEnt.OcCheckTypeId,
OccupationalAbnormal = patientOccupationalDiseaseEnt.OccupationalAbnormal,
OccupationalAbSuggestion = patientOccupationalDiseaseEnt.OccupationalAbSuggestion,
Other = patientOccupationalDiseaseEnt.Other,
PoisonWorkTime = patientOccupationalDiseaseEnt.PoisonWorkTime,
PrematureBirthTimes = patientOccupationalDiseaseEnt.PrematureBirthTimes,
PreviousHistory = patientOccupationalDiseaseEnt.PreviousHistory,
SmokeFlag = patientOccupationalDiseaseEnt.SmokeFlag,
SmokeNum = patientOccupationalDiseaseEnt.SmokeNum,
SmokeYears = patientOccupationalDiseaseEnt.SmokeYears,
StillbirthTimes = patientOccupationalDiseaseEnt.StillbirthTimes,
TotalWorkTime = patientOccupationalDiseaseEnt.TotalWorkTime,
CreatorName = _cacheService.GetSurnameAsync(patientOccupationalDiseaseEnt.CreatorId).Result,
LastModifierName = _cacheService.GetSurnameAsync(patientOccupationalDiseaseEnt.LastModifierId).Result
};
}
#endregion
#region 毒害因素
List<PatientPoisonDto> patientPoisonDtos = new List<PatientPoisonDto>();
var patientPoisonList = await _patientPoisonRepository.GetListAsync(d => d.PatientRegisterId == input.PatientRegisterId);
patientPoisonDtos = patientPoisonList.Select(s => new PatientPoisonDto
{
PoisonId = s.PoisonId,
SuspectedOccupationalDiseaseId = s.SuspectedOccupationalDiseaseId,
OccupationalContraindicationsId = s.OccupationalContraindicationsId,
OccupationalAbnormalId = s.OccupationalAbnormalId,
OtherDiseases = s.OtherDiseases,
CreationTime = s.CreationTime,
CreatorId = s.CreatorId,
LastModificationTime = s.LastModificationTime,
LastModifierId = s.LastModifierId,
CreatorName = _cacheService.GetSurnameAsync(s.CreatorId).Result,
LastModifierName = _cacheService.GetSurnameAsync(s.LastModifierId).Result
}).ToList();
result.PatientPoisonDtos = patientPoisonDtos;
#endregion
#region 职业病史
List<PatientOccupationalMedicalHistoryDto> patientOccupationalMedicalHistoryDtos = new List<PatientOccupationalMedicalHistoryDto>();
var patientOccupationalMedicalHistoryList = await _patientOccupationalMedicalHistoryRepository.GetListAsync(d => d.PatientRegisterId == input.PatientRegisterId);
patientOccupationalMedicalHistoryDtos = patientOccupationalMedicalHistoryList.Select(s => new PatientOccupationalMedicalHistoryDto
{
DiagnosisDate = s.DiagnosisDate,
DiagnosisHospital = s.DiagnosisHospital,
Id = s.Id,
IsRecovery = s.IsRecovery,
OccupationalDisease = s.OccupationalDisease,
TreatmentMethods = s.TreatmentMethods,
CreationTime = s.CreationTime,
CreatorId = s.CreatorId,
LastModificationTime = s.LastModificationTime,
LastModifierId = s.LastModifierId,
CreatorName = _cacheService.GetSurnameAsync(s.CreatorId).Result,
LastModifierName = _cacheService.GetSurnameAsync(s.LastModifierId).Result
}).ToList();
result.PatientOccupationalMedicalHistoryDtos = patientOccupationalMedicalHistoryDtos;
#endregion
#region 症状
var patientSymptomList = await _patientSymptomRepository.GetListAsync(m => m.PatientRegisterId == input.PatientRegisterId);
List<PatientSymptomDto> patientSymptomDtos = patientSymptomList.Select(s => new PatientSymptomDto
{
Degree = s.Degree,
SymptomId = s.SymptomId,
TimeLength = s.TimeLength,
CreationTime = s.CreationTime,
CreatorId = s.CreatorId,
LastModificationTime = s.LastModificationTime,
LastModifierId = s.LastModifierId,
CreatorName = _cacheService.GetSurnameAsync(s.CreatorId).Result,
LastModifierName = _cacheService.GetSurnameAsync(s.LastModifierId).Result
}).ToList();
result.PatientSymptomDtos = patientSymptomDtos;
#endregion
#region 职业史
var patientOccupationalHistoryList = await _patientOccupationalHistoryRepository.GetListAsync(d => d.PatientRegisterId == input.PatientRegisterId);
List<PatientOccupationalHistoryDto> patientOccupationalHistoryDtos = patientOccupationalHistoryList.Select(s => new PatientOccupationalHistoryDto
{
BeginDate = s.BeginDate,
EndDate = s.EndDate,
Org = s.Org,
Poison = s.Poison,
ProtectiveMeasures = s.ProtectiveMeasures,
WorkShop = s.WorkShop,
WorkType = s.WorkType,
CreationTime = s.CreationTime,
CreatorId = s.CreatorId,
Id = s.Id,
LastModifierId = s.LastModifierId,
LastModificationTime = s.LastModificationTime,
CreatorName = _cacheService.GetSurnameAsync(s.CreatorId).Result,
LastModifierName = _cacheService.GetSurnameAsync(s.LastModifierId).Result
}).ToList();
result.PatientOccupationalHistoryDtos = patientOccupationalHistoryDtos;
#endregion
return result;
}
/// <summary>
/// 修改检查结论
/// </summary>
/// <returns></returns>
[HttpPost("api/app/OccupationalDisease/UpdateOccupationalDiseaseInspectionConclusion")]
public async Task UpdateOccupationalDiseaseInspectionConclusionAsync(OccupationalDiseaseInspectionConclusionInputDto input)
{
var patientOccupationalDiseaseEnt = await _patientOccupationalDiseaseRepository.FirstOrDefaultAsync(F => F.PatientRegisterId == input.PatientRegisterId);
if (patientOccupationalDiseaseEnt == null)
{
throw new UserFriendlyException("请先登记职业病信息");
}
patientOccupationalDiseaseEnt.NoOccupAbSuggestion = input.NoOccupAbSuggestion;
patientOccupationalDiseaseEnt.NoOccupationalAbnormal = input.NoOccupationalAbnormal;
patientOccupationalDiseaseEnt.OccupationalAbnormal = input.OccupationalAbnormal;
patientOccupationalDiseaseEnt.OccupationalAbSuggestion = input.OccupationalAbSuggestion;
patientOccupationalDiseaseEnt.HandleSuggestion = input.HandleSuggestion;
await _patientOccupationalDiseaseRepository.UpdateAsync(patientOccupationalDiseaseEnt);
}
/// <summary>
/// 获取检查结论
/// </summary>
/// <returns></returns>
[HttpPost("api/app/OccupationalDisease/GetOccupationalDiseaseInspectionConclusion")]
public async Task<OccupationalDiseaseInspectionConclusionDto> GetOccupationalDiseaseInspectionConclusionAsync(PatientRegisterIdInputDto input)
{
var patientOccupationalDiseaseEnt = await _patientOccupationalDiseaseRepository.FirstOrDefaultAsync(F => F.PatientRegisterId == input.PatientRegisterId);
if (patientOccupationalDiseaseEnt == null)
{
throw new UserFriendlyException("暂无职业病信息");
}
var entDto = new OccupationalDiseaseInspectionConclusionDto
{
HandleSuggestion = patientOccupationalDiseaseEnt.HandleSuggestion,
NoOccupAbSuggestion = patientOccupationalDiseaseEnt.NoOccupAbSuggestion,
NoOccupationalAbnormal = patientOccupationalDiseaseEnt.NoOccupationalAbnormal,
OccupationalAbnormal = patientOccupationalDiseaseEnt.OccupationalAbnormal,
OccupationalAbSuggestion = patientOccupationalDiseaseEnt.OccupationalAbSuggestion
};
return entDto;
}
/// <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;
}
/// <summary>
/// 删除职业病相关信息
/// </summary>
/// <param name="input"></param>
/// <returns></returns>
[HttpPost("api/app/OccupationalDisease/DeleteOccupationalDiseaseWithDetail")]
public async Task DeleteOccupationalDiseaseWithDetailAsync(PatientRegisterIdInputDto input)
{
if (input == null)
{
throw new UserFriendlyException("请求参数有误");
}
if (input.PatientRegisterId == Guid.Empty)
throw new UserFriendlyException("人员ID不正确");
await _patientOccupationalDiseaseRepository.DeleteAsync(d => d.PatientRegisterId == input.PatientRegisterId);
await _patientOccupationalHistoryRepository.DeleteAsync(d => d.PatientRegisterId == input.PatientRegisterId);
await _patientPoisonRepository.DeleteAsync(d => d.PatientRegisterId == input.PatientRegisterId);
await _patientOccupationalMedicalHistoryRepository.DeleteAsync(d => d.PatientRegisterId == input.PatientRegisterId);
await _patientSymptomRepository.DeleteAsync(d => d.PatientRegisterId == input.PatientRegisterId);
}
}
}