DualChannelRecordForm.cs 12 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325
  1. using System;
  2. using System.Collections.Generic;
  3. using System.ComponentModel;
  4. using System.Data;
  5. using System.Drawing;
  6. using System.Linq;
  7. using System.Text;
  8. using System.Threading.Tasks;
  9. using System.Windows.Forms;
  10. using PTMedicalInsurance.Common;
  11. using PTMedicalInsurance.Helper;
  12. using PTMedicalInsurance.FormSetter;
  13. using PTMedicalInsurance.Business;
  14. using PTMedicalInsurance.Variables;
  15. using System.IO;
  16. using Newtonsoft.Json.Linq;
  17. using Newtonsoft.Json;
  18. using GMCrypto.Lib;
  19. namespace PTMedicalInsurance.Forms
  20. {
  21. /// <summary>
  22. /// 南昌双通道备案申请、查询和撤销
  23. /// 查询时支持查询本地申请记录(用于撤销或查看历史)、查询中心记录并显示结果
  24. /// 本地表结构与中心做了格式转换,用于表格显示
  25. /// </summary>
  26. public partial class DualChannelRecordForm : Form
  27. {
  28. //设置业务实例
  29. HisMainBusiness hBus = new HisMainBusiness();
  30. MIIrisServices mIS = new MIIrisServices();
  31. InvokeHelper invoker = new InvokeHelper();
  32. public bool LocalQueryMode = true;
  33. private JObject joBasicInfo = null;
  34. DataTable dtApplyDrug = null;
  35. public DualChannelRecordForm()
  36. {
  37. InitializeComponent();
  38. //asc.controllInitializeSize(this);
  39. //asc.controlAutoSize(this);
  40. this.StartPosition = FormStartPosition.CenterScreen;
  41. GridViewSetter grdSetter = new GridViewSetter();
  42. grdSetter.SetHeaderTextOfChannelBasicInfo(dgv_BasicInfo);
  43. grdSetter.DatagridviewColumnWidthAdaptation(dgv_BasicInfo);
  44. grdSetter.SetHeaderTextOfChannelInsuInfo(dgv_DrugApply);
  45. grdSetter.DatagridviewColumnWidthAdaptation(dgv_DrugApply);
  46. grdSetter.SetHeaderTextOfChannelInsuInfo(dgv_DrugInfo);
  47. grdSetter.DatagridviewColumnWidthAdaptation(dgv_DrugInfo);
  48. grdSetter.SetHeaderTextOfChannelOrgInfo(dgv_OrgInfo);
  49. grdSetter.DatagridviewColumnWidthAdaptation(dgv_OrgInfo);
  50. }
  51. private void btnClose_Click(object sender, EventArgs e)
  52. {
  53. Close();
  54. }
  55. private void DualChannelRecordForm_Load(object sender, EventArgs e)
  56. {
  57. this.Height = 600;
  58. this.Width = 1200;
  59. //asc.controllInitializeSize(this);
  60. //asc.controlAutoSize(this);
  61. }
  62. private void btnPresUpload_Click(object sender, EventArgs e)
  63. {
  64. if (joBasicInfo == null)
  65. {
  66. MessageBox.Show("请先读卡获取基本信息");
  67. return;
  68. }
  69. if(dtApplyDrug == null || dtApplyDrug.Rows.Count < 1)
  70. {
  71. MessageBox.Show("请先增加药品信息");
  72. return;
  73. }
  74. // 调用申请
  75. string errMsg = string.Empty;
  76. JObject joRtn = invoker.invokeCenterService(TradeEnum.DualChannelApply, GetApplyParam());
  77. if (JsonHelper.parseCenterRtnValue(joRtn, out errMsg)!=0)
  78. {
  79. MessageBox.Show("申请失败:" + errMsg);
  80. return;
  81. }
  82. // 保存申请记录
  83. if (SaveApply(joRtn))
  84. {
  85. MessageBox.Show("申请成功!");
  86. }
  87. }
  88. private JObject GetApplyParam()
  89. {
  90. JArray jaDrugs = new JArray();
  91. foreach (DataRow row in dtApplyDrug.Rows)
  92. {
  93. dynamic obj = new JObject();
  94. obj.med_list_codg = row["med_list_codg"].ToString();
  95. obj.med_list_name = row["med_list_name"].ToString();
  96. jaDrugs.Add(obj);
  97. }
  98. dynamic joOrg = new JObject();
  99. joOrg.fixmedins_code = Global.inf.hospitalNO;
  100. joOrg.fixmedins_name = Global.inf.hospitalName;
  101. joOrg.poolarea_no = Global.inf.areaCode;
  102. if (joBasicInfo != null)
  103. {
  104. joBasicInfo["appy_type"] = "32";
  105. joBasicInfo["begndate"] = dtpStart.Value.ToString("yyyy-MM-dd");
  106. joBasicInfo["enddate"] = dtpEnd.Value.ToString("yyyy-MM-dd");
  107. joBasicInfo["addr"] = txtAddress.Text.Trim();
  108. joBasicInfo["cond_abst"] = txtDiag.Text.Trim();
  109. }
  110. dynamic joInput = new JObject();
  111. joInput.data = joBasicInfo;
  112. joInput.twopathdruglist = jaDrugs;
  113. joInput.twopathfixmedins = new JArray() { joOrg };
  114. return joInput;
  115. }
  116. private bool SaveApply(JObject joRtn)
  117. {
  118. string errorMessage = string.Empty;
  119. string dcla = joRtn["two_path_reg_sn"].ToString();
  120. JObject joParams = GetApplyParam();
  121. // 兼容通用备案
  122. JObject joInput = (JObject)joParams["data"].DeepClone();
  123. joInput["trt_dcla_detl_sn"] = dcla;
  124. joInput["transCode"] = TradeEnum.DualChannelApply.GetCode();
  125. joInput["transDesc"] = TradeEnum.DualChannelApply.GetName();
  126. joInput["cond_abst_diag"] = joInput["cond_abst"];
  127. joInput["cond_abst"].Remove();
  128. joInput["drugs"] = joParams["twopathdruglist"];
  129. joInput["fixmedins"] = joParams["twopathfixmedins"];
  130. joInput["iresult"] = "0";
  131. joInput["HospitalDr"] = Global.inf.hospitalDr;
  132. string outparam = string.Empty;
  133. int status = mIS.SaveReferralRecord(joInput, out outparam);
  134. if (status != 0)
  135. {
  136. MessageBox.Show("保存失败:" + outparam);
  137. return false;
  138. }
  139. return true;
  140. }
  141. private void btnReadCard_Click(object sender, EventArgs e)
  142. {
  143. CallResult ret = new ReadCardProcess().Process(new JObject());
  144. if (ret.Success)
  145. {
  146. string outparam = string.Empty;
  147. string patInfo = ret.PureData?.ToString();
  148. hBus.convertPatientInfo(patInfo, out outparam);
  149. if (string.IsNullOrEmpty(outparam))
  150. {
  151. JObject joRtn = JObject.Parse(outparam);
  152. this.joBasicInfo = JObject.Parse(JsonHelper.getDestValue(joRtn, "output.baseinfo"));
  153. joBasicInfo["emp_no"] = JsonHelper.getDestValue(joRtn, "selectedInsuInfo.emp_no");
  154. joBasicInfo["emp_name"] = JsonHelper.getDestValue(joRtn, "selectedInsuInfo.emp_name");
  155. joBasicInfo["insutype"] = JsonHelper.getDestValue(joRtn, "selectedInsuInfo.insutype");
  156. txt_PsnName.Text = joBasicInfo["psn_name"].Text();
  157. txtPsnNO.Text = joBasicInfo["psn_no"].Text();
  158. txtInsuType.Text = joBasicInfo["insutype"].Text();
  159. txtCertType.Text = joBasicInfo["psn_cert_type"].Text();
  160. txtCertNo.Text = joBasicInfo["certno"].Text();
  161. txtBirth.Text = joBasicInfo["brdy"].Text();
  162. txtSex.Text = joBasicInfo["gend"].Text();
  163. txtNation.Text = joBasicInfo["naty"].Text();
  164. txtUnitNo.Text = joBasicInfo["emp_no"].Text();
  165. txtUnitName.Text = joBasicInfo["emp_name"].Text();
  166. }
  167. }
  168. else
  169. {
  170. MessageBox.Show(ret.Data);
  171. }
  172. }
  173. private void tc_Main_TabIndexChanged(object sender, EventArgs e)
  174. {
  175. }
  176. private void btnQuery_Click(object sender, EventArgs e)
  177. {
  178. if (this.joBasicInfo == null)
  179. {
  180. MessageBox.Show("请先读卡获取基本信息");
  181. return;
  182. }
  183. dynamic joParam = new JObject();
  184. JObject joRtn = new JObject();
  185. string errMsg = string.Empty;
  186. JArray jaDrugs = new JArray();
  187. JArray jaOrgs = new JArray();
  188. JArray jaBasic = new JArray();
  189. // 查询本院
  190. if (LocalQueryMode)
  191. {
  192. joParam = new JObject();
  193. joParam["CardID"] = joBasicInfo["certno"];
  194. joParam["TransCode"] = TradeEnum.DualChannelApply.GetCode();
  195. int status = mIS.QueryReferralRecord(joParam, out errMsg);
  196. if (status != 0)
  197. {
  198. MessageBox.Show("没有查询到申请记录!");
  199. return;
  200. }
  201. joRtn = JObject.Parse(errMsg);
  202. jaBasic = JArray.Parse(joRtn["result"].Text());
  203. }
  204. else
  205. {
  206. dynamic joInput = new JObject();
  207. joParam.psn_no = this.joBasicInfo["psn_no"].Text();
  208. joParam.begndate = dtpStart.Value.ToString("yyyy-MM-dd"); ;
  209. joParam.enddate = dtpEnd.Value.ToString("yyyy-MM-dd");
  210. joInput.data = joParam;
  211. //查询中心
  212. joRtn = invoker.invokeCenterService(TradeEnum.DualChannelQuery, joInput);
  213. if (JsonHelper.parseCenterRtnValue(joRtn, out errMsg) != 0)
  214. {
  215. MessageBox.Show("查询失败:" + errMsg);
  216. return;
  217. }
  218. JObject joBasic = JObject.Parse(joRtn["result"].Text());
  219. jaDrugs = JArray.Parse(joRtn["twopathdruglist"].Text());
  220. jaOrgs = JArray.Parse(joRtn["twopathfixmedins"].Text());
  221. // 转换为本地格式
  222. jaBasic["PsnNo"] = jaBasic["psn_no"];
  223. jaBasic["Name"] = jaBasic["psn_name"];
  224. jaBasic["CardID"] = jaBasic["certno"];
  225. jaBasic["CreateDate"] = jaBasic["apply_date"];
  226. jaBasic["BegnDate"] = jaBasic["begndate"];
  227. jaBasic["EndDate"] = jaBasic["enddate"];
  228. jaBasic["iResult"] = "0";
  229. jaBasic["begndate"].Remove();
  230. jaBasic["enddate"].Remove();
  231. jaBasic = new JArray() { joBasic };
  232. jaDrugs.ToList().ForEach(drug =>
  233. {
  234. drug["InsuCode"] = drug["med_list_codg"];
  235. drug["InsuName"] = drug["med_list_name"];
  236. });
  237. jaOrgs.ToList().ForEach(org =>
  238. {
  239. org["Code"] = org["fixmedins_code"];
  240. org["Name"] = org["fixmedins_name"];
  241. org["InsuranceArea"] = org["poolarea_no"];
  242. });
  243. }
  244. DataTable dtBasic = jaBasic.ToObject<DataTable>();
  245. DataTable dtDrugs = jaDrugs.ToObject<DataTable>();
  246. DataTable dtOrgs = jaOrgs.ToObject<DataTable>();
  247. dgv_BasicInfo.DataSource = dtBasic;
  248. dgv_DrugInfo.DataSource = dtDrugs;
  249. dgv_OrgInfo.DataSource = dtOrgs;
  250. }
  251. private void btnCancel_Click(object sender, EventArgs e)
  252. {
  253. if (dgv_BasicInfo.SelectedIndex == -1)
  254. {
  255. MessageBox.Show("请先选择申请记录!");
  256. return;
  257. }
  258. DataGridViewRow row = dgv_BasicInfo.Rows[dgv_BasicInfo.SelectedIndex];
  259. string trt_id = row.Cells["InsuSerNo"].Value.ToString();
  260. dynamic joInput = new JObject();
  261. dynamic joParam = new JObject();
  262. joParam.two_path_reg_sn_list = new List<string>() { trt_id };
  263. joInput.data = joParam;
  264. string errMsg = string.Empty;
  265. JObject joRtn = invoker.invokeCenterService(TradeEnum.DualChannelCancel, joInput);
  266. if (JsonHelper.parseCenterRtnValue(joRtn, out errMsg) != 0)
  267. {
  268. MessageBox.Show("撤销失败:" + errMsg);
  269. return;
  270. }
  271. //修改iris状态
  272. joParam = new JObject();
  273. joParam["ID"] = row.Cells["ID"].Value;
  274. joParam["trtDclaDetlSn"] = trt_id;
  275. int status = mIS.CancelReferralRecord(joParam, out errMsg);
  276. if (status != 0)
  277. {
  278. MessageBox.Show("没有查询到申请记录!");
  279. return;
  280. }
  281. MessageBox.Show("撤销成功!");
  282. }
  283. }
  284. }