| 
						 | 
						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 Volo.Abp.Domain.Repositories;using Volo.Abp.Uow;using Xunit;using Xunit.Abstractions;
namespace Shentun.Peis{    public class DiagnosisFunctionAppServiceTest : PeisApplicationTestBase    {        private readonly IRepository<CustomerOrg, Guid> _repository;        private readonly DiagnosisFunctionAppService _appService;        private readonly ITestOutputHelper _output;        private readonly IUnitOfWorkManager _unitOfWorkManager;        public DiagnosisFunctionAppServiceTest(ITestOutputHelper testOutputHelper)        {            _output = testOutputHelper;            _unitOfWorkManager = GetRequiredService<IUnitOfWorkManager>();            _repository = GetRequiredService<IRepository<CustomerOrg, Guid>>();            _appService = GetRequiredService<DiagnosisFunctionAppService>();        }        [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<GetDiagnosisResultRequest_Item>                    {                        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.GetDoctorCheckDiagnosisResultAsync(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<GetDiagnosisResultRequest_Item>                    {                        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.GetDoctorCheckDiagnosisResultAsync(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<GetDiagnosisResultRequest_Item>                    {                        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.GetDoctorCheckDiagnosisResultAsync(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<GetDiagnosisResultRequest_Item>                    {                        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.GetDoctorCheckDiagnosisResultAsync(getDiagnosisResultRequestDto);                foreach (var item in result.DiagnosisResultDetails)                {                    _output.WriteLine(item.DiagnosisResult);                }            }        }        /// <summary>
        /// 体重指数测试结果
        /// </summary>
        [Fact]        public void GetItemCalculateResultTzzsTest()        {            PatientItemCalculateInput patient = new PatientItemCalculateInput();            patient.SexName = "男";            patient.Age = 30;            patient.Items = new List<ItemResultInput>()            {                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);
        }
        /// <summary>
        /// 体重指数
        /// </summary>
        /// <param name="patient"></param>
        /// <returns></returns>
        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);
        }
        /// <summary>
        /// 
        /// </summary>
        /// <param name="patient"></param>
        /// <returns></returns>
        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 GetItemDiagnosisResultTzzsTest()        {            PatientItemDiagnosisInput patient = new PatientItemDiagnosisInput();            patient.SexName = "男";            patient.Age = 30;            patient.Item = new ItemResultInput()            {                ItemId = Guid.NewGuid(),                ItemName = "体重指数",                Result = "25"            };            var result = GetItemDiagnosisResultTzzs(patient);            _output.WriteLine("结果:" + result);            string code = @"
                     string result = """";            decimal tzzsDecimal = 0;                     var itemResult = patient.Item.Result;            if (string.IsNullOrWhiteSpace(itemResult))            {                return null;            }                              if (!decimal.TryParse(itemResult, out tzzsDecimal))            {                return null;            }
                     if (tzzsDecimal > 24 )            {                return ""超重"";            }            if (tzzsDecimal < 18)            {                return ""营养不良"";            }            return result;;                      ";
            DiagnosisBuilder diagnosisBuilder = new DiagnosisBuilder();            result = diagnosisBuilder.GetItemDiagnosisResult(patient, code);            _output.WriteLine("动态结果:" + result);
        }
        public string GetItemDiagnosisResultTzzs(PatientItemDiagnosisInput patient)        {            string result = "";            decimal tzzsDecimal = 0;                     var itemResult = patient.Item.Result;            if (string.IsNullOrWhiteSpace(itemResult))            {                return null;            }                              if (!decimal.TryParse(itemResult, out tzzsDecimal))            {                return null;            }
                     if (tzzsDecimal > 24 )            {                return "超重";            }            if (tzzsDecimal < 18)            {                return "营养不良";            }            return result;        }        /// <summary>
        /// 乙肝五项
        /// </summary>
        [Fact]        public void GetAsbitemDiagnosisResultYgwxTest()        {            var patient = new PatientAsbitemDiagnosisInput();            patient.SexName = "男";            patient.Age = 30;            patient.Items = new List<ItemResultInput>()            {                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;        }    }}
  |