OrganizePatientRegistrationInfo.cs 11 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225
  1. using Newtonsoft.Json;
  2. using Newtonsoft.Json.Linq;
  3. using PTMedicalInsurance.Helper;
  4. using PTMedicalInsurance.Variables;
  5. using System;
  6. using System.Collections.Generic;
  7. using System.Data;
  8. using System.Linq;
  9. using System.Text;
  10. using System.Threading.Tasks;
  11. namespace PTMedicalInsurance.Business.Core.SelfServiceMachine.Process.OutPat
  12. {
  13. class OrganizePatientRegistrationInfo : AbstractProcess
  14. {
  15. public override CallResult Process(JObject input)
  16. {
  17. //调用服务获取门诊诊断信息
  18. string diagnoses;
  19. if (hIS.getPatDiagnoses(Global.pat, out diagnoses) != 0)
  20. {
  21. outParam = JsonHelper.setExceptionJson(-1, "getPatDiagnoses", diagnoses).ToString();
  22. return Exception(-1,"",outParam);
  23. }
  24. JObject joHisRtnInfo = JObject.Parse(diagnoses);
  25. //组织入参
  26. JObject joReg = new JObject();
  27. try
  28. {
  29. JArray jaDiagnoses = JArray.Parse(JsonHelper.getDestValue(joHisRtnInfo, "diseinfo"));
  30. //结算方式
  31. string psn_setlway = "01";//按项目结算
  32. //转换下主要诊断
  33. for (int i = 0; i < jaDiagnoses.Count; i++)
  34. {
  35. string diag_type = JsonHelper.getDestValue((JObject)jaDiagnoses[i], "diag_type");
  36. switch (diag_type)
  37. {
  38. case "1":
  39. {
  40. jaDiagnoses[i]["diag_type_name"] = new JObject();
  41. jaDiagnoses[i]["diag_type_name"] = "西医主要诊断";
  42. break;
  43. }
  44. case "2":
  45. {
  46. jaDiagnoses[i]["diag_type_name"] = new JObject();
  47. jaDiagnoses[i]["diag_type_name"] = "西医其他诊断";
  48. break;
  49. }
  50. case "3":
  51. {
  52. jaDiagnoses[i]["diag_type_name"] = new JObject();
  53. jaDiagnoses[i]["diag_type_name"] = "中医主病诊断";
  54. break;
  55. }
  56. case "4":
  57. {
  58. jaDiagnoses[i]["diag_type_name"] = new JObject();
  59. jaDiagnoses[i]["diag_type_name"] = "中医主证诊断";
  60. break;
  61. }
  62. }
  63. }
  64. string diseCodg = "";
  65. string diseName = "";
  66. ////如果是慢性病患者,查询慢病信息
  67. //if (Global.pat.medType == "14")
  68. //{
  69. // string chronicDieseaseInfo = "";
  70. // if (hBus.QueryOPChronicDisease(out chronicDieseaseInfo) != 0)
  71. // {
  72. // outParam = "检测到患者为慢病患者,但查询中心的慢病信息出错!";
  73. // return Exception();
  74. // }
  75. // DataTable dtChronicDiesease = JsonConvert.DeserializeObject<DataTable>(chronicDieseaseInfo);
  76. // Global.writeLog("dtChronicDiesease:" + dtChronicDiesease.Rows.Count.ToString()); ;
  77. // // 获取当前日期
  78. // DateTime today = DateTime.Today;
  79. // var filteredRows = dtChronicDiesease.AsEnumerable()
  80. // .Where(row =>
  81. // {
  82. // var endDateStr = row.Field<string>("enddate");
  83. // if (string.IsNullOrEmpty(endDateStr)) return false;
  84. // if (DateTime.TryParse(endDateStr, out DateTime endDate))
  85. // {
  86. // return endDate >= DateTime.Today;
  87. // }
  88. // return false;
  89. // });
  90. // // 构建新的 DataTable
  91. // DataTable filteredTable = filteredRows.Any()
  92. // ? filteredRows.CopyToDataTable()
  93. // : dtChronicDiesease.Clone(); // 空数据时返回结构一致的空表
  94. // Global.writeLog(filteredTable.Rows.Count.ToString());
  95. // if (filteredTable.Rows.Count == 0)
  96. // {
  97. // outParam = "该患者为慢病处方!但在中心未查询到慢病信息!请至人工窗口处理!";
  98. // return Exception();
  99. // }
  100. // else if (filteredTable.Rows.Count > 1)
  101. // {
  102. // outParam = "该患者为慢病处方!但在中心未查询到多条慢病信息!请至人工窗口处理!";
  103. // return Exception();
  104. // }
  105. // else
  106. // {
  107. // diseCodg = filteredTable.Rows[0]["opsp_dise_code"].ToString();
  108. // diseName = filteredTable.Rows[0]["opsp_dise_name"].ToString();
  109. // }
  110. //}
  111. #region 组织挂号入参
  112. JObject joRegInpar = new JObject();
  113. string occurTime = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss");
  114. joRegInpar.Add("psn_no", Global.pat.psn_no);
  115. joRegInpar.Add("insutype", Global.pat.insuType);
  116. joRegInpar.Add("begntime", JsonHelper.getDestValue(joHisRtnInfo, "mdtrtinfo.begntime"));//挂号时间 occurTime
  117. joRegInpar.Add("mdtrt_cert_type", Global.pat.mdtrtcertType);
  118. joRegInpar.Add("mdtrt_cert_no", Global.pat.mdtrtcertNO);
  119. joRegInpar.Add("ipt_otp_no", Global.pat.adm_Dr.ToString());
  120. joRegInpar.Add("atddr_no", JsonHelper.getDestValue(joHisRtnInfo, "mdtrtinfo.atddr_no"));
  121. joRegInpar.Add("dr_name", JsonHelper.getDestValue(joHisRtnInfo, "mdtrtinfo.chfpdr_name"));
  122. joRegInpar.Add("dept_code", JsonHelper.getDestValue(joHisRtnInfo, "mdtrtinfo.adm_dept_codg"));
  123. joRegInpar.Add("dept_name", JsonHelper.getDestValue(joHisRtnInfo, "mdtrtinfo.adm_dept_name"));
  124. joRegInpar.Add("exp_content", "");
  125. joRegInpar.Add("caty", "A10");
  126. #endregion
  127. #region 组织就诊信息入参
  128. JObject joMdtrtinfo = new JObject();
  129. for (int i = 0; i < jaDiagnoses.Count; i++)
  130. {
  131. jaDiagnoses[i]["vali_flag"] = new JObject();
  132. jaDiagnoses[i]["vali_flag"] = "1";
  133. }
  134. joMdtrtinfo.Add("mdtrt_id", Global.pat.mdtrtID);
  135. joMdtrtinfo.Add("psn_no", Global.pat.psn_no); //人员编号
  136. joMdtrtinfo.Add("med_type", Global.pat.medType); //医疗类别
  137. joMdtrtinfo.Add("begntime", JsonHelper.getDestValue(joHisRtnInfo, "mdtrtinfo.begntime")); //开始时间
  138. joMdtrtinfo.Add("main_cond_dscr", JsonHelper.getDestValue(joHisRtnInfo, "mdtrtinfo.main_cond_dscr")); //主要病情描述
  139. joMdtrtinfo.Add("dise_codg", diseCodg); //病种编码
  140. joMdtrtinfo.Add("dise_name", diseName); //病种名称
  141. joMdtrtinfo.Add("birctrl_type", JsonHelper.getDestValue(joHisRtnInfo, "mdtrtinfo.birctrl_type")); //计划生育手术类别
  142. //joMdtrtinfo.Add("birctrl_matn_date", ""); //计划生育手术或生育日期 JsonHelper.getDestValue(joHisRtnInfo, "mdtrtinfo.birctrl_matn_date") 20230228医保中心校验传正确时间或空
  143. joMdtrtinfo.Add("matn_type", JsonHelper.getDestValue(joHisRtnInfo, "mdtrtinfo.matn_type")); //生育类别
  144. joMdtrtinfo.Add("expContent", ""); //字段扩展
  145. // 特殊2203A需要exp_content字段
  146. JObject ExportObj = new JObject();
  147. ExportObj.Add("dise_reim_mon", "");
  148. ExportObj.Add("deve_flag", "");
  149. ExportObj.Add("otp_reim_flag", "");
  150. ExportObj.Add("local_dise", ""); //单病种编码
  151. ExportObj.Add("ifen_flag", ""); //传染性标志
  152. //ExportObj.Add("cla_trt_flag", frmReg.claTrtFlag); //分级诊疗标志
  153. ExportObj.Add("trum_flag", "0"); //外伤标志
  154. //ExportObj.Add("ipt_type", frmReg.iptTypeCode); //住院类型(离院)
  155. ExportObj.Add("rel_ttp_flag","0"); //涉及第三方标志
  156. ExportObj.Add("mdtrt_grp_type", ""); //就诊人群类型
  157. ExportObj.Add("elec_bill_code", ""); //电子票据代码
  158. ExportObj.Add("elec billno_code", ""); //电子票据号码
  159. ExportObj.Add("otp_er_refl_flag", ""); //门诊转急诊
  160. joMdtrtinfo.Add("exp_content", ExportObj); //字段扩展
  161. #endregion
  162. #region 组织结算入参
  163. JObject joSetlInpar = new JObject();
  164. joSetlInpar.Add("psn_no", Global.pat.psn_no);
  165. joSetlInpar.Add("mdtrt_cert_type", Global.pat.mdtrtcertType);
  166. joSetlInpar.Add("mdtrt_cert_no", Global.pat.mdtrtcertNO);
  167. joSetlInpar.Add("med_type", Global.pat.medType);
  168. joSetlInpar.Add("medfee_sumamt", "");
  169. joSetlInpar.Add("psn_setlway", psn_setlway); //结算方式
  170. joSetlInpar.Add("mdtrt_id", Global.pat.mdtrtID);
  171. joSetlInpar.Add("chrg_bchno", Global.pat.adm_Dr.ToString());
  172. joSetlInpar.Add("acct_used_flag", "1");//个人账户使用标志
  173. joSetlInpar.Add("insutype", Global.pat.insuType);//险种类型
  174. joSetlInpar.Add("pub_hosp_rfom_flag", "");
  175. joSetlInpar.Add("exp_content", "");
  176. joSetlInpar.Add("mdtrt_mode", "0");
  177. joSetlInpar.Add("minpacunt_drug_trac_cnt", Global.Set.minpacunt_drug_trac_cnt);
  178. joSetlInpar.Add("mcs_trac_cnt", Global.Set.mcs_trac_cnt);
  179. #endregion
  180. joReg.Add("data", joRegInpar);
  181. joReg.Add("mdtrtinfo", joMdtrtinfo);
  182. joReg.Add("diseinfo", jaDiagnoses);
  183. joReg.Add("settlement", joSetlInpar);
  184. joReg.Add("patInfo", input);
  185. outParam = joReg.ToString();
  186. return Success();
  187. }
  188. catch (Exception ex)
  189. {
  190. outParam = "登记界面显示异常:" + ex.Message;
  191. return Exception(-1,"",outParam);
  192. }
  193. }
  194. }
  195. }