HisMainBusiness.cs 100 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149115011511152115311541155115611571158115911601161116211631164116511661167116811691170117111721173117411751176117711781179118011811182118311841185118611871188118911901191119211931194119511961197119811991200120112021203120412051206120712081209121012111212121312141215121612171218121912201221122212231224122512261227122812291230123112321233123412351236123712381239124012411242124312441245124612471248124912501251125212531254125512561257125812591260126112621263126412651266126712681269127012711272127312741275127612771278127912801281128212831284128512861287128812891290129112921293129412951296129712981299130013011302130313041305130613071308130913101311131213131314131513161317131813191320132113221323132413251326132713281329133013311332133313341335133613371338133913401341134213431344134513461347134813491350135113521353135413551356135713581359136013611362136313641365136613671368136913701371137213731374137513761377137813791380138113821383138413851386138713881389139013911392139313941395139613971398139914001401140214031404140514061407140814091410141114121413141414151416141714181419142014211422142314241425142614271428142914301431143214331434143514361437143814391440144114421443144414451446144714481449145014511452145314541455145614571458145914601461146214631464146514661467146814691470147114721473147414751476147714781479148014811482148314841485148614871488148914901491149214931494149514961497149814991500150115021503150415051506150715081509151015111512151315141515151615171518151915201521152215231524152515261527152815291530153115321533153415351536153715381539154015411542154315441545154615471548154915501551155215531554155515561557155815591560156115621563156415651566156715681569157015711572157315741575157615771578157915801581158215831584158515861587158815891590159115921593159415951596159715981599160016011602160316041605160616071608160916101611161216131614161516161617161816191620162116221623162416251626162716281629163016311632163316341635163616371638163916401641164216431644164516461647164816491650165116521653165416551656165716581659166016611662166316641665166616671668166916701671167216731674167516761677167816791680168116821683168416851686168716881689169016911692169316941695169616971698169917001701170217031704170517061707170817091710171117121713171417151716171717181719172017211722172317241725172617271728172917301731173217331734173517361737173817391740174117421743174417451746174717481749175017511752175317541755175617571758175917601761176217631764176517661767176817691770177117721773177417751776177717781779178017811782178317841785178617871788178917901791179217931794179517961797179817991800180118021803180418051806180718081809181018111812181318141815181618171818181918201821182218231824182518261827182818291830183118321833183418351836183718381839184018411842184318441845184618471848184918501851185218531854185518561857185818591860186118621863186418651866186718681869187018711872187318741875187618771878187918801881188218831884188518861887188818891890189118921893189418951896189718981899190019011902190319041905190619071908190919101911191219131914191519161917191819191920192119221923192419251926192719281929193019311932193319341935193619371938193919401941194219431944194519461947194819491950195119521953195419551956195719581959196019611962196319641965196619671968196919701971197219731974197519761977197819791980198119821983198419851986198719881989199019911992199319941995199619971998199920002001200220032004200520062007200820092010201120122013201420152016201720182019202020212022202320242025202620272028202920302031203220332034203520362037203820392040204120422043204420452046204720482049205020512052205320542055205620572058205920602061206220632064206520662067206820692070207120722073207420752076207720782079208020812082208320842085208620872088208920902091209220932094209520962097209820992100210121022103210421052106210721082109211021112112211321142115211621172118211921202121212221232124212521262127212821292130213121322133213421352136213721382139214021412142214321442145
  1. /******************************************************************************
  2. * 文件名称: HisMainBusiness.cs
  3. * 文件说明: HIS主体交易的封装
  4. * 当前版本: V1.0
  5. * 创建日期: 2022-06-20
  6. *
  7. * * 2020-06-20: 增加 HisMainBusiness 类
  8. * ***** 2020-06-20: 增加 CardReader 方法,获取URL地址,USER信息,地方版SSCard.dll使用
  9. * ***** 2020-06-20: 增加 CardReader 方法重载,国家版电子凭证使用
  10. * ***** 2020-06-20: 增加 Init 方法,SSCard环境初始化
  11. * ***** 2020-06-20: 增加 ReadCardBas 方法,读社保卡
  12. * ***** 2020-06-20: 增加 VerifyPIN 方法,验证密码
  13. * ***** 2020-06-20: 增加 ChangePIN 方法,修改密码
  14. * ***** 2020-06-20: 增加 ReadSFZ 方法,读身份证
  15. * ***** 2020-06-20: 增加 GetQRBase 方法,读二维码
  16. * ***** 2020-06-20: 增加 NationEcTrans 方法,读电子凭证(国家版)
  17. ******************************************************************************/
  18. using System;
  19. using System.Collections.Generic;
  20. using System.Linq;
  21. using System.Text;
  22. using System.Threading.Tasks;
  23. using System.Windows.Forms;
  24. using Newtonsoft.Json.Linq;
  25. using PTMedicalInsurance.Common;
  26. using PTMedicalInsurance.Helper;
  27. using PTMedicalInsurance.Variables;
  28. using PTMedicalInsurance.Forms;
  29. using System.Data;
  30. using System.Reflection;
  31. using System.IO;
  32. using System.IO.Compression;
  33. using System.Xml.Linq;
  34. namespace PTMedicalInsurance.Business
  35. {
  36. class HisMainBusiness
  37. {
  38. private InvokeHelper invoker = new InvokeHelper();
  39. private HisIrisServices hIS = new HisIrisServices();
  40. private MIIrisServices mIS = new MIIrisServices();
  41. private CenterBusiness cBus = new CenterBusiness();
  42. private XmlHelper xmler = new XmlHelper();
  43. /// <summary>
  44. /// 获取HIS的IRIS配置信息
  45. /// </summary>
  46. /// <param name="con"></param>
  47. public void getHisConfingue(out IrisConfigue con)
  48. {
  49. IniFile ini = new IniFile(Global.curEvt.path + @"\INSUConfigure.ini");
  50. con.ip = ini.ReadValue("HIS", "ip");
  51. con.url = ini.ReadValue("HIS", "url");
  52. con.authorization = ini.ReadValue("HIS", "authorization");
  53. }
  54. /// <summary>
  55. /// 获取医保平台的iris配置信息
  56. /// </summary>
  57. /// <param name="con"></param>
  58. public void getInsuConfingue(out IrisConfigue con)
  59. {
  60. IniFile ini = new IniFile(Global.curEvt.path + @"\INSUConfigure.ini");
  61. con.ip = ini.ReadValue("INSU", "ip");
  62. con.url = ini.ReadValue("INSU", "url");
  63. con.authorization = ini.ReadValue("INSU", "authorization");
  64. }
  65. public void getLocalConfingue()
  66. {
  67. IniFile ini = new IniFile(Global.curEvt.path + @"\INSUConfigure.ini");
  68. Global.curEvt.ext.isOpenAnalysis = (ini.ReadValue("PreAndInProcessAnalysis", "isOpenAnalysis") == "1");
  69. }
  70. /// <summary>
  71. /// 获取Session信息(目前只获取操作员信息)
  72. /// </summary>
  73. /// <param name="joSession"></param>
  74. public void getSessionInfo(JObject joSession)
  75. {
  76. Global.user.ID = JsonHelper.getDestValue(joSession, "userCode");
  77. Global.user.name = JsonHelper.getDestValue(joSession, "userName");
  78. Global.user.type = "1";
  79. }
  80. /// <summary>
  81. /// 根据壳程序传入的入参设置全局接口变量
  82. /// </summary>
  83. /// <param name="joInpar"></param>
  84. /// <param name="inf"></param>
  85. public void setGlobalInterface(JObject joInpar,out InterfaceInfo inf)
  86. {
  87. inf = new InterfaceInfo();
  88. if (Global.businessType == "P1")
  89. {
  90. inf.hospitalDr = int.Parse(JsonHelper.getDestValue(joInpar, "hospitalID"));
  91. //inf.hisHospitalDr = int.Parse(JsonHelper.getDestValue(joInpar, "hisHospitalDr"));
  92. inf.hospitalName = JsonHelper.getDestValue(joInpar, "hospitalName");
  93. inf.interfaceDr = int.Parse(JsonHelper.getDestValue(joInpar, "medInsuInterfaceID"));
  94. inf.InsuRegionInterfaceDr = JsonHelper.getDestValue(joInpar, "insuRegionInterfaceDr");
  95. inf.interfaceID = JsonHelper.getDestValue(joInpar, "interfaceNO");
  96. //inf.oper = "3";
  97. inf.centerURL = JsonHelper.getDestValue(joInpar, "centerURL");
  98. inf.ecURL = JsonHelper.getDestValue(joInpar, "CenterURL2");
  99. inf.areaCode = JsonHelper.getDestValue(joInpar, "areaCode");
  100. inf.dllName = JsonHelper.getDestValue(joInpar, "dLLName");
  101. inf.hospitalNO = JsonHelper.getDestValue(joInpar, "hospitalNO");
  102. }
  103. else
  104. {
  105. inf.hospitalDr = int.Parse(JsonHelper.getDestValue(joInpar, "HospitalDr"));
  106. inf.hisHospitalDr = int.Parse(JsonHelper.getDestValue(joInpar, "hisHospitalDr"));
  107. inf.hospitalName = JsonHelper.getDestValue(joInpar, "HospitalName");
  108. inf.interfaceDr = int.Parse(JsonHelper.getDestValue(joInpar, "ID"));
  109. inf.InsuRegionInterfaceDr = JsonHelper.getDestValue(joInpar, "insuRegionInterfaceDr");
  110. inf.interfaceID = JsonHelper.getDestValue(joInpar, "InterfaceID");
  111. //inf.oper = "3";
  112. inf.centerURL = JsonHelper.getDestValue(joInpar, "CenterURL");
  113. inf.ecURL = JsonHelper.getDestValue(joInpar, "CenterURL2");
  114. inf.areaCode = JsonHelper.getDestValue(joInpar, "AreaCode");
  115. inf.dllName = JsonHelper.getDestValue(joInpar, "DLLName");
  116. inf.hospitalNO = JsonHelper.getDestValue(joInpar, "HospitalNO");
  117. }
  118. inf.version = "v1.0";
  119. inf.signatureType = "SM3";
  120. inf.recivedSystem = "YBXT";
  121. inf.AK = "";
  122. inf.SK = "XELSo3dpbXIjCLHz0jiRBHH1WDpqjZTB";
  123. inf.dev_safe_info = "";
  124. inf.dev_no = Global.curEvt.mac;
  125. inf.cainfo = "";
  126. inf.cardURL = "http://igb.hsa.gdgov.cn/gdyb_api/prd_gz/api/card/initDll";
  127. inf.ecURL = inf.cardURL;
  128. if ((inf.InsuRegionInterfaceDr == "") || (inf.InsuRegionInterfaceDr == "0"))
  129. {
  130. inf.InsuRegionInterfaceDr = inf.interfaceDr.ToString();
  131. }
  132. }
  133. /// <summary>
  134. /// 初始化环境
  135. /// </summary>
  136. /// <param name="inParam"></param>
  137. /// <returns></returns>
  138. public int initEnvironment(string inParam,out string error)
  139. {
  140. error = string.Empty;
  141. try
  142. {
  143. //获取HIS和医保平台的IRIS配置信息
  144. getHisConfingue(out Global.hisConfig);
  145. getInsuConfingue(out Global.insuConfig);
  146. getLocalConfingue();
  147. //
  148. JObject joInparam = JObject.Parse(inParam);
  149. int hisHospitalDr = 0;
  150. JObject joInterface = JObject.Parse(JsonHelper.getDestValue(joInparam, "interfaceinfo"));
  151. if (joInterface != null)
  152. {
  153. //获取当前接口详细信息
  154. if (Global.businessType != "P1")
  155. {
  156. //医保平台的hosp_dr跟HIS不一致
  157. hisHospitalDr = int.Parse(JsonHelper.getDestValue(joInparam, "hospID"));
  158. }
  159. joInterface.Add("hisHospitalDr", hisHospitalDr);
  160. setGlobalInterface(joInterface, out Global.inf);
  161. JObject joSession = JObject.Parse(JsonHelper.getDestValue(joInparam, "session[0]"));
  162. if (joSession != null)
  163. {
  164. //获取当前用户信息
  165. getSessionInfo(joSession);
  166. Global.writeLog("HIS环境初始化成功!");
  167. return 0;
  168. }
  169. else
  170. {
  171. error = "初始化环境失败:session获取失败!";
  172. return -1;
  173. }
  174. }
  175. else
  176. {
  177. error = "初始化环境失败:interfaceinfo获取失败!";
  178. return -1;
  179. }
  180. }
  181. catch (Exception ex)
  182. {
  183. error ="初始化环境失败:" + ex.Message;
  184. return -1;
  185. }
  186. }
  187. public void setPrmBatch()
  188. {
  189. if (Global.pat.medType == "G31")
  190. {
  191. Global.pat.patExtend.prm_yabtch = "GS01";
  192. }
  193. else
  194. {
  195. Global.pat.patExtend.prm_yabtch = Global.pat.insuplc_admdvs;
  196. }
  197. }
  198. /// <summary>
  199. /// 读卡
  200. /// </summary>
  201. /// <returns></returns>
  202. public int readCard(out string outParam)
  203. {
  204. outParam = "";
  205. string errorMsg = "";
  206. JObject joCardInfo = new JObject();
  207. ChooseCard cc = new ChooseCard();
  208. cc.StartPosition = FormStartPosition.CenterScreen;
  209. try
  210. {
  211. if (cc.ShowDialog() == DialogResult.OK)
  212. {
  213. JObject joInput = new JObject();
  214. JObject joTmp = new JObject();
  215. joTmp.Add("prm_payoptype", cc.cardType);
  216. joTmp.Add("prm_yabtch", cc.prmYabtch);
  217. Global.pat.patExtend.prm_yabtch = cc.prmYabtch;
  218. if (invoker.invokeYHCom("03", joTmp, out errorMsg) != 0)
  219. {
  220. outParam = "读卡失败" + errorMsg;
  221. return -1;
  222. }
  223. else
  224. {
  225. outParam = errorMsg;
  226. return 0;
  227. }
  228. }
  229. else
  230. {
  231. outParam = "收款员取消读卡!";
  232. return -1;
  233. }
  234. }
  235. catch (Exception ex)
  236. {
  237. outParam = "异常:" + ex.Message;
  238. return -1;
  239. }
  240. }
  241. /// <summary>
  242. /// 展示患者信息界面,转换相关编码为中文,并获取操作员选中的信息
  243. /// </summary>
  244. /// <param name="patInfo"></param>
  245. /// <param name="outparam"></param>
  246. /// <returns></returns>
  247. public int showPatInfo(String patInfo,out string outparam )
  248. {
  249. outparam = "";
  250. string errMsg = string.Empty;
  251. //展示信息界面
  252. JObject joOutparam = JObject.Parse(xmler.ToJSON(patInfo));
  253. JObject joOutput = JObject.Parse(JsonHelper.getDestValue(joOutparam, "output"));
  254. //组织baseInfo,否则HIS读卡建档无法获取数据
  255. JObject joBaseInfo = new JObject();
  256. joBaseInfo.Add("psn_name", JsonHelper.getDestValue(joOutput, "prm_aac003"));
  257. joBaseInfo.Add("certno", JsonHelper.getDestValue(joOutput, "prm_aac002"));
  258. joBaseInfo.Add("gend", JsonHelper.getDestValue(joOutput, "prm_aac004"));
  259. joBaseInfo.Add("age", JsonHelper.getDestValue(joOutput, "prm_akc023"));
  260. joBaseInfo.Add("brdy", JsonHelper.getDestValue(joOutput, "prm_aac006"));
  261. joOutparam["output"]["baseinfo"] = new JObject() ;
  262. joOutparam["output"]["baseinfo"] = joBaseInfo;
  263. //编码转换
  264. JArray jaConvertCode = new JArray();
  265. JObject joConvertCodeParam = new JObject();
  266. joConvertCodeParam.Add("hospitalDr", Global.inf.hospitalDr);
  267. joConvertCodeParam.Add("interfaceDr", Global.inf.interfaceDr);
  268. joConvertCodeParam.Add("output", joOutput);
  269. jaConvertCode.Add(joConvertCodeParam);
  270. JObject joConvertCode = new JObject();
  271. joConvertCode.Add("code", "09010054");
  272. joConvertCode.Add("params", jaConvertCode);
  273. InvokeHelper invoker = new InvokeHelper();
  274. JObject joConvertCodeRtn = invoker.invokeInsuService(joConvertCode.ToString(), "患者信息编码转换");
  275. //if (JsonHelper.parseIrisRtnValue(joConvertCodeRtn, out errMsg) != 0)
  276. //{
  277. // outparam = JsonHelper.setExceptionJson(-1, "患者信息编码转换", errMsg).ToString();
  278. // return -1;
  279. //}
  280. PatientInsuInfo frmPatientInfo = new PatientInsuInfo(joConvertCodeRtn);
  281. frmPatientInfo.joSelectedInsuInfo = (JObject)joOutput.DeepClone();
  282. frmPatientInfo.joSelectedInsuInfo.Add("prm_yabtch", Global.pat.patExtend.prm_yabtch);
  283. frmPatientInfo.StartPosition = FormStartPosition.CenterScreen;
  284. //相关信息转换到登记面板
  285. try
  286. {
  287. if (frmPatientInfo.ShowDialog() == DialogResult.OK)
  288. {
  289. //原来用的是转换后的
  290. //frmPatientInfo.joSelectedInsuInfo.Add("mdtrt_cert_type", Global.pat.mdtrtcertType);
  291. //frmPatientInfo.joSelectedInsuInfo.Add("mdtrt_cert_no", Global.pat.mdtrtcertNO);
  292. //joOutparam.Property("output").AddBeforeSelf(new JProperty("selectedInsuInfo", frmPatientInfo.joSelectedInsuInfo));
  293. //现在用转换之前的
  294. //JArray diseInfo = JArray.Parse(JsonHelper.getDestValue(joOutput, "prm_ykc010"));
  295. //JArray typeInfo = JArray.Parse(JsonHelper.getDestValue(joOutput, "prm_ykc296"));
  296. //if (!string.IsNullOrEmpty(idetinfo))
  297. //{ jaIdInfo = JArray.Parse(idetinfo); }
  298. //else
  299. //{ jaIdInfo = JArray.Parse("[]"); }
  300. joOutparam.Property("output").AddBeforeSelf(new JProperty("selectedInsuInfo", frmPatientInfo.joSelectedInsuInfo));
  301. outparam = joOutparam.ToString();
  302. return 0;
  303. }
  304. else
  305. {
  306. outparam = JsonHelper.setExceptionJson(-1, "门诊读卡", "收款员取消读卡").ToString();
  307. return -1;
  308. }
  309. }
  310. catch (Exception e)
  311. {
  312. outparam = JsonHelper.setExceptionJson(-1, "患者参保信息展示", e.Message).ToString();
  313. return -1;
  314. }
  315. }
  316. /// <summary>
  317. /// 姓名核对
  318. /// </summary>
  319. /// <param name="insuName"></param>
  320. /// <param name="errMsg"></param>
  321. /// <returns></returns>
  322. public int checkName(string insuName, out string errMsg)
  323. {
  324. try
  325. {
  326. errMsg = "";
  327. string hisPatBaseInfo = "";
  328. if (hIS.GetHisPatBaseInfo(out hisPatBaseInfo) != 0)
  329. {
  330. errMsg = hisPatBaseInfo;
  331. return -1;
  332. }
  333. string hisPatName = JsonHelper.getDestValue(JObject.Parse(hisPatBaseInfo), "result.patName");
  334. if (hisPatName != insuName)
  335. {
  336. errMsg = "患者姓名(" + hisPatName + ")与参保人姓名(" + insuName + ")不一致,请检查!";
  337. return -1;
  338. }
  339. else
  340. {
  341. return 0;
  342. }
  343. }
  344. catch (Exception ex)
  345. {
  346. errMsg = "核对HIS与医保平台姓名一致性发生异常:" + ex.Message;
  347. return -1;
  348. }
  349. }
  350. /// <summary>
  351. /// 患者读卡并获取中心信息(1101)后设置PAT结构体
  352. /// </summary>
  353. /// <param name="patInfo"></param>
  354. /// <param name="errMsg"></param>
  355. /// <returns></returns>
  356. ///
  357. public int setGlobalPatAfaterShowPatInfo(string patInfo,out string errMsg)
  358. {
  359. JObject joPatInfo;
  360. errMsg = "";
  361. try
  362. {
  363. joPatInfo = JObject.Parse(patInfo);
  364. //基本信息
  365. Global.pat.certNO = JsonHelper.getDestValue(joPatInfo, "output.prm_aac002");
  366. Global.pat.psn_no = JsonHelper.getDestValue(joPatInfo, "output.prm_aac001");
  367. Global.pat.gend = JsonHelper.getDestValue(joPatInfo, "output.prm_aac004");
  368. Global.pat.brdy = JsonHelper.getDestValue(joPatInfo, "output.prm_aac006");
  369. Global.pat.naty = "";
  370. Global.pat.age = JsonHelper.getDestValue(joPatInfo, "output.prm_akc023");
  371. Global.pat.certType = "01";
  372. if (checkName(JsonHelper.getDestValue(joPatInfo, "output.prm_aac003"), out errMsg) != 0)
  373. {
  374. return -1;
  375. }
  376. Global.pat.name = JsonHelper.getDestValue(joPatInfo, "output.prm_aac003");
  377. //选中的参保信息
  378. Global.pat.insuplc_admdvs = JsonHelper.getDestValue(joPatInfo, "output.prm_yab139");
  379. //Global.pat.psn_insu_date = JsonHelper.getDestValue(joPatInfo, "selectedInsuInfo.psn_insu_date");
  380. //Global.pat.cvlserv_flag = JsonHelper.getDestValue(joPatInfo, "selectedInsuInfo.cvlserv_flag");
  381. Global.pat.balc = JsonHelper.getDestValue(joPatInfo, "output.prm_akc087");
  382. Global.pat.emp_name = JsonHelper.getDestValue(joPatInfo, "output.prm_aab004");
  383. Global.pat.psn_type = JsonHelper.getDestValue(joPatInfo, "output.prm_akc021");
  384. Global.pat.psn_insu_stas = JsonHelper.getDestValue(joPatInfo, "output.prm_aac031");
  385. Global.pat.insuType = JsonHelper.getDestValue(joPatInfo, "output.prm_ykb065");
  386. Global.pat.qrCodeID = JsonHelper.getDestValue(joPatInfo, "output.prm_yae921");
  387. Global.pat.patExtend.prm_auther_certno = JsonHelper.getDestValue(joPatInfo, "output.prm_auther_certno");
  388. Global.pat.patExtend.prm_auther_insu_admdvs = JsonHelper.getDestValue(joPatInfo, "output.prm_auther_insu_admdvs");
  389. Global.pat.patExtend.prm_auther_name = JsonHelper.getDestValue(joPatInfo, "output.prm_auther_name");
  390. Global.pat.patExtend.prm_auther_no = JsonHelper.getDestValue(joPatInfo, "output.prm_auther_no");
  391. //Global.pat.paus_insu_date = JsonHelper.getDestValue(joPatInfo, "selectedInsuInfo.paus_insu_date");
  392. //卡片信息
  393. //Global.pat.cardSN = JsonHelper.getDestValue(joPatInfo, "selectedInsuInfo.paus_insu_date");
  394. //选中的身份信息
  395. return 0;
  396. }
  397. catch (Exception ex)
  398. {
  399. errMsg = "获取患者信息发生异常:" + ex.Message;
  400. return -1;
  401. }
  402. }
  403. /// <summary>
  404. /// 显示住院患者登记面板,返回登记入参
  405. /// </summary>
  406. /// <param name="regInfo"></param>
  407. /// <returns></returns>
  408. public int showInPatRegisterForm(out string regInfo)
  409. {
  410. //调用服务获取门诊诊断信息
  411. string diagnoses;
  412. if (hIS.getPatDiagnoses(Global.pat, out diagnoses) != 0)
  413. {
  414. regInfo = JsonHelper.setExceptionJson(-1, "getPatDiagnoses", diagnoses).ToString();
  415. return -1;
  416. }
  417. JObject joHisRtnInfo = JObject.Parse(diagnoses);
  418. //组织登记入参
  419. JObject joReg = new JObject();
  420. try
  421. {
  422. JArray jaDiagnoses = JArray.Parse(JsonHelper.getDestValue(joHisRtnInfo, "diseinfo"));
  423. string dscg_maindiag_code = "",dscg_maindiag_name = "";
  424. // 对诊断数组进行转换 转换下主要诊断
  425. JArray jaConvertedDiagnoses = new JArray();
  426. JArray jaInPatDiagnoses = new JArray();
  427. JArray jaOutPatDiagnoses = new JArray();
  428. for (int i = 0; i < jaDiagnoses.Count; i++)
  429. {
  430. string diag_type = JsonHelper.getDestValue((JObject)jaDiagnoses[i], "diag_type");
  431. switch (diag_type)
  432. {
  433. case "1":
  434. {
  435. jaDiagnoses[i]["diag_type_name"] = new JObject();
  436. jaDiagnoses[i]["diag_type_name"] = "西医主要诊断";
  437. break;
  438. }
  439. case "2":
  440. {
  441. jaDiagnoses[i]["diag_type_name"] = new JObject();
  442. jaDiagnoses[i]["diag_type_name"] = "西医其他诊断";
  443. break;
  444. }
  445. case "3":
  446. {
  447. jaDiagnoses[i]["diag_type_name"] = new JObject();
  448. jaDiagnoses[i]["diag_type_name"] = "中医主病诊断";
  449. break;
  450. }
  451. case "4":
  452. {
  453. jaDiagnoses[i]["diag_type_name"] = new JObject();
  454. jaDiagnoses[i]["diag_type_name"] = "中医主证诊断";
  455. break;
  456. }
  457. }
  458. if (jaDiagnoses[i]["diaTypeCode"].ToString() == "ADD") //ADD 入院 OPD 门诊
  459. {
  460. jaInPatDiagnoses.Add(jaDiagnoses[i]);
  461. }
  462. if (jaDiagnoses[i]["diaTypeCode"].ToString() == "OPD") //ADD 入院 OPD 门诊
  463. {
  464. jaOutPatDiagnoses.Add(jaDiagnoses[i]);
  465. }
  466. }
  467. if (jaInPatDiagnoses.Count > 0)
  468. {
  469. jaConvertedDiagnoses = (JArray)jaInPatDiagnoses.DeepClone();
  470. }
  471. else
  472. {
  473. jaConvertedDiagnoses = (JArray)jaOutPatDiagnoses.DeepClone();
  474. }
  475. for (int i = 0; i < jaConvertedDiagnoses.Count; i++)
  476. {
  477. jaConvertedDiagnoses[i]["diag_srt_no"] = i + 1;
  478. if (jaConvertedDiagnoses[i]["maindiag_flag"].ToString() == "1")
  479. {
  480. dscg_maindiag_code = jaConvertedDiagnoses[i]["diag_code"].ToString();
  481. dscg_maindiag_name = jaConvertedDiagnoses[i]["diag_name"].ToString();
  482. }
  483. }
  484. //登记面板实例
  485. OutpatientRegistration frmReg = new OutpatientRegistration();
  486. frmReg.cbMutualAid.Visible = false;
  487. DataTable dt = (DataTable)frmReg.dblkcbxInsuranceType.DataSource;
  488. int selectedIndex = 0;
  489. for (int i = 0; i < dt.Rows.Count; i++)
  490. {
  491. if (dt.Rows[i]["Code"].ToString() == Global.pat.insuType)
  492. {
  493. selectedIndex = i;
  494. frmReg.dblkcbxInsuranceType.Text = dt.Rows[i]["Name"].ToString();
  495. frmReg.insuType = dt.Rows[i]["Code"].ToString();
  496. }
  497. }
  498. DataTable dtMedType = (DataTable)frmReg.dblkcbxMedicalType.DataSource;
  499. for (int i = 0; i < dtMedType.Rows.Count; i++)
  500. {
  501. if (Global.pat.patExtend.prm_yabtch == "GS01")
  502. {
  503. if (dtMedType.Rows[i]["Code"].ToString() == "G31")
  504. {
  505. frmReg.dblkcbxMedicalType.Text = dtMedType.Rows[i]["Name"].ToString();
  506. frmReg.med_type = dtMedType.Rows[i]["Code"].ToString();
  507. }
  508. }
  509. else
  510. {
  511. if (dtMedType.Rows[i]["Code"].ToString() == "31")
  512. {
  513. frmReg.dblkcbxMedicalType.Text = dtMedType.Rows[i]["Name"].ToString();
  514. frmReg.med_type = dtMedType.Rows[i]["Code"].ToString();
  515. }
  516. }
  517. }
  518. frmReg.DtDiagnose = (DataTable)jaConvertedDiagnoses.ToObject(typeof(DataTable));
  519. //展示登记面板
  520. if (frmReg.ShowDialog() == DialogResult.OK)
  521. {
  522. JObject joMdtrtinfo = new JObject();
  523. joMdtrtinfo.Add("prm_ykc010", Global.pat.adm_Dr.ToString()); //住院号
  524. joMdtrtinfo.Add("prm_aac001", Global.pat.psn_no); //个人编号
  525. joMdtrtinfo.Add("prm_akc192", JsonHelper.getDestValue(joHisRtnInfo, "mdtrtinfo.begntime")); //入院日期
  526. joMdtrtinfo.Add("prm_akc193", dscg_maindiag_name); //入院诊断
  527. joMdtrtinfo.Add("prm_yke120", dscg_maindiag_code); //ICD10 代码
  528. joMdtrtinfo.Add("prm_ykc012", JsonHelper.getDestValue(joHisRtnInfo, "mdtrtinfo.adm_bed")); //床位
  529. //joMdtrtinfo.Add("prm_ykc011", "A04");
  530. joMdtrtinfo.Add("prm_ykc011", JsonHelper.getDestValue(joHisRtnInfo, "mdtrtinfo.adm_dept_stand_code")); //入院科室编码
  531. joMdtrtinfo.Add("prm_yka098", JsonHelper.getDestValue(joHisRtnInfo, "mdtrtinfo.adm_dept_name")); //入院科室名称
  532. joMdtrtinfo.Add("prm_ykc013", Global.user.ID); //经办人
  533. joMdtrtinfo.Add("prm_ykc141", Global.user.name); //经办人姓名
  534. joMdtrtinfo.Add("prm_ykc014", DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss")); //经办时间
  535. joMdtrtinfo.Add("prm_ykc009", JsonHelper.getDestValue(joHisRtnInfo, "mdtrtinfo.medrcdno")); //病历号
  536. joMdtrtinfo.Add("prm_aae013", ""); //备注
  537. joMdtrtinfo.Add("prm_hisbh", "MA6E40UT-0"); //HIS厂商编号
  538. joMdtrtinfo.Add("prm_ykd519",""); //精神病住院新病人标志
  539. joMdtrtinfo.Add("prm_ykb065", Global.pat.insuType); //执行社会保险办法
  540. joMdtrtinfo.Add("prm_yab139", Global.pat.insuplc_admdvs);
  541. joMdtrtinfo.Add("prm_yabtch", Global.pat.patExtend.prm_yabtch);
  542. joReg.Add("input", joMdtrtinfo);
  543. joReg.Add("diseinfo", jaConvertedDiagnoses);
  544. regInfo = joReg.ToString();
  545. return 0;
  546. }
  547. else
  548. {
  549. regInfo = "收费员取消操作!";
  550. return -1;
  551. }
  552. }
  553. catch (Exception ex)
  554. {
  555. regInfo = "登记界面显示异常:" + ex.Message;
  556. return -1;
  557. }
  558. }
  559. /// <summary>
  560. /// 显示出院登记界面,返回出院登记和结算的入参
  561. /// </summary>
  562. /// <param name="joSumFee"></param>
  563. /// <param name="outParam"></param>
  564. /// <returns></returns>
  565. public int showDischargeRegisterForm(JObject joSumFee, JObject joHisRtnInfo, out string outParam)
  566. {
  567. outParam = "";
  568. string errMsg;
  569. try
  570. {
  571. JArray jaDiagnoses = JArray.Parse(JsonHelper.getDestValue(joHisRtnInfo, "diseinfo"));
  572. //选择结算方式等
  573. OutpatientRegistration frmReg = new OutpatientRegistration();
  574. frmReg.StartPosition = FormStartPosition.CenterScreen;
  575. frmReg.dblkcbxInsuranceType.Enabled = true;
  576. frmReg.cbMutualAid.Visible = false;
  577. DataTable dt = (DataTable)frmReg.dblkcbxInsuranceType.DataSource;
  578. int selectedIndex = 0;
  579. for (int i = 0; i < dt.Rows.Count; i++)
  580. {
  581. if (dt.Rows[i]["Code"].ToString() == Global.pat.insuType)
  582. {
  583. frmReg.dblkcbxInsuranceType.Text = dt.Rows[i]["Name"].ToString();
  584. frmReg.insuType = dt.Rows[i]["Code"].ToString();
  585. }
  586. }
  587. DataTable dtMedType = (DataTable)frmReg.dblkcbxMedicalType.DataSource;
  588. for (int i = 0; i < dtMedType.Rows.Count; i++)
  589. {
  590. if (Global.pat.patExtend.prm_yabtch == "GS01")
  591. {
  592. if (dtMedType.Rows[i]["Code"].ToString() == "G31")
  593. {
  594. frmReg.dblkcbxMedicalType.Text = dtMedType.Rows[i]["Name"].ToString();
  595. frmReg.med_type = dtMedType.Rows[i]["Code"].ToString();
  596. }
  597. }
  598. else
  599. {
  600. if (dtMedType.Rows[i]["Code"].ToString() == "31")
  601. {
  602. frmReg.dblkcbxMedicalType.Text = dtMedType.Rows[i]["Name"].ToString();
  603. frmReg.med_type = dtMedType.Rows[i]["Code"].ToString();
  604. }
  605. }
  606. }
  607. // 对诊断数组进行转换 转换下主要诊断
  608. JArray jaConvertedDiagnoses = new JArray();
  609. JArray jaConvertedDiagnoses_ADD = new JArray();
  610. string dscg_maindiag_code = "", dscg_maindiag_name = "";
  611. for (int i = 0; i < jaDiagnoses.Count; i++)
  612. {
  613. string diag_type = JsonHelper.getDestValue((JObject)jaDiagnoses[i], "diag_type");
  614. switch (diag_type)
  615. {
  616. case "1":
  617. {
  618. jaDiagnoses[i]["diag_type_name"] = new JObject();
  619. jaDiagnoses[i]["diag_type_name"] = "西医主要诊断";
  620. break;
  621. }
  622. case "2":
  623. {
  624. jaDiagnoses[i]["diag_type_name"] = new JObject();
  625. jaDiagnoses[i]["diag_type_name"] = "西医其他诊断";
  626. break;
  627. }
  628. case "3":
  629. {
  630. jaDiagnoses[i]["diag_type_name"] = new JObject();
  631. jaDiagnoses[i]["diag_type_name"] = "中医主病诊断";
  632. break;
  633. }
  634. case "4":
  635. {
  636. jaDiagnoses[i]["diag_type_name"] = new JObject();
  637. jaDiagnoses[i]["diag_type_name"] = "中医主证诊断";
  638. break;
  639. }
  640. }
  641. if (jaDiagnoses[i]["diaTypeCode"].ToString() == "DIS") //ADD 入院 OPD 门诊
  642. {
  643. jaConvertedDiagnoses.Add(jaDiagnoses[i]);
  644. }
  645. if (jaDiagnoses[i]["diaTypeCode"].ToString() == "ADD") //ADD 入院 OPD 门诊
  646. {
  647. jaConvertedDiagnoses_ADD.Add(jaDiagnoses[i]);
  648. }
  649. }
  650. JArray jaRow = new JArray();
  651. if ((jaConvertedDiagnoses.Count < 1) && (Global.curEvt.businessType == "Z4"))
  652. {
  653. jaConvertedDiagnoses = (JArray)jaConvertedDiagnoses_ADD.DeepClone();
  654. }
  655. if (jaConvertedDiagnoses.Count < 1)
  656. {
  657. outParam = "未查询到对应诊断!";
  658. return -1;
  659. }
  660. for (int i = 0; i < jaConvertedDiagnoses.Count; i++)
  661. {
  662. jaConvertedDiagnoses[i]["diag_srt_no"] = i + 1;
  663. if (jaConvertedDiagnoses[i]["maindiag_flag"].ToString() == "1")
  664. {
  665. dscg_maindiag_code = jaConvertedDiagnoses[i]["diag_code"].ToString();
  666. dscg_maindiag_name = jaConvertedDiagnoses[i]["diag_name"].ToString();
  667. }
  668. //增加就诊ID
  669. jaConvertedDiagnoses[i]["mdtrt_id"] = new JObject();
  670. jaConvertedDiagnoses[i]["mdtrt_id"] = Global.pat.mdtrtID;
  671. JObject joTmp = new JObject();
  672. joTmp.Add("ykd018", jaConvertedDiagnoses[i]["diag_code"].ToString());
  673. jaRow.Add(joTmp);
  674. }
  675. if (dscg_maindiag_code == "")
  676. {
  677. dscg_maindiag_code = jaConvertedDiagnoses[0]["diag_code"].ToString();
  678. dscg_maindiag_name = jaConvertedDiagnoses[0]["diag_name"].ToString();
  679. }
  680. frmReg.DtDiagnose = (DataTable)jaConvertedDiagnoses.ToObject(typeof(DataTable));
  681. if (frmReg.ShowDialog() == DialogResult.OK)
  682. {
  683. //出院登记入参
  684. JObject joDscgInfo = new JObject();
  685. joDscgInfo.Add("prm_akc190", Global.pat.mdtrtID);
  686. joDscgInfo.Add("prm_aac001", Global.pat.psn_no); //人员编号
  687. joDscgInfo.Add("prm_aka130", Global.pat.medType); //支付类别
  688. joDscgInfo.Add("prm_akc195", "2"); //出院原因 1、 治愈; 2、 好转; 3、 死亡;4 转院; 8、 意外伤害( 无责) ; 9 其他
  689. joDscgInfo.Add("prm_akc194", Global.settl.hisDischargeTime); //结束时间
  690. joDscgInfo.Add("prm_akc196", dscg_maindiag_name); //出院诊断
  691. joDscgInfo.Add("prm_ykc015", JsonHelper.getDestValue(joHisRtnInfo, "mdtrtinfo.adm_dept_name")); //出院科室
  692. joDscgInfo.Add("prm_ykc016", JsonHelper.getDestValue(joHisRtnInfo, "mdtrtinfo.adm_bed")); //出院床位
  693. joDscgInfo.Add("prm_ykc017", Global.user.name); //经办人姓名
  694. joDscgInfo.Add("prm_ykc018", DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss")); //出院经办时间
  695. joDscgInfo.Add("prm_yab003", Global.pat.insuplc_admdvs); //分中心编号
  696. joDscgInfo.Add("prm_ykd065", dscg_maindiag_code); //出院附属诊断代码
  697. joDscgInfo.Add("prm_ykb065", Global.pat.insuType); //社会保险办法
  698. joDscgInfo.Add("prm_yabtch", Global.pat.patExtend.prm_yabtch);
  699. JObject joDataset = new JObject();
  700. joDataset.Add("row",jaRow);
  701. joDscgInfo.Add("dataset",joDataset);
  702. //结算入参
  703. JObject joSetlInpar = new JObject();
  704. joSetlInpar.Add("prm_akc190", Global.pat.mdtrtID);
  705. joSetlInpar.Add("prm_aac001", Global.pat.psn_no);
  706. joSetlInpar.Add("prm_yab003", Global.pat.insuplc_admdvs);
  707. joSetlInpar.Add("prm_aka130", Global.pat.medType);
  708. joSetlInpar.Add("prm_ykb065", Global.pat.insuType);
  709. joSetlInpar.Add("prm_yabtch", Global.pat.patExtend.prm_yabtch);
  710. joSetlInpar.Add("prm_hisfyze", JsonHelper.getDestValue(joSumFee, "data.Sumamt"));
  711. joSetlInpar.Add("prm_aae013", "");
  712. joSetlInpar.Add("prm_misecond", 40);
  713. joSetlInpar.Add("prm_aae011", Global.user.ID);
  714. joSetlInpar.Add("prm_ykc141", Global.user.name);
  715. joSetlInpar.Add("ELEC_BILLNO_CODE", "");
  716. joSetlInpar.Add("ELEC_BILL_CODE", "");
  717. joSetlInpar.Add("ELEC_BILL_CHKCODE", "");
  718. JObject joOut = new JObject();
  719. joOut.Add("DischargeRegister", joDscgInfo);
  720. joOut.Add("Settlement", joSetlInpar);
  721. joOut.Add("errorCode", 0);
  722. outParam = joOut.ToString();
  723. return 0;
  724. }
  725. else
  726. {
  727. outParam = "收款员取消结算";
  728. return -1;
  729. }
  730. }
  731. catch (Exception ex)
  732. {
  733. outParam = "showDischargeRegisterForm 异常:" + ex.Message;
  734. return -1;
  735. }
  736. }
  737. public int showOutPatRegisterForm(out string regInfo)
  738. {
  739. //调用服务获取门诊诊断信息
  740. string diagnoses;
  741. if (hIS.getPatDiagnoses(Global.pat, out diagnoses) != 0)
  742. {
  743. regInfo = JsonHelper.setExceptionJson(-1, "getPatDiagnoses", diagnoses).ToString();
  744. return -1;
  745. }
  746. JObject joHisRtnInfo = JObject.Parse(diagnoses);
  747. //组织入参
  748. JObject joReg = new JObject();
  749. try
  750. {
  751. JArray jaDiagnoses = JArray.Parse(JsonHelper.getDestValue(joHisRtnInfo, "diseinfo"));
  752. //登记面板实例
  753. OutpatientRegistration frmReg = new OutpatientRegistration();
  754. frmReg.StartPosition = FormStartPosition.CenterScreen;
  755. //frmReg.dblkcbxSettelmentWay.Enabled = false;
  756. DataTable dt = (DataTable)frmReg.dblkcbxInsuranceType.DataSource;
  757. for (int i = 0; i < dt.Rows.Count; i++)
  758. {
  759. if (dt.Rows[i]["Code"].ToString() == Global.pat.insuType)
  760. {
  761. frmReg.dblkcbxInsuranceType.Text = dt.Rows[i]["Name"].ToString();
  762. frmReg.insuType = dt.Rows[i]["Code"].ToString();
  763. }
  764. }
  765. DataTable dtMedType = (DataTable)frmReg.dblkcbxMedicalType.DataSource;
  766. for (int i = 0; i < dtMedType.Rows.Count; i++)
  767. {
  768. if (dtMedType.Rows[i]["Code"].ToString() == "11")
  769. {
  770. frmReg.dblkcbxMedicalType.Text = dtMedType.Rows[i]["Name"].ToString();
  771. frmReg.med_type = dtMedType.Rows[i]["Code"].ToString();
  772. }
  773. }
  774. DataTable dtSettlWay = null;
  775. for (int i = 0; i < dtSettlWay.Rows.Count; i++)
  776. {
  777. if (dtSettlWay.Rows[i]["Code"].ToString() == "01")
  778. {
  779. //frmReg.dblkcbxSettelmentWay.Text = dtSettlWay.Rows[i]["Name"].ToString();
  780. //frmReg.psn_setlway = dtSettlWay.Rows[i]["Code"].ToString();
  781. }
  782. }
  783. //转换下主要诊断
  784. for (int i = 0; i < jaDiagnoses.Count; i++)
  785. {
  786. string diag_type = JsonHelper.getDestValue((JObject)jaDiagnoses[i], "diag_type");
  787. switch (diag_type)
  788. {
  789. case "1":
  790. {
  791. jaDiagnoses[i]["diag_type_name"] = new JObject();
  792. jaDiagnoses[i]["diag_type_name"] = "西医主要诊断";
  793. break;
  794. }
  795. case "2":
  796. {
  797. jaDiagnoses[i]["diag_type_name"] = new JObject();
  798. jaDiagnoses[i]["diag_type_name"] = "西医其他诊断";
  799. break;
  800. }
  801. case "3":
  802. {
  803. jaDiagnoses[i]["diag_type_name"] = new JObject();
  804. jaDiagnoses[i]["diag_type_name"] = "中医主病诊断";
  805. break;
  806. }
  807. case "4":
  808. {
  809. jaDiagnoses[i]["diag_type_name"] = new JObject();
  810. jaDiagnoses[i]["diag_type_name"] = "中医主证诊断";
  811. break;
  812. }
  813. }
  814. }
  815. frmReg.DtDiagnose = (DataTable)jaDiagnoses.ToObject(typeof(DataTable));
  816. //展示登记面板
  817. if (frmReg.ShowDialog() == DialogResult.OK)
  818. {
  819. string diseCodg = "", diseName = "";
  820. //组织挂号入参
  821. JObject joRegInpar = new JObject();
  822. string occurTime = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss");
  823. joRegInpar.Add("psn_no", Global.pat.psn_no);
  824. joRegInpar.Add("insutype", frmReg.insuType);
  825. joRegInpar.Add("begntime", DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"));//挂号时间
  826. joRegInpar.Add("mdtrt_cert_type", Global.pat.mdtrtcertType);
  827. joRegInpar.Add("mdtrt_cert_no", Global.pat.mdtrtcertNO);
  828. joRegInpar.Add("ipt_otp_no", Global.pat.adm_Dr);
  829. joRegInpar.Add("atddr_no", JsonHelper.getDestValue(joHisRtnInfo, "mdtrtinfo.atddr_no"));
  830. joRegInpar.Add("dr_name", JsonHelper.getDestValue(joHisRtnInfo, "mdtrtinfo.chfpdr_name"));
  831. joRegInpar.Add("dept_code", JsonHelper.getDestValue(joHisRtnInfo, "mdtrtinfo.adm_dept_codg"));
  832. joRegInpar.Add("dept_name", JsonHelper.getDestValue(joHisRtnInfo, "mdtrtinfo.adm_dept_name"));
  833. joRegInpar.Add("expContent", "");
  834. joRegInpar.Add("caty", "72");
  835. joReg.Add("data", joRegInpar);
  836. //组织就诊信息入参
  837. JObject joMdtrtinfo = new JObject();
  838. for (int i = 0; i < jaDiagnoses.Count; i++)
  839. {
  840. jaDiagnoses[i]["vali_flag"] = new JObject();
  841. jaDiagnoses[i]["vali_flag"] = "1";
  842. }
  843. joMdtrtinfo.Add("mdtrt_id", Global.pat.mdtrtID);
  844. joMdtrtinfo.Add("psn_no", Global.pat.psn_no); //人员编号
  845. Global.pat.medType = frmReg.med_type;
  846. joMdtrtinfo.Add("med_type", frmReg.med_type); //医疗类别
  847. joMdtrtinfo.Add("begntime", JsonHelper.getDestValue(joHisRtnInfo, "mdtrtinfo.begntime")); //开始时间
  848. joMdtrtinfo.Add("main_cond_dscr", JsonHelper.getDestValue(joHisRtnInfo, "mdtrtinfo.main_cond_dscr")); //主要病情描述
  849. joMdtrtinfo.Add("dise_codg", diseCodg); //病种编码
  850. joMdtrtinfo.Add("dise_name", diseName); //病种名称
  851. joMdtrtinfo.Add("birctrl_type", JsonHelper.getDestValue(joHisRtnInfo, "mdtrtinfo.birctrl_type")); //计划生育手术类别
  852. joMdtrtinfo.Add("birctrl_matn_date", JsonHelper.getDestValue(joHisRtnInfo, "mdtrtinfo.birctrl_matn_date")); //计划生育手术或生育日期
  853. joMdtrtinfo.Add("matn_type", JsonHelper.getDestValue(joHisRtnInfo, "mdtrtinfo.matn_type")); //生育类别
  854. joMdtrtinfo.Add("geso_val", JsonHelper.getDestValue(joHisRtnInfo, "mdtrtinfo.geso_val")); //孕周数
  855. joMdtrtinfo.Add("expContent", ""); //字段扩展
  856. //组织结算入参
  857. JObject joSetlInpar = new JObject();
  858. joSetlInpar.Add("psn_no", Global.pat.psn_no);
  859. joSetlInpar.Add("mdtrt_cert_type", Global.pat.mdtrtcertType);
  860. joSetlInpar.Add("mdtrt_cert_no", Global.pat.mdtrtcertNO);
  861. joSetlInpar.Add("med_type", Global.pat.medType);
  862. joSetlInpar.Add("medfee_sumamt", "");
  863. joSetlInpar.Add("psn_setlway", ""); //结算方式
  864. joSetlInpar.Add("mdtrt_id", Global.pat.mdtrtID);
  865. joSetlInpar.Add("chrg_bchno", Global.pat.adm_Dr.ToString());
  866. joSetlInpar.Add("acct_used_flag", frmReg.personAccountUsedFlag);//个人账户使用标志
  867. joSetlInpar.Add("insutype", frmReg.insuType);//险种类型
  868. joSetlInpar.Add("pub_hosp_rfom_flag", "");
  869. joSetlInpar.Add("expContent", "");
  870. joReg.Add("mdtrtinfo", joMdtrtinfo);
  871. joReg.Add("diseinfo", jaDiagnoses);
  872. joReg.Add("settlement", joSetlInpar);
  873. regInfo = joReg.ToString();
  874. return 0;
  875. }
  876. else
  877. {
  878. regInfo = "收费员取消操作!";
  879. return -1;
  880. }
  881. }
  882. catch (Exception ex)
  883. {
  884. regInfo = "登记界面显示异常:" + ex.Message;
  885. return -1;
  886. }
  887. }
  888. public int showOutPatRegisterForm_GZ(out string regInfo)
  889. {
  890. //调用服务获取门诊诊断信息
  891. string diagnoses;
  892. if (hIS.getPatDiagnoses(Global.pat, out diagnoses) != 0)
  893. {
  894. regInfo = JsonHelper.setExceptionJson(-1, "getPatDiagnoses", diagnoses).ToString();
  895. return -1;
  896. }
  897. JObject joHisRtnInfo = JObject.Parse(diagnoses);
  898. //组织入参
  899. JObject joReg = new JObject();
  900. try
  901. {
  902. JArray jaDiagnoses = JArray.Parse(JsonHelper.getDestValue(joHisRtnInfo, "diseinfo"));
  903. //登记面板实例
  904. OutpatientRegistration frmReg = new OutpatientRegistration();
  905. frmReg.StartPosition = FormStartPosition.CenterScreen;
  906. //frmReg.dblkcbxSettelmentWay.Enabled = false;
  907. DataTable dt = (DataTable)frmReg.dblkcbxInsuranceType.DataSource;
  908. for (int i = 0; i < dt.Rows.Count; i++)
  909. {
  910. if (dt.Rows[i]["Code"].ToString() == Global.pat.insuType)
  911. {
  912. frmReg.dblkcbxInsuranceType.Text = dt.Rows[i]["Name"].ToString();
  913. frmReg.insuType = dt.Rows[i]["Code"].ToString();
  914. }
  915. }
  916. DataTable dtMedType = (DataTable)frmReg.dblkcbxMedicalType.DataSource;
  917. for (int i = 0; i < dtMedType.Rows.Count; i++)
  918. {
  919. if (dtMedType.Rows[i]["Code"].ToString() == "11")
  920. {
  921. frmReg.dblkcbxMedicalType.Text = dtMedType.Rows[i]["Name"].ToString();
  922. frmReg.med_type = dtMedType.Rows[i]["Code"].ToString();
  923. }
  924. }
  925. //转换下主要诊断
  926. for (int i = 0; i < jaDiagnoses.Count; i++)
  927. {
  928. string diag_type = JsonHelper.getDestValue((JObject)jaDiagnoses[i], "diag_type");
  929. switch (diag_type)
  930. {
  931. case "1":
  932. {
  933. jaDiagnoses[i]["diag_type_name"] = new JObject();
  934. jaDiagnoses[i]["diag_type_name"] = "西医主要诊断";
  935. break;
  936. }
  937. case "2":
  938. {
  939. jaDiagnoses[i]["diag_type_name"] = new JObject();
  940. jaDiagnoses[i]["diag_type_name"] = "西医其他诊断";
  941. break;
  942. }
  943. case "3":
  944. {
  945. jaDiagnoses[i]["diag_type_name"] = new JObject();
  946. jaDiagnoses[i]["diag_type_name"] = "中医主病诊断";
  947. break;
  948. }
  949. case "4":
  950. {
  951. jaDiagnoses[i]["diag_type_name"] = new JObject();
  952. jaDiagnoses[i]["diag_type_name"] = "中医主证诊断";
  953. break;
  954. }
  955. }
  956. }
  957. frmReg.DtDiagnose = (DataTable)jaDiagnoses.ToObject(typeof(DataTable));
  958. //展示登记面板
  959. if (frmReg.ShowDialog() == DialogResult.OK)
  960. {
  961. //组织挂号入参
  962. JObject joData = new JObject();
  963. JObject joAgnterinfo = new JObject();
  964. string occurTime = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss");
  965. joAgnterinfo.Add("agnter_name", ""); //代办人姓名
  966. joAgnterinfo.Add("agnter_rlts", ""); //代办人关系
  967. joAgnterinfo.Add("agnter_cert_type","");//代办人证件类型
  968. joAgnterinfo.Add("agnter_certno", "");//代办人证件号码
  969. joAgnterinfo.Add("agnter_tel", "");//代办人联系电话
  970. joAgnterinfo.Add("agnter_addr", "");//代办人联系地址
  971. joAgnterinfo.Add("agnter_photo", ""); //代办人照片
  972. joData.Add("agnterinfo", joAgnterinfo);
  973. JObject joRegMdtrtinfo = new JObject();
  974. joRegMdtrtinfo.Add("psn_no", Global.pat.psn_no);
  975. joRegMdtrtinfo.Add("insutype", frmReg.insuType);
  976. joRegMdtrtinfo.Add("begntime", DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"));//挂号时间
  977. joRegMdtrtinfo.Add("mdtrt_cert_type", Global.pat.mdtrtcertType);
  978. joRegMdtrtinfo.Add("mdtrt_cert_no", Global.pat.mdtrtcertNO);
  979. joRegMdtrtinfo.Add("ipt_otp_no", Global.pat.adm_Dr);
  980. joRegMdtrtinfo.Add("atddr_no", JsonHelper.getDestValue(joHisRtnInfo, "mdtrtinfo.atddr_no"));
  981. joRegMdtrtinfo.Add("dr_name", JsonHelper.getDestValue(joHisRtnInfo, "mdtrtinfo.chfpdr_name"));
  982. joRegMdtrtinfo.Add("dept_code", JsonHelper.getDestValue(joHisRtnInfo, "mdtrtinfo.adm_dept_codg"));
  983. joRegMdtrtinfo.Add("dept_name", JsonHelper.getDestValue(joHisRtnInfo, "mdtrtinfo.adm_dept_name"));
  984. //joRegMdtrtinfo.Add("hcard_basinfo", Global.pat.card.basinfo);
  985. //joRegMdtrtinfo.Add("hcard_chkinfo", Global.pat.card.chkinfo);
  986. joRegMdtrtinfo.Add("caty", "72");
  987. joData.Add("mdtrtinfo", joRegMdtrtinfo);
  988. joReg.Add("data",joData);
  989. //组织就诊信息入参
  990. JObject joMdtrtinfo = new JObject();
  991. for (int i = 0; i < jaDiagnoses.Count; i++)
  992. {
  993. jaDiagnoses[i]["vali_flag"] = new JObject();
  994. jaDiagnoses[i]["vali_flag"] = "1";
  995. }
  996. joMdtrtinfo.Add("mdtrt_id", Global.pat.mdtrtID);
  997. joMdtrtinfo.Add("psn_no", Global.pat.psn_no); //人员编号
  998. Global.pat.medType = frmReg.med_type;
  999. joMdtrtinfo.Add("med_type", frmReg.med_type); //医疗类别
  1000. joMdtrtinfo.Add("begntime", JsonHelper.getDestValue(joHisRtnInfo, "mdtrtinfo.begntime")); //开始时间
  1001. joMdtrtinfo.Add("main_cond_dscr", JsonHelper.getDestValue(joHisRtnInfo, "mdtrtinfo.main_cond_dscr")); //主要病情描述
  1002. joMdtrtinfo.Add("birctrl_type", JsonHelper.getDestValue(joHisRtnInfo, "mdtrtinfo.birctrl_type")); //计划生育手术类别
  1003. joMdtrtinfo.Add("birctrl_matn_date", JsonHelper.getDestValue(joHisRtnInfo, "mdtrtinfo.birctrl_matn_date")); //计划生育手术或生育日期
  1004. joMdtrtinfo.Add("ttp_resp", 0); //是否第三方责任申请
  1005. joMdtrtinfo.Add("expi_gestation_nub_of_m", JsonHelper.getDestValue(joHisRtnInfo, "mdtrtinfo.geso_val")); //终止妊娠月数
  1006. //组织结算入参
  1007. JObject joSetlInpar = new JObject();
  1008. joSetlInpar.Add("psn_no", Global.pat.psn_no);
  1009. joSetlInpar.Add("mdtrt_cert_type", Global.pat.mdtrtcertType);
  1010. joSetlInpar.Add("mdtrt_cert_no", Global.pat.mdtrtcertNO);
  1011. joSetlInpar.Add("med_type", Global.pat.medType);
  1012. joSetlInpar.Add("medfee_sumamt", "");
  1013. joSetlInpar.Add("psn_setlway", ""); //结算方式
  1014. joSetlInpar.Add("mdtrt_id", Global.pat.mdtrtID);
  1015. joSetlInpar.Add("chrg_bchno", Global.pat.adm_Dr.ToString());
  1016. joSetlInpar.Add("acct_used_flag", frmReg.personAccountUsedFlag);//个人账户使用标志
  1017. joSetlInpar.Add("insutype", frmReg.insuType);//险种类型
  1018. //joSetlInpar.Add("pub_hosp_rfom_flag", "");
  1019. joSetlInpar.Add("mdtrt_mode", 0);
  1020. joSetlInpar.Add("mid_setl_flag", 0);
  1021. joSetlInpar.Add("order_no", "");
  1022. joSetlInpar.Add("invono", "");
  1023. //joSetlInpar.Add("hcard_basinfo", Global.pat.card.basinfo);
  1024. //joSetlInpar.Add("hcard_chkinfo", Global.pat.card.chkinfo);
  1025. //HIS 根据这个来保存参保地和就医地,也不影响中心,HIS 根据这个来存
  1026. joSetlInpar.Add("insuplc_admdvs", Global.pat.insuplc_admdvs);
  1027. joSetlInpar.Add("mdtrtarea_admvs", Global.inf.areaCode);
  1028. joReg.Add("mdtrtinfo", joMdtrtinfo);
  1029. joReg.Add("diseinfo", jaDiagnoses);
  1030. joReg.Add("settlement", joSetlInpar);
  1031. regInfo = joReg.ToString();
  1032. return 0;
  1033. }
  1034. else
  1035. {
  1036. regInfo = "收费员取消操作!";
  1037. return -1;
  1038. }
  1039. }
  1040. catch (Exception ex)
  1041. {
  1042. regInfo = "登记界面显示异常:" + ex.Message;
  1043. return -1;
  1044. }
  1045. }
  1046. /// <summary>
  1047. /// 上传费用到中心
  1048. /// </summary>
  1049. /// <returns></returns>
  1050. ///
  1051. public int uploadFee(string funNO,int singleCount,out string outParam)
  1052. {
  1053. outParam = "";
  1054. string errMsg;
  1055. try
  1056. {
  1057. PTMedicalInsurance.Forms.FeeUpload pb = new PTMedicalInsurance.Forms.FeeUpload(funNO, singleCount);
  1058. pb.StartPosition = FormStartPosition.CenterScreen;
  1059. if (pb.ShowDialog() == DialogResult.OK)
  1060. { return 0; }
  1061. else
  1062. {
  1063. outParam = pb.outParam;
  1064. return -1;
  1065. }
  1066. }
  1067. catch (Exception ex)
  1068. {
  1069. outParam = "uploadFee 异常:" + ex.Message;
  1070. return -1;
  1071. }
  1072. }
  1073. /// <summary>
  1074. /// 获取登记时候传入的信息,并赋值给patients结构体
  1075. /// </summary>
  1076. /// <param name="businessType"></param>
  1077. /// <param name="inparam"></param>
  1078. /// <param name="pat"></param>
  1079. public void GetRegPatInfo(string businessType, JObject joInparam,out Patients pat)
  1080. {
  1081. pat = new Patients();
  1082. try
  1083. {
  1084. switch (businessType)
  1085. {
  1086. case "M2"://门诊登记
  1087. {
  1088. break;
  1089. }
  1090. case "M2C"://门诊登记撤销
  1091. {
  1092. break;
  1093. }
  1094. case "Z0"://住院修改
  1095. {
  1096. break;
  1097. }
  1098. case "Z2"://入院登记
  1099. {
  1100. pat.adm_Dr = int.Parse(JsonHelper.getDestValue(joInparam, "params[0].admID"));
  1101. pat.psn_no = JsonHelper.getDestValue(joInparam, "params[0].patientInfo.output.prm_aac001");
  1102. pat.insuType = JsonHelper.getDestValue(joInparam, "params[0].patientInfo.selectedInsuInfo.prm_ykb065");
  1103. pat.insuplc_admdvs = JsonHelper.getDestValue(joInparam, "params[0].patientInfo.selectedInsuInfo.prm_yab139");
  1104. pat.mdtrtcertType = JsonHelper.getDestValue(joInparam, "params[0].patientInfo.selectedInsuInfo.mdtrt_cert_type");
  1105. pat.mdtrtcertNO = JsonHelper.getDestValue(joInparam, "params[0].patientInfo.selectedInsuInfo.prm_aac002");
  1106. pat.name = JsonHelper.getDestValue(joInparam, "params[0].patientInfo.output.prm_aac003");
  1107. pat.psn_type = JsonHelper.getDestValue(joInparam, "params[0].patientInfo.selectedInsuInfo.prm_akc021");
  1108. pat.patExtend.ykc296 = JsonHelper.getDestValue(joInparam, "params[0].patientInfo.selectedInsuInfo.prm_ykc296");
  1109. //pat.certType = JsonHelper.getDestValue(joInparam, "params[0].patientInfo.output.baseinfo.psn_cert_type");
  1110. pat.certNO = JsonHelper.getDestValue(joInparam, "params[0].patientInfo.output.prm_aac002");
  1111. pat.billID = JsonHelper.getDestValue(joInparam, "params[0].billID");
  1112. //pat.card.SN = JsonHelper.getDestValue(joInparam, "params[0].patientInfo.cardinfo.card_sn");
  1113. pat.patExtend.prm_yabtch = JsonHelper.getDestValue(joInparam, "params[0].patientInfo.selectedInsuInfo.prm_yabtch");
  1114. break;
  1115. }
  1116. case "Z2C"://入院登记取消
  1117. {
  1118. pat.adm_Dr = int.Parse(JsonHelper.getDestValue(joInparam, "params[0].admID"));
  1119. pat.psn_no = JsonHelper.getDestValue(joInparam, "params[0].psn_no");
  1120. pat.mdtrtID = JsonHelper.getDestValue(joInparam, "params[0].mdtrt_id");
  1121. pat.insuplc_admdvs = JsonHelper.getDestValue(joInparam, "insuAdmObj.insuplc_admdvs");
  1122. break;
  1123. }
  1124. case "Z6"://出院登记
  1125. {
  1126. break;
  1127. }
  1128. case "Z6C"://出院登记取消
  1129. {
  1130. pat.psn_no = JsonHelper.getDestValue(joInparam, "insuAdmObj.psn_no");
  1131. pat.mdtrtID = JsonHelper.getDestValue(joInparam, "insuAdmObj.mdtrt_id");
  1132. pat.insuplc_admdvs = JsonHelper.getDestValue(joInparam, "insuAdmObj.insuplc_admdvs");
  1133. pat.adm_Dr = int.Parse(JsonHelper.getDestValue(joInparam, "params[0].admID"));
  1134. break;
  1135. }
  1136. default:
  1137. {
  1138. break;
  1139. }
  1140. }
  1141. }
  1142. catch (Exception ex)
  1143. {
  1144. Global.writeLog("GetRegPatInfo(" + businessType + ")", JsonHelper.Compress(joInparam),"PAT结构体设置异常:" + ex.Message);
  1145. }
  1146. }
  1147. /// <summary>
  1148. /// 获取费用上传时前端传入的信息,并赋值给patients结构体
  1149. /// </summary>
  1150. /// <param name="businessType"></param>
  1151. /// <param name="joInparam"></param>
  1152. /// <param name="pat"></param>
  1153. public void GetFeeHisInfo(string businessType, JObject joInparam, out Patients pat)
  1154. {
  1155. pat = new Patients();
  1156. try
  1157. {
  1158. switch (businessType)
  1159. {
  1160. case "M3"://门诊费用上传
  1161. {
  1162. break;
  1163. }
  1164. case "M3C"://门诊费用撤销
  1165. {
  1166. break;
  1167. }
  1168. case "Z3"://入院费用上传
  1169. {
  1170. pat.adm_Dr = int.Parse(JsonHelper.getDestValue(joInparam, "insuAdmObj.admID"));
  1171. pat.psn_no = JsonHelper.getDestValue(joInparam, "insuAdmObj.psn_no");
  1172. pat.mdtrtID = JsonHelper.getDestValue(joInparam, "insuAdmObj.mdtrt_id");
  1173. pat.insuplc_admdvs = JsonHelper.getDestValue(joInparam, "insuAdmObj.insuplc_admdvs");
  1174. pat.name = JsonHelper.getDestValue(joInparam, "insuAdmObj.psn_name");
  1175. pat.billID = JsonHelper.getDestValue(joInparam, "params[0].billID");
  1176. pat.recordID = "";
  1177. break;
  1178. }
  1179. case "Z3C"://住院费用上传取消
  1180. {
  1181. pat.adm_Dr = int.Parse(JsonHelper.getDestValue(joInparam, "insuAdmObj.admID"));
  1182. pat.psn_no = JsonHelper.getDestValue(joInparam, "insuAdmObj.psn_no");
  1183. pat.mdtrtID = JsonHelper.getDestValue(joInparam, "insuAdmObj.mdtrt_id");
  1184. pat.insuplc_admdvs = JsonHelper.getDestValue(joInparam, "insuAdmObj.insuplc_admdvs");
  1185. break;
  1186. }
  1187. default:
  1188. {
  1189. break;
  1190. }
  1191. }
  1192. }
  1193. catch (Exception ex)
  1194. {
  1195. Global.writeLog("GetFeeHisInfo(" + businessType + ")", JsonHelper.Compress(joInparam), "PAT结构体设置异常:" + ex.Message);
  1196. }
  1197. }
  1198. /// <summary>
  1199. /// 获取结算时前端传入的信息,并赋值给patients结构体
  1200. /// </summary>
  1201. /// <param name="businessType"></param>
  1202. /// <param name="joInparam"></param>
  1203. /// <param name="pat"></param>
  1204. public void GetSettlementHisInfo(string businessType, JObject joInparam, out Patients pat)
  1205. {
  1206. pat = new Patients();
  1207. switch (businessType)
  1208. {
  1209. case "M4"://门诊预结算
  1210. {
  1211. break;
  1212. }
  1213. case "M4C"://门诊预结算撤销
  1214. {
  1215. break;
  1216. }
  1217. case "M5"://门诊结算
  1218. {
  1219. pat.adm_Dr = int.Parse(JsonHelper.getDestValue(joInparam, "params[0].admID"));
  1220. pat.recordID = JsonHelper.getDestValue(joInparam, "params[0].recordID");
  1221. pat.billID = JsonHelper.getDestValue(joInparam, "params[0].billID");
  1222. Global.pat.insuplc_admdvs = "";
  1223. if (string.IsNullOrEmpty(JsonHelper.getDestValue(joInparam, "insuAdmObj.inDays")))
  1224. {
  1225. Global.settl.hospitalizationsDays = 0;
  1226. }
  1227. else
  1228. {
  1229. Global.settl.hospitalizationsDays = int.Parse(JsonHelper.getDestValue(joInparam, "insuAdmObj.inDays"));
  1230. }
  1231. if (string.IsNullOrEmpty(JsonHelper.getDestValue(joInparam, "insuAdmObj.inTimes")))
  1232. {
  1233. Global.settl.hospitalizationsTimes = 0;
  1234. }
  1235. else
  1236. {
  1237. Global.settl.hospitalizationsTimes = int.Parse(JsonHelper.getDestValue(joInparam, "insuAdmObj.inTimes"));
  1238. }
  1239. if (string.IsNullOrEmpty(JsonHelper.getDestValue(joInparam, "insuAdmObj.admDateTime")))
  1240. {
  1241. Global.settl.hisAdmTime = "";
  1242. }
  1243. else
  1244. {
  1245. Global.settl.hisAdmTime = Convert.ToDateTime(JsonHelper.getDestValue(joInparam, "insuAdmObj.admDateTime")).ToString("yyyy-MM-dd HH:mm:ss");
  1246. }
  1247. if (string.IsNullOrEmpty(JsonHelper.getDestValue(joInparam, "insuAdmObj.disDateTime")))
  1248. {
  1249. Global.settl.hisDischargeTime = "";
  1250. }
  1251. else
  1252. {
  1253. Global.settl.hisDischargeTime = Convert.ToDateTime(JsonHelper.getDestValue(joInparam, "insuAdmObj.disDateTime")).ToString("yyyy-MM-dd HH:mm:ss");
  1254. }
  1255. //Global.settl.hospitalizationsDays = int.Parse(JsonHelper.getDestValue(joInparam, "insuAdmObj.inDays"));
  1256. //Global.settl.hospitalizationsTimes = int.Parse(JsonHelper.getDestValue(joInparam, "insuAdmObj.inTimes"));
  1257. //Global.settl.hisAdmTime = Convert.ToDateTime(JsonHelper.getDestValue(joInparam, "insuAdmObj.admDateTime"));
  1258. //Global.settl.hisDischargeTime = Convert.ToDateTime(JsonHelper.getDestValue(joInparam, "insuAdmObj.disDateTime"));
  1259. break;
  1260. }
  1261. case "M5C"://门诊结算撤销
  1262. {
  1263. pat.psn_no = JsonHelper.getDestValue(joInparam, "insuAdmObj.psn_no");
  1264. pat.mdtrtID = JsonHelper.getDestValue(joInparam, "insuAdmObj.mdtrt_id");
  1265. pat.settlID = JsonHelper.getDestValue(joInparam, "insuAdmObj.setl_id");
  1266. pat.insuplc_admdvs = JsonHelper.getDestValue(joInparam, "insuAdmObj.insuplc_admdvs");
  1267. pat.adm_Dr = int.Parse(JsonHelper.getDestValue(joInparam, "params[0].admID"));
  1268. pat.recordID = JsonHelper.getDestValue(joInparam, "params[0].recordID");
  1269. pat.billID = JsonHelper.getDestValue(joInparam, "params[0].billID");
  1270. break;
  1271. }
  1272. case "M6"://门诊结算
  1273. {
  1274. pat.adm_Dr = int.Parse(JsonHelper.getDestValue(joInparam, "params[0].admID"));
  1275. pat.recordID = JsonHelper.getDestValue(joInparam, "params[0].recordID");
  1276. pat.billID = JsonHelper.getDestValue(joInparam, "params[0].billID");
  1277. Global.pat.insuplc_admdvs = "";
  1278. if (string.IsNullOrEmpty(JsonHelper.getDestValue(joInparam, "insuAdmObj.inDays")))
  1279. {
  1280. Global.settl.hospitalizationsDays = 0;
  1281. }
  1282. else
  1283. {
  1284. Global.settl.hospitalizationsDays = int.Parse(JsonHelper.getDestValue(joInparam, "insuAdmObj.inDays"));
  1285. }
  1286. if (string.IsNullOrEmpty(JsonHelper.getDestValue(joInparam, "insuAdmObj.inTimes")))
  1287. {
  1288. Global.settl.hospitalizationsTimes = 0;
  1289. }
  1290. else
  1291. {
  1292. Global.settl.hospitalizationsTimes = int.Parse(JsonHelper.getDestValue(joInparam, "insuAdmObj.inTimes"));
  1293. }
  1294. if (string.IsNullOrEmpty(JsonHelper.getDestValue(joInparam, "insuAdmObj.admDateTime")))
  1295. {
  1296. Global.settl.hisAdmTime = "";
  1297. }
  1298. else
  1299. {
  1300. Global.settl.hisAdmTime = Convert.ToDateTime(JsonHelper.getDestValue(joInparam, "insuAdmObj.admDateTime")).ToString("yyyy-MM-dd HH:mm:ss");
  1301. }
  1302. if (string.IsNullOrEmpty(JsonHelper.getDestValue(joInparam, "insuAdmObj.disDateTime")))
  1303. {
  1304. Global.settl.hisDischargeTime = "";
  1305. }
  1306. else
  1307. {
  1308. Global.settl.hisDischargeTime = Convert.ToDateTime(JsonHelper.getDestValue(joInparam, "insuAdmObj.disDateTime")).ToString("yyyy-MM-dd HH:mm:ss");
  1309. }
  1310. //Global.settl.hospitalizationsDays = int.Parse(JsonHelper.getDestValue(joInparam, "insuAdmObj.inDays"));
  1311. //Global.settl.hospitalizationsTimes = int.Parse(JsonHelper.getDestValue(joInparam, "insuAdmObj.inTimes"));
  1312. //Global.settl.hisAdmTime = Convert.ToDateTime(JsonHelper.getDestValue(joInparam, "insuAdmObj.admDateTime"));
  1313. //Global.settl.hisDischargeTime = Convert.ToDateTime(JsonHelper.getDestValue(joInparam, "insuAdmObj.disDateTime"));
  1314. break;
  1315. }
  1316. case "M6C"://门诊结算撤销
  1317. {
  1318. pat.psn_no = JsonHelper.getDestValue(joInparam, "insuAdmObj.psn_no");
  1319. pat.mdtrtID = JsonHelper.getDestValue(joInparam, "insuAdmObj.mdtrt_id");
  1320. pat.settlID = JsonHelper.getDestValue(joInparam, "insuAdmObj.setl_id");
  1321. pat.insuplc_admdvs = JsonHelper.getDestValue(joInparam, "insuAdmObj.insuplc_admdvs");
  1322. pat.adm_Dr = int.Parse(JsonHelper.getDestValue(joInparam, "params[0].admID"));
  1323. pat.recordID = JsonHelper.getDestValue(joInparam, "params[0].recordID");
  1324. pat.billID = JsonHelper.getDestValue(joInparam, "params[0].billID");
  1325. break;
  1326. }
  1327. case "Z4"://住院预结算
  1328. {
  1329. pat.adm_Dr = int.Parse(JsonHelper.getDestValue(joInparam, "insuAdmObj.admID"));
  1330. pat.psn_no = JsonHelper.getDestValue(joInparam, "insuAdmObj.psn_no");
  1331. pat.mdtrtID = JsonHelper.getDestValue(joInparam, "insuAdmObj.mdtrt_id");
  1332. pat.insuplc_admdvs = JsonHelper.getDestValue(joInparam, "insuAdmObj.insuplc_admdvs");
  1333. pat.name = JsonHelper.getDestValue(joInparam, "insuAdmObj.psn_name");
  1334. pat.recordID = JsonHelper.getDestValue(joInparam, "params[0].recordID");
  1335. pat.billID = JsonHelper.getDestValue(joInparam, "params[0].billID");
  1336. if (string.IsNullOrEmpty(JsonHelper.getDestValue(joInparam, "insuAdmObj.inDays")))
  1337. {
  1338. Global.settl.hospitalizationsDays = 0;
  1339. }
  1340. else
  1341. {
  1342. Global.settl.hospitalizationsDays = int.Parse(JsonHelper.getDestValue(joInparam, "insuAdmObj.inDays"));
  1343. }
  1344. if (string.IsNullOrEmpty(JsonHelper.getDestValue(joInparam, "insuAdmObj.inTimes")))
  1345. {
  1346. Global.settl.hospitalizationsTimes = 0;
  1347. }
  1348. else
  1349. {
  1350. Global.settl.hospitalizationsTimes = int.Parse(JsonHelper.getDestValue(joInparam, "insuAdmObj.inTimes"));
  1351. }
  1352. if (string.IsNullOrEmpty(JsonHelper.getDestValue(joInparam, "insuAdmObj.admDateTime")))
  1353. {
  1354. Global.settl.hisAdmTime = "";
  1355. }
  1356. else
  1357. {
  1358. Global.settl.hisAdmTime = Convert.ToDateTime(JsonHelper.getDestValue(joInparam, "insuAdmObj.admDateTime")).ToString("yyyy-MM-dd HH:mm:ss");
  1359. }
  1360. if (string.IsNullOrEmpty(JsonHelper.getDestValue(joInparam, "insuAdmObj.disDateTime")))
  1361. {
  1362. Global.settl.hisDischargeTime = "";
  1363. }
  1364. else
  1365. {
  1366. Global.settl.hisDischargeTime = Convert.ToDateTime(JsonHelper.getDestValue(joInparam, "insuAdmObj.disDateTime")).ToString("yyyy-MM-dd HH:mm:ss");
  1367. }
  1368. //Global.settl.hospitalizationsDays = int.Parse(JsonHelper.getDestValue(joInparam, "insuAdmObj.inDays"));
  1369. //Global.settl.hospitalizationsTimes = int.Parse(JsonHelper.getDestValue(joInparam, "insuAdmObj.inTimes"));
  1370. //Global.settl.hisAdmTime = Convert.ToDateTime(JsonHelper.getDestValue(joInparam, "insuAdmObj.admDateTime"));
  1371. //Global.settl.hisDischargeTime = Convert.ToDateTime(JsonHelper.getDestValue(joInparam, "insuAdmObj.disDateTime"));
  1372. Global.writeLog(Global.settl.hospitalizationsDays.ToString());
  1373. Global.writeLog(Global.settl.hospitalizationsTimes.ToString());
  1374. Global.writeLog(Global.settl.hisAdmTime.ToString());
  1375. Global.writeLog(Global.settl.hisDischargeTime.ToString());
  1376. break;
  1377. }
  1378. case "Z4C"://住院预结算撤销
  1379. {
  1380. pat.psn_no = JsonHelper.getDestValue(joInparam, "insuAdmObj.psn_no");
  1381. pat.mdtrtID = JsonHelper.getDestValue(joInparam, "insuAdmObj.mdtrt_id");
  1382. pat.settlID = JsonHelper.getDestValue(joInparam, "insuAdmObj.setl_id");
  1383. pat.insuplc_admdvs = JsonHelper.getDestValue(joInparam, "insuAdmObj.insuplc_admdvs");
  1384. pat.adm_Dr = int.Parse(JsonHelper.getDestValue(joInparam, "params[0].admID"));
  1385. pat.recordID = JsonHelper.getDestValue(joInparam, "params[0].recordID");
  1386. pat.billID = JsonHelper.getDestValue(joInparam, "params[0].billID");
  1387. break;
  1388. }
  1389. case "Z5"://住院结算
  1390. {
  1391. pat.adm_Dr = int.Parse(JsonHelper.getDestValue(joInparam, "insuAdmObj.admID"));
  1392. pat.psn_no = JsonHelper.getDestValue(joInparam, "insuAdmObj.psn_no");
  1393. pat.mdtrtID = JsonHelper.getDestValue(joInparam, "insuAdmObj.mdtrt_id");
  1394. pat.insuplc_admdvs = JsonHelper.getDestValue(joInparam, "insuAdmObj.insuplc_admdvs");
  1395. pat.name = JsonHelper.getDestValue(joInparam, "insuAdmObj.psn_name");
  1396. pat.billID = JsonHelper.getDestValue(joInparam, "params[0].billID");
  1397. pat.recordID = JsonHelper.getDestValue(joInparam, "params[0].recordID");
  1398. if (string.IsNullOrEmpty(JsonHelper.getDestValue(joInparam, "insuAdmObj.inDays")))
  1399. {
  1400. Global.settl.hospitalizationsDays = 0;
  1401. }
  1402. else
  1403. {
  1404. Global.settl.hospitalizationsDays = int.Parse(JsonHelper.getDestValue(joInparam, "insuAdmObj.inDays"));
  1405. }
  1406. if (string.IsNullOrEmpty(JsonHelper.getDestValue(joInparam, "insuAdmObj.inTimes")))
  1407. {
  1408. Global.settl.hospitalizationsTimes = 0;
  1409. }
  1410. else
  1411. {
  1412. Global.settl.hospitalizationsTimes = int.Parse(JsonHelper.getDestValue(joInparam, "insuAdmObj.inTimes"));
  1413. }
  1414. if (string.IsNullOrEmpty(JsonHelper.getDestValue(joInparam, "insuAdmObj.admDateTime")))
  1415. {
  1416. Global.settl.hisAdmTime = "";
  1417. }
  1418. else
  1419. {
  1420. Global.settl.hisAdmTime = Convert.ToDateTime(JsonHelper.getDestValue(joInparam, "insuAdmObj.admDateTime")).ToString("yyyy-MM-dd HH:mm:ss");
  1421. }
  1422. if (string.IsNullOrEmpty(JsonHelper.getDestValue(joInparam, "insuAdmObj.disDateTime")))
  1423. {
  1424. Global.settl.hisDischargeTime = "";
  1425. }
  1426. else
  1427. {
  1428. Global.settl.hisDischargeTime = Convert.ToDateTime(JsonHelper.getDestValue(joInparam, "insuAdmObj.disDateTime")).ToString("yyyy-MM-dd HH:mm:ss");
  1429. }
  1430. //Global.settl.hospitalizationsDays = int.Parse(JsonHelper.getDestValue(joInparam, "insuAdmObj.inDays"));
  1431. //Global.settl.hospitalizationsTimes = int.Parse(JsonHelper.getDestValue(joInparam, "insuAdmObj.inTimes"));
  1432. //Global.settl.hisAdmTime = Convert.ToDateTime(JsonHelper.getDestValue(joInparam, "insuAdmObj.admDateTime"));
  1433. //Global.settl.hisDischargeTime = Convert.ToDateTime(JsonHelper.getDestValue(joInparam, "insuAdmObj.disDateTime"));
  1434. Global.writeLog(Global.settl.hospitalizationsDays.ToString());
  1435. Global.writeLog(Global.settl.hospitalizationsTimes.ToString());
  1436. Global.writeLog(Global.settl.hisAdmTime.ToString());
  1437. Global.writeLog(Global.settl.hisDischargeTime.ToString());
  1438. break;
  1439. }
  1440. case "Z5C"://住院结算撤销
  1441. {
  1442. pat.adm_Dr = int.Parse(JsonHelper.getDestValue(joInparam, "insuAdmObj.admID"));
  1443. pat.psn_no = JsonHelper.getDestValue(joInparam, "insuAdmObj.psn_no");
  1444. pat.mdtrtID = JsonHelper.getDestValue(joInparam, "insuAdmObj.mdtrt_id");
  1445. pat.insuplc_admdvs = JsonHelper.getDestValue(joInparam, "insuAdmObj.insuplc_admdvs");
  1446. pat.name = JsonHelper.getDestValue(joInparam, "insuAdmObj.psn_name");
  1447. pat.recordID = JsonHelper.getDestValue(joInparam, "params[0].recordID");
  1448. pat.billID = JsonHelper.getDestValue(joInparam, "params[0].billID");
  1449. pat.settlID = JsonHelper.getDestValue(joInparam, "insuAdmObj.setl_id");
  1450. break;
  1451. }
  1452. default:
  1453. {
  1454. break;
  1455. }
  1456. }
  1457. }
  1458. public void GetAgentFunHisInfo(string businessType, JObject joInparam, out Patients pat)
  1459. {
  1460. pat = new Patients();
  1461. switch (businessType)
  1462. {
  1463. case "PreAndInProcessAnalysis"://事前事中
  1464. {
  1465. pat.adm_Dr = int.Parse(JsonHelper.getDestValue(joInparam, "insuAdmObj.admID"));
  1466. pat.psn_no = JsonHelper.getDestValue(joInparam, "insuAdmObj.psn_no");
  1467. pat.mdtrtID = JsonHelper.getDestValue(joInparam, "insuAdmObj.mdtrt_id");
  1468. pat.insuplc_admdvs = JsonHelper.getDestValue(joInparam, "insuAdmObj.insuplc_admdvs");
  1469. pat.name = JsonHelper.getDestValue(joInparam, "insuAdmObj.psn_name");
  1470. pat.billID = JsonHelper.getDestValue(joInparam, "params[0].billID");
  1471. Global.pat.insuType = JsonHelper.getDestValue(joInparam, "insuAdmObj.insutype");
  1472. break;
  1473. }
  1474. default:
  1475. {
  1476. break;
  1477. }
  1478. }
  1479. }
  1480. /// <summary>
  1481. /// 字典下载
  1482. /// </summary>
  1483. /// <param name="inParam"></param>
  1484. /// <returns></returns>
  1485. public string downDictionary(string inParam)
  1486. {
  1487. JObject joCenterRtn = invoker.invokeCenterService("1901", inParam);
  1488. return joCenterRtn.ToString();
  1489. }
  1490. /// <summary>
  1491. /// 展示结算信息界面
  1492. /// </summary>
  1493. /// <param name="joSettlement"></param>
  1494. /// <param name="outParam"></param>
  1495. /// <returns></returns>
  1496. public int showSettlementForm(JObject joSettlement, out string outParam)
  1497. {
  1498. outParam = "";
  1499. string errMsg;
  1500. try
  1501. {
  1502. SettlementInfo frmSettlment = new SettlementInfo(joSettlement);
  1503. frmSettlment.StartPosition = FormStartPosition.CenterScreen;
  1504. //相关信息转换到结算信息面板
  1505. if (frmSettlment.ShowDialog() == DialogResult.OK)
  1506. {
  1507. return 0;
  1508. }
  1509. else
  1510. {
  1511. outParam = "收款员取消";
  1512. return -1;
  1513. }
  1514. }
  1515. catch (Exception ex)
  1516. {
  1517. outParam = "showSettlementForm 异常:" + ex.Message;
  1518. return -1;
  1519. }
  1520. }
  1521. /// <summary>
  1522. /// 预结算封装,返回正式结算的入参
  1523. /// </summary>
  1524. /// <param name="joSettlement"></param>
  1525. /// <param name="outParam"></param>
  1526. /// <returns></returns>
  1527. public int preSettlement(out JObject joSettlement, out string outParam)
  1528. {
  1529. joSettlement = new JObject();
  1530. outParam = "";
  1531. string outPar = "";
  1532. string errMsg = "";
  1533. //#region【住院预结算2303前调用3102医保明细审核事中服务】
  1534. ////1.获取3102入参报文
  1535. //if (hIS.GetInsuPatInfo("9", Global.pat, out outParam) != 0)
  1536. //{
  1537. // outParam = "获取3102医保明细审核事中分析服务入参失败:" + outParam;
  1538. // return -1;
  1539. //}
  1540. //else
  1541. //{
  1542. // //2.调用医保3102明细审核事前分析服务
  1543. // JObject joInput = new JObject();
  1544. // joInput.Add("data", JObject.Parse(outParam));
  1545. // JObject jo3101Rtn = invoker.invokeCenterService("3102", joInput);
  1546. // if (JsonHelper.parseCenterRtnValue(jo3101Rtn, out errMsg) != 0)
  1547. // {
  1548. // DialogResult dr = MessageBox.Show("【3102】医保明细审核事中分析服务医保中心返回结果:" + errMsg + "!是否继续?", "提示", MessageBoxButtons.OKCancel, MessageBoxIcon.Question);
  1549. // if (dr != DialogResult.OK)
  1550. // {
  1551. // outParam = "【3102】医保明细审核事中分析服务调用失败:" + errMsg;
  1552. // return -1;
  1553. // }
  1554. // }
  1555. //}
  1556. //#endregion
  1557. //调用IRIS获取医保各项金额
  1558. if (mIS.getSumFee(out outPar) != 0)
  1559. {
  1560. outParam = JsonHelper.setExceptionJson(-1, "获取医保费用各项汇总金额", outPar).ToString();
  1561. return -1;
  1562. }
  1563. JObject joSumFee = JObject.Parse(outPar);
  1564. //从云医保平台获取患者详细的医保登记信息
  1565. if (mIS.queryRegisterInfo(1, out outParam) != 0)
  1566. {
  1567. outParam = JsonHelper.setExceptionJson(-1, "查询患者云平台登记信息", outParam).ToString();
  1568. return -1;
  1569. }
  1570. JObject joReg = JObject.Parse(outParam);
  1571. Global.pat.medType = JsonHelper.getDestValue(joReg, "data.MedicalType");
  1572. Global.pat.insuType = JsonHelper.getDestValue(joReg, "data.InsuType");
  1573. Global.pat.mdtrtcertType = JsonHelper.getDestValue(joReg, "data.CertificateType");
  1574. Global.pat.mdtrtcertNO = JsonHelper.getDestValue(joReg, "data.CertificateNO");
  1575. Global.pat.certType = JsonHelper.getDestValue(joReg, "data.CertificateType");
  1576. Global.pat.certNO = JsonHelper.getDestValue(joReg, "data.CertificateNO");
  1577. Global.pat.insuplc_admdvs = JsonHelper.getDestValue(joReg, "data.InsuranceAreaCode");
  1578. Global.pat.psn_type = Global.pat.insuType;//后面再改
  1579. setPrmBatch();
  1580. if (Global.pat.patExtend.prm_yabtch != "GS01")
  1581. {
  1582. ////事中分析
  1583. if (Global.curEvt.ext.isOpenAnalysis)
  1584. {
  1585. if (InProcessAnalysis("9",out errMsg) != 0)
  1586. {
  1587. outParam = JsonHelper.setExceptionJson(-1, "InProcessAnalysis", errMsg).ToString();
  1588. return -1;
  1589. }
  1590. }
  1591. }
  1592. //哈尔滨增加读卡验密,同时重置患者的令牌信息(mdtrtcertNO,certNO等)
  1593. //string patInfo = "";
  1594. //if (readCard(out patInfo) != 0)
  1595. //{
  1596. // outParam = JsonHelper.setExceptionJson(-1, "readCard", patInfo).ToString();
  1597. // return -1;
  1598. //}
  1599. //调用服务获取门诊诊断信息
  1600. string diagnoses;
  1601. if (hIS.getPatDiagnoses(Global.pat, out diagnoses) != 0)
  1602. {
  1603. outParam = JsonHelper.setExceptionJson(-1, "getPatDiagnoses", diagnoses).ToString();
  1604. return -1;
  1605. }
  1606. JObject joDiagnoses = JObject.Parse(diagnoses);
  1607. //展示出院登记界面,选择结算方式等
  1608. if (showDischargeRegisterForm(joSumFee, joDiagnoses, out outParam) != 0)
  1609. {
  1610. outParam = JsonHelper.setExceptionJson(-1, "展示出院预结算界面", outParam).ToString();
  1611. return -1;
  1612. }
  1613. JObject joRtn = JObject.Parse(outParam);
  1614. //预结算
  1615. JObject joTmp = new JObject();
  1616. joTmp.Add("prm_akc190", Global.pat.mdtrtID);
  1617. joTmp.Add("prm_aac001", Global.pat.psn_no);
  1618. joTmp.Add("prm_yab003", Global.pat.insuplc_admdvs);
  1619. joTmp.Add("prm_aka130", Global.pat.medType);
  1620. joTmp.Add("prm_ykb065", Global.pat.insuType);
  1621. joTmp.Add("prm_yabtch", Global.pat.patExtend.prm_yabtch);
  1622. joTmp.Add("prm_hisfyze", JsonHelper.getDestValue(joSumFee, "data.Sumamt"));
  1623. joTmp.Add("ELEC_BILLNO_CODE", "");
  1624. joTmp.Add("ELEC_BILL_CODE", "");
  1625. joTmp.Add("ELEC_BILL_CHKCODE", "");
  1626. if (invoker.invokeYHCom("43",joTmp, out outParam) != 0)
  1627. {
  1628. outParam = JsonHelper.setExceptionJson(-1, "出院预结算", outParam).ToString();
  1629. return -1;
  1630. }
  1631. JObject joPreSettlRtn = JObject.Parse(xmler.ToJSON(outParam));
  1632. //预结算结果传给HIS进行HIS判断
  1633. //返回给HIS
  1634. JObject joParam = new JObject();
  1635. joParam.Add("admID", Global.pat.adm_Dr);
  1636. joParam.Add("recordID", Global.pat.recordID);
  1637. joParam.Add("billID", Global.pat.billID);
  1638. if (hIS.preSettlementInfo(joParam, joPreSettlRtn, out outParam) != 0)
  1639. {
  1640. outParam = JsonHelper.setExceptionJson(-1, "出院预结算", outParam).ToString();
  1641. return -1;
  1642. }
  1643. ////编码转换
  1644. //if (mIS.convertSettlementWithInsuCode(joPreSettlRtn, out outParam) != 0)
  1645. //{
  1646. // outParam = JsonHelper.setExceptionJson(-1, "结算信息转换", outParam).ToString();
  1647. // return -1;
  1648. //}
  1649. //展示结算信息
  1650. //JObject joConverted = JObject.Parse(outParam);
  1651. if (showSettlementForm(joPreSettlRtn, out outParam) != 0)
  1652. {
  1653. outParam = JsonHelper.setExceptionJson(-1, "结算信息展示", outParam).ToString();
  1654. return -1;
  1655. }
  1656. else
  1657. {
  1658. joSettlement = (JObject)joRtn.DeepClone();
  1659. return 0;
  1660. }
  1661. }
  1662. public int returnToFrontEndAfterSettlement(JObject joCenterRtn,JObject joHisServieRtn, out string outParam)
  1663. {
  1664. outParam = "";
  1665. try
  1666. {
  1667. JObject johisInsuInfo = JObject.Parse(JsonHelper.getDestValue(joHisServieRtn, "result"));
  1668. johisInsuInfo.Add("setl_id", JsonHelper.getDestValue(joCenterRtn, "output.setlinfo.setl_id"));
  1669. JObject joTmp = (JObject)joCenterRtn.DeepClone();
  1670. joTmp.Add("hisInsuInfo", johisInsuInfo);
  1671. outParam = joTmp.ToString();
  1672. return 0;
  1673. }
  1674. catch (Exception ex)
  1675. {
  1676. outParam = "returnToFrontEndAfterSettlement:" + ex.Message;
  1677. return -1;
  1678. }
  1679. }
  1680. /// <summary>
  1681. /// 插入患者该次就诊参保信息
  1682. /// </summary>
  1683. /// <param name="mdtrtID"></param>
  1684. /// <param name="patInfo"></param>
  1685. /// <param name="outparam"></param>
  1686. /// <returns></returns>
  1687. public int insertPatCurInsuInfo(String patInfo, out string outparam)
  1688. {
  1689. outparam = "";
  1690. try
  1691. {
  1692. Global.writeLog(patInfo);
  1693. JObject joPatInfo = JObject.Parse(patInfo);
  1694. JObject joBaseInfo = JObject.Parse(JsonHelper.getDestValue(joPatInfo, "output"));
  1695. if (mIS.insertPatCurInsuInfo(joBaseInfo, out outparam) != 0)
  1696. {
  1697. return -1;
  1698. }
  1699. else
  1700. {
  1701. return 0;
  1702. }
  1703. }
  1704. catch (Exception e)
  1705. {
  1706. outparam = "插入患者该次就诊参保信息失败:" + e.Message;
  1707. return -1;
  1708. }
  1709. }
  1710. public int getOutPatHisInfo(out string outparam)
  1711. {
  1712. outparam = "";
  1713. string diagnoses = "", feeInfo = "";
  1714. try
  1715. {
  1716. //获取诊断信息
  1717. if (hIS.getPatDiagnoses(Global.pat, out diagnoses) != 0)
  1718. {
  1719. outparam = diagnoses;
  1720. return -1;
  1721. }
  1722. //处理
  1723. JObject joDiag = JObject.Parse(diagnoses);
  1724. JArray jaDiag = JArray.Parse(JsonHelper.getDestValue(joDiag, "diseinfo"));
  1725. JArray jaRow = new JArray();
  1726. for (int i = 0; i < jaDiag.Count; i++)
  1727. {
  1728. jaDiag[i]["vali_flag"] = new JObject();
  1729. jaDiag[i]["vali_flag"] = "1";
  1730. if (jaDiag[i]["maindiag_flag"].ToString() == "1")
  1731. {
  1732. Global.pat.discDiagName = jaDiag[i]["diag_name"].ToString();
  1733. }
  1734. jaRow.Add(jaDiag[i]);
  1735. }
  1736. JObject joNewDiag = new JObject();
  1737. JObject joDiagRow = new JObject();
  1738. joDiagRow.Add("row", jaRow);
  1739. //获取HIS费用
  1740. if (hIS.getHisFee(Global.pat, out feeInfo) != 0)
  1741. {
  1742. outparam = feeInfo;
  1743. return -1;
  1744. }
  1745. //处理
  1746. //调用医保平台转换HIS费用(转换医保编码等)
  1747. JObject joHisFee = JObject.Parse(feeInfo);
  1748. if (mIS.convertHisFeeWithInsuCode(joHisFee, out feeInfo) != 0)
  1749. {
  1750. outparam = feeInfo;
  1751. return -2;
  1752. }
  1753. JObject joFeeRow = new JObject();
  1754. JArray jaFeeRow = new JArray();
  1755. JArray jaFeeDetail = JArray.Parse(JsonHelper.getDestValue(JObject.Parse(feeInfo), "data"));
  1756. decimal sumFee = 0;
  1757. //转换处理
  1758. for (int i = 0; i < jaFeeDetail.Count; i++)
  1759. {
  1760. decimal cnt = decimal.Parse(jaFeeDetail[i]["cnt"].ToString());
  1761. decimal pric = decimal.Parse(jaFeeDetail[i]["pric"].ToString());
  1762. decimal sumamt = decimal.Parse(jaFeeDetail[i]["det_item_fee_sumamt"].ToString());
  1763. //jaFeeDetail[i]["cnt"] = cnt.ToString("#0.0000");
  1764. //jaFeeDetail[i]["pric"] = pric.ToString("#0.0000");
  1765. ////jaFeeDetail[i]["det_item_fee_sumamt"] = sumamt.ToString("#0.00");
  1766. //sumFee = sumFee + Convert.ToDouble(jaFeeDetail[i]["det_item_fee_sumamt"]);
  1767. sumFee = sumFee + sumamt;
  1768. JObject joTmp = new JObject();
  1769. joTmp.Add("yka105", jaFeeDetail[i]["feedetl_sn"]);//记账流水号
  1770. joTmp.Add("ykd125", jaFeeDetail[i]["medins_list_codg"]); //医院项目流水号
  1771. joTmp.Add("ykd126", jaFeeDetail[i]["medins_list_codg"]); //医院项目名称
  1772. joTmp.Add("yka002", jaFeeDetail[i]["med_list_codg"]);//医保通用项目编码
  1773. joTmp.Add("yka003", jaFeeDetail[i]["med_list_codg"]);//医保通用项目名称
  1774. joTmp.Add("akc226", cnt.ToString("#0.0000"));//数量
  1775. joTmp.Add("akc225", pric.ToString("#0.000000"));//实际价格
  1776. joTmp.Add("yka315", jaFeeDetail[i]["det_item_fee_sumamt"]);//明细项目费用总额
  1777. joTmp.Add("yka097", jaFeeDetail[i]["bilg_dept_codg"]);//开单科室编码
  1778. joTmp.Add("yka098", jaFeeDetail[i]["bilg_dept_name"]);//开单科室名称
  1779. joTmp.Add("ykd102", jaFeeDetail[i]["bilg_dr_ID"]);//开单医生公民身份号码
  1780. joTmp.Add("ykd103", jaFeeDetail[i]["bilg_dr_codg"]);//国家医保医生编码
  1781. joTmp.Add("yka099", jaFeeDetail[i]["bilg_dr_name"]);//开单医生姓名
  1782. joTmp.Add("yka100", jaFeeDetail[i]["acord_dept_codg"]);//受单科室编码
  1783. joTmp.Add("yka101", jaFeeDetail[i]["acord_dept_name"]);//受单科室名称
  1784. joTmp.Add("ykd106", jaFeeDetail[i]["orders_dr_ID"]);//受单医生公民身份号码
  1785. joTmp.Add("yka102", jaFeeDetail[i]["orders_dr_name"]);//受单医生姓名
  1786. joTmp.Add("yke123", jaFeeDetail[i]["fee_ocur_time"]);//明细发生时间
  1787. joTmp.Add("ykc141", Global.user.name);//经办人姓名
  1788. joTmp.Add("aae036", jaFeeDetail[i]["fee_ocur_time"]);//经办时间
  1789. joTmp.Add("aae013", "");//备注
  1790. joTmp.Add("akc229", "");//慢性病药品用药天数
  1791. joTmp.Add("yke201", "");//中药使用方式
  1792. joTmp.Add("yka295", "");//最小计价单位
  1793. joTmp.Add("aka074", "");//规格
  1794. joTmp.Add("aka070", "");//剂型
  1795. joTmp.Add("yae374", "");//剂型名称
  1796. joTmp.Add("yke009", "");//是否医院制剂
  1797. joTmp.Add("yke186", "1");//医院审批标志
  1798. joTmp.Add("yka821", jaFeeDetail[i]["hosp_appr_flag"]);//项目报销标志
  1799. joTmp.Add("yka830", jaFeeDetail[i]["med_list_codg"]);//国家目录编码
  1800. joTmp.Add("yka831", jaFeeDetail[i]["med_list_codg"]);//国家目录名称
  1801. jaFeeRow.Add(joTmp);
  1802. }
  1803. joFeeRow.Add("row", jaFeeRow);
  1804. JObject jo = new JObject();
  1805. jo.Add("dataset", joFeeRow);
  1806. jo.Add("diselist", joDiagRow);
  1807. jo.Add("prm_hisfyze", sumFee.ToString("#0.00"));
  1808. outparam = jo.ToString();
  1809. return 0;
  1810. }
  1811. catch (Exception ex)
  1812. {
  1813. outparam = ex.Message;
  1814. return -1;
  1815. }
  1816. finally
  1817. {
  1818. Global.writeLog("getOutPatHisInfo", "",outparam);
  1819. }
  1820. }
  1821. /// <summary>
  1822. /// 事前分析
  1823. /// </summary>
  1824. /// <param name="outparam"></param>
  1825. /// <returns></returns>
  1826. public int PreAnalysis(string trig_scen, string inparam,out string outparam)
  1827. {
  1828. outparam = "";
  1829. try
  1830. {
  1831. ////先签到
  1832. //JObject jo9001Rtn = new JObject();
  1833. //cBus.signIn(out jo9001Rtn);
  1834. if (trig_scen == "5")
  1835. {
  1836. outparam = inparam;
  1837. }
  1838. else
  1839. {
  1840. //获取HIS返回的内容
  1841. if (hIS.PreAnalysis(out outparam) != 0)
  1842. {
  1843. return -1;
  1844. }
  1845. }
  1846. PreAndInProcessAnalysis preAnalysis = new PreAndInProcessAnalysis(outparam);
  1847. if (preAnalysis.setPatientByHisBaseInfo(out outparam) != 0)
  1848. {
  1849. return -1;
  1850. }
  1851. JObject jo3101Inpar = preAnalysis.Get3101Inpar(trig_scen, Global.pat);
  1852. if (jo3101Inpar == null)
  1853. {
  1854. return -1;
  1855. }
  1856. else
  1857. {
  1858. outparam =jo3101Inpar.ToString();
  1859. }
  1860. JObject joRtn = invoker.invokeCenterService("3101",JsonHelper.setCenterInpar("3101",outparam));
  1861. if (JsonHelper.parseCenterRtnValue(joRtn, out outparam) != 0)
  1862. {
  1863. return -1;
  1864. }
  1865. else
  1866. {
  1867. JArray jaResult = JArray.Parse(JsonHelper.getDestValue(joRtn, "output.result"));
  1868. if (jaResult.HasValues)
  1869. {
  1870. PreAndInProcessAnalysisForm paipaForm = new PreAndInProcessAnalysisForm(joRtn);
  1871. if (paipaForm.ShowDialog() == DialogResult.OK)
  1872. {
  1873. return 0;
  1874. }
  1875. else
  1876. {
  1877. outparam = "事前事中审核不通过,操作员取消!";
  1878. return -1;
  1879. }
  1880. }
  1881. else
  1882. return 0;
  1883. }
  1884. }
  1885. catch (Exception ex)
  1886. {
  1887. outparam = ex.Message;
  1888. return -1;
  1889. }
  1890. }
  1891. /// <summary>
  1892. /// 事中分析
  1893. /// </summary>
  1894. /// <param name="outparam"></param>
  1895. /// <returns></returns>
  1896. public int InProcessAnalysis(string trig_scen,out string outparam)
  1897. {
  1898. outparam = "";
  1899. try
  1900. {
  1901. //获取HIS返回的内容
  1902. if (hIS.PreAnalysis(out outparam) != 0)
  1903. {
  1904. return -1;
  1905. }
  1906. PreAndInProcessAnalysis preAnalysis = new PreAndInProcessAnalysis(outparam);
  1907. if (preAnalysis.setPatientByHisBaseInfo(out outparam) != 0)
  1908. {
  1909. return -1;
  1910. }
  1911. JObject jo3101Inpar = preAnalysis.Get3101Inpar(trig_scen, Global.pat);
  1912. if (jo3101Inpar == null)
  1913. {
  1914. return -1;
  1915. }
  1916. else
  1917. {
  1918. outparam = jo3101Inpar.ToString();
  1919. }
  1920. JObject joRtn = invoker.invokeCenterService("3102", JsonHelper.setCenterInpar("3102", outparam));
  1921. if (JsonHelper.parseCenterRtnValue(joRtn, out outparam) != 0)
  1922. {
  1923. return -1;
  1924. }
  1925. else
  1926. {
  1927. JArray jaResult = JArray.Parse(JsonHelper.getDestValue(joRtn, "output.result"));
  1928. if (jaResult.HasValues)
  1929. {
  1930. PreAndInProcessAnalysisForm paipaForm = new PreAndInProcessAnalysisForm(joRtn);
  1931. if (paipaForm.ShowDialog() == DialogResult.OK)
  1932. {
  1933. return 0;
  1934. }
  1935. else
  1936. {
  1937. outparam = "事前事中审核不通过,操作员取消!";
  1938. return -1;
  1939. }
  1940. }
  1941. else
  1942. return 0;
  1943. }
  1944. //return JsonHelper.parseCenterRtnValue(joRtn, out outparam);
  1945. }
  1946. catch (Exception ex)
  1947. {
  1948. outparam = ex.Message;
  1949. return -1;
  1950. }
  1951. finally
  1952. {
  1953. Global.writeLog("InProcessAnalysis", "", outparam);
  1954. }
  1955. }
  1956. }
  1957. }