DirectoryMap.cs 34 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860
  1. 
  2. using Newtonsoft.Json.Linq;
  3. using PTMedicalInsurance.Business;
  4. using PTMedicalInsurance.Common;
  5. using PTMedicalInsurance.Forms.BasicDatas.services;
  6. using PTMedicalInsurance.Helper;
  7. using PTMedicalInsurance.Variables;
  8. using Sunny.UI;
  9. using System;
  10. using System.Collections.Generic;
  11. using System.ComponentModel;
  12. using System.Data;
  13. using System.Drawing;
  14. using System.IO;
  15. using System.Linq;
  16. using System.Reflection;
  17. using System.Text;
  18. using System.Threading.Tasks;
  19. using System.Windows.Forms;
  20. using DataTable = System.Data.DataTable;
  21. using Global = PTMedicalInsurance.Variables.Global;
  22. namespace PTMedicalInsurance.Forms.BasicDatas
  23. {
  24. public partial class DirectoryMap : Form
  25. {
  26. private Form mainForm;
  27. MIIrisServices mIS = new MIIrisServices();
  28. private HisDirectoryCategoryEnum hisDirectoryCategory;
  29. private MapFlagEnum mapFlag;
  30. private int pageSize = 50;
  31. private int currentPage = 1;
  32. private string sortColumn = "Code";
  33. private DirectoryMapService directoryMapService = new DirectoryMapService();
  34. private GridViewSetter gvdSetter = new GridViewSetter();
  35. private string errMsg;
  36. private string directoryCategoryDesc; //目录大类中文说明,配合目录导出使用
  37. private string mapFlagDesc; //对照标志中文说明,配合目录导出使用
  38. public DirectoryMap()
  39. {
  40. InitializeComponent();
  41. }
  42. public DirectoryMap(Form frm)
  43. {
  44. InitializeComponent();
  45. InitForm(frm);
  46. }
  47. /// <summary>
  48. /// 标题设置映射字典
  49. /// </summary>
  50. private Dictionary<HisDirectoryCategoryEnum, string> miDirHeaderTextJsonFileMap = new Dictionary<HisDirectoryCategoryEnum, string>
  51. {
  52. { HisDirectoryCategoryEnum.none, "Map_MiDir_Default.json" }, //对照界面中心目录药品
  53. { HisDirectoryCategoryEnum.drugs, "Map_MiDir_Drug.json" }, //对照界面中心目录药品
  54. { HisDirectoryCategoryEnum.diagnosi, "Map_MiDir_MedicalService.json" },//对照界面中心目录诊疗
  55. { HisDirectoryCategoryEnum.consumables, "Map_MiDir_Consumables.json" },//对照界面中心目录材料
  56. };
  57. /// <summary>
  58. /// 标题设置映射字典
  59. /// </summary>
  60. private Dictionary<HisDirectoryCategoryEnum, string> hisDirHeaderTextJsonFileMap = new Dictionary<HisDirectoryCategoryEnum, string>
  61. {
  62. { HisDirectoryCategoryEnum.none, "Map_HisDir_Default.json" }, //对照界面中心目录药品
  63. { HisDirectoryCategoryEnum.drugs, "Map_HisDir_Drug.json" }, //对照界面HIS目录药品
  64. { HisDirectoryCategoryEnum.diagnosi, "Map_HisDir_MedicalService.json" },//对照界面HIS目录诊疗
  65. { HisDirectoryCategoryEnum.consumables, "Map_HisDir_Consumables.json" },//对照界面HIS目录材料
  66. };
  67. private void InitForm(Form frm)
  68. {
  69. mainForm = frm;
  70. CheckForIllegalCrossThreadCalls = false;
  71. // 禁用关闭按钮
  72. this.FormBorderStyle = FormBorderStyle.None;
  73. // 隐藏标题栏
  74. this.ControlBox = false;
  75. // 其他可能需要的配置
  76. this.TopLevel = false;
  77. this.Dock = DockStyle.Fill; // 根据需要设置 Dock 属性
  78. //
  79. rbgDirecType_C.SelectedIndex = 0;
  80. rbOnlyName.Checked = rbAll.Checked = true;
  81. //
  82. gvdSetter.SetHeaderTextOfMapping_HisDirectory(dgvHISDirectory);
  83. //
  84. dgvCenterDirectory.DataError += directoryMapService.dataGridView_DataError;
  85. }
  86. #region
  87. #region 控件设置
  88. private void SetHisDirectoryCategory()
  89. {
  90. switch (rbgDirecType_C.SelectedIndex)
  91. {
  92. case 0:
  93. hisDirectoryCategory = HisDirectoryCategoryEnum.drugs;
  94. directoryCategoryDesc = "药品";
  95. break;
  96. case 1:
  97. hisDirectoryCategory = HisDirectoryCategoryEnum.diagnosi;
  98. directoryCategoryDesc = "诊疗";
  99. break;
  100. case 2:
  101. hisDirectoryCategory = HisDirectoryCategoryEnum.consumables;
  102. directoryCategoryDesc = "材料";
  103. break;
  104. default:
  105. hisDirectoryCategory = HisDirectoryCategoryEnum.none;
  106. break;
  107. }
  108. }
  109. private void SetMapFlag()
  110. {
  111. if (rbAll.Checked)
  112. {
  113. mapFlag = MapFlagEnum.All;
  114. mapFlagDesc = "全部";
  115. sortColumn = "Code";
  116. }
  117. else if (rbMaped.Checked)
  118. {
  119. mapFlag = MapFlagEnum.Mapped;
  120. mapFlagDesc = "已对照";
  121. sortColumn = "HisCode";
  122. }
  123. else if (rbNoMaped.Checked)
  124. {
  125. mapFlag = MapFlagEnum.NoMapped;
  126. mapFlagDesc = "未对照";
  127. sortColumn = "Code";
  128. }
  129. else
  130. {
  131. mapFlag = MapFlagEnum.None;
  132. mapFlagDesc = "未知";
  133. sortColumn = "Code";
  134. }
  135. }
  136. #endregion
  137. #region 获取入参
  138. private JObject GetHisDirInput()
  139. {
  140. JArray jaPagination = new JArray();
  141. JArray jaParams = new JArray();
  142. string flag = "All";
  143. dynamic joParam = new JObject();
  144. joParam.code = "";
  145. joParam.descripts = "";
  146. joParam.FindType = new JArray();
  147. joParam.TypeID = "";
  148. joParam.alias = tbHISDirectoryFilter.Text;
  149. joParam.include = "Hosp";
  150. joParam.groupID = "324";
  151. joParam.hospID = Global.inf.hisHospitalDr;
  152. joParam.interfaceDr = Global.inf.interfaceDr;
  153. joParam.type = hisDirectoryCategory.ToString() ;
  154. joParam.flag = mapFlag.ToString();
  155. joParam.specInput = txtSpecFilter.Text.Trim();
  156. jaParams.Add(joParam);
  157. dynamic joPagination = new JObject();
  158. joPagination.pageSize = pageSize;
  159. //joPagination.pageSize = 2;
  160. joPagination.currentPage = currentPage;
  161. joPagination.sortColumn = sortColumn;
  162. joPagination.sortOrder = "asc";
  163. jaPagination.Add(joPagination);
  164. JObject joRtn = new JObject();
  165. joRtn.Add("params", jaParams);
  166. joRtn.Add("pagination",jaPagination);
  167. return joRtn;
  168. }
  169. private JObject GetInsuDirInput()
  170. {
  171. JObject joInput = new JObject {
  172. { "currentPage" , currentPage },
  173. { "pageSize" , pageSize },
  174. { "serviceCode" , "09010042" },
  175. { "directoryType" , (int)hisDirectoryCategory },
  176. { "directoryCode" , tbInsuCode.Text },
  177. { "directoryName" , tbCenterDirectoryFilter.Text },
  178. { "approvalNO" , tbApprovalNO.Text },
  179. { "dosageForm" , tbDosageForm.Text },
  180. { "specifications" , tbSpecifications.Text },
  181. { "manufacturers" , tbManufacturer.Text },
  182. { "directoryDr" , Global.inf.interfaceDr }
  183. };
  184. return joInput;
  185. }
  186. /// <summary>
  187. /// 获取更新医保信息的入参
  188. /// </summary>
  189. /// <param name="Index"></param>
  190. /// <param name="frm"></param>
  191. /// <param name="trade"></param>
  192. /// <returns></returns>
  193. private JObject GetUpdateInsuInfoInput(int Index, UpdateDirecotryCondition frm, out TradeEnum trade)
  194. {
  195. trade = TradeEnum.MedicalServiceDirectory;
  196. dynamic joData = new JObject();
  197. switch (Index)
  198. {
  199. case 14://民族药品目
  200. {
  201. trade = TradeEnum.NationalityDrug;
  202. joData.med_list_codg = frm.Code; //医疗目录编码
  203. joData.genname_codg = ""; //通用名编号
  204. joData.drug_genname = ""; //药品通用名
  205. joData.drug_prodname = frm.Desc; //药品商品名
  206. joData.reg_name = ""; //注册名称
  207. joData.tcmherb_name = ""; //中草药名称
  208. joData.mlms_name = ""; //药材名称
  209. joData.vali_flag = ""; //有效标志
  210. joData.rid = ""; //唯一记录号
  211. joData.ver = ""; //版本号
  212. joData.ver_name = ""; //版本名称
  213. joData.opt_begn_time = ""; //经办开始时间
  214. joData.opt_end_time = ""; //经办结束时间
  215. joData.updt_time = frm.UpdateTime; //更新时间
  216. joData.page_num = frm.CurrentPage; //当前页数
  217. joData.page_size = frm.PageSize; //本页数据量
  218. break;
  219. }
  220. case 15://目录信息查询
  221. {
  222. trade = TradeEnum.InsuDirectory;
  223. joData.query_date = ""; //查询时间点
  224. joData.hilist_code = frm.Code; //医保目录编码
  225. joData.insu_admdvs = frm.InsuAdmDvs; //参保机构医保区划
  226. joData.begndate = ""; //开始日期
  227. joData.hilist_name = frm.Desc; //医保目录名称
  228. joData.wubi = ""; //五笔助记码
  229. joData.pinyin = ""; //拼音助记码
  230. joData.med_chrgitm_type = ""; //医疗收费项目类别
  231. joData.chrgitm_lv = ""; //收费项目等级
  232. joData.lmt_used_flag = ""; //限制使用标志
  233. joData.list_type = ""; //目录类别
  234. joData.med_use_flag = ""; //医疗使用标志
  235. joData.matn_used_flag = ""; //生育使用标志
  236. joData.hilist_use_type = ""; //医保目录使用类别
  237. joData.lmt_cpnd_type = ""; //限复方使用类型
  238. joData.vali_flag = ""; //有效标志
  239. joData.updt_time = frm.UpdateTime; //更新时间
  240. joData.page_num = frm.CurrentPage; //当前页数
  241. joData.page_size = frm.PageSize; //本页数据量
  242. break;
  243. }
  244. case 16://医疗与医保目录匹配
  245. {
  246. trade = TradeEnum.MedicalAndInsuDirectory;
  247. joData.query_date = ""; //查询时间点
  248. joData.medins_list_codg = ""; //定点医药机构目录编号
  249. joData.hilist_code = frm.Code; //医保目录编码
  250. joData.list_type = ""; //目录类别
  251. joData.insu_admdvs = frm.InsuAdmDvs; //参保机构医保区划
  252. joData.begndate = ""; //开始日期
  253. joData.vali_flag = ""; //有效标志
  254. joData.updt_time = frm.UpdateTime; //更新时间
  255. joData.page_num = frm.CurrentPage; //当前页数
  256. joData.page_size = frm.PageSize; //本页数据量
  257. break;
  258. }
  259. case 17://医药机构目录匹配
  260. {
  261. trade = TradeEnum.MedcineOrgDirectory;
  262. joData.query_date = ""; //查询时间点
  263. joData.fixmedins_code = ""; //定点医药机构编号
  264. joData.medins_list_codg = ""; //定点医药机构目录编号
  265. joData.medins_list_name = ""; //定点医药机构目录名称
  266. joData.insu_admdvs = frm.InsuAdmDvs; //参保机构医保区划
  267. joData.list_type = ""; //目录类别
  268. joData.med_list_codg = frm.Code; //医疗目录编码
  269. joData.begndate = ""; //开始日期
  270. joData.vali_flag = ""; //有效标志
  271. joData.updt_time = frm.UpdateTime; //更新时间
  272. joData.page_num = frm.CurrentPage; //当前页数
  273. joData.page_size = frm.PageSize; //本页数据量
  274. break;
  275. }
  276. case 18://医保目录限价
  277. {
  278. trade = TradeEnum.InsuPriceLimitDirectory;
  279. joData.query_date = ""; //查询时间点
  280. joData.hilist_code = frm.Code; //医保目录编码
  281. joData.hilist_lmtpric_type = ""; //医保目录限价类型
  282. joData.overlmt_dspo_way = ""; //医保目录超限处理方式
  283. joData.insu_admdvs = frm.InsuAdmDvs; //参保机构医保区划
  284. joData.begndate = ""; //开始日期
  285. joData.enddate = ""; //结束日期
  286. joData.vali_flag = ""; //有效标志
  287. joData.rid = ""; //唯一记录号
  288. joData.tabname = ""; //表名
  289. joData.poolarea_no = ""; //统筹区
  290. joData.updt_time = frm.UpdateTime; //更新时间
  291. joData.page_num = frm.CurrentPage; //当前页数
  292. joData.page_size = frm.PageSize; //本页数据量
  293. break;
  294. }
  295. case 19://医保目录先自付比例
  296. {
  297. trade = TradeEnum.PrepayPercentDirectory;
  298. joData.query_date = ""; //查询时间点
  299. joData.hilist_code = frm.Code; //医保目录编码
  300. joData.selfpay_prop_psn_type = "";//医保目录自付比例人员类别
  301. joData.selfpay_prop_type = ""; //目录自付比例类别
  302. joData.insu_admdvs = frm.InsuAdmDvs; //参保机构医保区划
  303. joData.begndate = ""; //开始日期
  304. joData.enddate = ""; //结束日期
  305. joData.vali_flag = ""; //有效标志
  306. joData.rid = ""; //唯一记录号
  307. joData.tabname = ""; //表名
  308. joData.poolarea_no = ""; //统筹区
  309. joData.updt_time = frm.UpdateTime; //更新时间
  310. joData.page_num = frm.CurrentPage; //当前页数
  311. joData.page_size = frm.PageSize; //本页数据量
  312. break;
  313. }
  314. }
  315. return joData;
  316. }
  317. #endregion
  318. #region 查询
  319. private void QueryDirectory()
  320. {
  321. JObject joRtn = directoryMapService.QueryDirectory(GetHisDirInput(), mapFlag);
  322. if (JsonHelper.parseIrisRtnValue(joRtn, out errMsg) != 0)
  323. {
  324. MessageBox.Show(errMsg);
  325. }
  326. else
  327. {
  328. DataTable dt = (DataTable)joRtn["result"]["Data"].ToObject(typeof(DataTable));
  329. int totalCount = int.Parse(joRtn["result"]["TotalCount"].ToString());
  330. pgHISDirect.TotalCount = totalCount;
  331. pgHISDirect.PageSize = pageSize;
  332. dgvHISDirectory.DataSource = dt;
  333. if (directoryMapService.SetDgvDirectoryHeader(hisDirHeaderTextJsonFileMap.GetValue(hisDirectoryCategory), dgvHISDirectory, out errMsg) != 0)
  334. {
  335. MessageBox.Show(errMsg);
  336. return;
  337. }
  338. dgvHISDirectory.Columns[0].ReadOnly = true;
  339. }
  340. }
  341. private void QueryMiDirectory()
  342. {
  343. JObject joRtn = directoryMapService.QueryMiDirectory(GetInsuDirInput());
  344. if (joRtn["errorCode"].ToString() != "0")
  345. {
  346. MessageBox.Show("IRIS数据返回错误:" + joRtn["errorMessage"].ToString());
  347. return;
  348. }
  349. if (joRtn["result"]["rows"] == null)
  350. {
  351. MessageBox.Show("该节点不存在");
  352. return;
  353. }
  354. if (joRtn["result"]["total"].ToString() == "0")
  355. {
  356. MessageBox.Show("未查询到数据");
  357. dgvCenterDirectory.DataSource = null;
  358. return;
  359. }
  360. DataTable dt = (DataTable)joRtn["result"]["rows"].ToObject(typeof(DataTable));
  361. int totalCount = int.Parse(joRtn["result"]["total"].ToString());
  362. pgCenterDirect.TotalCount = totalCount;
  363. pgCenterDirect.PageSize = pageSize;
  364. dgvCenterDirectory.DataSource = dt;
  365. if (directoryMapService.SetDgvDirectoryHeader(miDirHeaderTextJsonFileMap.GetValue(hisDirectoryCategory), dgvCenterDirectory, out errMsg) != 0)
  366. {
  367. MessageBox.Show(errMsg);
  368. return;
  369. }
  370. dgvCenterDirectory.Columns[0].ReadOnly = true;
  371. }
  372. #endregion
  373. #region 对照
  374. private void Mapping()
  375. {
  376. int iHis = dgvHISDirectory.CurrentRow.Index;
  377. if (dgvCenterDirectory.CurrentRow == null)
  378. {
  379. MessageBox.Show("请查询中心目录");
  380. return;
  381. }
  382. int iCenter = dgvCenterDirectory.CurrentRow.Index;
  383. DataTable dtHis = (DataTable)dgvHISDirectory.DataSource;
  384. DataTable dtCenter = (DataTable)dgvCenterDirectory.DataSource;
  385. dgvHISDirectory.Rows[iHis].Cells["insuCode"].Value = dgvCenterDirectory.Rows[iCenter].Cells["Code"].Value.ToString();
  386. dgvHISDirectory.Rows[iHis].Cells["insuName"].Value = dgvCenterDirectory.Rows[iCenter].Cells["Name"].Value.ToString();
  387. JArray jaParams = new JArray();
  388. dynamic jsonTemp = new JObject();
  389. jsonTemp.ID = dtHis.Rows[iHis]["MapID"];
  390. jsonTemp.HospitalDr = Global.inf.hospitalDr;
  391. jsonTemp.updateUserID = Global.user.ID;
  392. jsonTemp.InterfaceDr = Global.inf.interfaceDr;
  393. jsonTemp.HISCode = dgvHISDirectory.Rows[iHis].Cells["itemCode"].Value;
  394. jsonTemp.HISName = dgvHISDirectory.Rows[iHis].Cells["itemDesc"].Value;
  395. jsonTemp.ChargeItemDr = dtHis.Rows[iHis]["ID"];
  396. jsonTemp.DiretoryDr = dtCenter.Rows[iCenter]["medInsuDirectoryID"];
  397. //1.已对照 2.已对照但未上传 3 已对照且已上传
  398. jsonTemp.State = 1;
  399. jsonTemp.HisType = (int)hisDirectoryCategory;
  400. jsonTemp.HisTypeName = rbgDirecType_C.Items[(int)hisDirectoryCategory - 1].ToString();
  401. jsonTemp.InsuCode = dgvCenterDirectory.Rows[dgvCenterDirectory.CurrentRow.Index].Cells["Code"].Value;
  402. jsonTemp.InsuName = dgvCenterDirectory.Rows[dgvCenterDirectory.CurrentRow.Index].Cells["Name"].Value;
  403. jsonTemp.UpdateDate = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss");
  404. jaParams.Add(jsonTemp);
  405. JObject joIn = new JObject();
  406. joIn.Add(new JProperty("params", jaParams));
  407. joIn.Add("code", "09010040");
  408. InvokeHelper invoker = new InvokeHelper();
  409. JObject joRtn = invoker.invokeInsuService(joIn.ToString(), "插入对照信息");
  410. //JObject joRtn = JObject.Parse(irisRtn);
  411. if ((int)joRtn["errorCode"] == 0)
  412. {
  413. dgvHISDirectory.Rows[iHis].Cells["flag"].Value = "已对照";
  414. dgvHISDirectory.Rows[iHis].Cells["MapID"].Value =joRtn["data"]["mapID"].ToString();
  415. dtHis.Rows[iHis]["MapID"] = joRtn["data"]["mapID"].ToString();
  416. }
  417. else
  418. {
  419. dgvHISDirectory.Rows[iHis].Cells["flag"].Value = "对照失败";
  420. }
  421. }
  422. private void CancelMapping()
  423. {
  424. int iHis = dgvHISDirectory.CurrentRow.Index;
  425. DataTable dtHis = (DataTable)dgvHISDirectory.DataSource;
  426. JArray jaParams = new JArray();
  427. dynamic jsonTemp = new JObject();
  428. jsonTemp.ID = dtHis.Rows[iHis]["MapID"];
  429. jsonTemp.HospitalDr = Global.inf.hospitalDr;
  430. jsonTemp.updateUserID = Global.user.ID;
  431. jsonTemp.InterfaceDr = Global.inf.interfaceDr;
  432. jsonTemp.HISCode = dgvHISDirectory.Rows[iHis].Cells["itemCode"].Value;
  433. jsonTemp.UpdateDate = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss");
  434. jaParams.Add(jsonTemp);
  435. JObject joIn = new JObject();
  436. joIn.Add(new JProperty("params", jaParams));
  437. joIn.Add("code", "09010041");
  438. InvokeHelper invoker = new InvokeHelper();
  439. JObject joRtn = invoker.invokeInsuService(joIn.ToString(), "取消对照");
  440. if ((int)joRtn["errorCode"] == 0)
  441. {
  442. dgvHISDirectory.Rows[iHis].Cells["insuCode"].Value = "";
  443. dgvHISDirectory.Rows[iHis].Cells["insuName"].Value = "";
  444. dgvHISDirectory.Rows[iHis].Cells["flag"].Value = "";
  445. dgvHISDirectory.Rows[iHis].Cells["MapID"].Value = 0;
  446. }
  447. else
  448. {
  449. dgvHISDirectory.Rows[iHis].Cells["flag"].Value = "取消失败";
  450. }
  451. }
  452. #endregion
  453. #region 导出
  454. private int queryExportData_CallBack(DataLoaderContext context, out string errMsg)
  455. {
  456. errMsg = "";
  457. return 0;
  458. }
  459. #endregion
  460. #region 批量更新
  461. private void batchUpdateMappedInsuInfo(int index)
  462. {
  463. //获取入参条件
  464. TradeEnum trade;
  465. JObject joCondition = new JObject();
  466. UpdateDirecotryCondition updateDirecotryCondition = new UpdateDirecotryCondition();
  467. updateDirecotryCondition.StartPosition = FormStartPosition.CenterParent;
  468. if (updateDirecotryCondition.ShowDialog() == DialogResult.Cancel)
  469. {
  470. //MessageBox.Show("");
  471. return;
  472. }
  473. else
  474. {
  475. joCondition = GetUpdateInsuInfoInput(index,updateDirecotryCondition,out trade);
  476. joCondition.Add("funno", trade.GetCode());
  477. }
  478. //查表
  479. string sqlStr = $"select * from HB_MedInsuMapRelation where Interface_Dr='{Global.inf.interfaceDr}' and Hospital_Dr ='{Global.inf.hospitalDr}'";
  480. JObject joSqlstr = new JObject();
  481. joSqlstr.Add("sqlStr", sqlStr);
  482. JObject joRtn = mIS.QueryMappedData(joSqlstr, "查询所有已对照数据");
  483. JObject joResult = JObject.FromObject(joRtn["result"]);
  484. joResult.Add("condition", joCondition);
  485. directoryMapService.batchUpdateMappedInsuInfo(joResult, this);
  486. }
  487. #endregion
  488. #endregion
  489. private void btTripMenu_Click(object sender, EventArgs e)
  490. {
  491. cmsIntegratedMenu.Show(((Sunny.UI.UIButton)sender), new Point(0, btTripMenu.Height));
  492. }
  493. private void rbgDirecType_C_ValueChanged(object sender, int index, string text)
  494. {
  495. SetHisDirectoryCategory();
  496. }
  497. private void rbAll_ValueChanged(object sender, bool value)
  498. {
  499. SetMapFlag();
  500. }
  501. private void btnQueryHISDirectory_Click(object sender, EventArgs e)
  502. {
  503. currentPage = 1;
  504. QueryDirectory();
  505. }
  506. private void tsmExportAllMappedData_Click(object sender, EventArgs e)
  507. {
  508. MessageBox.Show("请点击按左侧类别导出!");
  509. }
  510. private void tsmExportMappedDataByLeft_Click(object sender, EventArgs e)
  511. {
  512. ProgressWrapper _dataLoader;
  513. _dataLoader = new ProgressWrapper(queryExportData_CallBack, this);
  514. _dataLoader.SetProgressBar(ProgressBarStyle.Marquee, "正在导出...", 50);
  515. _dataLoader.Start(new object[] { 0 }, (result, errMsg) =>
  516. {
  517. // 在这里处理结果和错误信息
  518. if (result == 0)
  519. {
  520. MessageBox.Show(errMsg);
  521. }
  522. else
  523. {
  524. MessageBox.Show(errMsg);
  525. }
  526. });
  527. }
  528. private void pgHISDirect_PageChanged(object sender, object pagingSource, int pageIndex, int count)
  529. {
  530. //当两者均为1说明点击的是查询按钮
  531. if (!((currentPage == 1) && (pageIndex == 1)))
  532. {
  533. currentPage = pageIndex;
  534. QueryDirectory();
  535. }
  536. }
  537. private void btnQueryCenterDirectory_Click(object sender, EventArgs e)
  538. {
  539. currentPage = 1;
  540. QueryMiDirectory();
  541. }
  542. private void pgCenterDirect_PageChanged(object sender, object pagingSource, int pageIndex, int count)
  543. {
  544. if (!((currentPage == 1) && (pageIndex == 1)))
  545. {
  546. currentPage = pageIndex;
  547. QueryMiDirectory();
  548. }
  549. }
  550. private void tsmiMapping_Click(object sender, EventArgs e)
  551. {
  552. Mapping();
  553. }
  554. private void tsmiCancleMapping_Click(object sender, EventArgs e)
  555. {
  556. CancelMapping();
  557. }
  558. private void tsmUpdateCellPriceOfAllMapped_Click(object sender, EventArgs e)
  559. {
  560. batchUpdateMappedInsuInfo(18);
  561. }
  562. private void btSetCenterDirHeaderText_Click(object sender, EventArgs e)
  563. {
  564. //获取数据源
  565. DataGridViewHeaderSetForm frm = new DataGridViewHeaderSetForm(miDirHeaderTextJsonFileMap.GetValue(hisDirectoryCategory), (DataTable)dgvCenterDirectory.DataSource);
  566. frm.StartPosition = FormStartPosition.CenterParent;
  567. if (frm.ShowDialog() == DialogResult.OK)
  568. {
  569. }
  570. }
  571. private void btSetHisDirHeaderText_Click(object sender, EventArgs e)
  572. {
  573. //获取数据源
  574. DataGridViewHeaderSetForm frm = new DataGridViewHeaderSetForm(hisDirHeaderTextJsonFileMap.GetValue(hisDirectoryCategory), (DataTable)dgvHISDirectory.DataSource);
  575. frm.StartPosition = FormStartPosition.CenterParent;
  576. if (frm.ShowDialog() == DialogResult.OK)
  577. {
  578. }
  579. }
  580. private void dgvHISDirectory_SelectionChanged(object sender, EventArgs e)
  581. {
  582. DataGridViewRow dr = dgvHISDirectory.CurrentRow;
  583. if (dr == null)
  584. {
  585. return; // 防止没有选中行
  586. }
  587. if (!dgvHISDirectory.Columns.Contains("InsuCode"))
  588. {
  589. Global.writeLog("未找到InsuCode");
  590. // 可以在这里调试:打印所有列名
  591. foreach (DataGridViewColumn col in dgvHISDirectory.Columns)
  592. {
  593. System.Diagnostics.Debug.WriteLine($"列名: {col.Name}");
  594. Global.writeLog($"列名: {col.Name},值:{dr.Cells[col.Name].Value}");
  595. }
  596. return;
  597. }
  598. // 先检查列是否存在
  599. DataGridViewCell cell = dr.Cells["InsuCode"];
  600. if (cell == null || cell.Value == null || cell.Value == DBNull.Value)
  601. {
  602. return;
  603. }
  604. if (cell != null)
  605. {
  606. if (cell.Value.ToString() != "")
  607. {
  608. tbInsuCode.Text = cell.Value.ToString();
  609. tbCenterDirectoryFilter.Text = "";
  610. tbApprovalNO.Text = "";
  611. }
  612. else
  613. {
  614. tbInsuCode.Text = "";
  615. if (rbOnlyName.Checked)
  616. {
  617. tbInsuCode.Text = "";
  618. tbApprovalNO.Text = "";
  619. tbCenterDirectoryFilter.Text = "%" + dr.Cells["itemDesc"].Value.ToString() + "%";
  620. }
  621. if (rbOnlyApprNO.Checked)
  622. {
  623. tbCenterDirectoryFilter.Text = "";
  624. tbInsuCode.Text = "";
  625. tbApprovalNO.Text = "%" + dr.Cells["pprovalNo"].Value.ToString() + "%";
  626. }
  627. if (rbBoth.Checked)
  628. {
  629. tbInsuCode.Text = "";
  630. tbCenterDirectoryFilter.Text = "%" +dr.Cells["itemDesc"].Value.ToString() + "%";
  631. tbApprovalNO.Text = "%" + dr.Cells["pprovalNo"].Value.ToString() + "%";
  632. }
  633. }
  634. }
  635. }
  636. private void tsmUpdateSelfRatioOfAllMapped_Click(object sender, EventArgs e)
  637. {
  638. batchUpdateMappedInsuInfo(19);
  639. }
  640. private void tsmUpdateLevelTypeOfAllMappedData_Click(object sender, EventArgs e)
  641. {
  642. batchUpdateMappedInsuInfo(15);
  643. }
  644. private void tsmSingleUpdateInsuInfo_Click(object sender, EventArgs e)
  645. {
  646. if ((dgvHISDirectory.CurrentRow == null) || (rbMaped.Checked != true))
  647. {
  648. MessageBox.Show("请查询HIS目录对照关系,注意选择已对照!");
  649. return;
  650. }
  651. int iMapped = dgvHISDirectory.CurrentRow.Index;
  652. string insuCode = dgvHISDirectory.Rows[iMapped].Cells["insuCode"].Value.ToString();
  653. if (string.IsNullOrEmpty(insuCode))
  654. {
  655. MessageBox.Show("未检测到对应的医保目录,请检查该目录是否已对照!");
  656. return;
  657. }
  658. JObject jo = new JObject();
  659. UpdateDirecotryCondition updateDirecotryCondition = new UpdateDirecotryCondition();
  660. updateDirecotryCondition.Code = dgvHISDirectory.Rows[iMapped].Cells["insuCode"].Value.ToString();
  661. updateDirecotryCondition.StartPosition = FormStartPosition.CenterParent;
  662. if (updateDirecotryCondition.ShowDialog() == DialogResult.Cancel)
  663. {
  664. //MessageBox.Show("");
  665. return;
  666. }
  667. else
  668. {
  669. TradeEnum trade;
  670. jo = GetUpdateInsuInfoInput(15, updateDirecotryCondition, out trade);
  671. jo.Add("code", dgvHISDirectory.Rows[iMapped].Cells["insuCode"].Value.ToString());
  672. jo.Add("HisType", rbgDirecType_C.SelectedIndex + 1);
  673. jo.Add("funno", trade.GetCode());
  674. }
  675. string error;
  676. if (directoryMapService.updateAuxAndCellPrice(jo, out error) != 0)
  677. {
  678. MessageBox.Show($"更新失败{error}");
  679. }
  680. else
  681. {
  682. MessageBox.Show("更新成功!");
  683. }
  684. }
  685. delegate int UpdateInsuInfoHandler(JObject joData, out string err);
  686. private void SingleUpdateInsuInfo(int index, UpdateInsuInfoHandler handler)
  687. {
  688. if (dgvHISDirectory.CurrentRow == null)
  689. {
  690. MessageBox.Show("请查询HIS目录对照关系!");
  691. return;
  692. }
  693. int iMapped = dgvHISDirectory.CurrentRow.Index;
  694. string insuCode = dgvHISDirectory.Rows[iMapped].Cells["insuCode"].Value.ToString();
  695. if (string.IsNullOrEmpty(insuCode))
  696. {
  697. MessageBox.Show("未检测到对应的医保目录,请检查该目录是否已对照!");
  698. return;
  699. }
  700. JObject jo = new JObject();
  701. UpdateDirecotryCondition updateDirecotryCondition = new UpdateDirecotryCondition();
  702. updateDirecotryCondition.Code = dgvHISDirectory.Rows[iMapped].Cells["insuCode"].Value.ToString();
  703. updateDirecotryCondition.StartPosition = FormStartPosition.CenterParent;
  704. if (updateDirecotryCondition.ShowDialog() == DialogResult.Cancel)
  705. {
  706. //MessageBox.Show("");
  707. return;
  708. }
  709. else
  710. {
  711. TradeEnum trade;
  712. jo = GetUpdateInsuInfoInput(index, updateDirecotryCondition, out trade);
  713. jo.Add("code", dgvHISDirectory.Rows[iMapped].Cells["insuCode"].Value.ToString());
  714. jo.Add("HisType", rbgDirecType_C.SelectedIndex + 1);
  715. jo.Add("funno", trade.GetCode());
  716. }
  717. string error;
  718. if (handler(jo, out error) != 0)
  719. {
  720. MessageBox.Show($"更新失败{error}");
  721. }
  722. else
  723. {
  724. MessageBox.Show("更新成功!");
  725. }
  726. }
  727. private void tsmUpdateAllMapped_Click(object sender, EventArgs e)
  728. {
  729. MessageBox.Show("暂未开放!");
  730. }
  731. private void tsmUpdateSelfRatioOfAllMapped_Click_1(object sender, EventArgs e)
  732. {
  733. batchUpdateMappedInsuInfo(19);
  734. }
  735. private void tsmSingleUpdateSelfRatioInfo_Click(object sender, EventArgs e)
  736. {
  737. SingleUpdateInsuInfo(19, directoryMapService.updateSelfRatioInfo);
  738. }
  739. private void tsmSingleUpdateTypeLevelInfo_Click(object sender, EventArgs e)
  740. {
  741. SingleUpdateInsuInfo(15, directoryMapService.updateAuxInfo);
  742. }
  743. private void tsmSingleUpdateCellingPriceInfo_Click(object sender, EventArgs e)
  744. {
  745. SingleUpdateInsuInfo(18, directoryMapService.updateCellingPrice);
  746. }
  747. private void tsmImportMapRelation_Click(object sender, EventArgs e)
  748. {
  749. MessageBox.Show("暂未开放!");
  750. }
  751. }
  752. }