Procházet zdrojové kódy

1、增加是否上传pacs参数控制
2、日志输出增加版本号显示
3、增加接口异常后,是否强制保存医嘱参数控制 1.0.2.5
4、三方b超数据上传还在调试中

zackhua před 1 týdnem
rodič
revize
1e9891e26a

+ 7 - 13
Common/Tools.cs

@@ -104,8 +104,7 @@ namespace Common
         /// <returns>返回空为解析失败</returns>
         public static string AESDecrypt(string str, string key, string IV)
         {
-            try
-            {
+            
                 RijndaelManaged rijndaelCipher = new RijndaelManaged();
                 rijndaelCipher.Mode = CipherMode.CBC;
                 rijndaelCipher.Padding = PaddingMode.PKCS7;
@@ -123,12 +122,7 @@ namespace Common
                 ICryptoTransform transform = rijndaelCipher.CreateDecryptor();
                 byte[] plainText = transform.TransformFinalBlock(encryptedData, 0, encryptedData.Length);
                 return Encoding.UTF8.GetString(plainText);
-            }
-            catch (Exception ex)
-            {
-                LogHelper.Error(ex);
-            }
-            return "";
+            
         }
 
         /// <summary>
@@ -205,12 +199,11 @@ namespace Common
             }
             catch (Exception ex)
             {
-                LogHelper.Info("请求入参:" + data);
+                LogHelper.Info("调用互认接口网络异常:");
                 LogHelper.Info("请求出参:" + srcString);
                 LogHelper.Error(ex);
+                return srcString;
             }
-            //Log.Info("入参:" + data, true);
-            //Log.Info("出参:" + srcString, true);
             return srcString;
         }
 
@@ -250,9 +243,10 @@ namespace Common
             }
             catch (Exception ex)
             {
-                LogHelper.Info("请求入参:" + data);
-                LogHelper.Info("请求出参:" + srcString);
                 LogHelper.Error(ex);
+                LogHelper.Info("WSDataToZlsoftInterface入参:" + data);
+                LogHelper.Info("请求出参:" + srcString);
+                return srcString;
             }
             //Log.Info("入参:" + data, true);
             //Log.Info("出参:" + srcString, true);

+ 2 - 0
LisPacsDataUpload/App.config

@@ -27,6 +27,8 @@
     <add name="pgConn" connectionString="Server=172.30.0.30;Port=5432;User Id=zlhr;Password=zlhr;Database=your_database;" providerName="Npgsql"/>
 
 	<add name="SqlServerConnection" connectionString="Data Source=192.168.0.229\SQL2008;Initial Catalog=LIS4_FYBJY;User ID=u_jpg;Password=u_jpg;" providerName="System.Data.SqlClient"/>
+
+	  <add name="SqlServerConnectionToPacs" connectionString="Data Source=192.168.10.162\SQL2008;Initial Catalog=USDB70D;User ID=pdf;Password=pdf;" providerName="System.Data.SqlClient"/>
   
   </connectionStrings>
   <system.data>

+ 99 - 60
LisPacsDataUpload/Form1.cs

@@ -39,6 +39,8 @@ namespace LisPacsDataUpload
 
         private int zlhr = 0;// 是否为临生免
         private int lisSource = 1;// 0中联老版lis 1 中联新版lis  2  专业版临生免  3 三方lis
+
+        private int pacsSource = 1;// 0中联老版pacs      2  专业版pacs    3 三方pacs
         private int open_multiple_upload_flag = 0;// 开启多个线程上传
 
         string lis_upload_url = "http://40.26.204.3:8084/phimp-napi/qyhrlischeckreportinfo/save"; //lis 上传接口地址
@@ -81,7 +83,7 @@ namespace LisPacsDataUpload
 
             try
             {
-                string sql_lis = @"select 互认,zlhr,open_multiple_upload,lis_source from 互认配置表";
+                string sql_lis = @"select 互认,zlhr,open_multiple_upload,lis_source ,pacs_source from 互认配置表";
                 DataTable dt_lis = OracleHelper<object>.RunQueryDS(sql_lis);
                 int total = int.Parse(dt_lis.Rows[0]["互认"].ToString());
                 if (total == 1)
@@ -100,6 +102,7 @@ namespace LisPacsDataUpload
                 open_multiple_upload_flag = int.Parse(dt_lis.Rows[0]["open_multiple_upload"].ToString());
 
                 lisSource = int.Parse(dt_lis.Rows[0]["lis_source"].ToString());
+                pacsSource = int.Parse(dt_lis.Rows[0]["pacs_source"].ToString());
             }
             catch (Exception ex)
             {
@@ -285,14 +288,6 @@ namespace LisPacsDataUpload
                 th2.IsBackground = true;
                 th2.Name = name2;
                 th2.Start(name2);
-
-                System.Threading.Thread.Sleep(5000);
-                string namecompletUpload = "LisCompletUpload" + Tools.GuidTo16String();
-                Thread thredcompletUpload = new Thread(new ParameterizedThreadStart(LisCompletUpload));
-                thredcompletUpload.IsBackground = true;
-                thredcompletUpload.Name = namecompletUpload;
-                thredcompletUpload.Start(namecompletUpload);
-
                 // 开启第二个上传
                 if (1 == open_multiple_upload_flag)
                 {
@@ -304,6 +299,16 @@ namespace LisPacsDataUpload
                     th3.Start(name3);
                 }
             }
