|
|
@ -379,15 +379,22 @@ namespace Shentun.Peis.DiagnosisFunctions |
|
|
join registerAsbitem in await _registerAsbitemRepository.GetQueryableAsync() on registerCheck.Id equals registerAsbitem.RegisterCheckId |
|
|
join registerAsbitem in await _registerAsbitemRepository.GetQueryableAsync() on registerCheck.Id equals registerAsbitem.RegisterCheckId |
|
|
join registerCheckItem in await _registerCheckItemRepository.GetQueryableAsync() on registerCheck.Id equals registerCheckItem.RegisterCheckId |
|
|
join registerCheckItem in await _registerCheckItemRepository.GetQueryableAsync() on registerCheck.Id equals registerCheckItem.RegisterCheckId |
|
|
join asbitem in await _asbitemRepository.GetQueryableAsync() on registerAsbitem.AsbitemId equals asbitem.Id |
|
|
join asbitem in await _asbitemRepository.GetQueryableAsync() on registerAsbitem.AsbitemId equals asbitem.Id |
|
|
join item in (await _itemRepository.GetQueryableAsync()).Include(x => x.ReferenceRanges).Include(x => x.ItemResultMatches).Include(x => x.ItemResultTemplates) |
|
|
|
|
|
|
|
|
join item in (await _itemRepository.GetQueryableAsync()).Include(x => x.ReferenceRanges).Include(x => x.ItemResultMatches).Include(x => x.ItemResultTemplates) |
|
|
on registerCheckItem.ItemId equals item.Id |
|
|
on registerCheckItem.ItemId equals item.Id |
|
|
join unit in await _unitRepository.GetQueryableAsync() |
|
|
join unit in await _unitRepository.GetQueryableAsync() |
|
|
on item.UnitId equals unit.Id into unitExist |
|
|
on item.UnitId equals unit.Id into unitExist |
|
|
from unitHaveEmpty in unitExist.DefaultIfEmpty() |
|
|
from unitHaveEmpty in unitExist.DefaultIfEmpty() |
|
|
join patientRegister in await _patientRegisterRepository.GetQueryableAsync() on registerCheck.PatientRegisterId equals patientRegister.Id |
|
|
join patientRegister in await _patientRegisterRepository.GetQueryableAsync() on registerCheck.PatientRegisterId equals patientRegister.Id |
|
|
where registerCheck.Id == input.RegisterCheckId |
|
|
where registerCheck.Id == input.RegisterCheckId |
|
|
select new { registerCheck, registerAsbitem, registerCheckItem, asbitem, item, |
|
|
|
|
|
unitHaveEmpty,patientRegister |
|
|
|
|
|
|
|
|
select new |
|
|
|
|
|
{ |
|
|
|
|
|
registerCheck, |
|
|
|
|
|
registerAsbitem, |
|
|
|
|
|
registerCheckItem, |
|
|
|
|
|
asbitem, |
|
|
|
|
|
item, |
|
|
|
|
|
unitHaveEmpty, |
|
|
|
|
|
patientRegister |
|
|
}).AsNoTracking().ToList(); |
|
|
}).AsNoTracking().ToList(); |
|
|
|
|
|
|
|
|
var resultDto = new GetDiagnosisResultDto |
|
|
var resultDto = new GetDiagnosisResultDto |
|
|
@ -435,7 +442,7 @@ namespace Shentun.Peis.DiagnosisFunctions |
|
|
{ |
|
|
{ |
|
|
var inputItem = input.Items.Where(o => o.ItemId == item.item.Id).FirstOrDefault(); |
|
|
var inputItem = input.Items.Where(o => o.ItemId == item.item.Id).FirstOrDefault(); |
|
|
var inputResult = ""; |
|
|
var inputResult = ""; |
|
|
if(inputItem != null) |
|
|
|
|
|
|
|
|
if (inputItem != null) |
|
|
{ |
|
|
{ |
|
|
inputResult = inputItem.Result; |
|
|
inputResult = inputItem.Result; |
|
|
} |
|
|
} |
|
|
@ -443,7 +450,7 @@ namespace Shentun.Peis.DiagnosisFunctions |
|
|
{ |
|
|
{ |
|
|
ItemId = item.item.Id, |
|
|
ItemId = item.item.Id, |
|
|
ItemName = item.item.DisplayName, |
|
|
ItemName = item.item.DisplayName, |
|
|
Unit = (item.unitHaveEmpty == null)?"":item.unitHaveEmpty.DisplayName, |
|
|
|
|
|
|
|
|
Unit = (item.unitHaveEmpty == null) ? "" : item.unitHaveEmpty.DisplayName, |
|
|
IsDiagnosisFunction = item.item.IsDiagnosisFunction, |
|
|
IsDiagnosisFunction = item.item.IsDiagnosisFunction, |
|
|
DiagnosisFunction = item.item.DiagnosisFunction, |
|
|
DiagnosisFunction = item.item.DiagnosisFunction, |
|
|
IsContinueProcess = item.item.IsContinueProcess, |
|
|
IsContinueProcess = item.item.IsContinueProcess, |
|
|
@ -460,7 +467,7 @@ namespace Shentun.Peis.DiagnosisFunctions |
|
|
doctorCheckDiagnosisInput.Items.Add(itemInput); |
|
|
doctorCheckDiagnosisInput.Items.Add(itemInput); |
|
|
} |
|
|
} |
|
|
} |
|
|
} |
|
|
doctorCheckDiagnosisInput.Items = doctorCheckDiagnosisInput.Items.OrderBy(o=>o.DisplayOrder).ToList(); |
|
|
|
|
|
|
|
|
doctorCheckDiagnosisInput.Items = doctorCheckDiagnosisInput.Items.OrderBy(o => o.DisplayOrder).ToList(); |
|
|
|
|
|
|
|
|
//处理组合项目诊断函数
|
|
|
//处理组合项目诊断函数
|
|
|
List<string> diagnosisList = new List<string>(); |
|
|
List<string> diagnosisList = new List<string>(); |
|
|
@ -485,7 +492,7 @@ namespace Shentun.Peis.DiagnosisFunctions |
|
|
//设置组合项目默认小结
|
|
|
//设置组合项目默认小结
|
|
|
diagnosisList.Add(doctorCheckDiagnosisInput.Asbitems[0].DefaultResult); |
|
|
diagnosisList.Add(doctorCheckDiagnosisInput.Asbitems[0].DefaultResult); |
|
|
} |
|
|
} |
|
|
foreach(var diagnosis in diagnosisList) |
|
|
|
|
|
|
|
|
foreach (var diagnosis in diagnosisList) |
|
|
{ |
|
|
{ |
|
|
var getDiagnosisResult_Detail = new GetDiagnosisResult_Detail() |
|
|
var getDiagnosisResult_Detail = new GetDiagnosisResult_Detail() |
|
|
{ |
|
|
{ |
|
|
@ -516,7 +523,7 @@ namespace Shentun.Peis.DiagnosisFunctions |
|
|
} |
|
|
} |
|
|
else |
|
|
else |
|
|
{ |
|
|
{ |
|
|
itemDiagnosisType.Diagnosis = itemDiagnosisType.Diagnosis.Where(o=>!string.IsNullOrWhiteSpace(o)).ToList(); |
|
|
|
|
|
|
|
|
itemDiagnosisType.Diagnosis = itemDiagnosisType.Diagnosis.Where(o => !string.IsNullOrWhiteSpace(o)).ToList(); |
|
|
if (itemDiagnosisType.Diagnosis.Count() > _numArry.Count()) |
|
|
if (itemDiagnosisType.Diagnosis.Count() > _numArry.Count()) |
|
|
{ |
|
|
{ |
|
|
throw new UserFriendlyException($"诊断数量超过{_numArry.Count()}个,不支持"); |
|
|
throw new UserFriendlyException($"诊断数量超过{_numArry.Count()}个,不支持"); |
|
|
@ -525,14 +532,14 @@ namespace Shentun.Peis.DiagnosisFunctions |
|
|
{ |
|
|
{ |
|
|
continue; |
|
|
continue; |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
for (int i = 0; i < itemDiagnosisType.Diagnosis.Count(); i++) |
|
|
for (int i = 0; i < itemDiagnosisType.Diagnosis.Count(); i++) |
|
|
{ |
|
|
{ |
|
|
if (string.IsNullOrWhiteSpace(itemDiagnosisType.Diagnosis[i])) |
|
|
if (string.IsNullOrWhiteSpace(itemDiagnosisType.Diagnosis[i])) |
|
|
{ |
|
|
{ |
|
|
continue; |
|
|
continue; |
|
|
} |
|
|
} |
|
|
if(itemDiagnosisType.Diagnosis.Count() == 1) |
|
|
|
|
|
|
|
|
if (itemDiagnosisType.Diagnosis.Count() == 1) |
|
|
{ |
|
|
{ |
|
|
diagnosis = diagnosis + itemDiagnosisType.Diagnosis[i] + ";"; |
|
|
diagnosis = diagnosis + itemDiagnosisType.Diagnosis[i] + ";"; |
|
|
} |
|
|
} |
|
|
@ -540,18 +547,18 @@ namespace Shentun.Peis.DiagnosisFunctions |
|
|
{ |
|
|
{ |
|
|
diagnosis = diagnosis + _numArry[i] + itemDiagnosisType.Diagnosis[i] + ";"; |
|
|
diagnosis = diagnosis + _numArry[i] + itemDiagnosisType.Diagnosis[i] + ";"; |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
} |
|
|
} |
|
|
} |
|
|
} |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
if (!string.IsNullOrWhiteSpace(diagnosis)) |
|
|
if (!string.IsNullOrWhiteSpace(diagnosis)) |
|
|
{ |
|
|
{ |
|
|
if(itemDiagnosis.IsNameIntoSummary == 'Y' && !diagnosis.StartsWith(itemDiagnosis.ItemName)) |
|
|
|
|
|
|
|
|
if (itemDiagnosis.IsNameIntoSummary == 'Y' && !diagnosis.StartsWith(itemDiagnosis.ItemName)) |
|
|
{ |
|
|
{ |
|
|
diagnosis = itemDiagnosis.ItemName + ":" + diagnosis; |
|
|
diagnosis = itemDiagnosis.ItemName + ":" + diagnosis; |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
diagnosisList.Add(diagnosis); |
|
|
diagnosisList.Add(diagnosis); |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
@ -670,22 +677,22 @@ namespace Shentun.Peis.DiagnosisFunctions |
|
|
|
|
|
|
|
|
//通过计算获取诊断
|
|
|
//通过计算获取诊断
|
|
|
var diagnosis = diagnosisBuilder.GetItemDiagnosisResult(patientItemDiagnosisInput, item.DiagnosisFunction); |
|
|
var diagnosis = diagnosisBuilder.GetItemDiagnosisResult(patientItemDiagnosisInput, item.DiagnosisFunction); |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
var itemDiagnosisTypeResult = new ItemDiagnosisTypeResult() |
|
|
var itemDiagnosisTypeResult = new ItemDiagnosisTypeResult() |
|
|
{ |
|
|
{ |
|
|
DiagnosisType = '0' |
|
|
DiagnosisType = '0' |
|
|
}; |
|
|
}; |
|
|
itemDiagnosisTypeResult.Diagnosis.Add(diagnosis); |
|
|
itemDiagnosisTypeResult.Diagnosis.Add(diagnosis); |
|
|
doctorCheckItemDiagnosisResult.ItemDiagnosisTypeResults.Add(itemDiagnosisTypeResult); |
|
|
doctorCheckItemDiagnosisResult.ItemDiagnosisTypeResults.Add(itemDiagnosisTypeResult); |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
} |
|
|
} |
|
|
if (item.IsDiagnosisFunction == 'Y' && item.IsContinueProcess != 'Y') |
|
|
if (item.IsDiagnosisFunction == 'Y' && item.IsContinueProcess != 'Y') |
|
|
{ |
|
|
{ |
|
|
continue; |
|
|
continue; |
|
|
} |
|
|
} |
|
|
//通过参考范围获取诊断
|
|
|
//通过参考范围获取诊断
|
|
|
if(item.ReferenceRangeTypeFlag == ItemReferenceRangeTypeFlag.Number) |
|
|
|
|
|
|
|
|
if (item.ReferenceRangeTypeFlag == ItemReferenceRangeTypeFlag.Number) |
|
|
{ |
|
|
{ |
|
|
var referenceRangeDiagnosis = await GetItemDiagnosisByReferenceRanges(doctorCheckDiagnosisInput.SexId, doctorCheckDiagnosisInput.Age, item); |
|
|
var referenceRangeDiagnosis = await GetItemDiagnosisByReferenceRanges(doctorCheckDiagnosisInput.SexId, doctorCheckDiagnosisInput.Age, item); |
|
|
if (!string.IsNullOrWhiteSpace(referenceRangeDiagnosis)) |
|
|
if (!string.IsNullOrWhiteSpace(referenceRangeDiagnosis)) |
|
|
@ -767,24 +774,24 @@ namespace Shentun.Peis.DiagnosisFunctions |
|
|
return null; |
|
|
return null; |
|
|
} |
|
|
} |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
string diagnosis = null; |
|
|
string diagnosis = null; |
|
|
var pos = referenceRange.ReferenceRangeValue.IndexOf("-"); |
|
|
var pos = referenceRange.ReferenceRangeValue.IndexOf("-"); |
|
|
string resultStatusId = _registerCheckItemManager.GetNumberResultStatusId(itemInput.Result, referenceRange.ReferenceRangeValue); |
|
|
string resultStatusId = _registerCheckItemManager.GetNumberResultStatusId(itemInput.Result, referenceRange.ReferenceRangeValue); |
|
|
if(resultStatusId == ResultStatusFlag.Low) |
|
|
|
|
|
|
|
|
if (resultStatusId == ResultStatusFlag.Low) |
|
|
{ |
|
|
{ |
|
|
diagnosis = await GetNumberDiagnosis(itemInput.ItemName, itemInput.Result, itemInput.Unit, true, referenceRange); |
|
|
diagnosis = await GetNumberDiagnosis(itemInput.ItemName, itemInput.Result, itemInput.Unit, true, referenceRange); |
|
|
} |
|
|
} |
|
|
else if(resultStatusId == ResultStatusFlag.High) |
|
|
|
|
|
|
|
|
else if (resultStatusId == ResultStatusFlag.High) |
|
|
{ |
|
|
{ |
|
|
diagnosis = await GetNumberDiagnosis(itemInput.ItemName, itemInput.Result, itemInput.Unit, false, referenceRange); |
|
|
diagnosis = await GetNumberDiagnosis(itemInput.ItemName, itemInput.Result, itemInput.Unit, false, referenceRange); |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
return diagnosis; |
|
|
return diagnosis; |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
private async Task<string> GetNumberDiagnosis(string itemName, string result,string unit, bool isLower, |
|
|
|
|
|
|
|
|
private async Task<string> GetNumberDiagnosis(string itemName, string result, string unit, bool isLower, |
|
|
ReferenceRange referenceRange) |
|
|
ReferenceRange referenceRange) |
|
|
{ |
|
|
{ |
|
|
string diagnosis = null; |
|
|
string diagnosis = null; |
|
|
@ -846,11 +853,11 @@ namespace Shentun.Peis.DiagnosisFunctions |
|
|
{ |
|
|
{ |
|
|
if (_isAddAbnormalResult == "Y") |
|
|
if (_isAddAbnormalResult == "Y") |
|
|
{ |
|
|
{ |
|
|
if(string.IsNullOrEmpty(unit)) |
|
|
|
|
|
|
|
|
if (string.IsNullOrEmpty(unit)) |
|
|
{ |
|
|
{ |
|
|
unit = ""; |
|
|
unit = ""; |
|
|
} |
|
|
} |
|
|
diagnosis = diagnosis + "(结果:" + result + unit + ",参考范围:" + referenceRange.ReferenceRangeValue + ")"; |
|
|
|
|
|
|
|
|
diagnosis = diagnosis + $"(结果:{result} {unit},参考范围: {referenceRange.ReferenceRangeValue})"; |
|
|
} |
|
|
} |
|
|
} |
|
|
} |
|
|
return diagnosis; |
|
|
return diagnosis; |
|
|
|