Sfoglia il codice sorgente

feat: 增加ICPC就诊原因和检查数据下载

zhengjie 1 anno fa
parent
commit
c158ed8694

+ 46 - 0
Business/DataImoport.cs

@@ -28,6 +28,7 @@ using System.Windows.Forms;
 using PTMedicalInsurance.Variables;
 using PTMedicalInsurance.Helper;
 using PTMedicalInsurance.Business;
+using PTMedicalInsurance.Common;
 
 namespace PTMedicalInsurance
 {
@@ -503,6 +504,51 @@ namespace PTMedicalInsurance
             return jsonTemp;
         }
 
+        public JObject importMedDataToIris(TradeEnum trade, JObject joRtn, Sunny.UI.UIProcessBar processBar)
+        {
+            string errorMsg = "";
+            JObject dataRtn = Utils.ConvertResponse<JObject>(trade, joRtn, true);
+            if (JsonHelper.parseCenterRtnValue(joRtn, out errorMsg) != 0)
+            {
+                return JsonHelper.setExceptionJson(-1, "下载目录信息失败", errorMsg);
+            }
+
+            JArray array = JArray.Parse(JsonHelper.getDestValue(dataRtn, "result"));
+            foreach (var obj in array)
+            {
+                obj["updateUserID"]= Global.user.ID;
+                obj["HospitalDr"] = Global.inf.hospitalDr;
+                obj["InterfaceDr"] = Global.inf.interfaceDr;
+                if (trade == TradeEnum.ICPC3Treatment)
+                {
+                    obj["Code"] = obj["NationalCode"] + "-" + obj["Code"];
+                }
+            }
+
+            int rows = array.Count;
+            int size = 50;
+            int pages = rows / size;
+            processBar.Maximum = rows;
+            for (int i = 0; i < pages; i++)
+            {
+                processBar.Value = (i + 1) * size;
+                Application.DoEvents();
+
+                //每50行提交一次给后台
+                dynamic jaParams = array.ToList().GetRange(i * size, size).ToArray();
+                applyDataToIris("09010035", JArray.Parse(JsonHelper.toJsonString(jaParams)));
+            }
+
+            processBar.Value = rows;
+            Application.DoEvents();
+            if (rows % size != 0)
+            {
+                dynamic jaParams = array.ToList().GetRange(pages * size, rows % size).ToArray();
+                applyDataToIris("09010035", JArray.Parse(JsonHelper.toJsonString(jaParams)));
+            }
+            return JsonHelper.setIrisReturnValue(0, "成功", null);
+        }
+
 
         /// <summary>
         /// 提交数据给IRIS

+ 8 - 3
Common/Utils.cs

@@ -293,6 +293,11 @@ namespace PTMedicalInsurance.Common
             return joOutput;
         }
 
+        public static JObject ConvertResponse<T>(TradeEnum trade, JObject response)
+        {
+            return ConvertResponse<T>(trade, response, false);
+        }
+
         /// <summary>
         /// 将交易输出进行标准化转换
         /// </summary>
@@ -300,12 +305,12 @@ namespace PTMedicalInsurance.Common
         /// <param name="trade"></param>
         /// <param name="response"></param>
         /// <returns></returns>
-        public static JObject ConvertResponse<T>(TradeEnum trade, JObject response)
+        public static JObject ConvertResponse<T>(TradeEnum trade, JObject response,bool forceConvertFlag)
         {
             JsonMapper mapper = new JsonMapper(trade.GetCode());
             JObject joOutput = response;
-            // 非基线版需要转换
-            if (!Global.curEvt.ext.BaseLineMode)
+            // 非基线版或要求转换
+            if (!Global.curEvt.ext.BaseLineMode || forceConvertFlag)
             {
                 //如果没有配置转换规则,调试模式,可手动配置
                 if (Global.curEvt.showJson)

+ 63 - 39
Forms/BasicData.cs

@@ -766,52 +766,58 @@ namespace PTMedicalInsurance.Forms
             input["ver"] = ver;
 
             // 目录查询
-            if (rbgDirecType.SelectedIndex == 15)
+            switch(rbgDirecType.SelectedIndex)
             {
-                //CallResult cr = download.QueryDepartment();
-                //if (cr.Success)
-                //{
-                //    Global.writeLog(cr.Data);
-                //}
-            }
-            // 医保字典数据下载
-            else if (rbgDirecType.SelectedIndex == 8)
-            {
-                if (tbDicDate.Text == "")
-                {
-                    MessageBox.Show("请输入查询日期!");
-                    return;
-                }
-                // 支持批量
-                string[] dictText = tbDicType.Text.Trim().Split(",".ToCharArray());
-                dictText.ToList().ForEach((dict) =>
-                {
-                    this.downloadDict(dict);
-                });
-            }
-            else if (rbgDirecType.SelectedIndex <= 10)
-            {
-                MedDirDownloadProcess mp = new MedDirDownloadProcess();
-                if (rbSingleDown.Checked)
-                {
-                    if (mp.SingleDownload(ver, rbgDirecType.SelectedIndex, uiProcessBar1, out errorMessage) != 0)
+                case 15:
+                    break;
+                case 8:  //字典
                     {
-                        MessageBox.Show("医保目录下载失败:" + errorMessage);
-                        return;
+                        if (tbDicDate.Text == "")
+                        {
+                            MessageBox.Show("请输入查询日期!");
+                            return;
+                        }
+                        // 支持批量
+                        string[] dictText = tbDicType.Text.Trim().Split(",".ToCharArray());
+                        dictText.ToList().ForEach((dict) =>
+                        {
+                            this.downloadDict(dict);
+                        });
+                        break;
                     }
-                }
-                if (rbAutoDown.Checked)
-                {
-                    if (mp.AutoDownload(rbgDirecType.SelectedIndex, uiProcessBar1, out errorMessage) != 0)
+                case 12:
                     {
-                        MessageBox.Show("医保目录下载失败:" + errorMessage);
-                        return;
+                        downloadMedData(TradeEnum.ICPC3AdmReason, ver, uiProcessBar1);
+                        break;
+                    }
+                case 13:
+                    {
+                        downloadMedData(TradeEnum.ICPC3Treatment, ver, uiProcessBar1);
+                        break;
+                    }
+                default:
+                    {
+                        MedDirDownloadProcess mp = new MedDirDownloadProcess();
+                        if (rbSingleDown.Checked)
+                        {
+                            if (mp.SingleDownload(ver, rbgDirecType.SelectedIndex, uiProcessBar1, out errorMessage) != 0)
+                            {
+                                MessageBox.Show("医保目录下载失败:" + errorMessage);
+                                return;
+                            }
+                        }
+                        if (rbAutoDown.Checked)
+                        {
+                            if (mp.AutoDownload(rbgDirecType.SelectedIndex, uiProcessBar1, out errorMessage) != 0)
+                            {
+                                MessageBox.Show("医保目录下载失败:" + errorMessage);
+                                return;
+                            }
+                        }
+                        break;
                     }
-                }
             }
 
-
-
             btnQuery_Click(sender, e);
         }
 
@@ -838,6 +844,24 @@ namespace PTMedicalInsurance.Forms
             }
         }
 
