DataImoport.cs 35 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938
  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 PTMedicalInsurance.Business;
  21. using PTMedicalInsurance.Forms.BasicDatas;
  22. using PTMedicalInsurance.Helper;
  23. using PTMedicalInsurance.Variables;
  24. using System;
  25. using System.Collections.Generic;
  26. using System.Linq;
  27. using System.Text;
  28. using System.Threading.Tasks;
  29. using System.Windows.Forms;
  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[2];
  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[0];
  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. /// <summary>
  480. /// 提交数据给IRIS
  481. /// </summary>
  482. /// <param name="code"></param>
  483. /// <param name="jaParam"></param>
  484. /// <returns></returns>
  485. private JObject applyDataToIris(string code, JArray jaParam)
  486. {
  487. JObject joIn = new JObject();
  488. JObject joRtn = new JObject();
  489. string outParam = "";
  490. try
  491. {
  492. joIn.Add(new JProperty("params", jaParam));
  493. joIn.Add("code", code);
  494. joIn.Add("updateUserID", Global.user.ID);
  495. InvokeHelper invoker = new InvokeHelper();
  496. string sInput = joIn.ToString();
  497. joRtn = invoker.invokeInsuService(sInput, "applyDataToIris");
  498. outParam = joRtn.ToString();
  499. return joRtn;
  500. }
  501. catch (Exception ex)
  502. {
  503. joRtn = JsonHelper.setExceptionJson(-1, "applyDataToIris", ex.Message);
  504. outParam = joRtn.ToString();
  505. return joRtn;
  506. }
  507. }
  508. /// <summary>
  509. /// 从TXT里导数据到IRIS
  510. /// </summary>
  511. /// <param name="txtPath"></param>
  512. /// <param name="singleRows"></param>
  513. /// <param name="direcType"></param>
  514. /// <param name="processBar"></param>
  515. /// <returns></returns>
  516. public JObject importDataToIrisByTxt(string txtPath, int size, int direcType, Sunny.UI.UIProcessBar processBar)
  517. {
  518. int errorCount = 0;
  519. string errorMsg = "";
  520. try
  521. {
  522. /*据说速度更快
  523. * https://www.cnblogs.com/eniac12/p/4398310.html
  524. * using (StreamReader sr = File.OpenText(fileName))
  525. {
  526. string s = String.Empty;
  527. while ((s = sr.ReadLine()) != null)
  528. {
  529. //do what you have to here
  530. }
  531. }
  532. Convert.ToString(a)
  533. */
  534. string[] lines = System.IO.File.ReadAllLines(txtPath);
  535. dynamic jaParams = new JArray();
  536. int rows = lines.Length;
  537. processBar.Maximum = rows;
  538. for (int i = 0; i < rows; i++)
  539. {
  540. processBar.Value = i + 1;
  541. Application.DoEvents();
  542. string lineTmp = lines[i];
  543. string[] arr = lineTmp.Split('\t');
  544. //判断是哪种目录类型
  545. string code = string.Empty;
  546. switch (direcType)
  547. {
  548. //药品
  549. case 1:
  550. {
  551. jaParams.Add(GetDrugsJsonByTxt(arr));
  552. break;
  553. }
  554. //诊疗
  555. case 2:
  556. {
  557. jaParams.Add(GetMedicalServiceJsonByTxt(arr));
  558. break;
  559. }
  560. //材料
  561. case 3:
  562. {
  563. jaParams.Add(GetMaterialJsonByTxt(arr));
  564. break;
  565. }
  566. //诊断
  567. case 4:
  568. {
  569. jaParams.Add(GetDiagnoseJsonByTxt(arr));
  570. break;
  571. }
  572. //手术
  573. case 5:
  574. {
  575. jaParams.Add(GetOperationJsonByTxt(arr));
  576. break;
  577. }
  578. //慢性病
  579. case 6:
  580. {
  581. jaParams.Add(GetChronicDiseaseJsonByTxt(arr));
  582. break;
  583. }
  584. //DRGs
  585. case 7:
  586. {
  587. jaParams.Add(GetDRGsJsonByTxt(arr));
  588. break;
  589. }
  590. //日间手术
  591. case 8:
  592. {
  593. jaParams.Add(GetDaySurgeryJsonByTxt(arr));
  594. break;
  595. }
  596. //中药饮片
  597. case 10:
  598. {
  599. jaParams.Add(GetChineseDrugJsonByTxt(arr));
  600. break;
  601. }
  602. //医疗机构制剂
  603. case 11:
  604. {
  605. jaParams.Add(GetHosPreparationJsonByTxt(arr));
  606. break;
  607. }
  608. }
  609. code = "09010035";
  610. //每50行提交一次给后台
  611. int currentRows = i + 1;
  612. if ((currentRows % size == 0) && (i != 0))
  613. {
  614. JObject joRtn = applyDataToIris(code, jaParams);
  615. if (joRtn["errorCode"].ToString() != "0")
  616. {
  617. errorCount = errorCount + 1;
  618. errorMsg = "\r\n" +errorMsg + joRtn["errorMessage"].ToString();
  619. }
  620. jaParams = new JArray();
  621. }
  622. if ((currentRows == rows) && (currentRows % size != 0))
  623. {
  624. JObject joRtn = applyDataToIris(code, jaParams);
  625. if (joRtn["errorCode"].ToString() != "0")
  626. {
  627. errorCount = errorCount + 1;
  628. errorMsg = "\r\n" + errorMsg + joRtn["errorMessage"].ToString();
  629. }
  630. jaParams = new JArray();
  631. }
  632. }
  633. return JsonHelper.setExceptionJson(0 - errorCount, errorMsg, null);
  634. }
  635. catch (Exception ex)
  636. {
  637. return JsonHelper.setExceptionJson(-1, "importDataToIrisByTxt", ex.Message);
  638. }
  639. }
  640. public int importDataToIrisByTxtNew(DataLoaderContext context, out string errMsg)
  641. {
  642. errMsg = "";
  643. int errorCount = 0;
  644. string errorMsg = "";
  645. try
  646. {
  647. object[] args = context.args;
  648. DirectoryDownloadContext directoryDownloadContext = (DirectoryDownloadContext)args[0];
  649. int size = directoryDownloadContext.size;
  650. int direcType = (int)directoryDownloadContext.category;
  651. string startVersion = directoryDownloadContext.startVersion;
  652. string[] lines = System.IO.File.ReadAllLines(directoryDownloadContext.txtPath);
  653. dynamic jaParams = new JArray();
  654. int rows = lines.Length;
  655. //设置最大值
  656. if (context.setProgressMaximum != null)
  657. {
  658. context.setProgressMaximum(rows);
  659. }
  660. string currentVersionName = directoryDownloadContext.startVersion;
  661. for (int i = 0; i < rows; i++)
  662. {
  663. // 检查是否应取消操作
  664. if (context.Worker.CancellationPending)
  665. {
  666. errMsg = "操作取消!";
  667. return -1; // 或者其他表示取消的返回值
  668. }
  669. //步进
  670. if (context.reportProgress != null)
  671. {
  672. context.reportProgress(i + 1);
  673. }
  674. string lineTmp = lines[i];
  675. string[] arr = lineTmp.Split('\t');
  676. //判断是哪种目录类型
  677. string code = string.Empty;
  678. JObject joParam = new JObject();
  679. switch (direcType)
  680. {
  681. //药品
  682. case 1:
  683. {
  684. joParam = GetDrugsJsonByTxt(arr);
  685. break;
  686. }
  687. //诊疗
  688. case 2:
  689. {
  690. joParam = GetMedicalServiceJsonByTxt(arr);
  691. break;
  692. }
  693. //材料
  694. case 3:
  695. {
  696. joParam = GetMaterialJsonByTxt(arr);
  697. break;
  698. }
  699. //诊断
  700. case 4:
  701. {
  702. joParam = GetDiagnoseJsonByTxt(arr);
  703. break;
  704. }
  705. //手术
  706. case 5:
  707. {
  708. joParam = GetOperationJsonByTxt(arr);
  709. break;
  710. }
  711. //慢性病
  712. case 6:
  713. {
  714. joParam = GetChronicDiseaseJsonByTxt(arr);
  715. break;
  716. }
  717. //DRGs
  718. case 7:
  719. {
  720. joParam = GetDRGsJsonByTxt(arr);
  721. break;
  722. }
  723. //日间手术
  724. case 8:
  725. {
  726. joParam = GetDaySurgeryJsonByTxt(arr);
  727. break;
  728. }
  729. //中药饮片
  730. case 10:
  731. {
  732. joParam = GetChineseDrugJsonByTxt(arr);
  733. break;
  734. }
  735. //医疗机构制剂
  736. case 11:
  737. {
  738. joParam = GetHosPreparationJsonByTxt(arr);
  739. break;
  740. }
  741. }
  742. currentVersionName = JsonHelper.getDestValue(joParam, "VersionName");
  743. //设置标题
  744. string header = $"本次下载总条数【{rows}】,起始版本名称【{startVersion}】,当前版本名称【{currentVersionName}】";
  745. if (context.setProgressHeaderText != null)
  746. {
  747. context.setProgressHeaderText(directoryDownloadContext.progressBarStyle, header, directoryDownloadContext.speed);
  748. }
  749. jaParams.Add(joParam);
  750. code = "09010035";
  751. //每50行提交一次给后台
  752. int currentRows = i + 1;
  753. if ((currentRows % size == 0) && (i != 0))
  754. {
  755. JObject joRtn = applyDataToIris(code, jaParams);
  756. if (joRtn["errorCode"].ToString() != "0")
  757. {
  758. errorCount = errorCount + 1;
  759. errorMsg = "\r\n" + errorMsg + joRtn["errorMessage"].ToString();
  760. }
  761. jaParams = new JArray();
  762. }
  763. if ((currentRows == rows) && (currentRows % size != 0))
  764. {
  765. JObject joRtn = applyDataToIris(code, jaParams);
  766. if (joRtn["errorCode"].ToString() != "0")
  767. {
  768. errorCount = errorCount + 1;
  769. errorMsg = "\r\n" + errorMsg + joRtn["errorMessage"].ToString();
  770. }
  771. jaParams = new JArray();
  772. }
  773. }
  774. directoryDownloadContext.startVersion = currentVersionName;
  775. return 0 - errorCount;
  776. }
  777. catch (Exception ex)
  778. {
  779. errMsg = ex.Message;
  780. return -9999;
  781. }
  782. }
  783. public JObject importDictionary(Sunny.UI.UIProcessBar uiProcessBar,JArray jaList,string type)
  784. {
  785. int errorCount = 0;
  786. string errorMsg = "",outParam = "", HBDictionaryDr ="";
  787. try
  788. {
  789. //插入并获取字典主表的DR
  790. JObject joData = new JObject();
  791. joData.Add("HospitalDr", Global.inf.hospitalDr);
  792. joData.Add("InterfaceDr", Global.inf.interfaceDr);
  793. joData.Add("InsuCode", type);
  794. JObject joRtn = mis.insertDictionary(joData);
  795. if (JsonHelper.parseIrisRtnValue(joRtn, out errorMsg) != 0)
  796. {
  797. return JsonHelper.setExceptionJson(-1, "insertDictionary", errorMsg);
  798. }
  799. else
  800. {
  801. HBDictionaryDr = JsonHelper.getDestValue(joRtn, "data.HBDictionaryDr");
  802. if (HBDictionaryDr == "")
  803. {
  804. return JsonHelper.setExceptionJson(-1, "insertDictionary", "HBDictionaryDr返回值为空");
  805. }
  806. }
  807. }
  808. catch (Exception ex)
  809. {
  810. return JsonHelper.setExceptionJson(-1, "insertDictionary", ex.Message);
  811. }
  812. JObject joReturn = new JObject();
  813. try
  814. {
  815. //插入字典明细表
  816. JArray jaParams = new JArray();
  817. int rows = jaList.Count ;
  818. uiProcessBar.Maximum = rows;
  819. for (int i = 0; i < jaList.Count ; i++)
  820. {
  821. uiProcessBar.Value = i + 1;
  822. dynamic joTmp = new JObject();
  823. joTmp.ID = "";
  824. joTmp.updateUserID = Global.user.ID;
  825. joTmp.HospitalDr = Global.inf.hospitalDr;
  826. joTmp.InterfaceDr = Global.inf.interfaceDr;
  827. joTmp.HBDictionaryDr = HBDictionaryDr;
  828. joTmp.Code = jaList[i]["value"].ToString();
  829. joTmp.Descripts = jaList[i]["label"].ToString();
  830. jaParams.Add(joTmp);
  831. //每50行提交一次给后台
  832. int currentRows = i + 1;
  833. if ((currentRows % 50 == 0) && (i != 0))
  834. {
  835. JObject joRtn = mis.insertDictionaryDataDetail(jaParams);
  836. if (joRtn["errorCode"].ToString() != "0")
  837. {
  838. errorCount = errorCount + 1;
  839. errorMsg = "\r\n" + errorMsg + joRtn["errorMessage"].ToString();
  840. }
  841. jaParams = new JArray();
  842. }
  843. if ((currentRows == rows) && (currentRows % 50 != 0))
  844. {
  845. JObject joRtn = mis.insertDictionaryDataDetail(jaParams);
  846. if (joRtn["errorCode"].ToString() != "0")
  847. {
  848. errorCount = errorCount + 1;
  849. errorMsg = "\r\n" + errorMsg + joRtn["errorMessage"].ToString();
  850. }
  851. jaParams = new JArray();
  852. }
  853. }
  854. joReturn = JsonHelper.setExceptionJson(0 - errorCount, errorMsg, null);
  855. outParam = joReturn.ToString();
  856. return joReturn;
  857. }
  858. catch (Exception ex)
  859. {
  860. joReturn = JsonHelper.setExceptionJson(-1, "importDictinary", ex.Message);
  861. outParam = joReturn.ToString();
  862. return joReturn;
  863. }
  864. }
  865. }
  866. }