DataImoport.cs 32 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837
  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. if (array.Count < 2) {
  489. return JsonHelper.setIrisReturnValue(-1, "没有更多的数据了!", null);
  490. }
  491. foreach (var obj in array)
  492. {
  493. obj["updateUserID"]= Global.user.ID;
  494. obj["HospitalDr"] = Global.inf.hospitalDr;
  495. obj["InterfaceDr"] = Global.inf.interfaceDr;
  496. if (string.IsNullOrEmpty(obj["Name"].Text()) && !string.IsNullOrEmpty(obj["LocateName"].Text()))
  497. {
  498. obj["Name"] = obj["LocateName"];
  499. }
  500. if (trade == TradeEnum.ICPC3Treatment)
  501. {
  502. if (string.IsNullOrEmpty(obj["Code"].Text()))
  503. {
  504. obj["Code"] = obj["NationalCode"];
  505. }
  506. else
  507. {
  508. obj["Code"] = obj["NationalCode"] + "-" + obj["Code"];
  509. }
  510. }
  511. }
  512. int rows = array.Count;
  513. int size = 50;
  514. int pages = rows / size;
  515. processBar.Maximum = rows;
  516. for (int i = 0; i < pages; i++)
  517. {
  518. processBar.Value = (i + 1) * size;
  519. Application.DoEvents();
  520. //每50行提交一次给后台
  521. dynamic jaParams = array.ToList().GetRange(i * size, size).ToArray();
  522. applyDataToIris("09010035", JArray.Parse(JsonHelper.toJsonString(jaParams)));
  523. }
  524. processBar.Value = rows;
  525. Application.DoEvents();
  526. if (rows % size != 0)
  527. {
  528. dynamic jaParams = array.ToList().GetRange(pages * size, rows % size).ToArray();
  529. applyDataToIris("09010035", JArray.Parse(JsonHelper.toJsonString(jaParams)));
  530. }
  531. return JsonHelper.setIrisReturnValue(0, "成功", null);
  532. }
  533. /// <summary>
  534. /// 提交数据给IRIS
  535. /// </summary>
  536. /// <param name="code"></param>
  537. /// <param name="jaParam"></param>
  538. /// <returns></returns>
  539. private JObject applyDataToIris(string code, JArray jaParam)
  540. {
  541. JObject joIn = new JObject();
  542. JObject joRtn = new JObject();
  543. string outParam = "";
  544. try
  545. {
  546. joIn.Add(new JProperty("params", jaParam));
  547. joIn.Add("code", code);
  548. joIn.Add("updateUserID", Global.user.ID);
  549. InvokeHelper invoker = new InvokeHelper();
  550. string sInput = joIn.ToString();
  551. joRtn = invoker.invokeInsuService(sInput, "applyDataToIris");
  552. outParam = joRtn.ToString();
  553. return joRtn;
  554. }
  555. catch (Exception ex)
  556. {
  557. joRtn = JsonHelper.setExceptionJson(-1, "applyDataToIris", ex.Message);
  558. outParam = joRtn.ToString();
  559. return joRtn;
  560. }
  561. }
  562. /// <summary>
  563. /// 从TXT里导数据到IRIS
  564. /// </summary>
  565. /// <param name="txtPath"></param>
  566. /// <param name="singleRows"></param>
  567. /// <param name="direcType"></param>
  568. /// <param name="processBar"></param>
  569. /// <returns></returns>
  570. public JObject importDataToIrisByTxt(string txtPath, int size, int direcType, Sunny.UI.UIProcessBar processBar)
  571. {
  572. int errorCount = 0;
  573. string errorMsg = "";
  574. try
  575. {
  576. /*据说速度更快
  577. * https://www.cnblogs.com/eniac12/p/4398310.html
  578. * using (StreamReader sr = File.OpenText(fileName))
  579. {
  580. string s = String.Empty;
  581. while ((s = sr.ReadLine()) != null)
  582. {
  583. //do what you have to here
  584. }
  585. }
  586. Convert.ToString(a)
  587. */
  588. string[] lines = System.IO.File.ReadAllLines(txtPath);
  589. dynamic jaParams = new JArray();
  590. int rows = lines.Length;
  591. processBar.Maximum = rows;
  592. for (int i = 0; i < rows; i++)
  593. {
  594. processBar.Value = i + 1;
  595. Application.DoEvents();
  596. string lineTmp = lines[i];
  597. string[] arr = lineTmp.Split('\t');
  598. //判断是哪种目录类型
  599. string code = string.Empty;
  600. switch (direcType)
  601. {
  602. //药品
  603. case 1:
  604. {
  605. jaParams.Add(GetDrugsJsonByTxt(arr));
  606. break;
  607. }
  608. //诊疗
  609. case 2:
  610. {
  611. jaParams.Add(GetMedicalServiceJsonByTxt(arr));
  612. break;
  613. }
  614. //材料
  615. case 3:
  616. {
  617. jaParams.Add(GetMaterialJsonByTxt(arr));
  618. break;
  619. }
  620. //诊断
  621. case 4:
  622. {
  623. jaParams.Add(GetDiagnoseJsonByTxt(arr));
  624. break;
  625. }
  626. //手术
  627. case 5:
  628. {
  629. jaParams.Add(GetOperationJsonByTxt(arr));
  630. break;
  631. }
  632. //慢性病
  633. case 6:
  634. {
  635. jaParams.Add(GetChronicDiseaseJsonByTxt(arr));
  636. break;
  637. }
  638. //DRGs
  639. case 7:
  640. {
  641. jaParams.Add(GetDRGsJsonByTxt(arr));
  642. break;
  643. }
  644. //日间手术
  645. case 8:
  646. {
  647. jaParams.Add(GetDaySurgeryJsonByTxt(arr));
  648. break;
  649. }
  650. //中药饮片
  651. case 10:
  652. {
  653. jaParams.Add(GetChineseDrugJsonByTxt(arr));
  654. break;
  655. }
  656. //医疗机构制剂
  657. case 11:
  658. {
  659. jaParams.Add(GetHosPreparationJsonByTxt(arr));
  660. break;
  661. }
  662. }
  663. code = "09010035";
  664. //每10行提交一次给后台
  665. int currentRows = i + 1;
  666. if ((currentRows % size == 0) && (i != 0))
  667. {
  668. JObject joRtn = applyDataToIris(code, jaParams);
  669. if (joRtn["errorCode"].ToString() != "0")
  670. {
  671. errorCount = errorCount + 1;
  672. errorMsg = "\r\n" +errorMsg + joRtn["errorMessage"].ToString();
  673. }
  674. jaParams = new JArray();
  675. }
  676. if ((currentRows == rows) && (currentRows % size != 0))
  677. {
  678. JObject joRtn = applyDataToIris(code, jaParams);
  679. if (joRtn["errorCode"].ToString() != "0")
  680. {
  681. errorCount = errorCount + 1;
  682. errorMsg = "\r\n" + errorMsg + joRtn["errorMessage"].ToString();
  683. }
  684. jaParams = new JArray();
  685. }
  686. }
  687. return JsonHelper.setExceptionJson(0 - errorCount, errorMsg, null);
  688. }
  689. catch (Exception ex)
  690. {
  691. return JsonHelper.setExceptionJson(-1, "importDataToIrisByTxt", ex.Message);
  692. }
  693. }
  694. public JObject importDictionary(Sunny.UI.UIProcessBar uiProcessBar,JArray jaList,string type)
  695. {
  696. int errorCount = 0;
  697. string errorMsg = "",outParam = "", HBDictionaryDr ="";
  698. try
  699. {
  700. //插入并获取字典主表的DR
  701. JObject joData = new JObject();
  702. joData.Add("HospitalDr", Global.inf.hospitalDr);
  703. joData.Add("InterfaceDr", Global.inf.interfaceDr);
  704. joData.Add("InsuCode", type);
  705. JObject joRtn = mis.insertDictionary(joData);
  706. if (JsonHelper.parseIrisRtnValue(joRtn, out errorMsg) != 0)
  707. {
  708. return JsonHelper.setExceptionJson(-1, "insertDictionary", errorMsg);
  709. }
  710. else
  711. {
  712. HBDictionaryDr = JsonHelper.getDestValue(joRtn, "data.HBDictionaryDr");
  713. if (HBDictionaryDr == "")
  714. {
  715. return JsonHelper.setExceptionJson(-1, "insertDictionary", "HBDictionaryDr返回值为空");
  716. }
  717. }
  718. }
  719. catch (Exception ex)
  720. {
  721. return JsonHelper.setExceptionJson(-1, "insertDictionary", ex.Message);
  722. }
  723. JObject joReturn = new JObject();
  724. try
  725. {
  726. //插入字典明细表
  727. JArray jaParams = new JArray();
  728. int rows = jaList.Count ;
  729. uiProcessBar.Maximum = rows;
  730. for (int i = 0; i < jaList.Count ; i++)
  731. {
  732. uiProcessBar.Value = i + 1;
  733. dynamic joTmp = new JObject();
  734. joTmp.ID = "";
  735. joTmp.updateUserID = Global.user.ID;
  736. joTmp.HospitalDr = Global.inf.hospitalDr;
  737. joTmp.InterfaceDr = Global.inf.interfaceDr;
  738. joTmp.HBDictionaryDr = HBDictionaryDr;
  739. joTmp.Code = jaList[i]["value"].ToString();
  740. joTmp.Descripts = jaList[i]["label"].ToString();
  741. jaParams.Add(joTmp);
  742. //每50行提交一次给后台
  743. int currentRows = i + 1;
  744. if ((currentRows % 50 == 0) && (i != 0))
  745. {
  746. JObject joRtn = mis.insertDictionaryDataDetail(jaParams);
  747. if (joRtn["errorCode"].ToString() != "0")
  748. {
  749. errorCount = errorCount + 1;
  750. errorMsg = "\r\n" + errorMsg + joRtn["errorMessage"].ToString();
  751. }
  752. jaParams = new JArray();
  753. }
  754. if ((currentRows == rows) && (currentRows % 50 != 0))
  755. {
  756. JObject joRtn = mis.insertDictionaryDataDetail(jaParams);
  757. if (joRtn["errorCode"].ToString() != "0")
  758. {
  759. errorCount = errorCount + 1;
  760. errorMsg = "\r\n" + errorMsg + joRtn["errorMessage"].ToString();
  761. }
  762. jaParams = new JArray();
  763. }
  764. }
  765. joReturn = JsonHelper.setExceptionJson(0 - errorCount, errorMsg, null);
  766. outParam = joReturn.ToString();
  767. return joReturn;
  768. }
  769. catch (Exception ex)
  770. {
  771. joReturn = JsonHelper.setExceptionJson(-1, "importDictinary", ex.Message);
  772. outParam = joReturn.ToString();
  773. return joReturn;
  774. }
  775. }
  776. }
  777. }