diff --git a/src/Shentun.Peis.Application/DiagnosisFunctions/DiagnosisFunctionAppService.cs b/src/Shentun.Peis.Application/DiagnosisFunctions/DiagnosisFunctionAppService.cs index c2aaedc6..c76f23a9 100644 --- a/src/Shentun.Peis.Application/DiagnosisFunctions/DiagnosisFunctionAppService.cs +++ b/src/Shentun.Peis.Application/DiagnosisFunctions/DiagnosisFunctionAppService.cs @@ -171,7 +171,8 @@ namespace Shentun.Peis.DiagnosisFunctions { SexId = query[0].patientRegister.SexId, SexName = _cacheService.GetSexNameAsync(query[0].patientRegister.SexId).GetAwaiter().GetResult(), - Age = query[0].patientRegister.Age + Age = query[0].patientRegister.Age, + SexHormoneTermId = query[0].patientRegister.SexHormoneTermId }; foreach (var item in query) { @@ -546,6 +547,20 @@ namespace Shentun.Peis.DiagnosisFunctions doctorCheckItemDiagnosisResult.ItemDiagnosisTypeResults.Add(itemDiagnosisTypeResult); } } + else if (item.ReferenceRangeTypeFlag == ItemReferenceRangeTypeFlag.SexHormone && doctorCheckDiagnosisInput.SexHormoneTermId != null) + { + //性激素参考范围 + var referenceRangeDiagnosis = await GetItemDiagnosisBySexHormoneReferenceRanges(doctorCheckDiagnosisInput.SexHormoneTermId, doctorCheckDiagnosisInput.Age, item); + if (!string.IsNullOrWhiteSpace(referenceRangeDiagnosis)) + { + var itemDiagnosisTypeResult = new ItemDiagnosisTypeResult() + { + DiagnosisType = '1' + }; + itemDiagnosisTypeResult.Diagnosis.Add(referenceRangeDiagnosis); + doctorCheckItemDiagnosisResult.ItemDiagnosisTypeResults.Add(itemDiagnosisTypeResult); + } + } else { @@ -759,6 +774,52 @@ namespace Shentun.Peis.DiagnosisFunctions return diagnosis; } + + /// + /// 通过性激素参考范围获取项目诊断列表 + /// + /// + /// + /// + /// + private async Task GetItemDiagnosisBySexHormoneReferenceRanges(Guid? sexHormoneTermId, short? age, ItemInput itemInput) + { + var diagnosisList = new List(); + if (string.IsNullOrWhiteSpace(itemInput.Result)) + { + return null; + } + + var referenceRangeList = itemInput.ReferenceRanges.Where(o => o.ReferenceRangeTypeFlag == ItemReferenceRangeTypeFlag.SexHormone).ToList(); + if (!referenceRangeList.Any()) + { + return null; + } + if (age == null) + { + age = 30; + } + var referenceRange = referenceRangeList.Where(o => o.SexHormoneTermId == sexHormoneTermId && age >= o.AgeLowerLimit && age <= o.AgeUpperLimit).FirstOrDefault(); + if (referenceRange == null) + { + return null; + } + + string diagnosis = null; + + string resultStatusId = _registerCheckItemManager.GetNumberResultStatusId(itemInput.Result, referenceRange.ReferenceRangeValue); + if (resultStatusId == ResultStatusFlag.Low) + { + diagnosis = await GetNumberDiagnosis(itemInput.ItemName, itemInput.Result, itemInput.Unit, true, referenceRange); + } + else if (resultStatusId == ResultStatusFlag.High) + { + diagnosis = await GetNumberDiagnosis(itemInput.ItemName, itemInput.Result, itemInput.Unit, false, referenceRange); + } + + return diagnosis; + } + /// /// 获取参考范围值跟结果 用于诊断函数 /// diff --git a/src/Shentun.Peis.Application/DiagnosisFunctions/DoctorCheckDiagnosisInput.cs b/src/Shentun.Peis.Application/DiagnosisFunctions/DoctorCheckDiagnosisInput.cs index 0424c28e..79e5bee6 100644 --- a/src/Shentun.Peis.Application/DiagnosisFunctions/DoctorCheckDiagnosisInput.cs +++ b/src/Shentun.Peis.Application/DiagnosisFunctions/DoctorCheckDiagnosisInput.cs @@ -13,6 +13,8 @@ namespace Shentun.Peis.DiagnosisFunctions public char SexId { get; set; } public string SexName { get; set; } public short? Age { get; set; } + + public Guid? SexHormoneTermId { get; set; } public List Asbitems { get; set; } = new List(); public List Items { get; set; } = new List { }; }