8 changed files with 427 additions and 4 deletions
			
			
		- 
					6ThirdPlugIns/Shentun.Peis.PlugIns.Gem/ImportPacsResultPlugInsGem.cs
 - 
					169ThirdPlugIns/Shentun.Peis.PlugIns.Gem/ImportPatientRegisterPlugInsGem.cs
 - 
					17ThirdPlugIns/Shentun.Peis.PlugIns.Gem/QztlImportDataEntity.cs
 - 
					140ThirdPlugIns/Shentun.Peis.PlugIns.Gem/QztlPatientRegisterFromInterface.cs
 - 
					49ThirdPlugIns/Shentun.Peis.PlugIns.Gem/test/Shentun.Peis.PlugIns.Gem.Test/ImportPatientRegisterPlugInsGemTest.cs
 - 
					12ThirdPlugIns/Shentun.Peis.PlugIns.Gem/test/Shentun.Peis.PlugIns.Gem.Test/appsettings.json
 - 
					18src/Shentun.ColumnReferencePlugIns/CustomerOrgForPlugIns.cs
 - 
					20src/Shentun.ColumnReferencePlugIns/ImportPatientRegisterPlugInsBase.cs
 
@ -0,0 +1,169 @@ | 
				
			|||
using Dapper; | 
				
			|||
using Newtonsoft.Json.Converters; | 
				
			|||
using Newtonsoft.Json; | 
				
			|||
using Npgsql; | 
				
			|||
using NPOI.SS.Formula.Functions; | 
				
			|||
using System; | 
				
			|||
using System.Collections.Generic; | 
				
			|||
using System.Data.Common; | 
				
			|||
using System.Linq; | 
				
			|||
using System.Net.Http.Headers; | 
				
			|||
using System.Text; | 
				
			|||
using System.Threading.Tasks; | 
				
			|||
using System.Text.RegularExpressions; | 
				
			|||
 | 
				
			|||