+            //  这里特俗 直接借用时间点控制是否补传
+            if (StartTime == 7)
+            {
+                System.Threading.Thread.Sleep(5000);
+                string namecompletUpload = "LisCompletUpload" + Tools.GuidTo16String();
+                Thread thredcompletUpload = new Thread(new ParameterizedThreadStart(LisCompletUpload));
+                thredcompletUpload.IsBackground = true;
+                thredcompletUpload.Name = namecompletUpload;
+                thredcompletUpload.Start(namecompletUpload);
+            }
 
             if (UploadPacs == 1)//没传影像云的需要上传检查
             {
@@ -360,16 +365,18 @@ namespace LisPacsDataUpload
 
                             //string res_pacs_pc = Tools.WSCenterData(url, json_count, vi_count, Tools.accessToken, 1);
                             string res_pacs_pc = string.Empty;
+                            string res_aes_pacs_pc = string.Empty;
                             try
                             {
                                 res_pacs_pc = Tools.WSCenterData(bill_url, json_count, vi_count, Tools.accessToken, 1);
+                                res_aes_pacs_pc = Tools.AESDecrypt(res_pacs_pc, Tools.pwd, vi_count);
                             }
                             catch (Exception e)
                             {
                                 LogHelper.Error(e,"开单项目上传异常");
+                                LogHelper.Error(e, "开单项目上传异常 res_aes_pacs_pc"+ res_aes_pacs_pc);
                                 continue;
                             }
-                            string res_aes_pacs_pc = Tools.AESDecrypt(res_pacs_pc, Tools.pwd, vi_count);
                             ResPacs respacs_pc = Tools.JsonToObject<ResPacs>(Tools.FormatStr(res_aes_pacs_pc), Encoding.UTF8);
                             if (respacs_pc.statusCode != "1")
                             {
@@ -445,6 +452,7 @@ namespace LisPacsDataUpload
                         int uploaded = 0;
                         for (int i = 0; i < dt.Rows.Count; i++)
                         {
+                            string reportId = dt.Rows[i]["reportId"].ToString();
                             string requestId = dt.Rows[i]["requestId"].ToString();
                             
                             //生成pdf
@@ -460,7 +468,7 @@ namespace LisPacsDataUpload
                             }
                             else if(lisSource==3){
                                  // 申请id requestId
-                                generatePdfUrl = PdfUtils.GeneratePdf(lisSource, requestId, requestId,null);
+                                generatePdfUrl = PdfUtils.GeneratePdf(lisSource, reportId, requestId, null);
                                 if (!generatePdfUrl.Contains(".pdf"))
                                 {
                                     LogHelper.Info("生成pdf失败,原因是 = " + generatePdfUrl);
@@ -497,7 +505,6 @@ namespace LisPacsDataUpload
                                     this.SetText(ShowLog);
                                     continue;
                                 }
-                                LogHelper.Info("生成pdf成功,地址为 = " );
                             }
                             //是否授权
                             if (!isAuthorization())
@@ -506,8 +513,6 @@ namespace LisPacsDataUpload
                             }
 
                             //最新调整  需要获取 原始pdf 文件  存在场景  有三方lis、中联lis 、 以及专业版临生免 的报告 三种  
-
-                            LogHelper.Info("最后GeneratePdfUrl= ");
                             string attachmentFile = "";
                             if (zlhr == zlhrConstant_true)
                             {
@@ -521,21 +526,24 @@ namespace LisPacsDataUpload
                             //LogHelper.Info("上传的文件类容==" + attachmentFile);
                             //上传文件
                             string file_json = "{\"attachmentType\":\".pdf\",\"attachmentName\":\"检验报告\",\"businessType\":\"A001\",\"attachmentFile\":\"" + attachmentFile + "\"}";
+                            string file_json_string = file_json;
                             string file_vi = Tools.GuidTo16String();
                             file_json = Tools.AESEncrypt(file_json, Tools.pwd, file_vi);
                             //string file_url = "http://40.26.204.3:8084/phimp-napi/attachMent/upload";
                             //string file_res = Tools.WSCenterData(file_url, file_json, file_vi, Tools.accessToken, 1);
                             string file_res = string.Empty;
+                            string file_res_aes = string.Empty;
                             try
                             {
                                 file_res = Tools.WSCenterData(file_url, file_json, file_vi, Tools.accessToken, 1);
-                            }
-                            catch (Exception e)
+                                file_res_aes = Tools.AESDecrypt(file_res, Tools.pwd, file_vi);
+                            }catch (Exception e)
                             {
-
+                                LogHelper.Info("1上传报告异常");
+                                LogHelper.Info("file_res=="+ file_res);
                                 //写入后台表机构记录上传错误的数据
-                                string errSql = @"Insert Into 互认报告上传异常记录(BUSINESSNUMBER,REPORTID,TYPE,ATTACHMENTID,REQUEST_DATA,IV,UPLOADED,UPLOADE_TIME) Values('{0}','{1}',2,'{2}',{3},{4},0,to_date('{5}','yyyy/mm/dd hh24:mi:ss'))";
-                                errSql = string.Format(errSql, dt.Rows[i]["businessNumber"].ToString(), dt.Rows[i]["reportId"].ToString(), null, file_json, file_vi, DateTime.Now.ToString("yyyy/MM/dd HH:mm:ss"));
+                                string errSql = @"Insert Into 互认报告上传异常记录(BUSINESSNUMBER,REPORTID,TYPE,ATTACHMENTID,REQUEST_DATA,REASON,IV,UPLOADED,UPLOADE_TIME) Values('{0}','{1}',2,'{2}','{3}','{4}','{5}',0,to_date('{6}','yyyy/mm/dd hh24:mi:ss'))";
+                                errSql = string.Format(errSql, dt.Rows[i]["businessNumber"].ToString(), dt.Rows[i]["reportId"].ToString(), null, null,e.Message, file_vi, DateTime.Now.ToString("yyyy/MM/dd HH:mm:ss"));
                                 int err_count = 0;
                                 if (zlhr == zlhrConstant_true)
                                 {
@@ -551,8 +559,7 @@ namespace LisPacsDataUpload
                                 continue;
 
                             }
-
-                            string file_res_aes = Tools.AESDecrypt(file_res, Tools.pwd, file_vi);
+                            LogHelper.Info("file_res_aes==="+ file_res_aes);
                             ResFile resfile = Tools.JsonToObject<ResFile>(Tools.FormatStr(file_res_aes), Encoding.UTF8);
                             if (resfile.statusCode != "1")
                             {
@@ -586,7 +593,7 @@ namespace LisPacsDataUpload
                             pdfcountAll += 1;
 
                             string businessNumber = dt.Rows[i]["businessNumber"].ToString();
-                            string reportId = dt.Rows[i]["reportId"].ToString();
+                            //string reportId = dt.Rows[i]["reportId"].ToString();
                             //上传lis数据
                             string item_sql = @"select  a.orgCode,
                                                         a.orgName,
@@ -727,14 +734,16 @@ namespace LisPacsDataUpload
                             string vi_pacs = Tools.GuidTo16String();
                             json_pacs = Tools.AESEncrypt(json_pacs, Tools.pwd, vi_pacs);
                             string res_pacs = string.Empty;
+                            string res_aes_pacs = string.Empty;
                             try {
                                 res_pacs = Tools.WSCenterData(lis_upload_url, json_pacs, vi_pacs, Tools.accessToken, 1);
+                                res_aes_pacs = Tools.AESDecrypt(res_pacs, Tools.pwd, vi_pacs);
                             }
                             catch (Exception e)
                             {
                                 //写入后台表机构记录上传错误的数据
-                                string errSql = @"Insert Into 互认报告上传异常记录(BUSINESSNUMBER,REPORTID,TYPE,ATTACHMENTID,REQUEST_DATA,IV,UPLOADED,UPLOADE_TIME) Values('{0}','{1}',2,'{2}',{3},{4},0,to_date('{5}','yyyy/mm/dd hh24:mi:ss'))";
-                                errSql = string.Format(errSql, businessNumber, reportId, resfile.mainBody.attachmentId, json_pacs, vi_pacs, DateTime.Now.ToString("yyyy/MM/dd HH:mm:ss"));
+                                string errSql = @"Insert Into 互认报告上传异常记录(BUSINESSNUMBER,REPORTID,TYPE,ATTACHMENTID,REQUEST_DATA,REASON,IV,UPLOADED,UPLOADE_TIME) Values('{0}','{1}',2,'{2}','{3}','{4}','{5}',0,to_date('{6}','yyyy/mm/dd hh24:mi:ss'))";
+                                errSql = string.Format(errSql, businessNumber, reportId, resfile.mainBody.attachmentId,null,e.Message, vi_pacs, DateTime.Now.ToString("yyyy/MM/dd HH:mm:ss"));
                                 int err_count = 0;
                                 if (zlhr == zlhrConstant_true)
                                 {
@@ -749,7 +758,6 @@ namespace LisPacsDataUpload
                                 LogHelper.Info( e.Message);
                                 continue;
                             }
-                            string res_aes_pacs = Tools.AESDecrypt(res_pacs, Tools.pwd, vi_pacs);
                             ResPacs respacs = Tools.JsonToObject<ResPacs>(Tools.FormatStr(res_aes_pacs), Encoding.UTF8);
                             LogHelper.Info(reportId+":lis1上传检验报告的接口状态==" + JsonConvert.SerializeObject(respacs));
                             if (respacs.statusCode != "1")
@@ -798,10 +806,10 @@ namespace LisPacsDataUpload
                     }
                     #endregion
                     #region 2、补传失败lis数据
-                    LogHelper.Info("补传失败lis数据开始");
-                    ShowLog = Thread_name + "补传失败lis数据开始";
+                    LogHelper.Info("补传lis数据开始");
+                    ShowLog = Thread_name + "补传lis数据开始";
                     this.SetText(ShowLog);
-                    this.SetText("补传失败lis数据开始");
+                    this.SetText("补传lis数据开始");
                     int count_pc = 0;
                     string pc_sql = @"select * from lis_complet_upload ";
                     LogHelper.Info("补传lis数据执行sql:" + pc_sql);
@@ -867,16 +875,18 @@ namespace LisPacsDataUpload
                         //string res_pacs_pc = Tools.WSCenterData(url, json_pacs_pc, vi_pacs_pc, Tools.accessToken, 1);
 
                         string res_pacs_pc = string.Empty;
+                        string res_aes_pacs_pc = string.Empty;
                         try
                         {
                             res_pacs_pc = Tools.WSCenterData(lis_upload_url, json_pacs_pc, vi_pacs_pc, Tools.accessToken, 1);
+                             res_aes_pacs_pc = Tools.AESDecrypt(res_pacs_pc, Tools.pwd, vi_pacs_pc);
                         }
                         catch (Exception e)
                         {
                             //写入后台表机构记录上传错误的数据
 
-                            string errSql = @"Insert Into 互认报告上传异常记录(BUSINESSNUMBER,REPORTID,TYPE,ATTACHMENTID,REQUEST_DATA,IV,UPLOADED,UPLOADE_TIME) Values('{0}','{1}',2,'{2}',{3},{4},0,to_date('{5}','yyyy/mm/dd hh24:mi:ss'))";
-                            errSql = string.Format(errSql, dt.Rows[i]["businessNumber"].ToString(), dt.Rows[i]["reportId"].ToString(), null, json_pacs_pc, vi_pacs_pc, DateTime.Now.ToString("yyyy/MM/dd HH:mm:ss"));
+                            string errSql = @"Insert Into 互认报告上传异常记录(BUSINESSNUMBER,REPORTID,TYPE,ATTACHMENTID,REQUEST_DATA,REASON,IV,UPLOADED,UPLOADE_TIME) Values('{0}','{1}',2,'{2}','{3}','{4}','{5}',0,to_date('{6}','yyyy/mm/dd hh24:mi:ss'))";
+                            errSql = string.Format(errSql, dt.Rows[i]["businessNumber"].ToString(), dt.Rows[i]["reportId"].ToString(), null, null,e.Message, vi_pacs_pc, DateTime.Now.ToString("yyyy/MM/dd HH:mm:ss"));
                             int err_count = 0;
                             if (zlhr == zlhrConstant_true)
                             {
@@ -891,7 +901,7 @@ namespace LisPacsDataUpload
                             LogHelper.Info(e.Message);
                             continue;
                         }
-                        string res_aes_pacs_pc = Tools.AESDecrypt(res_pacs_pc, Tools.pwd, vi_pacs_pc);
+                        
                         ResPacs respacs_pc = Tools.JsonToObject<ResPacs>(Tools.FormatStr(res_aes_pacs_pc), Encoding.UTF8);
                         if (respacs_pc.statusCode != "1")
                         {
@@ -961,10 +971,10 @@ namespace LisPacsDataUpload
                 {
                     string Thread_name = "[" + Thname.ToString() + "]";
                     #region 2、补传失败lis数据
-                    LogHelper.Info("LisCompletUpload补传失败lis数据开始");
-                    ShowLog = Thread_name + "LisCompletUpload补传失败lis数据开始";
+                    LogHelper.Info("LisCompletUpload补传lis数据开始");
+                    ShowLog = Thread_name + "LisCompletUpload补传lis数据开始";
                     this.SetText(ShowLog);
-                    this.SetText("补传失败lis数据开始");
+                    this.SetText("补传lis数据开始");
                     int count_pc = 0;
                     string pc_sql = @"select * from lis_complet_upload  ";
                     LogHelper.Info("补传lis数据执行sql:" + pc_sql);
@@ -1020,22 +1030,25 @@ namespace LisPacsDataUpload
                         }
                         string json_pacs_pc = JsonConvert.SerializeObject(plist_pc);
                         json_pacs_pc = "{\"mainBody\":" + json_pacs_pc + "}";
+                        //LogHelper.Info("上传data" +json_pacs_pc);
                         string json_pacs_log_pc = json_pacs_pc;
                         string vi_pacs_pc = Tools.GuidTo16String();
                         json_pacs_pc = Tools.AESEncrypt(json_pacs_pc, Tools.pwd, vi_pacs_pc);
                         //string url_pacs = "http://40.26.204.3:8084/phimp-napi/qyhrlischeckreportinfo/save";
                         //string res_pacs_pc = Tools.WSCenterData(url, json_pacs_pc, vi_pacs_pc, Tools.accessToken, 1);
                         string res_pacs_pc = string.Empty;
+                        string res_aes_pacs_pc = string.Empty;
                         try
                         {
                             res_pacs_pc = Tools.WSCenterData(lis_upload_url, json_pacs_pc, vi_pacs_pc, Tools.accessToken, 1);
+                             res_aes_pacs_pc = Tools.AESDecrypt(res_pacs_pc, Tools.pwd, vi_pacs_pc);
                         }
                         catch (Exception e)
                         {
                             //写入后台表机构记录上传错误的数据
 
-                            string errSql = @"Insert Into 互认报告上传异常记录(BUSINESSNUMBER,REPORTID,TYPE,ATTACHMENTID,REQUEST_DATA,IV,UPLOADED,UPLOADE_TIME) Values('{0}','{1}',2,'{2}',{3},{4},0,to_date('{5}','yyyy/mm/dd hh24:mi:ss'))";
-                            errSql = string.Format(errSql, list_pc[i].BUSINESSNUMBER, list_pc[i].REPORTID, null, json_pacs_pc, vi_pacs_pc, DateTime.Now.ToString("yyyy/MM/dd HH:mm:ss"));
+                            string errSql = @"Insert Into 互认报告上传异常记录(BUSINESSNUMBER,REPORTID,TYPE,ATTACHMENTID,REQUEST_DATA,REASON,IV,UPLOADED,UPLOADE_TIME) Values('{0}','{1}',2,'{2}','{3}','{4}','{5}',0,to_date('{6}','yyyy/mm/dd hh24:mi:ss'))";
+                            errSql = string.Format(errSql, list_pc[i].BUSINESSNUMBER, list_pc[i].REPORTID, null, null,e.Message, vi_pacs_pc, DateTime.Now.ToString("yyyy/MM/dd HH:mm:ss"));
                             int err_count = 0;
                             if (zlhr == zlhrConstant_true)
                             {
@@ -1051,7 +1064,6 @@ namespace LisPacsDataUpload
                             continue;
 
                         }
-                        string res_aes_pacs_pc = Tools.AESDecrypt(res_pacs_pc, Tools.pwd, vi_pacs_pc);
                         ResPacs respacs_pc = Tools.JsonToObject<ResPacs>(Tools.FormatStr(res_aes_pacs_pc), Encoding.UTF8);
                         if (respacs_pc.statusCode != "1")
                         {
@@ -1278,21 +1290,24 @@ namespace LisPacsDataUpload
                             }
                             //上传文件
                             string file_json = "{\"attachmentType\":\".pdf\",\"attachmentName\":\"检验报告\",\"businessType\":\"A001\",\"attachmentFile\":\"" + attachmentFile + "\"}";
+                            string file_json_string = file_json;
                             string file_vi = Tools.GuidTo16String();
                             file_json = Tools.AESEncrypt(file_json, Tools.pwd, file_vi);
                            // string file_url = "http://40.26.204.3:8084/phimp-napi/attachMent/upload";
                             //string file_res = Tools.WSCenterData(file_url, file_json, file_vi, Tools.accessToken, 1);
                             string file_res = string.Empty;
+                            string file_res_aes = string.Empty;
                             try
                             {
                                 file_res = Tools.WSCenterData(file_url, file_json, file_vi, Tools.accessToken, 1);
+                                 file_res_aes = Tools.AESDecrypt(file_res, Tools.pwd, file_vi);
                             }
                             catch (Exception e)
                             {
                                 LogHelper.Info("写入后台表机构记录上传错误的数据");
                                 //写入后台表机构记录上传错误的数据
-                                string errSql = @"Insert Into 互认报告上传异常记录(BUSINESSNUMBER,REPORTID,TYPE,ATTACHMENTID,REQUEST_DATA,IV,UPLOADED,UPLOADE_TIME) Values('{0}','{1}',2,'{2}',{3},{4},0,to_date('{5}','yyyy/mm/dd hh24:mi:ss'))";
-                                errSql = string.Format(errSql, businessNumber, reportId, null, file_json, file_vi, DateTime.Now.ToString("yyyy/MM/dd HH:mm:ss"));
+                                string errSql = @"Insert Into 互认报告上传异常记录(BUSINESSNUMBER,REPORTID,TYPE,ATTACHMENTID,REQUEST_DATA,REASON,IV,UPLOADED,UPLOADE_TIME) Values('{0}','{1}',2,'{2}','{3}','{4}','{5}',0,to_date('{6}','yyyy/mm/dd hh24:mi:ss'))";
+                                errSql = string.Format(errSql, businessNumber, reportId, null, null,e.Message, file_vi, DateTime.Now.ToString("yyyy/MM/dd HH:mm:ss"));
                                 int err_count = 0;
                                 if (zlhr == zlhrConstant_true)
                                 {
@@ -1308,7 +1323,7 @@ namespace LisPacsDataUpload
                                 continue;
 
                             }
-                            string file_res_aes = Tools.AESDecrypt(file_res, Tools.pwd, file_vi);
+                            
                             ResFile resfile = Tools.JsonToObject<ResFile>(Tools.FormatStr(file_res_aes), Encoding.UTF8);
                             if (resfile.statusCode != "1")
                             {
@@ -1481,17 +1496,19 @@ namespace LisPacsDataUpload
                             json_pacs = Tools.AESEncrypt(json_pacs, Tools.pwd, vi_pacs);
                             //string res_pacs = Tools.WSCenterData(url, json_pacs, vi_pacs, Tools.accessToken, 1);
                             string res_pacs = string.Empty;
+                            string res_aes_pacs = string.Empty;
                             try
                             {
                                 file_res = Tools.WSCenterData(lis_upload_url, json_pacs, vi_pacs, Tools.accessToken, 1);
+                                 res_aes_pacs = Tools.AESDecrypt(res_pacs, Tools.pwd, vi_pacs);
                             }
                             catch (Exception e)
                             {
                                 //写入后台表机构记录上传错误的数据
                                 LogHelper.Info("写入后台表机构记录上传错误的数据2");
 
-                               string errSql = @"Insert Into 互认报告上传异常记录(BUSINESSNUMBER,REPORTID,TYPE,ATTACHMENTID,REQUEST_DATA,IV,UPLOADED,UPLOADE_TIME) Values('{0}','{1}',2,'{2}',{3},{4},0,to_date('{5}','yyyy/mm/dd hh24:mi:ss'))";
-                                errSql = string.Format(errSql, dt.Rows[i]["businessNumber"].ToString(), dt.Rows[i]["reportId"].ToString(), resfile.mainBody.attachmentId, json_pacs, vi_pacs, DateTime.Now.ToString("yyyy/MM/dd HH:mm:ss"));
+                               string errSql = @"Insert Into 互认报告上传异常记录(BUSINESSNUMBER,REPORTID,TYPE,ATTACHMENTID,REQUEST_DATA,REASON,IV,UPLOADED,UPLOADE_TIME) Values('{0}','{1}',2,'{2}','{3}','{4}','{5}',0,to_date('{6}','yyyy/mm/dd hh24:mi:ss'))";
+                                errSql = string.Format(errSql, dt.Rows[i]["businessNumber"].ToString(), dt.Rows[i]["reportId"].ToString(), resfile.mainBody.attachmentId,null, e.Message, vi_pacs, DateTime.Now.ToString("yyyy/MM/dd HH:mm:ss"));
                                 int err_count = 0;
                                 if (zlhr == zlhrConstant_true)
                                 {
@@ -1506,7 +1523,7 @@ namespace LisPacsDataUpload
                                 LogHelper.Info(e.Message);
                                 continue;
                             }
-                            string res_aes_pacs = Tools.AESDecrypt(res_pacs, Tools.pwd, vi_pacs);
+                            
                             ResPacs respacs = Tools.JsonToObject<ResPacs>(Tools.FormatStr(res_aes_pacs), Encoding.UTF8);
                             LogHelper.Info(reportId + ":lis2上传检验报告的接口状态==" + JsonConvert.SerializeObject(respacs));
                             if (respacs.statusCode != "1")
@@ -1655,16 +1672,18 @@ namespace LisPacsDataUpload
                             string file_url = "http://40.26.204.3:8084/phimp-napi/attachMent/upload";
                             //string file_res = Tools.WSCenterData(file_url, file_json, file_vi, Tools.accessToken, 1);
                             string file_res=string.Empty;
+                            string file_res_aes = string.Empty;
                             try
                             {
                                 file_res = Tools.WSCenterData(file_url, file_json, file_vi, Tools.accessToken, 1);
+                                 file_res_aes = Tools.AESDecrypt(file_res, Tools.pwd, file_vi);
                             }
                             catch (Exception e)
                             {
                                 LogHelper.Error(e, "pacs 报告生成上传失败");
                                 continue;
                             }
-                            string file_res_aes = Tools.AESDecrypt(file_res, Tools.pwd, file_vi);
+                            
                             ResFile resfile = Tools.JsonToObject<ResFile>(Tools.FormatStr(file_res_aes), Encoding.UTF8);
                             if (resfile.statusCode != "1")
                             {
@@ -1797,16 +1816,18 @@ namespace LisPacsDataUpload
                             json_pacs = Tools.AESEncrypt(json_pacs, Tools.pwd, vi_pacs);
                             //string res_pacs = Tools.WSCenterData(url_pacs, json_pacs, vi_pacs, Tools.accessToken, 1);
                             string res_pacs = string.Empty;
+                            string res_aes_pacs = string.Empty;
                             try
                             {
                                 res_pacs = Tools.WSCenterData(url_pacs, json_pacs, vi_pacs, Tools.accessToken, 1);
+                                 res_aes_pacs = Tools.AESDecrypt(res_pacs, Tools.pwd, vi_pacs);
                             }
                             catch (Exception e)
                             {
                                 LogHelper.Error(e, "pacs 报告上传失败");
                                 continue;
                             }
-                            string res_aes_pacs = Tools.AESDecrypt(res_pacs, Tools.pwd, vi_pacs);
+                            
                             //LogHelper.Info("[PACS]上传出参:" + res_aes_pacs);
                             ResPacs respacs = Tools.JsonToObject<ResPacs>(Tools.FormatStr(res_aes_pacs), Encoding.UTF8);
                             if (respacs.statusCode != "1")
@@ -1954,16 +1975,18 @@ namespace LisPacsDataUpload
                         json_pacs = Tools.AESEncrypt(json_pacs, Tools.pwd, vi_pacs);
                         //string res_pacs = Tools.WSCenterData(url_pacs, json_pacs, vi_pacs, Tools.accessToken, 1);
                         string res_pacs = string.Empty;
+                        string res_aes_pacs = string.Empty;
                         try
                         {
                             res_pacs = Tools.WSCenterData(url_pacs, json_pacs, vi_pacs, Tools.accessToken, 1);
+                             res_aes_pacs = Tools.AESDecrypt(res_pacs, Tools.pwd, vi_pacs);
                         }
                         catch (Exception e)
                         {
                             LogHelper.Error(e, "pacs 报告补传失败");
                             continue;
                         }
-                        string res_aes_pacs = Tools.AESDecrypt(res_pacs, Tools.pwd, vi_pacs);
+                        
                         //LogHelper.Info("[PACS]上传出参:" + res_aes_pacs);
                         ResPacs respacs = Tools.JsonToObject<ResPacs>(Tools.FormatStr(res_aes_pacs), Encoding.UTF8);
                         if (respacs.statusCode != "1")
@@ -2033,8 +2056,10 @@ namespace LisPacsDataUpload
                         {
                            string reportId =  dt.Rows[i]["reportId"].ToString();
                             string businessNumber = dt.Rows[i]["businessNumber"].ToString();
+                            string YZID = dt.Rows[i]["YZID"].ToString();
+                            string reportNumber = dt.Rows[i]["reportNumber"].ToString();
                             #region 获取报告数据并生成报告 开始
-
+                            /*
                             string orgName = dt.Rows[i]["orgName"].ToString();
                             string name = dt.Rows[i]["patientName"].ToString();
                             string sex = dt.Rows[i]["sex"].ToString();
@@ -2077,19 +2102,28 @@ namespace LisPacsDataUpload
                                 this.SetText(ShowLog);
                                 continue;
                             }
-                            //获取报告数据并生成报告 结束
+                            //获取报告数据并生成报告 结束*/
                             #endregion
-
-
                             // 这里需要获取原始报告
-
+                            string res = "";
+                            if (pacsSource==0)
+                            {
+                                res = PdfUtils.GeneratePacsPdf(pacsSource,reportNumber, null, YZID);
+                            }
+                            if (!res.Contains(".pdf"))
+                            {
+                                LogHelper.Info("生成pdf失败,原因是 = " + res);
+                                ShowLog = "生成pdf失败,原因是 =" + res;
+                                this.SetText(ShowLog);
+                                continue;
+                            }
+                            LogHelper.Info("生成pdf成功,地址为 = " + res);
 
                             //是否授权
                             if (!isAuthorization())
                             {
                                 continue;
                             }
-
                             string base64FileContent = Tools.FileToBase64Str(res);
 
                             ResFile resfile = PdfUtils.uploadFileToPlatform(file_url, base64FileContent);
@@ -2111,7 +2145,6 @@ namespace LisPacsDataUpload
                             countAll += 1;
 
                             //上传数据
-
                             List<PACS> list = PacsUploadServiceImpl.beginUploadPacsData(businessNumber,reportId);
                             if (list.Count < 1)
                             {
@@ -2152,25 +2185,29 @@ namespace LisPacsDataUpload
                             {
                                 continue;
                             }
-
                             string json_pacs = JsonConvert.SerializeObject(plist);
-                            //string json_pacs = Tools.ObjectToJson<List<PACS>>(list, Encoding.UTF8);
+                            //string json_pacs = Tools.ObjectToJson<List<PACS>>(plist, Encoding.UTF8);
+                           // LogHelper.Info("pacs参数="+ json_pacs);
                             json_pacs = "{\"mainBody\":" + json_pacs + "}";
+
+                            LogHelper.Info("pacs参数=" + json_pacs);
                             string json_pacs_log = json_pacs;
                             string vi_pacs = Tools.GuidTo16String();
                             json_pacs = Tools.AESEncrypt(json_pacs, Tools.pwd, vi_pacs);
                             //string res_pacs = Tools.WSCenterData(pacs_upload_url, json_pacs, vi_pacs, Tools.accessToken, 1);
                             string res_pacs = string.Empty;
+                            string res_aes_pacs = string.Empty;
                             try
                             {
                                 res_pacs = Tools.WSCenterData(pacs_upload_url, json_pacs, vi_pacs, Tools.accessToken, 1);
+                                 res_aes_pacs = Tools.AESDecrypt(res_pacs, Tools.pwd, vi_pacs);
                             }
                             catch (Exception e)
                             {
                                 LogHelper.Error(e, "pacs 报告上传失败");
                                 continue;
                             }
-                            string res_aes_pacs = Tools.AESDecrypt(res_pacs, Tools.pwd, vi_pacs);
+                            
                             //LogHelper.Info("[PACS]上传出参:" + res_aes_pacs);
                             ResPacs respacs = Tools.JsonToObject<ResPacs>(Tools.FormatStr(res_aes_pacs), Encoding.UTF8);
                             if (respacs.statusCode != "1")
@@ -2204,9 +2241,9 @@ namespace LisPacsDataUpload
                     #endregion
                     #region 2、补传失败数据
                     //上传数据
-                    LogHelper.Info("PACS补传失败数据");
+                    LogHelper.Info("PACS补传数据");
 
-                    ShowLog = "PACS补传失败数据开始";
+                    ShowLog = "PACS补传数据开始";
                     this.SetText(ShowLog);
 
                     List<PACS> list_pc = PacsUploadServiceImpl.completUploadPacsData();
@@ -2249,22 +2286,24 @@ namespace LisPacsDataUpload
                         }
                         string json_pacs = JsonConvert.SerializeObject(plist_pc);
                         //string json_pacs = Tools.ObjectToJson<List<PACS>>(list_pc[i], Encoding.UTF8);
-                        json_pacs = "{\"mainBody\":[" + json_pacs + "]}";
+                        json_pacs = "{\"mainBody\":" + json_pacs + "}";
                         string json_pacs_log = json_pacs;
                         string vi_pacs = Tools.GuidTo16String();
                         json_pacs = Tools.AESEncrypt(json_pacs, Tools.pwd, vi_pacs);
                         //string res_pacs = Tools.WSCenterData(pacs_upload_url, json_pacs, vi_pacs, Tools.accessToken, 1);
                         string res_pacs = string.Empty;
+                        string res_aes_pacs = string.Empty;
                         try
                         {
                             res_pacs = Tools.WSCenterData(pacs_upload_url, json_pacs, vi_pacs, Tools.accessToken, 1);
+                             res_aes_pacs = Tools.AESDecrypt(res_pacs, Tools.pwd, vi_pacs);
                         }
                         catch (Exception e)
                         {
                             LogHelper.Error(e, "pacs 报告上传失败");
                             continue;
                         }
-                        string res_aes_pacs = Tools.AESDecrypt(res_pacs, Tools.pwd, vi_pacs);
+                        
                         //LogHelper.Info("[PACS]上传出参:" + res_aes_pacs);
                         ResPacs respacs = Tools.JsonToObject<ResPacs>(Tools.FormatStr(res_aes_pacs), Encoding.UTF8);
                         if (respacs.statusCode != "1")

+ 3 - 1
LisPacsDataUpload/Models/PACS.cs

@@ -87,7 +87,9 @@ namespace LisPacsDataUpload.Models
         public string STUDYUID { get; set; }  //  检查 UID,DICOM 中协议中影像检查唯一标识
 
 
-        public string YZID { get; set; }   //医嘱id   对应多检查的医嘱  相关部位的相关id
+        public string YZID { get; set; }   //医嘱id   对应多检查的医嘱  相关部位的相关id,
+        public string REPORTNUMBER { get; set; }   //报表编号
+
 
 
     }

+ 37 - 0
LisPacsDataUpload/SqlServerHelper.cs

@@ -17,6 +17,12 @@ namespace LisPacsDataUpload
 
         }
 
+        public static string GetPacsConnStr()
+        {
+            return ConfigurationManager.ConnectionStrings["SqlServerConnectionToPacs"].ConnectionString;
+
+        }
+
         public static DataTable ExecuteQuery(string query)
         {
             using (SqlConnection connection = new SqlConnection(GetConnStr()))
@@ -68,6 +74,37 @@ namespace LisPacsDataUpload
             return pdfUrls;
         }
 
+        //给三方pacs 连接库使用
+        public static List<string> GetPacsPdfUrlList(string querySql)
+        {
+            var pdfUrls = new List<string>();
+
+            using (SqlConnection connection = new SqlConnection(GetPacsConnStr()))
+            {
+                SqlCommand command = new SqlCommand(querySql, connection);
+
+                try
+                {
+                    connection.Open();
+                    SqlDataReader reader = command.ExecuteReader();
+
+                    while (reader.Read())
+                    {
+                        // 假设 pdfUrl 列不为空,并且数据库中的数据类型与 string 兼容
+                        string pdfUrl = reader.GetString(reader.GetOrdinal("pdfUrl"));
+                        pdfUrls.Add(pdfUrl);
+                    }
+                }
+                catch (Exception ex)
+                {
+                    LogHelper.Info("An error occurred: " + ex.Message);
+                    // 在这里添加适当的错误处理逻辑,比如日志记录
+                }
+            }
+
+            return pdfUrls;
+        }
+
         public static DataRow ExecuteSingleRowQuery(string query)
         {
 

+ 2 - 0
LisPacsDataUpload/bin/Release/LisPacsDataUpload.exe.config

@@ -11,6 +11,8 @@
     <add key="start_time" value="7"/>
     <!--是否上传检查数据,1:上传,0不上传-->
     <add key="pacs" value="0"/>
+	  <!--是否上传lis数据,1:上传,0不上传-->
+	  <add key="lis" value="0"/>
     <!--清除多久以前已上传的数据(单位:月),整数,小于1不删除-->
     <add key="upload_time" value="1"/>
 

+ 101 - 10
LisPacsDataUpload/business/PdfUtils.cs

@@ -114,7 +114,7 @@ namespace LisPacsDataUpload.business
             else if(lisVersion == 3)
             {
                 // 三方lis
-                string three_sql = @"select pdfUrl from three_lis_pdf where yzid ='" + bbid+"'";
+                string three_sql = @"select pdfUrl from three_lis_pdf where yzid ='" + bbid+ "' or yzid ='"+ reportNumber + "'" ;
                 LogHelper.Info("three_sql  "+ three_sql);
                 List<string> pdfs = SqlServerHelper.GetPdfUrlList(three_sql);
                 if (pdfs != null && pdfs.Count()>0)
@@ -138,6 +138,7 @@ namespace LisPacsDataUpload.business
         }
 
 
+
         public static void GetPdfFromJpg(string jpgUrl,string pdfUrl)
         {
             LogHelper.Info("开始从jpg转换pdf");
@@ -168,7 +169,9 @@ namespace LisPacsDataUpload.business
         public static void GetPdfFromJpgList(List<string> jpgUrls, string pdfUrl)
         {
             LogHelper.Info("开始从jpg列表转换pdf");
-            using (FileStream fs = new FileStream(pdfUrl, FileMode.Create))
+            try
+            {
+                using (FileStream fs = new FileStream(pdfUrl, FileMode.Create))
             {
                 // 创建一个文档对象
                 Document document = new Document();
@@ -177,8 +180,7 @@ namespace LisPacsDataUpload.business
                 document.Open();
                 foreach (string jpgUrl in jpgUrls)
                 {
-                    try
-                    {
+                    
                         LogHelper.Info("三方pdfUrl="+ jpgUrl);
                         // 创建一个图像对象并加载 JPG 文件
                         Image image = Image.GetInstance(jpgUrl);
@@ -200,14 +202,16 @@ namespace LisPacsDataUpload.business
                         // 添加一个空行以分隔图片(可选)
                         document.Add(new Paragraph(string.Empty));
                         document.NewPage(); // 如果需要在每张图片后添加新页,则使用此行
-                    }
-                    catch (Exception ex)
-                    {
-                        LogHelper.Error(ex ,"无法加载图片"+jpgUrl);
-                    }
+                   
                 }
                 document.Close();
             }
+            }
+            catch (Exception ex)
+            {
+                pdfUrl = "无法加载图片";
+                LogHelper.Error(ex, "无法加载图片" );
+            }
             LogHelper.Info("JPG 列表转换为 PDF 成功!");
         }
 
@@ -215,11 +219,98 @@ namespace LisPacsDataUpload.business
         public static string GeneratePdf(int lisVersion, string reportNumber, string bbid, string yzid)
         {
             string pdfUrl = getPdfParamByLisVersion(lisVersion, reportNumber, bbid, yzid);
-            LogHelper.Info("GeneratePdf==");
             return pdfUrl;
         }
 
 
+
+        public static string GeneratePacsPdf(int pacsVersion, string reportNumber, string bbid, string yzid)
+        {
+            string pdfUrl = getPdfParamByPacsVersion(pacsVersion, reportNumber, bbid, yzid);
+            return pdfUrl;
+        }
+
+        public static string getPdfParamByPacsVersion(int pacsVersion, string reportNumber, string bbid, string yzid)
+        {
+
+            string dicLis = AppDomain.CurrentDomain.BaseDirectory + "Pacs\\";
+            if (!Directory.Exists(dicLis))
+            {
+                Directory.CreateDirectory(dicLis);
+            }
+            string path = dicLis + "PACS" + yzid + ".pdf";
+            Paramater paramter = new Paramater
+            {
+                RePortCode = reportNumber,
+                PdfPath = $"pdf={path}",
+                InvokeType = 4
+            };
+            if (pacsVersion == 0)
+            {
+                //老版pacs
+
+                /* select 'ZLCISBILL00'||b.页面||'-2' As 单据编号,a.id as ID 
+                      From 病人医嘱记录 a, 病历文件列表 b, 病历单据应用 c
+                     where a.id =: 医嘱id
+                       and a.诊疗项目ID = c.诊疗项目ID
+                       and c.病历文件id = b.ID
+                       and c.应用场合 = a.病人来源*/
+                paramter.ZlSysCode = 100;
+                paramter.Params.Add(new SubParameter { Param = $"医嘱id={yzid}" });
+                string strJson = JsonConvert.SerializeObject(paramter);
+                LogHelper.Info("strJson==" + strJson);
+                if (!Init())
+                {
+                    LogHelper.Info("Init初始化异常");
+                    return "Init初始化异常";
+                }
+                //生成pdf成功
+                if (OutPdf(strJson))
+                {
+                    return path;
+                }
+
+            }else if (pacsVersion == 2)
+            {
+                //专业版pacs 
+                string sql_zlhr = @"select standard_url from 互认配置表";
+                DataTable dt_lis = OracleHelper<object>.RunQueryDS(sql_zlhr);
+                string standard_url = dt_lis.Rows[0]["standard_url"].ToString();
+
+                string jsonTemplate = "{\"input\":{\"head\":{\"bizno\":\"S5031\",\"sysno\":\"zlhr\",\"tarno\":\"ZLHIS\",\"time\":\"{time}\",\"action_no\":\"{action_no}\"},\"req_info\":{\"query_key\":\"2\",\"query_content\":\"{yzid}\"}}}";
+                // 使用字符串插值替换占位符
+                string data = jsonTemplate
+                    .Replace("{yzid}", yzid)
+                    .Replace("{time}", DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"))
+                    .Replace("{action_no}", Guid.NewGuid().ToString());
+                string responseString = Tools.WSDataToZlsoftInterface(standard_url, data);
+
+                ZlsoftOutVO zlsoftOutVO = JsonConvert.DeserializeObject<ZlsoftOutVO>(responseString);
+
+                if (!"A".Equals(zlsoftOutVO.input.ack_info.exe_status))
+                {
+                    return zlsoftOutVO.input.ack_info.err_msg;
+                }
+                return zlsoftOutVO.input.file_info.rpt_content;
+            }
+            else if (pacsVersion == 3)
+            {
+                //三方pacs
+                
+                string three_sql = @"select pdfUrl from three_pacs_pdf where yzid ='" + bbid + "'" ;
+                LogHelper.Info("three_pacs_sql  " + three_sql);
+                List<string> pdfs = SqlServerHelper.GetPacsPdfUrlList(three_sql);
+                if (pdfs != null && pdfs.Count() > 0)
+                {
+                    GetPdfFromJpgList(pdfs, path);
+                    return path;
+                }
+                return "三方lispdf报告获取失败";
+            }
+
+            return "失败";
+        }
+
         private static bool AcceptAllCertificates(object sender, X509Certificate certificate, X509Chain chain,
             bool sslPolicyErrors)
         {

+ 44 - 32
ZLPlugin_LisPacs_MR/LisPacs_MR_Bll.cs

@@ -181,10 +181,10 @@ namespace ZLPlugin_LisPacs_MR
                                     '{6}' ""jzDoctorName"",
                                     d.编码 ""jzDeptCode"",
                                     d.名称 ""jzDeptName"",
-                                    a.住院号 ""businessNumber"",
+                                    nvl(a.住院号,b.留观号) ""businessNumber"",
                                     '{2}' ""standardItemId"",
-                                    '' ""reportStartTime"",
-                                    '' ""reportEndTime"",
+                                    TO_CHAR(SYSDATE-30, 'YYYY-MM-DD HH24:MI:SS') ""reportStartTime"",
+                                    TO_CHAR(SYSDATE, 'YYYY-MM-DD HH24:MI:SS') ""reportEndTime"",
                                     '{3}' ""hrType"",
                                     TO_CHAR(SYSDATE, 'YYYY-MM-DD HH24:MI:SS') ""applyTime"",
                                     '{4}' ""hisApplyCode"",
@@ -219,8 +219,8 @@ namespace ZLPlugin_LisPacs_MR
                                     d.名称 ""jzDeptName"",
                                     a.门诊号 ""businessNumber"",
                                     '{1}' ""standardItemId"",
-                                    '' ""reportStartTime"",
-                                    '' ""reportEndTime"",
+                                    TO_CHAR(SYSDATE-30, 'YYYY-MM-DD HH24:MI:SS') ""reportStartTime"",
+                                    TO_CHAR(SYSDATE, 'YYYY-MM-DD HH24:MI:SS') ""reportEndTime"",
                                     '{2}' ""hrType"",
                                     TO_CHAR(SYSDATE, 'YYYY-MM-DD HH24:MI:SS') ""applyTime"",
                                     '{3}' ""hisApplyCode"",
@@ -403,11 +403,11 @@ namespace ZLPlugin_LisPacs_MR
             return res;
         }
 
-        public static int InsertLis(LISItem lis, long lngPatientID, long lngClinicID, string date, string no,long yzXgID)
+        public static int InsertLis(LISItem lis, long lngPatientID, long lngClinicID, string date, string no,long yzXgID, long yzID)
         {
-            string sql = @"Insert Into ZLLPMR.互认_LIS(LISCHECKREPORTID,REPORTNAME,ORGNAME,REPORTTIME,病人ID,主页ID,TIME,OPERATORNO,医嘱id) 
-                            Values('{0}','{1}','{2}',to_date('{3}','yyyy/mm/dd hh24:mi:ss'),{4},{5},to_date('{6}','yyyy/mm/dd hh24:mi:ss'),'{7}',{8})";
-            sql = string.Format(sql, lis.LisCheckReportId, lis.ReportName, lis.OrgName, lis.ReportTime, lngPatientID, lngClinicID, date, no, yzXgID);
+            string sql = @"Insert Into ZLLPMR.互认_LIS(LISCHECKREPORTID,REPORTNAME,ORGNAME,REPORTTIME,病人ID,主页ID,TIME,OPERATORNO,医嘱id,相关id) 
+                            Values('{0}','{1}','{2}',to_date('{3}','yyyy/mm/dd hh24:mi:ss'),{4},{5},to_date('{6}','yyyy/mm/dd hh24:mi:ss'),'{7}',{8},{9})";
+            sql = string.Format(sql, lis.LisCheckReportId, lis.ReportName, lis.OrgName, lis.ReportTime, lngPatientID, lngClinicID, date, no, yzXgID,yzID);
             Log.Info("InsertLis:" + sql);
             int res = Tools.ExecuteSql(sql);
             return res;
@@ -415,21 +415,21 @@ namespace ZLPlugin_LisPacs_MR
 
 
 
-        public static void InsertLisItem(ItemListItem item, string id, long lngPatientID, long lngClinicID, string date)
+        public static int InsertLisItem(ItemListItem item, string id, long lngPatientID, long lngClinicID, string date)
         {
             string sql = @"Insert Into ZLLPMR.互认_LISITEMS(LISCHECKREPORTID,ITEMCODE,ITEMNAME,RESULT,UNIT,HINT,RANGE,STANDARDITEMID,TIME) 
                             Values('{0}','{1}','{2}','{3}','{4}','{5}','{6}','{7}',to_date('{8}','yyyy/mm/dd hh24:mi:ss'))";
             sql = string.Format(sql, id, item.ItemCode, item.ItemName, item.Result, item.Unit, item.Hint, item.Range, item.StandardItemId, date);
             //Log.Info("InsertLisItem:" + sql);
-            Tools.ExecuteSql(sql);
+            return Tools.ExecuteSql(sql);
         }
 
-        public static int InsertPacs(PACSItem item, long lngPatientID, long lngClinicID, string no,long yzid)
+        public static int InsertPacs(PACSItem item, long lngPatientID, long lngClinicID, string no,long yzxgid,long yzid)
         {
-            string sql = @"Insert Into ZLLPMR.互认_PACS(PACSCHECKREPORTID,ITEMNAME,REPORTTIME,CHECKTYPENAME,POSITIONNAME,STANDARDITEMID,DIAGNOSRESULT,ORGNAME,病人ID,主页ID,TIME,OPERATORNO,医嘱id,REPORTTYPECODE) 
-                            Values('{0}','{1}',to_date('{2}','yyyy/mm/dd hh24:mi:ss'),'{3}','{4}','{5}','{6}','{7}',{8},{9},sysdate,'{10}','{11}','{12}')";
+            string sql = @"Insert Into ZLLPMR.互认_PACS(PACSCHECKREPORTID,ITEMNAME,REPORTTIME,CHECKTYPENAME,POSITIONNAME,STANDARDITEMID,DIAGNOSRESULT,ORGNAME,病人ID,主页ID,TIME,OPERATORNO,医嘱id,REPORTTYPECODE,相关id) 
+                            Values('{0}','{1}',to_date('{2}','yyyy/mm/dd hh24:mi:ss'),'{3}','{4}','{5}','{6}','{7}',{8},{9},sysdate,'{10}','{11}','{12}','{13}')";
             //var lis = result.ResultText[0].LIS[0];
-            sql = string.Format(sql, item.PacsCheckReportId, item.ItemName, item.ReportTime, item.CheckTypeName, item.PositionName, item.StandardItemId, Tools.FormatStr(item.DiagnosResult), item.OrgName, lngPatientID, lngClinicID, no, yzid, item.reportTypeCode);
+            sql = string.Format(sql, item.PacsCheckReportId, item.ItemName, item.ReportTime, item.CheckTypeName, item.PositionName, item.StandardItemId, Tools.FormatStr(item.DiagnosResult), item.OrgName, lngPatientID, lngClinicID, no, yzxgid, item.reportTypeCode,yzid);
             Log.Info("InsertPacs==>"+sql);
             return Tools.ExecuteSql(sql);
         }
@@ -475,7 +475,7 @@ namespace ZLPlugin_LisPacs_MR
                                 string date = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss");
                                 //Log.Info("items.code:" + items.code);
                                 //Log.Info("items.id:" + items.id);
-                                int res = InsertLis(lis[i], lngPatientID, lngClinicID, date, no, long.Parse(items.id));
+                                int res = InsertLis(lis[i], lngPatientID, lngClinicID, date, no, long.Parse(items.id), long.Parse(items.yzid));
                                 //Log.Info("res:" + res);
                                 if (res > 0)
                                 {
@@ -503,7 +503,8 @@ namespace ZLPlugin_LisPacs_MR
             }
             if (pacs != null)
             {
-                long id =long.Parse(listpacs[0].id);
+                long xgid =long.Parse(listpacs[0].id);
+                long yzid =long.Parse(listpacs[0].yzid);
                 for (int i = 0; i < pacs.Count; i++)
                 {
                     
@@ -511,17 +512,18 @@ namespace ZLPlugin_LisPacs_MR
                     {
                         if (pacs[i].reportTypeCode == items.type)
                         {
-                            
-                            id = long.Parse(items.id);
+
+                            xgid = long.Parse(items.id);
+                            yzid = long.Parse(items.yzid);
                             break;
                         }
                     }
-                    int res = InsertPacs(pacs[i], lngPatientID, lngClinicID, no, id);
+                    int res = InsertPacs(pacs[i], lngPatientID, lngClinicID, no, xgid, yzid);
                     if (res > 0)
                     {
                         if (pacs_id == -1)
                         {
-                            pacs_id = id;
+                            pacs_id = xgid;
                         }
                     }
                 }
@@ -568,7 +570,8 @@ namespace ZLPlugin_LisPacs_MR
                                 //insert 互认_lis
                                 string date = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss");
                                 string xgid = items.id;
-                                int res = InsertLis(lis[i], lngPatientID, lngClinicID, date, no, long.Parse(xgid));
+                                string yzid = items.yzid;
+                                int res = InsertLis(lis[i], lngPatientID, lngClinicID, date, no, long.Parse(xgid), long.Parse(yzid));
                                 if (res > 0)
                                 {
                                     if (lis_id == -1)
@@ -589,7 +592,9 @@ namespace ZLPlugin_LisPacs_MR
             }
             if (pacs != null)
             {
-                long id = long.Parse(listpacs[0].id);
+               // long id = long.Parse(listpacs[0].id);
+                long xgid = long.Parse(listpacs[0].id);
+                long yzid = long.Parse(listpacs[0].yzid);
                 for (int i = 0; i < pacs.Count; i++)
                 {
                     foreach (var items in listpacs)
@@ -597,16 +602,17 @@ namespace ZLPlugin_LisPacs_MR
                         if (pacs[i].reportTypeCode == items.type)
                         {
 
-                            id = long.Parse(items.id);
+                            xgid = long.Parse(items.id);
+                            yzid = long.Parse(items.yzid);
                             break;
                         }
                     }
-                    int res = InsertPacs(pacs[i], lngPatientID, lngClinicID, no, id);
+                    int res = InsertPacs(pacs[i], lngPatientID, lngClinicID, no, xgid, yzid);
                     if (res > 0)
                     {
                         if (pacs_id == -1)
                         {
-                            pacs_id = id;
+                            pacs_id = xgid;
                         }
                     }
                 }
@@ -623,6 +629,8 @@ namespace ZLPlugin_LisPacs_MR
             var lis = result.ResultText[0].LIS;
             var pacs = result.ResultText[0].PACS;
 
+
+
             if (lis != null)
             {
                 Log.Info("lis.Count=" + lis.Count);
@@ -650,7 +658,8 @@ namespace ZLPlugin_LisPacs_MR
                             {
                                 string date = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss");
                                 long xgid = long.Parse(items.id);
-                                int res = InsertLis(lis[i], lngPatientID, lngClinicID, date, no, xgid);
+                                long yzid = long.Parse(items.yzid);
+                                int res = InsertLis(lis[i], lngPatientID, lngClinicID, date, no, xgid, yzid);
                                 if (res > 0)
                                 {
                                     lis_id= xgid;
@@ -674,13 +683,14 @@ namespace ZLPlugin_LisPacs_MR
                 {
                     for (int i = 0; i < pacs.Count; i++)
                     {
-                        long id = long.Parse(items.id);
+                        long yzxgid = long.Parse(items.id);
+                        long yzid = long.Parse(items.yzid);
                         if (pacs[i].StandardItemId.Contains(items.code))
                         {
-                            int res = InsertPacs(pacs[i], lngPatientID, lngClinicID, no, id);
+                            int res = InsertPacs(pacs[i], lngPatientID, lngClinicID, no, yzxgid, yzid);
                             if (res > 0)
                             {
-                                pacs_id=id;
+                                pacs_id= yzxgid;
                             }
                             break;
                         }
@@ -694,14 +704,15 @@ namespace ZLPlugin_LisPacs_MR
             /// 是否互认
             /// </summary>
             /// <returns></returns>
-            public static void IsAgree(out int res,out int date,out int yzzState)
+            public static void IsAgree(out int res,out int date,out int yzzState,out bool isForceSace)
         {
             res = 1;
             date = 20000;
             yzzState = 0;
+            isForceSace = false;
             try
             {
-                string sql = @"Select 互认 As AGREE,WAITINGDATE From zllpmr.互认配置表";
+                string sql = @"Select 互认 As AGREE,WAITINGDATE,isForceSace  From zllpmr.互认配置表";
                 Recordset rd = new Recordset();
                 Tools.QueryTable(sql, out rd);
                 if (!rd.EOF)
@@ -709,6 +720,7 @@ namespace ZLPlugin_LisPacs_MR
                     rd.MoveFirst();
                     res = int.Parse(rd.Fields["AGREE"].Value.ToString());
                     date = int.Parse(rd.Fields["WAITINGDATE"].Value.ToString());
+                    isForceSace = bool.Parse(rd.Fields["isForceSace"].Value.ToString());
                     //yzzState = int.Parse(rd.Fields["一张纸"].Value.ToString());
                 }
             }

+ 3 - 3
ZLPlugin_LisPacs_MR/Properties/AssemblyInfo.cs

@@ -4,12 +4,12 @@ using System.Runtime.InteropServices;
 // General Information about an assembly is controlled through the following 
 // set of attributes. Change these attribute values to modify the information
 // associated with an assembly.
-[assembly: AssemblyTitle("当前病区id,开单提当前操作人,针对合单互认")]
-[assembly: AssemblyDescription("开多少个医嘱 就互认多少,针对合单互认")]
+[assembly: AssemblyTitle("增加报错后是否强制保存参数")]
+[assembly: AssemblyDescription("开多少个医嘱 就互认多少,针对合单互认,互认lis 调整为id")]
 [assembly: AssemblyConfiguration("")]
 [assembly: AssemblyCompany("zlsoft")]
 [assembly: AssemblyProduct("ZLPlugin_LisPacs_MR")]
-[assembly: AssemblyCopyright("Copyright ©  2024-1.0.2.2")]
+[assembly: AssemblyCopyright("Copyright ©  2024-1.0.2.5")]
 [assembly: AssemblyTrademark("")]
 [assembly: AssemblyCulture("")]
 

+ 14 - 1
ZLPlugin_LisPacs_MR/Tools.cs

@@ -84,6 +84,19 @@ namespace ZLPlugin_LisPacs_MR
             }
         }
         public static int ExecuteSql(string sql)
+        {
+            int result = 1;
+                object missing = System.Reflection.Missing.Value;
+                Command Command = new Command();
+                Command.ActiveConnection = Connection;
+                Command.CommandText = sql;
+                Command.Execute(out missing, ref missing, (int)CommandTypeEnum.adCmdText);
+            
+            return result;
+        }
+
+
+       /* public static int ExecuteSql(string sql)
         {
             int result = 1;
             try
@@ -102,7 +115,7 @@ namespace ZLPlugin_LisPacs_MR
                 Connection.Close();
             }
             return result;
-        }
+        }*/
 
         public static int ExecuteStoredProc(long 病人id, long 主医嘱id, string json, int lis, int pacs)
         {

+ 32 - 11
ZLPlugin_LisPacs_MR/clsPlugin.cs

@@ -8,6 +8,9 @@
 //1.0.1.9  检验互认混乱解决
 //1.0.2.0  当前病区解决
 //1.0.2.1  住院门诊  开单发送数据 信息提当前操作人的信息 
+//1.0.2.2 开多少个医嘱 就互认多少
+//1.0.2.3 互认lis 医嘱id 调整为医嘱id
+// 1.0.2.4  门诊留观病人没有住院号  为空取门诊号 
 //-----------------------------------------------------------------------------
 // 历史更新纪录
 //-----------------------------------------------------------------------------
@@ -75,6 +78,7 @@ namespace ZLPlugin_LisPacs_MR
             // 1. 需要定义到类内部的全局变量,使用静态变量static;
             // 2. 需要使用的静态变量初始化,放入下方初始化操作中,以避免重复调用 
             
+            Log.Info("version==1.0.2.4");
             Log.Info("IsInit=="+ IsInit);
             if (!IsInit)
             {
@@ -111,12 +115,16 @@ namespace ZLPlugin_LisPacs_MR
             //'      lngSendID=发送号(病人医嘱发送.id)
             Log.Info("AdviceSend   lngModual == "+ lngModual+ "  lngSys = " + lngSys+ " lngSendID = "+ lngSendID);
             SocketClient clientSend = new SocketClient("127.0.0.1", 6061);
+            //是否强制保存
+            bool isForceSace = false;
             try
             {
                 int res = 1;
                 int waittingdate = 0;
                 int yzzState = 0;
-                LisPacs_MR_Bll.IsAgree(out res, out waittingdate,out yzzState);
+                
+
+                LisPacs_MR_Bll.IsAgree(out res, out waittingdate,out yzzState,out isForceSace);
                 if (res == 0)//互认关闭
                 {
                     return true;
@@ -206,6 +214,9 @@ namespace ZLPlugin_LisPacs_MR
                 MessageBox.Show(ex.Message, "中联软件", MessageBoxButtons.YesNo, MessageBoxIcon.Warning);
                 Log.Info(ex.Message);
                 Log.Info(ex.StackTrace);
+
+                return isForceSace;
+
             }
             if (clientSend != null)
             {
@@ -239,16 +250,20 @@ namespace ZLPlugin_LisPacs_MR
                 return true;
             }
             SocketClient socketClient = new SocketClient("127.0.0.1", 6061);
+            //是否强制保存
+            bool isForceSace = false;
             try
             {
                 int res = 1;
                 int waittingdate = 0;
                 int yzzState = 0;
-                LisPacs_MR_Bll.IsAgree(out res, out waittingdate, out yzzState);
+
+                LisPacs_MR_Bll.IsAgree(out res, out waittingdate, out yzzState,out isForceSace);
                 if (res == 0)//互认关闭
                 {
                     return true;
                 }
+                Log.Info("强制保存状态:" + isForceSace);
                 //一张纸有单独的项目和部件
                 /* if (yzzState==1)
                  {
@@ -259,7 +274,7 @@ namespace ZLPlugin_LisPacs_MR
                        }
                      #endregion
                  }*/
-               
+
                 string patientSource = ""; //病人来源
                 string code = "";  // 又算开单唯一id
                 string billProjectNames = "";  //开单项目名称
@@ -355,7 +370,7 @@ namespace ZLPlugin_LisPacs_MR
                 catch (Exception e)
                 {
                     Log.Info("接收失败!"+ e.Message);
-                    return false;
+                    return isForceSace;
                 }
                 Log.Info("listlis count!" + listlis.Count);
                 Log.Info("listpacs count!" + listpacs.Count);
@@ -394,16 +409,21 @@ namespace ZLPlugin_LisPacs_MR
             }
             catch (Exception ex)
             {
+                
                 MessageBox.Show(ex.Message, "中联软件", MessageBoxButtons.YesNo, MessageBoxIcon.Warning);
                 Log.Info(ex.Message);
-                Log.Info(ex.StackTrace);
-                Log.Info(ex.InnerException.StackTrace);
-                return false;
+                 Log.Info("异常后强制保存状态:" + isForceSace);
+                if (socketClient != null)
+                {
+                    socketClient.Close();
+                }
+                return isForceSace;
             }
-           /* if (socketClient != null)
-            {
-                socketClient.Close();
-            }*/
+             if (socketClient != null)
+             {
+                 socketClient.Close();
+             }
+            Log.Info("强制保存状态 over:" + isForceSace);
             return true;
         }
         private bool SaveData(int waittingdate, long lngPatientID, long lngClinicID, List<Codes> listlis, List<Codes> listpacs,int state)
@@ -446,6 +466,7 @@ namespace ZLPlugin_LisPacs_MR
             {
                 LisPacs_MR_Bll.CancelYz(lngPatientID, pacsId, 0, 1);
             }*/
+
             return true;
         }
         #endregion