DataImoport.cs 34 KB

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