Files
2025-08-02 05:20:17 +07:00

131 lines
7.5 KiB
C#

using System;
using System.Collections.Generic;
using System.Linq;
using Datalib.DatabaseSpecific;
using System.Windows.Forms;
using Datalib.Linq;
using Datalib.EntityClasses;
using Datalib.FactoryClasses;
using Datalib.HelperClasses;
using PatientMan.Classes;
namespace PatientMan.Classes
{
class clsHivQualExport
{
public DateTime BeginDate;
public DateTime EndDate;
public DataAccessAdapter adapter = new DataAccessAdapter(SettingInfo.Constr);
private EntityCollection<TblPatientEntity> Patients = new EntityCollection<TblPatientEntity>();
private EntityCollection<TblExaminationInfoEntity> Exams = new EntityCollection<TblExaminationInfoEntity>();
private EntityCollection<TblTreatmentInfoEntity> Treatments = new EntityCollection<TblTreatmentInfoEntity>();
private EntityCollection<TblPreClinicsInfoEntity> Tests = new EntityCollection<TblPreClinicsInfoEntity>();
public void HivQual()
{
SaveFileDialog saveDlg = new SaveFileDialog();
saveDlg.Filter = "Excel File|*.xlsx";
if (saveDlg.ShowDialog() != DialogResult.OK) return;
adapter.FetchEntityCollection(Patients, null);
adapter.FetchEntityCollection(Exams, null);
adapter.FetchEntityCollection(Treatments, null);
adapter.FetchEntityCollection(Tests, null);
var setLastExams = Exams.Where(p => p.ExamDate >= BeginDate && p.ExamDate <= EndDate).GroupBy(p => p.PatientId).Select (g=>g.OrderBy(m=>m.ExamDate).Last()).ToList();
var setPatients = setLastExams.Join(Patients, p => p.PatientId, q => q.PatientId, (p, q) => new
{
MaOPC = DBNull.Value,
MaBA = p.PatientId,
TuNgay = BeginDate,
DenNgay = EndDate,
NgayThuThap = DateTime.Today,
NguoiThuThap = "USAID/SMART TA eLog",
NgayDangKy = q.DateofRegistration,
ChuaARVCT = (q.HaveArvBefore != 1 && q.Dateofreferral != null)?"True":"False",
ARVCT = (q.HaveArvBefore == 1 && q.Dateofreferral != null)?"True":"False",
NgayXNMG1 = (Tests.Where(m => m.Testid == "03" || m.Testid == "04").Where(m => m.TestDate >= BeginDate && m.TestDate <= EndDate && m.PatientId == p.PatientId).Count() != 0) ? Tests.Where(m => m.Testid == "03" || m.Testid == "04").Where(m => m.TestDate >= BeginDate && m.TestDate <= EndDate && m.PatientId == p.PatientId).OrderBy(m => m.TestDate).Last().TestDate : null,
ALT1 = (Tests.Where(m => m.Testid == "03" && m.TestDate >= BeginDate && m.TestDate <= EndDate && m.PatientId == p.PatientId).Count() != 0) ? Tests.Where(m => m.Testid == "03" && m.TestDate >= BeginDate && m.TestDate <= EndDate && m.PatientId == p.PatientId).OrderBy(m => m.TestDate).Last().QuantityResult : null,
AST1 = (Tests.Where(m => m.Testid == "04" && m.TestDate >= BeginDate && m.TestDate <= EndDate && m.PatientId == p.PatientId).Count() != 0) ? Tests.Where(m => m.Testid == "04" && m.TestDate >= BeginDate && m.TestDate <= EndDate && m.PatientId == p.PatientId).OrderBy(m => m.TestDate).Last().QuantityResult : null,
NgayXNMG2 = DBNull.Value,
ALT2 = DBNull.Value,
AST2 = DBNull.Value,
NgayDieuTriARV = (q.DateofArv != null && q.DateofArv < EndDate) ? q.DateofArv : null,
NgayGDLS3 = (Exams.Where(m => m.PatientId == p.PatientId).Where(m => m.ClinicStage == 3).Count() != 0) ? Exams.Where(m => m.PatientId == p.PatientId).Where(m => m.ClinicStage == 3).First().ExamDate : null,
NgayGDLS4 = (Exams.Where(m => m.PatientId == p.PatientId).Where(m => m.ClinicStage == 4).Count() != 0) ? Exams.Where(m => m.PatientId == p.PatientId).Where(m => m.ClinicStage == 4).First().ExamDate : null,
NgayDuTCDieuTriARV = DBNull.Value,
NgaySanSangDieuTriARV = DBNull.Value,
NgayHen = (Exams.Where(g => g.PatientId == p.PatientId && g.ExamDate > BeginDate && g.ExamDate < p.ExamDate).Count() != 0) ? Exams.Where(g => g.PatientId == p.PatientId && g.ExamDate > BeginDate && g.ExamDate < p.ExamDate).OrderBy(m => m.ExamDate).Last().ReExamDate : p.ExamDate,
NgayKham = p.ExamDate,
NgayHenKeTiep = p.ReExamDate,
DuPhongCTX = (Treatments.Where(m => m.PatientId == p.PatientId && m.TreatmentId == "04").Select(m => new { m.TreatmentSdate, TreatmentEdate = (m.TreatmentEdate == null) ? m.TreatmentSdate.Value.AddYears(100) : m.TreatmentEdate.Value }).Where(m => m.TreatmentSdate <= p.ExamDate && m.TreatmentEdate >= p.ExamDate).Count() != 0) ? 1 : 2,
INH = (Treatments.Where(m => m.PatientId == p.PatientId && m.TreatmentId == "03").Select(m => new {m.TreatmentSdate, TreatmentEdate = (m.TreatmentEdate == null) ? m.TreatmentSdate.Value.AddYears(100) : m.TreatmentEdate }).Where(m => m.TreatmentSdate <= p.ExamDate && m.TreatmentEdate >= p.ExamDate).Count() != 0) ? 1 : 2,
NguoiNhaLanhThuoc = (p.NoSelfExam==1)?1:2,
GiaiDoanLS =(p.ClinicStage>0)?p.ClinicStage:9,
SangLocLao = (Treatments.Where(m => m.PatientId == p.PatientId && m.TreatmentId == "02").Select(m => new {m.TreatmentSdate, TreatmentEdate = (m.TreatmentEdate == null) ? m.TreatmentSdate.Value.AddYears(100) : m.TreatmentEdate }).Where(m => m.TreatmentSdate <= p.ExamDate && m.TreatmentEdate >= p.ExamDate).Count() != 0) ? 3:(p.TbScreenResult == string.Empty)?9:(p.TbScreenResult=="02"?1:2),
RLThanKinh=DBNull.Value,
VangDa =(p.Jaundice==1)?1:2,
DGiaTThuDT = (q.DateofArv==null || q.DateofArv> p.ExamDate)?3:p.TreatmentFollow==1?1:2,
NgayKT =p.EndExamDate,
}
).ToList();
Forms.frmExp frm = new Forms.frmExp();
frm.grdHivQual.DataSource = setPatients;
frm.grdHivQual.ExportToXlsx(saveDlg.FileName);
MessageBox.Show("Dữ liệu đã được kết xuất ra tệp " + saveDlg.FileName);
frm.Dispose();
}
public void CD4()
{
SaveFileDialog saveDlg = new SaveFileDialog();
saveDlg.Filter = "Excel File|*.xlsx";
if (saveDlg.ShowDialog() != DialogResult.OK) return;
adapter.FetchEntityCollection(Patients, null);
adapter.FetchEntityCollection(Exams, null);
adapter.FetchEntityCollection(Treatments, null);
adapter.FetchEntityCollection(Tests, null);
var setLastExams = Exams.Where(p => p.ExamDate >= BeginDate && p.ExamDate <= EndDate).GroupBy(p => p.PatientId).Select(g => g.OrderBy(m => m.ExamDate).Last()).ToList();
var CD4 = Tests.Where(p => p.Testid == "01" && p.TestDate <= EndDate && p.TestDate >= EndDate.AddYears(-1)).ToList();
var SetCD4 = setLastExams.Join(CD4, p => p.PatientId, q => q.PatientId, (p, q) => new
{
MaOPC = DBNull.Value,
MaBA = p.PatientId,
TuNgay = BeginDate,
DenNgay = EndDate,
NgayThuThap = DateTime.Today,
NguoiThuThap = "USAID/SMART TA eLog",
NgayXNCD4 = q.TestDate,
KQCD4= q.QuantityResult
}
).OrderBy(m=>m.MaBA).ThenBy(m=>m.NgayXNCD4 ).ToList();
Forms.frmExp frm = new Forms.frmExp();
frm.grdHivQual.DataSource = SetCD4;
frm.grdHivQual.ExportToXlsx(saveDlg.FileName);
MessageBox.Show("Dữ liệu đã được kết xuất ra tệp " + saveDlg.FileName);
frm.Dispose();
}
}
}