STA.cs 32 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Data;
  4. using System.Linq;
  5. using System.Text;
  6. using System.Threading.Tasks;
  7. using System.Windows.Forms;
  8. using Newtonsoft.Json.Linq;
  9. using PTMedicalInsurance.Common;
  10. using PTMedicalInsurance.Entity;
  11. using PTMedicalInsurance.Forms;
  12. using PTMedicalInsurance.Helper;
  13. using PTMedicalInsurance.Variables;
  14. namespace PTMedicalInsurance.Business
  15. {
  16. class STA
  17. {
  18. //设置业务实例
  19. CenterBusiness cBus = new CenterBusiness();
  20. HisMainBusiness hBus = new HisMainBusiness();
  21. HisIrisServices hIS = new HisIrisServices();
  22. MIIrisServices mIS = new MIIrisServices();
  23. InvokeHelper invoker = new InvokeHelper();
  24. private XmlHelper xmler = new XmlHelper();
  25. public delegate void callBack(string errMsg);
  26. [STAThread]
  27. public void ReadCard(object o)
  28. {
  29. string outParam = "";
  30. ChooseCard cc = new ChooseCard();
  31. try
  32. {
  33. IntPtr hwnd = WinApi.GetWindowsHandle("prBrowser");
  34. if (cc.ShowDialog(new WindowWrapper(hwnd)) == DialogResult.OK)
  35. {
  36. Global.pat.card.ecBizType = cc.businessType;
  37. }
  38. else
  39. {
  40. ((object[])o)[0] = -1;
  41. ((object[])o)[1] = "收款员取消结算!";
  42. }
  43. InvokeComCenter carder = new InvokeComCenter();
  44. JObject joInput = new JObject();
  45. joInput.Add("akb020", "H41010500122");
  46. joInput.Add("psnNo", "111111");
  47. string input = joInput.ToString();
  48. if (carder.Business("1401", ref input, ref outParam) != 0)
  49. {
  50. ((object[])o)[0] = -1;
  51. ((object[])o)[1] = outParam;
  52. }
  53. else
  54. {
  55. Resp1101 info = JsonHelper.getOutput<Resp1101>(JObject.Parse(outParam));
  56. Global.pat.card.NO = info.data.cardNo;
  57. Global.pat.card.SN = info.data.cardSn;
  58. Global.pat.mdtrtcertType = info.data.mdtrtCertType;
  59. Global.pat.mdtrtcertNO = info.data.mdtrtCertNo;
  60. Global.pat.certNO = info.data.certNo;
  61. Global.pat.certType = info.data.psnCertType;
  62. Global.pat.name = info.data.psnName;
  63. Global.pat.insuplc_admdvs = info.data.insuplcAdmdvs;
  64. ((object[])o)[0] = 0;
  65. ((object[])o)[1] = outParam;
  66. }
  67. }
  68. catch (Exception ex)
  69. {
  70. outParam = JsonHelper.setIrisReturnValue(-1, "门诊结算异常:" + ex.Message, null).ToString();
  71. ((object[])o)[0] = -1;
  72. ((object[])o)[1] = outParam;
  73. }
  74. }
  75. public void CallBack(string errMsg)
  76. {
  77. MessageBox.Show(errMsg);
  78. }
  79. [STAThread]
  80. public void showPatInfo(object o)
  81. {
  82. string outParam = "";
  83. JObject joOutparam = JObject.Parse(((object[])o)[1].ToString());
  84. JObject joOutput = JObject.Parse(JsonHelper.getDestValue(joOutparam, "output"));
  85. //编码转换
  86. JArray jaConvertCode = new JArray();
  87. JObject joConvertCodeParam = new JObject();
  88. joConvertCodeParam.Add("hospitalDr", Global.inf.hospitalDr);
  89. joConvertCodeParam.Add("interfaceDr", Global.inf.interfaceDr);
  90. joConvertCodeParam.Add("output", joOutput);
  91. jaConvertCode.Add(joConvertCodeParam);
  92. JObject joConvertCode = new JObject();
  93. joConvertCode.Add("code", "09010054");
  94. joConvertCode.Add("params", jaConvertCode);
  95. InvokeHelper invoker = new InvokeHelper();
  96. JObject joConvertCodeRtn = invoker.invokeInsuService(joConvertCode.ToString(), "患者信息编码转换");
  97. PatientInsuInfo frmPatientInfo = new PatientInsuInfo(joConvertCodeRtn);
  98. try
  99. {
  100. IntPtr hwnd = WinApi.GetWindowsHandle("prBrowser");
  101. frmPatientInfo.StartPosition = FormStartPosition.CenterScreen;
  102. frmPatientInfo.BringToFront();
  103. if (frmPatientInfo.ShowDialog(new WindowWrapper(hwnd)) == DialogResult.OK)
  104. {
  105. //原来用的是转换后的
  106. //frmPatientInfo.joSelectedInsuInfo.Add("mdtrt_cert_type", Global.pat.mdtrtcertType);
  107. //frmPatientInfo.joSelectedInsuInfo.Add("mdtrt_cert_no", Global.pat.mdtrtcertNO);
  108. //joOutparam.Property("output").AddBeforeSelf(new JProperty("selectedInsuInfo", frmPatientInfo.joSelectedInsuInfo));
  109. //现在用转换之前的
  110. JArray jaInsuInfo = JArray.Parse(JsonHelper.getDestValue(joOutput, "insuinfo"));
  111. JArray jaIdInfo = JArray.Parse(JsonHelper.getDestValue(joOutput, "idetinfo"));
  112. JObject joSelectedInsuInfo = (JObject)jaInsuInfo[frmPatientInfo.insuInfoIndex];
  113. JObject joSelectedIdInfo;
  114. if (jaIdInfo.Count != 0)
  115. {
  116. joSelectedIdInfo = (JObject)jaIdInfo[frmPatientInfo.idInfoIndex];
  117. }
  118. else
  119. {
  120. joSelectedIdInfo = new JObject();
  121. }
  122. joSelectedInsuInfo.Add("mdtrt_cert_type", Global.pat.mdtrtcertType);
  123. joSelectedInsuInfo.Add("mdtrt_cert_no", Global.pat.mdtrtcertNO);
  124. if (joOutparam["selectedInsuInfo"] != null)
  125. {
  126. joOutparam["selectedInsuInfo"] = joSelectedInsuInfo;
  127. }
  128. else
  129. {
  130. joOutparam.Property("output").AddBeforeSelf(new JProperty("selectedInsuInfo", joSelectedInsuInfo));
  131. }
  132. if (joOutparam["selectedIdInfo"] != null)
  133. {
  134. joOutparam["selectedIdInfo"] = joSelectedInsuInfo;
  135. }
  136. else
  137. {
  138. joOutparam.Property("output").AddBeforeSelf(new JProperty("selectedIdInfo", joSelectedInsuInfo));
  139. }
  140. outParam = joOutparam.ToString();
  141. ((object[])o)[0] = 0;
  142. ((object[])o)[2] = outParam;
  143. }
  144. else
  145. {
  146. ((object[])o)[0] = -1;
  147. ((object[])o)[2] = "收款员取消结算!";
  148. }
  149. }
  150. catch (Exception ex)
  151. {
  152. outParam = JsonHelper.setIrisReturnValue(-1, "门诊结算异常:" + ex.Message, null).ToString();
  153. ((object[])o)[0] = -1;
  154. ((object[])o)[2] = outParam;
  155. }
  156. }
  157. [STAThread]
  158. public void showOutPatRegisterForm(object o)
  159. {
  160. string outParam = "";
  161. //调用服务获取门诊诊断信息
  162. string diagnoses;
  163. if (hIS.getPatDiagnoses(Global.pat, out diagnoses) != 0)
  164. {
  165. ((object[])o)[0] = -1;
  166. ((object[])o)[1] = JsonHelper.setExceptionJson(-1, "getPatDiagnoses", diagnoses).ToString();
  167. return ;
  168. }
  169. JObject joHisRtnInfo = JObject.Parse(diagnoses);
  170. JObject joReg = new JObject();
  171. try
  172. {
  173. IntPtr hwnd = WinApi.GetWindowsHandle("prBrowser");
  174. JArray jaDiagnoses = JArray.Parse(JsonHelper.getDestValue(joHisRtnInfo, "diseinfo"));
  175. //登记面板实例
  176. OutpatientRegistration frmReg = new OutpatientRegistration();
  177. //frmReg.dblkcbxSettelmentWay.Enabled = false;
  178. //险种类型
  179. DataTable dtInsuType = (DataTable)frmReg.dblkcbxInsuranceType.DataSource;
  180. for (int i = 0; i < dtInsuType.Rows.Count; i++)
  181. {
  182. if (dtInsuType.Rows[i]["Code"].ToString() == Global.pat.insuType)
  183. {
  184. frmReg.dblkcbxInsuranceType.Text = dtInsuType.Rows[i]["Name"].ToString();
  185. frmReg.insuType = dtInsuType.Rows[i]["Code"].ToString();
  186. if (Global.pat.isWorkInjury)
  187. {
  188. frmReg.dblkcbxInsuranceType.Text = "工伤保险";
  189. }
  190. }
  191. }
  192. //医疗类别
  193. DataTable dtMedType = (DataTable)frmReg.dblkcbxMedicalType.DataSource;
  194. for (int i = 0; i < dtMedType.Rows.Count; i++)
  195. {
  196. if (dtMedType.Rows[i]["Code"].ToString() == "11")
  197. {
  198. frmReg.dblkcbxMedicalType.Text = dtMedType.Rows[i]["Name"].ToString();
  199. frmReg.med_type = dtMedType.Rows[i]["Code"].ToString();
  200. }
  201. }
  202. //结算方式
  203. DataTable dtSettlWay = (DataTable)frmReg.dblkcbxSettelmentWay.DataSource;
  204. for (int i = 0; i < dtSettlWay.Rows.Count; i++)
  205. {
  206. if (dtSettlWay.Rows[i]["Code"].ToString() == "01")
  207. {
  208. frmReg.dblkcbxSettelmentWay.Text = dtSettlWay.Rows[i]["Name"].ToString();
  209. frmReg.psn_setlway = dtSettlWay.Rows[i]["Code"].ToString();
  210. }
  211. }
  212. //转换下主要诊断
  213. for (int i = 0; i < jaDiagnoses.Count; i++)
  214. {
  215. string diag_type = JsonHelper.getDestValue((JObject)jaDiagnoses[i], "diag_type");
  216. switch (diag_type)
  217. {
  218. case "1":
  219. {
  220. jaDiagnoses[i]["diag_type_name"] = new JObject();
  221. jaDiagnoses[i]["diag_type_name"] = "西医主要诊断";
  222. break;
  223. }
  224. case "2":
  225. {
  226. jaDiagnoses[i]["diag_type_name"] = new JObject();
  227. jaDiagnoses[i]["diag_type_name"] = "西医其他诊断";
  228. break;
  229. }
  230. case "3":
  231. {
  232. jaDiagnoses[i]["diag_type_name"] = new JObject();
  233. jaDiagnoses[i]["diag_type_name"] = "中医主病诊断";
  234. break;
  235. }
  236. case "4":
  237. {
  238. jaDiagnoses[i]["diag_type_name"] = new JObject();
  239. jaDiagnoses[i]["diag_type_name"] = "中医主证诊断";
  240. break;
  241. }
  242. }
  243. }
  244. frmReg.DtDiagnose = (DataTable)jaDiagnoses.ToObject(typeof(DataTable));
  245. //展示登记面板
  246. if (frmReg.ShowDialog(new WindowWrapper(hwnd)) == DialogResult.OK)
  247. {
  248. string diseCodg = frmReg.diseCodg, diseName = frmReg.diseName;
  249. //哈尔滨要求必须传病种。普通疾病传主诊断
  250. if (string.IsNullOrEmpty(diseCodg))
  251. {
  252. diseCodg = JsonHelper.getDestValue(joHisRtnInfo, "mdtrtinfo.dscg_maindiag_code");
  253. };
  254. Global.pat.disCode = diseCodg;
  255. if (string.IsNullOrEmpty(diseName))
  256. {
  257. diseName = JsonHelper.getDestValue(joHisRtnInfo, "mdtrtinfo.dscg_maindiag_name");
  258. };
  259. //组织挂号入参
  260. JObject joRegInpar = new JObject();
  261. string occurTime = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss");
  262. joRegInpar.Add("psn_no", Global.pat.psn_no);
  263. joRegInpar.Add("insutype", frmReg.insuType);
  264. joRegInpar.Add("begntime", JsonHelper.getDestValue(joHisRtnInfo, "mdtrtinfo.begntime"));//挂号时间 occurTime
  265. joRegInpar.Add("mdtrt_cert_type", Global.pat.mdtrtcertType);
  266. joRegInpar.Add("mdtrt_cert_no", Global.pat.mdtrtcertNO);
  267. string admDr = Utils.convertAdmDr(Global.pat.adm_Dr.ToString());
  268. joRegInpar.Add("ipt_otp_no", admDr);
  269. joRegInpar.Add("atddr_no", JsonHelper.getDestValue(joHisRtnInfo, "mdtrtinfo.atddr_no"));
  270. joRegInpar.Add("dr_name", JsonHelper.getDestValue(joHisRtnInfo, "mdtrtinfo.chfpdr_name"));
  271. joRegInpar.Add("dept_code", JsonHelper.getDestValue(joHisRtnInfo, "mdtrtinfo.adm_dept_codg"));
  272. joRegInpar.Add("dept_name", JsonHelper.getDestValue(joHisRtnInfo, "mdtrtinfo.adm_dept_name"));
  273. joRegInpar.Add("exp_content", "");
  274. joRegInpar.Add("caty", "72");
  275. joReg.Add("data", joRegInpar);
  276. //组织就诊信息入参
  277. JObject joMdtrtinfo = new JObject();
  278. for (int i = 0; i < jaDiagnoses.Count; i++)
  279. {
  280. jaDiagnoses[i]["vali_flag"] = new JObject();
  281. jaDiagnoses[i]["vali_flag"] = "1";
  282. }
  283. joMdtrtinfo.Add("mdtrt_id", Global.pat.mdtrtID);
  284. joMdtrtinfo.Add("psn_no", Global.pat.psn_no); //人员编号
  285. Global.pat.medType = frmReg.med_type;
  286. joMdtrtinfo.Add("med_type", frmReg.med_type); //医疗类别
  287. joMdtrtinfo.Add("begntime", JsonHelper.getDestValue(joHisRtnInfo, "mdtrtinfo.begntime")); //开始时间
  288. joMdtrtinfo.Add("main_cond_dscr", JsonHelper.getDestValue(joHisRtnInfo, "mdtrtinfo.main_cond_dscr")); //主要病情描述
  289. joMdtrtinfo.Add("dise_codg", diseCodg); //病种编码
  290. joMdtrtinfo.Add("dise_name", diseName); //病种名称
  291. joMdtrtinfo.Add("birctrl_type", JsonHelper.getDestValue(joHisRtnInfo, "mdtrtinfo.birctrl_type")); //计划生育手术类别
  292. //joMdtrtinfo.Add("birctrl_matn_date", ""); //计划生育手术或生育日期 JsonHelper.getDestValue(joHisRtnInfo, "mdtrtinfo.birctrl_matn_date") 20230228医保中心校验传正确时间或空
  293. joMdtrtinfo.Add("matn_type", JsonHelper.getDestValue(joHisRtnInfo, "mdtrtinfo.matn_type")); //生育类别
  294. //joMdtrtinfo.Add("geso_val", JsonHelper.getDestValue(joHisRtnInfo, "mdtrtinfo.geso_val")); //孕周数
  295. joMdtrtinfo.Add("exp_content", ""); //字段扩展
  296. //组织结算入参
  297. JObject joSetlInpar = new JObject();
  298. joSetlInpar.Add("psn_no", Global.pat.psn_no);
  299. joSetlInpar.Add("mdtrt_cert_type", Global.pat.mdtrtcertType);
  300. joSetlInpar.Add("mdtrt_cert_no", Global.pat.mdtrtcertNO);
  301. joSetlInpar.Add("med_type", Global.pat.medType);
  302. joSetlInpar.Add("medfee_sumamt", "");
  303. joSetlInpar.Add("psn_setlway", frmReg.psn_setlway); //结算方式
  304. joSetlInpar.Add("mdtrt_id", Global.pat.mdtrtID);
  305. joSetlInpar.Add("chrg_bchno", Global.pat.adm_Dr.ToString());
  306. joSetlInpar.Add("acct_used_flag", frmReg.personAccountUsedFlag);//个人账户使用标志
  307. joSetlInpar.Add("insutype", frmReg.insuType);//险种类型
  308. joSetlInpar.Add("pub_hosp_rfom_flag", "");
  309. joSetlInpar.Add("exp_content11", "");
  310. joReg.Add("mdtrtinfo", joMdtrtinfo);
  311. joReg.Add("diseinfo", jaDiagnoses);
  312. joReg.Add("settlement", joSetlInpar);
  313. ((object[])o)[0] =0;
  314. ((object[])o)[1] = joReg.ToString();
  315. return;
  316. }
  317. else
  318. {
  319. ((object[])o)[0] = -1;
  320. ((object[])o)[1] = "收费员取消操作!";
  321. return;
  322. }
  323. }
  324. catch (Exception ex)
  325. {
  326. ((object[])o)[0] = -1;
  327. ((object[])o)[1] = "登记界面显示异常:" + ex.Message;
  328. return;
  329. }
  330. }
  331. [STAThread]
  332. public void showInPatRegisterForm(object o)
  333. {
  334. //调用服务获取门诊诊断信息
  335. string diagnoses;
  336. if (hIS.getPatDiagnoses(Global.pat, out diagnoses) != 0)
  337. {
  338. ((object[])o)[0] = -1;
  339. ((object[])o)[1] = JsonHelper.setExceptionJson(-1, "getPatDiagnoses", diagnoses).ToString();
  340. return;
  341. }
  342. JObject joHisRtnInfo = JObject.Parse(diagnoses);
  343. JObject joReg = new JObject();
  344. try
  345. {
  346. IntPtr hwnd = WinApi.GetWindowsHandle("prBrowser");
  347. JArray jaDiagnoses = JArray.Parse(JsonHelper.getDestValue(joHisRtnInfo, "diseinfo"));
  348. string dscg_maindiag_code = "", dscg_maindiag_name = "";
  349. // 对诊断数组进行转换 转换下主要诊断
  350. JArray jaConvertedDiagnoses = new JArray();
  351. JArray jaInPatDiagnoses = new JArray();
  352. JArray jaOutPatDiagnoses = new JArray();
  353. for (int i = 0; i < jaDiagnoses.Count; i++)
  354. {
  355. string diag_type = JsonHelper.getDestValue((JObject)jaDiagnoses[i], "diag_type");
  356. switch (diag_type)
  357. {
  358. case "1":
  359. {
  360. jaDiagnoses[i]["diag_type_name"] = new JObject();
  361. jaDiagnoses[i]["diag_type_name"] = "西医主要诊断";
  362. break;
  363. }
  364. case "2":
  365. {
  366. jaDiagnoses[i]["diag_type_name"] = new JObject();
  367. jaDiagnoses[i]["diag_type_name"] = "西医其他诊断";
  368. break;
  369. }
  370. case "3":
  371. {
  372. jaDiagnoses[i]["diag_type_name"] = new JObject();
  373. jaDiagnoses[i]["diag_type_name"] = "中医主病诊断";
  374. break;
  375. }
  376. case "4":
  377. {
  378. jaDiagnoses[i]["diag_type_name"] = new JObject();
  379. jaDiagnoses[i]["diag_type_name"] = "中医主证诊断";
  380. break;
  381. }
  382. }
  383. if (jaDiagnoses[i]["diaTypeCode"].ToString() == "ADD") //ADD 入院 OPD 门诊
  384. {
  385. jaInPatDiagnoses.Add(jaDiagnoses[i]);
  386. }
  387. if (jaDiagnoses[i]["diaTypeCode"].ToString() == "OPD") //ADD 入院 OPD 门诊
  388. {
  389. jaOutPatDiagnoses.Add(jaDiagnoses[i]);
  390. }
  391. }
  392. if (jaInPatDiagnoses.Count > 0)
  393. {
  394. jaConvertedDiagnoses = (JArray)jaInPatDiagnoses.DeepClone();
  395. }
  396. else
  397. {
  398. jaConvertedDiagnoses = (JArray)jaOutPatDiagnoses.DeepClone();
  399. }
  400. for (int i = 0; i < jaConvertedDiagnoses.Count; i++)
  401. {
  402. jaConvertedDiagnoses[i]["diag_srt_no"] = i + 1;
  403. if (jaConvertedDiagnoses[i]["maindiag_flag"].ToString() == "1")
  404. {
  405. dscg_maindiag_code = jaConvertedDiagnoses[i]["diag_code"].ToString();
  406. dscg_maindiag_name = jaConvertedDiagnoses[i]["diag_name"].ToString();
  407. }
  408. }
  409. //登记面板实例
  410. OutpatientRegistration frmReg = new OutpatientRegistration();
  411. //frmReg.dblkcbxSettelmentWay.Enabled = false;
  412. DataTable dt = (DataTable)frmReg.dblkcbxInsuranceType.DataSource;
  413. int selectedIndex = 0;
  414. for (int i = 0; i < dt.Rows.Count; i++)
  415. {
  416. if (dt.Rows[i]["Code"].ToString() == Global.pat.insuType)
  417. {
  418. selectedIndex = i;
  419. frmReg.dblkcbxInsuranceType.Text = dt.Rows[i]["Name"].ToString();
  420. frmReg.insuType = dt.Rows[i]["Code"].ToString();
  421. }
  422. }
  423. DataTable dtMedType = (DataTable)frmReg.dblkcbxMedicalType.DataSource;
  424. for (int i = 0; i < dtMedType.Rows.Count; i++)
  425. {
  426. if (dtMedType.Rows[i]["Code"].ToString() == "21")
  427. {
  428. frmReg.dblkcbxMedicalType.Text = dtMedType.Rows[i]["Name"].ToString();
  429. frmReg.med_type = dtMedType.Rows[i]["Code"].ToString();
  430. }
  431. }
  432. frmReg.DtDiagnose = (DataTable)jaConvertedDiagnoses.ToObject(typeof(DataTable));
  433. //展示登记面板
  434. if (frmReg.ShowDialog(new WindowWrapper(hwnd)) == DialogResult.OK)
  435. {
  436. string diseCodg = "", diseName = "";
  437. diseCodg = frmReg.diseCodg;
  438. diseName = frmReg.diseName;
  439. JObject joMdtrtinfo = new JObject();
  440. joMdtrtinfo.Add("psn_no", Global.pat.psn_no); //人员编号
  441. joMdtrtinfo.Add("insutype", Global.pat.insuType); //险种类型
  442. joMdtrtinfo.Add("coner_name", JsonHelper.getDestValue(joHisRtnInfo, "mdtrtinfo.coner_name")); //联系人姓名
  443. joMdtrtinfo.Add("tel", JsonHelper.getDestValue(joHisRtnInfo, "mdtrtinfo.tel")); //联系电话
  444. joMdtrtinfo.Add("begntime", JsonHelper.getDestValue(joHisRtnInfo, "mdtrtinfo.begntime")); //开始时间
  445. joMdtrtinfo.Add("mdtrt_cert_type", Global.pat.mdtrtcertType); //就诊凭证类型
  446. joMdtrtinfo.Add("mdtrt_cert_no", Global.pat.mdtrtcertNO); //就诊凭证编号
  447. joMdtrtinfo.Add("med_type", frmReg.med_type); //医疗类别
  448. //string ipAdmNo = Utils.convertAdmDr(JsonHelper.getDestValue(joHisRtnInfo, "mdtrtinfo.ipt_no"));
  449. joMdtrtinfo.Add("ipt_no", JsonHelper.getDestValue(joHisRtnInfo, "mdtrtinfo.ipt_no")); //住院号
  450. joMdtrtinfo.Add("medrcdno", JsonHelper.getDestValue(joHisRtnInfo, "mdtrtinfo.medrcdno")); //病历号
  451. joMdtrtinfo.Add("atddr_no", JsonHelper.getDestValue(joHisRtnInfo, "mdtrtinfo.atddr_no")); //主治医生编码
  452. joMdtrtinfo.Add("chfpdr_name", JsonHelper.getDestValue(joHisRtnInfo, "mdtrtinfo.chfpdr_name")); //主诊医师姓名
  453. //joMdtrtinfo.Add("adm_diag_dscr", JsonHelper.getDestValue(joHisRtnInfo, "mdtrtinfo.adm_diag_dscr")); //入院诊断描述
  454. joMdtrtinfo.Add("adm_diag_dscr", "");
  455. joMdtrtinfo.Add("adm_dept_codg", JsonHelper.getDestValue(joHisRtnInfo, "mdtrtinfo.adm_dept_codg")); //入院科室编码
  456. joMdtrtinfo.Add("adm_dept_name", JsonHelper.getDestValue(joHisRtnInfo, "mdtrtinfo.adm_dept_name")); //入院科室名称
  457. joMdtrtinfo.Add("adm_bed", JsonHelper.getDestValue(joHisRtnInfo, "mdtrtinfo.adm_bed")); //入院床位
  458. joMdtrtinfo.Add("dscg_maindiag_code", JsonHelper.getDestValue(joHisRtnInfo, "mdtrtinfo.dscg_maindiag_code")); //住院主诊断代码
  459. joMdtrtinfo.Add("dscg_maindiag_name", JsonHelper.getDestValue(joHisRtnInfo, "mdtrtinfo.dscg_maindiag_name")); //住院主诊断名称
  460. //joMdtrtinfo.Add("dscg_maindiag_code", dscg_maindiag_code); //住院主诊断代码
  461. //joMdtrtinfo.Add("dscg_maindiag_name", dscg_maindiag_name); //住院主诊断名称
  462. joMdtrtinfo.Add("main_cond_dscr", JsonHelper.getDestValue(joHisRtnInfo, "mdtrtinfo.main_cond_dscr")); //主要病情描述
  463. joMdtrtinfo.Add("dise_codg", diseCodg); //病种编码
  464. joMdtrtinfo.Add("dise_name", diseName); //病种名称
  465. joMdtrtinfo.Add("oprn_oprt_code", frmReg.oprn_oprt_code); //手术操作代码
  466. joMdtrtinfo.Add("oprn_oprt_name", frmReg.oprn_oprt_name); //手术操作名称
  467. joMdtrtinfo.Add("fpsc_no", JsonHelper.getDestValue(joHisRtnInfo, "mdtrtinfo.fpsc_no")); //计划生育服务证号
  468. joMdtrtinfo.Add("matn_type", JsonHelper.getDestValue(joHisRtnInfo, "mdtrtinfo.matn_type")); //生育类别
  469. joMdtrtinfo.Add("birctrl_type", JsonHelper.getDestValue(joHisRtnInfo, "mdtrtinfo.birctrl_type")); //计划生育手术类别
  470. joMdtrtinfo.Add("latechb_flag", JsonHelper.getDestValue(joHisRtnInfo, "mdtrtinfo.latechb_flag")); //晚育标志
  471. //joMdtrtinfo.Add("geso_val", JsonHelper.getDestValue(joHisRtnInfo, "mdtrtinfo.geso_val")); //孕周数
  472. //joMdtrtinfo.Add("fetts", JsonHelper.getDestValue(joHisRtnInfo, "mdtrtinfo.fetts")); //胎次
  473. //joMdtrtinfo.Add("fetus_cnt", JsonHelper.getDestValue(joHisRtnInfo, "mdtrtinfo.fetus_cnt")); //胎儿数
  474. //joMdtrtinfo.Add("pret_flag", JsonHelper.getDestValue(joHisRtnInfo, "mdtrtinfo.pret_flag")); //早产标志
  475. //joMdtrtinfo.Add("birctrl_matn_date", ""); //计划生育手术或生育日期 JsonHelper.getDestValue(joHisRtnInfo, "mdtrtinfo.birctrl_matn_date") 20230228医保中心校验传正确时间或空
  476. joMdtrtinfo.Add("dise_type_code", frmReg.dise_type_code); //病种类型
  477. joMdtrtinfo.Add("insuplc_admdvs", Global.pat.insuplc_admdvs); //参保地医保区划
  478. joMdtrtinfo.Add("mdtrtarea_admvs", Global.inf.areaCode); //就医地医保区划
  479. joReg.Add("mdtrtinfo", joMdtrtinfo);
  480. joReg.Add("diseinfo", jaConvertedDiagnoses);
  481. Global.pat.disCode = diseCodg;
  482. Global.pat.disName = diseName;
  483. Global.pat.medType = frmReg.med_type;
  484. if (Global.pat.isWorkInjury)
  485. {
  486. Global.pat.ExpContent = "GGS";
  487. }
  488. ((object[])o)[0] = 0;
  489. ((object[])o)[1] = joReg.ToString();
  490. return;
  491. }
  492. else
  493. {
  494. ((object[])o)[0] = -1;
  495. ((object[])o)[1] = "收费员取消操作!";
  496. return;
  497. }
  498. }
  499. catch (Exception ex)
  500. {
  501. ((object[])o)[0] = -1;
  502. ((object[])o)[1] = "登记界面显示异常:" + ex.Message;
  503. return;
  504. }
  505. }
  506. [STAThread]
  507. public void uploadFee(object o)
  508. {
  509. string outParam = "";
  510. object[] oArr = (object[])o;
  511. try
  512. {
  513. IntPtr hwnd = WinApi.GetWindowsHandle("prBrowser");
  514. string funNO = oArr[1].ToString();
  515. int singleCount = int.Parse(oArr[2].ToString());
  516. PTMedicalInsurance.Forms.FeeUpload pb = new PTMedicalInsurance.Forms.FeeUpload(funNO, singleCount);
  517. pb.StartPosition = FormStartPosition.CenterScreen;
  518. if (pb.ShowDialog(new WindowWrapper(hwnd)) == DialogResult.OK)
  519. {
  520. ((object[])o)[0] = 0;
  521. ((object[])o)[3] = pb.outParam;
  522. }
  523. else
  524. {
  525. outParam = "收款员取消";
  526. ((object[])o)[0] = -1;
  527. ((object[])o)[3] = outParam;
  528. }
  529. }
  530. catch (Exception ex)
  531. {
  532. outParam = "uploadFee 异常:" + ex.Message;
  533. ((object[])o)[0] = -1;
  534. ((object[])o)[3] = outParam;
  535. o = oArr;
  536. return;
  537. }
  538. }
  539. [STAThread]
  540. public void showSettlementForm(object o)
  541. {
  542. string outParam = "";
  543. JObject joSettlement = JObject.Parse(((object[])o)[1].ToString());
  544. try
  545. {
  546. IntPtr hwnd = WinApi.GetWindowsHandle("prBrowser");
  547. SettlementInfo frmSettlment = new SettlementInfo(joSettlement);
  548. //相关信息转换到结算信息面板
  549. if (frmSettlment.ShowDialog(new WindowWrapper(hwnd)) == DialogResult.OK)
  550. {
  551. ((object[])o)[0] = 0;
  552. ((object[])o)[1] = outParam;
  553. }
  554. else
  555. {
  556. outParam = "收款员取消";
  557. ((object[])o)[0] = -1;
  558. ((object[])o)[1] = outParam;
  559. }
  560. }
  561. catch (Exception ex)
  562. {
  563. outParam = "showSettlementForm 异常:" + ex.Message;
  564. ((object[])o)[0] = -1;
  565. ((object[])o)[1] = outParam;
  566. }
  567. }
  568. [STAThread]
  569. public void Exception(object o)
  570. {
  571. try
  572. {
  573. //显示异常处理界面
  574. HandleException frmEX = new HandleException();
  575. frmEX.WindowState = FormWindowState.Maximized;
  576. frmEX.ShowDialog();
  577. }
  578. catch (Exception ex)
  579. {
  580. CallBack(ex.Message);
  581. }
  582. }
  583. [STAThread]
  584. public void CheckAndClearing(object o)
  585. {
  586. try
  587. {
  588. //显示对账界面
  589. Clearing frm = new Clearing();
  590. frm.WindowState = FormWindowState.Maximized;
  591. frm.ShowDialog();
  592. }
  593. catch (Exception ex)
  594. {
  595. CallBack(ex.Message);
  596. }
  597. }
  598. [STAThread]
  599. public void PrescribeCirculation(object o)
  600. {
  601. try
  602. {
  603. //显示处方上传
  604. PrescriptionCirculation PresCir = new PrescriptionCirculation("");
  605. //PresCir.WindowState = FormWindowState.Minimized;
  606. PresCir.ShowDialog();
  607. }
  608. catch (Exception ex)
  609. {
  610. CallBack(ex.Message);
  611. }
  612. }
  613. [STAThread]
  614. public void BasicData(object o)
  615. {
  616. try
  617. {
  618. //显示异常处理界面
  619. BasicData frm = new BasicData();
  620. frm.WindowState = FormWindowState.Maximized;
  621. frm.ShowDialog();
  622. }
  623. catch (Exception ex)
  624. {
  625. CallBack(ex.Message);
  626. }
  627. }
  628. }
  629. public class WindowWrapper : System.Windows.Forms.IWin32Window
  630. {
  631. public WindowWrapper(IntPtr handle)
  632. {
  633. _hwnd = handle;
  634. }
  635. public IntPtr Handle
  636. {
  637. get { return _hwnd; }
  638. }
  639. private IntPtr _hwnd;
  640. }
  641. }