Răsfoiți Sursa

人民医院报告问题解决

zackhua 6 luni în urmă
părinte
comite
07e9d07c36

+ 73 - 32
LisPacsDataUpload/Form1.cs

@@ -410,7 +410,7 @@ namespace LisPacsDataUpload
                         for (int i = 0; i < dt.Rows.Count; i++)
                         {
                             //生成pdf
-                            string GeneratePdfUrl = "未生成pdf成功";
+                            string generatePdfUrl = "未生成pdf成功";
                             if (zlhr == zlhrConstant_true)
                             {
                                 string requestId = dt.Rows[i]["requestId"].ToString(); // 临生免报告id
@@ -418,15 +418,29 @@ namespace LisPacsDataUpload
                                   and  dr.status  in ('3003', '3004') and  sr.id = " + requestId;
                                 DataTable dt_lis = OracleHelper<object>.PgQueryDS(sql_zlhr);
                                 string reportId = dt_lis.Rows[0]["id"].ToString();
-                                GeneratePdfUrl = PdfUtils.GeneratePdf(lisSource, reportId, reportId);
+                                generatePdfUrl = PdfUtils.GeneratePdf(lisSource, reportId, reportId);
                             }
                             else if(lisSource==3){
                                 string requestId = dt.Rows[i]["requestId"].ToString(); // 申请id
-                                GeneratePdfUrl = PdfUtils.GeneratePdf(lisSource, requestId, requestId);
-                                if (!GeneratePdfUrl.Contains(".pdf"))
+                                generatePdfUrl = PdfUtils.GeneratePdf(lisSource, requestId, requestId);
+                                if (!generatePdfUrl.Contains(".pdf"))
                                 {
-                                    LogHelper.Info("生成pdf失败,原因是 = " + GeneratePdfUrl);
-                                    ShowLog = "生成pdf失败,原因是 =" + GeneratePdfUrl;
+                                    LogHelper.Info("生成pdf失败,原因是 = " + generatePdfUrl);
+                                    ShowLog = "生成pdf失败,原因是 =" + generatePdfUrl;
+                                    this.SetText(ShowLog);
+                                    continue;
+                                }
+                            }
+                            else if (lisSource == 10)
+                            {
+                                string requestId = dt.Rows[i]["requestId"].ToString(); // 申请id
+                                string pdfUrl = dt.Rows[i]["pdfUrl"].ToString(); // 三方pdf地址 需要下载
+
+                                generatePdfUrl = PdfUtils.GeneratePdf(lisSource, pdfUrl, requestId);
+                                if (string.IsNullOrEmpty(generatePdfUrl))
+                                {
+                                    LogHelper.Info("生成pdf失败,原因是 = " + generatePdfUrl);
+                                    ShowLog = "生成pdf失败,原因是 =" + generatePdfUrl;
                                     this.SetText(ShowLog);
                                     continue;
                                 }
@@ -436,15 +450,15 @@ namespace LisPacsDataUpload
                                 //获取标本号 和报表编号
                                 string reportNumber = dt.Rows[i]["reportNumber"].ToString(); //报告编号
                                 string bbid = dt.Rows[i]["bbid"].ToString();   // 标本id
-                                GeneratePdfUrl = PdfUtils.GeneratePdf(lisSource, reportNumber, bbid);
-                                if (!GeneratePdfUrl.Contains(".pdf"))
+                                generatePdfUrl = PdfUtils.GeneratePdf(lisSource, reportNumber, bbid);
+                                if (!generatePdfUrl.Contains(".pdf"))
                                 {
-                                    LogHelper.Info("生成pdf失败,原因是 = " + GeneratePdfUrl);
-                                    ShowLog = "生成pdf失败,原因是 =" + GeneratePdfUrl;
+                                    LogHelper.Info("生成pdf失败,原因是 = " + generatePdfUrl);
+                                    ShowLog = "生成pdf失败,原因是 =" + generatePdfUrl;
                                     this.SetText(ShowLog);
                                     continue;
                                 }
-                                LogHelper.Info("生成pdf成功,地址为 = " + GeneratePdfUrl);
+                                LogHelper.Info("生成pdf成功,地址为 = " + generatePdfUrl);
                             }
                             /*string orgName = dt.Rows[i]["orgName"].ToString();
                             string name = dt.Rows[i]["patientName"].ToString();
@@ -515,15 +529,15 @@ namespace LisPacsDataUpload
 
                             //最新调整  需要获取 原始pdf 文件  存在场景  有三方lis、中联lis 、 以及专业版临生免 的报告 三种  
 
-                            LogHelper.Info("最后GeneratePdfUrl= " + GeneratePdfUrl);
+                            LogHelper.Info("最后GeneratePdfUrl= " + generatePdfUrl);
                             string attachmentFile = "";
                             if (zlhr == zlhrConstant_true)
                             {
-                                attachmentFile = GeneratePdfUrl;
+                                attachmentFile = generatePdfUrl;
                             }
                             else
                             {
-                                attachmentFile = Tools.FileToBase64Str(GeneratePdfUrl);
+                                attachmentFile = Tools.FileToBase64Str(generatePdfUrl);
                             }
                             //LogHelper.Info("上传的文件类容==" + attachmentFile);
                             //上传文件
@@ -1047,33 +1061,59 @@ namespace LisPacsDataUpload
                         for (int i = 0; i < dt.Rows.Count; i++)
                         {
 
-                            //获取标本号 和报表编号
-                            string reportNumber = dt.Rows[i]["reportNumber"].ToString(); //报告编号
-                            string bbid = dt.Rows[i]["bbid"].ToString();   // 标本id
-                                                                           //生成pdf
-                            string GeneratePdfUrl = "未生成pdf成功";
+                            //生成pdf
+                            string generatePdfUrl = "未生成pdf成功";
                             if (zlhr == zlhrConstant_true)
                             {
                                 string requestId = dt.Rows[i]["requestId"].ToString(); // 临生免报告id
-                                string sql_zlhr = @"select dr.id  from specimen_rec sr, diagnosticreport_rec dr where sr.id = dr.specmids::int
-                                    dr.status  in ('3003', '3004') and and sr.id = " + requestId;
-                                DataTable dt_lis = OracleHelper<object>.RunQueryDS(sql_zlhr);
+                                string sql_zlhr = @"select dr.id as id  from specimen_rec sr, diagnosticreport_rec dr where sr.id = dr.specmids::int
+                                  and  dr.status  in ('3003', '3004') and  sr.id = " + requestId;
+                                DataTable dt_lis = OracleHelper<object>.PgQueryDS(sql_zlhr);
                                 string reportId = dt_lis.Rows[0]["id"].ToString();
+                                generatePdfUrl = PdfUtils.GeneratePdf(lisSource, reportId, reportId);
+                            }
+                            else if (lisSource == 3)
+                            {
+                                string requestId = dt.Rows[i]["requestId"].ToString(); // 申请id
+                                generatePdfUrl = PdfUtils.GeneratePdf(lisSource, requestId, requestId);
+                                if (!generatePdfUrl.Contains(".pdf"))
+                                {
+                                    LogHelper.Info("生成pdf失败,原因是 = " + generatePdfUrl);
+                                    ShowLog = "生成pdf失败,原因是 =" + generatePdfUrl;
+                                    this.SetText(ShowLog);
+                                    continue;
+                                }
+                            }
+                            else if (lisSource == 10)
+                            {
+                                string requestId = dt.Rows[i]["requestId"].ToString(); // 申请id
+                                string pdfUrl = dt.Rows[i]["pdfUrl"].ToString(); // 三方pdf地址 需要下载
 
-                                GeneratePdfUrl = PdfUtils.GeneratePdf(lisSource, reportId, reportId);
-
+                                generatePdfUrl = PdfUtils.GeneratePdf(lisSource, pdfUrl, requestId);
+                                if (string.IsNullOrEmpty(generatePdfUrl))
+                                {
+                                    LogHelper.Info("生成pdf失败,原因是 = " + generatePdfUrl);
+                                    ShowLog = "生成pdf失败,原因是 =" + generatePdfUrl;
+                                    this.SetText(ShowLog);
+                                    continue;
+                                }
                             }
                             else
                             {
-                                GeneratePdfUrl = PdfUtils.GeneratePdf(lisSource, reportNumber, bbid);
-                                if (!GeneratePdfUrl.Contains(".pdf"))
+                                //获取标本号 和报表编号
+                                string reportNumber = dt.Rows[i]["reportNumber"].ToString(); //报告编号
+                                string bbid = dt.Rows[i]["bbid"].ToString();   // 标本id
+                                generatePdfUrl = PdfUtils.GeneratePdf(lisSource, reportNumber, bbid);
+                                if (!generatePdfUrl.Contains(".pdf"))
                                 {
-                                    LogHelper.Info("生成pdf失败,原因是 = " + GeneratePdfUrl);
+                                    LogHelper.Info("生成pdf失败,原因是 = " + generatePdfUrl);
+                                    ShowLog = "生成pdf失败,原因是 =" + generatePdfUrl;
+                                    this.SetText(ShowLog);
                                     continue;
                                 }
-                                LogHelper.Info("生成pdf成功,地址为 = " + GeneratePdfUrl);
+                                LogHelper.Info("生成pdf成功,地址为 = " + generatePdfUrl);
                             }
-                            
+
                             /*string orgName = dt.Rows[i]["orgName"].ToString();
                             string name = dt.Rows[i]["patientName"].ToString();
                             string sex = dt.Rows[i]["sex"].ToString();
@@ -1140,14 +1180,15 @@ namespace LisPacsDataUpload
                             {
                                 continue;
                             }
+                            LogHelper.Info("thread2 最后GeneratePdfUrl= " + generatePdfUrl);
                             string attachmentFile = "";
-                            if (zlhr==zlhrConstant_true)
+                            if (zlhr == zlhrConstant_true)
                             {
-                                attachmentFile = GeneratePdfUrl;
+                                attachmentFile = generatePdfUrl;
                             }
                             else
                             {
-                                attachmentFile=Tools.FileToBase64Str(GeneratePdfUrl);
+                                attachmentFile = Tools.FileToBase64Str(generatePdfUrl);
                             }
                             //上传文件
                             string file_json = "{\"attachmentType\":\".pdf\",\"attachmentName\":\"检验报告\",\"businessType\":\"A001\",\"attachmentFile\":\"" + attachmentFile + "\"}";

+ 45 - 32
LisPacsDataUpload/business/PdfUtils.cs

@@ -9,7 +9,11 @@ using System.Data;
 using System.Diagnostics;
 using System.IO;
 using System.Linq;
+using System.Net;
+using System.Net.Security;
 using System.Reflection;
+using System.Security.Cryptography.X509Certificates;
+using System.Threading.Tasks;
 
 
 namespace LisPacsDataUpload.business
@@ -109,6 +113,16 @@ namespace LisPacsDataUpload.business
                 }
                 return "三方lispdf报告获取失败";
             }
+            else if (lisVersion == 10)
+            {
+                // 三方lis
+
+                if (DownloadPdf(reportNumber, path))
+                {
+                    return path;
+                };
+                return "标准服务lispdf报告获取失败";
+            }
             return "失败";
         }
 
@@ -148,49 +162,48 @@ namespace LisPacsDataUpload.business
         }
 
 
-        //调用exe
-        public static bool CallingProgram(string strJson)
+        private static bool AcceptAllCertificates(object sender, X509Certificate certificate, X509Chain chain,
+            bool sslPolicyErrors)
         {
+            return true;
+        }
 
-            // 定义要启动的外部程序的路径
-            string exePath = @"C:\APPSOFT\ReportPrint\zlgyReport.exe";
-
-            // 定义要传递给外部程序的参数
-            string arguments = "strJson " + strJson;
+        public static bool DownloadPdf(string pdfUrl, string localFilePath)
+        {
+            // 忽略证书验证
 
-            // 创建一个新的 ProcessStartInfo 对象
-            ProcessStartInfo startInfo = new ProcessStartInfo
-            {
-                FileName = exePath, // 设置要启动的程序路径
-                Arguments = arguments, // 设置传递给程序的参数
-                RedirectStandardOutput = false, // 是否重定向标准输出(根据需要设置)
-                RedirectStandardError = false, // 是否重定向标准错误(根据需要设置)
-                UseShellExecute = true, // 是否使用操作系统的 shell 启动进程(通常设置为 true)
-                CreateNoWindow = false // 是否创建窗口(如果不需要显示窗口,可以设置为 true)
-            };
             try
             {
-                // 启动外部程序
-                using (Process process = Process.Start(startInfo))
+                HttpWebRequest request = (HttpWebRequest)WebRequest.Create(pdfUrl);
+                HttpWebResponse response = (HttpWebResponse)request.GetResponse();
+
+                if (response.StatusCode == HttpStatusCode.OK)
+                {
+                    using (Stream responseStream = response.GetResponseStream())
+                    {
+                        using (FileStream fileStream = new FileStream(localFilePath, FileMode.Create))
+                        {
+                            byte[] buffer = new byte[1024];
+                            int bytesRead;
+                            while ((bytesRead = responseStream.Read(buffer, 0, buffer.Length)) > 0)
+                            {
+                                fileStream.Write(buffer, 0, bytesRead);
+                            }
+                        }
+                    }
+                    return true;
+                }
+                else
                 {
-                    // 如果需要等待程序结束,可以使用 process.WaitForExit()
-                    LogHelper.Info("生成lis报告中");
-                    process.WaitForExit();
-                    LogHelper.Info("成功生成lis报告");
-                    // 如果需要读取输出或错误,可以在这里处理
-                     string output = process.StandardOutput.ReadToEnd();
-                     string error = process.StandardError.ReadToEnd();
-
-                    LogHelper.Info("output==" + output);
-                    LogHelper.Info("error==" + error);
+                    LogHelper.Info($"下载失败,状态码: {response.StatusCode}");
+                    return false;
                 }
             }
             catch (Exception ex)
             {
-                // 处理异常,例如文件未找到、路径错误等
-                LogHelper.Info("启动外部程序时出错: " + ex.Message);
+                LogHelper.Info($"下载过程中出现错误: {ex.Message}");
+                return false;
             }
-            return true;
         }
 
         static object Instance = null;

+ 2 - 2
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("合单项目解决")]
+[assembly: AssemblyTitle("合单项目解决,时间格式解决")]
 [assembly: AssemblyDescription("")]
 [assembly: AssemblyConfiguration("")]
 [assembly: AssemblyCompany("zlsoft")]
 [assembly: AssemblyProduct("ZLPlugin_LisPacs_MR")]
-[assembly: AssemblyCopyright("Copyright ©  2024-1.0.1.5")]
+[assembly: AssemblyCopyright("Copyright ©  2024-1.0.1.6")]
 [assembly: AssemblyTrademark("")]
 [assembly: AssemblyCulture("")]