|
@@ -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; }
|