|
|
|
@ -111,147 +111,147 @@ namespace Shentun.Peis.ImportLisResults |
|
|
|
public async Task ImportResultAsync(List<CreateImportLisResultDto> input) |
|
|
|
{ |
|
|
|
//设置结果
|
|
|
|
|
|
|
|
var list = (from patientRegister in await _patientRegisterRepository.GetQueryableAsync() |
|
|
|
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 registerCheckItem in await _registerCheckItemRepository.GetQueryableAsync() |
|
|
|
on registerCheck.Id equals registerCheckItem.RegisterCheckId |
|
|
|
join item in await _itemRepository.GetQueryableAsync() |
|
|
|
on registerCheckItem.ItemId equals item.Id |
|
|
|
join lisRequest in await _lisRequestRepository.GetQueryableAsync() |
|
|
|
on registerCheckAsbitem.LisRequestId equals lisRequest.Id |
|
|
|
where input.Select(o => o.LisRequestNo).ToList().Contains(lisRequest.LisRequestNo) |
|
|
|
select new |
|
|
|
{ |
|
|
|
patientRegister, |
|
|
|
registerCheck, |
|
|
|
registerCheckAsbitem, |
|
|
|
registerCheckItem, |
|
|
|
item, |
|
|
|
lisRequest, |
|
|
|
}).ToList(); |
|
|
|
|
|
|
|
var lisRequestNos = input.Select(o => o.LisRequestNo).Distinct().ToList(); |
|
|
|
var registerChecks = new List<RegisterCheck>(); |
|
|
|
_referenceRanges = _referenceRangeRepository.GetListAsync().Result; |
|
|
|
foreach (var inputItem in input) |
|
|
|
{ |
|
|
|
var lisRequestItem = list.Where(o => o.lisRequest.LisRequestNo == inputItem.LisRequestNo |
|
|
|
&& o.registerCheckItem.ItemId == inputItem.ItemId).FirstOrDefault(); |
|
|
|
if (lisRequestItem == null) |
|
|
|
{ |
|
|
|
continue; |
|
|
|
} |
|
|
|
lisRequestItem.registerCheckItem.Result = inputItem.Result; |
|
|
|
//var itemSource = new RegisterCheckItem()
|
|
|
|
//{
|
|
|
|
// Result = inputItem.Result,
|
|
|
|
// ReferenceRangeValue = inputItem.ReferenceRangeValue,
|
|
|
|
// Unit = inputItem.Unit,
|
|
|
|
// CriticalRangeValue = inputItem.CriticalRangeValue
|
|
|
|
//};
|
|
|
|
//修改参考范围
|
|
|
|
await UpdateItemReferenceRangeValueAsync(inputItem.ItemId, lisRequestItem.patientRegister.SexId, |
|
|
|
lisRequestItem.patientRegister.Age, inputItem.ReferenceRangeValue); |
|
|
|
//修改单位
|
|
|
|
await UpdateItemUnitAsync(inputItem.ItemId, inputItem.Unit); |
|
|
|
var list = (from patientRegister in await _patientRegisterRepository.GetQueryableAsync() |
|
|
|
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 registerCheckItem in await _registerCheckItemRepository.GetQueryableAsync() |
|
|
|
on registerCheck.Id equals registerCheckItem.RegisterCheckId |
|
|
|
join item in await _itemRepository.GetQueryableAsync() |
|
|
|
on registerCheckItem.ItemId equals item.Id |
|
|
|
join lisRequest in await _lisRequestRepository.GetQueryableAsync() |
|
|
|
on registerCheckAsbitem.LisRequestId equals lisRequest.Id |
|
|
|
where input.Select(o => o.LisRequestNo).ToList().Contains(lisRequest.LisRequestNo) |
|
|
|
select new |
|
|
|
{ |
|
|
|
patientRegister, |
|
|
|
registerCheck, |
|
|
|
registerCheckAsbitem, |
|
|
|
registerCheckItem, |
|
|
|
item, |
|
|
|
lisRequest, |
|
|
|
}).ToList(); |
|
|
|
|
|
|
|
//await _registerCheckItemManager.UpdateRegisterCheckItemAsync(itemSource, lisRequestItem.registerCheckItem);
|
|
|
|
//await _registerCheckItemRepository.UpdateAsync(lisRequestItem.registerCheckItem,true);
|
|
|
|
if (!registerChecks.Where(o => o.Id == lisRequestItem.registerCheck.Id).ToList().Any()) |
|
|
|
{ |
|
|
|
lisRequestItem.registerCheck.CheckDoctorId = inputItem.CheckDoctorName; |
|
|
|
lisRequestItem.registerCheck.CheckDate = inputItem.CheckDate; |
|
|
|
registerChecks.Add(lisRequestItem.registerCheck); |
|
|
|
} |
|
|
|
var lisRequestNos = input.Select(o => o.LisRequestNo).Distinct().ToList(); |
|
|
|
var registerChecks = new List<RegisterCheck>(); |
|
|
|
_referenceRanges = _referenceRangeRepository.GetListAsync().Result; |
|
|
|
foreach (var inputItem in input) |
|
|
|
{ |
|
|
|
var lisRequestItem = list.Where(o => o.lisRequest.LisRequestNo == inputItem.LisRequestNo |
|
|
|
&& o.registerCheckItem.ItemId == inputItem.ItemId).FirstOrDefault(); |
|
|
|
if (lisRequestItem == null) |
|
|
|
{ |
|
|
|
continue; |
|
|
|
} |
|
|
|
lisRequestItem.registerCheckItem.Result = inputItem.Result; |
|
|
|
//var itemSource = new RegisterCheckItem()
|
|
|
|
//{
|
|
|
|
// Result = inputItem.Result,
|
|
|
|
// ReferenceRangeValue = inputItem.ReferenceRangeValue,
|
|
|
|
// Unit = inputItem.Unit,
|
|
|
|
// CriticalRangeValue = inputItem.CriticalRangeValue
|
|
|
|
//};
|
|
|
|
//修改参考范围
|
|
|
|
await UpdateItemReferenceRangeValueAsync(inputItem.ItemId, lisRequestItem.patientRegister.SexId, |
|
|
|
lisRequestItem.patientRegister.Age, inputItem.ReferenceRangeValue); |
|
|
|
//修改单位
|
|
|
|
await UpdateItemUnitAsync(inputItem.ItemId, inputItem.Unit); |
|
|
|
|
|
|
|
//await _registerCheckItemManager.UpdateRegisterCheckItemAsync(itemSource, lisRequestItem.registerCheckItem);
|
|
|
|
//await _registerCheckItemRepository.UpdateAsync(lisRequestItem.registerCheckItem,true);
|
|
|
|
if (!registerChecks.Where(o => o.Id == lisRequestItem.registerCheck.Id).ToList().Any()) |
|
|
|
{ |
|
|
|
lisRequestItem.registerCheck.CheckDoctorId = inputItem.CheckDoctorName; |
|
|
|
lisRequestItem.registerCheck.CheckDate = inputItem.CheckDate; |
|
|
|
registerChecks.Add(lisRequestItem.registerCheck); |
|
|
|
} |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
//更新参考范围和单位
|
|
|
|
foreach (var registerCheck in registerChecks) |
|
|
|
|
|
|
|
//更新参考范围和单位
|
|
|
|
foreach (var registerCheck in registerChecks) |
|
|
|
{ |
|
|
|
var lisRequestItems = list.Where(o => o.registerCheck.Id == registerCheck.Id).ToList(); |
|
|
|
foreach (var lisRequestItem in lisRequestItems) |
|
|
|
{ |
|
|
|
var lisRequestItems = list.Where(o => o.registerCheck.Id == registerCheck.Id).ToList(); |
|
|
|
foreach (var lisRequestItem in lisRequestItems) |
|
|
|
var referenceRange = _referenceRangeManager.GetReferenceRangeBySexAgeTemp(_referenceRanges, |
|
|
|
lisRequestItem.item, lisRequestItem.patientRegister.SexId, lisRequestItem.patientRegister.Age); |
|
|
|
if (referenceRange != null) |
|
|
|
{ |
|
|
|
var referenceRange = _referenceRangeManager.GetReferenceRangeBySexAgeTemp(_referenceRanges, |
|
|
|
lisRequestItem.item, lisRequestItem.patientRegister.SexId, lisRequestItem.patientRegister.Age); |
|
|
|
if (referenceRange != null) |
|
|
|
{ |
|
|
|
lisRequestItem.registerCheckItem.ReferenceRangeValue = referenceRange.ReferenceRangeValue; |
|
|
|
lisRequestItem.registerCheckItem.CriticalRangeValue = referenceRange.CriticalRangeValue; |
|
|
|
} |
|
|
|
else |
|
|
|
{ |
|
|
|
lisRequestItem.registerCheckItem.ReferenceRangeValue = ""; |
|
|
|
lisRequestItem.registerCheckItem.CriticalRangeValue = ""; |
|
|
|
} |
|
|
|
var unit = _units.Where(o => o.Id == lisRequestItem.item.UnitId).FirstOrDefault(); |
|
|
|
if (unit != null) |
|
|
|
{ |
|
|
|
lisRequestItem.registerCheckItem.Unit = unit.DisplayName; |
|
|
|
} |
|
|
|
else |
|
|
|
{ |
|
|
|
lisRequestItem.registerCheckItem.Unit = ""; |
|
|
|
} |
|
|
|
await _registerCheckItemRepository.UpdateAsync(lisRequestItem.registerCheckItem, true); |
|
|
|
lisRequestItem.registerCheckItem.ReferenceRangeValue = referenceRange.ReferenceRangeValue; |
|
|
|
lisRequestItem.registerCheckItem.CriticalRangeValue = referenceRange.CriticalRangeValue; |
|
|
|
} |
|
|
|
|
|
|
|
else |
|
|
|
{ |
|
|
|
lisRequestItem.registerCheckItem.ReferenceRangeValue = ""; |
|
|
|
lisRequestItem.registerCheckItem.CriticalRangeValue = ""; |
|
|
|
} |
|
|
|
var unit = _units.Where(o => o.Id == lisRequestItem.item.UnitId).FirstOrDefault(); |
|
|
|
if (unit != null) |
|
|
|
{ |
|
|
|
lisRequestItem.registerCheckItem.Unit = unit.DisplayName; |
|
|
|
} |
|
|
|
else |
|
|
|
{ |
|
|
|
lisRequestItem.registerCheckItem.Unit = ""; |
|
|
|
} |
|
|
|
await _registerCheckItemRepository.UpdateAsync(lisRequestItem.registerCheckItem, true); |
|
|
|
} |
|
|
|
//保存结果
|
|
|
|
|
|
|
|
foreach (var registerCheck in registerChecks) |
|
|
|
} |
|
|
|
//保存结果
|
|
|
|
|
|
|
|
foreach (var registerCheck in registerChecks) |
|
|
|
{ |
|
|
|
var updateCheckResultDto = new UpdateCheckResultDto() |
|
|
|
{ |
|
|
|
var updateCheckResultDto = new UpdateCheckResultDto() |
|
|
|
RegisterCheckId = registerCheck.Id, |
|
|
|
CheckDoctorId = registerCheck.CheckDoctorId, |
|
|
|
CheckDate = registerCheck.CheckDate, |
|
|
|
RegisterCheckItems = list.Where(o => o.registerCheck.Id == registerCheck.Id) |
|
|
|
.Select(o => new UpdateRegisterCheckItemDetail() |
|
|
|
{ |
|
|
|
RegisterCheckId = registerCheck.Id, |
|
|
|
CheckDoctorId = registerCheck.CheckDoctorId, |
|
|
|
CheckDate = registerCheck.CheckDate, |
|
|
|
RegisterCheckItems = list.Where(o => o.registerCheck.Id == registerCheck.Id) |
|
|
|
.Select(o => new UpdateRegisterCheckItemDetail() |
|
|
|
{ |
|
|
|
ItemId = o.registerCheckItem.ItemId, |
|
|
|
Result = o.registerCheckItem.Result, |
|
|
|
ItemId = o.registerCheckItem.ItemId, |
|
|
|
Result = o.registerCheckItem.Result, |
|
|
|
|
|
|
|
}).ToList() |
|
|
|
}).ToList() |
|
|
|
|
|
|
|
}; |
|
|
|
}; |
|
|
|
|
|
|
|
var getDiagnosisResultRequestDto = new GetDiagnosisResultRequestDto() |
|
|
|
var getDiagnosisResultRequestDto = new GetDiagnosisResultRequestDto() |
|
|
|
{ |
|
|
|
RegisterCheckId = registerCheck.Id, |
|
|
|
Items = list.Where(o => o.registerCheck.Id == registerCheck.Id) |
|
|
|
.Select(o => new GetDiagnosisResultRequest_Item() |
|
|
|
{ |
|
|
|
RegisterCheckId = registerCheck.Id, |
|
|
|
Items = list.Where(o => o.registerCheck.Id == registerCheck.Id) |
|
|
|
.Select(o => new GetDiagnosisResultRequest_Item() |
|
|
|
{ |
|
|
|
ItemId = o.registerCheckItem.ItemId, |
|
|
|
Result = o.registerCheckItem.Result, |
|
|
|
}).ToList() |
|
|
|
}; |
|
|
|
//生成小结
|
|
|
|
var summarry = await _diagnosisFunctionAppService.GetDoctorCheckDiagnosisResultAsync(getDiagnosisResultRequestDto); |
|
|
|
ItemId = o.registerCheckItem.ItemId, |
|
|
|
Result = o.registerCheckItem.Result, |
|
|
|
}).ToList() |
|
|
|
}; |
|
|
|
//生成小结
|
|
|
|
var summarry = await _diagnosisFunctionAppService.GetDoctorCheckDiagnosisResultAsync(getDiagnosisResultRequestDto); |
|
|
|
|
|
|
|
for (var i = 0; i < summarry.DiagnosisResultDetails.Count; i++) |
|
|
|
for (var i = 0; i < summarry.DiagnosisResultDetails.Count; i++) |
|
|
|
{ |
|
|
|
updateCheckResultDto.Summarys.Add(new UpdateRegisterCheckSummaryDetail() |
|
|
|
{ |
|
|
|
updateCheckResultDto.Summarys.Add(new UpdateRegisterCheckSummaryDetail() |
|
|
|
{ |
|
|
|
Summary = summarry.DiagnosisResultDetails[i].DiagnosisResult, |
|
|
|
SummaryFlag = '0' |
|
|
|
}); |
|
|
|
} |
|
|
|
|
|
|
|
await _registerCheckAppService.UpdateCheckResult(updateCheckResultDto); |
|
|
|
Summary = summarry.DiagnosisResultDetails[i].DiagnosisResult, |
|
|
|
SummaryFlag = '0' |
|
|
|
}); |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
await _registerCheckAppService.UpdateCheckResult(updateCheckResultDto); |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
private async Task UpdateItemReferenceRangeValueAsync(Guid itemId, char sexId, int? age, string referenceRangeValue) |
|
|
|
{ |
|
|
|
var referenceRanges = _referenceRanges.Where(o=>o.ItemId == itemId).ToList(); |
|
|
|
var referenceRanges = _referenceRanges.Where(o => o.ItemId == itemId).ToList(); |
|
|
|
if (age == null) age = 30; |
|
|
|
if (string.IsNullOrWhiteSpace(referenceRangeValue)) |
|
|
|
{ |
|
|
|
@ -262,7 +262,7 @@ namespace Shentun.Peis.ImportLisResults |
|
|
|
if (_referenceRangeManager.IsNumberReferenceRange(referenceRangeValue)) |
|
|
|
{ |
|
|
|
item.ReferenceRangeTypeFlag = ItemReferenceRangeTypeFlag.Number; |
|
|
|
await _itemRepository.UpdateAsync(item, true); |
|
|
|
await _itemRepository.UpdateAsync(item); |
|
|
|
|
|
|
|
referenceRange = referenceRanges.Where(o => o.ForSexId == sexId |
|
|
|
&& age >= o.AgeLowerLimit && age <= o.AgeUpperLimit |
|
|
|
@ -271,7 +271,7 @@ namespace Shentun.Peis.ImportLisResults |
|
|
|
{ |
|
|
|
referenceRange.ReferenceRangeTypeFlag = ItemReferenceRangeTypeFlag.Number; |
|
|
|
referenceRange.ReferenceRangeValue = referenceRangeValue; |
|
|
|
await _referenceRangeRepository.UpdateAsync(referenceRange, true); |
|
|
|
await _referenceRangeRepository.UpdateAsync(referenceRange); |
|
|
|
return; |
|
|
|
} |
|
|
|
|
|
|
|
@ -282,7 +282,7 @@ namespace Shentun.Peis.ImportLisResults |
|
|
|
{ |
|
|
|
referenceRange.ReferenceRangeTypeFlag = ItemReferenceRangeTypeFlag.Number; |
|
|
|
referenceRange.ReferenceRangeValue = referenceRangeValue; |
|
|
|
await _referenceRangeRepository.UpdateAsync(referenceRange, true); |
|
|
|
await _referenceRangeRepository.UpdateAsync(referenceRange); |
|
|
|
return; |
|
|
|
} |
|
|
|
referenceRange = new ReferenceRange() |
|
|
|
@ -295,18 +295,19 @@ namespace Shentun.Peis.ImportLisResults |
|
|
|
ForSexId = ForSexFlag.All |
|
|
|
}; |
|
|
|
referenceRange = _referenceRangeManager.Create(referenceRange); |
|
|
|
await _referenceRangeRepository.InsertAsync(referenceRange, true); |
|
|
|
await _referenceRangeRepository.InsertAsync(referenceRange); |
|
|
|
referenceRanges.Add(referenceRange); |
|
|
|
return; |
|
|
|
} |
|
|
|
|
|
|
|
item.ReferenceRangeTypeFlag = ItemReferenceRangeTypeFlag.Character; |
|
|
|
await _itemRepository.UpdateAsync(item, true); |
|
|
|
await _itemRepository.UpdateAsync(item); |
|
|
|
referenceRange = referenceRanges.Where(o => o.ReferenceRangeTypeFlag == ItemReferenceRangeTypeFlag.Character).FirstOrDefault(); |
|
|
|
if (referenceRange != null) |
|
|
|
{ |
|
|
|
referenceRange.ReferenceRangeTypeFlag = ItemReferenceRangeTypeFlag.Character; |
|
|
|
referenceRange.ReferenceRangeValue = referenceRangeValue; |
|
|
|
await _referenceRangeRepository.UpdateAsync(referenceRange, true); |
|
|
|
await _referenceRangeRepository.UpdateAsync(referenceRange); |
|
|
|
return; |
|
|
|
} |
|
|
|
|
|
|
|
@ -320,7 +321,8 @@ namespace Shentun.Peis.ImportLisResults |
|
|
|
ForSexId = ForSexFlag.All |
|
|
|
}; |
|
|
|
referenceRange = _referenceRangeManager.Create(referenceRange); |
|
|
|
await _referenceRangeRepository.InsertAsync(referenceRange, true); |
|
|
|
await _referenceRangeRepository.InsertAsync(referenceRange); |
|
|
|
referenceRanges.Add(referenceRange); |
|
|
|
return; |
|
|
|
} |
|
|
|
|
|
|
|
@ -340,7 +342,7 @@ namespace Shentun.Peis.ImportLisResults |
|
|
|
return; |
|
|
|
} |
|
|
|
item.UnitId = unit.Id; |
|
|
|
await _itemRepository.UpdateAsync(item, true); |
|
|
|
await _itemRepository.UpdateAsync(item); |
|
|
|
return; |
|
|
|
} |
|
|
|
unit = new Unit() |
|
|
|
@ -349,7 +351,7 @@ namespace Shentun.Peis.ImportLisResults |
|
|
|
|
|
|
|
}; |
|
|
|
unit = await _unitManager.CreateAsync(unit); |
|
|
|
await _unitRepository.InsertAsync(unit, true); |
|
|
|
await _unitRepository.InsertAsync(unit); |
|
|
|
_units.Add(unit); |
|
|
|
} |
|
|
|
} |
|
|
|
|