Selaa lähdekoodia

pref: 调整电子处方

zhengjie 1 vuosi sitten
vanhempi
commit
34a0dead4f

+ 2 - 2
Forms/OutpatientRegistration.cs

@@ -69,8 +69,8 @@ namespace PTMedicalInsurance.Forms
                 sqlStr = " SELECT B.Code,B.Descripts AS Name FROM HB_Dictionary A JOIN HB_DictionaryDataDetail B ON A.ID = B.HBDictionary_Dr WHERE A.InsuCode = 'IPT_TYPE'" + sqlCondition;
                 SetDBLKCombox(ref dblkcbxHospType, sqlStr);
             }
-            
-            cbxAccountPay.Checked = false;
+            // 要求默认勾选 20231208
+            cbxAccountPay.Checked = true;
         }
 
         public Boolean b2001 = false;

+ 37 - 74
Forms/PrescriptionCirculation.cs

@@ -264,8 +264,8 @@ namespace PTMedicalInsurance.Forms
             joInput["mdtrtinfo"]["medType"] = Global.pat.medType;
             joInput["insuPlcNo"] = Global.pat.insuplc_admdvs;          
 
-            JObject joRtn = invoker.invokeCenterServicePresCir("7101", JsonHelper.setCenterInparPresCirNew(joInput));
-            if (JsonHelper.parseCenterRtnValuePresCir(joRtn, out InsuOutMsg) != 0)
+            JObject joRtn = invoker.invokeEPCenterService("7101", JsonHelper.setCenterInparPresCirNew(joInput));
+            if (JsonHelper.parseEPCenterRtnValue(joRtn, out InsuOutMsg) != 0)
             {
                 //电子处方上传预核验失败,调用2202撤销医保挂号
                 if (CancelInsuReg(Global.pat.psn_no, Global.pat.mdtrtID, presAdmID, out string OutMsg2) != 0)
@@ -298,19 +298,12 @@ namespace PTMedicalInsurance.Forms
             }
             else
             {
-                /*使用应用公钥(publicKey示例默认值)对本地自签名的数据进行验签示例*/
-                JValue encDataObj = (JValue)joRtn.GetValue("encData");
-                string encData = encDataObj.ToString();
-                //解密
-                string decDatas = SMUtil.decrypt(encData, Global.inf.appId, Global.inf.secretKey);
-                JObject joRtnEncDataObj = (JObject)Newtonsoft.Json.JsonConvert.DeserializeObject(decDatas);
-
                 //验签
                 //Boolean isVerifys = SMUtil.verify(signDto, Global.inf.Secret, Global.inf.publicKey, signData);
                 //MessageBox.Show("验签:" + isVerifys);
 
                 //医保电子处方上传预核验成功后写入后台记录
-                if (insertPresCirPreResult(joInput, joRtnEncDataObj, out OutMsg) != 0)
+                if (insertPresCirPreResult(joInput, joRtn, out OutMsg) != 0)
                 {
                     MessageBox.Show("【7101】电子处方上传预核验成功,调用IRIS服务插入记录失败:" + OutMsg);
                     return;
@@ -375,21 +368,15 @@ namespace PTMedicalInsurance.Forms
             joInParam.Add("originalValue", originalValue);
             joInParam.Add("originalRxFile", originalRxFile);
             joInParam.Add("extras", "1");            
-            JObject joRtn = invoker.invokeCenterServicePresCir("7102", JsonHelper.setCenterInparPresCirNew(joInParam));
-            if (JsonHelper.parseCenterRtnValuePresCir(joRtn, out OutMsg) != 0)
+            JObject joRtn = invoker.invokeEPCenterService("7102", JsonHelper.setCenterInparPresCirNew(joInParam));
+            if (JsonHelper.parseEPCenterRtnValue(joRtn, out OutMsg) != 0)
             {
                 MessageBox.Show("【7102】电子处方医保电子签名失败 :" + OutMsg);
                 return;
             }
 
-            //5.解密返回值
-            JValue encDataObj = (JValue)joRtn.GetValue("encData");
-            string encData = encDataObj.ToString();
-            string decDatas = SMUtil.decrypt(encData, Global.inf.appId, Global.inf.secretKey);
-            JObject joRtnEncDataObj = (JObject)Newtonsoft.Json.JsonConvert.DeserializeObject(decDatas);
-
             //6.医保电子处方电子签名成功后调用IRIS服务写入后台记录
-            if (insertPresCirSignResult(joPreCheckParam, originalValue, originalRxFile, joRtnEncDataObj, out OutMsg) != 0)
+            if (insertPresCirSignResult(joPreCheckParam, originalValue, originalRxFile, joRtn, out OutMsg) != 0)
             {
                 MessageBox.Show("【7102】电子处方医保电子签名成功,调用IRIS服务插入记录失败:" + OutMsg);
                 return;
@@ -436,21 +423,16 @@ namespace PTMedicalInsurance.Forms
             JObject joInput = MontagePresCiruUploadParam(joPreCheckInfo, joElectronicSignatureInfo);
 
             //4.调用7103电子处方上传接口
-            JObject joRtn = invoker.invokeCenterServicePresCir("7103", JsonHelper.setCenterInparPresCirNew(joInput));
-            if (JsonHelper.parseCenterRtnValuePresCir(joRtn, out OutMsg) != 0)
+            JObject joRtn = invoker.invokeEPCenterService("7103", JsonHelper.setCenterInparPresCirNew(joInput));
+            if (JsonHelper.parseEPCenterRtnValue(joRtn, out OutMsg) != 0)
             {
                 MessageBox.Show("【7103】电子处方上传失败 :" + OutMsg);
                 return;
             }
 
-            //5.解密返回值
-            JValue encDataObj = (JValue)joRtn.GetValue("encData");
-            string encData = encDataObj.ToString();
-            string decDatas = SMUtil.decrypt(encData, Global.inf.appId, Global.inf.secretKey);
-            JObject joRtnEncDataObj = (JObject)Newtonsoft.Json.JsonConvert.DeserializeObject(decDatas);
-
+            
             //6.电子处方上传7103接口调用成功后插入后台
-            if (insertPresCirUploadRecord(joInput, joRtnEncDataObj, out OutMsg) != 0)
+            if (insertPresCirUploadRecord(joInput, joRtn, out OutMsg) != 0)
             {
                 MessageBox.Show("【7101】电子处方上传预核验成功,调用IRIS服务插入记录失败:" + OutMsg);
                 return;
@@ -560,22 +542,16 @@ namespace PTMedicalInsurance.Forms
             joData.Add("undoRea", rtb_CancelReason.Text);               //撤销原因描述
             joData.Add("undoTime", DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"));              //撤销时间
 
-            JObject joRtn7104 = invoker.invokeCenterServicePresCir("7104", JsonHelper.setCenterInparPresCirNew(joData));
-            if (JsonHelper.parseCenterRtnValuePresCir(joRtn7104, out OutPut) != 0)
+            JObject joRtn7104 = invoker.invokeEPCenterService("7104", JsonHelper.setCenterInparPresCirNew(joData));
+            if (JsonHelper.parseEPCenterRtnValue(joRtn7104, out OutPut) != 0)
             {
                 MessageBox.Show("【7104】电子处方撤销!" + OutPut);
                 return;
             }
             else
             {
-                //解密
-                JValue encDataObj = (JValue)joRtn7104.GetValue("encData");
-                string encData = encDataObj.ToString();
-                string decDatas = SMUtil.decrypt(encData, Global.inf.appId, Global.inf.secretKey);
-                JObject joRtnEncDataObj = (JObject)Newtonsoft.Json.JsonConvert.DeserializeObject(decDatas);
-
                 //撤销电子处方上传更新IRIS表
-                if (mIS.cancelPresCirUpload(joRtnEncDataObj, ID, HiRxno, FixmedinsCode, rtb_CancelReason.Text, DrInsuCode, DrName, DrCertNo, out string OutMsg) != 0)                
+                if (mIS.cancelPresCirUpload(joRtn7104, ID, HiRxno, FixmedinsCode, rtb_CancelReason.Text, DrInsuCode, DrName, DrCertNo, out string OutMsg) != 0)                
                 {
                     MessageBox.Show("【7104】电子处方撤销成功,IRIS服务更新处方上传记录表失败!" + OutMsg);
                     return;
@@ -1205,24 +1181,17 @@ namespace PTMedicalInsurance.Forms
             joData.Add("psnName", PsnName);            //姓名
             joData.Add("psnCertType", PsnCertType);          //撤销医师证件类型
             joData.Add("certno", Certno);          //撤销医师证件号码          
-            JObject joRtn7106 = invoker.invokeCenterServicePresCir("7106", JsonHelper.setCenterInparPresCirNew(joData));
-            if (JsonHelper.parseCenterRtnValuePresCir(joRtn7106, out OutPut) != 0)
+            JObject joRtn7106 = invoker.invokeEPCenterService("7106", JsonHelper.setCenterInparPresCirNew(joData));
+            if (JsonHelper.parseEPCenterRtnValue(joRtn7106, out OutPut) != 0)
             {
                 MessageBox.Show("【7106】电子处方审核结果查询失败!" + OutPut);
                 return;
             }
             else
             {
-                //解密
-                JValue encDataObj = (JValue)joRtn7106.GetValue("encData");
-                string encData = encDataObj.ToString();
-                string decDatas = SMUtil.decrypt(encData, Global.inf.appId, Global.inf.secretKey);
-                JObject joRtnEncDataObj = (JObject)Newtonsoft.Json.JsonConvert.DeserializeObject(decDatas);
-
                 JArray jaRtnEncDataObj = new JArray();
-                jaRtnEncDataObj.Add(joRtnEncDataObj);                
+                jaRtnEncDataObj.Add(joRtn7106);                
 
-                //DataTable dtRtn = (DataTable)joRtnEncDataObj["result"]["data"].ToObject(typeof(DataTable));
                 DataTable dtRtn = (DataTable)jaRtnEncDataObj.ToObject(typeof(DataTable));
                 dgv_PresAuditResults.DataSource = dtRtn;
 
@@ -1230,7 +1199,7 @@ namespace PTMedicalInsurance.Forms
                     dgv_PresAuditResults.DataSource = null;
 
                 //撤销电子处方上传更新IRIS表
-                if (mIS.UpdatePresCirUpload(joRtnEncDataObj, ID, out string OutMsg) != 0)
+                if (mIS.UpdatePresCirUpload(joRtn7106, ID, out string OutMsg) != 0)
                 {
                     MessageBox.Show("【7106】电子处方审核结果查询成功,IRIS服务更新处方上传记录表失败!" + OutMsg);
                     return;
@@ -1292,49 +1261,43 @@ namespace PTMedicalInsurance.Forms
             joInput.Add("psnName", dt.Rows[i]["PatnName"].ToString()); //人员名称
             joInput.Add("psnCertType", "01");                          //人员证件类型
             joInput.Add("certno", dt.Rows[i]["Certno"].ToString());    //证件号码
-            JObject joRtn7105 = invoker.invokeCenterServicePresCir("7105", JsonHelper.setCenterInparPresCirNew(joInput));
-            if (JsonHelper.parseCenterRtnValuePresCir(joRtn7105, out OutPut) != 0)            
+            JObject joRtn7105 = invoker.invokeEPCenterService("7105", JsonHelper.setCenterInparPresCirNew(joInput));
+            if (JsonHelper.parseEPCenterRtnValue(joRtn7105, out OutPut) != 0)            
             {
                 MessageBox.Show("【7105】电子处方信息查询失败" + OutPut);
                 return;
             }
             else
             {
-                //解密
-                JValue encDataObj = (JValue)joRtn7105.GetValue("encData");
-                string encData = encDataObj.ToString();
-                string decDatas = SMUtil.decrypt(encData, "", "");
-                JObject joRtnEncDataObj = (JObject)Newtonsoft.Json.JsonConvert.DeserializeObject(decDatas);
-
                 JArray jaOtpinfo = new JArray();
-                jaOtpinfo.Add(JObject.Parse(JsonHelper.getDestValue(joRtnEncDataObj, "rxOtpinfo")));
+                jaOtpinfo.Add(JObject.Parse(JsonHelper.getDestValue(joRtn7105, "rxOtpinfo")));
                 JObject joOtpinfo = new JObject();
                 joOtpinfo.Add("rxOtpinfoList", jaOtpinfo);
 
                 JObject joData = new JObject();
-                joData.Add("fixmedinsCode", JsonHelper.getDestValue(joRtnEncDataObj, "fixmedinsCode"));
-                joData.Add("fixmedinsName", JsonHelper.getDestValue(joRtnEncDataObj, "fixmedinsName"));
-                joData.Add("hiRxno", JsonHelper.getDestValue(joRtnEncDataObj, "hiRxno"));
-                joData.Add("longRxFlag", JsonHelper.getDestValue(joRtnEncDataObj, "longRxFlag"));
-                joData.Add("prscTime", JsonHelper.getDestValue(joRtnEncDataObj, "prscTime"));
-                joData.Add("rxStasCodg", JsonHelper.getDestValue(joRtnEncDataObj, "rxStasCodg"));
-                joData.Add("rxStasName", JsonHelper.getDestValue(joRtnEncDataObj, "rxStasName"));
-                joData.Add("rxTypeCode", JsonHelper.getDestValue(joRtnEncDataObj, "rxTypeCode"));
-                joData.Add("rxTypeName", JsonHelper.getDestValue(joRtnEncDataObj, "rxTypeName"));
-                joData.Add("rxUsedStasCodg", JsonHelper.getDestValue(joRtnEncDataObj, "rxUsedStasCodg"));
-                joData.Add("rxUsedStasName", JsonHelper.getDestValue(joRtnEncDataObj, "rxUsedStasName"));
-                joData.Add("valiDays", JsonHelper.getDestValue(joRtnEncDataObj, "valiDays"));
-                joData.Add("valiEndTime", JsonHelper.getDestValue(joRtnEncDataObj, "valiEndTime"));
+                joData.Add("fixmedinsCode", JsonHelper.getDestValue(joRtn7105, "fixmedinsCode"));
+                joData.Add("fixmedinsName", JsonHelper.getDestValue(joRtn7105, "fixmedinsName"));
+                joData.Add("hiRxno", JsonHelper.getDestValue(joRtn7105, "hiRxno"));
+                joData.Add("longRxFlag", JsonHelper.getDestValue(joRtn7105, "longRxFlag"));
+                joData.Add("prscTime", JsonHelper.getDestValue(joRtn7105, "prscTime"));
+                joData.Add("rxStasCodg", JsonHelper.getDestValue(joRtn7105, "rxStasCodg"));
+                joData.Add("rxStasName", JsonHelper.getDestValue(joRtn7105, "rxStasName"));
+                joData.Add("rxTypeCode", JsonHelper.getDestValue(joRtn7105, "rxTypeCode"));
+                joData.Add("rxTypeName", JsonHelper.getDestValue(joRtn7105, "rxTypeName"));
+                joData.Add("rxUsedStasCodg", JsonHelper.getDestValue(joRtn7105, "rxUsedStasCodg"));
+                joData.Add("rxUsedStasName", JsonHelper.getDestValue(joRtn7105, "rxUsedStasName"));
+                joData.Add("valiDays", JsonHelper.getDestValue(joRtn7105, "valiDays"));
+                joData.Add("valiEndTime", JsonHelper.getDestValue(joRtn7105, "valiEndTime"));
 
                 JArray jaDataList = new JArray();
                 jaDataList.Add(joData);
 
-                joRtnEncDataObj.Add("rxDataList", jaDataList);
+                joRtn7105.Add("rxDataList", jaDataList);
 
-                DataTable dt1 = (DataTable)joRtnEncDataObj["rxDataList"].ToObject(typeof(DataTable));
-                DataTable dt2 = (DataTable)joRtnEncDataObj["rxDetlList"].ToObject(typeof(DataTable));
+                DataTable dt1 = (DataTable)joRtn7105["rxDataList"].ToObject(typeof(DataTable));
+                DataTable dt2 = (DataTable)joRtn7105["rxDetlList"].ToObject(typeof(DataTable));
                 DataTable dt3 = (DataTable)joOtpinfo["rxOtpinfoList"].ToObject(typeof(DataTable));
-                DataTable dt4 = (DataTable)joRtnEncDataObj["rxDiseList"].ToObject(typeof(DataTable));
+                DataTable dt4 = (DataTable)joRtn7105["rxDiseList"].ToObject(typeof(DataTable));
 
                 dgv_Main_tb.DataSource = dt1;
                 dgv_DetlList_tb.DataSource = dt2;

+ 14 - 2
Helper/EncryptHelper.cs

@@ -20,14 +20,26 @@ namespace PTMedicalInsurance.Helper
         //测试
         private string appSecret = "1H1INA1L90OH3F60C80A00008119D616";   //appSecret 数字密钥sm4
         private string privateKey = "APCIAgJqh3+AcK/IXL1WJD130i2q+6UblRxQzus3+sVw";     //渠道私密
-        public static string appId = "1H1INA1L30OG3F60C80A0000DEE43558";    //渠道ID
-        public string publicKey = "BDMsMM2HPRkaKSl2ynBbCRtJodP8Nh4G5IkEnV+7YHaCplkAZbPMsUlvJpWqQ+Q4sT7611xGSZ1/mPsqgqJ49zs=";            //平台公钥
+        private string appId = "1H1INA1L30OG3F60C80A0000DEE43558";    //渠道ID
+        private string publicKey = "BDMsMM2HPRkaKSl2ynBbCRtJodP8Nh4G5IkEnV+7YHaCplkAZbPMsUlvJpWqQ+Q4sT7611xGSZ1/mPsqgqJ49zs=";            //平台公钥
 
         //正式
         //private string ak = "1H62Q1KH205K76430B0A0000BF149773";
         //private string sk = "YbNObZNMdUgwgLUEyK4ixNSkaCF9OPtCdDth9APWYKU=";
         //private string appid = "1H62Q1KGP05J76430B0A00007144E257";
 
+        public EncryptHelper()
+        { 
+        
+        }
+
+        public EncryptHelper(string appId, string appSecret, string publicKey, string privateKey)
+        {
+            this.appId = appId;
+            this.appSecret = appSecret;
+            this.publicKey = publicKey;
+            this.privateKey = privateKey;
+        }
 
         public string getSignText(string data)
         {

+ 29 - 14
Helper/InvokeHelper.cs

@@ -27,6 +27,7 @@ using PTMedicalInsurance.Common;
 using PTMedicalInsurance.Variables;
 using System.Runtime.InteropServices;
 using PTMedicalInsurance.Forms;
+using GMCrypto.Lib;
 
 namespace PTMedicalInsurance.Helper
 {
@@ -492,7 +493,7 @@ namespace PTMedicalInsurance.Helper
         /// <param name="funNO"></param>
         /// <param name="data"></param>
         /// <returns></returns>
-        public JObject invokeCenterServicePresCir(string funNO, string data)
+        public JObject invokeEPCenterService(string funNO, string data)
         {
             JObject joRtn = new JObject();
             string outPar = "";
@@ -547,9 +548,13 @@ namespace PTMedicalInsurance.Helper
                             break;
                         }
                 }
+                Global.inf.appId = "8B7E69400A55431DAAE3043AD881B0B5";
+                Global.inf.secretKey = "5011A6002FA041AB8431DCB49854B7A8";
+                Global.inf.privateKey = "Cy4Fh9fdVSNfiPRp98W2c6nMxIcQ3PlwD8IvzRp7kLY=";
+                Global.inf.publicKey = "BCR/UBg3Jy7d2cR56rYl5tRv/fmlTm100GbCCMQVfyLZfwe+7RmU6Xx54HiIcDNk6VgVkQh3fBl60ZODjAeguSg=";
 
                 //Global.curEvt.URL = Global.inf.centerURL;
-                joRtn = invokeCenterServicePresCir(data);
+                joRtn = invokeEPCenterService(data);
                 outPar = JsonHelper.Compress(joRtn);
 
                 return joRtn;
@@ -575,29 +580,33 @@ namespace PTMedicalInsurance.Helper
         /// </summary>
         /// <param name="data"></param>
         /// <returns></returns>
-        private JObject invokeCenterServicePresCir(string data)
+        private JObject invokeEPCenterService(string data)
         {
             string postContent = "";
             JObject joRtn = new JObject();
             try
             {
+                string timestamp = TimeStamp.get13().ToString();  //当前时间戳(秒)
+                string nonce = Guid.NewGuid().ToString();         //非重复的随机字符串(十分钟内不能重复)
+
                 //内容类型                
                 //Signer signer = new Signer();
                 //signer.Key = Global.inf.privateKey;                     //应用编码
                 //signer.Secret = Global.inf.secretKey;               //secretKey 私钥
 
-                string timestamp = TimeStamp.get13().ToString();  //当前时间戳(秒)
-                string nonce = Guid.NewGuid().ToString();         //非重复的随机字符串(十分钟内不能重复)
-
-                HttpRequest Resquest = new HttpRequest("POST", new Uri(Global.curEvt.URL));
-                Resquest.headers.Add("charset", "UTF-8");
+                //HttpRequest Resquest = new HttpRequest("POST", new Uri(Global.curEvt.URL));
+                //Resquest.headers.Add("charset", "UTF-8");
                 //Resquest.headers.Add("x-hw-id", signer.Key);
                 //Resquest.headers.Add("x-tif-timestamp", timestamp);
                 //Resquest.headers.Add("x-tif-passid", signer.Key);
                 //Resquest.headers.Add("x-tif-nonce", nonce);
-                Resquest.body = data;
+                //Resquest.body = signData;
+
+                // 加密参数
+                EncryptHelper encrypt = new EncryptHelper(Global.inf.appId,Global.inf.secretKey,Global.inf.publicKey,Global.inf.privateKey);
+                string signData = "";
+                string output = encrypt.encrypt(data, ref signData);
 
-                string RtnStr;
                 //HttpWebRequest req = signer.Sign(Resquest);
                 HttpWebRequest req = (HttpWebRequest)WebRequest.Create(Global.curEvt.URL);
                 req.ContentType = "application/json;charset=utf8";
@@ -606,13 +615,20 @@ namespace PTMedicalInsurance.Helper
                 try
                 {
                     var writer = new StreamWriter(req.GetRequestStream());
-                    writer.Write(Resquest.body);
+                    writer.Write(signData);
                     writer.Flush();
                     HttpWebResponse resp = (HttpWebResponse)req.GetResponse();
                     StreamReader reader = new StreamReader(resp.GetResponseStream());
 
-                    RtnStr = reader.ReadToEnd();
-                    joRtn = JObject.Parse(RtnStr);//返回Json数据
+                    string RtnStr = reader.ReadToEnd();
+                    joRtn = JObject.Parse(RtnStr);
+                    // 解密返回值
+                    JValue encDataObj = (JValue)joRtn.GetValue("encData");
+                    string encData = encDataObj.ToString();
+                    string decDatas = encrypt.decrypt(encData);
+                    joRtn = JObject.Parse(decDatas);
+
+
                     return joRtn;
                 }
                 catch (WebException e)
@@ -624,7 +640,6 @@ namespace PTMedicalInsurance.Helper
                     }
                     else
                     {
-                        RtnStr = "异常:" + e.Message;
                         return JsonHelper.setExceptionJson(-99, "centerServeiceInvok中获得响应流异常(b)", e.Message);
                     }
                 }

+ 1 - 1
Helper/JsonHelper.cs

@@ -662,7 +662,7 @@ namespace PTMedicalInsurance.Helper
         /// <param name="joRtn"></param>
         /// <param name="errorMsg"></param>
         /// <returns></returns>
-        public static int parseCenterRtnValuePresCir(JObject joRtn, out string errorMsg)
+        public static int parseEPCenterRtnValue(JObject joRtn, out string errorMsg)
         {
             try
             {