Browse Source

Merge branch 'master' of http://git.ius.plus:88/Project-Wing/WingCloudServer

denny 8 months ago
parent
commit
8b18f203a1

+ 50 - 0
src/VitalMixtureService/Factury/BaseApiHelper.cs

@@ -0,0 +1,50 @@
+using WingServerCommon.Log;
+
+namespace VitalService.Factury
+{
+    public class BaseApiHelper : IDisposable
+    {
+        protected readonly HttpClient _httpClient;
+
+        public BaseApiHelper(double seconds)
+        {
+            _httpClient = new HttpClient();
+            _httpClient.Timeout = TimeSpan.FromSeconds(seconds);
+        }
+
+        public async Task<string> GetResult(string url, string request, Dictionary<string, string> headers)
+        {
+            try
+            {
+                var httpRequestMessage = new HttpRequestMessage(HttpMethod.Post, url);
+
+                if (headers != null && headers.Any())
+                {
+                    foreach (var header in headers)
+                    {
+                        httpRequestMessage.Headers.Add(header.Key, header.Value);
+                    }
+                }
+
+                httpRequestMessage.Content = new StringContent(request);
+
+                using (var response = await _httpClient.SendAsync(httpRequestMessage))
+                {
+                    response.EnsureSuccessStatusCode();
+                    var resString = await response.Content.ReadAsStringAsync();
+                    return resString;
+                }
+            }
+            catch (Exception ex)
+            {
+                Logger.WriteLineWarn($"VitalMixtureService BaseApiHelper GetResult error, ex:{ex}");
+            }
+            return string.Empty;
+        }
+
+        public void Dispose()
+        {
+            _httpClient?.Dispose();
+        }
+    }
+}

+ 178 - 0
src/VitalMixtureService/Factury/JingQiApiHelper.cs

