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() { _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(); _D28.Cells[6, 1].Value = "Từ ngày " + BeginDate.ToShortDateString() + " Đến ngày " + EndDate.ToShortDateString(); _D28.Cells[15, 1].Value = "Từ ngày " + BeginDate.ToShortDateString() + " Đến ngày " + EndDate.ToShortDateString(); _D28.Cells[30, 1].Value = "Từ ngày " + BeginDate.ToShortDateString() + " Đến ngày " + EndDate.ToShortDateString(); _D28.Cells[45, 1].Value = "Từ ngày " + BeginDate.ToShortDateString() + " Đến ngày " + EndDate.ToShortDateString(); } #region R6 private void R6() { const int age = 15; var ws = _R6; LinqMetaData meta = new LinqMetaData(adapter); EntityCollection exams = new EntityCollection(); EntityCollection Patients = new EntityCollection(); adapter.FetchEntityCollection(exams, null); adapter.FetchEntityCollection(Patients, null); #region index1 // Mới đăng ký trong kỳ báo cáo int[] index1 = { 0, 0, 0, 0, }; string[] indexs1 = { "", "", "", "" }; var index1result = Patients.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 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 = Patients.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; const int age = 15; var Patients = new EntityCollection(); var Referrals = new EntityCollection(); var Treatments = new EntityCollection(); var exams = new EntityCollection(); 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 = Patients.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 = exams.Where(m => m.ExamDate >= BeginDate && m.ExamDate <= EndDate && m.ReTreatment == 1).ToList(); var index2result = index2preresult.Join(Patients, 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 = Patients.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 = Treatments.Where(p => p.TreatmentEdate >= BeginDate && p.TreatmentEdate <= EndDate && p.TreatmentId=="01" && p.ReasonId =="09").ToList(); var index4result = referrals.Join(Patients, 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.TreatmentEdate }).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 = Treatments.Where(p => p.TreatmentEdate >= BeginDate && p.TreatmentEdate <= EndDate && p.TreatmentId == "01" && p.ReasonId == "11").ToList(); var index5result = deaths.Join(Patients, 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.TreatmentEdate }).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 = Treatments.Where(p => p.TreatmentEdate >= BeginDate && p.TreatmentEdate <= EndDate && p.TreatmentId == "01" && p.ReasonId == "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.TreatmentEdate }).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.TreatmentId == "01").ToList(); var index8Outpatient = exams.Where(p => p.ExamDate <= EndDate).GroupBy(p => p.PatientId).Select(g => g.OrderBy(p => p.ExamDate).Last()).Where(p => p.OutPatientTreatment == 1).ToList(); var index8result = index8Outpatient.Join(index8Treatment, p=>p.PatientId, q=>q.PatientId, (p,q)=>new{p.PatientId,p.ExamDate, q.TreatmentSdate}).Where(p=>p.ExamDate > p.TreatmentSdate).Join(Patients, p=>p.PatientId , q=>q.PatientId, (p,q)=>new{ q.PatientId,q.Sex, Age = (EndDate.Year - q.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; const int age = 15; var tmpPatients = new EntityCollection(); var Referrals = new EntityCollection(); var Treatments = new EntityCollection(); var exams = new EntityCollection(); //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 */ /* 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 */ EntityCollection Patients = new EntityCollection(); EntityCollection TreatmentInfo = new EntityCollection(); adapter.FetchEntityCollection(Patients, null); adapter.FetchEntityCollection(TreatmentInfo, null); var Arvs = TreatmentInfo.Where(p => p.TreatmentSdate < EndDate && p.TreatmentSdate >= BeginDate.AddMonths(-12) && p.TreatmentId == "01").ToList(); var SelectedPatients = Arvs.Join(Patients.Where(p => p.DateofArv != null && p.DateofArv >= BeginDate.AddMonths(-12) && p.DateofArv <= EndDate.AddMonths(-12)), a => a.PatientId, p => p.PatientId, (a, p) => new { p.PatientId, p.Dateofreferral, p.HaveArvBefore, p.Sex, EndPointArv = p.DateofArv.Value.AddMonths(12), Age = p.DateofArv.Value.AddMonths(12).Year - p.BirthYear, a.TreatmentSdate, a.TreatmentEdate, a.ReasonId }).Where(p => p.TreatmentSdate <= p.EndPointArv).ToList(); #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 = SelectedPatients.Where(p => p.HaveArvBefore != 1).Select(p => new { PatientId = p.PatientId, Sex = p.Sex, p.Age }).GroupBy(p=>p.PatientId).Select(g=>g.First()).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 = SelectedPatients.Where(q => q.Dateofreferral != null && q.HaveArvBefore == 1) .Select(q => new { PatientId = q.PatientId, Sex = q.Sex, q.Age }).GroupBy(p => p.PatientId).Select(g => g.First()).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 index3preresult = SelectedPatients.GroupBy(p => p.PatientId).Select(g => g.OrderBy(p => p.TreatmentSdate).Last()).Select(p => new { p.PatientId, p.Sex, p.Age, moveout = p.TreatmentEdate != null && p.TreatmentEdate < p.EndPointArv && p.ReasonId == "10" ? true : false, lost = p.TreatmentEdate != null && p.TreatmentEdate < p.EndPointArv && p.ReasonId == "09" ? true : false, dead = p.TreatmentEdate != null && p.TreatmentEdate < p.EndPointArv && p.ReasonId == "1" ? true : false }).Where(p => !p.moveout && !p.dead && !p.lost).ToList(); var index3result = index3preresult.Where(q => q.moveout).Select(q => new { PatientId = q.PatientId, Sex = q.Sex, q.Age }).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 = SelectedPatients.GroupBy(p => p.PatientId).Select(g => g.OrderBy(p => p.TreatmentSdate).Last()).Select(p => new { p.PatientId, p.Sex, p.Age, moveout = p.TreatmentEdate != null && p.TreatmentEdate < p.EndPointArv && p.ReasonId == "10" ? true : false, lost = p.TreatmentEdate != null && p.TreatmentEdate < p.EndPointArv && p.ReasonId == "09" ? true : false, dead = p.TreatmentEdate != null && p.TreatmentEdate < p.EndPointArv && p.ReasonId == "1" ? true : false }).Where(p => !p.moveout && !p.dead && !p.lost).ToList(); var index5result = index5preresult.Where(q => !q.moveout && !q.dead && !q.lost ).Select(q => new { PatientId = q.PatientId, Sex = 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 = SelectedPatients.GroupBy(p => p.PatientId).Select(g => g.OrderBy(p => p.TreatmentSdate).Last()).Select(p => new { p.PatientId, p.Sex, p.Age, p.TreatmentEdate}).ToList(); var index6result = index6preresult.Where(q=>q.TreatmentEdate!=null).Select(q => new { PatientId = q.PatientId, Sex = 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 index7preresult = SelectedPatients.GroupBy(p => p.PatientId).Select(g => g.OrderBy(p => p.TreatmentSdate).Last()).Select(p => new { p.PatientId, p.Sex, p.Age, moveout = p.TreatmentEdate != null && p.TreatmentEdate < p.EndPointArv && p.ReasonId == "10" ? true : false, lost = p.TreatmentEdate != null && p.TreatmentEdate < p.EndPointArv && p.ReasonId == "09" ? true : false, dead = p.TreatmentEdate != null && p.TreatmentEdate < p.EndPointArv && p.ReasonId == "1" ? true : false }).Where(p => !p.moveout && !p.dead && !p.lost).ToList(); var index7result = index7preresult.Where(q => q.dead).Select(q => new { PatientId = q.PatientId, Sex = q.Sex, q.Age }).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 = SelectedPatients.GroupBy(p => p.PatientId).Select(g => g.OrderBy(p => p.TreatmentSdate).Last()).Select(p => new { p.PatientId, p.Sex, p.Age, moveout = p.TreatmentEdate != null && p.TreatmentEdate < p.EndPointArv && p.ReasonId == "10" ? true : false, lost = p.TreatmentEdate != null && p.TreatmentEdate < p.EndPointArv && p.ReasonId == "09" ? true : false, dead = p.TreatmentEdate != null && p.TreatmentEdate < p.EndPointArv && p.ReasonId == "1" ? true : false }).Where(p => !p.moveout && !p.dead && !p.lost).ToList(); var index8result = index8preresult.Where(q => q.lost).Select(q => new { PatientId = q.PatientId, Sex = q.Sex, q.Age }).ToList(); //Nam < 15 tuổi index8[0] = index8result.Where(m => m.Age < age).Where(m => m.Sex == 1).Count(); indexs8[0] = string.Join(",", index8preresult.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(",", index8preresult.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(",", index8preresult.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; const int age = 15; var Patients = new EntityCollection(); var Treatments = new EntityCollection(); //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 } }