namespace Shentun.Peis.PlugIns.Gem | 
				
			|||
{ | 
				
			|||
    public class ImportPatientRegisterPlugInsGem : ImportPatientRegisterPlugInsBase | 
				
			|||
    { | 
				
			|||
        private Guid _importCustomerOrgId; | 
				
			|||
        private string _hospitalId; | 
				
			|||
        private string _aesKEY; | 
				
			|||
        private string _year; | 
				
			|||
        public ImportPatientRegisterPlugInsGem(string parmValue) : base(parmValue) | 
				
			|||
        { | 
				
			|||
 | 
				
			|||
        } | 
				
			|||
 | 
				
			|||
        public override async Task ImportAsync() | 
				
			|||
        { | 
				
			|||
            await InitAsync(); | 
				
			|||
 | 
				
			|||
            var qztlPatientRegisterFromInterface = await CallInterfaceServiceAsync(); | 
				
			|||
            if (qztlPatientRegisterFromInterface == null || !qztlPatientRegisterFromInterface.plans.Any()) | 
				
			|||
            { | 
				
			|||
                return; | 
				
			|||
            } | 
				
			|||
 | 
				
			|||
            foreach(var patient in qztlPatientRegisterFromInterface.plans) | 
				
			|||
            { | 
				
			|||
 | 
				
			|||
            } | 
				
			|||
 | 
				
			|||
 | 
				
			|||
        } | 
				
			|||
 | 
				
			|||
        public async Task InitAsync() | 
				
			|||
        { | 
				
			|||
            var customerOrgIdStr = InterfaceConfig.GetSection("Interface").GetSection("单位编号").Value; | 
				
			|||
            _hospitalId = InterfaceConfig.GetSection("Interface").GetSection("HospitalId").Value; | 
				
			|||
            _aesKEY = InterfaceConfig.GetSection("Interface").GetSection("aesKEY").Value; | 
				
			|||
            if (string.IsNullOrWhiteSpace(customerOrgIdStr)) | 
				
			|||
            { | 
				
			|||
                return; | 
				
			|||
            } | 
				
			|||
            if (!Guid.TryParse(customerOrgIdStr, out _importCustomerOrgId)) | 
				
			|||
            { | 
				
			|||
                throw new Exception("单位编号不正确"); | 
				
			|||
            } | 
				
			|||
            if (string.IsNullOrWhiteSpace(_hospitalId)) | 
				
			|||
            { | 
				
			|||
                throw new Exception("HospitalId参数不能为空"); | 
				
			|||
            } | 
				
			|||
            if (string.IsNullOrWhiteSpace(_aesKEY)) | 
				
			|||
            { | 
				
			|||
                throw new Exception("_aesKEY参数不能为空"); | 
				
			|||
            } | 
				
			|||
            using (DbConnection conn = new NpgsqlConnection(AppConnctionStr)) | 
				
			|||
            { | 
				
			|||
                string sql; | 
				
			|||
                sql = @"
 | 
				
			|||
                      SELECT id as  customer_org_id, | 
				
			|||
                             display_name as customer_org_name, | 
				
			|||
                             parent_id , | 
				
			|||
                             path_code | 
				
			|||
                      from  | 
				
			|||
                      customer_org  | 
				
			|||
                      where id = @CustomerOrgId | 
				
			|||
                      ";
 | 
				
			|||
                var customerOrgForPlugInss = (await conn.QueryAsync<CustomerOrgForPlugIns>(sql, | 
				
			|||
                    new { CustomerOrgId = _importCustomerOrgId })).FirstOrDefault(); | 
				
			|||
 | 
				
			|||
                if (customerOrgForPlugInss == null) | 
				
			|||
                { | 
				
			|||
                    throw new Exception("单位编号不正确,找不到单位"); | 
				
			|||
                } | 
				
			|||
 | 
				
			|||
                var year = customerOrgForPlugInss.CustomerOrgName.Substring( | 
				
			|||
                    customerOrgForPlugInss.CustomerOrgName.Length - 5 | 
				
			|||
                    , 4); | 
				
			|||
                if (!int.TryParse(year, out var yearNumber)) | 
				
			|||
                { | 
				
			|||
                    throw new Exception("单位名称必须是以2000年这样的格式结尾"); | 
				
			|||
                } | 
				
			|||
                if (yearNumber < 2024 || yearNumber > 2050) | 
				
			|||
                { | 
				
			|||
                    throw new Exception("单位名称年限范围必须在2024-2050之间"); | 
				
			|||
                } | 
				
			|||
 | 
				
			|||
                _year = year; | 
				
			|||
            } | 
				
			|||
        } | 
				
			|||
 | 
				
			|||
 | 
				
			|||
        public async Task<QztlPatientRegisterFromInterface?> CallInterfaceServiceAsync() | 
				
			|||
        { | 
				
			|||
            string baseAddress = InterfaceWebApiUrl; | 
				
			|||
            string ary = "HospitalId=" + _hospitalId + (Char)38 + "year=" + _year + (Char)38 + "AesKey=" + _aesKEY; | 
				
			|||
            baseAddress = baseAddress + ary; | 
				
			|||
            using (var httpClientHandler = new HttpClientHandler()) | 
				
			|||
            { | 
				
			|||
                using (var httpClient = new HttpClient(httpClientHandler)) | 
				
			|||
                { | 
				
			|||
                    httpClient.BaseAddress = new Uri(baseAddress); | 
				
			|||
 | 
				
			|||
                    httpClient.DefaultRequestHeaders.Accept.Add( | 
				
			|||
                      new MediaTypeWithQualityHeaderValue("application/x-www-form-urlencoded"));//设置accept标头,告诉JSON是可接受的响应类型
 | 
				
			|||
                    //httpClient.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", _accesToken);
 | 
				
			|||
                    IsoDateTimeConverter timeFormat = new IsoDateTimeConverter(); | 
				
			|||
                    timeFormat.DateTimeFormat = "yyyy-MM-dd HH:mm:ss"; | 
				
			|||
                    //var sendData = JsonConvert.SerializeObject(data, Newtonsoft.Json.Formatting.Indented, timeFormat);
 | 
				
			|||
                    using (HttpContent httpContent = new StringContent("")) | 
				
			|||
                    { | 
				
			|||
                        httpContent.Headers.ContentType = new MediaTypeHeaderValue("application/x-www-form-urlencoded"); | 
				
			|||
                        HttpResponseMessage response = await httpClient.GetAsync(""); | 
				
			|||
                        string result; | 
				
			|||
                        if (!response.IsSuccessStatusCode) | 
				
			|||
                        { | 
				
			|||
                            result = response.Content.ReadAsStringAsync().Result; | 
				
			|||
                            throw new Exception("http通信错误:" + response.StatusCode + ",结果:" + result); | 
				
			|||
                        } | 
				
			|||
                        result = await response.Content.ReadAsStringAsync(); | 
				
			|||
 | 
				
			|||
                        result = result.Replace(":\"[{", ":[{").Replace("}]\"", "}]").Replace("\\", ""); | 
				
			|||
                         | 
				
			|||
                        QztlPatientRegisterFromInterface? resultDto = JsonConvert.DeserializeObject<QztlPatientRegisterFromInterface>(result); | 
				
			|||
                        if (resultDto != null) | 
				
			|||
                        { | 
				
			|||
                            if (resultDto.status != 0) | 
				
			|||
                            { | 
				
			|||
                                throw new Exception($"调用WebApi失败,返回错误,消息:" + resultDto.status + resultDto.errorMsg); | 
				
			|||
                            } | 
				
			|||
                            //插入数据库中备份
 | 
				
			|||
                            using (DbConnection conn = new NpgsqlConnection(AppConnctionStr)) | 
				
			|||
                            { | 
				
			|||
                                string sql; | 
				
			|||
                                var qztlImportDataEntity = new QztlImportDataEntity() | 
				
			|||
                                { | 
				
			|||
                                    Id = Guid.NewGuid(), | 
				
			|||
                                    Data = result, | 
				
			|||
                                    DataType = '0', | 
				
			|||
                                    IsComplete = 'Y', | 
				
			|||
                                    CreationTime = DateTime.Now, | 
				
			|||
                                }; | 
				
			|||
 | 
				
			|||
                                sql = @"insert into qztl_import_data(id, data, data_type, is_complete,creation_time) 
 | 
				
			|||
                             values(@Id, @Data, @DataType, @IsComplete,@CreationTime)";
 | 
				
			|||
                                conn.Execute(sql, qztlImportDataEntity); | 
				
			|||
 | 
				
			|||
                            } | 
				
			|||
                            return (QztlPatientRegisterFromInterface)resultDto; | 
				
			|||
                        } | 
				
			|||
                        return null; | 
				
			|||
                    } | 
				
			|||
 | 
				
			|||
                } | 
				
			|||
            } | 
				
			|||
        } | 
				
			|||
    } | 
				
			|||
} | 
				
			|||
