DirectoryMap.cs 34 KB

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