InsuBusiness.cs 70 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001100210031004100510061007100810091010101110121013101410151016101710181019102010211022102310241025102610271028102910301031103210331034103510361037103810391040104110421043104410451046104710481049105010511052105310541055105610571058105910601061106210631064106510661067106810691070107110721073107410751076107710781079108010811082108310841085108610871088108910901091109210931094109510961097109810991100110111021103110411051106110711081109111011111112111311141115111611171118111911201121112211231124112511261127112811291130113111321133113411351136113711381139114011411142114311441145114611471148114911501151115211531154115511561157115811591160116111621163116411651166116711681169117011711172117311741175117611771178117911801181118211831184118511861187118811891190119111921193119411951196119711981199120012011202120312041205120612071208120912101211121212131214121512161217121812191220122112221223122412251226122712281229123012311232123312341235123612371238123912401241124212431244124512461247124812491250125112521253125412551256125712581259126012611262126312641265126612671268126912701271127212731274127512761277127812791280128112821283128412851286128712881289129012911292129312941295129612971298129913001301130213031304130513061307130813091310131113121313131413151316131713181319132013211322132313241325132613271328132913301331133213331334133513361337133813391340134113421343134413451346134713481349135013511352135313541355135613571358135913601361136213631364136513661367136813691370137113721373137413751376137713781379138013811382138313841385138613871388
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Text;
  5. using System.Threading.Tasks;
  6. using PTMedicalInsurance.Common;
  7. using PTMedicalInsurance.Business;
  8. using System.Windows.Forms;
  9. using PTMedicalInsurance.Helper;
  10. using Newtonsoft.Json;
  11. using Newtonsoft.Json.Linq;
  12. using PTMedicalInsurance.Variables;
  13. using PTMedicalInsurance.Forms;
  14. using System.IO;
  15. using System.Reflection;
  16. using System.Data;
  17. namespace PTMedicalInsurance
  18. {
  19. public class InsuBusiness : IInsuBusiness
  20. {
  21. //定义相关的变量
  22. private Patients patient;
  23. private Fees fee;
  24. private Settlements settlement;
  25. //json对象属性
  26. private JObject joInParam;
  27. private JArray jaSession ;
  28. private JArray jaParams;
  29. private JObject joParam;
  30. private JObject joInterface;
  31. //设置业务实例
  32. CenterBusiness cBus = new CenterBusiness();
  33. HisMainBusiness hBus = new HisMainBusiness();
  34. HisIrisServices hIS = new HisIrisServices();
  35. MIIrisServices mIS= new MIIrisServices();
  36. InvokeHelper invoker = new InvokeHelper();
  37. CardReader_HN CardRead = new CardReader_HN();
  38. ReadCardClass rcl = new ReadCardClass();
  39. private string businessType;
  40. private string operationType; //RegisterOP 门诊挂号 SettlementOP门诊收费
  41. private string partialFlag;
  42. System.Type ComType = null;
  43. object ComInstance = null;
  44. public InsuBusiness()
  45. {
  46. Global.curEvt.path = Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location);
  47. ComputerInfo comp = new ComputerInfo();
  48. Global.curEvt.mac = comp.GetMAC();
  49. Global.curEvt.ip = comp.GetIP(); //"10.1.4.100";
  50. Global.pat.insuplc_admdvs = ""; //如果是NULL中心会报错
  51. }
  52. private int parseInparam(string inParam,out string errMsg)
  53. {
  54. errMsg = "";
  55. try
  56. {
  57. joInParam = JObject.Parse(inParam);
  58. jaSession = JArray.Parse(JsonHelper.getDestValue(joInParam, "session"));
  59. Global.curEvt.jaSession = jaSession;
  60. jaParams = JArray.Parse(JsonHelper.getDestValue(joInParam, "params"));
  61. joParam = JObject.FromObject(jaParams[0]);
  62. joInterface = JObject.Parse(JsonHelper.getDestValue(joInParam, "interfaceinfo"));
  63. businessType = JsonHelper.getDestValue(joInParam, "businessType");
  64. operationType = JsonHelper.getDestValue(joInParam, "operationType");
  65. return 0;
  66. }
  67. catch (Exception ex)
  68. {
  69. errMsg = "parseInparam 解析入参异常:" + errMsg;
  70. return -1;
  71. }
  72. }
  73. /// <summary>
  74. /// 签到
  75. /// </summary>
  76. /// <param name="InParam"></param>
  77. /// <returns></returns>
  78. public string Init(string InParam)
  79. {
  80. string errMsg, rtnResult ="";
  81. JObject joRtn = new JObject();
  82. try
  83. {
  84. if (hBus.initEnvironment(InParam, out errMsg) != 0)
  85. {
  86. return JsonHelper.setExceptionJson(-100, "initEnvironment 失败", errMsg).ToString();
  87. }
  88. else
  89. {
  90. if (mIS.isSigned(ref Global.curEvt.signno) != true)
  91. {
  92. //北京没有初始化
  93. Global.curEvt.signno = DateTime.Now.ToString("yyyyMMddHHmmss");
  94. //插入签到表
  95. if (mIS.saveSignRecord(Global.curEvt.signno, out errMsg) != 0)
  96. {
  97. rtnResult = JsonHelper.setIrisReturnValue(0, "北京首信医保无签到接口,HIS签到成功但插入签到表失败:" + errMsg, null).ToString();
  98. }
  99. else
  100. {
  101. rtnResult = JsonHelper.setIrisReturnValue(0, "北京首信医保无签到接口,HIS签到成功", joRtn).ToString();
  102. }
  103. }
  104. else
  105. {
  106. rtnResult = JsonHelper.setIrisReturnValue(0, "初始化成功!", null).ToString();
  107. }
  108. return rtnResult;
  109. }
  110. }
  111. catch (Exception ex)
  112. {
  113. rtnResult = JsonHelper.setExceptionJson(-100, "Init 异常", ex.Message).ToString();
  114. return rtnResult;
  115. }
  116. finally
  117. {
  118. Global.writeLog("初始化结果:" + rtnResult);
  119. }
  120. }
  121. /// <summary>
  122. /// 初始化
  123. /// </summary>
  124. /// <param name="inParam"></param>
  125. /// <param name="outParam"></param>
  126. /// <returns></returns>
  127. private int init(string inParam, out string outParam)
  128. {
  129. string errMsg;
  130. outParam = "";
  131. try
  132. {
  133. //BS架构调用方式问题,每次调用都需要重新初始化
  134. JObject joInitRtn = JObject.Parse(Init(inParam));
  135. if (JsonHelper.parseIrisRtnValue(joInitRtn, out errMsg) != 0)
  136. {
  137. outParam = JsonHelper.setExceptionJson(-100, "init(HIS医保环境初始化)", errMsg).ToString();
  138. return -1;
  139. }
  140. else
  141. {
  142. return 0;
  143. }
  144. }
  145. catch (Exception ex)
  146. {
  147. outParam = JsonHelper.setExceptionJson(-100, "init(HIS医保环境初始化)异常", ex.Message).ToString();
  148. return -1;
  149. }
  150. }
  151. /// <summary>
  152. /// 获取患者信息
  153. /// </summary>
  154. /// <param name="InParam"></param>
  155. /// <returns></returns>
  156. public string GetPatientInfo(string InParam)
  157. {
  158. Global.writeLog("GetPatientInfo入参:" + JsonHelper.Compress(InParam));
  159. //设置返回值,错误信息
  160. int errCode;
  161. string errMsg, rtnResult = "",outParam;
  162. JObject joPatInfoRtn = new JObject();
  163. //BS架构调用方式问题,每次调用都需要重新初始化
  164. if (init(InParam,out outParam)!= 0)
  165. {
  166. rtnResult = outParam;
  167. return rtnResult;
  168. }
  169. JObject joInParam = JObject.Parse(InParam);
  170. string businessType = JsonHelper.getDestValue(joInParam,"businessType");
  171. Global.pat.admID = JsonHelper.getDestValue(joInParam, "params[0].admID");
  172. if (!string.IsNullOrEmpty(Global.pat.admID))
  173. {
  174. Global.pat.adm_Dr = int.Parse(Global.pat.admID);
  175. }
  176. try
  177. {
  178. switch (businessType)
  179. {
  180. case "M1"://门诊读卡
  181. {
  182. //打开读卡窗口,操作员选择读卡类型后进行读卡器读卡,再进行1101获取参保信息
  183. if (hBus.readCard(out outParam) != 0)
  184. {
  185. rtnResult = JsonHelper.setExceptionJson(-1, "读卡失败!", outParam).ToString();
  186. }
  187. else
  188. {
  189. string patInfo = outParam;
  190. JObject joPatInfo = hBus.ConvertXMLToObject(outParam);
  191. //展示患者信息界面
  192. if (hBus.showPatInfo(joPatInfo, out outParam) != 0)
  193. {
  194. rtnResult = outParam;
  195. MessageBox.Show(rtnResult);
  196. //return rtnResult;
  197. }
  198. else
  199. {
  200. //赋值全局变量,统一异地和本地返回的参保信息
  201. hBus.setGlobalPatAfaterShowPatInfo(joPatInfo, out joPatInfoRtn, out errMsg);
  202. //在这里判断,建档的时候会直接拦截,因此加上判断条件
  203. //校验HIS姓名与医保姓名是否一致
  204. if (!string.IsNullOrEmpty(Global.pat.admID))
  205. {
  206. if (hBus.checkName(Global.pat.name, out errMsg) != 0)
  207. {
  208. rtnResult = JsonHelper.setExceptionJson(-1, "校验HIS与医保姓名是否一致", errMsg).ToString();
  209. return rtnResult;
  210. }
  211. }
  212. //插入患者本次就诊用的参保信息
  213. if (mIS.insertPatCurInsuInfo(joPatInfo, out outParam) != 0)
  214. {
  215. rtnResult = JsonHelper.setExceptionJson(-1, "插入患者参保信息失败,请联系管理员!", outParam).ToString();
  216. //return rtnResult;
  217. }
  218. rtnResult = JsonHelper.setIrisReturnValue(0, "", joPatInfoRtn).ToString();
  219. //return rtnResult;
  220. }
  221. }
  222. break;
  223. }
  224. case "Z1"://住院读卡
  225. {
  226. //打开读卡窗口,操作员选择读卡类型后进行读卡器读卡,再进行1101获取参保信息
  227. if (hBus.readCard(out outParam) != 0)
  228. {
  229. rtnResult = JsonHelper.setExceptionJson(-1, "读卡失败!", outParam).ToString();
  230. }
  231. else
  232. {
  233. string patInfo = outParam;
  234. JObject joPatInfo = hBus.ConvertXMLToObject(outParam);
  235. //展示患者信息界面
  236. if (hBus.showPatInfo(joPatInfo, out outParam) != 0)
  237. {
  238. rtnResult = outParam;
  239. MessageBox.Show(rtnResult);
  240. //return rtnResult;
  241. }
  242. else
  243. {
  244. //赋值全局变量,统一异地和本地返回的参保信息
  245. hBus.setGlobalPatAfaterShowPatInfo(joPatInfo, out joPatInfoRtn, out errMsg);
  246. //在这里判断,建档的时候会直接拦截,因此加上判断条件
  247. //校验HIS姓名与医保姓名是否一致
  248. if (!string.IsNullOrEmpty(Global.pat.admID))
  249. {
  250. if (hBus.checkName(Global.pat.name, out errMsg) != 0)
  251. {
  252. rtnResult = JsonHelper.setExceptionJson(-1, "校验HIS与医保姓名是否一致", errMsg).ToString();
  253. return rtnResult;
  254. }
  255. }
  256. //插入患者本次就诊用的参保信息
  257. if (mIS.insertPatCurInsuInfo(joPatInfo, out outParam) != 0)
  258. {
  259. rtnResult = JsonHelper.setExceptionJson(-1, "插入患者参保信息失败,请联系管理员!", outParam).ToString();
  260. //return rtnResult;
  261. }
  262. rtnResult = JsonHelper.setIrisReturnValue(0, "", joPatInfoRtn).ToString();
  263. //return rtnResult;
  264. }
  265. }
  266. break;
  267. }
  268. case "MedicalOrderSharing": //医嘱共享 MedicalOrderSharing MedicalOrderSharing
  269. {
  270. string type = JsonHelper.getDestValue(joInParam, "params[0].type"); //调用医嘱共享业务接口-00:查询门诊历史交易 01:参保人照片
  271. Global.pat.psn_no = JsonHelper.getDestValue(joInParam, "params[0].psn_No");
  272. Global.inf.interfaceDr = int.Parse(JsonHelper.getDestValue(joInParam, "interfaceID"));
  273. Global.pat.adm_Dr = int.Parse(JsonHelper.getDestValue(joInParam, "params[0].admID"));
  274. Global.pat.name = JsonHelper.getDestValue(joInParam, "params[0].PatientName");
  275. Global.pat.certNO = JsonHelper.getDestValue(joInParam, "params[0].certNO");
  276. Global.user.ID = JsonHelper.getDestValue(joInParam, "session[0].userID");
  277. JObject joRtn = mIS.getInterface_TY(Global.inf.interfaceDr.ToString(), "");
  278. Global.inf.hospitalDr = int.Parse(JsonHelper.getDestValue(joRtn, "HospitalDr"));
  279. //查询参保人员信息
  280. string sqlStr = " SELECT TOP 1 * FROM BS_MIPatCurrentInsuInfo "
  281. + " WHERE Interface_Dr=" + Global.inf.interfaceDr
  282. + " AND Hospital_Dr=" + Global.inf.hospitalDr
  283. + " And PersonalNO='" + Global.pat.psn_no + "'";
  284. JObject joSqlstr = new JObject();
  285. joSqlstr.Add("sqlStr", sqlStr);
  286. JArray jaParam = new JArray();
  287. jaParam.Add(joSqlstr);
  288. JObject joSettlQuery = new JObject();
  289. joSettlQuery.Add("params", jaParam);
  290. joSettlQuery.Add("code", "09010082");
  291. JObject joInRtn = invoker.invokeInsuService(joSettlQuery.ToString(), "查询医保平台患者参保信息");
  292. string sOther = JsonHelper.getDestValue(joInRtn, "result.rows[0].naty"); //0本地 1异地
  293. //根据患者的医保编码长度来判断是否本地或异地患者
  294. if (sOther == "0")
  295. {
  296. #region【调用医嘱共享业务接口-00:查询门诊历史交易 01:参保人照片】
  297. JObject joMedOrderShare = new JObject();
  298. //00调用医嘱共享接口查询门诊历史交易
  299. if (hBus.MedInsuOrderShareInfo("00", out joMedOrderShare, out outParam) != 0)
  300. {
  301. rcl.Close(ComType, ComInstance, out errMsg);
  302. rtnResult = JsonHelper.setExceptionJson(-101, "MedInsuOrderShareInfo-00:", outParam).ToString();
  303. return rtnResult;
  304. }
  305. else
  306. {
  307. //调用IRIS服务插入医嘱共享信息表
  308. if (mIS.insertMedOrderShareInfo("00", joMedOrderShare, out outParam) != 0)
  309. {
  310. rcl.Close(ComType, ComInstance, out errMsg);
  311. rtnResult = JsonHelper.setExceptionJson(-102, "insertMedOrderShareInfo-00:", outParam).ToString();
  312. return rtnResult;
  313. }
  314. }
  315. //01调用医嘱共享接口查询患者照片
  316. if (hBus.MedInsuOrderShareInfo("01", out joMedOrderShare, out outParam) != 0)
  317. {
  318. rcl.Close(ComType, ComInstance, out errMsg);
  319. rtnResult = JsonHelper.setExceptionJson(-101, "MedInsuOrderShareInfo-01:", outParam).ToString();
  320. return rtnResult;
  321. }
  322. else
  323. {
  324. //调用IRIS服务插入医嘱共享信息表
  325. if (mIS.insertMedOrderShareInfo("01", joMedOrderShare, out outParam) != 0)
  326. {
  327. rcl.Close(ComType, ComInstance, out errMsg);
  328. rtnResult = JsonHelper.setExceptionJson(-102, "insertMedOrderShareInfo-01:", outParam).ToString();
  329. return rtnResult;
  330. }
  331. }
  332. rtnResult = JsonHelper.setExceptionJson(0, "insertMedOrderShareInfo-01:", outParam).ToString();
  333. return rtnResult;
  334. #endregion
  335. }
  336. else
  337. {
  338. rtnResult = JsonHelper.setExceptionJson(0, "insertMedOrderShareInfo-03:", "异地患者不需要调用医嘱共享业务接口").ToString();
  339. return rtnResult;
  340. }
  341. break;
  342. }
  343. }
  344. return rtnResult;
  345. }
  346. catch (Exception ex)
  347. {
  348. rtnResult = JsonHelper.setIrisReturnValue(-1 , "GetPatientInfo发生异常;" + ex.Message,null).ToString();
  349. return rtnResult;
  350. }
  351. finally
  352. {
  353. Global.writeLog("GetPatientInfo出参:" + JsonHelper.Compress(rtnResult));
  354. }
  355. }
  356. /// <summary>
  357. /// 登记
  358. /// </summary>
  359. /// <param name="InParam"></param>
  360. /// <returns></returns>
  361. public string Register(string InParam)
  362. {
  363. Global.writeLog("Register 入参:" + JsonHelper.Compress(InParam));
  364. //设置返回值,错误信息
  365. string errMsg, rtnResult = "", outParam;
  366. try
  367. {
  368. //解析入参
  369. if (parseInparam(InParam, out errMsg) != 0)
  370. {
  371. rtnResult = JsonHelper.setExceptionJson(-1, "", errMsg).ToString();
  372. return rtnResult;
  373. }
  374. //BS架构调用方式问题,每次调用都需要重新初始化
  375. if (init(InParam, out outParam) != 0)
  376. {
  377. rtnResult = outParam;
  378. return rtnResult;
  379. }
  380. //获取pat
  381. hBus.GetRegPatInfo(businessType, joInParam, out Global.pat);
  382. switch (businessType)
  383. {
  384. case "M2"://门诊登记
  385. {
  386. break;
  387. }
  388. case "M2C"://门诊登记撤销
  389. {
  390. break;
  391. }
  392. case "Z0"://住院修改
  393. {
  394. break;
  395. }
  396. case "Z2"://入院登记
  397. {
  398. string regInParam = "";
  399. Global.pat.admType = 2;
  400. Global.pat.RYorCY = "1";
  401. //需要HIS生成一个唯一的登记流水号前端展示出来 手工录入首信客户端
  402. Global.pat.mdtrtID = "05155009" + DateTime.Now.ToString("yyMMddHHmmss"); //"05155009" + DateTime.Now.ToString("yyMMddHHmmss")
  403. if (Global.pat.mdtrtID == "")
  404. {
  405. rtnResult = JsonHelper.setExceptionJson(-1, "住院登记流水号不能为空!", outParam).ToString();
  406. return rtnResult;
  407. }
  408. if (hBus.GetInPatRegisterFormNew(out regInParam) == 0)
  409. {
  410. //插入医保平台
  411. JObject joRegInfo = JObject.Parse(JsonHelper.setCenterInpar_plain("2401", regInParam));
  412. if (mIS.saveInpatRegisterInfoNew(joRegInfo, Global.pat.mdtrtID, out outParam) != 0)
  413. {
  414. rtnResult = JsonHelper.setExceptionJson(-1, "云平台保存登记信息", outParam).ToString();
  415. return rtnResult;
  416. }
  417. //返回登记信息,插入HIS
  418. if (hIS.returnRegisterInfoNew(joRegInfo, Global.pat.mdtrtID, out outParam) != 0)
  419. {
  420. rtnResult = JsonHelper.setExceptionJson(-1, "HIS平台保存登记信息", outParam).ToString();
  421. return rtnResult;
  422. }
  423. else
  424. {
  425. rtnResult = JsonHelper.setIrisReturnValue(0, "登记成功", null).ToString();
  426. return rtnResult;
  427. }
  428. }
  429. else
  430. {
  431. rtnResult = JsonHelper.setExceptionJson(-1, "获取住院登记信息", regInParam).ToString();
  432. return rtnResult;
  433. }
  434. }
  435. case "Z2C"://入院登记取消
  436. {
  437. //北京无取消中心登记接口 直接返回中西取消成功后取消医保平台登记
  438. if (mIS.cancleRegister(1, out outParam) != 0)
  439. {
  440. rtnResult = JsonHelper.setExceptionJson(-1, "中心取消登记成功,但云医保平台取消失败,", outParam).ToString();
  441. return rtnResult;
  442. }
  443. //取消HIS 登记
  444. if (hIS.cancleRegister( out outParam) != 0)
  445. {
  446. rtnResult = JsonHelper.setExceptionJson(-1, "中心和云医保平台取消登记成功,但HIS取消失败,", outParam).ToString();
  447. return rtnResult;
  448. }
  449. else
  450. {
  451. //CM 20230602 删除医保平台医保费用明细上传表数据
  452. mIS.deleteFee(out errMsg);
  453. rtnResult = JsonHelper.setIrisReturnValue(0, "取消医保登记成功", null).ToString();
  454. return rtnResult;
  455. }
  456. }
  457. case "Z6"://出院登记
  458. {
  459. rtnResult = JsonHelper.setIrisReturnValue(0, "出院登记成功", null).ToString();
  460. return rtnResult;
  461. }
  462. case "Z6C"://出院登记取消
  463. {
  464. rtnResult = JsonHelper.setIrisReturnValue(0, "取消出院登记成功", null).ToString();
  465. return rtnResult;
  466. }
  467. default:
  468. {
  469. rtnResult = JsonHelper.setExceptionJson(-1, "Register 交易", "传入的业务编码不对!").ToString();
  470. return rtnResult;
  471. }
  472. }
  473. }
  474. catch (Exception ex)
  475. {
  476. rtnResult = JsonHelper.setIrisReturnValue(-1, "Register 发生异常;" + ex.Message, null).ToString();
  477. return rtnResult;
  478. }
  479. finally
  480. {
  481. Global.writeLog("Register 出参:" + JsonHelper.Compress(rtnResult));
  482. }
  483. return "";
  484. }
  485. /// <summary>
  486. /// 费用上传
  487. /// </summary>
  488. /// <param name="InParam"></param>
  489. /// <returns></returns>
  490. public string FeeUpload(string InParam)
  491. {
  492. Global.writeLog("FeeUpload 入参:" + JsonHelper.Compress(InParam));
  493. //设置返回值,错误信息
  494. int errCode;
  495. string errMsg, rtnResult = "", outParam;
  496. try
  497. {
  498. //解析入参
  499. if (parseInparam(InParam, out errMsg) != 0)
  500. {
  501. rtnResult = JsonHelper.setExceptionJson(-1, "", errMsg).ToString();
  502. return rtnResult;
  503. }
  504. //BS架构调用方式问题,每次调用都需要重新初始化
  505. if (init(InParam, out outParam) != 0)
  506. {
  507. rtnResult = outParam;
  508. return rtnResult;
  509. }
  510. //获取pat
  511. hBus.GetFeeHisInfo(businessType, joInParam, out Global.pat);
  512. switch (businessType)
  513. {
  514. case "M3"://门诊费用上传
  515. {
  516. break;
  517. }
  518. case "M3C"://门诊费用撤销
  519. {
  520. break;
  521. }
  522. case "Z3"://入院费用上传
  523. {
  524. Global.pat.admType = 2;
  525. //从医保平台获取患者详细的医保登记信息
  526. if (mIS.queryRegisterInfo(1, out outParam) != 0)
  527. {
  528. rtnResult = JsonHelper.setExceptionJson(-1, "查询患者云平台登记信息", outParam).ToString();
  529. return rtnResult;
  530. }
  531. else
  532. {
  533. JObject joReg = JObject.Parse(outParam);
  534. Global.pat.medType = JsonHelper.getDestValue(joReg, "data.MedicalType");
  535. Global.pat.insuType = JsonHelper.getDestValue(joReg, "data.InsuType");
  536. Global.pat.gend = JsonHelper.getDestValue(joReg, "data.Gend");
  537. if (Global.pat.gend == "")
  538. Global.pat.gend = "1";
  539. }
  540. //先取消中心费用传送
  541. // cBus.cancleFeeUpload("2302", out errMsg);
  542. //再删除医保传送表的数据
  543. //mIS.deleteFee( out errMsg);
  544. //开始进行费用传送
  545. //调用HIS费用查询信息
  546. if (hIS.getHisFee(Global.pat, out outParam) != 0)
  547. {
  548. rtnResult = JsonHelper.setExceptionJson(-1, "获取HIS费用", outParam).ToString();
  549. return rtnResult;
  550. }
  551. //调用医保平台转换
  552. JObject joHisFee = JObject.Parse(outParam);
  553. if (mIS.convertHisFeeWithInsuCode(joHisFee,out outParam) != 0)
  554. {
  555. rtnResult = JsonHelper.setExceptionJson(-1, "转换HIS费用", outParam).ToString();
  556. return rtnResult;
  557. }
  558. JArray jaFeeDetail = JArray.Parse(JsonHelper.getDestValue(JObject.Parse(outParam), "data"));
  559. //组织出院诊断和手术信息
  560. if (hBus.writeDisToFile(out outParam) != 0)
  561. {
  562. rtnResult = JsonHelper.setExceptionJson(-1, "组织zyjd出院诊断和手术入参", outParam).ToString();
  563. return rtnResult;
  564. }
  565. else
  566. {
  567. //写入文件内容
  568. Global.writeInFile("zyjd" + Global.pat.adm_Dr, outParam);
  569. }
  570. //按指定条数分割后上传,保存,更新
  571. if (hBus.writeFeeToFile(jaFeeDetail, out outParam) != 0)
  572. {
  573. rtnResult = JsonHelper.setExceptionJson(-1, "组织zyfy出院费用入参", outParam).ToString();
  574. return rtnResult;
  575. }
  576. else
  577. {
  578. //写入文件内容
  579. Global.writeInFile("zyfy" + Global.pat.adm_Dr, outParam);
  580. rtnResult = JsonHelper.setIrisReturnValue(0, "住院费用【" + "zyfy" + Global.pat.adm_Dr + ".in】导出成功", null).ToString();
  581. return rtnResult;
  582. }
  583. }
  584. case "Z3C"://住院费用上传取消
  585. {
  586. rtnResult = JsonHelper.setIrisReturnValue(0, "住院费用上传取消成功", null).ToString();
  587. return rtnResult;
  588. //if (mIS.deleteFee(out errMsg) != 0)
  589. //{
  590. // rtnResult = JsonHelper.setExceptionJson(-1, "删除医保平台费用", errMsg).ToString();
  591. // return rtnResult;
  592. //}
  593. //else
  594. //{
  595. // rtnResult = JsonHelper.setIrisReturnValue(0, "住院费用上传取消成功", null).ToString();
  596. // return rtnResult;
  597. //}
  598. }
  599. default:
  600. {
  601. rtnResult = JsonHelper.setExceptionJson(-1, "FeeUpload 交易", "传入的业务编码不对!").ToString();
  602. return rtnResult;
  603. }
  604. }
  605. return rtnResult;
  606. }
  607. catch (Exception ex)
  608. {
  609. rtnResult = JsonHelper.setExceptionJson(-1, "FeeUpload 交易", ex.Message).ToString();
  610. return rtnResult;
  611. }
  612. finally
  613. {
  614. Global.writeLog("FeeUpload 出参:" + JsonHelper.Compress(rtnResult));
  615. }
  616. }
  617. /// <summary>
  618. /// 结算
  619. /// </summary>
  620. /// <param name="InParam"></param>
  621. /// <returns></returns>
  622. public string Settlement(string InParam)
  623. {
  624. Global.writeLog("Settlement 入参:" + JsonHelper.Compress(InParam));
  625. //设置返回值,错误信息
  626. string errMsg, rtnResult = "", outParam;
  627. try
  628. {
  629. //解析入参
  630. if (parseInparam(InParam, out errMsg) != 0)
  631. {
  632. rtnResult = JsonHelper.setExceptionJson(-1, "", errMsg).ToString();
  633. return rtnResult;
  634. }
  635. //BS架构调用方式问题,每次调用都需要重新初始化
  636. if (init(InParam, out outParam) != 0)
  637. {
  638. rtnResult = outParam;
  639. return rtnResult;
  640. }
  641. //获取pat
  642. hBus.GetSettlementHisInfo(businessType, joInParam, out Global.pat);
  643. //MessageBox.Show("businessType:" + businessType + "|||Global.pat.partialFlag:" + Global.pat.partialFlag);
  644. switch (businessType)
  645. {
  646. case "M4"://门诊预结算
  647. {
  648. OutpatientRegistration frmReg = new OutpatientRegistration();
  649. if (frmReg.ShowDialog() == DialogResult.OK)
  650. {
  651. rtnResult = "调用结束";
  652. }
  653. break;
  654. }
  655. case "M4C"://门诊预结算撤销
  656. {
  657. break;
  658. }
  659. case "M5"://门诊结算
  660. {
  661. string patInfo = "";
  662. string CloseMsg = "";
  663. JObject joPatInfo = new JObject();
  664. JObject jo = new JObject();
  665. if (hBus.readCardSettle(out ComType, out ComInstance, out outParam) != 0)
  666. {
  667. rcl.Close(ComType, ComInstance, out CloseMsg);
  668. rtnResult = JsonHelper.setExceptionJson(-100, "readCard:", outParam).ToString();
  669. return rtnResult;
  670. }
  671. else
  672. {
  673. patInfo = outParam;
  674. joPatInfo = hBus.ConvertXMLToObject(outParam);
  675. //展示患者信息界面
  676. //if (hBus.showPatInfo(joPatInfo, out outParam) != 0)
  677. //{
  678. // rcl.Close(ComType, ComInstance, out CloseMsg);
  679. // rtnResult = JsonHelper.setExceptionJson(-100, "showPatInfoNew:", outParam).ToString();
  680. // return rtnResult;
  681. //}
  682. //患者信息赋值给全局变量
  683. if (hBus.setGlobalPatAfaterShowPatInfo(joPatInfo, out jo, out errMsg) != 0)
  684. {
  685. rcl.Close(ComType, ComInstance, out CloseMsg);
  686. rtnResult = JsonHelper.setExceptionJson(-1, "取参保返回值赋值全局变量setGlobalPatAfaterShowPatInfo", errMsg).ToString();
  687. return rtnResult;
  688. }
  689. #region【调用医嘱共享业务接口-00:查询门诊历史交易 01:参保人照片】
  690. if ((Global.inf.operationType == "RegisterOP") && (Global.pat.bMedInsuShare)) //挂号结算的时候调用
  691. {
  692. JObject joMedOrderShare = new JObject();
  693. //00调用医嘱共享接口查询门诊历史交易
  694. if (hBus.MedInsuOrderShareInfo("00", out joMedOrderShare, out outParam) != 0)
  695. {
  696. rcl.Close(ComType, ComInstance, out CloseMsg);
  697. rtnResult = JsonHelper.setExceptionJson(-100, "MedInsuOrderShareInfo-00:", outParam).ToString();
  698. return rtnResult;
  699. }
  700. else
  701. {
  702. //调用IRIS服务插入医嘱共享信息表
  703. if (mIS.insertMedOrderShareInfo("00", joMedOrderShare, out outParam) != 0)
  704. {
  705. rcl.Close(ComType, ComInstance, out CloseMsg);
  706. rtnResult = JsonHelper.setExceptionJson(-100, "insertMedOrderShareInfo-00:", outParam).ToString();
  707. return rtnResult;
  708. }
  709. }
  710. //01调用医嘱共享接口获取参保人员照片
  711. if (hBus.MedInsuOrderShareInfo("01", out joMedOrderShare, out outParam) != 0)
  712. {
  713. rcl.Close(ComType, ComInstance, out CloseMsg);
  714. rtnResult = JsonHelper.setExceptionJson(-100, "MedInsuOrderShareInfo-01:", outParam).ToString();
  715. return rtnResult;
  716. }
  717. else
  718. {
  719. //调用IRIS服务插入医嘱共享信息表
  720. if (mIS.insertMedOrderShareInfo("01", joMedOrderShare, out outParam) != 0)
  721. {
  722. rcl.Close(ComType, ComInstance, out CloseMsg);
  723. rtnResult = JsonHelper.setExceptionJson(-100, "insertMedOrderShareInfo-01:", outParam).ToString();
  724. return rtnResult;
  725. }
  726. }
  727. }
  728. #endregion
  729. }
  730. //校验HIS姓名与医保姓名是否一致
  731. if (hBus.checkName(Global.pat.name, out errMsg) != 0)
  732. {
  733. rcl.Close(ComType, ComInstance, out CloseMsg);
  734. rtnResult = JsonHelper.setExceptionJson(-1, "校验HIS与医保姓名是否一致", errMsg).ToString();
  735. return rtnResult;
  736. }
  737. //北京医保没有门诊挂号和门诊就诊信息上传交易,这里自定义一个登记流水号
  738. Global.pat.mdtrtID = "HIS05155009" + DateTime.Now.ToString("yyMMddHHmmss");
  739. //插入患者本次就诊用的参保信息
  740. if (mIS.insertPatCurInsuInfo(joPatInfo, out outParam) != 0)
  741. {
  742. if (DialogResult.Yes != MessageBox.Show(outParam, " 是否继续? ", MessageBoxButtons.YesNo))
  743. {
  744. rcl.Close(ComType, ComInstance, out CloseMsg);
  745. rtnResult = JsonHelper.setExceptionJson(-1, "插入患者本次就诊用的参保信息,请联系管理员!是否继续?", outParam).ToString();
  746. return rtnResult;
  747. }
  748. }
  749. //显示门诊登记面板
  750. //if (hBus.showOutPatRegisterForm(out outParam, out string presInfo) != 0)
  751. //{
  752. // rcl.Close(ComType, ComInstance, out CloseMsg);
  753. // rtnResult = JsonHelper.setExceptionJson(-1, "显示门诊登记面板", outParam).ToString();
  754. // return rtnResult;
  755. //}
  756. //显示门诊登记面板和患者参保信息
  757. if (hBus.showOutPatRegisterFormNew(joPatInfo, out outParam, out string presInfo) != 0)
  758. {
  759. rcl.Close(ComType, ComInstance, out CloseMsg);
  760. rtnResult = JsonHelper.setExceptionJson(-1, "显示门诊登记面板", outParam).ToString();
  761. return rtnResult;
  762. }
  763. JObject joReg = JObject.Parse(outParam);
  764. //组织医保平台插入门诊医保登记参数
  765. JObject jo2201Inpar = JObject.Parse(JsonHelper.getDestProperty(joReg, "data"));
  766. JObject jo2203Inpar = new JObject();
  767. jo2203Inpar.Add("mdtrtinfo", JObject.Parse(JsonHelper.getDestValue(joReg, "mdtrtinfo")));
  768. jo2203Inpar.Add("diseinfo", JArray.Parse(JsonHelper.getDestValue(joReg, "diseinfo")));
  769. //插入门诊医保登记信息
  770. if (mIS.saveOutpatRegisterInfo(jo2201Inpar, jo2203Inpar, out errMsg) != 0)
  771. {
  772. rcl.Close(ComType, ComInstance, out CloseMsg);
  773. rtnResult = JsonHelper.setExceptionJson(-1, "门诊登记医保平台保存失败,请联系管理员!", errMsg).ToString();
  774. return rtnResult;
  775. }
  776. //组织费用明细参数
  777. if (hBus.setFeeInParam(out outParam) != 0)
  778. {
  779. rcl.Close(ComType, ComInstance, out CloseMsg);
  780. rtnResult = JsonHelper.setExceptionJson(-1, "组织费用明细参数异常", outParam).ToString();
  781. return rtnResult;
  782. }
  783. //费用分解 feeitemarray
  784. string sMXXX = outParam;
  785. string sCFXX = presInfo;
  786. //预结算、divide费用分解、DivideNation异地门诊收费预结算
  787. if (hBus.preSettlementOutPatOP(ComType, ComInstance, sCFXX, sMXXX, out outParam) != 0)
  788. {
  789. rcl.Close(ComType, ComInstance, out CloseMsg);
  790. rtnResult = JsonHelper.setExceptionJson(-1, "门诊医保预结算信息", outParam).ToString();
  791. return rtnResult;
  792. }
  793. //正式结算、本地Trade结算确认、HISFinishedNotice本地门诊交易完成通知(本地对账),异地TradeNation门诊结算、TradeCheckNation异地门诊交易实时对账
  794. if (hBus.SettlementOPOutPat(ComType, ComInstance, sCFXX, sMXXX, out outParam) != 0)
  795. {
  796. rcl.Close(ComType, ComInstance, out CloseMsg);
  797. rtnResult = JsonHelper.setExceptionJson(-1, "门诊医保正式结算信息", outParam).ToString();
  798. return rtnResult;
  799. }
  800. else
  801. {
  802. //挂号结算不弹框展示医保返回费用信息
  803. if (Global.inf.operationType != "RegisterOP")
  804. {
  805. //展示医保返回费用信息
  806. if (hBus.showMedInsuFeeOP(Global.Set.SettleStr, out outParam) != 0)
  807. {
  808. rcl.Close(ComType, ComInstance, out CloseMsg);
  809. rtnResult = JsonHelper.setExceptionJson(-1, "展示门诊结算返回费用明细信息错误", outParam).ToString();
  810. return rtnResult;
  811. }
  812. }
  813. //返回给云医保平台结算信息
  814. if (mIS.saveSettlementOP(Global.Set.SettleStr, Global.pat.iOtherProvLocal, out errMsg) != 0)
  815. {
  816. rcl.Close(ComType, ComInstance, out CloseMsg);
  817. rtnResult = JsonHelper.setExceptionJson(-1, "结算成功,但云医保平台保存失败", errMsg).ToString();
  818. return rtnResult;
  819. }
  820. //返回给HIS
  821. if (hIS.returnOutpatSettlementInfoOP(Global.Set.SettleStr, Global.pat.iOtherProvLocal, out outParam) != 0)
  822. {
  823. rcl.Close(ComType, ComInstance, out CloseMsg);
  824. rtnResult = JsonHelper.setExceptionJson(-1, "返回门诊结算信息给HIS", outParam).ToString();
  825. return rtnResult;
  826. }
  827. else
  828. {
  829. //MessageBox.Show("returnToFrontEndAfterSettlementOP:" + Global.Set.SettleStr);
  830. rcl.Close(ComType, ComInstance, out CloseMsg);
  831. JObject joHisServieRtn = JObject.Parse(outParam);
  832. hBus.returnToFrontEndAfterSettlementOP(Global.Set.SettleStr, Global.pat.iOtherProvLocal, joHisServieRtn, out outParam);
  833. //本地、异地门诊结算完成后 打印收据
  834. if (hBus.printBill(ComType, ComInstance, out string PrintMsg) != 0)
  835. {
  836. rcl.Close(ComType, ComInstance, out CloseMsg);
  837. MessageBox.Show("收据打印异常,请在【医保结算查询打印】菜单重新打印:" + PrintMsg);
  838. rtnResult = JsonHelper.setIrisReturnValue(0, "结算成功,收据打印失败" + PrintMsg, JObject.Parse(outParam)).ToString();
  839. }
  840. else
  841. {
  842. rcl.Close(ComType, ComInstance, out CloseMsg);
  843. rtnResult = JsonHelper.setIrisReturnValue(0, "结算成功", JObject.Parse(outParam)).ToString();
  844. }
  845. return rtnResult;
  846. }
  847. }
  848. }
  849. case "M5C"://门诊结算撤销
  850. {
  851. string CloseMsg = "";
  852. //hIS.cancleSettlementInfoHAHA(null, out string rr);
  853. //rtnResult = JsonHelper.setIrisReturnValue(0, "取消结算成功", null).ToString();
  854. //return rtnResult;
  855. //撤销中心医保结算
  856. if (hBus.cancelSettleMentRecord(out outParam) != 0)
  857. {
  858. rtnResult = JsonHelper.setExceptionJson(-1, "中心取消结算失败,", outParam).ToString();
  859. rcl.Close(ComType, ComInstance, out CloseMsg);
  860. return rtnResult;
  861. }
  862. else
  863. {
  864. string newSettleID = outParam; //退费成功中心返回的退费交易流水号tradeno
  865. //退云医保平台结算
  866. if (mIS.cancleSettlement(newSettleID, out outParam) != 0)
  867. {
  868. rtnResult = JsonHelper.setExceptionJson(-1, "取消平台结算信息", outParam).ToString();
  869. //return rtnResult;
  870. }
  871. int admType = 3; //门诊结算
  872. if (Global.inf.operationType == "RegisterOP")
  873. admType = 7; //挂号
  874. //取消医保平台登记
  875. if (mIS.cancleRegister(admType, out outParam) != 0)
  876. {
  877. rtnResult = JsonHelper.setExceptionJson(-1, "中心取消登记成功,但云医保平台取消失败,", outParam).ToString();
  878. //return rtnResult;
  879. }
  880. //退HIS结算
  881. if (hIS.cancleSettlementInfo(joParam, out outParam) != 0)
  882. {
  883. rtnResult = JsonHelper.setExceptionJson(-1, "取消HIS结算信息", outParam).ToString();
  884. return rtnResult;
  885. }
  886. else
  887. {
  888. rtnResult = JsonHelper.setIrisReturnValue(0, "取消结算成功", null).ToString();
  889. return rtnResult;
  890. }
  891. }
  892. }
  893. case "Z4"://住院预结算
  894. {
  895. Global.pat.RYorCY = "2";
  896. Global.pat.admType = 2;
  897. rtnResult = JsonHelper.setExceptionJson(-100, "该接口不支持预结算!", null).ToString();
  898. return rtnResult;
  899. }
  900. case "Z4C"://住院预结算撤销
  901. {
  902. rtnResult = JsonHelper.setExceptionJson(-100, "该接口不支持预结算取消!", null).ToString();
  903. return rtnResult;
  904. }
  905. case "Z5"://住院结算
  906. {
  907. //Global.pat.hisSumAmt = "147.66";
  908. Global.pat.hisPrePayment = "0.00"; //医保结算不加入预交金
  909. Global.Set.settlID = "HIS05155009" + DateTime.Now.ToString("yyMMddHHmmss");
  910. //弹框输入本次住院报销金额
  911. if (hBus.InputInsuAmt(Global.pat.hisSumAmt, Global.pat.hisPrePayment, out outParam) != 0)
  912. {
  913. rtnResult = JsonHelper.setExceptionJson(-1, "获取医保基金支付金额", outParam).ToString();
  914. return rtnResult;
  915. }
  916. else
  917. {
  918. //从云医保平台获取患者详细的医保登记信息
  919. if (mIS.queryRegisterInfo(1, out outParam) != 0)
  920. {
  921. rtnResult = JsonHelper.setExceptionJson(-1, "查询患者云平台登记信息", outParam).ToString();
  922. return rtnResult;
  923. }
  924. else
  925. {
  926. JObject joReg = JObject.Parse(outParam);
  927. Global.pat.medType = JsonHelper.getDestValue(joReg, "data.MedicalType");
  928. Global.pat.insuType = JsonHelper.getDestValue(joReg, "data.InsuType");
  929. Global.pat.mdtrtcertType= JsonHelper.getDestValue(joReg, "data.CertificateType");
  930. Global.pat.mdtrtcertNO = JsonHelper.getDestValue(joReg, "data.CertificateNO");
  931. Global.pat.DiseasecCode= JsonHelper.getDestValue(joReg, "data.MainDiagCode");
  932. Global.pat.DiseasecName = JsonHelper.getDestValue(joReg, "data.MainDiagName");
  933. }
  934. //返回给云医保平台结算信息
  935. if (mIS.saveSettlementNewIP(out errMsg) != 0)
  936. {
  937. rtnResult = JsonHelper.setExceptionJson(-1, "医保结算成功,但云医保平台保存失败", errMsg).ToString();
  938. return rtnResult;
  939. }
  940. //返回给HIS
  941. if (hIS.returnOutpatSettlementInfoNewIP(joParam,out outParam) != 0)
  942. {
  943. rtnResult = JsonHelper.setExceptionJson(-1, "返回住院结算信息给HIS", outParam).ToString();
  944. return rtnResult;
  945. }
  946. else
  947. {
  948. JObject joHisServieRtn = JObject.Parse(outParam);
  949. hBus.returnToFrontEndAfterSettlementNewIP(joHisServieRtn, out outParam);
  950. rtnResult = JsonHelper.setIrisReturnValue(0, "结算成功", JObject.Parse(outParam)).ToString();
  951. return rtnResult;
  952. }
  953. }
  954. }
  955. case "Z5C"://住院结算撤销
  956. {
  957. //查询结算表
  958. string sqlStr = " SELECT Top 1 * FROM BS_MedInsuSettlement "
  959. + " WHERE billType = 1 and ValidFlag=1 and Hospital_Dr=" + Global.inf.hospitalDr
  960. + " and Adm_Dr='" + Global.pat.adm_Dr + "'"
  961. + " and MdtrtID='" + Global.pat.mdtrtID + "'"
  962. + " And SettlementID='" + Global.pat.settlID + "'"
  963. + " Order By ID DESC ";
  964. JObject joSql = new JObject();
  965. joSql.Add("sqlStr", sqlStr);
  966. JObject joSettlInfo = mIS.QuerySettlementInfo(joSql);
  967. if (JsonHelper.getDestValue(joSettlInfo, "result.data[0]") == "")
  968. {
  969. rtnResult = JsonHelper.setExceptionJson(-1, "09010059查询医保平台结算记录表返回", "未查询到医保平台结算记录").ToString();
  970. return rtnResult;
  971. }
  972. //Global.pat.insuplc_admdvs = JsonHelper.getDestValue(joSettlInfo, "result.data[0].insuplc_admdvs");
  973. //Global.pat.SettID_YBJSB = JsonHelper.getDestValue(joSettlInfo, "result.data[0].SettlementID");
  974. //if (Global.pat.settlID != Global.pat.SettID_YBJSB)
  975. //{
  976. // rtnResult = JsonHelper.setExceptionJson(-1, "Settlement 交易", "前端传来结算SettlementID【" + Global.pat.settlID + "】与DLL通过SQL语句" + joSql
  977. // + ",获取到的SettlementID【" + Global.pat.SettID_YBJSB + "】不一致,可能存在HIS单边账,请联系医保开发人员处理该笔结算记录!").ToString();
  978. // return rtnResult;
  979. //}
  980. //取消平台结算信息
  981. if (mIS.cancleSettlement(Global.pat.settlID, out outParam) != 0)
  982. {
  983. rtnResult = JsonHelper.setExceptionJson(-1, "中心结算取消成功,医保平台结算信息取消失败!", outParam).ToString();
  984. return rtnResult;
  985. }
  986. //取消HIS医保结算信息
  987. if (hIS.cancleSettlementInfo(joParam, out outParam) != 0)
  988. {
  989. rtnResult = JsonHelper.setExceptionJson(-1, "中心跟医保平台结算取消成功, 取消HIS结算信息失败!", outParam).ToString();
  990. return rtnResult;
  991. }
  992. rtnResult = JsonHelper.setIrisReturnValue(0, "取消结算成功", null).ToString();
  993. return rtnResult;
  994. }
  995. default:
  996. {
  997. rtnResult = JsonHelper.setExceptionJson(-1, "Settlement 交易", "传入的业务编码不对!").ToString();
  998. return rtnResult;
  999. }
  1000. }
  1001. return rtnResult;
  1002. }
  1003. catch (Exception ex)
  1004. {
  1005. rtnResult = JsonHelper.setExceptionJson(-1, "Settlement 交易", ex.Message).ToString();
  1006. return rtnResult;
  1007. }
  1008. finally
  1009. {
  1010. Global.writeLog("Settlement 出参:" + JsonHelper.Compress(rtnResult));
  1011. }
  1012. }
  1013. /// <summary>
  1014. /// 辅助交易
  1015. /// </summary>
  1016. /// <param name="InParam"></param>
  1017. /// <returns></returns>
  1018. public string AgentFun(string InParam)
  1019. {
  1020. Global.writeLog("AgentFun 入参:" + JsonHelper.Compress(InParam));
  1021. //设置返回值,错误信息
  1022. int errCode;
  1023. string errMsg, rtnResult = "", outParam;
  1024. try
  1025. {
  1026. //解析入参
  1027. if (parseInparam(InParam, out errMsg) != 0)
  1028. {
  1029. rtnResult = JsonHelper.setExceptionJson(-1, "", errMsg).ToString();
  1030. return rtnResult;
  1031. }
  1032. //BS架构调用方式问题,每次调用都需要重新初始化
  1033. if (init(InParam, out outParam) != 0)
  1034. {
  1035. rtnResult = outParam;
  1036. return rtnResult;
  1037. }
  1038. //获取pat
  1039. //hBus.GetFeeHisInfo(businessType, joInParam, out Global.pat);
  1040. switch (businessType)
  1041. {
  1042. case "BasicData"://基础数据维护
  1043. {
  1044. BasicData bd = new BasicData();
  1045. if (bd.ShowDialog() != DialogResult.OK)
  1046. {
  1047. rtnResult = JsonHelper.setExceptionJson(-100, "", "已退出基础数据维护界面").ToString();
  1048. return rtnResult;
  1049. }
  1050. break;
  1051. }
  1052. case "Exception"://异常处理
  1053. {
  1054. //显示异常处理界面
  1055. HandleException frmEX = new HandleException();
  1056. if (frmEX.ShowDialog() != DialogResult.OK)
  1057. {
  1058. rtnResult = JsonHelper.setExceptionJson(-100, "", "已退出异常处理界面").ToString();
  1059. return rtnResult;
  1060. }
  1061. break;
  1062. }
  1063. case "CheckAndClearing"://对账清算
  1064. {
  1065. Clearing frmEX = new Clearing();
  1066. if (frmEX.ShowDialog() != DialogResult.OK)
  1067. {
  1068. rtnResult = JsonHelper.setExceptionJson(-100, "", "已退出对账清算界面").ToString();
  1069. return rtnResult;
  1070. }
  1071. break;
  1072. }
  1073. case "Print"://打印
  1074. {
  1075. //显示打印界面
  1076. SettlementBillPrint frmSettlList;
  1077. string insuAdmObj = JsonHelper.getDestValue(joInParam, "insuAdmObj");
  1078. if (insuAdmObj == "")
  1079. {
  1080. frmSettlList = new SettlementBillPrint();
  1081. //frmSettlList.ShowDialog();
  1082. if (frmSettlList.ShowDialog() != DialogResult.OK)
  1083. {
  1084. rtnResult = JsonHelper.setExceptionJson(-100, "", "已退出打印界面界面").ToString();
  1085. return rtnResult;
  1086. }
  1087. }
  1088. else
  1089. {
  1090. JObject joInsuAdmObj = JObject.Parse(insuAdmObj);
  1091. frmSettlList = new SettlementBillPrint(joInsuAdmObj);
  1092. string groupID = JsonHelper.getDestValue((JObject)Global.curEvt.jaSession[0], "groupID");
  1093. string userName = JsonHelper.getDestValue((JObject)Global.curEvt.jaSession[0], "userName");
  1094. DataTable dt = (DataTable)frmSettlList.dgvSettlRecord.DataSource;
  1095. int i = frmSettlList.dgvSettlRecord.CurrentRow.Index;
  1096. string AdmID = dt.Rows[i]["AdmID"].ToString();
  1097. string PsnNo = dt.Rows[i]["PersonnelNO"].ToString();
  1098. string MdtrtID = dt.Rows[i]["MdtrtID"].ToString();
  1099. string SettlementID = dt.Rows[i]["SettlementID"].ToString();
  1100. Global.pat.adm_Dr = int.Parse(AdmID);
  1101. frmSettlList.btnPrint_Click(null, null);
  1102. }
  1103. return JsonHelper.setIrisReturnValue(0, "", null).ToString();
  1104. break;
  1105. }
  1106. case "Log"://日志
  1107. {
  1108. MessageBox.Show(businessType);
  1109. break;
  1110. }
  1111. case "RecordUpload"://上传记录
  1112. {
  1113. MessageBox.Show(businessType);
  1114. break;
  1115. }
  1116. case "HospitalRegister"://备案
  1117. {
  1118. ToRecordChoose Referral = new ToRecordChoose();
  1119. Referral.ShowDialog();
  1120. break;
  1121. }
  1122. case "PrescribeCirculation"://医保处方流转
  1123. {
  1124. //PrescriptionCirculation PresCir = new PrescriptionCirculation();
  1125. PrescriptionCirculation PresCir = new PrescriptionCirculation("0000833734");
  1126. //PresCir.WindowState = FormWindowState.Minimized;
  1127. if (PresCir.ShowDialog() != DialogResult.OK)
  1128. {
  1129. rtnResult = JsonHelper.setExceptionJson(-100, "", "已退出提交外配处方信息界面").ToString();
  1130. return rtnResult;
  1131. }
  1132. break;
  1133. }
  1134. case "ElectronicSettlementCertificate"://基础数据维护
  1135. {
  1136. frmEcSettlCertUpload ecu = new frmEcSettlCertUpload();
  1137. if (ecu.ShowDialog() != DialogResult.OK)
  1138. {
  1139. rtnResult = JsonHelper.setExceptionJson(-100, "", "已退出医保电子票据信息上传界面").ToString();
  1140. return rtnResult;
  1141. }
  1142. break;
  1143. }
  1144. default:
  1145. {
  1146. rtnResult = JsonHelper.setExceptionJson(-1, "AgentFun 交易", "传入的业务编码不对!").ToString();
  1147. return rtnResult;
  1148. }
  1149. }
  1150. return rtnResult;
  1151. }
  1152. catch (Exception ex)
  1153. {
  1154. rtnResult = JsonHelper.setExceptionJson(-1, "AgentFun 交易", ex.Message).ToString();
  1155. return rtnResult;
  1156. }
  1157. finally
  1158. {
  1159. Global.writeLog("AgentFun 出参:" + JsonHelper.Compress(rtnResult));
  1160. }
  1161. }
  1162. public string Download(string InParam)
  1163. {
  1164. Global.writeLog("Download 入参:" + JsonHelper.Compress(InParam));
  1165. //设置返回值,错误信息
  1166. int errCode;
  1167. string errMsg, rtnResult = "", outParam;
  1168. try
  1169. {
  1170. //解析入参
  1171. if (parseInparam(InParam, out errMsg) != 0)
  1172. {
  1173. rtnResult = JsonHelper.setExceptionJson(-1, "", errMsg).ToString();
  1174. return rtnResult;
  1175. }
  1176. //BS架构调用方式问题,每次调用都需要重新初始化
  1177. if (init(InParam, out outParam) != 0)
  1178. {
  1179. rtnResult = outParam;
  1180. return rtnResult;
  1181. }
  1182. dynamic joData = new JObject();
  1183. joData.data = joParam["data"];
  1184. //string code = (string)joInParam["code"];
  1185. string funNO = (string)joParam["funNO"];
  1186. switch (businessType)
  1187. {
  1188. case "DirectoryDownload":
  1189. {
  1190. string downloadParam = JsonHelper.setCenterInpar(funNO, joData.ToString());
  1191. rtnResult = hBus.DownloadDirectory(funNO, downloadParam).ToString();
  1192. break;
  1193. }
  1194. case "DictionayDownload":
  1195. {
  1196. string downloadParam = JsonHelper.setCenterInpar(funNO, joData.ToString());
  1197. rtnResult = hBus.downDictionary(downloadParam);
  1198. break;
  1199. }
  1200. }
  1201. return rtnResult;
  1202. }
  1203. catch (Exception ex)
  1204. {
  1205. rtnResult = JsonHelper.setExceptionJson(-100, "Download", ex.Message).ToString();
  1206. return rtnResult;
  1207. }
  1208. finally
  1209. {
  1210. Global.writeLog("Download 出参:" + rtnResult);
  1211. }
  1212. }
  1213. public string PlatformDirectConnect(string InParam)
  1214. {
  1215. //设置返回值,错误信息
  1216. int errCode;
  1217. string errMsg, rtnResult = "", outParam;
  1218. try
  1219. {
  1220. Global.writeLog("PlatformDirectConnect 入参:" + JsonHelper.Compress(InParam));
  1221. //解析入参
  1222. if (parseInparam(InParam, out errMsg) != 0)
  1223. {
  1224. rtnResult = JsonHelper.setExceptionJson(-1, "", errMsg).ToString();
  1225. return rtnResult;
  1226. }
  1227. Global.businessType = businessType;
  1228. string funNO = JsonHelper.getDestValue(joInParam, "funNO");
  1229. //BS架构调用方式问题,每次调用都需要重新初始化
  1230. if (init(InParam, out outParam) != 0)
  1231. {
  1232. rtnResult = outParam;
  1233. return rtnResult;
  1234. }
  1235. JObject joRtn = invoker.invokeCenterService(funNO, JsonHelper.setCenterInpar(funNO, joParam));
  1236. if (JsonHelper.parseCenterRtnValue(joRtn, out errMsg) != 0)
  1237. {
  1238. rtnResult = JsonHelper.setExceptionJson(-1, "平台直连错误", errMsg).ToString();
  1239. return rtnResult;
  1240. }
  1241. else
  1242. {
  1243. rtnResult = JsonHelper.setIrisReturnValue(0, "", joRtn).ToString();
  1244. return rtnResult;
  1245. }
  1246. }
  1247. catch (Exception ex)
  1248. {
  1249. rtnResult = JsonHelper.setExceptionJson(-1, "PlatformDirectConnect 交易", ex.Message).ToString();
  1250. return rtnResult;
  1251. }
  1252. finally
  1253. {
  1254. Global.writeLog("PlatformDirectConnect 出参:" + JsonHelper.Compress(rtnResult));
  1255. }
  1256. }
  1257. }
  1258. }