@ -0,0 +1,17 @@ | 
				
			|||
using System; | 
				
			|||
using System.Collections.Generic; | 
				
			|||
using System.Linq; | 
				
			|||
using System.Text; | 
				
			|||
using System.Threading.Tasks; | 
				
			|||
 | 
				
			|||
namespace Shentun.Peis.PlugIns.Gem | 
				
			|||
{ | 
				
			|||
    public class QztlImportDataEntity | 
				
			|||
    { | 
				
			|||
        public Guid Id { get; set; } | 
				
			|||
        public string Data { get; set; } | 
				
			|||
        public char DataType { get; set; } | 
				
			|||
        public char IsComplete { get; set; }    | 
				
			|||
        public DateTime CreationTime { get; set; } | 
				
			|||
    } | 
				
			|||
} | 
				
			|||
@ -0,0 +1,140 @@ | 
				
			|||
using System; | 
				
			|||
using System.Collections.Generic; | 
				
			|||
using System.Linq; | 
				
			|||
using System.Text; | 
				
			|||
using System.Threading.Tasks; | 
				
			|||
 | 
				
			|||
namespace Shentun.Peis.PlugIns.Gem | 
				
			|||
{ | 
				
			|||
    public class QztlPatientRegisterFromInterface | 
				
			|||
    { | 
				
			|||
        public int status {  get; set; } | 
				
			|||
        public string errorMsg { get; set; } | 
				
			|||
        public int size { get; set; } | 
				
			|||
        public List<string> delIds { get; set; } = new List<string>(); | 
				
			|||
        public List<QztlPatientRegisterFromInterfacePlan> plans { get; set; } = new List<QztlPatientRegisterFromInterfacePlan>(); | 
				
			|||
    } | 
				
			|||
    public class QztlPatientRegisterFromInterfacePlan | 
				
			|||
    { | 
				
			|||
        /// <summary>
 | 
				
			|||
        /// 
 | 
				
			|||
        /// </summary>
 | 
				
			|||
        public string gradeJsV { get; set; } | 
				
			|||
        /// <summary>
 | 
				
			|||
        /// 体检年份 int
 | 
				
			|||
        /// </summary>
 | 
				
			|||
        public int year { get; set; } | 
				
			|||
        /// <summary>
 | 
				
			|||
        /// 2024年全员体检
 | 
				
			|||
        /// </summary>
 | 
				
			|||
        public string planName { get; set; } | 
				
			|||
        /// <summary>
 | 
				
			|||
        /// 体检批次
 | 
				
			|||
        /// </summary>
 | 
				
			|||
        public string tjpcV {  get; set; } | 
				
			|||
        /// <summary>
 | 
				
			|||
        /// 体检阶段 int
 | 
				
			|||
        /// </summary>
 | 
				
			|||
        public int tjJieduan { get; set; } | 
				
			|||
        /// <summary>
 | 
				
			|||
        /// 年龄 int
 | 
				
			|||
        /// </summary>
 | 
				
			|||
        public int age { get; set; } | 
				
			|||
        /// <summary>
 | 
				
			|||
        /// 身份证号
 | 
				
			|||
        /// </summary>
 | 
				
			|||
        public string cardId { get; set; } | 
				
			|||
        /// <summary>
 | 
				
			|||
        /// 本次体检唯一ID号,long
 | 
				
			|||
        /// </summary>
 | 
				
			|||
        public long id { get; set; } | 
				
			|||
        /// <summary>
 | 
				
			|||
        /// 职称
 | 
				
			|||
        /// </summary>
 | 
				
			|||
        public string gradeZwV { get; set; } | 
				
			|||
        /// <summary>
 | 
				
			|||
        /// 高原体检,int
 | 
				
			|||
        /// </summary>
 | 
				
			|||
        public int ifGy { get; set; } | 
				
			|||
        /// <summary>
 | 
				
			|||
        /// 健康体检
 | 
				
			|||
        /// </summary>
 | 
				
			|||
        public int ifJk { get; set; } | 
				
			|||
        /// <summary>
 | 
				
			|||
        /// 普速体检
 | 
				
			|||
        /// </summary>
 | 
				
			|||
        public int ifCw { get; set; } | 
				
			|||
        /// <summary>
 | 
				
			|||
        /// 从业
 | 
				
			|||
        /// </summary>
 | 
				
			|||
        public int ifCy { get; set; } | 
				
			|||
        /// <summary>
 | 
				
			|||
        /// 复检
 | 
				
			|||
        /// </summary>
 | 
				
			|||
        public int ifFj { get; set; } | 
				
			|||
        /// <summary>
 | 
				
			|||
        /// 高铁
 | 
				
			|||
        /// </summary>
 | 
				
			|||
        public int ifGt { get; set; } | 
				
			|||
        /// <summary>
 | 
				
			|||
        /// 行车体检
 | 
				
			|||
        /// </summary>
 | 
				
			|||
        public int ifMain { get; set; } | 
				
			|||
        /// <summary>
 | 
				
			|||
        /// 危害体检
 | 
				
			|||
        /// </summary>
 | 
				
			|||
        public int ifWh { get; set; } | 
				
			|||
        /// <summary>
 | 
				
			|||
        /// 手机号
 | 
				
			|||
        /// </summary>
 | 
				
			|||
        public string mobile { get; set; } | 
				
			|||
        /// <summary>
 | 
				
			|||
        /// 单位 int
 | 
				
			|||
        /// </summary>
 | 
				
			|||
        public long orgId { get; set; } | 
				
			|||
        /// <summary>
 | 
				
			|||
        /// 单位名
 | 
				
			|||
        /// </summary>
 | 
				
			|||
        public string orgName { get; set; } | 
				
			|||
        /// <summary>
 | 
				
			|||
        /// 姓名
 | 
				
			|||
        /// </summary>
 | 
				
			|||
        public string personName { get; set; } | 
				
			|||
        /// <summary>
 | 
				
			|||
        /// 性别,int
 | 
				
			|||
        /// </summary>
 | 
				
			|||
        public int sex { get; set; } | 
				
			|||
        /// <summary>
 | 
				
			|||
        /// 
 | 
				
			|||
        /// </summary>
 | 
				
			|||
        public int wedding { get; set; } | 
				
			|||
        /// <summary>
 | 
				
			|||
        /// 干部
 | 
				
			|||
        /// </summary>
 | 
				
			|||
        public string workTypeV { get; set; } | 
				
			|||
        /// <summary>
 | 
				
			|||
        /// 备注
 | 
				
			|||
        /// </summary>
 | 
				
			|||
        public string remark { get; set; } | 
				
			|||
        /// <summary>
 | 
				
			|||
        /// 职务
 | 
				
			|||
        /// </summary>
 | 
				
			|||
        public string tjTab1 { get; set; } | 
				
			|||
        /// <summary>
 | 
				
			|||
        /// 体检备注
 | 
				
			|||
        /// </summary>
 | 
				
			|||
        public string tjOpinion { get; set; } | 
				
			|||
        /// <summary>
 | 
				
			|||
        /// 复检备注
 | 
				
			|||
        /// </summary>
 | 
				
			|||
        public string fjOpinion { get; set; } | 
				
			|||
        /// <summary>
 | 
				
			|||
        /// int
 | 
				
			|||
        /// </summary>
 | 
				
			|||
        public int altitude { get; set; } | 
				
			|||
        /// <summary>
 | 
				
			|||
        /// DateTime
 | 
				
			|||
        /// </summary>
 | 
				
			|||
        public DateTime beginTime { get; set; } | 
				
			|||
    } | 
				
			|||
} | 
				
			|||
						
							
						
						
							49
	
						
						ThirdPlugIns/Shentun.Peis.PlugIns.Gem/test/Shentun.Peis.PlugIns.Gem.Test/ImportPatientRegisterPlugInsGemTest.cs
						
							File diff suppressed because it is too large
							
							
								
									View File
								
							
						
					
				File diff suppressed because it is too large
							
							
								
									View File
								
							
						@ -0,0 +1,18 @@ | 
				
			|||