@@ -0,0 +1,178 @@
+using Newtonsoft.Json;
+using WingServerCommon.Log;
+
+namespace VitalService.Factury
+{
+    public class JingQiApiHelper : BaseApiHelper
+    {
+        private string _serverUrl;
+
+        public JingQiApiHelper(string serverUrl, double seconds = 30) : base(seconds)
+        {
+            _serverUrl = serverUrl;
+            Logger.WriteLineInfo($"VitalMixtureService JingQiApiHelper init, serverUrl:{serverUrl}, seconds:{seconds}");
+        }
+
+        /// <summary>
+        /// 体检登记
+        /// </summary>
+        /// <param name="request"></param>
+        /// <param name="headers"></param>
+        /// <returns></returns>
+        public async Task<JingQiResult<JingQiExamRegisterResult>> ExamRegisterAsync(JingQiExamRegisterRequest request, Dictionary<string, string> headers)
+        {
+            Logger.WriteLineInfo($"VitalMixtureService JingQiApiHelper ExamRegisterAsync start, request:{request}");
+            return await GetJingQiResult<JingQiExamRegisterResult>(JsonConvert.SerializeObject(request), headers);
+        }
+
+        /// <summary>
+        /// 删除登记记录
+        /// </summary>
+        /// <param name="request"></param>
+        /// <param name="headers"></param>
+        /// <returns></returns>
+        public async Task<JingQiResult<JingQiExamDeleteResult>> ExamDeleteAsync(JingQiExamDeleteRequest request, Dictionary<string, string> headers)
+        {
+            Logger.WriteLineInfo($"VitalMixtureService JingQiApiHelper ExamDeleteAsync start, request:{request}");
+            return await GetJingQiResult<JingQiExamDeleteResult>(JsonConvert.SerializeObject(request), headers);
+        }
+
+        private async Task<JingQiResult<TResult>> GetJingQiResult<TResult>(string request, Dictionary<string, string> headers)
+        {
+            try
+            {
+                var res = await GetResult(_serverUrl, request, headers);
+                Logger.WriteLineInfo($"VitalMixtureService JingQiApiHelper GetJingQiResult success, res:{res}");
+                var jingQiResult = JsonConvert.DeserializeObject<JingQiResult<TResult>>(res);
+                if (jingQiResult.status == "0")
+                {
+                    Logger.WriteLineInfo($"VitalMixtureService JingQiApiHelper GetJingQiResult success, ErroMsg:{jingQiResult.ErroMsg}");
+                }
+                else
+                {
+                    Logger.WriteLineError($"VitalMixtureService JingQiApiHelper GetJingQiResult failed, status:{jingQiResult.status}, ErroMsg:{jingQiResult.ErroMsg}");
+                }
+                return jingQiResult;
+            }
+            catch (Exception ex)
+            {
+                Logger.WriteLineWarn($"VitalMixtureService JingQiApiHelper GetJingQiResult error, ex:{ex}");
+                return new JingQiResult<TResult>
+                {
+                    status = "error",
+                    ErroMsg = ex.Message,
+                };
+            }
+        }
+
+
+    }
+
+    public class JingQiResult<TResult>
+    {
+        public string status { get; set; }
+        public string ErroMsg { get; set; }
+        public TResult data { get; set; }
+    }
+
+    #region 体检登记
+
+    public class JingQiExamRegisterRequest
+    {
+        /// <summary>
+        /// 身份证号
+        /// </summary>
+        /// <value></value>
+        public string identity { get; set; }
+        /// <summary>
+        /// 机构编码
+        /// </summary>
+        /// <value></value>
+        public string orgcode { get; set; }
+        /// <summary>
+        /// 操作人晶奇工号
+        /// </summary>
+        /// <value></value>
+        public string usrcode { get; set; }
+        /// <summary>
+        /// 登记日期 2024-05-31 08:15:23
+        /// </summary>
+        /// <value></value>
+        public string phydatetime { get; set; }
+    }
+
+    public class JingQiExamRegisterResult
+    {
+        /// <summary>
+        /// 体检编号
+        /// </summary>
+        /// <value></value>
+        public string phyid { get; set; }
+        /// <summary>
+        /// 居民姓名
+        /// </summary>
+        /// <value></value>
+        public string PATNAME { get; set; }
+        /// <summary>
+        /// 居民性别,男
+        /// </summary>
+        /// <value></value>
+        public string GRENDER { get; set; }
+        /// <summary>
+        /// 居民年龄
+        /// </summary>
+        /// <value></value>
+        public string PATAGE { get; set; }
+        /// <summary>
+        /// 联系电话
+        /// </summary>
+        /// <value></value>
+        public string PHONE { get; set; }
+        /// <summary>
+        /// 所属社区
+        /// </summary>
+        /// <value></value>
+        public string ORGNAME { get; set; }
+        /// <summary>
+        /// 居住地址
+        /// </summary>
+        /// <value></value>
+        public string adress { get; set; }
+        /// <summary>
+        /// 人群分类 老年人,高血压
+        /// </summary>
+        /// <value></value>
+        public string lisclu { get; set; }
+        /// <summary>
+        /// 登记日期 2024-05-30 10:48:29
+        /// </summary>
+        /// <value></value>
+        public string PHYDATE { get; set; }
+        /// <summary>
+        /// 个人档案ID
+        /// </summary>
+        /// <value></value>
+        public string PatientID { get; set; }
+        /// <summary>
+        /// 个人档案编号
+        /// </summary>
+        /// <value></value>
+        public string NO { get; set; }
+    }
+
+    #endregion
+
+    #region 取消登记
+
+    public class JingQiExamDeleteRequest
+    {
+        public string phyid { get; set; }
+        public string modstatus { get; set; } = "1";
+    }
+
+    public class JingQiExamDeleteResult
+    {
+    }
+
+    #endregion
+}

+ 7 - 0
src/VitalMixtureService/FrontService/Service/BaseService.cs

@@ -17,6 +17,7 @@ using VitalService.Controllers;
 using System.Threading;
 using WingInterfaceLibrary.Interface.DBInterface;
 using WingInterfaceLibrary.Enum;
+using VitalService.Factury;
 
 namespace VitalService.Service
 {
@@ -76,6 +77,7 @@ namespace VitalService.Service
         private IVitalFacturyUserDBService _vitalFacturyUserDBService;
         private PigeonUpload _pigeonUpload;
         private List<string> _appsettingCrowdLabels = new List<string>();
+        private JingQiApiHelper _jingQiApiHelper;
         /// <summary>
         /// Init service
         /// </summary>
@@ -132,6 +134,11 @@ namespace VitalService.Service
             AnalyzeStrategy.StorageHandler = UploadData;
             StartApi();
             LoadResourceInfos();
+            var jingQiServerUrl = EnvironmentConfigManager.GetParammeter<StringParameter>("Vital", "JingQiServerUrl").Value;
+            if (!string.IsNullOrWhiteSpace(jingQiServerUrl))
+            {
+                _jingQiApiHelper = new JingQiApiHelper(jingQiServerUrl);
+            }
         }
 
         /// <summary>

