using NPOI.POIFS.Properties; using Shentun.Peis.CustomerOrgs; using Shentun.Peis.DiagnosisFunctions; using Shentun.Peis.Models; using System; using System.Collections.Generic; using System.Linq; using System.Runtime.ConstrainedExecution; using System.Text; using System.Threading.Tasks; using TencentCloud.Ame.V20190916.Models; using Volo.Abp.Domain.Repositories; using Volo.Abp.Uow; using Xunit; using Xunit.Abstractions; namespace Shentun.Peis { public class DiagnosisFunctionAppServiceTest : PeisApplicationTestBase { private readonly IRepository _repository; private readonly DiagnosisFunctionAppService _appService; private readonly ITestOutputHelper _output; private readonly IUnitOfWorkManager _unitOfWorkManager; public DiagnosisFunctionAppServiceTest(ITestOutputHelper testOutputHelper) { _output = testOutputHelper; _unitOfWorkManager = GetRequiredService(); _repository = GetRequiredService>(); _appService = GetRequiredService(); } [Fact] public async Task GetDiagnosisResultAsync2() { using (var unitOfWork = _unitOfWorkManager.Begin(isTransactional: true)) { var getDiagnosisResultRequestDto = new GetDiagnosisResultRequestDto() { RegisterCheckId = new Guid("3a11eeb9-81e2-44bc-fd9d-72ca7d3ef9a6"), Items = new List { new GetDiagnosisResultRequest_Item() { ItemId = new Guid("3a11eeb8-716b-6103-9e89-dbd9df85227f"), Result = "180/110" }, new GetDiagnosisResultRequest_Item() { ItemId = new Guid("3a0c5186-2920-6492-c8bf-5908fe6bda56"), Result = "肥胖;其它病" } } }; var result = await _appService.GetDiagnosisResultAsync2(getDiagnosisResultRequestDto); foreach (var item in result.DiagnosisResultDetails) { _output.WriteLine(item.DiagnosisResult); } } } [Fact] public async Task GetDiagnosisResultAsync3() { using (var unitOfWork = _unitOfWorkManager.Begin(isTransactional: true)) { var getDiagnosisResultRequestDto = new GetDiagnosisResultRequestDto() { RegisterCheckId = new Guid("3a11ee70-0351-8970-5bc5-dc0f72e62339"), Items = new List { new GetDiagnosisResultRequest_Item() { ItemId = new Guid("3a0c6555-0dad-55b4-b59f-b11e8074cfdd"), Result = "阳性" }, new GetDiagnosisResultRequest_Item() { ItemId = new Guid("3a0c6558-e2a6-4aab-e6e9-d34957a7c3ed"), Result = "阴性" }, new GetDiagnosisResultRequest_Item() { ItemId = new Guid("3a0c655a-1fdc-2447-6dc9-d8ec8e110d2e"), Result = "阳性" }, new GetDiagnosisResultRequest_Item() { ItemId = new Guid("3a0c655c-1c9f-c8c5-150a-59b3cc351472"), Result = "阴性" }, new GetDiagnosisResultRequest_Item() { ItemId = new Guid("3a0c655d-6ab7-ca7e-3920-3b493ec83192"), Result = "阳性" }, } }; var result = await _appService.GetDiagnosisResultAsync2(getDiagnosisResultRequestDto); foreach (var item in result.DiagnosisResultDetails) { _output.WriteLine(item.DiagnosisResult); } } } [Fact] public async Task GetDiagnosisResultAsync4() { using (var unitOfWork = _unitOfWorkManager.Begin(isTransactional: true)) { var getDiagnosisResultRequestDto = new GetDiagnosisResultRequestDto() { RegisterCheckId = new Guid("3a11ee70-034c-1ce6-40f9-7eabb02830a9"), Items = new List { new GetDiagnosisResultRequest_Item() { ItemId = new Guid("3a0d2916-3706-a22a-69dd-bd80be509d07"), Result = "30.5" }, new GetDiagnosisResultRequest_Item() { ItemId = new Guid("3a0d2919-49d5-30d3-4373-b3dc1e806732"), Result = "9" }, new GetDiagnosisResultRequest_Item() { ItemId = new Guid("3a0d2917-40e2-2f81-ebfc-267a9a98b02e"), Result = "91.3" }, new GetDiagnosisResultRequest_Item() { ItemId = new Guid("3a0d291a-6ab5-8642-9cd3-30353ecb5d15"), Result = "90" }, new GetDiagnosisResultRequest_Item() { ItemId = new Guid("3a0d2918-344b-0373-a53c-b4888bd6b9a6"), Result = "13" }, } }; var result = await _appService.GetDiagnosisResultAsync2(getDiagnosisResultRequestDto); foreach (var item in result.DiagnosisResultDetails) { _output.WriteLine(item.DiagnosisResult); } } } [Fact] public async Task GetDiagnosisResultAsync5() { using (var unitOfWork = _unitOfWorkManager.Begin(isTransactional: true)) { var getDiagnosisResultRequestDto = new GetDiagnosisResultRequestDto() { RegisterCheckId = new Guid("3a11ee70-034c-1ce6-40f9-7eabb02830a9"), Items = new List { new GetDiagnosisResultRequest_Item() { ItemId = new Guid("3a0d2916-3706-a22a-69dd-bd80be509d07"), Result = "30.5" }, new GetDiagnosisResultRequest_Item() { ItemId = new Guid("3a0d2919-49d5-30d3-4373-b3dc1e806732"), Result = "9" }, new GetDiagnosisResultRequest_Item() { ItemId = new Guid("3a0d2917-40e2-2f81-ebfc-267a9a98b02e"), Result = "91.3" }, new GetDiagnosisResultRequest_Item() { ItemId = new Guid("3a0d291a-6ab5-8642-9cd3-30353ecb5d15"), Result = "90" }, new GetDiagnosisResultRequest_Item() { ItemId = new Guid("3a0d2918-344b-0373-a53c-b4888bd6b9a6"), Result = "13" }, } }; var result = await _appService.GetDiagnosisResultAsync2(getDiagnosisResultRequestDto); foreach (var item in result.DiagnosisResultDetails) { _output.WriteLine(item.DiagnosisResult); } } } /// /// 体重指数测试结果 /// [Fact] public void GetItemCalculateResultTzzsTest() { PatientItemCalculateInput patient = new PatientItemCalculateInput(); patient.SexName = "男"; patient.Age = 30; patient.Items = new List() { new ItemResultInput() { ItemId = Guid.NewGuid(), ItemName = "身高", Result = "122" }, new ItemResultInput() { ItemId = Guid.NewGuid(), ItemName = "体重", Result = "221" }, new ItemResultInput() { ItemId = Guid.NewGuid(), ItemName = "体重指数", } }; var result = GetItemCalculateResultTzzs(patient); _output.WriteLine("结果:" + result); string code = @" string result = """"; decimal sg = 0; decimal tz = 0; foreach (var item in patient.Items) { if (item.ItemName == ""身高"") { if (decimal.TryParse(item.Result, out sg)) { if (sg == 0) { return null; } } else { return null; } } if (item.ItemName == ""体重"") { if (decimal.TryParse(item.Result, out tz)) { if (tz == 0) { return null; } } else { return null; } } } result = (tz /((sg/100) * (sg / 100))).ToString(""0.00""); return result; "; DiagnosisBuilder diagnosisBuilder = new DiagnosisBuilder(); result = diagnosisBuilder.GetItemCalculateResult(patient, code); _output.WriteLine("动态结果:" + result); } /// /// 体重指数 /// /// /// public string GetItemCalculateResultTzzs(PatientItemCalculateInput patient) { string result = ""; decimal sg = 0; decimal tz = 0; foreach (var item in patient.Items) { if (item.ItemName == "身高") { if (decimal.TryParse(item.Result, out sg)) { if (sg == 0) { return null; } } else { return null; } } if (item.ItemName == "体重") { if (decimal.TryParse(item.Result, out tz)) { if (tz == 0) { return null; } } else { return null; } } } result = (tz / ((sg / 100) * (sg / 100))).ToString("0.00"); return result; } [Fact] public void GetItemDiagnosisResultXYTest() { PatientItemDiagnosisInput patient = new PatientItemDiagnosisInput(); patient.SexName = "男"; patient.Age = 30; patient.Item = new ItemResultInput() { ItemId = Guid.NewGuid(), ItemName = "血压", Result = "180/110" }; var result = GetItemDiagnosisResultXY(patient); _output.WriteLine("结果:" + result); string code = @" string result = """"; decimal szyDecimal = 0; decimal ssyDecimal = 0; var itemResult = patient.Item.Result; if (string.IsNullOrWhiteSpace(itemResult)) { return null; } if (itemResult == ""/"") return null; var pos = itemResult.IndexOf(""/""); var szy = itemResult.Substring(0, pos); var ssy = itemResult.Substring(pos + 1); if (!decimal.TryParse(szy, out szyDecimal)) { return null; } if (!decimal.TryParse(ssy, out ssyDecimal)) { return null; } if (szyDecimal > 180 || ssyDecimal > 110) { return ""Ⅲ级高血压""; } if (szyDecimal > 160 || ssyDecimal > 100) { return ""Ⅱ级高血压""; } if (szyDecimal > 140 || ssyDecimal > 90) { return ""Ⅰ级高血压""; } return result; "; DiagnosisBuilder diagnosisBuilder = new DiagnosisBuilder(); result = diagnosisBuilder.GetItemDiagnosisResult(patient, code); _output.WriteLine("动态结果:" + result); } /// /// /// /// /// public string GetItemDiagnosisResultXY(PatientItemDiagnosisInput patient) { string result = ""; decimal szyDecimal = 0; decimal ssyDecimal = 0; var itemResult = patient.Item.Result; if (string.IsNullOrWhiteSpace(itemResult)) { return null; } if (itemResult == "/") return null; var pos = itemResult.IndexOf("/"); var szy = itemResult.Substring(0, pos); var ssy = itemResult.Substring(pos + 1); if (!decimal.TryParse(szy, out szyDecimal)) { return null; } if (!decimal.TryParse(ssy, out ssyDecimal)) { return null; } if (szyDecimal > 180 || ssyDecimal > 110) { return "Ⅲ级高血压"; } if (szyDecimal > 160 || ssyDecimal > 100) { return "Ⅱ级高血压"; } if (szyDecimal > 140 || ssyDecimal > 90) { return "Ⅰ级高血压"; } return result; } /// /// 乙肝五项 /// [Fact] public void GetAsbitemDiagnosisResultYgwxTest() { var patient = new PatientAsbitemDiagnosisInput(); patient.SexName = "男"; patient.Age = 30; patient.Items = new List() { new ItemResultInput() { ItemId = Guid.NewGuid(), ItemName = "乙肝表面抗原(HBsAg)", Result = "阳性" }, new ItemResultInput() { ItemId = Guid.NewGuid(), ItemName = "乙肝表面抗体(抗-HBs)", Result = "阴性" }, new ItemResultInput() { ItemId = Guid.NewGuid(), ItemName = "乙肝e抗原(HBeAg)", Result = "阳性" }, new ItemResultInput() { ItemId = Guid.NewGuid(), ItemName = "乙肝e抗体(抗-HBe)", Result = "阴性" }, new ItemResultInput() { ItemId = Guid.NewGuid(), ItemName = "乙肝核心抗体(抗-HBc)", Result = "阳性" } }; var result = GetAsbitemDiagnosisResultYgwx(patient); _output.WriteLine("结果:" + result); string code = @" string msg = null; string result1 = """"; string result2= """"; string result3 = """"; string result4 = """"; string result5 = """"; foreach (var item in patient.Items) { if(item.ItemName == ""乙肝表面抗原(HBsAg)"") { result1 = item.Result; } if (item.ItemName == ""乙肝表面抗体(抗-HBs)"") { result2 = item.Result; } if (item.ItemName == ""乙肝e抗原(HBeAg)"") { result3 = item.Result; } if (item.ItemName == ""乙肝e抗体(抗-HBe)"") { result4 = item.Result; } if (item.ItemName == ""乙肝核心抗体(抗-HBc)"") { result5 = item.Result; } } switch (result1 + "","" + result2 + "","" + result3 + "","" + result4 + "","" + result5) { case ""阳性,阴性,阳性,阴性,阳性"": msg = ""乙肝五项检查大三阳""; break; case ""阳性,阴性,阴性,阳性,阳性"": msg = ""乙肝五项检查小三阳""; break; case ""阳性,阴性,阳性,阴性,阴性"": msg = ""乙肝五项检查第一项,第三项阳性""; break; case ""阴性,阴性,阳性,阳性,阳性"": msg = ""乙肝两对半三,四,五阳性""; break; case ""阳性,阴性,阴性,阴性,阳性"": msg = ""乙肝五项检查第一项,第五项阳性""; break; case ""阴性,阴性,阴性,阳性,阳性"": msg = ""乙肝五项检查第四项,第五项阳性""; break; case ""阳性,阴性,阳性,阳性,阴性"": msg = ""乙肝两对半一,三,四阳性""; break; case ""阴性,阴性,阳性,阴性,阳性"": msg = ""乙肝五项检查第三项,第五项阳性""; break; case ""阴性,阴性,阴性,阴性,阴性"": msg = ""乙肝五项全阴""; break; case ""阴性,阳性,阴性,阴性,阴性"": msg = ""乙肝表面抗体阳性""; break; case ""阳性,阴性,阴性,阴性,阴性"": msg = ""乙肝表面抗原阳性""; break; case ""阴性,阳性,阴性,阳性,阳性"": msg = ""乙肝五项检查第二,第四,第五项阳性""; break; case ""阴性,阴性,阴性,阳性,阴性"": msg = ""乙肝e抗体阳性""; break; case ""阳性,阴性,阴性,阳性,阴性"": msg = ""乙肝五项检查第一项,第四项阳性""; break; case ""阴性,阳性,阴性,阴性,阳性"": msg = ""乙肝五项检查第二项,第五项阳性""; break; case ""阴性,阴性,阴性,阴性,阳性"": msg = ""乙肝核心抗体阳性""; break; case ""阴性,弱阳性,阴性,阴性,阴性"": msg = ""乙肝表面抗体弱阳性""; break; case ""阴性,弱阳性,阴性,阴性,阳性"": msg = ""乙肝五项检查第二项弱阳性,第五项阳性""; break; default: msg = """"; break; } return msg; "; DiagnosisBuilder diagnosisBuilder = new DiagnosisBuilder(); result = diagnosisBuilder.GetAsbitemDiagnosisResult(patient, code); _output.WriteLine("动态结果:" + result); } public string GetAsbitemDiagnosisResultYgwx(PatientAsbitemDiagnosisInput patient) { string msg = null; string result1 = ""; string result2 = ""; string result3 = ""; string result4 = ""; string result5 = ""; foreach (var item in patient.Items) { if (item.ItemName == "乙肝表面抗原(HBsAg)") { result1 = item.Result; } if (item.ItemName == "乙肝表面抗体(抗-HBs)") { result2 = item.Result; } if (item.ItemName == "乙肝e抗原(HBeAg)") { result3 = item.Result; } if (item.ItemName == "乙肝e抗体(抗-HBe)") { result4 = item.Result; } if (item.ItemName == "乙肝核心抗体(抗-HBc)") { result5 = item.Result; } } switch (result1 + "," + result2 + "," + result3 + "," + result4 + "," + result5) { case "阳性,阴性,阳性,阴性,阳性": msg = "乙肝五项检查大三阳"; break; case "阳性,阴性,阴性,阳性,阳性": msg = "乙肝五项检查小三阳"; break; case "阳性,阴性,阳性,阴性,阴性": msg = "乙肝五项检查第一项,第三项阳性"; break; case "阴性,阴性,阳性,阳性,阳性": msg = "乙肝两对半三,四,五阳性"; break; case "阳性,阴性,阴性,阴性,阳性": msg = "乙肝五项检查第一项,第五项阳性"; break; case "阴性,阴性,阴性,阳性,阳性": msg = "乙肝五项检查第四项,第五项阳性"; break; case "阳性,阴性,阳性,阳性,阴性": msg = "乙肝两对半一,三,四阳性"; break; case "阴性,阴性,阳性,阴性,阳性": msg = "乙肝五项检查第三项,第五项阳性"; break; case "阴性,阴性,阴性,阴性,阴性": msg = "乙肝五项全阴"; break; case "阴性,阳性,阴性,阴性,阴性": msg = "乙肝表面抗体阳性"; break; case "阳性,阴性,阴性,阴性,阴性": msg = "乙肝表面抗原阳性"; break; case "阴性,阳性,阴性,阳性,阳性": msg = "乙肝五项检查第二,第四,第五项阳性"; break; case "阴性,阴性,阴性,阳性,阴性": msg = "乙肝e抗体阳性"; break; case "阳性,阴性,阴性,阳性,阴性": msg = "乙肝五项检查第一项,第四项阳性"; break; case "阴性,阳性,阴性,阴性,阳性": msg = "乙肝五项检查第二项,第五项阳性"; break; case "阴性,阴性,阴性,阴性,阳性": msg = "乙肝核心抗体阳性"; break; case "阴性,弱阳性,阴性,阴性,阴性": msg = "乙肝表面抗体弱阳性"; break; case "阴性,弱阳性,阴性,阴性,阳性": msg = "乙肝五项检查第二项弱阳性,第五项阳性"; break; default: msg = ""; break; } return msg; } } }