Sfoglia il codice sorgente

pref:电子凭证和身份证通过

zhengjie 1 anno fa
parent
commit
9dc656c5ed

+ 6 - 0
Business/Inpatient/IPPreSettlementProcess.cs

@@ -44,6 +44,12 @@ namespace PTMedicalInsurance.Business
             Global.pat.mdtrtcertType = JsonHelper.getDestValue(joReg, "data.CertificateType");
             Global.pat.mdtrtcertNO = JsonHelper.getDestValue(joReg, "data.CertificateNO");
             Global.pat.certNO = Global.pat.mdtrtcertNO;
+            //沈阳特殊处理,含有卡串
+            if (Global.pat.mdtrtcertNO != null && Global.pat.mdtrtcertNO.Contains("|"))
+            {
+                Global.pat.certNO = Global.pat.mdtrtcertNO.Split("|".ToCharArray())[0];
+                Global.pat.card.BusinessCode = Global.pat.mdtrtcertNO.Split("|".ToCharArray())[1];
+            }
             Global.pat.psn_no = JsonHelper.getDestValue(joReg, "data.PersonalNO");
             Global.pat.certType = JsonHelper.getDestValue(joReg, "data.CertificateType");
 

+ 6 - 14
Business/Local/ReadCardProcess.cs

@@ -44,23 +44,15 @@ namespace PTMedicalInsurance.Business
                     //身份证
                     if (cc.cardType == "02")
                     {
-                        if (cc.ID == "")
+                        Global.pat.mdtrtcertType = "02";
+                        //读身份证
+                        CardReader reader = new CardReader();
+                        int rtn = reader.ReadSFZ(out outParam);
+                        if (rtn == 0)
                         {
-                            Global.pat.mdtrtcertType = "02";
-                            Global.pat.name = "";
+                            trade1101(out outParam);
                         }
-                        else
-                        {
-                            Global.pat.mdtrtcertType = "02";
-                            //读身份证
-                            CardReader reader = new CardReader();
-                            int rtn = reader.ReadSFZ(out outParam);
-                            if (rtn == 0)
-                            {
-                                trade1101(out outParam);
-                            }
 
-                        }
                         return Success();
                     }
                     //社保卡

+ 11 - 9
Common/CardReader.cs

@@ -133,7 +133,7 @@ namespace PTMedicalInsurance.Common
 
                 rtn = ReadSFZ(sbOutBuff, sbBusiCardBuff);
                 // 解析返回读卡信息
-                OutBuff = parseCardInfo(sbOutBuff.ToString());
+                OutBuff = parseCardInfo(sbOutBuff.ToString(),0);
                 Global.pat.card.BusinessCode = sbBusiCardBuff.ToString(); 
 
                 return rtn;
@@ -150,17 +150,19 @@ namespace PTMedicalInsurance.Common
         /// </summary>
         /// <param name="outBuff"></param>
         /// <returns></returns>
