From 4029af9c6dd248ea3bf22a38ebaa19376f86d6db Mon Sep 17 00:00:00 2001 From: "DESKTOP-G961P6V\\Zhh" <839860190@qq.com> Date: Mon, 13 May 2024 11:19:55 +0800 Subject: [PATCH] =?UTF-8?q?=E9=9D=92=E8=97=8F=E5=85=AC=E5=8F=B8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../ImportPatientRegisterPlugInsGem.cs | 417 ++++++++++-------- .../PrintReportAppServiceTest.cs | 2 +- 2 files changed, 222 insertions(+), 197 deletions(-) diff --git a/ThirdPlugIns/Shentun.Peis.PlugIns.Gem/ImportPatientRegisterPlugInsGem.cs b/ThirdPlugIns/Shentun.Peis.PlugIns.Gem/ImportPatientRegisterPlugInsGem.cs index 1dbabb1..6d79251 100644 --- a/ThirdPlugIns/Shentun.Peis.PlugIns.Gem/ImportPatientRegisterPlugInsGem.cs +++ b/ThirdPlugIns/Shentun.Peis.PlugIns.Gem/ImportPatientRegisterPlugInsGem.cs @@ -43,235 +43,257 @@ namespace Shentun.Peis.PlugIns.Gem { await LoginAsync(); await InitAsync(); - for(var i = 0;i<30;i++) + for (var i = 0; i < 30; i++) { var qztlPatientRegisterFromInterface = await CallInterfaceServiceAsync(); if (qztlPatientRegisterFromInterface == null || !qztlPatientRegisterFromInterface.plans.Any()) { return; } + //设置导入人员信息 foreach (var patient in qztlPatientRegisterFromInterface.plans) { - //婚姻状况 - var maritalStatusId = ConvertMaritalStatus(patient.wedding); - //人员类别 - var personnelType = ConvertPersonnelType(patient.tjJieduan); - //性别 - var sexId = ConvertSex(patient.sex); - //体检类别 - var medicalTypeName = patient.tjpcV; - MedicalTypeDto medicalTypeDto = null; - if (!string.IsNullOrWhiteSpace(medicalTypeName)) + try { - medicalTypeDto = await CallAppServiceAsync( - "api/app/MedicalType/GetByDisplayName", new DisplayNameInputDto() { DisplayName = medicalTypeName }); - if (medicalTypeDto == null) + //婚姻状况 + var maritalStatusId = ConvertMaritalStatus(patient.wedding); + //人员类别 + var personnelType = ConvertPersonnelType(patient.tjJieduan); + //性别 + var sexId = ConvertSex(patient.sex); + //体检类别 + var medicalTypeName = patient.tjpcV; + MedicalTypeDto medicalTypeDto = null; + if (!string.IsNullOrWhiteSpace(medicalTypeName)) { - var createMedicalTypeDto = new CreateMedicalTypeDto() + medicalTypeDto = await CallAppServiceAsync( + "api/app/MedicalType/GetByDisplayName", new DisplayNameInputDto() { DisplayName = medicalTypeName }); + if (medicalTypeDto == null) { - DisplayName = medicalTypeName, - }; - medicalTypeDto = await CallAppServiceAsync( - "api/app/medical-type", new CreateMedicalTypeDto() { DisplayName = medicalTypeName }); + var createMedicalTypeDto = new CreateMedicalTypeDto() + { + DisplayName = medicalTypeName, + }; + medicalTypeDto = await CallAppServiceAsync( + "api/app/medical-type", new CreateMedicalTypeDto() { DisplayName = medicalTypeName }); + } + } + //职称 + var jobTitle = ConvertJobTitle(patient.gradeZwV); + //职务 + var jobPost = ConvertJobPost(patient.tjTab1); + string workTypeV = patient.workTypeV; + if (string.IsNullOrWhiteSpace(workTypeV)) + { + workTypeV = ""; + } + else + { + workTypeV = "," + workTypeV; + } + jobPost = jobPost + workTypeV; + if (!string.IsNullOrWhiteSpace(jobPost) && jobPost.Length >= 10) + { + jobPost = jobPost.Substring(0, 10);//只能存储10个汉字 } - } - //职称 - var jobTitle = ConvertJobTitle(patient.gradeZwV); - //职务 - var jobPost = ConvertJobPost(patient.tjTab1); - string workTypeV = patient.workTypeV; - if (string.IsNullOrWhiteSpace(workTypeV)) - { - workTypeV = ""; - } - else - { - workTypeV = "," + workTypeV; - } - jobPost = jobPost + workTypeV; - if (!string.IsNullOrWhiteSpace(jobPost) && jobPost.Length >= 10) - { - jobPost = jobPost.Substring(0, 10);//只能存储10个汉字 - } - //查找子单位是否存在,如存在获取子单位id,如果不存在这创建子单位 - var orgName = patient.orgName; - var pos = orgName.IndexOf("_"); - orgName = orgName.Substring(0, pos); - if (string.IsNullOrWhiteSpace(patient.mobile)) - { - //青海省第五人民医院要强行设置为 11111111111 - } - var customerOrgDtos = await CallAppServiceAsync>( - "api/app/CustomerOrg/GetChildCustomerOrgsById", - new CustomerOrgIdInputDto() { CustomerOrgId = _importCustomerOrgId }); - CustomerOrgDto customerOrgDto = null; - if (customerOrgDtos != null && customerOrgDtos.Any()) - { - customerOrgDto = customerOrgDtos.Where(o => o.DisplayName == orgName).FirstOrDefault(); - } - if (customerOrgDto == null) - { - customerOrgDto = await CallAppServiceAsync( - "api/app/customerorg/create", new CreateCustomerOrgDto() - { - MedicalCenterId = _customerOrgDto.MedicalCenterId , - ParentId = _importCustomerOrgId, - DisplayName = orgName, - ShortName = orgName, - IsActive = 'Y', - IsLock = 'Y' - }); - } - CustomerOrgGroupDto customerOrgGroupDto; - if (patient.ifFj == 1) - { - //复检 - //加载单位分组信息 - _customerOrgGroupDtos = await CallAppServiceAsync>( - "api/app/customer-org-group/in-customer-org-id/" + _importCustomerOrgId.ToString() - , Guid.Empty, "get"); - customerOrgGroupDto = _customerOrgGroupDtos.Where(o => o.DisplayName == "复检").FirstOrDefault(); - if (customerOrgGroupDto == null) + //查找子单位是否存在,如存在获取子单位id,如果不存在这创建子单位 + var orgName = patient.orgName; + var pos = orgName.IndexOf("_"); + orgName = orgName.Substring(0, pos); + if (string.IsNullOrWhiteSpace(patient.mobile)) { - throw new Exception("没有复检这个分组"); + //青海省第五人民医院要强行设置为 11111111111 } - } - else - { - List groupNames = new List(); - if (patient.ifGy == 1) + var customerOrgDtos = await CallAppServiceAsync>( + "api/app/CustomerOrg/GetChildCustomerOrgsById", + new CustomerOrgIdInputDto() { CustomerOrgId = _importCustomerOrgId }); + CustomerOrgDto customerOrgDto = null; + if (customerOrgDtos != null && customerOrgDtos.Any()) + { + customerOrgDto = customerOrgDtos.Where(o => o.DisplayName == orgName).FirstOrDefault(); + } + if (customerOrgDto == null) { - groupNames.Add("高原"); + customerOrgDto = await CallAppServiceAsync( + "api/app/customerorg/create", new CreateCustomerOrgDto() + { + MedicalCenterId = _customerOrgDto.MedicalCenterId, + ParentId = _importCustomerOrgId, + DisplayName = orgName, + ShortName = orgName, + IsActive = 'Y', + IsLock = 'Y' + }); } - else if (patient.ifJk == 1) + CustomerOrgGroupDto customerOrgGroupDto; + if (patient.ifFj == 1) { - groupNames.Add("健康"); + //复检 + //加载单位分组信息 + _customerOrgGroupDtos = await CallAppServiceAsync>( + "api/app/customer-org-group/in-customer-org-id/" + _importCustomerOrgId.ToString() + , Guid.Empty, "get"); + customerOrgGroupDto = _customerOrgGroupDtos.Where(o => o.DisplayName == "复检").FirstOrDefault(); + if (customerOrgGroupDto == null) + { + throw new Exception("没有复检这个分组"); + } } else { - throw new Exception("分组名称必须是高原或健康体检二选一"); + List groupNames = new List(); + if (patient.ifGy == 1) + { + groupNames.Add("高原"); + } + else if (patient.ifJk == 1) + { + groupNames.Add("健康"); + } + else + { + throw new Exception("分组名称必须是高原或健康体检二选一"); + } + if (patient.ifGt == 1) + { + groupNames.Add("高铁"); + } + if (patient.ifWh == 1) + { + groupNames.Add("职害"); + } + if (patient.ifCw == 1) + { + groupNames.Add("普速"); + } + if (patient.ifMain == 1) + { + groupNames.Add("行车"); + } + if (patient.ifCy == 1) + { + groupNames.Add("从业"); + } + customerOrgGroupDto = await GetCustomerOrgGroup(groupNames, sexId, maritalStatusId); + } + //获取病人ID + + var patientRegister = new CreatePatientRegisterDto() + { + MedicalCenterId = _customerOrgDto.MedicalCenterId, + //PatientRegisterId = null, + //PatientId = null, + IsMaxMedicalTimes = 'Y', + CompleteFlag = '0', + CustomerOrgId = customerOrgDto.Id, + CustomerOrgRegisterId = _customerOrgRegisterDto.Id, + CustomerOrgGroupId = customerOrgGroupDto.Id, + PatientName = patient.personName, + SexId = sexId, + Age = patient.age, + MaritalStatusId = maritalStatusId, + MobileTelephone = patient.mobile, + Planuserid = patient.id.ToString(), + IdNo = patient.cardId, + //PersonnelTypeId = personnelType.Id, + JobTitle = jobTitle, + Remark = patient.remark, + JobPost = jobPost, + Remark2 = patient.tjOpinion, + Remark3 = patient.fjOpinion, + QztlIsFj = patient.ifFj == 1 ? 'Y' : 'N', + QztlIsGt = patient.ifGt == 1 ? 'Y' : 'N', + QztlIsWh = patient.ifWh == 1 ? 'Y' : 'N', + QztlIsCw = patient.ifCw == 1 ? 'Y' : 'N', + QztlIsMain = patient.ifMain == 1 ? 'Y' : 'N', + QztlIsCy = patient.ifCy == 1 ? 'Y' : 'N', + IsQztlImport = 'Y' + }; + + + if (!string.IsNullOrWhiteSpace(patient.cardId)) + { + var patientInfo = await CallAppServiceAsync( + "api/app/patient/GetByIdNo", + new IdNoInputDto() + { + IdNo = patient.cardId + }); + if (patientInfo != null) + { + patientRegister.PatientId = patientInfo.Id; + } + } - if (patient.ifGt == 1) + + if (medicalTypeDto != null) { - groupNames.Add("高铁"); + patientRegister.MedicalTypeId = medicalTypeDto.Id; } - if (patient.ifWh == 1) + if (personnelType != null) { - groupNames.Add("职害"); + patientRegister.PersonnelTypeId = personnelType.Id; } - if (patient.ifCw == 1) + if (patient.ifGy == 1) { - groupNames.Add("普速"); + patientRegister.QztlType = '0'; } - if (patient.ifMain == 1) + else if (patient.ifJk == 1) { } { - groupNames.Add("行车"); + patientRegister.QztlType = '1'; } - if (patient.ifCy == 1) + patientRegister.RegisterCheckAsbitems = new List(); + //获取分组信息 + var customerOrgGroupDetailOrAsbitemDtos = await CallAppServiceAsync>( + "api/app/customerorggroupdetail/getcustomerorggroupdetailinasbitem?CustomerOrgGroupId=" + customerOrgGroupDto.Id.ToString() + , Guid.Empty, "get"); + if (!customerOrgGroupDetailOrAsbitemDtos.Any()) { - groupNames.Add("从业"); + throw new Exception("分组未包含项目"); } - customerOrgGroupDto = await GetCustomerOrgGroup(groupNames, sexId, maritalStatusId); - } - //获取病人ID - - var patientRegister = new CreatePatientRegisterDto() - { - MedicalCenterId = _customerOrgDto.MedicalCenterId, - //PatientRegisterId = null, - //PatientId = null, - IsMaxMedicalTimes = 'Y', - CompleteFlag = '0', - CustomerOrgId = customerOrgDto.Id, - CustomerOrgRegisterId = _customerOrgRegisterDto.Id, - CustomerOrgGroupId = customerOrgGroupDto.Id, - PatientName = patient.personName, - SexId = sexId, - Age = patient.age, - MaritalStatusId = maritalStatusId, - MobileTelephone = patient.mobile, - Planuserid = patient.id.ToString(), - IdNo = patient.cardId, - //PersonnelTypeId = personnelType.Id, - JobTitle = jobTitle, - Remark = patient.remark, - JobPost = jobPost, - Remark2 = patient.tjOpinion, - Remark3 = patient.fjOpinion, - QztlIsFj = patient.ifFj == 1 ? 'Y' : 'N', - QztlIsGt = patient.ifGt == 1 ? 'Y' : 'N', - QztlIsWh = patient.ifWh == 1 ? 'Y' : 'N', - QztlIsCw = patient.ifCw == 1 ? 'Y' : 'N', - QztlIsMain = patient.ifMain == 1 ? 'Y' : 'N', - QztlIsCy = patient.ifCy == 1 ? 'Y' : 'N', - IsQztlImport = 'Y' - }; - - - if (!string.IsNullOrWhiteSpace(patient.cardId)) - { - var patientInfo = await CallAppServiceAsync( - "api/app/patient/GetByIdNo", - new IdNoInputDto() - { - IdNo = patient.cardId - }); - if (patientInfo != null) + foreach (var asbitem in customerOrgGroupDetailOrAsbitemDtos) { - patientRegister.PatientId = patientInfo.Id; + patientRegister.RegisterCheckAsbitems.Add(new CreatePatientRegisterRegisterCheckAsbitem() + { + AsbitemId = asbitem.AsbitemId, + StandardPrice = asbitem.Price, + ChargePrice = asbitem.CustomerOrgGroupDetailPrice, + PayTypeFlag = '1', + IsCharge = 'N', + Amount = asbitem.CustomerOrgGroupDetailAmount + }); } - + await CallAppServiceAsync( + "api/PatientRegister/CreatePatientRegister", + patientRegister); + + var succesIds = new List(); + var deleteIds = new List(); + succesIds.Add(patientRegister.Planuserid); + await NoteOk(succesIds, deleteIds); } - if (medicalTypeDto != null) + catch (Exception ex) { - patientRegister.MedicalTypeId = medicalTypeDto.Id; - } - if (personnelType != null) - { - patientRegister.PersonnelTypeId = personnelType.Id; - } - if (patient.ifGy == 1) - { - patientRegister.QztlType = '0'; - } - else if (patient.ifJk == 1) { } - { - patientRegister.QztlType = '1'; - } - patientRegister.RegisterCheckAsbitems = new List(); - //获取分组信息 - var customerOrgGroupDetailOrAsbitemDtos = await CallAppServiceAsync>( - "api/app/customerorggroupdetail/getcustomerorggroupdetailinasbitem?CustomerOrgGroupId=" + customerOrgGroupDto.Id.ToString() - , Guid.Empty, "get"); - if (!customerOrgGroupDetailOrAsbitemDtos.Any()) - { - throw new Exception("分组未包含项目"); - } - foreach (var asbitem in customerOrgGroupDetailOrAsbitemDtos) - { - patientRegister.RegisterCheckAsbitems.Add(new CreatePatientRegisterRegisterCheckAsbitem() + + if (ex.Message.Contains("人员信息姓名和性别和原来的信息都不一致") || + ex.Message.Contains("身份证号解析出的性别与填入的性别不一致")) { - AsbitemId = asbitem.AsbitemId, - StandardPrice = asbitem.Price, - ChargePrice = asbitem.CustomerOrgGroupDetailPrice, - PayTypeFlag = '1', - IsCharge = 'N', - Amount = asbitem.CustomerOrgGroupDetailAmount - }); + continue; + } + + else + { + throw ex; + } } - await CallAppServiceAsync( - "api/PatientRegister/CreatePatientRegister", - patientRegister); - - var succesIds = new List(); - var deleteIds = new List(); - succesIds.Add(patientRegister.Planuserid); - await NoteOk(succesIds, deleteIds); } + + + } @@ -345,7 +367,7 @@ namespace Shentun.Peis.PlugIns.Gem CustomerOrgId = _importCustomerOrgId, }); //加载人员类别列表 - _personnelTypes = await CallAppServiceAsync>("api/app/PersonnelType/GetAll", ""); + _personnelTypes = await CallAppServiceAsync>("api/app/PersonnelType/GetAll", ""); } @@ -379,10 +401,13 @@ namespace Shentun.Peis.PlugIns.Gem result = await response.Content.ReadAsStringAsync(); result = result.Replace(":\"[{", ":[{").Replace("}]\"", "}]").Replace("\\", ""); - + if(result.IndexOf("status") < 0) + { + throw new Exception($"调用WebApi中无status,返回值:" + result); + } QztlPatientRegisterFromInterface? resultDto = JsonConvert.DeserializeObject(result); if (resultDto != null) - { + { if (resultDto.status != 0) { throw new Exception($"调用WebApi失败,返回错误,消息:" + resultDto.status + resultDto.errorMsg); @@ -632,19 +657,19 @@ namespace Shentun.Peis.PlugIns.Gem public async Task NoteOk(List successIds, List deleteIds) { - if(successIds == null || deleteIds == null) + if (successIds == null || deleteIds == null) { return; } - + if (successIds.Count == 0 && deleteIds.Count == 0) { return; } string successIdStr = ""; - for (var i = 0 ; i < successIds.Count; i++) + for (var i = 0; i < successIds.Count; i++) { - if(i == 0) + if (i == 0) { successIdStr = successIds[i]; } @@ -666,7 +691,7 @@ namespace Shentun.Peis.PlugIns.Gem } } string baseAddress = "http://62.156.10.237:8005/health/values/SetPlanOK?"; - string ary = "HospitalId=" + _hospitalId + (Char)38 + + string ary = "HospitalId=" + _hospitalId + (Char)38 + "ids=" + successIdStr + (Char)38 + "delids=" + deleteIdStr + (Char)38 + "AesKey=" + _aesKEY; baseAddress = baseAddress + ary; using (var httpClientHandler = new HttpClientHandler()) @@ -725,7 +750,7 @@ namespace Shentun.Peis.PlugIns.Gem } return; } - return ; + return; } } diff --git a/test/Shentun.Peis.Application.Tests/PrintReportAppServiceTest.cs b/test/Shentun.Peis.Application.Tests/PrintReportAppServiceTest.cs index 15055d3..4b0d523 100644 --- a/test/Shentun.Peis.Application.Tests/PrintReportAppServiceTest.cs +++ b/test/Shentun.Peis.Application.Tests/PrintReportAppServiceTest.cs @@ -34,7 +34,7 @@ namespace Shentun.Peis using (var unitOfWork = _unitOfWorkManager.Begin(isTransactional: true)) { var items = await _appService.GetLisRequestReportByPatientRegisterIdAsync(new PatientRegisterIdInputDto() - { PatientRegisterId = new Guid("3a127094-8fcf-78cc-3397-dedd7decb7b4") }); + { PatientRegisterId = new Guid("3a12815b-da56-ef02-4782-5760e0965cd8") }); _output.WriteLine(items.Count().ToString()); foreach (var item in items) {