You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
1063 lines
48 KiB
1063 lines
48 KiB
#region CopyRight
|
|
|
|
/****************************************************************
|
|
* Project:健康体检信息管理系统(PEIS)
|
|
* Author:H
|
|
* CLR Version:4.0
|
|
* CreateTime:2023-06-18
|
|
* Version:v0.0.1
|
|
* Description:报告单获取帮助类
|
|
*****************************************************************
|
|
* Copyright @ 云南新八达科技有限公司 2023 All rights reserved
|
|
*****************************************************************/
|
|
|
|
#endregion CopyRight
|
|
|
|
using System;
|
|
using System.Collections;
|
|
using System.Collections.Generic;
|
|
using System.IO;
|
|
using System.Linq;
|
|
using System.Windows.Forms;
|
|
using DevExpress.XtraPrinting.Native;
|
|
using FastReport;
|
|
using PEIS.Entity;
|
|
using PEIS.Model;
|
|
using PEIS.Model.Enrollment;
|
|
using System.Drawing;
|
|
using System.Drawing.Drawing2D;
|
|
using System.Drawing.Imaging;
|
|
using FastReport.Export.Pdf;
|
|
using PEIS.Model.Exam;
|
|
|
|
namespace PEIS.Utils
|
|
{
|
|
public static class ReportHelper
|
|
{
|
|
/// <summary>
|
|
/// PDF to Image
|
|
/// </summary>
|
|
/// <param name="pdf"></param>
|
|
/// <returns></returns>
|
|
public static Image PdfToImg(byte[] pdf)
|
|
{
|
|
try
|
|
{
|
|
if (IsPdf(pdf))
|
|
{
|
|
// PDF格式
|
|
using (var memoryStream = new MemoryStream(pdf))
|
|
{
|
|
using (var pdfDocument = PdfiumViewer.PdfDocument.Load(memoryStream))
|
|
{
|
|
for (var pageIndex = 0; pageIndex < pdfDocument.PageCount; pageIndex++)
|
|
{
|
|
using (var bitmap = pdfDocument.Render(pageIndex, 2480, 3508, false))
|
|
{
|
|
using (var stream = new MemoryStream())
|
|
{
|
|
bitmap.Save(stream, ImageFormat.Jpeg);
|
|
var img = stream.ToArray();
|
|
|
|
using (var ms = new MemoryStream(img, 0, img.Length))
|
|
{
|
|
return Image.FromStream(ms, true);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
else
|
|
{
|
|
// 图片格式
|
|
using (var ms = new MemoryStream(pdf, 0, pdf.Length))
|
|
{
|
|
return Image.FromStream(ms, true);
|
|
}
|
|
}
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
Console.WriteLine(@"Error converting PDF to images: " + ex.Message);
|
|
}
|
|
|
|
return null;
|
|
}
|
|
|
|
/// <summary>
|
|
/// 判断是否PDF
|
|
/// </summary>
|
|
/// <param name="fileBytes"></param>
|
|
/// <returns></returns>
|
|
public static bool IsPdf(byte[] fileBytes)
|
|
{
|
|
const string pdfSignature = "%PDF";
|
|
if (fileBytes.Length >= pdfSignature.Length)
|
|
{
|
|
for (int i = 0; i < pdfSignature.Length; i++)
|
|
{
|
|
if (fileBytes[i] != pdfSignature[i])
|
|
{
|
|
return false;
|
|
}
|
|
}
|
|
return true;
|
|
}
|
|
return false;
|
|
}
|
|
|
|
/// <summary>
|
|
/// 获取报告单
|
|
/// </summary>
|
|
/// <param name="eid">体检号</param>
|
|
/// <returns></returns>
|
|
public static FastReport.Report GetReport(Int64 eid)
|
|
{
|
|
try
|
|
{
|
|
var patient = new ReportModel().GetPatientInfo(eid);
|
|
if (patient == null) return null;
|
|
var fileName =
|
|
DAOHelp.GetDataBySQL<Config>($"SELECT Description FROM Dict_Config where Value='{patient.Type}'")
|
|
.FirstOrDefault()?.Description ?? "PReport.frx";
|
|
var filePath = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "ReportFiles",
|
|
fileName);
|
|
if (!File.Exists(filePath))
|
|
{
|
|
MessageBox.Show($@"未找到报告单模板文件:{fileName}", @"获取报告单失败");
|
|
return null;
|
|
}
|
|
|
|
switch (fileName)
|
|
{
|
|
case "Children.frx":
|
|
return EasyReport(patient, eid, filePath);
|
|
case "Student.frx":
|
|
return EasyReport(patient, eid, filePath);
|
|
case "Teacher.frx":
|
|
return EasyReport(patient, eid, filePath);
|
|
case "Work.frx":
|
|
return EasyReport(patient, eid, filePath);
|
|
case "Health.frx":
|
|
return EasyReport(patient, eid, filePath);
|
|
case "CAPReport.frx":
|
|
return CAPReport(patient, eid, filePath);
|
|
default:
|
|
return General(patient, eid, filePath);
|
|
}
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
LogHelper.Log.Error($@"生成报告单失败:{ex.Message}");
|
|
Global.Msg("info", ex.Message);
|
|
return null;
|
|
}
|
|
}
|
|
|
|
public static bool SaveReport(Int64 eid)
|
|
{
|
|
try
|
|
{
|
|
var report = GetReport(eid);
|
|
using (var export = new PDFExport())
|
|
{
|
|
using (var ms = new MemoryStream())
|
|
{
|
|
export.Export(report, ms);
|
|
ms.Flush();
|
|
var byteArray = ms.ToArray();
|
|
return new ExamReport(eid, byteArray).Save();
|
|
}
|
|
|
|
;
|
|
}
|
|
|
|
;
|
|
}
|
|
catch (Exception e)
|
|
{
|
|
Global.MsgErr($"保存体检报告失败!{e.Message}");
|
|
}
|
|
|
|
return false;
|
|
}
|
|
|
|
public static FastReport.Report GetStatisticalReportCount(DateTime beg, DateTime end,
|
|
string fileName = "PeopleCount")
|
|
{
|
|
var data = new StatisticalReportModel().GetItemsByDateType(beg, end, "PeopleExamDate", 0);
|
|
|
|
//new StatisticalReportModel().GetEFeeItems(beg,end);
|
|
var rpt = new FastReport.Report(); //实例化一个Report报表
|
|
try
|
|
{
|
|
var reportFile = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "ReportFiles", fileName + ".frx");
|
|
rpt.Load(reportFile);
|
|
rpt.SetParameterValue("HospitalName", Global._hospital.Name);
|
|
rpt.SetParameterValue("DateBetween", $@"{beg:yyyy-MM-dd}--{end:yyyy-MM-dd}");
|
|
rpt.SetParameterValue("Type", "按体检日期统计");
|
|
SetDataSource(ref rpt, data, "p", "PeopleCount");
|
|
rpt.Prepare();
|
|
return rpt;
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
Global.Msg("err", ex.Message);
|
|
return null;
|
|
}
|
|
}
|
|
|
|
public static FastReport.Report GetStatisticalReportIncome(DateTime beg, DateTime end,
|
|
string fileName = "CostCount")
|
|
{
|
|
var data = new StatisticalReportModel().GetEFeeItems(beg, end, 0,"9999");
|
|
//new StatisticalReportModel().GetEFeeItems(beg,end);
|
|
var rpt = new FastReport.Report(); //实例化一个Report报表
|
|
try
|
|
{
|
|
var reportFile = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "ReportFiles", fileName + ".frx");
|
|
rpt.Load(reportFile);
|
|
rpt.SetParameterValue("HospitalName", Global._hospital.Name);
|
|
rpt.SetParameterValue("DateBetween", $@"{beg:yyyy-MM-dd}--{end:yyyy-MM-dd}");
|
|
rpt.SetParameterValue("Type", "按体检日期统计");
|
|
rpt.SetParameterValue("DeptName", "所有科室");
|
|
|
|
SetDataSource(ref rpt, data, "p", "CostCount");
|
|
rpt.Prepare();
|
|
return rpt;
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
Global.Msg("err", ex.Message);
|
|
return null;
|
|
}
|
|
}
|
|
|
|
/// <summary>
|
|
/// 职业病体检
|
|
/// </summary>
|
|
/// <param name="patient"></param>
|
|
/// <param name="eid"></param>
|
|
/// <param name="filePath"></param>
|
|
/// <returns></returns>
|
|
private static FastReport.Report CAPReport(EnrollmentPatient patient, Int64 eid, string filePath)
|
|
{
|
|
var rpt = new FastReport.Report(); //实例化一个Report报表
|
|
|
|
rpt.Load(filePath);
|
|
var lstEFeeItems = new ReportModel().GetEFeeItem(eid);
|
|
var lstConclusions = new ReportModel().GetExamConclusions(eid);
|
|
var lstGeneral = new ReportModel().GetGeneralResult(eid);
|
|
var lstLis = new ReportModel().GetLisResult(eid);
|
|
var lstPacs = new ReportModel().GetPacsResult(eid);
|
|
var lstPacsPhotos = new ReportModel().GetPacsPhoto(eid);
|
|
|
|
var lstSymptom = new CareerHisInqModel().GetCareerHisInqSymptom(10154);
|
|
var examCareerHisInq = new CareerHisInqModel().GetExamCareerHisInqByEid(10008);
|
|
var examEmploymentHis = new CareerHisInqModel().GetEmploymentHises(10028);
|
|
|
|
// 登记信息
|
|
rpt.SetParameterValue("PatientName", patient.Name);
|
|
rpt.SetParameterValue("CardNo", patient.CardNo);
|
|
rpt.SetParameterValue("Nation", patient.Nation);
|
|
rpt.SetParameterValue("Age", patient.Age + patient.AgeClass);
|
|
rpt.SetParameterValue("Sex", patient.Sex == "1" ? "男" : patient.Sex == "2" ? "女" : "");
|
|
rpt.SetParameterValue("ExamID", patient.ID.ToString());
|
|
rpt.SetParameterValue("ExamDate", patient.SignTime?.ToShortDateString());
|
|
rpt.SetParameterValue("Marriage", patient.Marriage);
|
|
rpt.SetParameterValue("TeamName", patient.OrgName);
|
|
rpt.SetParameterValue("GroupName", patient.GroupName);
|
|
rpt.SetParameterValue("Company", patient.Company);
|
|
rpt.SetParameterValue("ExamType", patient.Type);
|
|
rpt.SetParameterValue("Address", patient.Address1);
|
|
rpt.SetParameterValue("Tel", patient.Tel1);
|
|
rpt.SetParameterValue("FinishPerson", patient.Finisher);
|
|
rpt.SetParameterValue("FinishDate", patient.FinishTime?.ToShortDateString());
|
|
rpt.SetParameterValue("HospitalName", Global._hospital.Name);
|
|
rpt.SetParameterValue("DeptName", patient.DeptName);
|
|
|
|
|
|
rpt.SetParameterValue("EnrollmentType", patient.JobStatus);
|
|
rpt.SetParameterValue("IDCard", patient.CardNo);
|
|
rpt.SetParameterValue("HospitalAddress", "无");
|
|
rpt.SetParameterValue("HospitalCertificate", "无");
|
|
rpt.SetParameterValue("HospitalTel", Global._hospital.Tel);
|
|
|
|
if (string.IsNullOrEmpty(patient.Photo))
|
|
{
|
|
rpt.SetParameterValue("Avatar", patient.Photo);
|
|
}
|
|
else
|
|
{
|
|
byte[] imageBytes = Convert.FromBase64String(patient.Photo);
|
|
using (MemoryStream ms = new MemoryStream(imageBytes))
|
|
{
|
|
Image image = Image.FromStream(ms);
|
|
using (MemoryStream stream = new MemoryStream())
|
|
{
|
|
image.Save(stream, ImageFormat.Png);
|
|
rpt.SetParameterValue("Avatar", Convert.ToBase64String(stream.ToArray()));
|
|
}
|
|
}
|
|
}
|
|
|
|
List<object> testList = new List<object>()
|
|
{
|
|
//new { PatientName="张三1",Sex="男",IDCard="530128199403243610",MaritalStatus="已婚",HDTAge="10年",HDAge="5年",HDStr="高温、高压"},
|
|
};
|
|
foreach (var item in examEmploymentHis)
|
|
{
|
|
testList.Add(new
|
|
{
|
|
PatientName = patient.Name,
|
|
Sex = patient.Sex == "1" ? "男" : patient.Sex == "2" ? "女" : "",
|
|
IDCard = patient.CardNo,
|
|
MaritalStatus = patient.Marriage,
|
|
HDTAge = "",
|
|
HDAge = "",
|
|
HDStr = item.HarmfulFactors
|
|
});
|
|
}
|
|
|
|
List<SymptomReportModele> symptoms = new List<SymptomReportModele>();
|
|
for (int i = 0; i < lstSymptom.Count; i = i + 2)
|
|
{
|
|
SymptomReportModele sm = new SymptomReportModele();
|
|
sm.SMName0 = $"{lstSymptom[i].DispOrder}、{lstSymptom[i].SMName}";
|
|
sm.SMValue0 = lstSymptom[i].SMValue;
|
|
if ((i + 1) < lstSymptom.Count)
|
|
{
|
|
sm.SMName1 = $"{lstSymptom[i + 1].DispOrder}、{lstSymptom[i + 1].SMName}";
|
|
sm.SMValue1 = lstSymptom[i + 1].SMValue;
|
|
}
|
|
symptoms.Add(sm);
|
|
}
|
|
|
|
var careerHisInq = new List<ECInqReportModele>();
|
|
ECInqReportModele eCInqReport = new ECInqReportModele();
|
|
if (examCareerHisInq != null)
|
|
{
|
|
eCInqReport.PastHistory = string.IsNullOrEmpty(examCareerHisInq.PastHistory) ? "/" : examCareerHisInq.PastHistory;
|
|
eCInqReport.Menarche = string.IsNullOrEmpty(examCareerHisInq.Menarche) ? "/" : examCareerHisInq.Menarche;
|
|
eCInqReport.MenarchePeriod = string.IsNullOrEmpty(examCareerHisInq.MenarchePeriod) ? "/" : examCareerHisInq.MenarchePeriod;
|
|
eCInqReport.MenarcheCycle = string.IsNullOrEmpty(examCareerHisInq.MenarcheCycle) ? "/" : examCareerHisInq.MenarcheCycle;
|
|
eCInqReport.LastMenstrualPod = string.IsNullOrEmpty(examCareerHisInq.LastMenstrualPod) ? "/" : examCareerHisInq.LastMenstrualPod;
|
|
eCInqReport.ExistingChildren = string.IsNullOrEmpty(examCareerHisInq.ExistingChildren) ? "/" : examCareerHisInq.ExistingChildren;
|
|
eCInqReport.Abortion = string.IsNullOrEmpty(examCareerHisInq.Abortion) ? "/" : examCareerHisInq.Abortion;
|
|
eCInqReport.PrematureDelivery = string.IsNullOrEmpty(examCareerHisInq.PrematureDelivery) ? "/" : examCareerHisInq.PrematureDelivery;
|
|
eCInqReport.Stillbirth = string.IsNullOrEmpty(examCareerHisInq.Stillbirth) ? "/" : examCareerHisInq.Stillbirth;
|
|
eCInqReport.AbnormalFetus = string.IsNullOrEmpty(examCareerHisInq.AbnormalFetus) ? "/" : examCareerHisInq.AbnormalFetus;
|
|
if (examCareerHisInq.SmokeState == 1) eCInqReport.SmokeState_1 = true;
|
|
if (examCareerHisInq.SmokeState == 2) eCInqReport.SmokeState_2 = true;
|
|
if (examCareerHisInq.SmokeState == 3) eCInqReport.SmokeState_3 = true;
|
|
eCInqReport.SmokeQuantity = string.IsNullOrEmpty(examCareerHisInq.SmokeQuantity) ? "/" : examCareerHisInq.SmokeQuantity;
|
|
eCInqReport.SmokeYears = string.IsNullOrEmpty(examCareerHisInq.SmokeQuantity) ? "/" : examCareerHisInq.SmokeYears;
|
|
eCInqReport.SmokeMonths = string.IsNullOrEmpty(examCareerHisInq.SmokeMonths) ? "/" : examCareerHisInq.SmokeMonths;
|
|
if (examCareerHisInq.DrinkState == 1) eCInqReport.DrinkState_1 = true;
|
|
if (examCareerHisInq.DrinkState == 2) eCInqReport.DrinkState_2 = true;
|
|
if (examCareerHisInq.DrinkState == 3) eCInqReport.DrinkState_3 = true;
|
|
eCInqReport.DrinkQuantity = string.IsNullOrEmpty(examCareerHisInq.DrinkQuantity) ? "/" : examCareerHisInq.DrinkQuantity;
|
|
eCInqReport.DrinkYears = string.IsNullOrEmpty(examCareerHisInq.DrinkYears) ? "/" : examCareerHisInq.DrinkYears;
|
|
eCInqReport.SleepCondition = string.IsNullOrEmpty(examCareerHisInq.SleepCondition) ? "/" : examCareerHisInq.SleepCondition;
|
|
eCInqReport.Other = string.IsNullOrEmpty(examCareerHisInq.Other) ? "/" : examCareerHisInq.Other;
|
|
}
|
|
else
|
|
{
|
|
eCInqReport.PastHistory = "/";
|
|
eCInqReport.Menarche = "/";
|
|
eCInqReport.MenarchePeriod = "/";
|
|
eCInqReport.MenarcheCycle = "/";
|
|
eCInqReport.LastMenstrualPod = "/";
|
|
eCInqReport.ExistingChildren = "/";
|
|
eCInqReport.Abortion = "/";
|
|
eCInqReport.PrematureDelivery = "/";
|
|
eCInqReport.Stillbirth = "/";
|
|
eCInqReport.AbnormalFetus = "/";
|
|
if (examCareerHisInq.SmokeState == 1) eCInqReport.SmokeState_1 = true;
|
|
if (examCareerHisInq.SmokeState == 2) eCInqReport.SmokeState_2 = true;
|
|
if (examCareerHisInq.SmokeState == 3) eCInqReport.SmokeState_3 = true;
|
|
eCInqReport.SmokeQuantity = "/";
|
|
eCInqReport.SmokeYears = "/";
|
|
eCInqReport.SmokeMonths = "/";
|
|
if (examCareerHisInq.DrinkState == 1) eCInqReport.DrinkState_1 = true;
|
|
if (examCareerHisInq.DrinkState == 2) eCInqReport.DrinkState_2 = true;
|
|
if (examCareerHisInq.DrinkState == 3) eCInqReport.DrinkState_3 = true;
|
|
eCInqReport.DrinkQuantity = "/";
|
|
eCInqReport.DrinkYears = "/";
|
|
eCInqReport.SleepCondition = "/";
|
|
eCInqReport.Other = "/";
|
|
}
|
|
|
|
|
|
careerHisInq.Add(eCInqReport);
|
|
|
|
|
|
// 收费列表
|
|
SetDataSource(ref rpt, lstEFeeItems, "F", "FeeItems");
|
|
// 总结结论词
|
|
SetDataSource(ref rpt, lstConclusions, "C", "Conclusion");
|
|
//一般检查
|
|
SetDataSource(ref rpt, lstGeneral, "G", "General");
|
|
//PACS
|
|
SetDataSource(ref rpt, lstPacs, "P", "PACS");
|
|
//LIS
|
|
SetDataSource(ref rpt, lstLis, "L", "LIS");
|
|
// PacsImage
|
|
SetDataSource(ref rpt, lstPacsPhotos, "I", "PACSImage");
|
|
// 职业史
|
|
SetDataSource(ref rpt, testList, "CAH", "CAItems");
|
|
//问诊
|
|
SetDataSource(ref rpt, careerHisInq, "CAC", "CareerHisInq");
|
|
//症状
|
|
SetDataSource(ref rpt, symptoms, "CAS", "Symptoms");
|
|
|
|
|
|
|
|
rpt.Prepare(); //准备
|
|
return rpt;
|
|
}
|
|
|
|
/// <summary>
|
|
/// 一般体检
|
|
/// </summary>
|
|
/// <param name="patient"></param>
|
|
/// <param name="eid"></param>
|
|
/// <param name="filePath"></param>
|
|
/// <returns></returns>
|
|
private static FastReport.Report General(EnrollmentPatient patient, Int64 eid, string filePath)
|
|
{
|
|
var rpt = new FastReport.Report(); //实例化一个Report报表
|
|
|
|
rpt.Load(filePath);
|
|
var lstEFeeItems = new ReportModel().GetEFeeItem(eid);
|
|
var lstConclusions = new ReportModel().GetExamConclusions(eid);
|
|
var lstGeneral = new ReportModel().GetGeneralResult(eid);
|
|
var lstLis = new ReportModel().GetLisResult(eid);
|
|
var lstPacs = new ReportModel().GetPacsResult(eid);
|
|
var lstPacsPhotos = new ReportModel().GetPacsPhoto(eid);
|
|
|
|
// 登记信息
|
|
rpt.SetParameterValue("PatientName", patient.Name);
|
|
rpt.SetParameterValue("CardNo", patient.CardNo);
|
|
rpt.SetParameterValue("Nation", patient.Nation);
|
|
rpt.SetParameterValue("Age", patient.Age + patient.AgeClass);
|
|
rpt.SetParameterValue("Sex", patient.Sex == "1" ? "男" : patient.Sex == "2" ? "女" : "");
|
|
rpt.SetParameterValue("ExamID", patient.ID.ToString());
|
|
rpt.SetParameterValue("ExamDate", patient.SignTime?.ToShortDateString());
|
|
rpt.SetParameterValue("Marriage", patient.Marriage);
|
|
rpt.SetParameterValue("TeamName", patient.OrgName);
|
|
rpt.SetParameterValue("GroupName", patient.GroupName);
|
|
rpt.SetParameterValue("Company", patient.Company);
|
|
rpt.SetParameterValue("ExamType", patient.Type);
|
|
rpt.SetParameterValue("Address", patient.Address1);
|
|
rpt.SetParameterValue("Tel", patient.Tel1);
|
|
rpt.SetParameterValue("FinishPerson", patient.Finisher);
|
|
rpt.SetParameterValue("FinishDate", patient.FinishTime?.ToShortDateString());
|
|
rpt.SetParameterValue("HospitalName", Global._hospital.Name);
|
|
rpt.SetParameterValue("DeptName", patient.DeptName);
|
|
|
|
if (string.IsNullOrEmpty(patient.Photo))
|
|
{
|
|
rpt.SetParameterValue("Avatar", patient.Photo);
|
|
}
|
|
else
|
|
{
|
|
byte[] imageBytes = Convert.FromBase64String(patient.Photo);
|
|
using (MemoryStream ms = new MemoryStream(imageBytes))
|
|
{
|
|
Image image = Image.FromStream(ms);
|
|
using (MemoryStream stream = new MemoryStream())
|
|
{
|
|
image.Save(stream, ImageFormat.Png);
|
|
rpt.SetParameterValue("Avatar", Convert.ToBase64String(stream.ToArray()));
|
|
}
|
|
}
|
|
}
|
|
// 收费列表
|
|
SetDataSource(ref rpt, lstEFeeItems, "F", "FeeItems");
|
|
// 总结结论词
|
|
SetDataSource(ref rpt, lstConclusions, "C", "Conclusion");
|
|
//一般检查
|
|
SetDataSource(ref rpt, lstGeneral, "G", "General");
|
|
//PACS
|
|
SetDataSource(ref rpt, lstPacs, "P", "PACS");
|
|
//LIS
|
|
SetDataSource(ref rpt, lstLis, "L", "LIS");
|
|
// PacsImage
|
|
SetDataSource(ref rpt, lstPacsPhotos, "I", "PACSImage");
|
|
rpt.Prepare(); //准备
|
|
return rpt;
|
|
}
|
|
|
|
/// <summary>
|
|
/// 快速体检
|
|
/// </summary>
|
|
/// <param name="patient"></param>
|
|
/// <param name="eid"></param>
|
|
/// <param name="filePath"></param>
|
|
/// <returns></returns>
|
|
private static FastReport.Report EasyReport(EnrollmentPatient patient, Int64 eid, string filePath)
|
|
{
|
|
var rpt = new FastReport.Report(); //实例化一个Report报表
|
|
rpt.Load(filePath);
|
|
var lstExts = new ReportModel().GetReportExt(eid);
|
|
var lstChildren = new ReportModel().GetFastResult(eid);
|
|
var lstSummary = new TotalModel().GetSummary(eid);
|
|
var lstConclusion = new ReportModel().GetExamConclusions(eid);
|
|
var dict = new Dictionary<string, object>();
|
|
lstChildren.ForEach(item =>
|
|
{
|
|
if (!dict.ContainsKey($"param{item.RID}"))
|
|
dict.Add($"param{item.RID}", item.TextResult);
|
|
});
|
|
|
|
// 小结
|
|
var txtSummary = "";
|
|
lstSummary.ForEach(item =>
|
|
{
|
|
if (!string.IsNullOrEmpty(item.Summary))
|
|
txtSummary += item.Summary + Environment.NewLine;
|
|
});
|
|
|
|
// 结论词
|
|
var txtConclusion = "";
|
|
lstConclusion.ForEach(item =>
|
|
{
|
|
if (!string.IsNullOrEmpty(item.Conclusion))
|
|
txtConclusion += $@"【{item.Conclusion}】:" + item.Suggestion + Environment.NewLine;
|
|
});
|
|
|
|
// 登记信息
|
|
rpt.SetParameterValue("PatientName", patient.Name);
|
|
rpt.SetParameterValue("Age", patient.Age + patient.AgeClass);
|
|
rpt.SetParameterValue("Sex", patient.Sex == "1" ? "男" : patient.Sex == "2" ? "女" : "");
|
|
rpt.SetParameterValue("Nation", patient.Nation);
|
|
rpt.SetParameterValue("Marriage", patient.Marriage);
|
|
rpt.SetParameterValue("Avatar", patient.Photo);
|
|
rpt.SetParameterValue("Education", patient.Education);
|
|
rpt.SetParameterValue("Birthday", patient.Birthday?.ToShortDateString());
|
|
rpt.SetParameterValue("ExamDate", patient.SignTime?.ToShortDateString());
|
|
rpt.SetParameterValue("Contactor1", patient.Contactor1);
|
|
rpt.SetParameterValue("Contactor2", patient.Contactor2);
|
|
rpt.SetParameterValue("Address", patient.Address1);
|
|
rpt.SetParameterValue("Company", patient.Company);
|
|
rpt.SetParameterValue("Tel", patient.Tel1);
|
|
rpt.SetParameterValue("Finisher", patient.Finisher);
|
|
rpt.SetParameterValue("HospitalName", Global._hospital.Name);
|
|
rpt.SetParameterValue("CardNo", patient.CardNo);
|
|
rpt.SetParameterValue("Summary", txtSummary);
|
|
rpt.SetParameterValue("Conclusion", txtConclusion);
|
|
SetParameter(ref rpt, dict);
|
|
// 第三方报告
|
|
//SetDataSource(ref rpt, lstExts, "I", "ImageList");
|
|
rpt.Prepare(); //准备
|
|
return rpt;
|
|
}
|
|
|
|
/// <summary>
|
|
/// 绑定报告单数据源方法
|
|
/// </summary>
|
|
/// <param name="report">报告</param>
|
|
/// <param name="list">数据源 IList</param>
|
|
/// <param name="dataSourceName">数据源名称 R</param>
|
|
/// <param name="dataObjectName">数据源控件名称 Data1</param>
|
|
private static void SetDataSource(ref FastReport.Report report, IEnumerable list, string dataSourceName = "R",
|
|
string dataObjectName = "Data1")
|
|
{
|
|
report.RegisterData(list, dataSourceName);
|
|
if (report.Report.FindObject(dataObjectName) is DataBand dataBand)
|
|
dataBand.DataSource = report.Report.GetDataSource(dataSourceName);
|
|
report.GetDataSource(dataSourceName).Enabled = true;
|
|
}
|
|
|
|
/// <summary>
|
|
/// 绑定参数
|
|
/// </summary>
|
|
/// <param name="report"></param>
|
|
/// <param name="dict"></param>
|
|
private static void SetParameter(ref FastReport.Report report, Dictionary<string, object> dict)
|
|
{
|
|
foreach (var item in dict)
|
|
{
|
|
report.SetParameterValue(item.Key, item.Value);
|
|
}
|
|
}
|
|
|
|
/// <summary>
|
|
/// 打印个人收费单
|
|
/// </summary>
|
|
/// <param name="list"></param>
|
|
/// <param name="regInfo"></param>
|
|
public static FastReport.Report PrintCheckCost(List<EnrollmentCheckCost> list, EnrollmentPatient regInfo)
|
|
{
|
|
var rpt = new FastReport.Report(); //实例化一个Report报表
|
|
try
|
|
{
|
|
var reportFile = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "ReportFiles", "CheckCost.frx");
|
|
//var reportFile = "D:/Code/project/PEIS/CheckCost.frx";
|
|
rpt.Load(reportFile);
|
|
|
|
// 登记信息
|
|
rpt.SetParameterValue("Name", regInfo.Name);
|
|
rpt.SetParameterValue("Age", regInfo.Age + regInfo.AgeClass);
|
|
rpt.SetParameterValue("Sex",
|
|
"男".Equals(regInfo.Sex) ? "男" :
|
|
"女".Equals(regInfo.Sex) ? "女" :
|
|
"1".Equals(regInfo.Sex) ? "男" : "女");
|
|
rpt.SetParameterValue("ExamID", regInfo.ID.ToString());
|
|
rpt.SetParameterValue("ExamDate", regInfo.SignTime?.ToShortDateString());
|
|
rpt.SetParameterValue("Marriage", regInfo.Marriage);
|
|
rpt.SetParameterValue("TeamName", regInfo.OrgName);
|
|
rpt.SetParameterValue("GroupName", regInfo.GroupName);
|
|
rpt.SetParameterValue("ExamType", regInfo.Type);
|
|
rpt.SetParameterValue("Tel", regInfo.Tel1);
|
|
rpt.SetParameterValue("Avatar", regInfo.Photo);
|
|
rpt.SetParameterValue("Nation", string.IsNullOrEmpty(regInfo.Nation) ? "未知" : regInfo.Nation);
|
|
rpt.SetParameterValue("BirthDay", regInfo.Birthday?.ToShortDateString());
|
|
rpt.SetParameterValue("Address", regInfo.Address1);
|
|
rpt.SetParameterValue("HospitalName", Global._hospital?.Name);
|
|
rpt.SetParameterValue("Url",
|
|
Global.GetWeChatPayUrl() +
|
|
Convert.ToBase64String(System.Text.Encoding.Default.GetBytes(regInfo.CardNo)));
|
|
|
|
// 收费单
|
|
rpt.RegisterData(list, "C");
|
|
DataBand checkCost = rpt.Report.FindObject("CheckCost") as DataBand;
|
|
checkCost.DataSource = rpt.Report.GetDataSource("C");
|
|
rpt.GetDataSource("C").Enabled = true;
|
|
|
|
rpt.Prepare(); //准备
|
|
return rpt;
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
Global.Msg("info", ex.Message);
|
|
return null;
|
|
}
|
|
}
|
|
|
|
/// <summary>
|
|
/// 打印团体收费单
|
|
/// </summary>
|
|
/// <param name="list"></param>
|
|
/// <param name="regInfo"></param>
|
|
public static FastReport.Report PrintTCheckCost(List<EnrollmentCheckCost> list, EnrollmentOrg regInfo)
|
|
{
|
|
var rpt = new FastReport.Report(); //实例化一个Report报表
|
|
try
|
|
{
|
|
var reportFile = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "ReportFiles", "TCheckCost.frx");
|
|
//var reportFile = "D:/Code/project/PEIS/TCheckCost.frx";
|
|
rpt.Load(reportFile);
|
|
|
|
// 登记信息
|
|
rpt.SetParameterValue("Name", regInfo.Name);
|
|
rpt.SetParameterValue("ExamID", regInfo.ID.ToString());
|
|
rpt.SetParameterValue("ExamDate", regInfo.ExamDate?.ToShortDateString());
|
|
rpt.SetParameterValue("Contactor", regInfo.Contactor1);
|
|
rpt.SetParameterValue("Tel", regInfo.Tel1);
|
|
rpt.SetParameterValue("Address", regInfo.Address);
|
|
rpt.SetParameterValue("HospitalName", Global._hospital?.Name);
|
|
|
|
// 收费单
|
|
rpt.RegisterData(list, "C");
|
|
DataBand checkCost = rpt.Report.FindObject("CheckCost") as DataBand;
|
|
checkCost.DataSource = rpt.Report.GetDataSource("C");
|
|
rpt.GetDataSource("C").Enabled = true;
|
|
|
|
rpt.Prepare(); //准备
|
|
return rpt;
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
Global.Msg("info", ex.Message);
|
|
return null;
|
|
}
|
|
}
|
|
|
|
/// <summary>
|
|
/// 打印指引单
|
|
/// </summary>
|
|
/// <param name="list"></param>
|
|
/// <param name="regInfo"></param>
|
|
public static FastReport.Report PrintGuide(List<EnrollmentFeeItem> list, EnrollmentPatient regInfo)
|
|
{
|
|
var rpt = new FastReport.Report(); //实例化一个Report报表
|
|
try
|
|
{
|
|
var reportFile = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "ReportFiles", "Guide.frx");
|
|
//var reportFile = "D:/Code/project/PEIS/Guide.frx";
|
|
rpt.Load(reportFile);
|
|
|
|
// 收费列表
|
|
rpt.RegisterData(list, "F");
|
|
DataBand FeeItems = rpt.Report.FindObject("FeeItems") as DataBand;
|
|
FeeItems.DataSource = rpt.Report.GetDataSource("F");
|
|
rpt.GetDataSource("F").Enabled = true;
|
|
|
|
|
|
// 登记信息
|
|
rpt.SetParameterValue("Name", regInfo.Name);
|
|
rpt.SetParameterValue("Age", regInfo.Age + regInfo.AgeClass);
|
|
rpt.SetParameterValue("Sex",
|
|
"男".Equals(regInfo.Sex) ? "男" :
|
|
"女".Equals(regInfo.Sex) ? "女" :
|
|
"1".Equals(regInfo.Sex) ? "男" : "女");
|
|
rpt.SetParameterValue("ExamID", regInfo.ID.ToString());
|
|
rpt.SetParameterValue("ExamDate", regInfo.SignTime?.ToShortDateString());
|
|
rpt.SetParameterValue("Marriage", regInfo.Marriage);
|
|
rpt.SetParameterValue("TeamName", regInfo.OrgName);
|
|
rpt.SetParameterValue("GroupName", regInfo.DeptName);
|
|
rpt.SetParameterValue("ExamType", regInfo.Type);
|
|
rpt.SetParameterValue("Tel", regInfo.Tel1);
|
|
rpt.SetParameterValue("Nation", regInfo.Nation);
|
|
rpt.SetParameterValue("CardNo", regInfo.CardNo);
|
|
rpt.SetParameterValue("HospitalName", Global._hospital?.Name);
|
|
rpt.SetParameterValue("Remark", regInfo.Description);
|
|
|
|
if (string.IsNullOrEmpty(regInfo.Photo))
|
|
{
|
|
rpt.SetParameterValue("Avatar", regInfo.Photo);
|
|
}
|
|
else
|
|
{
|
|
byte[] imageBytes = Convert.FromBase64String(regInfo.Photo);
|
|
using (MemoryStream ms = new MemoryStream(imageBytes))
|
|
{
|
|
Image image = Image.FromStream(ms);
|
|
using (MemoryStream stream = new MemoryStream())
|
|
{
|
|
image.Save(stream, ImageFormat.Png);
|
|
rpt.SetParameterValue("Avatar", Convert.ToBase64String(stream.ToArray()));
|
|
}
|
|
}
|
|
}
|
|
|
|
rpt.Prepare(); //准备
|
|
return rpt;
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
Global.Msg("info", ex.Message);
|
|
return null;
|
|
}
|
|
}
|
|
|
|
/// <summary>
|
|
/// 打印申请单
|
|
/// </summary>
|
|
/// <param name="list"></param>
|
|
/// <param name="regInfo"></param>
|
|
public static FastReport.Report PrintApply(List<EnrollmentFeeItem> list, EnrollmentPatient regInfo)
|
|
{
|
|
var rpt = new FastReport.Report(); //实例化一个Report报表
|
|
try
|
|
{
|
|
var reportFile = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "ReportFiles", "Apply.frx");
|
|
//var reportFile = "D:/Code/project/PEIS/Apply.frx";
|
|
rpt.Load(reportFile);
|
|
|
|
// 检查
|
|
rpt.RegisterData(list.Where(w => w.ItemClass != "检验").ToList(), "E");
|
|
DataBand ExamItem = rpt.Report.FindObject("ExamItem") as DataBand;
|
|
ExamItem.DataSource = rpt.Report.GetDataSource("E");
|
|
rpt.GetDataSource("E").Enabled = true;
|
|
|
|
// 检验
|
|
rpt.RegisterData(list.Where(w => w.ItemClass == "检验").ToList(), "T");
|
|
DataBand TestItem = rpt.Report.FindObject("TestItem") as DataBand;
|
|
TestItem.DataSource = rpt.Report.GetDataSource("T");
|
|
rpt.GetDataSource("T").Enabled = true;
|
|
|
|
// 登记信息
|
|
rpt.SetParameterValue("Name", regInfo.Name);
|
|
rpt.SetParameterValue("Age", regInfo.Age + regInfo.AgeClass);
|
|
rpt.SetParameterValue("Sex",
|
|
"男".Equals(regInfo.Sex) ? "男" :
|
|
"女".Equals(regInfo.Sex) ? "女" :
|
|
"1".Equals(regInfo.Sex) ? "男" : "女");
|
|
rpt.SetParameterValue("ExamID", regInfo.ID.ToString());
|
|
rpt.SetParameterValue("ExamDate", regInfo.SignTime?.ToShortDateString());
|
|
rpt.SetParameterValue("Marriage", regInfo.Marriage);
|
|
rpt.SetParameterValue("TeamName", regInfo.OrgName);
|
|
rpt.SetParameterValue("GroupName", regInfo.GroupName);
|
|
rpt.SetParameterValue("ExamType", regInfo.Type);
|
|
rpt.SetParameterValue("Tel", regInfo.Tel1);
|
|
rpt.SetParameterValue("Avatar", regInfo.Photo);
|
|
rpt.SetParameterValue("HospitalName", Global._hospital?.Name);
|
|
rpt.SetParameterValue("BirthDay", regInfo.Birthday?.ToShortDateString());
|
|
|
|
rpt.Prepare(); //准备
|
|
return rpt;
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
Global.Msg("info", ex.Message);
|
|
return null;
|
|
}
|
|
}
|
|
|
|
/// <summary>
|
|
/// 批量打印指引单
|
|
/// </summary>
|
|
/// <param name="idList"></param>
|
|
public static FastReport.Report BatchPrintGuide(List<Int64> idList)
|
|
{
|
|
try
|
|
{
|
|
var rpt = new FastReport.Report(); //实例化一个Report报表
|
|
var i = 0;
|
|
|
|
foreach (var id in idList)
|
|
{
|
|
var reportFile = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "ReportFiles", "Guide.frx");
|
|
//var reportFile = "D:/Code/project/PEIS/Guide.frx";
|
|
rpt.Load(reportFile);
|
|
|
|
var patient = new EnrollmentPatientModel().GetEnrollmentPatient(id);
|
|
if (patient.SignTime == null) continue;
|
|
|
|
var feeItems = new EnrollmentPatientModel().GetItemsByEID(id);
|
|
var items = new List<EnrollmentFeeItem>();
|
|
feeItems.Where(w => w.OrderNo != null).GroupBy(g => g.DeptCode).ForEach(dept =>
|
|
{
|
|
var item = new EnrollmentFeeItem()
|
|
{
|
|
DeptName = dept.FirstOrDefault()?.DeptName,
|
|
FeeItemName = string.Join(@"、", dept.Select(s => s.FeeItemName).ToList()),
|
|
Address = dept.FirstOrDefault()?.Address
|
|
};
|
|
items.Add(item);
|
|
});
|
|
|
|
// 登记信息
|
|
rpt.SetParameterValue("Name", patient.Name);
|
|
rpt.SetParameterValue("Age", patient.Age + patient.AgeClass);
|
|
rpt.SetParameterValue("Sex",
|
|
"男".Equals(patient.Sex) ? "男" :
|
|
"女".Equals(patient.Sex) ? "女" :
|
|
"1".Equals(patient.Sex) ? "男" : "女");
|
|
rpt.SetParameterValue("ExamID", patient.ID.ToString());
|
|
rpt.SetParameterValue("ExamDate", patient.SignTime?.ToShortDateString());
|
|
rpt.SetParameterValue("Marriage", patient.Marriage);
|
|
rpt.SetParameterValue("TeamName", patient.OrgName);
|
|
rpt.SetParameterValue("GroupName", patient.GroupName);
|
|
rpt.SetParameterValue("ExamType", patient.Type);
|
|
rpt.SetParameterValue("Tel", patient.Tel1);
|
|
rpt.SetParameterValue("Nation", patient.Nation);
|
|
rpt.SetParameterValue("CardNo", patient.CardNo);
|
|
rpt.SetParameterValue("HospitalName", Global._hospital?.Name);
|
|
|
|
if (patient.Photo == null)
|
|
{
|
|
rpt.SetParameterValue("Avatar", patient.Photo);
|
|
}
|
|
else
|
|
{
|
|
byte[] imageBytes = Convert.FromBase64String(patient.Photo);
|
|
using (MemoryStream ms = new MemoryStream(imageBytes))
|
|
{
|
|
Image image = Image.FromStream(ms);
|
|
using (MemoryStream stream = new MemoryStream())
|
|
{
|
|
image.Save(stream, ImageFormat.Png);
|
|
rpt.SetParameterValue("Avatar", Convert.ToBase64String(stream.ToArray()));
|
|
}
|
|
}
|
|
}
|
|
|
|
// 收费列表
|
|
rpt.RegisterData(items, "F");
|
|
DataBand FeeItems = rpt.Report.FindObject("FeeItems") as DataBand;
|
|
FeeItems.DataSource = rpt.Report.GetDataSource("F");
|
|
rpt.GetDataSource("F").Enabled = true;
|
|
|
|
rpt.Prepare(i > 0); //准备
|
|
i++;
|
|
}
|
|
|
|
return rpt;
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
Global.Msg("info", ex.Message);
|
|
return null;
|
|
}
|
|
}
|
|
|
|
/// <summary>
|
|
/// 批量打印指收费单
|
|
/// </summary>
|
|
/// <param name="idList"></param>
|
|
public static FastReport.Report BatchPrintCheckCost(List<Int64> idList)
|
|
{
|
|
try
|
|
{
|
|
var rpt = new FastReport.Report(); //实例化一个Report报表
|
|
var i = 0;
|
|
|
|
foreach (var id in idList)
|
|
{
|
|
var reportFile = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "ReportFiles",
|
|
"CheckCost.frx");
|
|
//var reportFile = "D:/Code/project/PEIS/Guide.frx";
|
|
rpt.Load(reportFile);
|
|
|
|
var patient = new EnrollmentPatientModel().GetEnrollmentPatient(id);
|
|
var list = new EnrollmentCheckCostModel().GetCheckCost(0, id);
|
|
|
|
if (list.Where(w => w.CostTime == null).Count() == 0)
|
|
{
|
|
continue;
|
|
}
|
|
|
|
/// 登记信息
|
|
rpt.SetParameterValue("Name", patient.Name);
|
|
rpt.SetParameterValue("Age", patient.Age + patient.AgeClass);
|
|
rpt.SetParameterValue("Sex",
|
|
"男".Equals(patient.Sex) ? "男" :
|
|
"女".Equals(patient.Sex) ? "女" :
|
|
"1".Equals(patient.Sex) ? "男" : "女");
|
|
rpt.SetParameterValue("ExamID", patient.ID.ToString());
|
|
rpt.SetParameterValue("ExamDate", patient.SignTime?.ToShortDateString());
|
|
rpt.SetParameterValue("Marriage", patient.Marriage);
|
|
rpt.SetParameterValue("TeamName", patient.OrgName);
|
|
rpt.SetParameterValue("GroupName", patient.GroupName);
|
|
rpt.SetParameterValue("ExamType", patient.Type);
|
|
rpt.SetParameterValue("Tel", patient.Tel1);
|
|
rpt.SetParameterValue("Avatar", patient.Photo);
|
|
rpt.SetParameterValue("Nation", string.IsNullOrEmpty(patient.Nation) ? "未知" : patient.Nation);
|
|
rpt.SetParameterValue("BirthDay", patient.Birthday?.ToShortDateString());
|
|
rpt.SetParameterValue("Address", patient.Address1);
|
|
rpt.SetParameterValue("HospitalName", Global._hospital?.Name);
|
|
rpt.SetParameterValue("Url",
|
|
Global.GetWeChatPayUrl() +
|
|
Convert.ToBase64String(System.Text.Encoding.Default.GetBytes(patient.CardNo)));
|
|
|
|
// 收费单
|
|
rpt.RegisterData(list.Where(w => w.CostTime == null && w.OEID == null).ToList(), "C");
|
|
;
|
|
DataBand checkCost = rpt.Report.FindObject("CheckCost") as DataBand;
|
|
checkCost.DataSource = rpt.Report.GetDataSource("C");
|
|
rpt.GetDataSource("C").Enabled = true;
|
|
|
|
|
|
rpt.Prepare(i > 0); //准备
|
|
i++;
|
|
}
|
|
|
|
return rpt;
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
Global.Msg("info", ex.Message);
|
|
return null;
|
|
}
|
|
}
|
|
|
|
/// <summary>
|
|
/// 批量打印个人报告
|
|
/// </summary>
|
|
/// <param name="idList"></param>
|
|
public static FastReport.Report BatchGetReport(List<Int64> idlist)
|
|
{
|
|
try
|
|
{
|
|
var rpt = new FastReport.Report();
|
|
var i = 0;
|
|
|
|
foreach (var eid in idlist)
|
|
{
|
|
var patient = new ReportModel().GetPatientInfo(eid);
|
|
if (patient == null) return null;
|
|
var fileName =
|
|
DAOHelp.GetDataBySQL<Config>(
|
|
$"SELECT Description FROM Dict_Config where Value='{patient.Type}'").FirstOrDefault()
|
|
?.Description ?? "PReport.frx";
|
|
var filePath = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "ReportFiles",
|
|
fileName);
|
|
if (!File.Exists(filePath))
|
|
{
|
|
MessageBox.Show($@"未找到报告单模板文件:{fileName}", @"获取报告单失败");
|
|
return null;
|
|
}
|
|
|
|
if (fileName != "PReport.frx")
|
|
{
|
|
rpt = EasyReport(patient, eid, filePath);
|
|
rpt.Prepare(i > 0);
|
|
}
|
|
else
|
|
{
|
|
rpt.Load(filePath);
|
|
var lstEFeeItems = new ReportModel().GetEFeeItem(eid);
|
|
var lstConclusions = new ReportModel().GetExamConclusions(eid);
|
|
var lstGeneral = new ReportModel().GetGeneralResult(eid);
|
|
var lstLis = new ReportModel().GetLisResult(eid);
|
|
var lstPacs = new ReportModel().GetPacsResult(eid);
|
|
var lstPacsPhotos = new ReportModel().GetPacsPhoto(eid);
|
|
// 登记信息
|
|
rpt.SetParameterValue("PatientName", patient.Name);
|
|
rpt.SetParameterValue("CardNo", patient.CardNo);
|
|
rpt.SetParameterValue("Nation", patient.Nation);
|
|
rpt.SetParameterValue("Age", patient.Age + patient.AgeClass);
|
|
rpt.SetParameterValue("Sex", patient.Sex == "1" ? "男" : patient.Sex == "2" ? "女" : "");
|
|
rpt.SetParameterValue("ExamID", patient.ID.ToString());
|
|
rpt.SetParameterValue("ExamDate", patient.SignTime?.ToShortDateString());
|
|
rpt.SetParameterValue("Marriage", patient.Marriage);
|
|
rpt.SetParameterValue("TeamName", patient.OrgName);
|
|
rpt.SetParameterValue("GroupName", patient.GroupName);
|
|
rpt.SetParameterValue("ExamType", patient.Type);
|
|
rpt.SetParameterValue("Address", patient.Address1);
|
|
rpt.SetParameterValue("Tel", patient.Tel1);
|
|
rpt.SetParameterValue("FinishPerson", patient.Finisher);
|
|
rpt.SetParameterValue("FinishDate", patient.FinishTime?.ToShortDateString());
|
|
rpt.SetParameterValue("HospitalName", Global._hospital.Name);
|
|
if (patient.Photo == null)
|
|
{
|
|
rpt.SetParameterValue("Avatar", patient.Photo);
|
|
}
|
|
else
|
|
{
|
|
byte[] imageBytes = Convert.FromBase64String(patient.Photo);
|
|
using (MemoryStream ms = new MemoryStream(imageBytes))
|
|
{
|
|
Image image = Image.FromStream(ms);
|
|
using (MemoryStream stream = new MemoryStream())
|
|
{
|
|
image.Save(stream, ImageFormat.Png);
|
|
rpt.SetParameterValue("Avatar", Convert.ToBase64String(stream.ToArray()));
|
|
}
|
|
}
|
|
}
|
|
// 收费列表
|
|
SetDataSource(ref rpt, lstEFeeItems, "F", "FeeItems");
|
|
// 总结结论词
|
|
SetDataSource(ref rpt, lstConclusions, "C", "Conclusion");
|
|
//一般检查
|
|
SetDataSource(ref rpt, lstGeneral, "G", "General");
|
|
//PACS
|
|
SetDataSource(ref rpt, lstPacs, "P", "PACS");
|
|
//LIS
|
|
SetDataSource(ref rpt, lstLis, "L", "LIS");
|
|
// PacsImage
|
|
SetDataSource(ref rpt, lstPacsPhotos, "I", "PACSImage");
|
|
rpt.Prepare(i > 0);
|
|
}
|
|
|
|
i++;
|
|
}
|
|
|
|
return rpt;
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
LogHelper.Log.Error($@"生成报告单失败:{ex.Message}");
|
|
Global.Msg("info", ex.Message);
|
|
return null;
|
|
}
|
|
}
|
|
}
|
|
} |