zhengjie před 1 rokem
rodič
revize
64573e690a

+ 1 - 4
Business/CenterBusiness.cs

@@ -276,10 +276,7 @@ namespace PTMedicalInsurance.Business
                 dynamic joTmp = new JObject();
                 joTmp.mdtrt_id = Global.pat.mdtrtID;
                 joTmp.psn_no = Global.pat.psn_no;
-                if (trade == TradeEnum.OutpatientRegistionCancel)
-                {
-                    joTmp.ipt_otp_no = Global.pat.adm_Dr.ToString();
-                }
+                joTmp.ipt_otp_no = Global.pat.adm_Dr.ToString();
                 JObject joData = new JObject();
                 joData.Add("data", joTmp);
                 //好后上传给中心

+ 4 - 1
Business/HisMainBusiness.cs

@@ -763,7 +763,7 @@ namespace PTMedicalInsurance.Business
 
                     string ipAdmNo = Utils.convertAdmDr(JsonHelper.getDestValue(joHisRtnInfo, "mdtrtinfo.ipt_no"));
 
-                    joMdtrtinfo.Add("ipt_no", ipAdmNo);          //住院号
+                    joMdtrtinfo.Add("ipt_no", Global.pat.adm_Dr.ToString());          //住院号
                     joMdtrtinfo.Add("medrcdno", JsonHelper.getDestValue(joHisRtnInfo, "mdtrtinfo.medrcdno"));          //病历号
                     joMdtrtinfo.Add("atddr_no", JsonHelper.getDestValue(joHisRtnInfo, "mdtrtinfo.atddr_no"));          //主治医生编码
                     joMdtrtinfo.Add("chfpdr_name", JsonHelper.getDestValue(joHisRtnInfo, "mdtrtinfo.chfpdr_name"));          //主诊医师姓名
@@ -1414,6 +1414,9 @@ namespace PTMedicalInsurance.Business
                             pat.mdtrtcertType = JsonHelper.getDestValue(joInparam, "params[0].patientInfo.selectedInsuInfo.mdtrt_cert_type");
                             pat.mdtrtcertNO = JsonHelper.getDestValue(joInparam, "params[0].patientInfo.selectedInsuInfo.mdtrt_cert_no");
                             pat.name = JsonHelper.getDestValue(joInparam, "params[0].patientInfo.output.baseinfo.psn_name");
+                            string gender = JsonHelper.getDestValue(joInparam, "params[0].patientInfo.output.baseinfo.gend");
+                            pat.gend = "男".Equals(gender) ? "1" : "2";
+
                             pat.psn_type = JsonHelper.getDestValue(joInparam, "params[0].patientInfo.selectedInsuInfo.psn_type");
                             pat.certType = JsonHelper.getDestValue(joInparam, "params[0].patientInfo.output.baseinfo.psn_cert_type");
                             pat.certNO = JsonHelper.getDestValue(joInparam, "params[0].patientInfo.output.baseinfo.certno");

+ 54 - 7
Forms/JsonMappingForm.cs

@@ -224,22 +224,24 @@ namespace PTMedicalInsurance.Forms
                 }
             }
             fields[1] = fields[1].Replace("【】", "");
-            lstMap.Items.Remove(lstMap.SelectedItem);
             FieldMapping field = QuerySelectedField();
             if (field != null)
             {
                 this.fieldMappings.Remove(field);
             }
+            lstMap.Items.Remove(lstMap.SelectedItem);
+            
         }
 
         private FieldMapping QuerySelectedField()
         {
             if (lstMap.SelectedItem == null) return null;
-
+            // TODO:如果目标是数组未处理  
             string text = lstMap.SelectedItem.ToString();
             string[] fields = text.Split(separator.ToCharArray());
             // remove from fieldMapping
-            FieldMapping field = this.fieldMappings.FirstOrDefault(m => (m.Source == fields[0] && m.Target == fields[1]) || (m.Target == fields[0] && m.Value == fields[1]));
+            string txtValue = fields[1].Replace("【","").Replace("】","");
+            FieldMapping field = this.fieldMappings.FirstOrDefault(m => (m.Source == fields[0] && m.Target == fields[1]) || (m.Target == fields[0] && m.Value == txtValue));
             return field;
         }
 
@@ -439,16 +441,61 @@ namespace PTMedicalInsurance.Forms
             string text = lstLocal.SelectedItem + separator + "【" + strValue + "】";
             lstMap.Items.Add(text);
 
-            FieldMapping fieldMapping = new FieldMapping();
-            fieldMapping.Target = lstLocal.SelectedItem.ToString();
-            fieldMapping.Value = strValue;
+            string target = lstLocal.SelectedItem.ToString();
 
-            this.fieldMappings.Add(fieldMapping);
+            if (target.Contains(arrayPattern))
+            {
+                string prefix_target = target.Substring(0, target.IndexOf(arrayPattern) + 2);
+                var rtn = GetFieldMappingByTarget(prefix_target);
+                FieldMapping fieldMapping = rtn.mapping;
+                if (!rtn.exists)
+                {
+                    this.fieldMappings.Add(rtn.mapping);
+                }
+                
+                fieldMapping.Target = prefix_target;
+                List<FieldMapping> childs = fieldMapping.Child ?? new List<FieldMapping>();
+                string subKey = target.Replace(prefix_target + ".", "");
+
+                FieldMapping subField = childs.FirstOrDefault(m => (m.Target == subKey));
+                if (subField == null)
+                {
+                    subField = new FieldMapping();
+                    childs.Add(subField);
+                }
+                subField.Source = null;
+                subField.Target = subKey;
+                subField.Value = strValue;
+            }
+            else
+            {
+                var rtn = GetFieldMappingByTarget(target);
+                FieldMapping fieldMapping = rtn.mapping;
+                if (!rtn.exists)
+                {
+                    this.fieldMappings.Add(rtn.mapping);
+                }
+                fieldMapping.Target = target;
+                fieldMapping.Value = strValue;
+            }
 
             // clear selectedItem
             lstLocal.Items.Remove(lstLocal.SelectedItem);
         }
 
+
+        private (bool exists,FieldMapping mapping) GetFieldMappingByTarget(string target)
+        {
+            FieldMapping fieldMapping = this.fieldMappings.FirstOrDefault(m => (m.Target == target));
+            //数组中的固定值
+            if (fieldMapping == null)
+            {
+                fieldMapping = new FieldMapping();
+                return (false, fieldMapping);
+            }
+            return (true,fieldMapping);
+        }
+
         private void AddGlobalVar(string key)
         {
             FieldMapping fieldMapping = new FieldMapping();

+ 4 - 1
Helper/InvokeDllCenter.cs

@@ -5,7 +5,9 @@ using System;
 using System.Collections.Generic;
 using System.IO;
 using System.Linq;
+using System.Runtime.ExceptionServices;
 using System.Runtime.InteropServices;
+using System.Security;
 using System.Text;
 using System.Threading.Tasks;
 
@@ -13,6 +15,7 @@ namespace PTMedicalInsurance.Helper
 {
     class InvokeDllCenter : IInvokeCenter
     {
+        [HandleProcessCorruptedStateExceptionsAttribute()]
         public int Business(string inputData, ref string outputData, ref string pErrMsg)
         {
             pErrMsg = "";
@@ -31,7 +34,7 @@ namespace PTMedicalInsurance.Helper
                         Global.pat.insuplc_admdvs = "000000"; //本地
                     } else
                     {
-                        Global.pat.insuplc_admdvs = "37000000";
+                        Global.pat.insuplc_admdvs = "37000000"; //省内外
                     }
                     
                 }