+ 64 - 2
src/VitalMixtureService/FrontService/Service/FacturyUserService.cs

@@ -1,11 +1,9 @@
 using WingServerCommon.Service;
-using WingServerCommon.Mapper;
 using WingInterfaceLibrary.Interface.VitalInterface;
 using WingInterfaceLibrary.Request.Vital;
 using WingInterfaceLibrary.Request.DBVitalRequest;
 using WingInterfaceLibrary.DTO.Vital;
 using WingInterfaceLibrary.Request;
-using WingInterfaceLibrary.Enum.VitalEnum;
 using WingInterfaceLibrary.Enum;
 
 namespace VitalService.Service
@@ -130,5 +128,69 @@ namespace VitalService.Service
             };
             return await _vitalFacturyUserDBService.RemoveFacturyUserDBAsync(dbRequest);
         }
+
+        /// <summary>
+        /// 晶奇系统登记注册
+        /// </summary>
+        /// <param name="request">数据编码</param>
+        /// <returns></returns>
+        public async Task<FacturyExamRegisterResult> FacturyExamRegisterAsync(FacturyExamRegisterRequest request)
+        {
+            var userCode = string.Empty;
+            var userInfo = await _userDBService.GetUserDetailAsync(new GetUserDBRequest
+            {
+                Code = userCode,
+            });
+            if (userInfo == null || string.IsNullOrWhiteSpace(userInfo.FacturyUserCode) || _jingQiApiHelper == null)
+            {
+                // 不推送晶奇系统
+                ThrowRpcException((int)CustomerRpcCode.JingQiNotRequired, "JingQiNotRequired", "");
+            }
+            else
+            {
+                var facturyUser = await _vitalFacturyUserDBService.GetFacturyUserDBAsync(new GetFacturyUserDBRequest
+                {
+                    Code = userInfo.FacturyUserCode,
+                });
+                var facturyOrg = await _vitalFacturyUserDBService.GetFacturyUserDBAsync(new GetFacturyUserDBRequest
+                {
+                    Code = facturyUser.FatherCode,
+                });
+                if (facturyUser == null || string.IsNullOrWhiteSpace(facturyUser.FacturyCode)
+                    || facturyOrg == null || string.IsNullOrWhiteSpace(facturyOrg.FacturyCode))
+                {
+                    // 不推送晶奇系统
+                    ThrowRpcException((int)CustomerRpcCode.JingQiNotRequired, "JingQiNotRequired", "");
+                }
+                else
+                {
+                    var jingQiRes = await _jingQiApiHelper.ExamRegisterAsync(new Factury.JingQiExamRegisterRequest
+                    {
+                        identity = request.Identity,
+                        orgcode = facturyOrg.FacturyCode,
+                        usrcode = facturyUser.FacturyCode,
+                        phydatetime = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"),
+                    }, facturyOrg.FacturyData);
+                    return new FacturyExamRegisterResult
+                    {
+                        Status = jingQiRes.status,
+                        ErroMsg = jingQiRes.ErroMsg,
+                        PhyId = jingQiRes.data?.phyid,
+                        PatName = jingQiRes.data?.PATNAME,
+                        Gender = jingQiRes.data?.GRENDER,
+                        PatAge = jingQiRes.data?.PATAGE,
+                        Phone = jingQiRes.data?.PHONE,
+                        OrgName = jingQiRes.data?.ORGNAME,
+                        Address = jingQiRes.data?.adress,
+                        LisClu = jingQiRes.data?.lisclu,
+                        PhyDate = jingQiRes.data?.PHYDATE,
+                        PatientID = jingQiRes.data?.PatientID,
+                        No = jingQiRes.data?.NO,
+                    };
+                }
+
+            }
+            return null;
+        }
     }
 }

+ 2 - 1
src/appsettings.json

@@ -215,7 +215,8 @@
     "CommitInvervalSeconds": 60,
     "DoctorStatisticsSetting":"230382",
     "DoctorStatisticsSeconds" : 600,
-    "IsNeedImageReport": true
+    "IsNeedImageReport": true,
+    "JingQiServerUrl": ""
   },
   "HealthExamBooking":{
     "GroupExamWebUrl": "http://127.0.0.1:8408/#/groupExam?code={0}",