using System; | 
				
			|||
using System.Collections.Generic; | 
				
			|||
using System.Linq; | 
				
			|||
using System.Text; | 
				
			|||
using System.Threading.Tasks; | 
				
			|||
 | 
				
			|||
namespace Shentun.Peis.PlugIns | 
				
			|||
{ | 
				
			|||
    public class CustomerOrgForPlugIns | 
				
			|||
    { | 
				
			|||
        public Guid CustomerOrgId { get; set; } | 
				
			|||
        public string CustomerOrgName { get; set; } | 
				
			|||
 | 
				
			|||
        public Guid ParentId { get; set; } | 
				
			|||
 | 
				
			|||
        public string PathCode { get; set; } | 
				
			|||
    } | 
				
			|||
} | 
				
			|||
@ -0,0 +1,20 @@ | 
				
			|||
using System; | 
				
			|||
using System.Collections.Generic; | 
				
			|||
using System.Linq; | 
				
			|||
using System.Text; | 
				
			|||
using System.Threading.Tasks; | 
				
			|||
 | 
				
			|||
namespace Shentun.Peis.PlugIns | 
				
			|||
{ | 
				
			|||
    public class ImportPatientRegisterPlugInsBase : ThirdPlugInsBase | 
				
			|||
    { | 
				
			|||
        public ImportPatientRegisterPlugInsBase(string parmValue) : base(parmValue) | 
				
			|||
        { | 
				
			|||
        } | 
				
			|||
 | 
				
			|||
        public virtual async Task ImportAsync() | 
				
			|||
        { | 
				
			|||
            return ; | 
				
			|||
        } | 
				
			|||
    } | 
				
			|||
} | 
				
			|||
						Write
						Preview
					
					
					Loading…
					
					Cancel
						Save
					
		Reference in new issue