+        private int downloadMedData(TradeEnum trade,string version,Sunny.UI.UIProcessBar uiProcessBar)
+        {
+            string errorMessage = "";
+            JObject joRtn = cBus.DownDirecotry(trade, version);
+            if (JsonHelper.parseCenterRtnValue(joRtn, out errorMessage) == 0)
+            {
+                //解析
+                DataImoport DI = new DataImoport();
+                JObject joImportRtn = DI.importMedDataToIris(trade,joRtn,uiProcessBar);
+                if (JsonHelper.parseIrisRtnValue(joImportRtn, out errorMessage) == 0)
+                {
+                    return 0;
+                }
+            }
+            MessageBox.Show(errorMessage);
+            return -1;
+        }
+
         private void btnQuery_Click(object sender, EventArgs e)
         {
             #region 校验查询条件

+ 3 - 2
Forms/BasicData.designer.cs

@@ -327,8 +327,8 @@
             "中药饮片",
             "医疗机构制剂",
             "肿瘤形态学",
-            "中医疾病",
-            "中医证候",
+            "ICPC-3就诊原因",
+            "ICPC-3检查和治疗",
             "民族药品",
             "目录信息查询",
             "医疗与医保目录匹配",
@@ -1031,6 +1031,7 @@
             this.pgHISDirect.MinimumSize = new System.Drawing.Size(2, 2);
             this.pgHISDirect.Name = "pgHISDirect";
             this.pgHISDirect.RectSides = System.Windows.Forms.ToolStripStatusLabelBorderSides.None;
+            this.pgHISDirect.ShowJumpButton = false;
             this.pgHISDirect.ShowText = false;
             this.pgHISDirect.Size = new System.Drawing.Size(1584, 43);
             this.pgHISDirect.TabIndex = 6;

+ 3 - 3
Forms/BasicData.resx

@@ -117,12 +117,12 @@
   <resheader name="writer">
     <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
   </resheader>
-  <metadata name="cmsMapping.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
-    <value>17, 17</value>
-  </metadata>
   <metadata name="cmsUpdateInsuDir.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
     <value>310, 17</value>
   </metadata>
+  <metadata name="cmsMapping.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
+    <value>17, 17</value>
+  </metadata>
   <metadata name="cmsUpdateAuxInfo.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
     <value>146, 17</value>
   </metadata>

+ 1 - 0
Helper/JsonMapper.cs

@@ -210,6 +210,7 @@ namespace PTMedicalInsurance.Helper
             if (!string.IsNullOrEmpty(nameKey) && string.IsNullOrEmpty(fieldMapping.Value))
             {
                 nameKey = nameKey.Split(",".ToCharArray())[0];  //多对一忽略后面的
+                //TODO: 多对一时支持按指定连接符进行连接
 
                 if (fieldMapping.Child != null)
                 {

+ 12 - 0
Variables/TradeEnum.cs

@@ -164,6 +164,18 @@ namespace PTMedicalInsurance
         [Trade("1321", "医疗服务项目(新)")]
         MedServiceNewDirectory,
 
+        /// <summary>
+        /// 门诊诊疗国际分类字典库-就诊原因和疾病诊断
+        /// </summary>
+        [Trade("1361", "(ICPC-3)就诊原因和疾病诊断")]
+        ICPC3AdmReason,
+
+        /// <summary>
+        /// 门诊诊疗国际分类字典库-检查和治疗
+        /// </summary>
+        [Trade("1362", "(ICPC-3)检查和治疗")]
+        ICPC3Treatment,
+
         /// <summary>
         /// 1901(字典下载)
         /// </summary>