Просмотр исходного кода

晶奇数据推送 中医体质、老年人自理能力评估

jeremy 8 месяцев назад
Родитель
Сommit
65f15228fe

+ 3 - 2
src/VitalMixtureService/DBService/Service/FacturyPostHistoryDBService.cs

@@ -105,8 +105,9 @@ namespace VitalService.Service
         public async Task<List<FacturyPostHistoryDTO>> GetNonPostHistoryDBAsync(GetNonPostHistoryDBRequest request)
         {
             var filter = Builders<FacturyPostHistoryEntity>.Filter.Eq(f => f.Status, 1);
-            var result = await _facturyPostHistoryDBRepository.FindAllAsync(filter);
-            return result.MappingTo<List<FacturyPostHistoryDTO>>();
+            var entities = await _facturyPostHistoryDBRepository.FindAllAsync(filter);
+            entities = entities.OrderBy(x => x.CreateTime).ToList();
+            return entities.MappingTo<List<FacturyPostHistoryDTO>>();
         }
 
         /// <summary>

+ 286 - 3
src/VitalMixtureService/Factury/JingQiApiHelper.cs

@@ -1,17 +1,23 @@
+using System.Collections.Concurrent;
 using Newtonsoft.Json;
+using WingInterfaceLibrary.DTO.Vital;
 using WingServerCommon.Log;
 
 namespace VitalService.Factury
 {
     public class JingQiApiHelper : BaseApiHelper
     {
+        private ConcurrentDictionary<string, FacturyOrgModel> _facturyOrgInfos = new ConcurrentDictionary<string, FacturyOrgModel>();
+
+        private Func<string, FacturyOrgModel> OnGetFacturyOrgInfo;
+
         private string _serverUrl;
 
         public string RegisterUrl
         {
             get
             {
-                return $"{_serverUrl}/phyreginf";
+                return $"{_serverUrl}/api/phyreginf";
             }
         }
 
@@ -19,16 +25,30 @@ namespace VitalService.Factury
         {
             get
             {
-                return $"{_serverUrl}/phyregmod";
+                return $"{_serverUrl}/api/phyregmod";
             }
         }
 
-        public JingQiApiHelper(string serverUrl, double seconds = 60) : base(seconds)
+        public JingQiApiHelper(string serverUrl, Func<string, FacturyOrgModel> funGetFacturyOrgInfo, double seconds = 60) : base(seconds)
         {
             _serverUrl = serverUrl?.Trim('/') ?? string.Empty;
+            OnGetFacturyOrgInfo = funGetFacturyOrgInfo;
             Logger.WriteLineInfo($"VitalMixtureService JingQiApiHelper init, serverUrl:{_serverUrl}, seconds:{seconds}");
         }
 
+        public FacturyOrgModel GetFacturyInfo(string token)
+        {
+            if (!_facturyOrgInfos.TryGetValue(token, out FacturyOrgModel facturyInfo))
+            {
+                facturyInfo = OnGetFacturyOrgInfo.Invoke(token);
+                if (facturyInfo != null)
+                {
+                    _facturyOrgInfos.TryAdd(token, facturyInfo);
+                }
+            }
+            return facturyInfo;
+        }
+
         /// <summary>
         /// 体检登记
         /// </summary>
@@ -53,6 +73,252 @@ namespace VitalService.Factury
             return await GetJingQiResult<JingQiExamDeleteResult>(DeleteRegisterUrl, JsonConvert.SerializeObject(request), headers, idCardNo);
         }
 
+        /// <summary>
+        /// 转换中医体质结果
+        /// </summary>
+        /// <param name="examInfo"></param>
+        /// <param name="registerInfo"></param>
+        /// <param name="url"></param>
+        /// <returns></returns>
+        public string GetZYPostContentAsync(RegisterPersonInfoDTO registerInfo, FacturyOrgModel facturyInfo, Dictionary<string, string> examData, DateTime examTime, out string url)
+        {
+            url = $"{_serverUrl}/api/phychn";
+
+            var jingQiInfos = registerInfo.JingQiExamInfos;
+            var pyhId = GetValue(jingQiInfos, "pyhid");
+
+            var dic = new Dictionary<string, string>();
+            dic.Add("pyhid", pyhId);
+            dic.Add("personId", GetValue(jingQiInfos, "PatientID"));
+            dic.Add("identificationAge", GetInt(jingQiInfos, "PATAGE").ToString());
+            dic.Add("q1Jlcp", GetValue(examData, "qusition1"));
+            dic.Add("q2Rypb", GetValue(examData, "qusition2"));
+            dic.Add("q3Ryjd", GetValue(examData, "qusition3"));
+            dic.Add("q4Sywl", GetValue(examData, "qusition4"));
+            dic.Add("q5Qxdc", GetValue(examData, "qusition5"));
+            dic.Add("q6Jlba", GetValue(examData, "qusition6"));
+            dic.Add("q7Gdsl", GetValue(examData, "qusition7"));
+            dic.Add("q8Hpsj", GetValue(examData, "qusition8"));
+            dic.Add("q9Bmi", GetValue(examData, "qusition9"));
+            dic.Add("q10Yjgs", GetValue(examData, "qusition10"));
+            dic.Add("q11Sjfl", GetValue(examData, "qusition11"));
+            dic.Add("q12Stpl", GetValue(examData, "qusition12"));
+            dic.Add("q13Nshl", GetValue(examData, "qusition13"));
+            dic.Add("q14Rygm", GetValue(examData, "qusition14"));
+            dic.Add("q15Gmlt", GetValue(examData, "qusition15"));
+            dic.Add("q16Kndh", GetValue(examData, "qusition16"));
+            dic.Add("q17Rygm", GetValue(examData, "qusition17"));
+            dic.Add("q18Ryxmz", GetValue(examData, "qusition18"));
+            dic.Add("q19Qzyb", GetValue(examData, "qusition19"));
+            dic.Add("q20Rczh", GetValue(examData, "qusition20"));
+            dic.Add("q21Fcgz", GetValue(examData, "qusition21"));
+            dic.Add("q22Ztmm", GetValue(examData, "qusition22"));
+            dic.Add("q23Mbyn", GetValue(examData, "qusition23"));
+            dic.Add("q24Mkha", GetValue(examData, "qusition24"));
+            dic.Add("q25Pfsz", GetValue(examData, "qusition25"));
+            dic.Add("q26Kgyz", GetValue(examData, "qusition26"));
+            dic.Add("q27Kqyw", GetValue(examData, "qusition27"));
+            dic.Add("q28Fbfd", GetValue(examData, "qusition28"));
+            dic.Add("q29Ylbs", GetValue(examData, "qusition29"));
+            dic.Add("q30Dbnz", GetValue(examData, "qusition30"));
+            dic.Add("q31Dbgz", GetValue(examData, "qusition31"));
+            dic.Add("q32Sthn", GetValue(examData, "qusition32"));
+            dic.Add("q33Sxjmyz", GetValue(examData, "qusition33"));
+
+            var physicalConclusion = GetValue(examData, "PhysicalConclusion");
+            var healthGuidance = GetHealthGuidance(GetValue(examData, "HealthGuidance"));
+            // 气虚质
+            var qiScoreValue = GetValue(examData, "Qi_Score");
+            if (!string.IsNullOrWhiteSpace(qiScoreValue))
+            {
+                var score = JsonConvert.DeserializeObject<ZYTZModel>(qiScoreValue);
+                dic.Add("qxzSf", GetZYTZValue(score.Result).ToString());
+                dic.Add("qxzDf", score.Value.ToString());
+                if (physicalConclusion == "Qi_Score")
+                {
+                    dic.Add("qxzZd", healthGuidance);
+                }
+            }
+            // 阳虚质
+            var yangScoreValue = GetValue(examData, "Yang_Score");
+            if (!string.IsNullOrWhiteSpace(yangScoreValue))
+            {
+                var score = JsonConvert.DeserializeObject<ZYTZModel>(yangScoreValue);
+                dic.Add("yaxzSf", GetZYTZValue(score.Result).ToString());
+                dic.Add("yaxzDf", score.Value.ToString());
+                if (physicalConclusion == "Yang_Score")
+                {
+                    dic.Add("yaxzZd", healthGuidance);
+                }
+            }
+            // 阴虚质
+            var yinScoreValue = GetValue(examData, "Yin_Score");
+            if (!string.IsNullOrWhiteSpace(yinScoreValue))
+            {
+                var score = JsonConvert.DeserializeObject<ZYTZModel>(yinScoreValue);
+                dic.Add("yixzSf", GetZYTZValue(score.Result).ToString());
+                dic.Add("yixzDf", score.Value.ToString());
+                if (physicalConclusion == "Yin_Score")
+                {
+                    dic.Add("yixzZd", healthGuidance);
+                }
+            }
+            // 痰湿质
+            var tanScoreValue = GetValue(examData, "Tan_Score");
+            if (!string.IsNullOrWhiteSpace(tanScoreValue))
+            {
+                var score = JsonConvert.DeserializeObject<ZYTZModel>(tanScoreValue);
+                dic.Add("tszSf", GetZYTZValue(score.Result).ToString());
+                dic.Add("tszDf", score.Value.ToString());
+                if (physicalConclusion == "Tan_Score")
+                {
+                    dic.Add("tszZd", healthGuidance);
+                }
+            }
+            // 湿热质
+            var shiScoreValue = GetValue(examData, "Shi_Score");
+            if (!string.IsNullOrWhiteSpace(shiScoreValue))
+            {
+                var score = JsonConvert.DeserializeObject<ZYTZModel>(shiScoreValue);
+                dic.Add("srzSf", GetZYTZValue(score.Result).ToString());
+                dic.Add("srzDf", score.Value.ToString());
+                if (physicalConclusion == "Shi_Score")
+                {
+                    dic.Add("srzZd", healthGuidance);
+                }
+            }
+            // 血瘀质
+            var xueScoreValue = GetValue(examData, "Xue_Score");
+            if (!string.IsNullOrWhiteSpace(xueScoreValue))
+            {
+                var score = JsonConvert.DeserializeObject<ZYTZModel>(xueScoreValue);
+                dic.Add("xyzSf", GetZYTZValue(score.Result).ToString());
+                dic.Add("xyzDf", score.Value.ToString());
+                if (physicalConclusion == "Xue_Score")
+                {
+                    dic.Add("xyzZd", healthGuidance);
+                }
+            }
+            // 气郁质
+            var qiYuScoreValue = GetValue(examData, "Qiyu_Score");
+            if (!string.IsNullOrWhiteSpace(qiYuScoreValue))
+            {
+                var score = JsonConvert.DeserializeObject<ZYTZModel>(qiYuScoreValue);
+                dic.Add("qyzSf", GetZYTZValue(score.Result).ToString());
+                dic.Add("qyzDf", score.Value.ToString());
+                if (physicalConclusion == "Qiyu_Score")
+                {
+                    dic.Add("qyzZd", healthGuidance);
+                }
+            }
+            // 特禀质
+            var teScoreValue = GetValue(examData, "Te_Score");
+            if (!string.IsNullOrWhiteSpace(teScoreValue))
+            {
+                var score = JsonConvert.DeserializeObject<ZYTZModel>(teScoreValue);
+                dic.Add("tbzSf", GetZYTZValue(score.Result).ToString());
+                dic.Add("tbzDf", score.Value.ToString());
+                if (physicalConclusion == "Te_Score")
+                {
+                    dic.Add("tbzZd", healthGuidance);
+                }
+            }
+            // 平和质
+            var pingScoreValue = GetValue(examData, "Ping_Score");
+            if (!string.IsNullOrWhiteSpace(pingScoreValue))
+            {
+                var score = JsonConvert.DeserializeObject<ZYTZModel>(pingScoreValue);
+                dic.Add("phzSf", GetZYTZValue(score.Result).ToString());
+                dic.Add("phzDf", score.Value.ToString());
+                if (physicalConclusion == "Ping_Score")
+                {
+                    dic.Add("phzZd", healthGuidance);
+                }
+            }
+            dic.Add("cpjg", GetPhysicalConclusion(physicalConclusion));// 测评结果
+            dic.Add("entryCode", facturyInfo.FacturyUserCode);
+            dic.Add("entryName", facturyInfo.FacturyUserName);
+            dic.Add("entryTime", examTime.ToLocalTime().ToString("yyyy-MM-dd"));
+            dic.Add("createCode", facturyInfo.FacturyUserCode);
+            dic.Add("createName", facturyInfo.FacturyUserName);
+            dic.Add("createTime", examTime.ToLocalTime().ToString("yyyy-MM-dd"));
+            dic.Add("updateCode", facturyInfo.FacturyUserCode);
+            dic.Add("updateName", facturyInfo.FacturyUserName);
+            dic.Add("updateTime", examTime.ToLocalTime().ToString("yyyy-MM-dd"));
+            dic.Add("updateOrganzationCode", facturyInfo.FacturyOrgCode);
+            dic.Add("updateOrganzationName", facturyInfo.FacturyOrgName);
+            return JsonConvert.SerializeObject(dic);
+        }
+
+        private string GetValue(Dictionary<string, string> dic, string key)
+        {
+            foreach (var k in dic.Keys)
+            {
+                if (k.ToLower() == key.ToLower())
+                {
+                    var value = dic[k];
+                    return string.IsNullOrWhiteSpace(value) ? "" : value;
+                }
+            }
+            return "";
+        }
+
+        private int GetInt(Dictionary<string, string> dic, string key)
+        {
+            var val = GetValue(dic, key);
+            if (int.TryParse(val, out int res))
+            {
+                return res;
+            }
+            return 0;
+        }
+
+        private int GetZYTZValue(string result)
+        {
+            return result == "是" ? 1 : result == "倾向是" ? 3 : 0;
+        }
+
+        private string GetHealthGuidance(string result)
+        {
+            try
+            {
+                var guidanceInfos = JsonConvert.DeserializeObject<List<string>>(result);
+                return string.Join(";", guidanceInfos);
+            }
+            catch (Exception ex)
+            {
+
+            }
+            return string.Empty;
+        }
+
+        private string GetPhysicalConclusion(string physicalConclusion)
+        {
+            switch (physicalConclusion)
+            {
+                case "Qi_Score":
+                    return "02";
+                case "Yang_Score":
+                    return "03";
+                case "Yin_Score":
+                    return "04";
+                case "Tan_Score":
+                    return "05";
+                case "Shi_Score":
+                    return "06";
+                case "Xue_Score":
+                    return "07";
+                case "Qiyu_Score":
+                    return "082";
+                case "Te_Score":
+                    return "09";
+                case "Ping_Score":
+                    return "01";
+                default:
+                    return "";
+            }
+        }
+
         private async Task<JingQiResult<TResult>> GetJingQiResult<TResult>(string url, string request, Dictionary<string, string> headers, string idCardNo)
         {
             try
@@ -92,6 +358,23 @@ namespace VitalService.Factury
 
     }
 
+    public class FacturyOrgModel
+    {
+        public string Token { get; set; }
+        public string UserCode { get; set; }
+        public string FacturyOrgCode { get; set; }
+        public string FacturyUserCode { get; set; }
+        public string FacturyOrgName { get; set; }
+        public string FacturyUserName { get; set; }
+        public Dictionary<string, string> FacturyData { get; set; }
+    }
+
+    public class ZYTZModel
+    {
+        public int Value { get; set; }
+        public string Result { get; set; }
+    }
+
     public class JingQiResult<TResult>
     {
         public string status { get; set; }

+ 1 - 1
src/VitalMixtureService/FrontService/Service/BaseService.cs

@@ -154,7 +154,7 @@ namespace VitalService.Service
                 var jingQiServerUrl = EnvironmentConfigManager.GetParammeter<StringParameter>("Vital", "JingQiServerUrl").Value;
                 if (!string.IsNullOrWhiteSpace(jingQiServerUrl))
                 {
-                    _jingQiApiHelper = new JingQiApiHelper(jingQiServerUrl);
+                    _jingQiApiHelper = new JingQiApiHelper(jingQiServerUrl, OnGetFacturyOrgInfo);
                 }
                 _facturyManage = new FacturyManage(OnUpdateHistoryStatus, OnGetNonPostHistory);
             }

+ 54 - 0
src/VitalMixtureService/FrontService/Service/FacturyPostHistoryService.cs

@@ -5,6 +5,7 @@ using WingInterfaceLibrary.Request.DBVitalRequest;
 using WingInterfaceLibrary.DTO.Vital;
 using WingInterfaceLibrary.Request;
 using WingServerCommon.Log;
+using WingInterfaceLibrary.Enum;
 
 namespace VitalService.Service
 {
@@ -109,6 +110,59 @@ namespace VitalService.Service
             return false;
         }
 
+        /// <summary>
+        /// 晶奇数据推送 中医体质、老年人自理能力评估
+        /// </summary>
+        /// <returns></returns>
+        public async Task<bool> CreateJingQiExamPostHistoryAsync(CreateJingQiExamPostHistoryRequest request)
+        {
+            var token = request.Token;
+            var physicalExamNumber = request.PhysicalExamNumber;
+            var examKey = request.ExamKey;
+            var examData = request.ExamData;
+            var examTime = request.ExamTime;
+
+            if (_jingQiApiHelper != null)
+            {
+                var facturyInfo = _jingQiApiHelper.GetFacturyInfo(token);
+                if (facturyInfo != null)
+                {
+                    if (!string.IsNullOrWhiteSpace(physicalExamNumber) && examData != null && examData.Any())
+                    {
+                        var registerInfo = await _registerInfoDBService.GetRegisterPersonInfoByPhysicalExamNumberDBAsync(new GetRegisterPersonRequest
+                        {
+                            PhysicalExamNumber = physicalExamNumber,
+                        });
+                        if (registerInfo.JingQiExamInfos != null && registerInfo.JingQiExamInfos.Any())
+                        {
+                            var xyUrl = string.Empty;
+                            var rpcContent = string.Empty;
+                            if (examKey == "HEITCMC")
+                            {
+                                rpcContent = _jingQiApiHelper.GetZYPostContentAsync(registerInfo, facturyInfo, examData, examTime, out xyUrl);
+                            }
+                            if (!string.IsNullOrWhiteSpace(rpcContent))
+                            {
+                                await _vitalFacturyPostHistoryDBService.CreateFacturyPostHistoryDBAsync(new CreateFacturyPostHistoryDBRequest
+                                {
+                                    // FacturyUniqueCode = request.FacturyUniqueCode,
+                                    ApiType = examKey,
+                                    FacturyUrl = xyUrl,
+                                    IDCardNo = registerInfo.IDCardNo,
+                                    PatientName = registerInfo.Name,
+                                    Status = 1,
+                                    Headers = facturyInfo.FacturyData,
+                                    Content = rpcContent,
+                                    Result = string.Empty,
+                                });
+                            }
+                        }
+                    }
+                }
+            }
+            return true;
+        }
+
         private void OnUpdateHistoryStatus(string code, bool success, DateTime postTime, string rpcResult)
         {
             try

+ 96 - 100
src/VitalMixtureService/FrontService/Service/FacturyUserService.cs

@@ -6,6 +6,7 @@ using WingInterfaceLibrary.DTO.Vital;
 using WingInterfaceLibrary.Request;
 using WingInterfaceLibrary.Enum;
 using Newtonsoft.Json;
+using VitalService.Factury;
 
 namespace VitalService.Service
 {
@@ -137,74 +138,53 @@ namespace VitalService.Service
         /// <returns></returns>
         public async Task<FacturyExamRegisterResult> FacturyExamRegisterAsync(FacturyExamRegisterRequest request)
         {
-            var userCode = await GetClientIdByTokenAsync(request.Token);
-            var userInfo = await _userDBService.GetUserDetailAsync(new GetUserDBRequest
-            {
-                Code = userCode,
-            });
-            if (userInfo == null || string.IsNullOrWhiteSpace(userInfo.FacturyUserCode) || _jingQiApiHelper == null)
+            if (_jingQiApiHelper == null)
             {
                 // 不推送晶奇系统
                 ThrowRpcException((int)CustomerRpcCode.JingQiNotRequired, "JingQiNotRequired", "");
             }
-            else
+            var facturyInfo = _jingQiApiHelper.GetFacturyInfo(request.Token);
+            if (facturyInfo == null)
             {
-                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 jingQiReq = new Factury.JingQiExamRegisterRequest
-                    {
-                        identity = request.Identity,
-                        orgcode = facturyOrg.FacturyCode,
-                        usrcode = facturyUser.FacturyCode,
-                        phydatetime = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"),
-                    };
-                    var jingQiRes = await _jingQiApiHelper.ExamRegisterAsync(jingQiReq, facturyOrg.FacturyData, request.Identity);
-                    await _vitalFacturyPostHistoryDBService.CreateFacturyPostHistoryDBAsync(new CreateFacturyPostHistoryDBRequest
-                    {
-                        ApiType = "ExamRegisterAsync",
-                        FacturyUrl = _jingQiApiHelper.RegisterUrl,
-                        IDCardNo = request.Identity,
-                        PatientName = request.PatientName,
-                        Status = jingQiRes.status == "0" ? 2 : 3,
-                        PostTime = DateTime.UtcNow,
-                        Headers = facturyOrg.FacturyData,
-                        Content = JsonConvert.SerializeObject(jingQiReq),
-                        Result = JsonConvert.SerializeObject(jingQiRes),
-                    });
-                    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,
-                    };
-                }
-
+                // 不推送晶奇系统
+                ThrowRpcException((int)CustomerRpcCode.JingQiNotRequired, "JingQiNotRequired", "");
             }
-            return null;
+            var jingQiReq = new JingQiExamRegisterRequest
+            {
+                identity = request.Identity,
+                orgcode = facturyInfo.FacturyOrgCode,
+                usrcode = facturyInfo.FacturyUserCode,
+                phydatetime = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"),
+            };
+            var jingQiRes = await _jingQiApiHelper.ExamRegisterAsync(jingQiReq, facturyInfo.FacturyData, request.Identity);
+            await _vitalFacturyPostHistoryDBService.CreateFacturyPostHistoryDBAsync(new CreateFacturyPostHistoryDBRequest
+            {
+                ApiType = "ExamRegisterAsync",
+                FacturyUrl = _jingQiApiHelper.RegisterUrl,
+                IDCardNo = request.Identity,
+                PatientName = request.PatientName,
+                Status = jingQiRes.status == "0" ? 2 : 3,
+                PostTime = DateTime.UtcNow,
+                Headers = facturyInfo.FacturyData,
+                Content = JsonConvert.SerializeObject(jingQiReq),
+                Result = JsonConvert.SerializeObject(jingQiRes),
+            });
+            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,
+            };
         }
 
         /// <summary>
