using System;
using System;
using System.Collections.Generic;
using System.Data.SqlClient;
using System.Drawing;
using System.Drawing.Imaging;
using System.IO;
using System.Linq;
using System.Net;
using System.Timers;
using Dicom.Imaging;
using DicomTool.Model;
using DicomTool.Utils;
namespace DicomTool.Utils
{
public static class Test
{
private static string basePath = @"C:\Users\15012\Desktop\Tools";
public static void TestMethod()
{
var filePath = Path.Combine(basePath,"1.DCM");
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();
// 将byte数组写入到文件
File.WriteAllBytes(Path.Combine(basePath, "1.jpeg"), imgBytes);
Console.WriteLine("数据已写入到文件:" + filePath);
}
}
}
}
/*
///
/// 下载所有图片
///
private static void Execute2()
{
Console.WriteLine($"【同步所有图片】{DateTime.Now:yyyy-MM-dd HH:mm}");
// var dayBetween = $@"BETWEEN '2024-06-16' AND '2024-06-21'";
var dayBetween = $@"BETWEEN '{DateTime.Today:yyyy-MM-dd}' AND '{DateTime.Today.AddDays(1):yyyy-MM-dd}'";
Console.WriteLine($@"ExamDatetime {dayBetween}");
var reportList = DAOHelp.GetDataBySQL($@"
SELECT A.PatientCode, A.ExamFeeitem_Code,A.AccessionNumber
FROM PACS.DICOMSERVER.DBO.PEIS_PacsResult A
where A.ExamDatetime IS NOT NULL and a.ExamDatetime {dayBetween}
AND NOT EXISTS ( SELECT 1 FROM PACS.DICOMSERVER.DBO.ImgForReport WHERE AccessionNumber = A.AccessionNumber )
AND NOT EXISTS ( SELECT 1 FROM Report_Pacs WHERE EID = A.PatientCode AND ReportNo=A.ExamFeeitem_Code)
");
Console.WriteLine($"【待下载报告】{reportList.Count}");
var fileNameList = new List();
foreach (var report in reportList)
{
try
{
var imageFiles = DAOHelp.GetDataBySQL
($@"SELECT ImageFile FROM PACS.DICOMSERVER.DBO.PEIS_PacsResult WHERE PatientCode='{report.PatientCode}' and ExamFeeitem_Code='{report.ExamFeeitem_Code}'")
?.FirstOrDefault()?.ImageFile;
if (string.IsNullOrEmpty(imageFiles))
{
Console.WriteLine(
$@"[ERROR] EID={report.PatientCode} - FID={report.ExamFeeitem_Code} ImageFile为空");
continue;
}
// 得到DCM共享文件地址
var dcmPaths = imageFiles.Split(';');
// 路径为空
if (!(dcmPaths?.Length > 0)) continue;
//获取远程共享文件
using (var client = new WebClient())
{
// 配置授权账户密码
var credentials = new NetworkCredential(UserName, Password);
client.Credentials = credentials;
// 循环路径
for (var index = 0; index < dcmPaths.Count(); index++)
{
try
{
// 当前路径
var dcmPath = dcmPaths[index];
if (string.IsNullOrEmpty(dcmPath)) continue;
var name = $"{report.PatientCode}-{report.ExamFeeitem_Code}-";
//下载远程文件
var buffer = client.DownloadData(dcmPath);
// 保存本地
Bytes2File(buffer, DcmPath, $"{name}.DCM");
fileNameList.Add($"{name}.DCM");
Console.WriteLine($"下载:{name}.DCM");
}
catch (Exception e)
{
Console.WriteLine($"1." + e.Message);
}
}
}
}
catch (Exception e)
{
Console.WriteLine($"2." + e.Message);
}
}
Console.WriteLine($@"【下载】{fileNameList.Count}");
if (fileNameList.Count > 0)
// 保存到本地后上传到服务器
UploadDcmImg(DcmPath, fileNameList, InsertExamPacsImage);
Console.WriteLine($@"【等待】{intervalInMinutes}min");
// 删除文件夹下所有文件
foreach (var filePath in Directory.GetFiles(DcmPath))
{
File.Delete(filePath);
}
}
*/