DataImoport.cs 52 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001100210031004100510061007100810091010101110121013101410151016101710181019102010211022102310241025102610271028102910301031103210331034103510361037103810391040104110421043104410451046104710481049105010511052105310541055105610571058105910601061106210631064106510661067106810691070107110721073107410751076107710781079108010811082108310841085108610871088108910901091109210931094109510961097109810991100110111021103110411051106110711081109111011111112111311141115111611171118111911201121112211231124112511261127112811291130113111321133113411351136113711381139114011411142114311441145114611471148114911501151115211531154115511561157115811591160116111621163116411651166116711681169117011711172117311741175117611771178117911801181118211831184118511861187118811891190119111921193119411951196119711981199120012011202120312041205120612071208120912101211121212131214121512161217121812191220122112221223122412251226122712281229123012311232123312341235123612371238123912401241124212431244124512461247124812491250125112521253125412551256125712581259126012611262126312641265126612671268126912701271127212731274127512761277127812791280128112821283
  1. /******************************************************************************
  2. * 文件名称: DataImoport.cs
  3. * 文件说明: 医保目录数据导入
  4. * 当前版本: V1.0
  5. * 创建日期: 2022-04-12
  6. *
  7. * 2020-04-12: 增加GetDrugsJsonByTxt方法
  8. * 2020-04-12: 增加GetMedicalServiceJsonByTxt方法
  9. * 2020-04-12: 增加 GetMaterialJsonByTxt 方法
  10. * 2020-04-14: 增加 GetDiagnoseJsonByTxt 方法
  11. * 2020-04-14: 增加 GetOperationJsonByTxt 方法
  12. * 2020-04-14: 增加 applyDataToIris 方法
  13. * 2020-04-14: 增加 importDataToIrisByTxt 方法
  14. * 2020-04-14: 增加 GetOperationJsonByTxt 方法
  15. * 2020-04-14: 增加 GetOperationJsonByTxt 方法
  16. * 2020-04-14: 增加 GetOperationJsonByTxt 方法
  17. * 2020-04-14: 增加 GetOperationJsonByTxt 方法
  18. ******************************************************************************/
  19. using Newtonsoft.Json.Linq;
  20. using System;
  21. using System.Collections.Generic;
  22. using System.Linq;
  23. using System.Text;
  24. using System.Threading.Tasks;
  25. using System.Windows.Forms;
  26. using PTMedicalInsurance.Variables;
  27. using PTMedicalInsurance.Helper;
  28. using PTMedicalInsurance.Business;
  29. using System.Data;
  30. using System.Text;
  31. using System.IO.Compression;
  32. using System.Linq;
  33. using System.IO;
  34. namespace PTMedicalInsurance
  35. {
  36. class DataImoport
  37. {
  38. MIIrisServices mis = new MIIrisServices();
  39. InvokeHelper invoker = new InvokeHelper();
  40. /// <summary>
  41. /// 读取TXT后,Array中的空值会返回NULL,将其转换为"".应有其他方式处理,后面再优化
  42. /// 明天试试Convert.ToString(a)
  43. /// </summary>
  44. /// <param name="arrayValue"></param>
  45. /// <returns></returns>
  46. private string convertArrayNull(string arrayValue)
  47. {
  48. string returnValue = string.Empty;
  49. if (arrayValue == "null")
  50. {
  51. returnValue = "";
  52. }
  53. else
  54. {
  55. returnValue = arrayValue;
  56. }
  57. return returnValue;
  58. }
  59. /// <summary>
  60. /// 从TXT文件中获取药品数据,并组装成JSON
  61. /// </summary>
  62. /// <param name="arr"></param>
  63. /// <returns></returns>
  64. private JObject GetDrugsJsonByTxt(string[] arr)
  65. {
  66. dynamic jsonTemp = new JObject();
  67. jsonTemp.ID = "";
  68. jsonTemp.updateUserID = Global.user.ID;
  69. jsonTemp.HospitalDr = Global.inf.hospitalDr;
  70. jsonTemp.InterfaceDr = Global.inf.interfaceDr;
  71. jsonTemp.Code = arr[2]; //对照的医保药品编码
  72. jsonTemp.Name = arr[3]; //对照的医保药品名称
  73. jsonTemp.HisType = "1";
  74. jsonTemp.HisTypeName = "药品";
  75. jsonTemp.LocateCode = "";
  76. jsonTemp.LocateName = "";
  77. //jsonTemp.DosageFormCode = arr[9];
  78. jsonTemp.DosageFormName = arr[4]; //剂型
  79. jsonTemp.CategoryCode = arr[9]; //收费类型
  80. //jsonTemp.CategoryName = arr[12];
  81. jsonTemp.Specification = arr[5]; //规格
  82. jsonTemp.SpecificationCode = arr[5]; //规格
  83. jsonTemp.UnitOfPackag = arr[6]; //计量单位
  84. jsonTemp.UnitOfValuation = arr[6]; //计量单位
  85. //jsonTemp.StartDate = convertArrayNull(arr[36]);
  86. //jsonTemp.EndDate = convertArrayNull(arr[37]);
  87. //jsonTemp.PinyinSearchCode = arr[50];
  88. //jsonTemp.Instructions = arr[35];
  89. jsonTemp.ExceptContent = arr[10]; //备注
  90. jsonTemp.Connotation = "";
  91. jsonTemp.ValidFlag = "1";
  92. jsonTemp.Note = arr[10]; //备注
  93. //jsonTemp.VersionNO = arr[82];
  94. //jsonTemp.VersionName = arr[83];
  95. jsonTemp.UseFlag = "1";
  96. //jsonTemp.DrugSafetyStandardCode = arr[8]; //
  97. //jsonTemp.ApprovalNO = arr[61];
  98. //jsonTemp.SpecialFlag = convertArrayNull(arr[11]);
  99. //jsonTemp.LimitFlag = convertArrayNull(arr[57]);
  100. //jsonTemp.LimitRange = arr[56];
  101. //jsonTemp.UniqueRecordNO = arr[79];
  102. //jsonTemp.Manufacturers = arr[53];
  103. //jsonTemp.Company = arr[85];
  104. jsonTemp.CeilingPrice = arr[7];
  105. jsonTemp.NationalCode = arr[2]; //国家项目代码
  106. jsonTemp.NationalName = arr[3]; //国家项目代码
  107. jsonTemp.ChargeItemLevel = arr[8]; //收费等级
  108. if (jsonTemp.ChargeItemLevel == "1")
  109. {
  110. jsonTemp.ChargeItemLevelName = "甲类";
  111. jsonTemp.SelfPercent = "0";
  112. }
  113. else if (jsonTemp.ChargeItemLevel == "2")
  114. {
  115. jsonTemp.ChargeItemLevelName = "乙类";
  116. jsonTemp.SelfPercent = "0";
  117. }
  118. else if (jsonTemp.ChargeItemLevel == "3")
  119. {
  120. jsonTemp.ChargeItemLevelName = "丙类";
  121. jsonTemp.SelfPercent = "100";
  122. }
  123. else
  124. {
  125. jsonTemp.ChargeItemLevel = "4";
  126. jsonTemp.SelfPercent = "100";
  127. jsonTemp.ChargeItemLevelName = "未知";
  128. }
  129. return jsonTemp;
  130. }
  131. /// <summary>
  132. /// 从TXT文件中获取诊疗数据,并组装成JSON
  133. /// </summary>
  134. /// <param name="arr"></param>
  135. /// <returns></returns>
  136. private JObject GetMedicalServiceJsonByTxt(string[] arr)
  137. {
  138. dynamic jsonTemp = new JObject();
  139. jsonTemp.ID = "";
  140. jsonTemp.updateUserID = Global.user.ID;
  141. jsonTemp.HospitalDr = Global.inf.hospitalDr;
  142. jsonTemp.InterfaceDr = Global.inf.interfaceDr;
  143. jsonTemp.Code = arr[2];
  144. jsonTemp.Name = arr[3];
  145. jsonTemp.HisType = "2";
  146. jsonTemp.HisTypeName = "诊疗";
  147. jsonTemp.LocateCode = "";
  148. jsonTemp.LocateName = "";
  149. //jsonTemp.DosageFormCode = arr[9];
  150. //jsonTemp.DosageFormName = arr[10];
  151. jsonTemp.CategoryCode = arr[7];
  152. jsonTemp.CategoryName = arr[7];
  153. jsonTemp.Specification = "";
  154. jsonTemp.SpecificationCode = "";
  155. jsonTemp.UnitOfPackag = arr[4];
  156. jsonTemp.UnitOfValuation = arr[4];
  157. //jsonTemp.StartDate = convertArrayNull(arr[11]);
  158. //jsonTemp.EndDate = convertArrayNull(arr[12]);
  159. //jsonTemp.PinyinSearchCode = SpellCodeHelper.GetFirstPYLetter(arr[9]);
  160. //jsonTemp.Instructions = arr[3];
  161. jsonTemp.ExceptContent = ""; //arr[8];
  162. //jsonTemp.Connotation = arr[5];
  163. jsonTemp.ValidFlag = "1";
  164. jsonTemp.Note = ""; //arr[7];
  165. //jsonTemp.VersionNO = arr[14];
  166. //jsonTemp.VersionName = arr[15];
  167. jsonTemp.UseFlag = "1";
  168. jsonTemp.DrugSafetyStandardCode = "";
  169. jsonTemp.ApprovalNO = "";
  170. jsonTemp.SpecialFlag = "";
  171. jsonTemp.LimitFlag = "";
  172. jsonTemp.LimitRange = "";
  173. //jsonTemp.UniqueRecordNO = arr[13];
  174. jsonTemp.CeilingPrice = arr[5];
  175. jsonTemp.NationalCode = arr[9]; //国家项目代码
  176. jsonTemp.NationalName = arr[3]; //国家项目代码
  177. jsonTemp.ChargeItemLevel = arr[6];
  178. if (jsonTemp.ChargeItemLevel == "1")
  179. {
  180. jsonTemp.ChargeItemLevelName = "甲类";
  181. jsonTemp.SelfPercent = "0";
  182. }
  183. else if (jsonTemp.ChargeItemLevel == "2")
  184. {
  185. jsonTemp.ChargeItemLevelName = "乙类";
  186. jsonTemp.SelfPercent = "0";
  187. }
  188. else if (jsonTemp.ChargeItemLevel == "3")
  189. {
  190. jsonTemp.ChargeItemLevelName = "丙类";
  191. jsonTemp.SelfPercent = "100";
  192. }
  193. else
  194. {
  195. jsonTemp.ChargeItemLevel = "4";
  196. jsonTemp.SelfPercent = "100";
  197. jsonTemp.ChargeItemLevelName = "未知";
  198. }
  199. return jsonTemp;
  200. }
  201. /// <summary>
  202. /// 从TXT文件中获取材料数据,并组装成JSON
  203. /// </summary>
  204. /// <param name="arr"></param>
  205. /// <returns></returns>
  206. private JObject GetMaterialJsonByTxt(string[] arr)
  207. {
  208. dynamic jsonTemp = new JObject();
  209. jsonTemp.ID = "";
  210. jsonTemp.updateUserID = Global.user.ID;
  211. jsonTemp.HospitalDr = Global.inf.hospitalDr;
  212. jsonTemp.InterfaceDr = Global.inf.interfaceDr;
  213. jsonTemp.Code = arr[2];
  214. jsonTemp.Name = arr[3];
  215. jsonTemp.HisType = "3";
  216. jsonTemp.HisTypeName = "材料";
  217. jsonTemp.LocateCode = "";
  218. jsonTemp.LocateName = "";
  219. jsonTemp.DosageFormCode = "";
  220. jsonTemp.DosageFormName = "";
  221. jsonTemp.CategoryCode = arr[7];
  222. jsonTemp.CategoryName = arr[7];
  223. //jsonTemp.Specification = arr[7];
  224. //jsonTemp.SpecificationCode = arr[6];
  225. jsonTemp.UnitOfPackag = arr[4];
  226. //jsonTemp.UnitOfValuation = convertArrayNull(arr[35]);
  227. //jsonTemp.StartDate = convertArrayNull(arr[46]);
  228. //jsonTemp.EndDate = convertArrayNull(arr[47]);
  229. //jsonTemp.PinyinSearchCode = SpellCodeHelper.GetFirstPYLetter(arr[5]);
  230. //jsonTemp.Instructions = arr[27];
  231. jsonTemp.ExceptContent = arr[8]; //备注
  232. jsonTemp.Connotation = "";
  233. jsonTemp.ValidFlag = "1";
  234. jsonTemp.Note = arr[8];
  235. //jsonTemp.VersionNO = arr[69];
  236. //jsonTemp.VersionName = arr[70];
  237. jsonTemp.UseFlag = "1";
  238. jsonTemp.DrugSafetyStandardCode = "";
  239. //jsonTemp.ApprovalNO = arr[50]; //注册备案号
  240. jsonTemp.SpecialFlag = "";
  241. //jsonTemp.LimitFlag = convertArrayNull(arr[33]);
  242. //jsonTemp.LimitRange = arr[34];
  243. //jsonTemp.UniqueRecordNO = arr[68];
  244. //jsonTemp.Manufacturers = arr[59];
  245. jsonTemp.CeilingPrice = arr[5];
  246. jsonTemp.NationalCode = arr[2]; //国家项目代码
  247. jsonTemp.NationalName = arr[3]; //国家项目代码
  248. jsonTemp.ChargeItemLevel = arr[6];
  249. if (jsonTemp.ChargeItemLevel == "1")
  250. {
  251. jsonTemp.ChargeItemLevelName = "甲类";
  252. jsonTemp.SelfPercent = "0";
  253. }
  254. else if (jsonTemp.ChargeItemLevel == "乙")
  255. {
  256. jsonTemp.ChargeItemLevelName = "2";
  257. jsonTemp.SelfPercent = "0";
  258. }
  259. else if (jsonTemp.ChargeItemLevel == "3")
  260. {
  261. jsonTemp.ChargeItemLevelName = "丙类";
  262. jsonTemp.SelfPercent = "100";
  263. }
  264. else
  265. {
  266. jsonTemp.ChargeItemLevel = "04";
  267. jsonTemp.SelfPercent = "100";
  268. jsonTemp.ChargeItemLevelName = "未知";
  269. }
  270. return jsonTemp;
  271. }
  272. /// <summary>
  273. /// 从TXT文件中获取诊断数据,并组装成JSON
  274. /// </summary>
  275. /// <param name="arr"></param>
  276. /// <returns></returns>
  277. private JObject GetDiagnoseJsonByTxt(string[] arr)
  278. {
  279. dynamic jsonTemp = new JObject();
  280. jsonTemp.ID = "";
  281. jsonTemp.updateUserID = Global.user.ID;
  282. jsonTemp.HospitalDr = Global.inf.hospitalDr;
  283. jsonTemp.InterfaceDr = Global.inf.interfaceDr;
  284. jsonTemp.Code = arr[10];
  285. jsonTemp.Name = arr[11];
  286. jsonTemp.HisType = "4";
  287. jsonTemp.HisTypeName = "诊断";
  288. jsonTemp.LocateCode = "";
  289. jsonTemp.LocateName = "";
  290. jsonTemp.DosageFormCode = "";
  291. jsonTemp.DosageFormName = "";
  292. jsonTemp.CategoryCode = "";
  293. jsonTemp.CategoryName = "";
  294. jsonTemp.Specification = "";
  295. jsonTemp.SpecificationCode = "";
  296. jsonTemp.UnitOfPackag = "";
  297. jsonTemp.UnitOfValuation = "";
  298. jsonTemp.StartDate = "";
  299. jsonTemp.EndDate = "";
  300. //jsonTemp.PinyinSearchCode = SpellCodeHelper.GetFirstPYLetter(arr[11]);
  301. jsonTemp.Instructions = "";
  302. jsonTemp.ExceptContent = "";
  303. jsonTemp.Connotation = "";
  304. jsonTemp.ValidFlag = arr[18];
  305. jsonTemp.Note = arr[17];
  306. jsonTemp.VersionNO = arr[22];
  307. jsonTemp.VersionName = arr[23];
  308. jsonTemp.UseFlag = arr[18];
  309. jsonTemp.DrugSafetyStandardCode = "";
  310. jsonTemp.ApprovalNO = "";
  311. jsonTemp.SpecialFlag = "";
  312. jsonTemp.LimitFlag = "";
  313. jsonTemp.LimitRange = "";
  314. jsonTemp.UniqueRecordNO = arr[19];
  315. jsonTemp.Manufacturers = "";
  316. return jsonTemp;
  317. }
  318. /// <summary>
  319. /// 慢性病
  320. /// </summary>
  321. /// <param name="arr"></param>
  322. /// <returns></returns>
  323. private JObject GetChronicDiseaseJsonByTxt(string[] arr)
  324. {
  325. dynamic jsonTemp = new JObject();
  326. jsonTemp.ID = "";
  327. jsonTemp.updateUserID = Global.user.ID;
  328. jsonTemp.HospitalDr = Global.inf.hospitalDr;
  329. jsonTemp.InterfaceDr = Global.inf.interfaceDr;
  330. jsonTemp.Code = arr[0];
  331. jsonTemp.Name = arr[1];
  332. jsonTemp.HisType = "6";
  333. jsonTemp.HisTypeName = "慢性病";
  334. jsonTemp.LocateCode = "";
  335. jsonTemp.LocateName = "";
  336. jsonTemp.DosageFormCode = "";
  337. jsonTemp.DosageFormName = "";
  338. jsonTemp.CategoryCode = arr[14];
  339. jsonTemp.CategoryName = arr[15];
  340. jsonTemp.Specification = "";
  341. jsonTemp.SpecificationCode = "";
  342. jsonTemp.UnitOfPackag = "";
  343. jsonTemp.UnitOfValuation = "";
  344. jsonTemp.StartDate = "";
  345. jsonTemp.EndDate = "";
  346. //jsonTemp.PinyinSearchCode = SpellCodeHelper.GetFirstPYLetter(arr[2]);
  347. jsonTemp.Instructions = "";
  348. jsonTemp.ExceptContent = "";
  349. jsonTemp.Connotation = arr[10];
  350. jsonTemp.ValidFlag = arr[5];
  351. jsonTemp.Note = arr[4];
  352. jsonTemp.VersionNO = arr[9];
  353. jsonTemp.VersionName = arr[11];
  354. jsonTemp.UseFlag = arr[5];
  355. jsonTemp.DrugSafetyStandardCode = "";
  356. jsonTemp.ApprovalNO = "";
  357. jsonTemp.SpecialFlag = "";
  358. jsonTemp.LimitFlag = "";
  359. jsonTemp.LimitRange = "";
  360. jsonTemp.UniqueRecordNO = arr[6];
  361. jsonTemp.Manufacturers = "";
  362. return jsonTemp;
  363. }
  364. /// <summary>
  365. /// 从TXT文件中获取手术数据,并组装成JSON
  366. /// </summary>
  367. /// <param name="arr"></param>
  368. /// <returns></returns>
  369. private JObject GetOperationJsonByTxt(string[] arr)
  370. {
  371. dynamic jsonTemp = new JObject();
  372. jsonTemp.ID = "";
  373. jsonTemp.updateUserID = Global.user.ID;
  374. jsonTemp.HospitalDr = Global.inf.hospitalDr;
  375. jsonTemp.InterfaceDr = Global.inf.interfaceDr;
  376. jsonTemp.Code = arr[10];
  377. jsonTemp.Name = arr[11];
  378. jsonTemp.HisType = "5";
  379. jsonTemp.HisTypeName = "手术";
  380. //jsonTemp.PinyinSearchCode = SpellCodeHelper.GetFirstPYLetter(arr[11]);
  381. jsonTemp.ValidFlag = arr[18];
  382. jsonTemp.Note = arr[17];
  383. jsonTemp.VersionNO = arr[22];
  384. jsonTemp.VersionName = arr[23];
  385. jsonTemp.UseFlag = arr[18];
  386. jsonTemp.UniqueRecordNO = arr[19];
  387. return jsonTemp;
  388. }
  389. /// <summary>
  390. /// DRGs
  391. /// </summary>
  392. /// <param name="arr"></param>
  393. /// <returns></returns>
  394. private JObject GetDRGsJsonByTxt(string[] arr)
  395. {
  396. dynamic jsonTemp = new JObject();
  397. jsonTemp.ID = "";
  398. jsonTemp.updateUserID = Global.user.ID;
  399. jsonTemp.HospitalDr = Global.inf.hospitalDr;
  400. jsonTemp.InterfaceDr = Global.inf.interfaceDr;
  401. jsonTemp.Code = arr[1];
  402. jsonTemp.Name = arr[2];
  403. jsonTemp.HisType = "7";
  404. jsonTemp.HisTypeName = "DRGs";
  405. jsonTemp.Connotation = arr[10];
  406. jsonTemp.Instructions = arr[3]; //适用手术操作代码
  407. jsonTemp.ExceptContent = arr[4]; //适用手术操作名称
  408. //jsonTemp.PinyinSearchCode = SpellCodeHelper.GetFirstPYLetter(arr[11]);
  409. jsonTemp.ValidFlag = arr[5];
  410. jsonTemp.Note = arr[11];
  411. jsonTemp.VersionNO = arr[9];
  412. jsonTemp.VersionName = arr[12];
  413. jsonTemp.UseFlag = arr[5];
  414. jsonTemp.UniqueRecordNO = arr[6];
  415. return jsonTemp;
  416. }
  417. private JObject GetDaySurgeryJsonByTxt(string[] arr)
  418. {
  419. dynamic jsonTemp = new JObject();
  420. jsonTemp.ID = "";
  421. jsonTemp.updateUserID = Global.user.ID;
  422. jsonTemp.HospitalDr = Global.inf.hospitalDr;
  423. jsonTemp.InterfaceDr = Global.inf.interfaceDr;
  424. jsonTemp.Code = arr[1];
  425. jsonTemp.Name = arr[2];
  426. jsonTemp.HisType = "8";
  427. jsonTemp.HisTypeName = "日间手术";
  428. jsonTemp.Connotation = arr[8];
  429. //jsonTemp.PinyinSearchCode = SpellCodeHelper.GetFirstPYLetter(arr[11]);
  430. jsonTemp.ValidFlag = arr[3];
  431. jsonTemp.Note = arr[9];
  432. jsonTemp.VersionNO = arr[7];
  433. jsonTemp.VersionName = arr[10];
  434. jsonTemp.UseFlag = arr[3];
  435. jsonTemp.UniqueRecordNO = arr[4];
  436. return jsonTemp;
  437. }
  438. /// <summary>
  439. /// 中药饮片
  440. /// </summary>
  441. /// <param name="arr"></param>
  442. /// <returns></returns>
  443. private JObject GetChineseDrugJsonByTxt(string[] arr)
  444. {
  445. dynamic jsonTemp = new JObject();
  446. jsonTemp.ID = "";
  447. jsonTemp.updateUserID = Global.user.ID;
  448. jsonTemp.HospitalDr = Global.inf.hospitalDr;
  449. jsonTemp.InterfaceDr = Global.inf.interfaceDr;
  450. jsonTemp.Code = arr[0];
  451. jsonTemp.Name = arr[1];
  452. jsonTemp.HisType = "10";
  453. jsonTemp.HisTypeName = "中药饮片";
  454. jsonTemp.Connotation = arr[8];
  455. //jsonTemp.PinyinSearchCode = SpellCodeHelper.GetFirstPYLetter(arr[11]);
  456. jsonTemp.ValidFlag = arr[3];
  457. jsonTemp.Note = arr[9];
  458. jsonTemp.VersionNO = arr[7];
  459. jsonTemp.VersionName = arr[10];
  460. jsonTemp.UseFlag = arr[3];
  461. jsonTemp.UniqueRecordNO = arr[4];
  462. return jsonTemp;
  463. }
  464. /// <summary>
  465. /// 医疗机构制剂
  466. /// </summary>
  467. /// <param name="arr"></param>
  468. /// <returns></returns>
  469. private JObject GetHosPreparationJsonByTxt(string[] arr)
  470. {
  471. dynamic jsonTemp = new JObject();
  472. jsonTemp.ID = "";
  473. jsonTemp.updateUserID = Global.user.ID;
  474. jsonTemp.HospitalDr = Global.inf.hospitalDr;
  475. jsonTemp.InterfaceDr = Global.inf.interfaceDr;
  476. jsonTemp.Code = arr[0];
  477. jsonTemp.Name = arr[1];
  478. jsonTemp.HisType = "11";
  479. jsonTemp.HisTypeName = "医疗机构制剂";
  480. jsonTemp.Connotation = arr[8];
  481. //jsonTemp.PinyinSearchCode = SpellCodeHelper.GetFirstPYLetter(arr[11]);
  482. jsonTemp.ValidFlag = arr[64];
  483. jsonTemp.Note = arr[9];
  484. jsonTemp.VersionNO = arr[70];
  485. jsonTemp.VersionName = arr[71];
  486. jsonTemp.UseFlag = arr[64];
  487. jsonTemp.UniqueRecordNO = arr[46]; //药品注册证号
  488. jsonTemp.Instructions = arr[77];
  489. jsonTemp.NationalCode = arr[57]; //国家医保药品目录编码
  490. jsonTemp.NationalName = arr[58]; //国家医保药品目录名称
  491. return jsonTemp;
  492. }
  493. /// <summary>
  494. /// 提交数据给IRIS
  495. /// </summary>
  496. /// <param name="code"></param>
  497. /// <param name="jaParam"></param>
  498. /// <returns></returns>
  499. private JObject applyDataToIris(string code, JArray jaParam)
  500. {
  501. JObject joIn = new JObject();
  502. JObject joRtn = new JObject();
  503. string outParam = "";
  504. try
  505. {
  506. joIn.Add(new JProperty("params", jaParam));
  507. joIn.Add("code", code);
  508. joIn.Add("updateUserID", Global.user.ID);
  509. InvokeHelper invoker = new InvokeHelper();
  510. string sInput = joIn.ToString();
  511. joRtn = invoker.invokeInsuService(sInput, "applyDataToIris");
  512. outParam = joRtn.ToString();
  513. return joRtn;
  514. }
  515. catch (Exception ex)
  516. {
  517. joRtn = JsonHelper.setExceptionJson(-1, "applyDataToIris", ex.Message);
  518. outParam = joRtn.ToString();
  519. return joRtn;
  520. }
  521. }
  522. /// <summary>
  523. /// 从TXT里导数据到IRIS
  524. /// </summary>
  525. /// <param name="txtPath"></param>
  526. /// <param name="singleRows"></param>
  527. /// <param name="direcType"></param>
  528. /// <param name="processBar"></param>
  529. /// <returns></returns>
  530. public JObject importDataToIrisByTxt(string txtPath, int size, int direcType, Sunny.UI.UIProcessBar processBar)
  531. {
  532. int errorCount = 0;
  533. string errorMsg = "";
  534. try
  535. {
  536. /*据说速度更快
  537. * https://www.cnblogs.com/eniac12/p/4398310.html
  538. * using (StreamReader sr = File.OpenText(fileName))
  539. {
  540. string s = String.Empty;
  541. while ((s = sr.ReadLine()) != null)
  542. {
  543. //do what you have to here
  544. }
  545. }
  546. Convert.ToString(a)
  547. */
  548. string[] lines = System.IO.File.ReadAllLines(txtPath);
  549. dynamic jaParams = new JArray();
  550. int rows = lines.Length;
  551. processBar.Maximum = rows;
  552. for (int i = 0; i < rows; i++)
  553. {
  554. processBar.Value = i + 1;
  555. Application.DoEvents();
  556. string lineTmp = lines[i];
  557. string[] arr = lineTmp.Split('\t');
  558. //判断是哪种目录类型
  559. string code = string.Empty;
  560. switch (direcType)
  561. {
  562. //药品
  563. case 1:
  564. {
  565. jaParams.Add(GetDrugsJsonByTxt(arr));
  566. break;
  567. }
  568. //诊疗
  569. case 2:
  570. {
  571. jaParams.Add(GetMedicalServiceJsonByTxt(arr));
  572. break;
  573. }
  574. //材料
  575. case 3:
  576. {
  577. jaParams.Add(GetMaterialJsonByTxt(arr));
  578. break;
  579. }
  580. //诊断
  581. case 4:
  582. {
  583. jaParams.Add(GetDiagnoseJsonByTxt(arr));
  584. break;
  585. }
  586. //手术
  587. case 5:
  588. {
  589. jaParams.Add(GetOperationJsonByTxt(arr));
  590. break;
  591. }
  592. //慢性病
  593. case 6:
  594. {
  595. jaParams.Add(GetChronicDiseaseJsonByTxt(arr));
  596. break;
  597. }
  598. //DRGs
  599. case 7:
  600. {
  601. jaParams.Add(GetDRGsJsonByTxt(arr));
  602. break;
  603. }
  604. //日间手术
  605. case 8:
  606. {
  607. jaParams.Add(GetDaySurgeryJsonByTxt(arr));
  608. break;
  609. }
  610. //中药饮片
  611. case 10:
  612. {
  613. jaParams.Add(GetChineseDrugJsonByTxt(arr));
  614. break;
  615. }
  616. //医疗机构制剂
  617. case 11:
  618. {
  619. jaParams.Add(GetHosPreparationJsonByTxt(arr));
  620. break;
  621. }
  622. }
  623. code = "09010035";
  624. //每50行提交一次给后台
  625. int currentRows = i + 1;
  626. if ((currentRows % size == 0) && (i != 0))
  627. {
  628. JObject joRtn = applyDataToIris(code, jaParams);
  629. if (joRtn["errorCode"].ToString() != "0")
  630. {
  631. errorCount = errorCount + 1;
  632. errorMsg = "\r\n" +errorMsg + joRtn["errorMessage"].ToString();
  633. }
  634. jaParams = new JArray();
  635. }
  636. if ((currentRows == rows) && (currentRows % size != 0))
  637. {
  638. JObject joRtn = applyDataToIris(code, jaParams);
  639. if (joRtn["errorCode"].ToString() != "0")
  640. {
  641. errorCount = errorCount + 1;
  642. errorMsg = "\r\n" + errorMsg + joRtn["errorMessage"].ToString();
  643. }
  644. jaParams = new JArray();
  645. }
  646. }
  647. return JsonHelper.setExceptionJson(0 - errorCount, errorMsg, null);
  648. }
  649. catch (Exception ex)
  650. {
  651. return JsonHelper.setExceptionJson(-1, "importDataToIrisByTxt", ex.Message);
  652. }
  653. }
  654. /// <summary>
  655. /// 从txt获取数据更新插入到医保字典明细表
  656. /// </summary>
  657. /// <param name="directoryType">yp;hc;sfxm</param>
  658. public JObject ImportToDictionaryDataDetail(string filePath, Sunny.UI.UIProcessBar ProcessBar)
  659. {
  660. int errorCount = 0;
  661. int i = 0;
  662. string errorMsg = "";
  663. try
  664. {
  665. string[] lines = System.IO.File.ReadAllLines(filePath);
  666. dynamic jaParams = new JArray();
  667. int rows = lines.Length;
  668. ProcessBar.Maximum = rows;
  669. using (var reader = new StreamReader(filePath, System.Text.Encoding.GetEncoding("gb2312")))
  670. {
  671. var encoding = Encoding.UTF8; // 设置编码格式为 UTF-8(根据需求选择其他编码)
  672. while (!reader.EndOfStream)
  673. {
  674. ProcessBar.Value = i + 1;
  675. string line = reader.ReadLine();
  676. Application.DoEvents();
  677. //MessageBox.Show("line:" + line);
  678. byte[] bytes = encoding.GetBytes(line); // 将每行内容转换成字节数组
  679. string decodedString = encoding.GetString(bytes); // 对字节数组进行解码得到原始字符串
  680. //MessageBox.Show("decodedString:" + decodedString);
  681. string[] arr = decodedString.Split('|');
  682. dynamic joTmp = new JObject();
  683. string HBDictionaryDr = "";
  684. string DictionaryType = arr[0].ToString();
  685. //获取并插入字典主表的DR
  686. JObject joData = new JObject();
  687. joData.Add("HospitalDr", Global.inf.hospitalDr);
  688. joData.Add("InterfaceDr", Global.inf.interfaceDr);
  689. joData.Add("InsuCode", DictionaryType);
  690. JObject joRtnHBDictionary = mis.insertDictionary(joData);
  691. if (JsonHelper.parseIrisRtnValue(joRtnHBDictionary, out errorMsg) != 0)
  692. {
  693. return JsonHelper.setExceptionJson(-1, "insertDictionary", "导入的医保字典类型" + DictionaryType + "在医保字典主表HB_Dictionary中不存在,插入主表数据失败!");
  694. }
  695. else
  696. {
  697. HBDictionaryDr = JsonHelper.getDestValue(joRtnHBDictionary, "data.HBDictionaryDr");
  698. if (HBDictionaryDr == "")
  699. {
  700. return JsonHelper.setExceptionJson(-1, "insertDictionary", "HBDictionaryDr返回值为空");
  701. }
  702. }
  703. joTmp.ID = "";
  704. joTmp.updateUserID = Global.user.ID;
  705. joTmp.HospitalDr = Global.inf.hospitalDr;
  706. joTmp.InterfaceDr = Global.inf.interfaceDr;
  707. joTmp.HBDictionaryDr = HBDictionaryDr; //arr[0].ToString();
  708. joTmp.Code = arr[2].ToString();
  709. joTmp.Descripts = arr[3].ToString();
  710. joTmp.PinyinSearchCode = arr[0].ToString();
  711. jaParams.Add(joTmp);
  712. //每50行提交一次给后台
  713. int currentRows = i + 1;
  714. if ((currentRows % 50 == 0) && (i != 0))
  715. {
  716. JObject joRtn = mis.insertDictionaryDataDetail(jaParams);
  717. if (joRtn["errorCode"].ToString() != "0")
  718. {
  719. errorCount = errorCount + 1;
  720. errorMsg = "\r\n" + errorMsg + joRtn["errorMessage"].ToString();
  721. }
  722. jaParams = new JArray();
  723. }
  724. if ((currentRows == rows) && (currentRows % 50 != 0))
  725. {
  726. JObject joRtn = mis.insertDictionaryDataDetail(jaParams);
  727. if (joRtn["errorCode"].ToString() != "0")
  728. {
  729. errorCount = errorCount + 1;
  730. errorMsg = "\r\n" + errorMsg + joRtn["errorMessage"].ToString();
  731. }
  732. jaParams = new JArray();
  733. }
  734. i = i + 1;
  735. }
  736. }
  737. return JsonHelper.setExceptionJson(0 - errorCount, errorMsg, null);
  738. }
  739. catch (Exception ex)
  740. {
  741. return JsonHelper.setExceptionJson(-1, "ImportToDirectory", ex.Message);
  742. }
  743. }
  744. /// <summary>
  745. /// 从txt获取数据更新插入到医保目录表
  746. /// </summary>
  747. /// <param name="directoryType">yp;hc;sfxm</param>
  748. public JObject ImportToDirectory(string filePath, int directoryType, int size, Sunny.UI.UIProcessBar ProcessBar)
  749. {
  750. int errorCount = 0;
  751. int i = 0;
  752. string errorMsg = "";
  753. try
  754. {
  755. string[] lines = System.IO.File.ReadAllLines(filePath);
  756. dynamic jaParams = new JArray();
  757. int rows = lines.Length;
  758. ProcessBar.Maximum = rows;
  759. using (var reader = new StreamReader(filePath, System.Text.Encoding.GetEncoding("gb2312")))
  760. {
  761. var encoding = Encoding.UTF8; // 设置编码格式为 UTF-8(根据需求选择其他编码)
  762. while (!reader.EndOfStream)
  763. {
  764. ProcessBar.Value = i + 1;
  765. string line = reader.ReadLine();
  766. Application.DoEvents();
  767. byte[] bytes = encoding.GetBytes(line); // 将每行内容转换成字节数组
  768. string decodedString = encoding.GetString(bytes); // 对字节数组进行解码得到原始字符串
  769. string[] arr = decodedString.Split('|');
  770. if (directoryType == 0)
  771. {
  772. jaParams.Add(GetDrugsJsonByTxt(arr));
  773. //break;
  774. }
  775. else if (directoryType == 1)
  776. {
  777. jaParams.Add(GetMedicalServiceJsonByTxt(arr));
  778. //break;
  779. }
  780. else if (directoryType == 2)
  781. {
  782. jaParams.Add(GetMaterialJsonByTxt(arr));
  783. //break;
  784. }
  785. string code = "09010035";
  786. //每50行提交一次给后台
  787. int currentRows = i + 1;
  788. if ((currentRows % size == 0) && (i != 0))
  789. {
  790. JObject joRtn = applyDataToIris(code, jaParams);
  791. if (joRtn["errorCode"].ToString() != "0")
  792. {
  793. errorCount = errorCount + 1;
  794. errorMsg = "\r\n" + errorMsg + joRtn["errorMessage"].ToString();
  795. }
  796. jaParams = new JArray();
  797. }
  798. if ((currentRows == rows) && (currentRows % size != 0))
  799. {
  800. JObject joRtn = applyDataToIris(code, jaParams);
  801. if (joRtn["errorCode"].ToString() != "0")
  802. {
  803. errorCount = errorCount + 1;
  804. errorMsg = "\r\n" + errorMsg + joRtn["errorMessage"].ToString();
  805. }
  806. jaParams = new JArray();
  807. }
  808. i = i + 1;
  809. }
  810. }
  811. return JsonHelper.setExceptionJson(0 - errorCount, errorMsg, null);
  812. }
  813. catch (Exception ex)
  814. {
  815. return JsonHelper.setExceptionJson(-1, "ImportToDirectory", ex.Message);
  816. }
  817. }
  818. /// <summary>
  819. /// 从txt获取数据更新插入到医保目录表
  820. /// </summary>
  821. /// <param name="directoryType">yp;hc;sfxm</param>
  822. public JObject ImportToDirectoryNew(string filePath,int directoryType, int size, Sunny.UI.UIProcessBar ProcessBar)
  823. {
  824. int errorCount = 0;
  825. string errorMsg = "";
  826. try
  827. {
  828. string[] lines = System.IO.File.ReadAllLines(filePath);
  829. dynamic jaParams = new JArray();
  830. int rows = lines.Length;
  831. ProcessBar.Maximum = rows;
  832. for (int i = 0; i < rows; i++)
  833. {
  834. ProcessBar.Value = i + 1;
  835. Application.DoEvents();
  836. string lineTmp = lines[i];
  837. string[] arr = lineTmp.Split('|');
  838. string code = string.Empty;
  839. if (directoryType == 0)
  840. {
  841. jaParams.Add(GetDrugsJsonByTxt(arr));
  842. break;
  843. }
  844. else if (directoryType == 1)
  845. {
  846. jaParams.Add(GetMedicalServiceJsonByTxt(arr));
  847. break;
  848. }
  849. else if (directoryType == 2)
  850. {
  851. jaParams.Add(GetMaterialJsonByTxt(arr));
  852. break;
  853. }
  854. code = "09010035";
  855. //每50行提交一次给后台
  856. int currentRows = i + 1;
  857. if ((currentRows % size == 0) && (i != 0))
  858. {
  859. JObject joRtn = applyDataToIris(code, jaParams);
  860. if (joRtn["errorCode"].ToString() != "0")
  861. {
  862. errorCount = errorCount + 1;
  863. errorMsg = "\r\n" + errorMsg + joRtn["errorMessage"].ToString();
  864. }
  865. jaParams = new JArray();
  866. }
  867. if ((currentRows == rows) && (currentRows % size != 0))
  868. {
  869. JObject joRtn = applyDataToIris(code, jaParams);
  870. if (joRtn["errorCode"].ToString() != "0")
  871. {
  872. errorCount = errorCount + 1;
  873. errorMsg = "\r\n" + errorMsg + joRtn["errorMessage"].ToString();
  874. }
  875. jaParams = new JArray();
  876. }
  877. }
  878. return JsonHelper.setExceptionJson(0 - errorCount, errorMsg, null);
  879. }
  880. catch (Exception ex)
  881. {
  882. return JsonHelper.setExceptionJson(-1, "ImportToDirectory", ex.Message);
  883. }
  884. }
  885. /// <summary>
  886. /// 从txt获取数据更新插入到医保对照表
  887. /// </summary>
  888. /// <param name="filePath"></param>
  889. /// <param name="directoryType"></param>
  890. /// <param name="dtHis"></param>
  891. /// <param name="ProcessBar"></param>
  892. /// <returns></returns>
  893. public JObject ImportToMapRelationFromTxt(string filePath, int directoryType, DataTable dtHis, Sunny.UI.UIProcessBar ProcessBar)
  894. {
  895. int errorCount = 0;
  896. int i = 0;
  897. string errorMsg = "";
  898. string hisTypeName = "";
  899. try
  900. {
  901. //获取Out文件信息
  902. string[] lines = System.IO.File.ReadAllLines(filePath);
  903. int rows = lines.Length;
  904. ProcessBar.Maximum = rows;
  905. if (directoryType == 0)
  906. hisTypeName = "药品";
  907. else
  908. if (directoryType == 1)
  909. hisTypeName = "诊疗";
  910. else
  911. if (directoryType == 2)
  912. hisTypeName = "材料";
  913. using (var reader = new StreamReader(filePath, System.Text.Encoding.GetEncoding("gb2312")))
  914. {
  915. var encoding = Encoding.UTF8; // 设置编码格式为 UTF-8(根据需求选择其他编码)
  916. while (!reader.EndOfStream)
  917. {
  918. ProcessBar.Value = i + 1;
  919. string line = reader.ReadLine();
  920. Application.DoEvents();
  921. byte[] bytes = encoding.GetBytes(line); // 将每行内容转换成字节数组
  922. string decodedString = encoding.GetString(bytes); // 对字节数组进行解码得到原始字符串
  923. string[] arr = decodedString.Split('|');
  924. string FileHISCode = arr[0]; //out文件中的HIS编码
  925. string InsuCode = arr[2]; //医保目录编码
  926. string InsuName = arr[3]; //医保目录名称
  927. //2.循环HIS目录信息主要取MapID
  928. foreach (DataRow dataRow in dtHis.Rows)
  929. //for (int iHIS = 0; iHIS < dtHis.Rows.Count; iHIS++)
  930. {
  931. string HISCode = dataRow["itemCode"].ToString(); //HIS药品编码
  932. string HISName = dataRow["itemDesc"].ToString(); //HIS药品名称
  933. string MapID = dataRow["MapID"].ToString(); //MapID
  934. string ChargeItemDr = dataRow["ID"].ToString();
  935. //string HISCode = dtHis.Rows[iHIS]["itemCode"].ToString(); //HIS药品编码
  936. //string HISName = dtHis.Rows[iHIS]["itemDesc"].ToString(); //HIS药品名称
  937. //string MapID = dtHis.Rows[iHIS]["MapID"].ToString(); //MapID
  938. //string ChargeItemDr = dtHis.Rows[iHIS]["ID"].ToString();
  939. //3.判断HIS编码一致再更新
  940. if (FileHISCode == HISCode)
  941. {
  942. //查询医保平台医保目录表的ID-对应医保对照表DiretoryDr
  943. JObject joInput = new JObject();
  944. joInput.Add("currentPage", "1");
  945. joInput.Add("pageSize", "50");
  946. joInput.Add("serviceCode", "09010042");
  947. joInput.Add("directoryType", directoryType + 1);
  948. joInput.Add("directoryCode", InsuCode);
  949. joInput.Add("directoryDr", Global.inf.interfaceDr);
  950. JObject joRtnDI = mis.getMIDirectoryByPagination(joInput);
  951. string DiretoryDr = JsonHelper.getDestValue(joRtnDI, "result.rows[0].medInsuDirectoryID");
  952. //插入医保平台医保对照表
  953. JArray jaParams = new JArray();
  954. dynamic jsonTemp = new JObject();
  955. if (MapID == "0")
  956. jsonTemp.ID = "";
  957. else
  958. jsonTemp.ID = MapID;
  959. jsonTemp.HospitalDr = Global.inf.hospitalDr;
  960. jsonTemp.updateUserID = Global.user.ID;
  961. jsonTemp.InterfaceDr = Global.inf.interfaceDr;
  962. jsonTemp.HISCode = HISCode;
  963. jsonTemp.HISName = HISName;
  964. jsonTemp.ChargeItemDr = ChargeItemDr;
  965. jsonTemp.DiretoryDr = DiretoryDr; //医保目录表ID dtCenter.Rows[iCenter]["medInsuDirectoryID"]
  966. jsonTemp.State = 1; //1.已对照 2.已对照但未上传 3 已对照且已上传
  967. jsonTemp.HisType = directoryType + 1;
  968. jsonTemp.HisTypeName = hisTypeName;
  969. jsonTemp.InsuCode = InsuCode;
  970. jsonTemp.InsuName = InsuName;
  971. jsonTemp.UpdateDate = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss");
  972. jaParams.Add(jsonTemp);
  973. JObject joIn = new JObject();
  974. joIn.Add(new JProperty("params", jaParams));
  975. joIn.Add("code", "09010040");
  976. //InvokeHelper invoker = new InvokeHelper();
  977. JObject joRtn = invoker.invokeInsuService(joIn.ToString(), "插入对照信息");
  978. if (joRtn["errorCode"].ToString() != "0")
  979. {
  980. errorCount = errorCount + 1;
  981. errorMsg = "\r\n" + errorMsg + joRtn["errorMessage"].ToString();
  982. }
  983. }
  984. }
  985. i = i + 1;
  986. }
  987. }
  988. return JsonHelper.setExceptionJson(0 - errorCount, errorMsg, null);
  989. }
  990. catch (Exception ex)
  991. {
  992. return JsonHelper.setExceptionJson(-1, "ImportToMapRelation", ex.Message);
  993. }
  994. }
  995. /// <summary>
  996. /// 从DataTable获取数据更新插入到医保对照表
  997. /// </summary>
  998. /// <param name="directoryType"></param>
  999. /// <param name="dtHis">HIS字典</param>
  1000. /// <param name="ProcessBar"></param>
  1001. /// <returns></returns>
  1002. public JObject ImportToMapRelationFromDT(int HisType, DataTable dtHis, DataGridView dgv, Sunny.UI.UIProcessBar ProcessBar)
  1003. {
  1004. int errorCount = 0;
  1005. int i = 0;
  1006. string errorMsg = "";
  1007. string hisTypeName = "";
  1008. try
  1009. {
  1010. int rows = dtHis.Rows.Count;
  1011. ProcessBar.Maximum = rows;
  1012. if (HisType == 63)
  1013. hisTypeName = "收费类别";
  1014. else
  1015. if (HisType == 70)
  1016. hisTypeName = "剂型";
  1017. else
  1018. if (HisType == 229)
  1019. hisTypeName = "用法";
  1020. //2.循环HIS目录信息主要取MapID
  1021. //foreach (DataRow dataRow in dtHis.Rows)
  1022. for (int iHIS = 0; iHIS < dtHis.Rows.Count; iHIS++)
  1023. {
  1024. Boolean bAdd = false;
  1025. ProcessBar.Value = i + 1;
  1026. Application.DoEvents();
  1027. string HISCode = dtHis.Rows[iHIS]["code"].ToString(); //HIS药品编码
  1028. string HISName = dtHis.Rows[iHIS]["desc"].ToString(); //HIS药品名称
  1029. //string MapID = dtHis.Rows[iHIS]["MapID"].ToString(); //MapID
  1030. string ChargeItemDr = dtHis.Rows[iHIS]["id"].ToString();
  1031. for (int idgv = 0; idgv < dgv.Rows.Count; idgv++)
  1032. {
  1033. if (dgv.Rows[idgv].Cells["HISCode"].Value.ToString() == HISCode)
  1034. bAdd = true;
  1035. }
  1036. if (bAdd == false)
  1037. {
  1038. //插入医保平台医保对照表
  1039. JArray jaParams = new JArray();
  1040. dynamic jsonTemp = new JObject();
  1041. jsonTemp.ID = "";
  1042. jsonTemp.HospitalDr = Global.inf.hospitalDr;
  1043. jsonTemp.updateUserID = Global.user.ID;
  1044. jsonTemp.InterfaceDr = Global.inf.interfaceDr;
  1045. jsonTemp.HISCode = HISCode;
  1046. jsonTemp.HISName = HISName;
  1047. jsonTemp.ChargeItemDr = ChargeItemDr;
  1048. jsonTemp.DiretoryDr = ""; //医保目录表ID dtCenter.Rows[iCenter]["medInsuDirectoryID"]
  1049. jsonTemp.State = 0; //1.已对照 2.已对照但未上传 3 已对照且已上传
  1050. jsonTemp.HisType = HisType;
  1051. jsonTemp.HisTypeName = hisTypeName;
  1052. jsonTemp.InsuCode = "";
  1053. jsonTemp.InsuName = "";
  1054. jsonTemp.UpdateDate = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss");
  1055. jaParams.Add(jsonTemp);
  1056. JObject joIn = new JObject();
  1057. joIn.Add(new JProperty("params", jaParams));
  1058. joIn.Add("code", "09010040");
  1059. //InvokeHelper invoker = new InvokeHelper();
  1060. JObject joRtn = invoker.invokeInsuService(joIn.ToString(), "插入对照信息");
  1061. if (joRtn["errorCode"].ToString() != "0")
  1062. {
  1063. errorCount = errorCount + 1;
  1064. errorMsg = "\r\n" + errorMsg + joRtn["errorMessage"].ToString();
  1065. }
  1066. }
  1067. i = i + 1;
  1068. }
  1069. return JsonHelper.setExceptionJson(0 - errorCount, errorMsg, null);
  1070. }
  1071. catch (Exception ex)
  1072. {
  1073. return JsonHelper.setExceptionJson(-1, "ImportToMapRelation", ex.Message);
  1074. }
  1075. }
  1076. public JObject importDictionary(Sunny.UI.UIProcessBar uiProcessBar,JArray jaList,string type)
  1077. {
  1078. int errorCount = 0;
  1079. string errorMsg = "",outParam = "", HBDictionaryDr ="";
  1080. try
  1081. {
  1082. //插入并获取字典主表的DR
  1083. JObject joData = new JObject();
  1084. joData.Add("HospitalDr", Global.inf.hospitalDr);
  1085. joData.Add("InterfaceDr", Global.inf.interfaceDr);
  1086. joData.Add("InsuCode", type);
  1087. JObject joRtn = mis.insertDictionary(joData);
  1088. if (JsonHelper.parseIrisRtnValue(joRtn, out errorMsg) != 0)
  1089. {
  1090. return JsonHelper.setExceptionJson(-1, "insertDictionary", errorMsg);
  1091. }
  1092. else
  1093. {
  1094. HBDictionaryDr = JsonHelper.getDestValue(joRtn, "data.HBDictionaryDr");
  1095. if (HBDictionaryDr == "")
  1096. {
  1097. return JsonHelper.setExceptionJson(-1, "insertDictionary", "HBDictionaryDr返回值为空");
  1098. }
  1099. }
  1100. }
  1101. catch (Exception ex)
  1102. {
  1103. return JsonHelper.setExceptionJson(-1, "insertDictionary", ex.Message);
  1104. }
  1105. JObject joReturn = new JObject();
  1106. try
  1107. {
  1108. //插入字典明细表
  1109. JArray jaParams = new JArray();
  1110. int rows = jaList.Count ;
  1111. uiProcessBar.Maximum = rows;
  1112. for (int i = 0; i < jaList.Count ; i++)
  1113. {
  1114. uiProcessBar.Value = i + 1;
  1115. dynamic joTmp = new JObject();
  1116. joTmp.ID = "";
  1117. joTmp.updateUserID = Global.user.ID;
  1118. joTmp.HospitalDr = Global.inf.hospitalDr;
  1119. joTmp.InterfaceDr = Global.inf.interfaceDr;
  1120. joTmp.HBDictionaryDr = HBDictionaryDr;
  1121. joTmp.Code = jaList[i]["value"].ToString();
  1122. joTmp.Descripts = jaList[i]["label"].ToString();
  1123. jaParams.Add(joTmp);
  1124. //每50行提交一次给后台
  1125. int currentRows = i + 1;
  1126. if ((currentRows % 50 == 0) && (i != 0))
  1127. {
  1128. JObject joRtn = mis.insertDictionaryDataDetail(jaParams);
  1129. if (joRtn["errorCode"].ToString() != "0")
  1130. {
  1131. errorCount = errorCount + 1;
  1132. errorMsg = "\r\n" + errorMsg + joRtn["errorMessage"].ToString();
  1133. }
  1134. jaParams = new JArray();
  1135. }
  1136. if ((currentRows == rows) && (currentRows % 50 != 0))
  1137. {
  1138. JObject joRtn = mis.insertDictionaryDataDetail(jaParams);
  1139. if (joRtn["errorCode"].ToString() != "0")
  1140. {
  1141. errorCount = errorCount + 1;
  1142. errorMsg = "\r\n" + errorMsg + joRtn["errorMessage"].ToString();
  1143. }
  1144. jaParams = new JArray();
  1145. }
  1146. }
  1147. joReturn = JsonHelper.setExceptionJson(0 - errorCount, errorMsg, null);
  1148. outParam = joReturn.ToString();
  1149. return joReturn;
  1150. }
  1151. catch (Exception ex)
  1152. {
  1153. joReturn = JsonHelper.setExceptionJson(-1, "importDictinary", ex.Message);
  1154. outParam = joReturn.ToString();
  1155. return joReturn;
  1156. }
  1157. }
  1158. }
  1159. }