OrganizePatientRegistrationInfo.cs 8.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168
  1. using Newtonsoft.Json.Linq;
  2. using PTMedicalInsurance.Helper;
  3. using PTMedicalInsurance.Variables;
  4. using System;
  5. using System.Collections.Generic;
  6. using System.Linq;
  7. using System.Text;
  8. using System.Threading.Tasks;
  9. namespace PTMedicalInsurance.Business.Core.SelfServiceMachine.Process.OutPat
  10. {
  11. class OrganizePatientRegistrationInfo : AbstractProcess
  12. {
  13. public override CallResult Process(JObject input)
  14. {
  15. //调用服务获取门诊诊断信息
  16. string diagnoses;
  17. if (hIS.getPatDiagnoses(Global.pat, out diagnoses) != 0)
  18. {
  19. outParam = JsonHelper.setExceptionJson(-1, "getPatDiagnoses", diagnoses).ToString();
  20. return Exception(-1,"",outParam);
  21. }
  22. JObject joHisRtnInfo = JObject.Parse(diagnoses);
  23. //组织入参
  24. JObject joReg = new JObject();
  25. try
  26. {
  27. JArray jaDiagnoses = JArray.Parse(JsonHelper.getDestValue(joHisRtnInfo, "diseinfo"));
  28. //医疗类别
  29. string med_Type = string.IsNullOrEmpty(Global.pat.medType) ? "11" : Global.pat.medType;
  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. #region 组织挂号入参
  67. JObject joRegInpar = new JObject();
  68. string occurTime = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss");
  69. joRegInpar.Add("psn_no", Global.pat.psn_no);
  70. joRegInpar.Add("insutype", Global.pat.insuType);
  71. joRegInpar.Add("begntime", JsonHelper.getDestValue(joHisRtnInfo, "mdtrtinfo.begntime"));//挂号时间 occurTime
  72. joRegInpar.Add("mdtrt_cert_type", Global.pat.mdtrtcertType);
  73. joRegInpar.Add("mdtrt_cert_no", Global.pat.mdtrtcertNO);
  74. joRegInpar.Add("ipt_otp_no", Global.pat.adm_Dr.ToString());
  75. joRegInpar.Add("atddr_no", JsonHelper.getDestValue(joHisRtnInfo, "mdtrtinfo.atddr_no"));
  76. joRegInpar.Add("dr_name", JsonHelper.getDestValue(joHisRtnInfo, "mdtrtinfo.chfpdr_name"));
  77. joRegInpar.Add("dept_code", JsonHelper.getDestValue(joHisRtnInfo, "mdtrtinfo.adm_dept_codg"));
  78. joRegInpar.Add("dept_name", JsonHelper.getDestValue(joHisRtnInfo, "mdtrtinfo.adm_dept_name"));
  79. joRegInpar.Add("exp_content", "");
  80. joRegInpar.Add("caty", "A10");
  81. #endregion
  82. #region 组织就诊信息入参
  83. JObject joMdtrtinfo = new JObject();
  84. for (int i = 0; i < jaDiagnoses.Count; i++)
  85. {
  86. jaDiagnoses[i]["vali_flag"] = new JObject();
  87. jaDiagnoses[i]["vali_flag"] = "1";
  88. }
  89. joMdtrtinfo.Add("mdtrt_id", Global.pat.mdtrtID);
  90. joMdtrtinfo.Add("psn_no", Global.pat.psn_no); //人员编号
  91. joMdtrtinfo.Add("med_type", med_Type); //医疗类别
  92. joMdtrtinfo.Add("begntime", JsonHelper.getDestValue(joHisRtnInfo, "mdtrtinfo.begntime")); //开始时间
  93. joMdtrtinfo.Add("main_cond_dscr", JsonHelper.getDestValue(joHisRtnInfo, "mdtrtinfo.main_cond_dscr")); //主要病情描述
  94. joMdtrtinfo.Add("dise_codg", diseCodg); //病种编码
  95. joMdtrtinfo.Add("dise_name", diseName); //病种名称
  96. joMdtrtinfo.Add("birctrl_type", JsonHelper.getDestValue(joHisRtnInfo, "mdtrtinfo.birctrl_type")); //计划生育手术类别
  97. //joMdtrtinfo.Add("birctrl_matn_date", ""); //计划生育手术或生育日期 JsonHelper.getDestValue(joHisRtnInfo, "mdtrtinfo.birctrl_matn_date") 20230228医保中心校验传正确时间或空
  98. joMdtrtinfo.Add("matn_type", JsonHelper.getDestValue(joHisRtnInfo, "mdtrtinfo.matn_type")); //生育类别
  99. joMdtrtinfo.Add("expContent", ""); //字段扩展
  100. // 特殊2203A需要exp_content字段
  101. JObject ExportObj = new JObject();
  102. ExportObj.Add("dise_reim_mon", "");
  103. ExportObj.Add("deve_flag", "");
  104. ExportObj.Add("otp_reim_flag", "");
  105. ExportObj.Add("local_dise", ""); //单病种编码
  106. ExportObj.Add("ifen_flag", ""); //传染性标志
  107. //ExportObj.Add("cla_trt_flag", frmReg.claTrtFlag); //分级诊疗标志
  108. ExportObj.Add("trum_flag", "0"); //外伤标志
  109. //ExportObj.Add("ipt_type", frmReg.iptTypeCode); //住院类型(离院)
  110. ExportObj.Add("rel_ttp_flag","0"); //涉及第三方标志
  111. ExportObj.Add("mdtrt_grp_type", ""); //就诊人群类型
  112. ExportObj.Add("elec_bill_code", ""); //电子票据代码
  113. ExportObj.Add("elec billno_code", ""); //电子票据号码
  114. ExportObj.Add("otp_er_refl_flag", ""); //门诊转急诊
  115. joMdtrtinfo.Add("exp_content", ExportObj); //字段扩展
  116. #endregion
  117. #region 组织结算入参
  118. JObject joSetlInpar = new JObject();
  119. joSetlInpar.Add("psn_no", Global.pat.psn_no);
  120. joSetlInpar.Add("mdtrt_cert_type", Global.pat.mdtrtcertType);
  121. joSetlInpar.Add("mdtrt_cert_no", Global.pat.mdtrtcertNO);
  122. joSetlInpar.Add("med_type", Global.pat.medType);
  123. joSetlInpar.Add("medfee_sumamt", "");
  124. joSetlInpar.Add("psn_setlway", psn_setlway); //结算方式
  125. joSetlInpar.Add("mdtrt_id", Global.pat.mdtrtID);
  126. joSetlInpar.Add("chrg_bchno", Global.pat.adm_Dr.ToString());
  127. joSetlInpar.Add("acct_used_flag", "1");//个人账户使用标志
  128. joSetlInpar.Add("insutype", Global.pat.insuType);//险种类型
  129. joSetlInpar.Add("pub_hosp_rfom_flag", "");
  130. joSetlInpar.Add("exp_content", "");
  131. joSetlInpar.Add("mdtrt_mode", "0");
  132. #endregion
  133. joReg.Add("data", joRegInpar);
  134. joReg.Add("mdtrtinfo", joMdtrtinfo);
  135. joReg.Add("diseinfo", jaDiagnoses);
  136. joReg.Add("settlement", joSetlInpar);
  137. joReg.Add("patInfo", input);
  138. outParam = joReg.ToString();
  139. return Success();
  140. }
  141. catch (Exception ex)
  142. {
  143. outParam = "登记界面显示异常:" + ex.Message;
  144. return Exception(-1,"",outParam);
  145. }
  146. }
  147. }
  148. }