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

700 lines
47 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 clsD28
{
public DevExpress.XtraSpreadsheet.SpreadsheetControl spreed;
public DateTime BeginDate;
public DateTime EndDate;
private DevExpress.Spreadsheet.Worksheet _D28, _R6, _R7, _R8, _R9, _Common, _Tracking;
public DataAccessAdapter adapter = new DataAccessAdapter(SettingInfo.Constr);
public void Calculate()
{
// var path = Application.StartupPath;
// var templatefile = path + @"\templates\d8.xls";
// var repfile = path + @"\Excels\d8.xls";
// Microsoft.Office.Interop.Excel.Workbook wb;
// var app = new Excel.Application();
// File.Copy(templatefile, repfile, true);
// wb = app.Workbooks.Open(repfile);
_D28 = this.spreed.Document.Worksheets["D28"];
_Tracking = this.spreed.Document.Worksheets["Tracking"];
_R6 = this.spreed.Document.Worksheets["R6"];
_R7 = this.spreed.Document.Worksheets["R7"];
_R8 = this.spreed.Document.Worksheets["R8"];
_R9 = this.spreed.Document.Worksheets["R9"];
_Common = this.spreed.Document.Worksheets["Common"];
_Common.Cells[1, 1].Value = BeginDate;
_Common.Cells[1, 2].Value = EndDate;
R6();
R7();
R8();
R9();
}
#region R6
private void R6()
{
var firstrowindex = 6;
var firstcolumnindex = 3;
const int age = 15;
var ws = _R6;
LinqMetaData meta = new LinqMetaData(adapter);
var exams = new EntityCollection<TblExaminationInfoEntity>();
adapter.FetchEntityCollection(exams, null);
// var Patients = new EntityCollection<TblPatientEntity>();
//var BeginDate = (DateTime)this.BeginDate.EditValue;
//var EndDate = (DateTime)this.EndDate.EditValue;
#region index1
// Mới đăng ký trong kỳ báo cáo
int[] index1 = { 0, 0, 0, 0, };
string[] indexs1 = { "", "", "", "" };
var index1result = meta.TblPatient.Where(m => m.DateofRegistration >= BeginDate && m.DateofRegistration <= EndDate && m.HaveArvBefore != 1).Select(p => new { PatientId = p.PatientId, Sex = p.Sex, Age = EndDate.Year - p.BirthYear }).ToList();
//Nam < 15 tuổi
index1[0] = index1result.Where(m => m.Age < age).Where(m => m.Sex == 1).Count();
indexs1[0] = string.Join(",", index1result.Where(m => m.Age < 15).Where(m => m.Sex == 1).Select(p => p.PatientId).ToArray());
// Nam từ 15 tuổi
index1[1] = index1result.Where(m => m.Age >= age).Where(m => m.Sex == 1).Count();
indexs1[1] = string.Join(",", index1result.Where(m => m.Age >= age).Where(m => m.Sex == 1).Select(p => p.PatientId).ToArray());
//Nữ < 15 tuổi
index1[2] = index1result.Where(m => m.Age < age).Where(m => m.Sex == 2).Count();
indexs1[2] = string.Join(",", index1result.Where(m => m.Age < age).Where(m => m.Sex == 2).Select(p => p.PatientId).ToArray());
//Nữ từ 15 tuổi
index1[3] = index1result.Where(m => m.Age >= age).Where(m => m.Sex == 2).Count();
indexs1[3] = string.Join(",", index1result.Where(m => m.Age >= age).Where(m => m.Sex == 2).Select(p => p.PatientId).ToArray());
//fill
_D28.Cells[10, 3].Value = index1[0]; _D28.Cells[10, 4].Value = index1[1]; _D28.Cells[10, 5].Value = index1[2]; _D28.Cells[10, 6].Value = index1[3];
_Tracking.Cells[10, 3].Value = indexs1[0]; _Tracking.Cells[10, 4].Value = indexs1[1]; _Tracking.Cells[10, 5].Value = indexs1[2]; _Tracking.Cells[10, 6].Value = indexs1[3];
#endregion
#region index2
// Đang quản lý - Trước ARV
int[] index2 = { 0, 0, 0, 0, };
string[] indexs2 = { "", "", "", "" };
List<string> ends = exams.Where(p => p.ExamDate < EndDate).GroupBy(q => q.PatientId).Select(g => g.OrderByDescending(m => m.ExamDate).First()).ToList().Where(s => s.EndExamDate == null || s.EndExamDate > EndDate).Select(t => t.PatientId).ToList();
var index2result = meta.TblPatient.Where(m => m.DateofArv > EndDate || m.DateofArv == null).Where(p => ends.Contains(p.PatientId)).Select(p => new { PatientId = p.PatientId, Sex = p.Sex, Age = EndDate.Year - p.BirthYear }).ToList();
//Nam < 15 tuổi
index2[0] = index2result.Where(m => m.Age < age).Where(m => m.Sex == 1).Count();
indexs2[0] = string.Join(",", index2result.Where(m => m.Age < 1).Where(m => m.Sex == 1).Select(p => p.PatientId).ToArray());
// Nam từ 15 tuổi
index2[1] = index2result.Where(m => m.Age >= age).Where(m => m.Sex == 1).Count();
indexs2[1] = string.Join(",", index2result.Where(m => m.Age >= 15).Where(m => m.Sex == 1).Select(p => p.PatientId).ToArray());
//Nữ < 15 tuổi
index2[2] = index2result.Where(m => m.Age < age).Where(m => m.Sex == 2).Count();
indexs2[2] = string.Join(",", index2result.Where(m => m.Age < 1).Where(m => m.Sex == 2).Select(p => p.PatientId).ToArray());
//Nữ từ 15 tuổi
index2[3] = index2result.Where(m => m.Age >= age).Where(m => m.Sex == 2).Count();
indexs2[3] = string.Join(",", index2result.Where(m => m.Age >= 15).Where(m => m.Sex == 2).Select(p => p.PatientId).ToArray());
//fill
_D28.Cells[11, 3].Value = index2[0]; _D28.Cells[11, 4].Value = index2[1]; _D28.Cells[11, 5].Value = index2[2]; _D28.Cells[11, 6].Value = index2[3];
_Tracking.Cells[11, 3].Value = indexs1[0]; _Tracking.Cells[11, 4].Value = indexs1[1]; _Tracking.Cells[11, 5].Value = indexs1[2]; _Tracking.Cells[11, 6].Value = indexs1[3];
#endregion
}
#endregion
#region R7
private void R7()
{
/*BIỂU 7. QUẢN LÝ ĐIỀU TRỊ ARV TẠI CƠ SỞ ĐIỀU TRỊ HIV/AIDS*/
var ws = _R7;
var firstrowindex = 6;
var firstcolumnindex = 3;
const int age = 15;
var Patients = new EntityCollection<TblPatientEntity>();
var Referrals = new EntityCollection<TblReferralsToEntity>();
var Treatments = new EntityCollection<TblTreatmentInfoEntity>();
var exams = new EntityCollection<TblExaminationInfoEntity>();
LinqMetaData meta = new LinqMetaData(adapter);
//var BeginDate = (DateTime)this.BeginDate.EditValue;
//var EndDate = (DateTime)this.EndDate.EditValue;
adapter.FetchEntityCollection(Patients, null);
adapter.FetchEntityCollection(Referrals, null);
adapter.FetchEntityCollection(Treatments, null);
adapter.FetchEntityCollection(exams, null);
#region index1
/*Tính chỉ số thứ nhất - Bắt đầu được điều trị ARV tại cơ sở trong kỳ báo cáo
Lọc những người có ngày Arv != null và nằm trong khoảng BeginDate và EndDate
Loại bỏ những người từ nơi khác chuyển đến
*/
int[] index1 = { 0, 0, 0, 0 };
string[] indexs1 = { "", "", "", "" };
var index1result = meta.TblPatient.Where(m => m.DateofArv != null && m.DateofArv >= BeginDate && m.DateofArv <= EndDate && m.HaveArvBefore != 1).Select(p => new { PatientId = p.PatientId, Sex = p.Sex, Age = EndDate.Year - p.BirthYear }).ToList();
//Nam < 15 tuổi
index1[0] = index1result.Where(m => m.Age < age).Where(m => m.Sex == 1).Count();
indexs1[0] = string.Join(",", index1result.Where(m => m.Age < 1).Where(m => m.Sex == 1).Select(p => p.PatientId).ToArray());
// Nam từ 15 tuổi
index1[1] = index1result.Where(m => m.Age >= age).Where(m => m.Sex == 1).Count();
indexs1[1] = string.Join(",", index1result.Where(m => m.Age >= 15).Where(m => m.Sex == 1).Select(p => p.PatientId).ToArray());
//Nữ < 15 tuổi
index1[2] = index1result.Where(m => m.Age < age).Where(m => m.Sex == 2).Count();
indexs1[2] = string.Join(",", index1result.Where(m => m.Age < 1).Where(m => m.Sex == 2).Select(p => p.PatientId).ToArray());
//Nữ từ 15 tuổi
index1[3] = index1result.Where(m => m.Age >= age).Where(m => m.Sex == 2).Count();
indexs1[3] = string.Join(",", index1result.Where(m => m.Age >= age).Where(m => m.Sex == 2).Select(p => p.PatientId).ToArray());
//fill
_D28.Cells[19, 3].Value = index1[0]; _D28.Cells[19, 4].Value = index1[1]; _D28.Cells[19, 5].Value = index1[2]; _D28.Cells[19, 6].Value = index1[3];
_Tracking.Cells[19, 3].Value = indexs1[0]; _Tracking.Cells[19, 4].Value = indexs1[1]; _Tracking.Cells[19, 5].Value = indexs1[2]; _Tracking.Cells[19, 6].Value = indexs1[3];
#endregion
#region Index2
//Điều trị lại trong kỳ báo cáo
int[] index2 = { 0, 0, 0, 0 };
string[] indexs2 = { "", "", "", "" };
var index2preresult = meta.TblExaminationInfo.Where(m => m.ExamDate >= BeginDate && m.ExamDate <= EndDate && m.ReTreatment == 1).ToList();
var index2result = index2preresult.Join(meta.TblPatient, e => e.PatientId, p => p.PatientId, (e, p) => new { PatientId = p.PatientId, Sex = p.Sex, Age = EndDate.Year - p.BirthYear, ExamDate = e.ExamDate, DateofArv = p.DateofArv }).Where(m => m.DateofArv != null && m.ExamDate > m.DateofArv).ToList();
//Nam < 15 tuổi
index2[0] = index2result.Where(m => m.Age < age).Where(m => m.Sex == 1).Count();
indexs2[0] = string.Join(",", index2result.Where(m => m.Age < age).Where(m => m.Sex == 1).Select(p => p.PatientId).ToArray());
// Nam từ 15 tuổi
index2[1] = index2result.Where(m => m.Age >= age).Where(m => m.Sex == 1).Count();
indexs2[1] = string.Join(",", index2result.Where(m => m.Age >= 15).Where(m => m.Sex == 1).Select(p => p.PatientId).ToArray());
//Nữ < 15 tuổi
index2[2] = index2result.Where(m => m.Age < age).Where(m => m.Sex == 2).Count();
indexs2[2] = string.Join(",", index2result.Where(m => m.Age < 1).Where(m => m.Sex == 2).Select(p => p.PatientId).ToArray());
//Nữ từ 15 tuổi
index2[3] = index2result.Where(m => m.Age >= age).Where(m => m.Sex == 2).Count();
indexs2[3] = string.Join(",", index2result.Where(m => m.Age >= age).Where(m => m.Sex == 2).Select(p => p.PatientId).ToArray());
//fill
_D28.Cells[20, 3].Value = index2[0]; _D28.Cells[20, 4].Value = index2[1]; _D28.Cells[20, 5].Value = index2[2]; _D28.Cells[20, 6].Value = index2[3];
_Tracking.Cells[20, 3].Value = indexs2[0]; _Tracking.Cells[20, 4].Value = indexs2[1]; _Tracking.Cells[20, 5].Value = indexs2[2]; _Tracking.Cells[20, 6].Value = indexs2[3];
#endregion
#region Index 3
// Tính chỉ số thứ 3 - Chuyển tới trong kỳ báo cáo . Lưu ý chỉ ARV
int[] index3 = { 0, 0, 0, 0, 0, 0 };
string[] indexs3 = { "", "", "", "", "", "" };
var index3result = meta.TblPatient.Where(p => p.Dateofreferral != null && p.Dateofreferral >= BeginDate && p.Dateofreferral <= EndDate && p.DateofArv != null && p.HaveArvBefore == 1).Select(p => new { PatientId = p.PatientId, Sex = p.Sex, Age = EndDate.Year - p.BirthYear }).ToList();
//Nam < 15 tuổi
index3[0] = index3result.Where(m => m.Age < age).Where(m => m.Sex == 1).Count();
indexs3[0] = string.Join(",", index3result.Where(m => m.Age < age).Where(m => m.Sex == 1).Select(p => p.PatientId).ToArray());
// Nam từ 15 tuổi
index3[2] = index3result.Where(m => m.Age >= age).Where(m => m.Sex == 1).Count();
indexs3[2] = string.Join(",", index3result.Where(m => m.Age >= age).Where(m => m.Sex == 1).Select(p => p.PatientId).ToArray());
//Nữ < 1 tuổi
index3[3] = index3result.Where(m => m.Age < age).Where(m => m.Sex == 2).Count();
indexs3[3] = string.Join(",", index3result.Where(m => m.Age < age).Where(m => m.Sex == 2).Select(p => p.PatientId).ToArray());
//Nữ từ 15 tuổi
index3[3] = index3result.Where(m => m.Age >= age).Where(m => m.Sex == 2).Count();
indexs3[3] = string.Join(",", index3result.Where(m => m.Age >= age).Where(m => m.Sex == 2).Select(p => p.PatientId).ToArray());
//fill
_D28.Cells[21, 3].Value = index3[0]; _D28.Cells[21, 4].Value = index3[1]; _D28.Cells[21, 5].Value = index3[2]; _D28.Cells[21, 6].Value = index3[3];
_Tracking.Cells[21, 3].Value = indexs3[0]; _Tracking.Cells[21, 4].Value = indexs3[1]; _Tracking.Cells[21, 5].Value = indexs3[2]; _Tracking.Cells[21, 5].Value = indexs3[3];
#endregion
#region index4
//Chuyển đi trong kỳ báo cáo
int[] index4 = { 0, 0, 0, 0, };
string[] indexs4 = { "", "", "", "", };
var referrals = meta.TblReferralsTo.Where(p => p.EndDate >= BeginDate && p.EndDate <= EndDate && p.TypeId == "09").ToList();
var index4result = referrals.Join(meta.TblPatient, e => e.PatientId, p => p.PatientId, (e, p) => new { PatientId = p.PatientId, Sex = p.Sex, Age = EndDate.Year - p.BirthYear, DateofArv = p.DateofArv, EndDate = e.EndDate }).Where(m => m.DateofArv != null && m.EndDate >= m.DateofArv).ToList();
//Nam < 15 tuổi
index4[0] = index4result.Where(m => m.Age < age).Where(m => m.Sex == 1).Count();
indexs4[0] = string.Join(",", index4result.Where(m => m.Age < age).Where(m => m.Sex == 1).Select(p => p.PatientId).ToArray());
// Nam từ 15 tuổi
index4[1] = index4result.Where(m => m.Age >= age).Where(m => m.Sex == 1).Count();
indexs4[1] = string.Join(",", index4result.Where(m => m.Age >= 15).Where(m => m.Sex == 1).Select(p => p.PatientId).ToArray());
//Nữ < 1 tuổi
index4[2] = index4result.Where(m => m.Age < age).Where(m => m.Sex == 2).Count();
indexs4[2] = string.Join(",", index4result.Where(m => m.Age < 1).Where(m => m.Sex == 2).Select(p => p.PatientId).ToArray());
//Nữ từ 15 tuổi
index4[3] = index4result.Where(m => m.Age >= age).Where(m => m.Sex == 2).Count();
indexs4[3] = string.Join(",", index4result.Where(m => m.Age >= age).Where(m => m.Sex == 2).Select(p => p.PatientId).ToArray());
_D28.Cells[22, 3].Value = index4[0]; _D28.Cells[22, 4].Value = index4[1]; _D28.Cells[22, 5].Value = index4[2]; _D28.Cells[22, 6].Value = index4[3];
_Tracking.Cells[22, 3].Value = indexs4[0]; _Tracking.Cells[22, 4].Value = indexs4[1]; _Tracking.Cells[22, 5].Value = indexs4[2]; _Tracking.Cells[22, 5].Value = indexs4[3];
#endregion
#region index5
//Tử vong trong kỳ báo cáo
int[] index5 = { 0, 0, 0, 0 };
string[] indexs5 = { "", "", "", "" };
var deaths = meta.TblReferralsTo.Where(p => p.EndDate >= BeginDate && p.EndDate <= EndDate && p.TypeId == "11").ToList();
var index5result = deaths.Join(meta.TblPatient, e => e.PatientId, p => p.PatientId, (e, p) => new { PatientId = p.PatientId, Sex = p.Sex, Age = EndDate.Year - p.BirthYear, DateofArv = p.DateofArv, EndDate = e.EndDate }).Where(m => m.DateofArv != null || m.EndDate > m.DateofArv).ToList();
//Nam < 15 tuổi
index5[0] = index5result.Where(m => m.Age < age).Where(m => m.Sex == 1).Count();
indexs5[0] = string.Join(",", index5result.Where(m => m.Age < age).Where(m => m.Sex == 1).Select(p => p.PatientId).ToArray());
// Nam từ 15 tuổi
index5[1] = index5result.Where(m => m.Age >= age).Where(m => m.Sex == 1).Count();
indexs5[1] = string.Join(",", index5result.Where(m => m.Age >= age).Where(m => m.Sex == 1).Select(p => p.PatientId).ToArray());
//Nữ < 1 tuổi
index5[2] = index5result.Where(m => m.Age < age).Where(m => m.Sex == 2).Count();
indexs5[2] = string.Join(",", index5result.Where(m => m.Age < age).Where(m => m.Sex == 2).Select(p => p.PatientId).ToArray());
//Nữ từ 15 tuổi
index5[3] = index5result.Where(m => m.Age >= age).Where(m => m.Sex == 2).Count();
indexs5[3] = string.Join(",", index5result.Where(m => m.Age >= age).Where(m => m.Sex == 2).Select(p => p.PatientId).ToArray());
//fill
_D28.Cells[23, 3].Value = index5[0]; _D28.Cells[23, 4].Value = index5[1]; _D28.Cells[23, 5].Value = index5[2]; _D28.Cells[23, 6].Value = index5[3];
_Tracking.Cells[23, 3].Value = indexs5[0]; _Tracking.Cells[23, 4].Value = indexs5[1]; _Tracking.Cells[23, 5].Value = indexs5[2]; _Tracking.Cells[23, 6].Value = indexs5[3];
#endregion
#region index6
//Bỏ trị trong kỳ báo cáo
int[] index6 = { 0, 0, 0, 0 };
string[] indexs6 = { "", "", "", "" };
var lossfollows = meta.TblReferralsTo.Where(p => p.EndDate >= BeginDate && p.EndDate <= EndDate && p.TypeId == "10").ToList();
var index6result = lossfollows.Join(meta.TblPatient, e => e.PatientId, p => p.PatientId, (e, p) => new { PatientId = p.PatientId, Sex = p.Sex, Age = EndDate.Year - p.BirthYear, DateofArv = p.DateofArv, EndDate = e.EndDate }).Where(m => m.DateofArv != null || m.EndDate > m.DateofArv).ToList();
//Nam < 15 tuổi
index6[0] = index6result.Where(m => m.Age < age).Where(m => m.Sex == 1).Count();
indexs6[0] = string.Join(",", index6result.Where(m => m.Age < age).Where(m => m.Sex == 1).Select(p => p.PatientId).ToArray());
// Nam từ 15 tuổi
index6[1] = index6result.Where(m => m.Age >= age).Where(m => m.Sex == 1).Count();
indexs6[1] = string.Join(",", index6result.Where(m => m.Age >= age).Where(m => m.Sex == 1).Select(p => p.PatientId).ToArray());
//Nữ < 15 tuổi
index6[2] = index6result.Where(m => m.Age < age).Where(m => m.Sex == 2).Count();
indexs6[2] = string.Join(",", index6result.Where(m => m.Age < age).Where(m => m.Sex == 2).Select(p => p.PatientId).ToArray());
//Nữ từ 15 tuổi
index6[3] = index6result.Where(m => m.Age >= age).Where(m => m.Sex == 2).Count();
indexs6[3] = string.Join(",", index6result.Where(m => m.Age >= age).Where(m => m.Sex == 2).Select(p => p.PatientId).ToArray());
//fill
_D28.Cells[24, 3].Value = index6[0]; _D28.Cells[24, 4].Value = index6[1]; _D28.Cells[24, 5].Value = index6[2]; _D28.Cells[24, 6].Value = index6[3];
_Tracking.Cells[24, 3].Value = indexs6[0]; _Tracking.Cells[24, 4].Value = indexs6[1]; _Tracking.Cells[24, 5].Value = indexs6[2]; _Tracking.Cells[24, 6].Value = indexs6[3];
#endregion
#region index7
// Đang quản lý
int[] index7 = { 0, 0, 0, 0 };
string[] indexs7 = { "", "", "", "" };
var LastArvs = Treatments.Where(p => p.TreatmentSdate < EndDate && p.TreatmentId == "01").GroupBy(q => q.PatientId).Select(g => g.OrderByDescending(m => m.TreatmentSdate).First()).ToList().Where(s => s.TreatmentEdate == null || s.TreatmentEdate > EndDate).Select(t=>t.PatientId).ToList();
var index7result = Patients.Where(m => m.DateofArv != null && m.DateofArv <= EndDate).Where(p => LastArvs.Contains(p.PatientId)).Select(p => new { PatientId = p.PatientId, Sex = p.Sex, Age = EndDate.Year - p.BirthYear }).ToList();
//Nam < 15 tuổi
index7[0] = index7result.Where(m => m.Age < age).Where(m => m.Sex == 1).Count();
indexs7[0] = string.Join(",", index7result.Where(m => m.Age < age).Where(m => m.Sex == 1).Select(p => p.PatientId).ToArray());
// Nam từ 15 tuổi
index7[1] = index7result.Where(m => m.Age >= age).Where(m => m.Sex == 1).Count();
indexs7[1] = string.Join(",", index7result.Where(m => m.Age >= age).Where(m => m.Sex == 1).Select(p => p.PatientId).ToArray());
//Nữ < 1 tuổi
index7[2] = index7result.Where(m => m.Age < age).Where(m => m.Sex == 2).Count();
indexs7[2] = string.Join(",", index7result.Where(m => m.Age < age).Where(m => m.Sex == 2).Select(p => p.PatientId).ToArray());
//Nữ từ 15 tuổi
index7[3] = index7result.Where(m => m.Age >= age).Where(m => m.Sex == 2).Count();
indexs7[3] = string.Join(",", index7result.Where(m => m.Age >= age).Where(m => m.Sex == 2).Select(p => p.PatientId).ToArray());
//fill
_D28.Cells[25, 3].Value = index7[0]; _D28.Cells[25, 4].Value = index7[1]; _D28.Cells[25, 5].Value = index7[2]; _D28.Cells[25, 6].Value = index7[3];
_Tracking.Cells[25, 3].Value = indexs7[0]; _Tracking.Cells[25, 4].Value = indexs7[1]; _Tracking.Cells[25, 5].Value = indexs7[2]; _Tracking.Cells[25, 6].Value = indexs7[3];
#endregion
#region index8
// Đang nhận thuốc ARV tại các trạm y tế xã phường tính đến cuối kỳ báo cáo
int[] index8 = { 0, 0, 0, 0 };
string[] indexs8 = { "", "", "", "" };
var index8Treatment = Treatments.Where(q => q.TreatmentSdate <= EndDate).Where(q => q.TreatmentId == "01").GroupBy(q => q.PatientId).Select(g => g.OrderBy(q => q.TreatmentSdate).Last()).Where(q => q.TreatmentEdate != null || q.TreatmentEdate > EndDate).ToList();
var index8Outpatient = (from q in index8Treatment join p in exams on q.PatientId equals p.PatientId where p.OutPatientTreatment == 1 select q).ToList();
var index8result = (from q in index8Outpatient join g in Patients on q.PatientId equals g.PatientId select new { q.PatientId, g.Sex, Age = (EndDate.Year - g.BirthYear) }).ToList();
//Nam < 15 tuổi
index8[0] = index8result.Where(m => m.Age < age).Where(m => m.Sex == 1).Count();
indexs8[0] = string.Join(",", index8result.Where(m => m.Age < 1).Where(m => m.Sex == 1).Select(p => p.PatientId).ToArray());
// Nam từ 15 tuổi
index8[1] = index8result.Where(m => m.Age >= age).Where(m => m.Sex == 1).Count();
indexs8[1] = string.Join(",", index8result.Where(m => m.Age >= age).Where(m => m.Sex == 1).Select(p => p.PatientId).ToArray());
//Nữ < 15 tuổi
index8[2] = index8result.Where(m => m.Age < age).Where(m => m.Sex == 2).Count();
indexs8[2] = string.Join(",", index8result.Where(m => m.Age < age).Where(m => m.Sex == 2).Select(p => p.PatientId).ToArray());
//Nữ từ 15 tuổi
index8[3] = index8result.Where(m => m.Age >= age).Where(m => m.Sex == 2).Count();
indexs8[3] = string.Join(",", index8result.Where(m => m.Age >= age).Where(m => m.Sex == 2).Select(p => p.PatientId).ToArray());
//fill
_D28.Cells[26, 3].Value = index8[0]; _D28.Cells[26, 4].Value = index8[1]; _D28.Cells[26, 5].Value = index8[2]; _D28.Cells[26, 6].Value = index8[3];
_Tracking.Cells[26, 3].Value = indexs8[0]; _Tracking.Cells[26, 4].Value = indexs8[1]; _Tracking.Cells[26, 5].Value = indexs8[2]; _Tracking.Cells[26, 6].Value = indexs8[3];
#endregion
}
#endregion
#region R8
private void R8()
{
var ws = _R8;
var firstrowindex = 6;
var firstcolumnindex = 3;
const int age = 15;
var tmpPatients = new EntityCollection<TblPatientEntity>();
var Referrals = new EntityCollection<TblReferralsToEntity>();
var Treatments = new EntityCollection<TblTreatmentInfoEntity>();
var exams = new EntityCollection<TblExaminationInfoEntity>();
//var BeginDate = (DateTime)this.BeginDate.EditValue;
//var EndDate = (DateTime)this.EndDate.EditValue;
/*lùi ngày bắt đầu lại 12 tháng để vét được các bệnh nhân bắt đầu điều trị từ 12 tháng trước */
BeginDate = BeginDate.AddMonths(-12);
/*
ngày kết thúc là ngày bắt đầu ở trên + 12 tháng trong trường hợp khoảng báo cáo rộng hơn 1 năm - chỉ lấy khoảng báo cáo nhỏ hơn 1 năm
trong trường hợp khoảng báo cáo nhỏ hơn 1 năm thì ta lấy ngày kết thúc bằng này EndDate -12 tháng
*/
EndDate = common.MinDate(EndDate.AddMonths(-12), BeginDate.AddMonths(12));
adapter.FetchEntityCollection(tmpPatients, null);
adapter.FetchEntityCollection(Referrals, null);
adapter.FetchEntityCollection(Treatments, null);
adapter.FetchEntityCollection(exams, null);
/*
Lọc những bệnh nhân có ngày bắt đầu điều trị ARV trong khoảng lùi lại nói trên để dùng làm qui chiếu cho việc tính toán các chỉ số dưới đây
*/
var Patients = (from q in tmpPatients where (q.DateofArv != null && q.DateofArv >= BeginDate && q.DateofArv <= EndDate) select q).ToList<TblPatientEntity>();
#region index1
/* Tính chỉ số thứ nhất - Bắt đầu được điều trị ARV tại cơ sở theo nhóm - lọc đơn thuần từ dataset Patients và loại đi những người đã điều trị Arv ở nơi khác */
int[] index1 = { 0, 0, 0, 0 };
string[] indexs1 = { "", "", "", "" };
var index1result = Patients.Where(p => p.HaveArvBefore != 1).Select(p => new { PatientId = p.PatientId, Sex = p.Sex, Age = (EndDate.Year - p.BirthYear) }).ToList();
//Nam < 15 tuổi
index1[0] = index1result.Where(m => m.Age < age).Where(m => m.Sex == 1).Count();
indexs1[0] = string.Join(",", index1result.Where(m => m.Age < 1).Where(m => m.Sex == 1).Select(p => p.PatientId).ToArray());
// Nam từ 15 tuổi
index1[1] = index1result.Where(m => m.Age >= age).Where(m => m.Sex == 1).Count();
indexs1[1] = string.Join(",", index1result.Where(m => m.Age >= age).Where(m => m.Sex == 1).Select(p => p.PatientId).ToArray());
//Nữ < 15 tuổi
index1[2] = index1result.Where(m => m.Age < age).Where(m => m.Sex == 2).Count();
indexs1[2] = string.Join(",", index1result.Where(m => m.Age < age).Where(m => m.Sex == 2).Select(p => p.PatientId).ToArray());
//Nữ từ 15 tuổi
index1[3] = index1result.Where(m => m.Age >= age).Where(m => m.Sex == 2).Count();
indexs1[3] = string.Join(",", index1result.Where(m => m.Age >= age).Where(m => m.Sex == 2).Select(p => p.PatientId).ToArray());
//fill
_D28.Cells[34, 3].Value = index1[0]; _D28.Cells[34, 4].Value = index1[1]; _D28.Cells[34, 5].Value = index1[2]; _D28.Cells[34, 6].Value = index1[3];
_Tracking.Cells[34, 3].Value = indexs1[0]; _Tracking.Cells[34, 4].Value = indexs1[1]; _Tracking.Cells[34, 5].Value = indexs1[2]; _Tracking.Cells[34, 6].Value = indexs1[3];
#endregion
#region index2
/* Tính chỉ số thứ 2 - Chuyển tới trong kỳ báo cáo
Lọc những người trong dataset bên và chỉ lấy những người có DateofReferral khác null và thỏa mãn điều kiện DateofReferral nhỏ hơn ngày Arv + 12 tháng
*/
int[] index2 = { 0, 0, 0, 0 };
string[] indexs2 = { "", "", "", "" };
var index2result = Patients.Where(q => q.Dateofreferral != null && q.HaveArvBefore == 1 && q.Dateofreferral >= q.DateofArv && q.Dateofreferral.Value < q.DateofArv.Value.AddMonths(12))
.Select(q => new { PatientId = q.PatientId, Sex = q.Sex, Age = (EndDate.Year - q.BirthYear) }).ToList();
//Nam < 15 tuổi
index2[0] = index2result.Where(m => m.Age < age).Where(m => m.Sex == 1).Count();
indexs2[0] = string.Join(",", index2result.Where(m => m.Age < age).Where(m => m.Sex == 1).Select(p => p.PatientId).ToArray());
// Nam từ 15 tuổi
index2[1] = index2result.Where(m => m.Age >= age).Where(m => m.Sex == 1).Count();
indexs2[1] = string.Join(",", index2result.Where(m => m.Age >= 15).Where(m => m.Sex == 1).Select(p => p.PatientId).ToArray());
//Nữ < 15 tuổi
index2[2] = index2result.Where(m => m.Age < age).Where(m => m.Sex == 2).Count();
indexs2[2] = string.Join(",", index2result.Where(m => m.Age < 1).Where(m => m.Sex == 2).Select(p => p.PatientId).ToArray());
//Nữ từ 15 tuổi
index2[3] = index2result.Where(m => m.Age >= age).Where(m => m.Sex == 2).Count();
indexs2[3] = string.Join(",", index2result.Where(m => m.Age >= age).Where(m => m.Sex == 2).Select(p => p.PatientId).ToArray());
//fill
_D28.Cells[35, 3].Value = index2[0]; _D28.Cells[35, 4].Value = index2[1]; _D28.Cells[35, 5].Value = index2[2]; _D28.Cells[35, 6].Value = index2[3];
_Tracking.Cells[35, 3].Value = indexs2[0]; _Tracking.Cells[35, 4].Value = indexs2[1]; _Tracking.Cells[35, 5].Value = indexs2[2]; _Tracking.Cells[35, 6].Value = indexs2[3];
#endregion
#region index3
/*Tính chỉ số thứ 3 - Chuyển đi trong kỳ báo cáo
Tìm trong danh sách những người chuyển đi có ngày chuyển đi nằm trong khoảng ngày bắt đầu điều trị Arv + 12 tháng.
Thiết lập Join Query từ Dataset Patients để lấy thông tin cần thiết
*/
int[] index3 = { 0, 0, 0, 0 };
string[] indexs3 = { "", "", "", "" };
var index3result = (from q in Referrals
join g in Patients on q.PatientId equals g.PatientId
where (q.EndDate.Value >= g.DateofArv.Value && q.EndDate.Value < g.DateofArv.Value.AddMonths(12) && q.TypeId == "09")
select new { q.PatientId, g.Sex, Age = (g.DateofArv.Value.Year - g.BirthYear) }).ToList();
index3[0] = index3result.Where(m => m.Age < age).Where(m => m.Sex == 1).Count();
indexs3[0] = string.Join(",", index3result.Where(m => m.Age < age).Where(m => m.Sex == 1).Select(p => p.PatientId).ToArray());
// Nam từ 15 tuổi
index3[2] = index3result.Where(m => m.Age >= age).Where(m => m.Sex == 1).Count();
indexs3[2] = string.Join(",", index3result.Where(m => m.Age >= age).Where(m => m.Sex == 1).Select(p => p.PatientId).ToArray());
//Nữ < 1 tuổi
index3[3] = index3result.Where(m => m.Age < age).Where(m => m.Sex == 2).Count();
indexs3[3] = string.Join(",", index3result.Where(m => m.Age < age).Where(m => m.Sex == 2).Select(p => p.PatientId).ToArray());
//Nữ từ 15 tuổi
index3[3] = index3result.Where(m => m.Age >= age).Where(m => m.Sex == 2).Count();
indexs3[3] = string.Join(",", index3result.Where(m => m.Age >= age).Where(m => m.Sex == 2).Select(p => p.PatientId).ToArray());
//fill
_D28.Cells[36, 3].Value = index3[0]; _D28.Cells[36, 4].Value = index3[1]; _D28.Cells[36, 5].Value = index3[2]; _D28.Cells[36, 6].Value = index3[3];
_Tracking.Cells[36, 3].Value = indexs3[0]; _Tracking.Cells[36, 4].Value = indexs3[1]; _Tracking.Cells[36, 5].Value = indexs3[2]; _Tracking.Cells[36, 5].Value = indexs3[3];
#endregion
#region index5
/*Tính chỉ số thứ 5 -Số bệnh nhân đang điều trị ARV tại thời điểm tháng thứ 12
join bảng Exams với Dataset Patients và lọc tất cả bản ghi khám cuối cùng với từng người trong khoảng 12 tháng thỏa mãn
điều kiện ngày khám cuối <= ngày Arv+ 12 tháng và ngày kết thúc = null hoặc > Arv+12 tháng
*
*/
int[] index5 = { 0, 0, 0, 0, };
string[] indexs5 = { "", "", "", "", };
var index5preresult = (from q in exams
join g in Patients on q.PatientId equals g.PatientId
where (q.ExamDate != null && q.ExamDate.Value <= g.DateofArv.Value.AddMonths(12))
group new { q, g } by g.PatientId into s
select new { PatientId = s.Key, Sex = s.First().g.Sex, Age = s.First().g.DateofArv.Value.Year - s.First().g.BirthYear, ExamDate = s.Last().q.ExamDate, EndExam = s.OrderBy(m => m.q.ExamDate).Last().q.EndExamDate, EndDate = s.First().g.DateofArv.Value.AddMonths(12) }).ToList();
var index5result = (from q in index5preresult where q.EndExam == null || q.EndExam > q.EndDate select new { q.PatientId, q.Sex, q.Age }).ToList();
//Nam < 15 tuổi
index5[0] = index5result.Where(m => m.Age < age).Where(m => m.Sex == 1).Count();
indexs5[0] = string.Join(",", index5result.Where(m => m.Age < age).Where(m => m.Sex == 1).Select(p => p.PatientId).ToArray());
// Nam từ 15 tuổi
index5[1] = index5result.Where(m => m.Age >= age).Where(m => m.Sex == 1).Count();
indexs5[1] = string.Join(",", index5result.Where(m => m.Age >= age).Where(m => m.Sex == 1).Select(p => p.PatientId).ToArray());
//Nữ < 1 tuổi
index5[2] = index5result.Where(m => m.Age < age).Where(m => m.Sex == 2).Count();
indexs5[2] = string.Join(",", index5result.Where(m => m.Age < age).Where(m => m.Sex == 2).Select(p => p.PatientId).ToArray());
//Nữ từ 15 tuổi
index5[3] = index5result.Where(m => m.Age >= age).Where(m => m.Sex == 2).Count();
indexs5[3] = string.Join(",", index5result.Where(m => m.Age >= age).Where(m => m.Sex == 2).Select(p => p.PatientId).ToArray());
//fill
_D28.Cells[38, 3].Value = index5[0]; _D28.Cells[38, 4].Value = index5[1]; _D28.Cells[38, 5].Value = index5[2]; _D28.Cells[38, 6].Value = index5[3];
_Tracking.Cells[38, 3].Value = indexs5[0]; _Tracking.Cells[38, 4].Value = indexs5[1]; _Tracking.Cells[38, 5].Value = indexs5[2]; _Tracking.Cells[38, 6].Value = indexs5[3];
#endregion
#region index6
/* Tính chỉ số thứ 6 - Ngừng điều trị hoặc không khám
Lọc tất cả bản ghi cuối của điều trị ARV. Nến bản ghi này có ngày kết thúc điều trị và ngày kết thúc này phải nhỏ hơn
ngày Arv + 12
*/
int[] index6 = { 0, 0, 0, 0, };
string[] indexs6 = { "", "", "", "", };
var index6preresult = (from q in Treatments
join g in Patients on q.PatientId equals g.PatientId
where (q.TreatmentSdate != null && q.TreatmentSdate.Value <= g.DateofArv.Value.AddMonths(12) && q.TreatmentId == "01")
group new { q, g } by g.PatientId into s
select new { PatientId = s.Key, Sex = s.First().g.Sex, Age = s.First().g.DateofArv.Value.Year - s.First().g.BirthYear, ExamDate = s.First().q.TreatmentSdate, EndExam = s.OrderBy(m => m.q.TreatmentSdate).Last().q.TreatmentEdate, EndDate = s.First().g.DateofArv.Value.AddMonths(12) }).ToList();
var index6result = (from q in index6preresult where q.EndExam != null && q.EndExam <= q.EndDate select new { q.PatientId, q.Sex, q.Age }).ToList();
//Nam < 15 tuổi
index6[0] = index6result.Where(m => m.Age < age).Where(m => m.Sex == 1).Count();
indexs6[0] = string.Join(",", index6result.Where(m => m.Age < age).Where(m => m.Sex == 1).Select(p => p.PatientId).ToArray());
// Nam từ 15 tuổi
index6[1] = index6result.Where(m => m.Age >= age).Where(m => m.Sex == 1).Count();
indexs6[1] = string.Join(",", index6result.Where(m => m.Age >= age).Where(m => m.Sex == 1).Select(p => p.PatientId).ToArray());
//Nữ < 15 tuổi
index6[2] = index6result.Where(m => m.Age < age).Where(m => m.Sex == 2).Count();
indexs6[2] = string.Join(",", index6result.Where(m => m.Age < age).Where(m => m.Sex == 2).Select(p => p.PatientId).ToArray());
//Nữ từ 15 tuổi
index6[3] = index6result.Where(m => m.Age >= age).Where(m => m.Sex == 2).Count();
indexs6[3] = string.Join(",", index6result.Where(m => m.Age >= age).Where(m => m.Sex == 2).Select(p => p.PatientId).ToArray());
//fill
_D28.Cells[39, 3].Value = index6[0]; _D28.Cells[39, 4].Value = index6[1]; _D28.Cells[39, 5].Value = index6[2]; _D28.Cells[39, 6].Value = index6[3];
_Tracking.Cells[39, 3].Value = indexs6[0]; _Tracking.Cells[39, 4].Value = indexs6[1]; _Tracking.Cells[39, 5].Value = indexs6[2]; _Tracking.Cells[39, 6].Value = indexs6[3];
#endregion
#region index7
/* Tính chỉ số thứ 7 - Tử vong trong kỳ báo cáo
Lọc trong Dataset Patients và lấy những bệnh nhân có ngày từ vong trong khoảng ngày Arv -> ngày Arv+ 12 tháng
*/
int[] index7 = { 0, 0, 0, 0, };
string[] indexs7 = { "", "", "", "", };
var index7result = (from q in Patients
where (q.DeathDate != null && q.DeathDate >= BeginDate && q.DeathDate <= q.DateofArv.Value.AddMonths(12))
select new { q.PatientId, q.Sex, Age = (EndDate.Year - q.BirthYear) }).ToList();
//Nam < 15 tuổi
index7[0] = index7result.Where(m => m.Age < age).Where(m => m.Sex == 1).Count();
indexs7[0] = string.Join(",", index7result.Where(m => m.Age < 1).Where(m => m.Sex == 1).Select(p => p.PatientId).ToArray());
// Nam từ 15 tuổi
index7[1] = index7result.Where(m => m.Age >= age).Where(m => m.Sex == 1).Count();
indexs7[1] = string.Join(",", index7result.Where(m => m.Age >= age).Where(m => m.Sex == 1).Select(p => p.PatientId).ToArray());
//Nữ < 1 tuổi
index7[2] = index7result.Where(m => m.Age < age).Where(m => m.Sex == 2).Count();
indexs7[2] = string.Join(",", index7result.Where(m => m.Age < age).Where(m => m.Sex == 2).Select(p => p.PatientId).ToArray());
//Nữ từ 15 tuổi
index7[3] = index7result.Where(m => m.Age >= age).Where(m => m.Sex == 2).Count();
indexs7[3] = string.Join(",", index7result.Where(m => m.Age >= 15).Where(m => m.Sex == 2).Select(p => p.PatientId).ToArray());
//fill
_D28.Cells[40, 3].Value = index7[0]; _D28.Cells[40, 4].Value = index7[1]; _D28.Cells[40, 5].Value = index7[2]; _D28.Cells[40, 6].Value = index7[3];
_Tracking.Cells[40, 3].Value = indexs7[0]; _Tracking.Cells[40, 4].Value = indexs7[1]; _Tracking.Cells[40, 5].Value = indexs7[2]; _Tracking.Cells[40, 6].Value = indexs7[3];
#endregion
#region index8
// Chỉ số thứ 8 - Số bệnh nhân bỏ trị
int[] index8 = { 0, 0, 0, 0, };
string[] indexs8 = { "", "", "", "", };
var index8preresult = (from q in Treatments
join g in Patients on q.PatientId equals g.PatientId
where (q.TreatmentEdate != null && q.TreatmentId == "01" && q.ReasonId == "10" && q.TreatmentEdate >= g.DateofArv && q.TreatmentEdate <= g.DateofArv.Value.AddMonths(12))
group q by q.PatientId into g
select new { PatientId = g.Key }).ToList();
var index8result = (from q in index8preresult
join g in Patients on q.PatientId equals g.PatientId
select new { q.PatientId, g.Sex, Age = (EndDate.Year - g.BirthYear) }).ToList();
//Nam < 15 tuổi
index8[0] = index8result.Where(m => m.Age < age).Where(m => m.Sex == 1).Count();
indexs8[0] = string.Join(",", index7result.Where(m => m.Age < 1).Where(m => m.Sex == 1).Select(p => p.PatientId).ToArray());
// Nam từ 15 tuổi
index8[1] = index8result.Where(m => m.Age >= age).Where(m => m.Sex == 1).Count();
indexs8[1] = string.Join(",", index7result.Where(m => m.Age >= age).Where(m => m.Sex == 1).Select(p => p.PatientId).ToArray());
//Nữ < 15 tuổi
index8[2] = index8result.Where(m => m.Age < age).Where(m => m.Sex == 2).Count();
indexs8[2] = string.Join(",", index7result.Where(m => m.Age < age).Where(m => m.Sex == 2).Select(p => p.PatientId).ToArray());
//Nữ từ 15 tuổi
index8[3] = index8result.Where(m => m.Age >= age).Where(m => m.Sex == 2).Count();
indexs8[3] = string.Join(",", index8result.Where(m => m.Age >= age).Where(m => m.Sex == 2).Select(p => p.PatientId).ToArray());
//fill
_D28.Cells[41, 3].Value = index8[0]; _D28.Cells[41, 4].Value = index8[1]; _D28.Cells[41, 5].Value = index8[2]; _D28.Cells[41, 6].Value = index8[3];
_Tracking.Cells[41, 3].Value = indexs8[0]; _Tracking.Cells[41, 4].Value = indexs8[1]; _Tracking.Cells[41, 5].Value = indexs8[2]; _Tracking.Cells[41, 6].Value = indexs8[3];
#endregion
}
#endregion
#region R9
private void R9()
{
var ws = _R9;
var firstrowindex = 6;
var firstcolumnindex = 3;
const int age = 15;
var Patients = new EntityCollection<TblPatientEntity>();
var Treatments = new EntityCollection<TblTreatmentInfoEntity>();
//var BeginDate = (DateTime)this.BeginDate.EditValue;
//var EndDate = (DateTime)this.EndDate.EditValue;
adapter.FetchEntityCollection(Patients, null);
adapter.FetchEntityCollection(Treatments, null);
#region index1
//Chỉ số 1 - Số bệnh nhân bắt đầu điều trị dự phòng mắc Lao bằng INH (IPT) trong kì báo cáo
int[] index1 = { 0, 0, 0, 0 };
string[] indexs1 = { "", "", "", "" };
var index1prevresult = (from tr in Treatments where tr.TreatmentId == "03" group tr by tr.PatientId into g select g.OrderBy(p => p.TreatmentEdate).First()).Where(p => p.TreatmentEdate >= BeginDate && p.TreatmentEdate <= EndDate).ToList();
var index1result = index1prevresult.Join(Patients,
t => t.PatientId,
p => p.PatientId,
(t, p)
=> new { PatientId = p.PatientId, Sex = p.Sex, Age = EndDate.Year - p.BirthYear }).ToList();
//Nam < 15 tuổi
index1[0] = index1result.Where(m => m.Age < age).Where(m => m.Sex == 1).Count();
indexs1[0] = string.Join(",", index1result.Where(m => m.Age < age).Where(m => m.Sex == 1).Select(p => p.PatientId).ToArray());
// Nam từ 15 tuổi
index1[1] = index1result.Where(m => m.Age >= age).Where(m => m.Sex == 1).Count();
indexs1[1] = string.Join(",", index1result.Where(m => m.Age >= age).Where(m => m.Sex == 1).Select(p => p.PatientId).ToArray());
//Nữ < 15 tuổi
index1[2] = index1result.Where(m => m.Age < age).Where(m => m.Sex == 2).Count();
indexs1[2] = string.Join(",", index1result.Where(m => m.Age < age).Where(m => m.Sex == 2).Select(p => p.PatientId).ToArray());
//Nữ từ 15 tuổi
index1[3] = index1result.Where(m => m.Age >= age).Where(m => m.Sex == 2).Count();
indexs1[3] = string.Join(",", index1result.Where(m => m.Age >= age).Where(m => m.Sex == 2).Select(p => p.PatientId).ToArray());
//fill
_D28.Cells[49, 3].Value = index1[0]; _D28.Cells[49, 4].Value = index1[1]; _D28.Cells[49, 5].Value = index1[2]; _D28.Cells[49, 6].Value = index1[3];
_Tracking.Cells[49, 3].Value = indexs1[0]; _Tracking.Cells[49, 4].Value = indexs1[1]; _Tracking.Cells[49, 5].Value = indexs1[2]; _Tracking.Cells[49, 6].Value = indexs1[3];
#endregion
#region index2
//Chỉ số 2 - Số bệnh nhân bắt đầu điều trị Lao trong kỳ báo cáo
int[] index2 = { 0, 0, 0, 0 };
string[] indexs2 = { "", "", "", "" };
var index2prevresult = (from tr in Treatments where tr.TreatmentId == "02" group tr by tr.PatientId into g select g.OrderBy(p => p.TreatmentEdate).First()).Where(p => p.TreatmentEdate >= BeginDate && p.TreatmentEdate <= EndDate).ToList();
var index2result = index2prevresult.Join(Patients,
t => t.PatientId,
p => p.PatientId,
(t, p)
=> new { PatientId = p.PatientId, Sex = p.Sex, Age = EndDate.Year - p.BirthYear, DateOfArv = p.DateofArv, sDate = t.TreatmentSdate }).Where(p => p.DateOfArv != null && p.DateOfArv <= p.sDate).ToList();
//Nam < 15 tuổi
index2[0] = index2result.Where(m => m.Age < age).Where(m => m.Sex == 1).Count();
indexs2[0] = string.Join(",", index2result.Where(m => m.Age < age).Where(m => m.Sex == 1).Select(p => p.PatientId).ToArray());
// Nam từ 15 tuổi
index2[1] = index2result.Where(m => m.Age >= age).Where(m => m.Sex == 1).Count();
indexs2[1] = string.Join(",", index2result.Where(m => m.Age >= 15).Where(m => m.Sex == 1).Select(p => p.PatientId).ToArray());
//Nữ < 15 tuổi
index2[2] = index2result.Where(m => m.Age < age).Where(m => m.Sex == 2).Count();
indexs2[2] = string.Join(",", index2result.Where(m => m.Age < 1).Where(m => m.Sex == 2).Select(p => p.PatientId).ToArray());
//Nữ từ 15 tuổi
index2[3] = index2result.Where(m => m.Age >= age).Where(m => m.Sex == 2).Count();
indexs2[3] = string.Join(",", index2result.Where(m => m.Age >= age).Where(m => m.Sex == 2).Select(p => p.PatientId).ToArray());
//fill
_D28.Cells[50, 3].Value = index2[0]; _D28.Cells[50, 4].Value = index2[1]; _D28.Cells[50, 5].Value = index2[2]; _D28.Cells[50, 6].Value = index2[3];
_Tracking.Cells[50, 3].Value = indexs2[0]; _Tracking.Cells[50, 4].Value = indexs2[1]; _Tracking.Cells[50, 5].Value = indexs2[2]; _Tracking.Cells[50, 6].Value = indexs2[3];
#endregion
}
#endregion
}
}