-        private string parseCardInfo(string inBuff)
+        private string parseCardInfo(string inBuff,int startIndex = 1)
         {
-            //卡类型、发卡地区行政区划代码(卡识别码前6位)、社会保障号码、卡号、卡识别码、姓名、卡复位信息(仅取历史字节)、规范版本、发卡日期、卡有效期、终端机编号、终端设备号。各数据项之间以“|”分割,且最后一个数据项以“|”结尾
+            //INSU:卡类型、发卡地区行政区划代码(卡识别码前6位)、社会保障号码、卡号、卡识别码、姓名、卡复位信息(仅取历史字节)、规范版本、发卡日期、卡有效期、终端机编号、终端设备号。各数据项之间以“|”分割,且最后一个数据项以“|”结尾
+            //SFZ:发卡地区行政区划代码(卡识别码前6位)| 社会保障号码(身份证号)| 卡号 | 卡识别码 | 姓名 | 卡复位信息(仅取历史字节)| 规范版本 | 发卡日期 | 有效期 | 终端机编号 | 终端设备号 | 性别 | 民族 | 出生日期 | 地址 | 签发机关 | 照片BASE64 |。
             string[] data = inBuff.Split("|".ToCharArray());
             CardInfo card = new CardInfo();
-            card.certno = data[2];
-            card.cardno = data[3];
-            card.card_sn = data[4];
-            card.psn_name = data[5];
-            
-            Global.pat.insuplc_admdvs = data[1]; //行政区划
+            card.certno = data[startIndex+1];
+            card.cardno = data[startIndex + 2];
+            card.card_sn = data[startIndex + 3];
+            card.psn_name = data[startIndex + 4];
+
+            Global.pat.insuplc_admdvs = data[startIndex]; //行政区划
+
             Global.pat.card.SN = card.card_sn;
             Global.pat.certNO = card.certno;
             Global.pat.name = card.psn_name;

+ 10 - 10
Common/ECTokenReader.cs

@@ -116,12 +116,13 @@ namespace PTMedicalInsurance.Common
                 StringBuilder sbOut = new StringBuilder(40960);
                 //string strToken = NationEcTrans(Global.inf.ecURL, inputParam, sbOut);
                 int pInt = CardReader.NationEcTrans(sbInput, sbOut);
-                sOutPar = parseECTokenOutput(sbOut.ToString());
+                string outputData = sbOut.ToString();
+                sOutPar = parseECTokenOutput(outputData);
 
-                Global.writeLog("EcToken返回:"+pInt,inputParam,sOutPar);
-                if (JsonHelper.getDestValue(JObject.Parse(sOutPar), "code") != "0")
+                Global.writeLog("EcToken返回:"+pInt,inputParam, sOutPar);
+                if (JsonHelper.getDestValue(JObject.Parse(outputData), "code") != "0")
                 {
-                    Global.writeLog("调用认证接口" + transType + "失败:" + sOutPar);
+                    Global.writeLog("调用认证接口" + transType + "失败:" + outputData);
                 }
             }
             catch (Exception e)
@@ -133,14 +134,13 @@ namespace PTMedicalInsurance.Common
 
         private static string parseECTokenOutput(string data)
         {
-            CardInfo card = new CardInfo();
             JObject joRtn = JObject.Parse(data);
-            card.ecToken = JsonHelper.getDestValue(joRtn, "data.ecToken");
-            card.certno = JsonHelper.getDestValue(joRtn, "data.idNo"); //身份证
-            card.psn_name = JsonHelper.getDestValue(joRtn, "data.userName");
-            card.psn_cert_type = JsonHelper.getDestValue(joRtn, "data.idType");
+            Global.pat.ecToken = JsonHelper.getDestValue(joRtn, "data.ecToken");
+            Global.pat.certNO = JsonHelper.getDestValue(joRtn, "data.idNo"); //身份证
+            Global.pat.name = JsonHelper.getDestValue(joRtn, "data.userName");
+            Global.pat.certType = JsonHelper.getDestValue(joRtn, "data.idType");
             Global.pat.insuplc_admdvs = JsonHelper.getDestValue(joRtn, "data.insuOrg");
-            return JsonHelper.toJsonString(card);
+            return data;
         }
     }
 

+ 6 - 2
Common/Utils.cs

@@ -329,11 +329,15 @@ namespace PTMedicalInsurance.Common
         {
             if ("01".Equals(Global.pat.mdtrtcertType))
             {
-                return Global.pat.mdtrtcertNO;
+                return Global.pat.ecToken;
             }
             else if("02".Equals(Global.pat.mdtrtcertType))
             {
-                return Global.pat.certNO + "|" + Global.pat.card.BusinessCode;
+                if (flag)
+                {
+                    return Global.pat.certNO + "|" + Global.pat.card.BusinessCode;
+                }
+                return Global.pat.certNO;
             }
             else
             {

+ 2 - 10
Forms/ChooseCard.cs

@@ -36,7 +36,7 @@ namespace PTMedicalInsurance.Forms
         private void btOk_Click(object sender, EventArgs e)
         {
             cardType = "0" + (rbgCardType.SelectedIndex +1).ToString();
-            businessType = "01" + cbBusinessType.Text.Substring(0,3);
+            businessType = "01"+cbBusinessType.Text.Substring(0,3);
 
             Global.pat.OtherProv = rbgOtherProv.SelectedIndex;
 
@@ -61,15 +61,7 @@ namespace PTMedicalInsurance.Forms
             // 身份证
             if (rbgCardType.SelectedIndex == 1)
             {
-                if (tbID.Text == "")
-                {
-                    ID = "";
-                }
-                else
-                {
-                    ID = tbID.Text;
-                }                
-
+                ID = tbID.Text;
                 PatName = tbName.Text;
             }