DataImoport.cs 31 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823
  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 PTMedicalInsurance.Common;
  30. namespace PTMedicalInsurance
  31. {
  32. class DataImoport
  33. {
  34. MIIrisServices mis = new MIIrisServices();
  35. /// <summary>
  36. /// 读取TXT后,Array中的空值会返回NULL,将其转换为"".应有其他方式处理,后面再优化
  37. /// 明天试试Convert.ToString(a)
  38. /// </summary>
  39. /// <param name="arrayValue"></param>
  40. /// <returns></returns>
  41. private string convertArrayNull(string arrayValue)
  42. {
  43. string returnValue = string.Empty;
  44. if (arrayValue == "null")
  45. {
  46. returnValue = "";
  47. }
  48. else
  49. {
  50. returnValue = arrayValue;
  51. }
  52. return returnValue;
  53. }
  54. /// <summary>
  55. /// 从TXT文件中获取药品数据,并组装成JSON
  56. /// </summary>
  57. /// <param name="arr"></param>
  58. /// <returns></returns>
  59. private JObject GetDrugsJsonByTxt(string[] arr)
  60. {
  61. dynamic jsonTemp = new JObject();
  62. jsonTemp.ID = "";
  63. jsonTemp.updateUserID = Global.user.ID;
  64. jsonTemp.HospitalDr = Global.inf.hospitalDr;
  65. jsonTemp.InterfaceDr = Global.inf.interfaceDr;
  66. jsonTemp.Code = arr[0];
  67. jsonTemp.Name = arr[7];
  68. jsonTemp.HisType = "1";
  69. jsonTemp.HisTypeName = "药品";
  70. jsonTemp.LocateCode = "";
  71. jsonTemp.LocateName = "";
  72. jsonTemp.DosageFormCode = arr[9];
  73. jsonTemp.DosageFormName = arr[10];
  74. jsonTemp.CategoryCode = arr[11];
  75. jsonTemp.CategoryName = arr[12];
  76. jsonTemp.Specification = arr[13];
  77. jsonTemp.SpecificationCode = arr[14];
  78. jsonTemp.UnitOfPackag = arr[42];
  79. jsonTemp.UnitOfValuation = arr[40];
  80. jsonTemp.StartDate = convertArrayNull(arr[36]);
  81. jsonTemp.EndDate = convertArrayNull(arr[37]);
  82. jsonTemp.PinyinSearchCode = arr[50];
  83. jsonTemp.Instructions = arr[35];
  84. jsonTemp.ExceptContent = "";
  85. jsonTemp.Connotation = "";
  86. jsonTemp.ValidFlag = convertArrayNull(arr[78]);
  87. jsonTemp.Note = arr[77];
  88. jsonTemp.VersionNO = arr[82];
  89. jsonTemp.VersionName = arr[83];
  90. jsonTemp.UseFlag = convertArrayNull(arr[78]);
  91. jsonTemp.DrugSafetyStandardCode = arr[8];
  92. jsonTemp.ApprovalNO = arr[61];
  93. jsonTemp.SpecialFlag = convertArrayNull(arr[55]);
  94. jsonTemp.LimitFlag = convertArrayNull(arr[57]);
  95. jsonTemp.LimitRange = arr[56];
  96. jsonTemp.UniqueRecordNO = arr[79];
  97. jsonTemp.Manufacturers = arr[53];
  98. jsonTemp.Company = arr[85];
  99. jsonTemp.ChargeItemLevelName = arr[91];
  100. if (jsonTemp.ChargeItemLevelName == "甲")
  101. {
  102. jsonTemp.ChargeItemLevel = "01";
  103. jsonTemp.SelfPercent = "0";
  104. }
  105. else if (jsonTemp.ChargeItemLevelName == "乙")
  106. {
  107. jsonTemp.ChargeItemLevel = "02";
  108. jsonTemp.SelfPercent = "0";
  109. }
  110. else if (jsonTemp.ChargeItemLevelName == "丙")
  111. {
  112. jsonTemp.ChargeItemLevel = "03";
  113. jsonTemp.SelfPercent = "100";
  114. }
  115. else
  116. {
  117. jsonTemp.ChargeItemLevel = "04";
  118. jsonTemp.SelfPercent = "100";
  119. jsonTemp.ChargeItemLevelName = "未知";
  120. }
  121. return jsonTemp;
  122. }
  123. /// <summary>
  124. /// 从TXT文件中获取诊疗数据,并组装成JSON
  125. /// </summary>
  126. /// <param name="arr"></param>
  127. /// <returns></returns>
  128. private JObject GetMedicalServiceJsonByTxt(string[] arr)
  129. {
  130. dynamic jsonTemp = new JObject();
  131. jsonTemp.ID = "";
  132. jsonTemp.updateUserID = Global.user.ID;
  133. jsonTemp.HospitalDr = Global.inf.hospitalDr;
  134. jsonTemp.InterfaceDr = Global.inf.interfaceDr;
  135. jsonTemp.Code = arr[0];
  136. jsonTemp.Name = arr[9];
  137. jsonTemp.HisType = "2";
  138. jsonTemp.HisTypeName = "诊疗";
  139. jsonTemp.LocateCode = "";
  140. jsonTemp.LocateName = "";
  141. //jsonTemp.DosageFormCode = arr[9];
  142. //jsonTemp.DosageFormName = arr[10];
  143. jsonTemp.CategoryCode = arr[8];
  144. //jsonTemp.CategoryName = arr[12];
  145. jsonTemp.Specification = "";
  146. jsonTemp.SpecificationCode = "";
  147. //jsonTemp.UnitOfPackag = arr[1];
  148. jsonTemp.UnitOfValuation = arr[1];
  149. jsonTemp.StartDate = convertArrayNull(arr[11]);
  150. jsonTemp.EndDate = convertArrayNull(arr[12]);
  151. //jsonTemp.PinyinSearchCode = SpellCodeHelper.GetFirstPYLetter(arr[9]);
  152. jsonTemp.Instructions = arr[3];
  153. jsonTemp.ExceptContent = arr[4];
  154. jsonTemp.Connotation = arr[5];
  155. jsonTemp.ValidFlag = arr[6];
  156. jsonTemp.Note = arr[7];
  157. jsonTemp.VersionNO = arr[14];
  158. jsonTemp.VersionName = arr[15];
  159. jsonTemp.UseFlag = arr[6];
  160. jsonTemp.DrugSafetyStandardCode = "";
  161. jsonTemp.ApprovalNO = "";
  162. jsonTemp.SpecialFlag = "";
  163. jsonTemp.LimitFlag = "";
  164. jsonTemp.LimitRange = "";
  165. jsonTemp.UniqueRecordNO = arr[13];
  166. jsonTemp.ChargeItemLevel = arr[8];
  167. if (jsonTemp.ChargeItemLevel == "1")
  168. {
  169. jsonTemp.ChargeItemLevelName = "甲";
  170. jsonTemp.SelfPercent = "0";
  171. }
  172. else if (jsonTemp.ChargeItemLevel == "2")
  173. {
  174. jsonTemp.ChargeItemLevelName = "乙";
  175. jsonTemp.SelfPercent = "0";
  176. }
  177. else if (jsonTemp.ChargeItemLevel == "3")
  178. {
  179. jsonTemp.ChargeItemLevelName = "丙";
  180. jsonTemp.SelfPercent = "100";
  181. }
  182. else
  183. {
  184. jsonTemp.ChargeItemLevel = "4";
  185. jsonTemp.SelfPercent = "100";
  186. jsonTemp.ChargeItemLevelName = "未知";
  187. }
  188. return jsonTemp;
  189. }
  190. /// <summary>
  191. /// 从TXT文件中获取材料数据,并组装成JSON
  192. /// </summary>
  193. /// <param name="arr"></param>
  194. /// <returns></returns>
  195. private JObject GetMaterialJsonByTxt(string[] arr)
  196. {
  197. dynamic jsonTemp = new JObject();
  198. jsonTemp.ID = "";
  199. jsonTemp.updateUserID = Global.user.ID;
  200. jsonTemp.HospitalDr = Global.inf.hospitalDr;
  201. jsonTemp.InterfaceDr = Global.inf.interfaceDr;
  202. jsonTemp.Code = arr[0];
  203. jsonTemp.Name = arr[1];
  204. jsonTemp.HisType = "3";
  205. jsonTemp.HisTypeName = "材料";
  206. jsonTemp.LocateCode = "";
  207. jsonTemp.LocateName = "";
  208. jsonTemp.DosageFormCode = "";
  209. jsonTemp.DosageFormName = "";
  210. jsonTemp.CategoryCode = "";
  211. jsonTemp.CategoryName = "";
  212. jsonTemp.Specification = arr[7];
  213. jsonTemp.SpecificationCode = arr[6];
  214. jsonTemp.UnitOfPackag = arr[15];
  215. jsonTemp.UnitOfValuation = convertArrayNull(arr[35]);
  216. jsonTemp.StartDate = convertArrayNull(arr[46]);
  217. jsonTemp.EndDate = convertArrayNull(arr[47]);
  218. //jsonTemp.PinyinSearchCode = SpellCodeHelper.GetFirstPYLetter(arr[5]);
  219. jsonTemp.Instructions = arr[27];
  220. jsonTemp.ExceptContent = arr[63]; //生产国
  221. jsonTemp.Connotation = "";
  222. jsonTemp.ValidFlag = arr[67];
  223. jsonTemp.Note = arr[7];
  224. jsonTemp.VersionNO = arr[69];
  225. jsonTemp.VersionName = arr[70];
  226. jsonTemp.UseFlag = arr[67];
  227. jsonTemp.DrugSafetyStandardCode = "";
  228. jsonTemp.ApprovalNO = arr[50]; //注册备案号
  229. jsonTemp.SpecialFlag = "";
  230. jsonTemp.LimitFlag = convertArrayNull(arr[33]);
  231. jsonTemp.LimitRange = arr[34];
  232. jsonTemp.UniqueRecordNO = arr[68];
  233. jsonTemp.Manufacturers = arr[59];
  234. jsonTemp.ChargeItemLevelName = arr[37];
  235. if (jsonTemp.ChargeItemLevelName == "甲")
  236. {
  237. jsonTemp.ChargeItemLevel = "01";
  238. jsonTemp.SelfPercent = "0";
  239. }
  240. else if (jsonTemp.ChargeItemLevelName == "乙")
  241. {
  242. jsonTemp.ChargeItemLevel = "02";
  243. jsonTemp.SelfPercent = "0";
  244. }
  245. else if (jsonTemp.ChargeItemLevelName == "丙")
  246. {
  247. jsonTemp.ChargeItemLevel = "03";
  248. jsonTemp.SelfPercent = "100";
  249. }
  250. else
  251. {
  252. jsonTemp.ChargeItemLevel = "04";
  253. jsonTemp.SelfPercent = "100";
  254. jsonTemp.ChargeItemLevelName = "未知";
  255. }
  256. return jsonTemp;
  257. }
  258. /// <summary>
  259. /// 从TXT文件中获取诊断数据,并组装成JSON
  260. /// </summary>
  261. /// <param name="arr"></param>
  262. /// <returns></returns>
  263. private JObject GetDiagnoseJsonByTxt(string[] arr)
  264. {
  265. dynamic jsonTemp = new JObject();
  266. jsonTemp.ID = "";
  267. jsonTemp.updateUserID = Global.user.ID;
  268. jsonTemp.HospitalDr = Global.inf.hospitalDr;
  269. jsonTemp.InterfaceDr = Global.inf.interfaceDr;
  270. jsonTemp.Code = arr[10];
  271. jsonTemp.Name = arr[11];
  272. jsonTemp.HisType = "4";
  273. jsonTemp.HisTypeName = "诊断";
  274. jsonTemp.LocateCode = "";
  275. jsonTemp.LocateName = "";
  276. jsonTemp.DosageFormCode = "";
  277. jsonTemp.DosageFormName = "";
  278. jsonTemp.CategoryCode = "";
  279. jsonTemp.CategoryName = "";
  280. jsonTemp.Specification = "";
  281. jsonTemp.SpecificationCode = "";
  282. jsonTemp.UnitOfPackag = "";
  283. jsonTemp.UnitOfValuation = "";
  284. jsonTemp.StartDate = "";
  285. jsonTemp.EndDate = "";
  286. //jsonTemp.PinyinSearchCode = SpellCodeHelper.GetFirstPYLetter(arr[11]);
  287. jsonTemp.Instructions = "";
  288. jsonTemp.ExceptContent = "";
  289. jsonTemp.Connotation = "";
  290. jsonTemp.ValidFlag = arr[18];
  291. jsonTemp.Note = arr[17];
  292. jsonTemp.VersionNO = arr[22];
  293. jsonTemp.VersionName = arr[23];
  294. jsonTemp.UseFlag = arr[18];
  295. jsonTemp.DrugSafetyStandardCode = "";
  296. jsonTemp.ApprovalNO = "";
  297. jsonTemp.SpecialFlag = "";
  298. jsonTemp.LimitFlag = "";
  299. jsonTemp.LimitRange = "";
  300. jsonTemp.UniqueRecordNO = arr[19];
  301. jsonTemp.Manufacturers = "";
  302. return jsonTemp;
  303. }
  304. /// <summary>
  305. /// 慢性病
  306. /// </summary>
  307. /// <param name="arr"></param>
  308. /// <returns></returns>
  309. private JObject GetChronicDiseaseJsonByTxt(string[] arr)
  310. {
  311. dynamic jsonTemp = new JObject();
  312. jsonTemp.ID = "";
  313. jsonTemp.updateUserID = Global.user.ID;
  314. jsonTemp.HospitalDr = Global.inf.hospitalDr;
  315. jsonTemp.InterfaceDr = Global.inf.interfaceDr;
  316. jsonTemp.Code = arr[0];
  317. jsonTemp.Name = arr[1];
  318. jsonTemp.HisType = "6";
  319. jsonTemp.HisTypeName = "慢性病";
  320. jsonTemp.LocateCode = "";
  321. jsonTemp.LocateName = "";
  322. jsonTemp.DosageFormCode = "";
  323. jsonTemp.DosageFormName = "";
  324. jsonTemp.CategoryCode = arr[14];
  325. jsonTemp.CategoryName = arr[15];
  326. jsonTemp.Specification = "";
  327. jsonTemp.SpecificationCode = "";
  328. jsonTemp.UnitOfPackag = "";
  329. jsonTemp.UnitOfValuation = "";
  330. jsonTemp.StartDate = "";
  331. jsonTemp.EndDate = "";
  332. //jsonTemp.PinyinSearchCode = SpellCodeHelper.GetFirstPYLetter(arr[2]);
  333. jsonTemp.Instructions = "";
  334. jsonTemp.ExceptContent = "";
  335. jsonTemp.Connotation = arr[10];
  336. jsonTemp.ValidFlag = arr[5];
  337. jsonTemp.Note = arr[4];
  338. jsonTemp.VersionNO = arr[9];
  339. jsonTemp.VersionName = arr[11];
  340. jsonTemp.UseFlag = arr[5];
  341. jsonTemp.DrugSafetyStandardCode = "";
  342. jsonTemp.ApprovalNO = "";
  343. jsonTemp.SpecialFlag = "";
  344. jsonTemp.LimitFlag = "";
  345. jsonTemp.LimitRange = "";
  346. jsonTemp.UniqueRecordNO = arr[6];
  347. jsonTemp.Manufacturers = "";
  348. return jsonTemp;
  349. }
  350. /// <summary>
  351. /// 从TXT文件中获取手术数据,并组装成JSON
  352. /// </summary>
  353. /// <param name="arr"></param>
  354. /// <returns></returns>
  355. private JObject GetOperationJsonByTxt(string[] arr)
  356. {
  357. dynamic jsonTemp = new JObject();
  358. jsonTemp.ID = "";
  359. jsonTemp.updateUserID = Global.user.ID;
  360. jsonTemp.HospitalDr = Global.inf.hospitalDr;
  361. jsonTemp.InterfaceDr = Global.inf.interfaceDr;
  362. jsonTemp.Code = arr[10];
  363. jsonTemp.Name = arr[11];
  364. jsonTemp.HisType = "5";
  365. jsonTemp.HisTypeName = "手术";
  366. //jsonTemp.PinyinSearchCode = SpellCodeHelper.GetFirstPYLetter(arr[11]);
  367. jsonTemp.ValidFlag = arr[18];
  368. jsonTemp.Note = arr[17];
  369. jsonTemp.VersionNO = arr[22];
  370. jsonTemp.VersionName = arr[23];
  371. jsonTemp.UseFlag = arr[18];
  372. jsonTemp.UniqueRecordNO = arr[19];
  373. return jsonTemp;
  374. }
  375. /// <summary>
  376. /// DRGs
  377. /// </summary>
  378. /// <param name="arr"></param>
  379. /// <returns></returns>
  380. private JObject GetDRGsJsonByTxt(string[] arr)
  381. {
  382. dynamic jsonTemp = new JObject();
  383. jsonTemp.ID = "";
  384. jsonTemp.updateUserID = Global.user.ID;
  385. jsonTemp.HospitalDr = Global.inf.hospitalDr;
  386. jsonTemp.InterfaceDr = Global.inf.interfaceDr;
  387. jsonTemp.Code = arr[1];
  388. jsonTemp.Name = arr[2];
  389. jsonTemp.HisType = "7";
  390. jsonTemp.HisTypeName = "DRGs";
  391. jsonTemp.Connotation = arr[10];
  392. jsonTemp.Instructions = arr[3]; //适用手术操作代码
  393. jsonTemp.ExceptContent = arr[4]; //适用手术操作名称
  394. //jsonTemp.PinyinSearchCode = SpellCodeHelper.GetFirstPYLetter(arr[11]);
  395. jsonTemp.ValidFlag = arr[5];
  396. jsonTemp.Note = arr[11];
  397. jsonTemp.VersionNO = arr[9];
  398. jsonTemp.VersionName = arr[12];
  399. jsonTemp.UseFlag = arr[5];
  400. jsonTemp.UniqueRecordNO = arr[6];
  401. return jsonTemp;
  402. }
  403. private JObject GetDaySurgeryJsonByTxt(string[] arr)
  404. {
  405. dynamic jsonTemp = new JObject();
  406. jsonTemp.ID = "";
  407. jsonTemp.updateUserID = Global.user.ID;
  408. jsonTemp.HospitalDr = Global.inf.hospitalDr;
  409. jsonTemp.InterfaceDr = Global.inf.interfaceDr;
  410. jsonTemp.Code = arr[1];
  411. jsonTemp.Name = arr[2];
  412. jsonTemp.HisType = "8";
  413. jsonTemp.HisTypeName = "日间手术";
  414. jsonTemp.Connotation = arr[8];
  415. //jsonTemp.PinyinSearchCode = SpellCodeHelper.GetFirstPYLetter(arr[11]);
  416. jsonTemp.ValidFlag = arr[3];
  417. jsonTemp.Note = arr[9];
  418. jsonTemp.VersionNO = arr[7];
  419. jsonTemp.VersionName = arr[10];
  420. jsonTemp.UseFlag = arr[3];
  421. jsonTemp.UniqueRecordNO = arr[4];
  422. return jsonTemp;
  423. }
  424. /// <summary>
  425. /// 中药饮片
  426. /// </summary>
  427. /// <param name="arr"></param>
  428. /// <returns></returns>
  429. private JObject GetChineseDrugJsonByTxt(string[] arr)
  430. {
  431. dynamic jsonTemp = new JObject();
  432. jsonTemp.ID = "";
  433. jsonTemp.updateUserID = Global.user.ID;
  434. jsonTemp.HospitalDr = Global.inf.hospitalDr;
  435. jsonTemp.InterfaceDr = Global.inf.interfaceDr;
  436. jsonTemp.Code = arr[0];
  437. jsonTemp.Name = arr[1];
  438. jsonTemp.HisType = "10";
  439. jsonTemp.HisTypeName = "中药饮片";
  440. jsonTemp.Connotation = arr[8];
  441. //jsonTemp.PinyinSearchCode = SpellCodeHelper.GetFirstPYLetter(arr[11]);
  442. jsonTemp.ValidFlag = arr[3];
  443. jsonTemp.Note = arr[9];
  444. jsonTemp.VersionNO = arr[7];
  445. jsonTemp.VersionName = arr[10];
  446. jsonTemp.UseFlag = arr[3];
  447. jsonTemp.UniqueRecordNO = arr[4];
  448. return jsonTemp;
  449. }
  450. /// <summary>
  451. /// 医疗机构制剂
  452. /// </summary>
  453. /// <param name="arr"></param>
  454. /// <returns></returns>
  455. private JObject GetHosPreparationJsonByTxt(string[] arr)
  456. {
  457. dynamic jsonTemp = new JObject();
  458. jsonTemp.ID = "";
  459. jsonTemp.updateUserID = Global.user.ID;
  460. jsonTemp.HospitalDr = Global.inf.hospitalDr;
  461. jsonTemp.InterfaceDr = Global.inf.interfaceDr;
  462. jsonTemp.Code = arr[0];
  463. jsonTemp.Name = arr[1];
  464. jsonTemp.HisType = "11";
  465. jsonTemp.HisTypeName = "医疗机构制剂";
  466. jsonTemp.Connotation = arr[8];
  467. //jsonTemp.PinyinSearchCode = SpellCodeHelper.GetFirstPYLetter(arr[11]);
  468. jsonTemp.ValidFlag = arr[64];
  469. jsonTemp.Note = arr[9];
  470. jsonTemp.VersionNO = arr[70];
  471. jsonTemp.VersionName = arr[71];
  472. jsonTemp.UseFlag = arr[64];
  473. jsonTemp.UniqueRecordNO = arr[46]; //药品注册证号
  474. jsonTemp.Instructions = arr[77];
  475. jsonTemp.NationalCode = arr[57]; //国家医保药品目录编码
  476. jsonTemp.NationalName = arr[58]; //国家医保药品目录名称
  477. return jsonTemp;
  478. }
  479. public JObject importMedDataToIris(TradeEnum trade, JObject joRtn, Sunny.UI.UIProcessBar processBar)
  480. {
  481. string errorMsg = "";
  482. JObject dataRtn = Utils.ConvertResponse<JObject>(trade, joRtn, true);
  483. if (JsonHelper.parseCenterRtnValue(joRtn, out errorMsg) != 0)
  484. {
  485. return JsonHelper.setExceptionJson(-1, "下载目录信息失败", errorMsg);
  486. }
  487. JArray array = JArray.Parse(JsonHelper.getDestValue(dataRtn, "result"));
  488. foreach (var obj in array)
  489. {
  490. obj["updateUserID"]= Global.user.ID;
  491. obj["HospitalDr"] = Global.inf.hospitalDr;
  492. obj["InterfaceDr"] = Global.inf.interfaceDr;
  493. if (trade == TradeEnum.ICPC3Treatment)
  494. {
  495. obj["Code"] = obj["NationalCode"] + "-" + obj["Code"];
  496. }
  497. }
  498. int rows = array.Count;
  499. int size = 50;
  500. int pages = rows / size;
  501. processBar.Maximum = rows;
  502. for (int i = 0; i < pages; i++)
  503. {
  504. processBar.Value = (i + 1) * size;
  505. Application.DoEvents();
  506. //每50行提交一次给后台
  507. dynamic jaParams = array.ToList().GetRange(i * size, size).ToArray();
  508. applyDataToIris("09010035", JArray.Parse(JsonHelper.toJsonString(jaParams)));
  509. }
  510. processBar.Value = rows;
  511. Application.DoEvents();
  512. if (rows % size != 0)
  513. {
  514. dynamic jaParams = array.ToList().GetRange(pages * size, rows % size).ToArray();
  515. applyDataToIris("09010035", JArray.Parse(JsonHelper.toJsonString(jaParams)));
  516. }
  517. return JsonHelper.setIrisReturnValue(0, "成功", null);
  518. }
  519. /// <summary>
  520. /// 提交数据给IRIS
  521. /// </summary>
  522. /// <param name="code"></param>
  523. /// <param name="jaParam"></param>
  524. /// <returns></returns>
  525. private JObject applyDataToIris(string code, JArray jaParam)
  526. {
  527. JObject joIn = new JObject();
  528. JObject joRtn = new JObject();
  529. string outParam = "";
  530. try
  531. {
  532. joIn.Add(new JProperty("params", jaParam));
  533. joIn.Add("code", code);
  534. joIn.Add("updateUserID", Global.user.ID);
  535. InvokeHelper invoker = new InvokeHelper();
  536. string sInput = joIn.ToString();
  537. joRtn = invoker.invokeInsuService(sInput, "applyDataToIris");
  538. outParam = joRtn.ToString();
  539. return joRtn;
  540. }
  541. catch (Exception ex)
  542. {
  543. joRtn = JsonHelper.setExceptionJson(-1, "applyDataToIris", ex.Message);
  544. outParam = joRtn.ToString();
  545. return joRtn;
  546. }
  547. }
  548. /// <summary>
  549. /// 从TXT里导数据到IRIS
  550. /// </summary>
  551. /// <param name="txtPath"></param>
  552. /// <param name="singleRows"></param>
  553. /// <param name="direcType"></param>
  554. /// <param name="processBar"></param>
  555. /// <returns></returns>
  556. public JObject importDataToIrisByTxt(string txtPath, int size, int direcType, Sunny.UI.UIProcessBar processBar)
  557. {
  558. int errorCount = 0;
  559. string errorMsg = "";
  560. try
  561. {
  562. /*据说速度更快
  563. * https://www.cnblogs.com/eniac12/p/4398310.html
  564. * using (StreamReader sr = File.OpenText(fileName))
  565. {
  566. string s = String.Empty;
  567. while ((s = sr.ReadLine()) != null)
  568. {
  569. //do what you have to here
  570. }
  571. }
  572. Convert.ToString(a)
  573. */
  574. string[] lines = System.IO.File.ReadAllLines(txtPath);
  575. dynamic jaParams = new JArray();
  576. int rows = lines.Length;
  577. processBar.Maximum = rows;
  578. for (int i = 0; i < rows; i++)
  579. {
  580. processBar.Value = i + 1;
  581. Application.DoEvents();
  582. string lineTmp = lines[i];
  583. string[] arr = lineTmp.Split('\t');
  584. //判断是哪种目录类型
  585. string code = string.Empty;
  586. switch (direcType)
  587. {
  588. //药品
  589. case 1:
  590. {
  591. jaParams.Add(GetDrugsJsonByTxt(arr));
  592. break;
  593. }
  594. //诊疗
  595. case 2:
  596. {
  597. jaParams.Add(GetMedicalServiceJsonByTxt(arr));
  598. break;
  599. }
  600. //材料
  601. case 3:
  602. {
  603. jaParams.Add(GetMaterialJsonByTxt(arr));
  604. break;
  605. }
  606. //诊断
  607. case 4:
  608. {
  609. jaParams.Add(GetDiagnoseJsonByTxt(arr));
  610. break;
  611. }
  612. //手术
  613. case 5:
  614. {
  615. jaParams.Add(GetOperationJsonByTxt(arr));
  616. break;
  617. }
  618. //慢性病
  619. case 6:
  620. {
  621. jaParams.Add(GetChronicDiseaseJsonByTxt(arr));
  622. break;
  623. }
  624. //DRGs
  625. case 7:
  626. {
  627. jaParams.Add(GetDRGsJsonByTxt(arr));
  628. break;
  629. }
  630. //日间手术
  631. case 8:
  632. {
  633. jaParams.Add(GetDaySurgeryJsonByTxt(arr));
  634. break;
  635. }
  636. //中药饮片
  637. case 10:
  638. {
  639. jaParams.Add(GetChineseDrugJsonByTxt(arr));
  640. break;
  641. }
  642. //医疗机构制剂
  643. case 11:
  644. {
  645. jaParams.Add(GetHosPreparationJsonByTxt(arr));
  646. break;
  647. }
  648. }
  649. code = "09010035";
  650. //每10行提交一次给后台
  651. int currentRows = i + 1;
  652. if ((currentRows % size == 0) && (i != 0))
  653. {
  654. JObject joRtn = applyDataToIris(code, jaParams);
  655. if (joRtn["errorCode"].ToString() != "0")
  656. {
  657. errorCount = errorCount + 1;
  658. errorMsg = "\r\n" +errorMsg + joRtn["errorMessage"].ToString();
  659. }
  660. jaParams = new JArray();
  661. }
  662. if ((currentRows == rows) && (currentRows % size != 0))
  663. {
  664. JObject joRtn = applyDataToIris(code, jaParams);
  665. if (joRtn["errorCode"].ToString() != "0")
  666. {
  667. errorCount = errorCount + 1;
  668. errorMsg = "\r\n" + errorMsg + joRtn["errorMessage"].ToString();
  669. }
  670. jaParams = new JArray();
  671. }
  672. }
  673. return JsonHelper.setExceptionJson(0 - errorCount, errorMsg, null);
  674. }
  675. catch (Exception ex)
  676. {
  677. return JsonHelper.setExceptionJson(-1, "importDataToIrisByTxt", ex.Message);
  678. }
  679. }
  680. public JObject importDictionary(Sunny.UI.UIProcessBar uiProcessBar,JArray jaList,string type)
  681. {
  682. int errorCount = 0;
  683. string errorMsg = "",outParam = "", HBDictionaryDr ="";
  684. try
  685. {
  686. //插入并获取字典主表的DR
  687. JObject joData = new JObject();
  688. joData.Add("HospitalDr", Global.inf.hospitalDr);
  689. joData.Add("InterfaceDr", Global.inf.interfaceDr);
  690. joData.Add("InsuCode", type);
  691. JObject joRtn = mis.insertDictionary(joData);
  692. if (JsonHelper.parseIrisRtnValue(joRtn, out errorMsg) != 0)
  693. {
  694. return JsonHelper.setExceptionJson(-1, "insertDictionary", errorMsg);
  695. }
  696. else
  697. {
  698. HBDictionaryDr = JsonHelper.getDestValue(joRtn, "data.HBDictionaryDr");
  699. if (HBDictionaryDr == "")
  700. {
  701. return JsonHelper.setExceptionJson(-1, "insertDictionary", "HBDictionaryDr返回值为空");
  702. }
  703. }
  704. }
  705. catch (Exception ex)
  706. {
  707. return JsonHelper.setExceptionJson(-1, "insertDictionary", ex.Message);
  708. }
  709. JObject joReturn = new JObject();
  710. try
  711. {
  712. //插入字典明细表
  713. JArray jaParams = new JArray();
  714. int rows = jaList.Count ;
  715. uiProcessBar.Maximum = rows;
  716. for (int i = 0; i < jaList.Count ; i++)
  717. {
  718. uiProcessBar.Value = i + 1;
  719. dynamic joTmp = new JObject();
  720. joTmp.ID = "";
  721. joTmp.updateUserID = Global.user.ID;
  722. joTmp.HospitalDr = Global.inf.hospitalDr;
  723. joTmp.InterfaceDr = Global.inf.interfaceDr;
  724. joTmp.HBDictionaryDr = HBDictionaryDr;
  725. joTmp.Code = jaList[i]["value"].ToString();
  726. joTmp.Descripts = jaList[i]["label"].ToString();
  727. jaParams.Add(joTmp);
  728. //每50行提交一次给后台
  729. int currentRows = i + 1;
  730. if ((currentRows % 50 == 0) && (i != 0))
  731. {
  732. JObject joRtn = mis.insertDictionaryDataDetail(jaParams);
  733. if (joRtn["errorCode"].ToString() != "0")
  734. {
  735. errorCount = errorCount + 1;
  736. errorMsg = "\r\n" + errorMsg + joRtn["errorMessage"].ToString();
  737. }
  738. jaParams = new JArray();
  739. }
  740. if ((currentRows == rows) && (currentRows % 50 != 0))
  741. {
  742. JObject joRtn = mis.insertDictionaryDataDetail(jaParams);
  743. if (joRtn["errorCode"].ToString() != "0")
  744. {
  745. errorCount = errorCount + 1;
  746. errorMsg = "\r\n" + errorMsg + joRtn["errorMessage"].ToString();
  747. }
  748. jaParams = new JArray();
  749. }
  750. }
  751. joReturn = JsonHelper.setExceptionJson(0 - errorCount, errorMsg, null);
  752. outParam = joReturn.ToString();
  753. return joReturn;
  754. }
  755. catch (Exception ex)
  756. {
  757. joReturn = JsonHelper.setExceptionJson(-1, "importDictinary", ex.Message);
  758. outParam = joReturn.ToString();
  759. return joReturn;
  760. }
  761. }
  762. }
  763. }