// using System; // using System.Collections.Generic; // using System.Data.SqlClient; // using System.Diagnostics; // using System.IO; // using System.Net; // using System.Timers; // using Dicom; // using Dicom.Imaging; // using DicomTool.Entity; // using DicomTool.Utils; // // namespace DicomTool // { // internal class Program // { // private static void Main(string[] args) // { // // InsertPacsImgToPeis(); // // Console.ReadKey(); // // return; // // // // var basePath = "C://PACS/DICOM/"; // // var pacsReprot = DataModel.GetPacsReport(); // // var fileNameList = new List() // // { // // "10011-164-1.DCM" // // }; // // GetLocalFile(basePath, fileNameList); // // return; // // Console.WriteLine($"【启动】{DateTime.Now:yyyy-MM-dd HH:mm}"); // /* // * TEST // // GetPacsReport(); // // InsertPacsImgToPeis(); // // Console.ReadKey(); // // return; // */ // // GetPacsReport(); // // 创建一个 Timer 实例 // var timer = new Timer(); // // 设置间隔时间为10分钟(以毫秒为单位) // var intervalInMinutes = 30; // timer.Interval = intervalInMinutes * 60 * 1000; // // 设置为 true,使得 Timer 每隔设定的间隔时间自动触发一次 Elapsed 事件 // timer.AutoReset = true; // // 绑定 Elapsed 事件处理程序 // timer.Elapsed += Timer_Elapsed; // // 启动 Timer // timer.Start(); // // 阻止控制台程序退出 // Console.ReadKey(); // // 停止 Timer // timer.Stop(); // // // Console.WriteLine($"SUCCESS"); // Console.ReadKey(); // } // // #region Pacs TEST // // /// // /// 定时执行任务 // /// // /// // /// // private static void Timer_Elapsed(object sender, ElapsedEventArgs e) // { // GetPacsReport(); // } // // private static void GetPacsReport() // { // Console.WriteLine($"【查询】{DateTime.Now:yyyy-MM-dd HH:mm}"); // var basePath = "C://PACS/DICOM/"; // var pacsReprot = DataModel.GetPacsReport(); // var fileNameList = new List(); // // 获取PACS数据 // foreach (var info in pacsReprot) // { // InsertInfo(info); // // 得到DCM共享文件地址 // int i = 1; // var dcmPaths = info.ImageFile.Split(';'); // foreach (var dcmPath in dcmPaths) // { // if (string.IsNullOrEmpty(dcmPath)) // { // continue; // } // //获取远程共享文件 // var client = new WebClient(); // var userName = "XBDLISUser"; // var password = "BlueFlag.Lis!@#"; // // 配置授权账户密码 // var credentials = new NetworkCredential(userName, password); // client.Credentials = credentials; // //下载远程文件 // var buffer = client.DownloadData(dcmPath); // // // 保存本地 // Bytes2File(buffer, basePath, $"{info.PatientCode}-{info.ExamFeeitem_Code}-{i}.DCM"); // i++; // fileNameList.Add($"{info.PatientCode}-{info.ExamFeeitem_Code}-{i}.DCM"); // Console.WriteLine($"下载:{info.PatientCode}-{info.ExamFeeitem_Code}-{i}.DCM"); // //continue; // // // 读取DCM by byte[] // // using (var streamDcm = new MemoryStream()) // // { // // streamDcm.Write(buffer, 0, buffer.Length); // // //fo-dicom类库 读取DCM // // var file = DicomFile.Open(streamDcm); // // if (file?.Dataset == null) // // { // // continue;//BUG // // } // // var image = new DicomImage(file.Dataset); // // //image.NumberOfFrames 如果有多帧图片需要将每帧都转成jpeg // // //DCM转Bitmap // // var bitmap = image.RenderImage().AsBitmap(); // // using (var streamImg = new MemoryStream()) // // { // // //Bitmap To byte[] // // bitmap.Save(streamImg, System.Drawing.Imaging.ImageFormat.Jpeg); // // var imgBytes = streamImg.ToArray(); // // InsertData(imgBytes, Convert.ToInt64(info.PatientCode), info.ExamFeeitem_Code); // // // //byte[] To Base64String // // // var img = Convert.ToBase64String(imgBytes); // // // // 保存数据到PEIS DB // // // var saveItem = info; // // // saveItem.ImageFile = img; // // // var i = DAOHelp.Save(saveItem); // // } // // //bitmap.Save("imageName", System.Drawing.Imaging.ImageFormat.Jpeg); // // } // } // } // // if (pacsReprot.Count > 0) // // 保存到本地后上传到服务器 // GetLocalFile(basePath, fileNameList); // // } // // /// // /// 1、将本地文件PACS影像图片发送到服务器 // /// // public static void GetLocalFile(string folderPath, List fileNameList) // { // //var folderPath = "C:\\PACS\\DicomFile"; // 替换为实际的文件夹路径 // // 获取文件夹下所有文件的路径 // var files = Directory.GetFiles(folderPath); // var i = 1; // // 遍历文件路径并输出 // foreach (var filePath in files) // { // // var fileName = Path.GetFileName(filePath); // if (!fileNameList.Contains(fileName)) // { // continue; // } // var eid = Convert.ToInt64(fileName.Split('-')[0]); // var reportNo = fileName.Split('-')[1]; // var image = new DicomImage(filePath); // //image.NumberOfFrames 如果有多帧图片需要将每帧都转成jpeg // //DCM转Bitmap // var bitmap = image.RenderImage().AsBitmap(); // using (var streamImg = new MemoryStream()) // { // //Bitmap To byte[] // bitmap.Save(streamImg, System.Drawing.Imaging.ImageFormat.Jpeg); // var imgBytes = streamImg.ToArray(); // InsertData(imgBytes, eid, reportNo); // // //byte[] To Base64String // // var img = Convert.ToBase64String(imgBytes); // // // 保存数据到PEIS DB // // var j = DAOHelp.ExecuteSql($@"UPDATE Report_Pacs SET ImageFile='{img}' WHERE ID={i}"); // } // i++; // } // } // // /// // /// 2、将图片插入PEIS服务器 // /// // /// // public static void InsertData(byte[] img, Int64 eid, string ReportNo) // { // // Console.WriteLine($"【上传】{eid}-{ReportNo}-{DateTime.Now:yyyy-MM-dd HH:mm}"); // // 建立数据库连接 // //string connectionString = "Data Source=192.168.12.188;Initial Catalog=peisdb;User ID=sa;Password=000626; "; // //盈江妇幼 // var connectionString = "Data Source=172.172.100.12;Initial Catalog=peisdb;User ID=sa;Password=xbdLis!@#77911; "; // using (var connection = new SqlConnection(connectionString)) // { // connection.Open(); // // 创建插入记录的 SQL 查询 // var insertQuery = "INSERT INTO Report_Pacs (Image,EID,ReportNo,InTime) VALUES (@ImageData,@EID,@ReportNo,@InTime)"; // // 创建命令对象 // using (var command = new SqlCommand(insertQuery, connection)) // { // // 设置参数值 // command.Parameters.AddWithValue("@ImageData", img); // command.Parameters.AddWithValue("@EID", eid); // command.Parameters.AddWithValue("@ReportNo", ReportNo); // command.Parameters.AddWithValue("@InTime", DateTime.Now); // // 执行插入操作 // command.ExecuteNonQuery(); // } // connection.Close(); // } // } // public static void InsertReportImg(byte[] img, Int64 eid, string ReportNo) // { // // Console.WriteLine($"【上传】{eid}-{ReportNo}-{DateTime.Now:yyyy-MM-dd HH:mm}"); // // 建立数据库连接 // //string connectionString = "Data Source=192.168.12.188;Initial Catalog=peisdb;User ID=sa;Password=000626; "; // //盈江妇幼 // var connectionString = "Data Source=172.172.100.12;Initial Catalog=peisdb;User ID=sa;Password=xbdLis!@#77911; "; // using (var connection = new SqlConnection(connectionString)) // { // connection.Open(); // // 创建插入记录的 SQL 查询 // var insertQuery = "UPDATE Report SET ReportImage = @ImageData WHERE EID=@EID AND ReportNo=@ReportNo"; // // 创建命令对象 // using (var command = new SqlCommand(insertQuery, connection)) // { // // 设置参数值 // command.Parameters.AddWithValue("@ImageData", img); // command.Parameters.AddWithValue("@EID", eid); // command.Parameters.AddWithValue("@ReportNo", ReportNo); // // 执行插入操作 // command.ExecuteNonQuery(); // } // connection.Close(); // } // } // // public static void InsertInfo(ReportPacs info) // { // var sql = $@"INSERT INTO [Report] // ( [EID], [ReportNo], [Class], [Title], [Examer], [Reporter], [ReportTime], [Description], [Summary] ,[Positive], [InTime] ) // VALUES ({info.PatientCode},'{info.ExamFeeitem_Code}', '{info.TransfTertarget}','{info.ImageTitle}' , '{info.InputDoctor}', '{info.ExamDoctor}','{info.ExamDatetime}', '{info.ExamDesc}', // '{info.ExamSummary}' ,'{info.ExamPositive}','{DateTime.Now}');"; // DAOHelp.ExecuteSql(sql); // } // // public void GetPacsData() // { // // var data = DAOHelp.GetDataBySQL("select * from PacsTest").FirstOrDefault(); // // // // var rtfData1 = data.Description; // 从文件或网络中读取字节数据 // // // // if (rtfData1 != null && rtfData1.Length > 0) // // { // // using (var stream = new MemoryStream(rtfData1)) // // using (var reader = new StreamReader(stream)) // // { // // string rtfText = reader.ReadToEnd(); // // Console.WriteLine(rtfText); // // } // // } // // var rtfData2 = data.Diagnose; // // // // if (rtfData2 != null && rtfData2.Length > 0) // // { // // using (var stream = new MemoryStream(rtfData2)) // // using (var reader = new StreamReader(stream)) // // { // // string rtfText = reader.ReadToEnd(); // // Console.WriteLine(rtfText); // // } // // } // } // // public void GetPacs() // { // // var handler = new DicomHandler(filePath); // // handler.readAndShow(); // // if (handler.getImg()) // //pictureBox1.Image = Image.FromFile(@"C:/Pacs/0.DCM"); // // // string downloadPath = @"C:\PACS\2.DCM"; // // var handler = new DicomHandler(downloadPath); // // handler.readAndShow(); // // if (handler.getImg()) // // pictureBox1.Image = handler.gdiImg; // // //DicomRead.Convert(@"C:\PACS\2.DCM", @"C:\PACS\2.jpg"); // string strFileName = @"C:\PACS\2.DCM"; // string strOutFileName = @"C:\PACS\2.jpg"; // // var img = new DicomImage(strFileName); // // Bitmap bitmap = new Bitmap(img.RenderImage()); // // pictureBox1.Image = bitmap; // //bitmap.Save(strOutFileName, ImageFormat.Jpeg); // // // string userName = "XBDLISUser"; // // string password = "BlueFlag.Lis!@#"; // // NetworkCredential credentials = new NetworkCredential(userName, password); // // var path= @" // // \\172.172.100.11\DICOMFILES$\Data_2023.05.24\B超\B超.1.3.12.2.1107.5.1.4.50455.20230524090327573.DCM; // // \\172.172.100.11\DICOMFILES$\Data_2023.05.24\B超\B超.1.3.12.2.1107.5.1.4.50455.20230524090347743.DCM; // // \\172.172.100.11\DICOMFILES$\Data_2023.05.24\B超\B超.1.3.12.2.1107.5.1.4.50455.20230524090449223.DCM; // // \\172.172.100.11\DICOMFILES$\Data_2023.05.24\B超\B超.1.3.12.2.1107.5.1.4.50455.20230524090543067.DCM; // // \\172.172.100.11\DICOMFILES$\Data_2023.05.24\B超\B超.1.3.12.2.1107.5.1.4.50455.20230524090739127.DCM; // // \\172.172.100.11\DICOMFILES$\Data_2023.05.24\B超\B超.1.3.12.2.1107.5.1.4.50455.20230524090327573.DCM;"; // // var list = path.Split(';').ToList(); // // foreach (var item in list) // // { // // WebClient client = new WebClient(); // // client.Credentials = credentials; // // // // // 下载文件 // // client.DownloadFile(item.Trim(), @"C:\PACS\"+list.IndexOf(item)+".DCM"); // // // // } // // //string sourceFile = @"\\172.172.100.11\DICOMFILES$\Data_2023.05.24\B超\B超.1.3.12.2.1107.5.1.4.50455.20230524090327573.DCM"; // // if (!File.Exists(sourceFile)) // // { // // MessageBox.Show("File not found " ); // // return; // // } // // // string downloadPath = @"C:\pacs.DCM"; // // WebClient client = new WebClient(); // // client.Credentials = credentials; // // // // // 下载文件 // // client.DownloadFile(sourceFile, downloadPath); // // // // HttpWebRequest request = (HttpWebRequest)WebRequest.Create(sourceFile); // // request.Credentials = credentials; // // // // // 获取响应流并读取文件内容 // // using (HttpWebResponse response = (HttpWebResponse)request.GetResponse()) // // { // // using (Stream stream = response.GetResponseStream()) // // { // // StreamReader reader = new StreamReader(stream); // // string content = reader.ReadToEnd(); // // } // // } // // // WebClient client = new WebClient(); // // // // WebClient client = new WebClient(); // // client.Credentials = new NetworkCredential(userName, password); // // client.DownloadFile(sourceFile, downloadPath); // //client.DownloadFile(sourceFile, downloadPath); // // // if (!File.Exists(filePath)) // // { // // MessageBox.Show("File not found: " + filePath); // // return; // // } // // var handler = new DicomHandler(filePath); // // handler.readAndShow(); // // if (handler.getImg()) // // pictureBox1.Image = handler.gdiImg; // // FileStream stream = File.OpenRead(filePath); // // byte[] data = new byte[stream.Length]; // // stream.Read(data, 0, data.Length); // // stream.Close(); // } // // /// // /// 将byte数组转换为文件并保存到指定地址 // /// // /// byte数组 // /// 保存地址 // public static void Bytes2File(byte[] buff, string savepath, string fileName) // { // try // { // // //如果不存在就创建Enclosure文件夹  // if (Directory.Exists(savepath) == false) // { // Directory.CreateDirectory(savepath); // } // // if (System.IO.File.Exists(savepath + fileName)) // { // System.IO.File.Delete(savepath + fileName); // } // //创建Process命令 // var cmd = new Process(); // FileStream fs = new FileStream(savepath + fileName, FileMode.CreateNew); // BinaryWriter bw = new BinaryWriter(fs); // bw.Write(buff, 0, buff.Length); // bw.Close(); // fs.Close(); // // //创建要运行的文件或者程序 // // var startfile = new ProcessStartInfo // // { // // FileName = savepath + fileName,//文件完全路径 // // WindowStyle = ProcessWindowStyle.Normal,//Windows窗口样式 // // UseShellExecute = true//为true,则用默认的打开方式打开 // // }; // // cmd.StartInfo = startfile; // // cmd.Start(); //打开文件 // } // catch (Exception e) // { // Console.WriteLine(fileName + "--" + e.Message); // } // // } // // // /* // * // // //icom 转 Jpeg // // //fo-dicom类库 // // var dcmFile = @"C:/Pacs/DX.DCM"; // // string fullName = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "Files", dcmFile); // // //生成设置要改为X64位 // //System.Reflection.Assembly.LoadFrom(Path.Combine(Application.StartupPath, "Dicom.Native.dll")); // // //file //= file.ChangeTransferSyntax(DicomTransferSyntax.ExplicitVRLittleEndian, new DicomJpegLsParams()); // // string path = AppDomain.CurrentDomain.BaseDirectory; // // Dicom.Imaging.Codec.TranscoderManager.LoadCodecs(path, "Dicom.Native*.dll"); // // var image = new DicomImage(file.Dataset); // // //image.NumberOfFrames 如果有多帧图片需要将每帧都转成jpeg // // Bitmap bitmap = image.RenderImage().AsBitmap(); // // string imageName = $"{DateTime.Now.ToString("yyyy-MM-ddHHmmss")}DX.jpeg"; // //bitmap.Save(imageName); // // 不行 // // ImageConverter converter = new ImageConverter(); // // var imgBytes= (byte[])converter.ConvertTo(bitmap, typeof(byte[])); // // // using (var stream = new MemoryStream()) // // { // // bitmap.Save(stream, System.Drawing.Imaging.ImageFormat.Png); // // var imgBytes =stream.ToArray(); // // var img=Convert.ToBase64String(imgBytes); // // var i=DAOHelp.Save(new Pacs( img)); // // } // //bitmap.Save(imageName, System.Drawing.Imaging.ImageFormat.Jpeg); // // bitmap.Save(imageName, System.Drawing.Imaging.ImageFormat.Jpeg); // */ // #endregion Pacs TEST // // // // // // // /// // /// 手动导入PACS数据到PEIS // /// // public static void InsertPacsImgToPeis() // { // var path = "C://PACS//DICOM//Manual//"; // var list = new List() // { // new ManualModel() // { // Eid = 10002, // ReportNo = "22", // imgFile = @"\\172.172.100.11\DICOMFILES$\Data_2023.08.08\DX\DX.1.2.840.887072.1.9.1.1.20230808093901.4.220240230221.DCM;" // }, // }; // //下载 // foreach (var item in list) // { // DownReportImg(path, item.imgFile, item.Eid, item.ReportNo); // } // // //上传 // UploadReportImg(path); // } // // /// // /// 下载PACS检查文件到本地 // /// // /// DCM文件 // /// 体检号 // /// 收费项目ID // public static List DownReportImg(string basePath, string imgFile, long eid, string reportNo) // { // var fileNameList = new List(); // // 得到DCM共享文件地址 // int i = 1; // var dcmPaths = imgFile.Split(';'); // foreach (var dcmPath in dcmPaths) // { // if (string.IsNullOrEmpty(dcmPath)) // { // continue; // } // //获取远程共享文件 // var client = new WebClient(); // var userName = "XBDLISUser"; // var password = "BlueFlag.Lis!@#"; // // 配置授权账户密码 // var credentials = new NetworkCredential(userName, password); // client.Credentials = credentials; // //下载远程文件 // var buffer = client.DownloadData(dcmPath); // // // 保存本地 // Bytes2File(buffer, basePath, $"{eid}-{reportNo}-{i}.DCM"); // fileNameList.Add($"{eid}-{reportNo}-{i}.DCM"); // Console.WriteLine($"下载:{eid}-{reportNo}-{i}.DCM"); // i++; // } // return fileNameList; // } // // // /// // /// 1、将本地文件PACS影像图片发送到服务器 // /// // public static void UploadReportImg(string folderPath, List fileNameList = null) // { // //var folderPath = "C:\\PACS\\DicomFile"; // 替换为实际的文件夹路径 // // 获取文件夹下所有文件的路径 // var files = Directory.GetFiles(folderPath); // var i = 1; // // 遍历文件路径并输出 // foreach (var filePath in files) // { // // var fileName = Path.GetFileName(filePath); // // if (!fileNameList.Contains(fileName)) // // { // // continue; // // } // var eid = Convert.ToInt64(fileName.Split('-')[0]); // var reportNo = fileName.Split('-')[1]; // var image = new DicomImage(filePath); // //image.NumberOfFrames 如果有多帧图片需要将每帧都转成jpeg // //DCM转Bitmap // var bitmap = image.RenderImage().AsBitmap(); // using (var streamImg = new MemoryStream()) // { // //Bitmap To byte[] // bitmap.Save(streamImg, System.Drawing.Imaging.ImageFormat.Jpeg); // var imgBytes = streamImg.ToArray(); // InsertData(imgBytes, eid, reportNo); // // //byte[] To Base64String // // var img = Convert.ToBase64String(imgBytes); // // // 保存数据到PEIS DB // // var j = DAOHelp.ExecuteSql($@"UPDATE Report_Pacs SET ImageFile='{img}' WHERE ID={i}"); // } // // Console.WriteLine($"上传:{eid}-{reportNo}"); // i++; // } // } // // } // }