@@ -214,60 +194,76 @@ namespace VitalService.Service
         /// <returns></returns>
         public async Task<FacturyExamDeleteResult> FacturyExamDeleteAsync(FacturyExamDeleteRequest request)
         {
-            var userCode = await GetClientIdByTokenAsync(request.Token);
-            var userInfo = await _userDBService.GetUserDetailAsync(new GetUserDBRequest
+            if (_jingQiApiHelper == null)
             {
-                Code = userCode,
-            });
-            if (userInfo == null || string.IsNullOrWhiteSpace(userInfo.FacturyUserCode) || _jingQiApiHelper == null)
+                // 不推送晶奇系统
+                ThrowRpcException((int)CustomerRpcCode.JingQiNotRequired, "JingQiNotRequired", "");
+            }
+            var facturyInfo = _jingQiApiHelper.GetFacturyInfo(request.Token);
+            if (facturyInfo == null)
             {
                 // 不推送晶奇系统
                 ThrowRpcException((int)CustomerRpcCode.JingQiNotRequired, "JingQiNotRequired", "");
             }
-            else
+            var jingQiReq = new JingQiExamDeleteRequest
             {
-                var facturyUser = await _vitalFacturyUserDBService.GetFacturyUserDBAsync(new GetFacturyUserDBRequest
+                phyid = request.PhyId,
+            };
+            var jingQiRes = await _jingQiApiHelper.ExamDeleteAsync(jingQiReq, facturyInfo.FacturyData, request.Identity);
+            await _vitalFacturyPostHistoryDBService.CreateFacturyPostHistoryDBAsync(new CreateFacturyPostHistoryDBRequest
+            {
+                ApiType = "ExamDeleteAsync",
+                FacturyUrl = _jingQiApiHelper.DeleteRegisterUrl,
+                IDCardNo = request.Identity,
+                PatientName = request.PatientName,
+                Status = jingQiRes.status == "0" ? 2 : 3,
+                PostTime = DateTime.UtcNow,
+                Headers = facturyInfo.FacturyData,
+                Content = JsonConvert.SerializeObject(jingQiReq),
+                Result = JsonConvert.SerializeObject(jingQiRes),
+            });
+            return new FacturyExamDeleteResult
+            {
+                Status = jingQiRes.status,
+                ErroMsg = jingQiRes.ErroMsg,
+            };
+        }
+
+        private FacturyOrgModel OnGetFacturyOrgInfo(string token)
+        {
+            var userCode = GetClientIdByTokenAsync(token).Result;
+            var userInfo = _userDBService.GetUserDetailAsync(new GetUserDBRequest
+            {
+                Code = userCode,
+            }).Result;
+            if (userInfo != null && !string.IsNullOrWhiteSpace(userInfo.FacturyUserCode) && _jingQiApiHelper != null)
+            {
+                var facturyUser = _vitalFacturyUserDBService.GetFacturyUserDBAsync(new GetFacturyUserDBRequest
                 {
                     Code = userInfo.FacturyUserCode,
-                });
-                var facturyOrg = await _vitalFacturyUserDBService.GetFacturyUserDBAsync(new GetFacturyUserDBRequest
+                }).Result;
+                var facturyOrg = _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
+                }).Result;
+                if (facturyUser != null && !string.IsNullOrWhiteSpace(facturyUser.FacturyCode)
+                    && facturyOrg != null && !string.IsNullOrWhiteSpace(facturyOrg.FacturyCode))
                 {
-                    var jingQiReq = new Factury.JingQiExamDeleteRequest
+                    return new FacturyOrgModel
                     {
-                        phyid = request.PhyId,
-                    };
-                    var jingQiRes = await _jingQiApiHelper.ExamDeleteAsync(jingQiReq, facturyOrg.FacturyData, request.Identity);
-                    await _vitalFacturyPostHistoryDBService.CreateFacturyPostHistoryDBAsync(new CreateFacturyPostHistoryDBRequest
-                    {
-                        ApiType = "ExamDeleteAsync",
-                        FacturyUrl = _jingQiApiHelper.DeleteRegisterUrl,
-                        IDCardNo = request.Identity,
-                        PatientName = request.PatientName,
-                        Status = jingQiRes.status == "0" ? 2 : 3,
-                        PostTime = DateTime.UtcNow,
-                        Headers = facturyOrg.FacturyData,
-                        Content = JsonConvert.SerializeObject(jingQiReq),
-                        Result = JsonConvert.SerializeObject(jingQiRes),
-                    });
-                    return new FacturyExamDeleteResult
-                    {
-                        Status = jingQiRes.status,
-                        ErroMsg = jingQiRes.ErroMsg,
+                        Token = token,
+                        UserCode = userCode,
+                        FacturyOrgCode = facturyOrg.FacturyCode,
+                        FacturyUserCode = facturyUser.FacturyCode,
+                        FacturyOrgName = facturyOrg.FacturyName,
+                        FacturyUserName = facturyUser.FacturyName,
+                        FacturyData = facturyOrg.FacturyData,
                     };
                 }
-
             }
             return null;
         }
+
+
     }
 }