DataImoport.cs 29 KB

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