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 { };
}