Files
csharpcode/patientman/PatientMan/Classes/clsProgress.cs
2025-08-02 05:20:17 +07:00

744 lines
57 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 clsProgress
{
public DevExpress.XtraSpreadsheet.SpreadsheetControl spreed;
public DateTime BeginDate;
public DateTime EndDate;
private DevExpress.Spreadsheet.Worksheet _Progress, _Tracking;
public DataAccessAdapter adapter = new DataAccessAdapter(SettingInfo.Constr);
public void Calculate()
{
_Progress = this.spreed.Document.Worksheets["Progress"];
_Tracking = this.spreed.Document.Worksheets["Tracking"];
V1A(); V1B(); V1C(); VIIPreArv(); VIIARV();
}
private void V1A()
{
LinqMetaData meta = new LinqMetaData(adapter);
DateTime BeginDate = this.BeginDate;
DateTime EndDate = this.EndDate;
#region index1
// Chỉ số 1 - 1A - Số lượt bệnh nhân đến PKNT trong kỳ báo cáo - Liên quan đến điều trị Lao (TreatmentId = "02"
int[] index1 = { 0, 0 };
string[] indexs1 = { "", "" };
index1[0] = meta.TblExaminationInfo.Where(m => m.ExamDate >= BeginDate).Where(m => m.ExamDate <= EndDate).Where(m => m.NoSelfExam != 1).Select(g => g.PatientId).ToList().Count();
indexs1[0] = string.Join(",", meta.TblTreatmentInfo.Where(m => m.TreatmentSdate <= EndDate).Where(m => m.TreatmentEdate == null || m.TreatmentEdate > EndDate).GroupBy(m => m.PatientId).Select(g => g.Key).ToArray());
index1[1] = meta.TblExaminationInfo.Where(m => m.ExamDate >= BeginDate).Where(m => m.ExamDate <= EndDate).Where(m => m.NoSelfExam == 1).Select(g => g.PatientId).ToList().Count();
//Fill
_Progress.Cells[11, 3].Value = index1[0]; _Progress.Cells[11, 7].Value = index1[1];
#endregion
#region index2
//chỉ số 2 - 1A - số bệnh nhân mới đăng ký trong kỳ báo cáo
int[] index2 = { 0, 0, 0, 0, 0, 0 };
string[] indexs2 = { "", "", "", "", "", "" };
var index2result = meta.TblPatient.Where(m => m.DateofRegistration >= BeginDate).Where(m => m.DateofRegistration <= EndDate).Select(m => new { PatientId = m.PatientId, Sex = m.Sex, Age = EndDate.Year - m.BirthYear }).ToList();
// Nam < 1 tuổi
index2[0] = index2result.Where(m => m.Age < 1).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ừ 1-14
index2[1] = index2result.Where(m => m.Age >= 1 && m.Age < 15).Where(m => m.Sex == 1).Count();
indexs2[1] = string.Join(",", index2result.Where(m => m.Age >= 1 && m.Age < 15).Where(m => m.Sex == 1).Select(p => p.PatientId).ToArray());
// Nam từ 15
index2[2] = index2result.Where(m => m.Age >= 15).Where(m => m.Sex == 1).Count();
indexs2[2] = string.Join(",", index2result.Where(m => m.Age >= 15).Where(m => m.Sex == 1).Select(p => p.PatientId).ToArray());
// Nữ < 1 tuổi
index2[3] = index2result.Where(m => m.Age < 1).Where(m => m.Sex == 2).Count();
indexs2[3] = string.Join(",", index2result.Where(m => m.Age < 1).Where(m => m.Sex == 2).Select(p => p.PatientId).ToArray());
// Nữ từ 1-14
index2[4] = index2result.Where(m => m.Age >= 1 && m.Age < 15).Where(m => m.Sex == 2).Count();
indexs2[4] = string.Join(",", index2result.Where(m => m.Age >= 1 && m.Age < 15).Where(m => m.Sex == 2).Select(p => p.PatientId).ToArray());
//Nữ từ 15
index2[5] = index2result.Where(m => m.Age >= 15).Where(m => m.Sex == 2).Count();
// Fill
_Progress.Cells[15, 3].Value = index2[0]; _Progress.Cells[15, 4].Value = index2[1]; _Progress.Cells[15, 5].Value = index2[2];
_Progress.Cells[15, 7].Value = index2[3]; _Progress.Cells[15, 8].Value = index2[4]; _Progress.Cells[15, 9].Value = index2[5];
_Tracking.Cells[15, 3].Value = index2[0]; _Tracking.Cells[15, 4].Value = index2[1]; _Tracking.Cells[15, 5].Value = index2[2];
_Tracking.Cells[15, 7].Value = index2[3]; _Tracking.Cells[15, 8].Value = index2[4]; _Tracking.Cells[15, 9].Value = index2[5];
#endregion
#region index 3
//chỉ số 3 - 1A - số bệnh đang quản lý trong kỳ báo cáo
int[] index3 = { 0, 0, 0, 0, 0, 0 };
string[] indexs3 = { "", "", "", "", "", "" };
var index3preresult = meta.TblExaminationInfo.Where(m => m.ExamDate <= EndDate).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, EndExamDate = e.EndExamDate }).ToList();
var index3result = index3preresult.GroupBy(m => m.PatientId).Select(g => g.OrderBy(m => m.ExamDate).Last()).Where(m => m.EndExamDate == null || m.EndExamDate > EndDate).ToList();
//Nam < 1 tuổi
index3[0] = index3result.Where(m => m.Age < 1).Where(m => m.Sex == 1).Count();
indexs3[0] = string.Join(",", index3result.Where(m => m.Age < 1).Where(m => m.Sex == 1).Select(p => p.PatientId).ToArray());
// Nam từ 1-14`
index3[1] = index3result.Where(m => m.Age >= 1 && m.Age < 15).Where(m => m.Sex == 1).Count();
indexs3[1] = string.Join(",", index3result.Where(m => m.Age >= 1 && m.Age < 15).Where(m => m.Sex == 1).Select(p => p.PatientId).ToArray());
// Nam từ 15 tuổi
index3[2] = index3result.Where(m => m.Age >= 15).Where(m => m.Sex == 1).Count();
indexs3[2] = string.Join(",", index3result.Where(m => m.Age >= 15).Where(m => m.Sex == 1).Select(p => p.PatientId).ToArray());
//Nữ < 1 tuổi
index3[3] = index3result.Where(m => m.Age < 1).Where(m => m.Sex == 2).Count();
indexs3[3] = string.Join(",", index3result.Where(m => m.Age < 1).Where(m => m.Sex == 2).Select(p => p.PatientId).ToArray());
//Nữ từ 1-14
index3[4] = index3result.Where(m => m.Age >= 1 && m.Age < 15).Where(m => m.Sex == 2).Count();
indexs3[4] = string.Join(",", index3result.Where(m => m.Age >= 1 && m.Age < 15).Where(m => m.Sex == 2).Select(p => p.PatientId).ToArray());
//Nữ từ 15 tuổi
index3[5] = index3result.Where(m => m.Age >= 15).Where(m => m.Sex == 2).Count();
indexs3[5] = string.Join(",", index3result.Where(m => m.Age >= 15).Where(m => m.Sex == 2).Select(p => p.PatientId).ToArray());
//Fill
_Progress.Cells[16, 3].Value = index3[0]; _Progress.Cells[16, 4].Value = index3[1]; _Progress.Cells[16, 5].Value = index3[2];
_Progress.Cells[16, 7].Value = index3[3]; _Progress.Cells[16, 8].Value = index3[4]; _Progress.Cells[16, 9].Value = index3[5];
_Tracking.Cells[16, 3].Value = index3[0]; _Tracking.Cells[16, 4].Value = index3[1]; _Tracking.Cells[16, 5].Value = index3[2];
_Tracking.Cells[16, 7].Value = index3[3]; _Tracking.Cells[16, 8].Value = index3[4]; _Tracking.Cells[16, 9].Value = index3[5];
#endregion
}
private void V1B()
{
int age = 15;
LinqMetaData meta = new LinqMetaData(adapter);
DateTime thisBeginDate = this.BeginDate;
DateTime thisEndDate = this.EndDate;
DateTime EndDate = this.EndDate;
#region index1
// Chỉ số 1 - 1B - Số lượt bệnh nhân đến PKNT trong kỳ báo cáo - Liên quan đến điều trị Comtrimoxazole (TreatmentId = "04"
int[] index1 = { 0, 0, 0, 0 };
string[] indexs1 = { "", "", "", "" };
List<string> endTreatment = meta.TblReferralsTo.Where(m => m.EndDate <= thisBeginDate).GroupBy(m => m.PatientId).Select(g => g.Key).ToList();
List<string> Comtri = meta.TblTreatmentInfo.Where(c => !endTreatment.Contains(c.PatientId)).Where(m => m.TreatmentId == "04").Where(m => m.TreatmentSdate <= thisEndDate).Where(m => m.TreatmentEdate == null || m.TreatmentEdate > thisEndDate).GroupBy(m => m.PatientId).Select(g => g.Key).ToList();
var Result = meta.TblPatient.Where(c => Comtri.Contains(c.PatientId)).Select(m => new { PatientId = m.PatientId, Sex = m.Sex, Age = thisEndDate.Year - m.BirthYear }).ToList();
//Nam < 15
index1[0] = Result.Where(m => m.Age < age).Where(m => m.Sex == 1).Count();
//Nam >=15
index1[1] = Result.Where(m => m.Age >= age).Where(m => m.Sex == 1).Count();
//Nữ < 15 tuổi
index1[2] = Result.Where(m => m.Age < age).Where(m => m.Sex == 2).Count();
//Nữ >=15
index1[3] = Result.Where(m => m.Age >= age).Where(m => m.Sex == 2).Count();
_Progress.Cells[20, 3].Value = index1[0]; _Progress.Cells[20, 5].Value = index1[1]; _Progress.Cells[20, 7].Value = index1[2]; _Progress.Cells[20, 9].Value = index1[3];
#endregion
}
private void V1C()
{
LinqMetaData meta = new LinqMetaData(adapter);
EntityCollection<TblTreatmentInfoEntity> TreatmentInfo = new EntityCollection<TblTreatmentInfoEntity>();
adapter.FetchEntityCollection(TreatmentInfo, null);
int age = 15;
DateTime thisBeginDate = this.BeginDate;
DateTime thisEndDate = this.EndDate;
#region index1
//Chỉ số 1 - 1C - Số lượt bệnh nhân tự đến được sàng lọc Lao trong kỳ báo cáo
int[] index1 = { 0, 0, 0, 0 };
var tbScreens = meta.TblExaminationInfo.Where(p => p.TbScreen == 1).Where(p => p.ExamDate >= thisBeginDate && p.ExamDate <= thisEndDate).ToList();
var tbPositive = tbScreens.Where(p => p.TbScreenResult == "02").ToList();
var tbNegative = tbScreens.Where(p => p.TbScreenResult != "02").ToList();
List<string> tbTreat = meta.TblTreatmentInfo.Where(p => p.TreatmentId == "02").Where(p => p.TreatmentSdate >= thisBeginDate && p.TreatmentSdate <= thisEndDate).GroupBy(p => p.PatientId).Select(g => g.Key).ToList();
index1[0] = tbPositive.Where(p => tbTreat.Contains(p.PatientId)).ToList().Count();
index1[1] = tbNegative.Where(p => tbTreat.Contains(p.PatientId)).ToList().Count();
index1[2] = tbPositive.Count - index1[0];
index1[3] = tbNegative.Count - index1[1];
//Fill
_Progress.Cells[25, 3].Value = index1[0]; _Progress.Cells[25, 5].Value = index1[1];
_Progress.Cells[25, 7].Value = index1[2]; _Progress.Cells[25, 9].Value = index1[3];
#endregion
#region index3
//Chỉ số 3 - Số bệnh nhân bắt đầu điều trị Lao trong kỳ báo cáo
//Lọc tất cả các bản ghi trong bảng tblTreatmentInfo có kiểu điều trị là Lao (02) và có ngày điều trị trong khoảng báo cáo, nhóm lại lấy bản ghi duy nhất
int[] index3 = { 0, 0, 0, 0 };
string[] indexs3 = { "", "", "", "" };
var index3prevresult = (from tr in TreatmentInfo where (tr.TreatmentId == "02" && tr.TreatmentSdate >= thisBeginDate && tr.TreatmentSdate <= thisEndDate) group tr by tr.PatientId into g select g.First()).ToList();
var index3result = index3prevresult.Join(meta.TblPatient,
t => t.PatientId,
p => p.PatientId,
(t, p)
=> new { PatientId = p.PatientId, Sex = p.Sex, Age = thisEndDate.Year - p.BirthYear, DateOfArv = p.DateofArv, sDate = t.TreatmentSdate }).Where(p => p.DateOfArv != null && p.DateOfArv <= p.sDate).ToList();
//Nam < 15
index3[0] = index3result.Where(m => m.Age < age).Where(m => m.Sex == 1).Count();
//Nam >=15
index3[1] = index3result.Where(m => m.Age >= age).Where(m => m.Sex == 1).Count();
//Nữ < 15 tuổi
index3[2] = index3result.Where(m => m.Age < age).Where(m => m.Sex == 2).Count();
//Nữ >=15
index3[3] = index3result.Where(m => m.Age >= age).Where(m => m.Sex == 2).Count();
//fill
_Progress.Cells[30, 5].Value = index3[1]; _Progress.Cells[30, 5].Value = index3[1]; _Progress.Cells[30, 7].Value = index3[2]; _Progress.Cells[30, 9].Value = index3[3];
#endregion
#region index4
//Chỉ số 4 - 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[] index4 = { 0, 0, 0, 0 };
var index4prevresult = (from tr in TreatmentInfo where tr.TreatmentId == "03" group tr by tr.PatientId into g select g.OrderBy(p => p.TreatmentEdate).First()).Where(p => p.TreatmentEdate >= thisBeginDate && p.TreatmentEdate <= thisEndDate).ToList();
var index4result = index4prevresult.Join(meta.TblPatient,
t => t.PatientId,
p => p.PatientId,
(t, p)
=> new { PatientId = p.PatientId, Sex = p.Sex, Age = thisEndDate.Year - p.BirthYear }).ToList();
//Nam < 15
index4[0] = index4result.Where(m => m.Age < age).Where(m => m.Sex == 1).Count();
//Nam >=15
index4[1] = index4result.Where(m => m.Age >= age).Where(m => m.Sex == 1).Count();
//Nữ < 15 tuổi
index4[2] = index4result.Where(m => m.Age < age).Where(m => m.Sex == 2).Count();
//Nữ >=15
index4[3] = index4result.Where(m => m.Age >= age).Where(m => m.Sex == 2).Count();
//fill
_Progress.Cells[31, 3].Value = index4[0]; _Progress.Cells[31, 5].Value = index4[1]; _Progress.Cells[31, 7].Value = index4[2]; _Progress.Cells[31, 9].Value = index4[3];
#endregion
}
private void VIIPreArv()
{
//Dịch vụ trước điều trị ARV
LinqMetaData meta = new LinqMetaData(adapter);
DateTime thisBeginDate = this.BeginDate;
DateTime thisEndDate = this.EndDate;
#region index1
// Đang quản lý
int[] index1 = { 0, 0, 0, 0, 0, 0 };
string[] indexs1 = { "", "", "", "", "", "" };
List<string> ends = meta.TblReferralsTo.Where(p => p.EndDate <= thisEndDate).Select(p => p.PatientId).ToList();
var index1Result = meta.TblPatient.Where(m => m.DateofArv > thisEndDate || m.DateofArv == null).Where(p => !ends.Contains(p.PatientId)).Select(p => new { PatientId = p.PatientId, Sex = p.Sex, Age = thisEndDate.Year - p.BirthYear }).ToList();
//Nam < 1 tuổi
index1[0] = index1Result.Where(m => m.Age < 1).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ừ 1-14
index1[1] = index1Result.Where(m => m.Age >= 1 && m.Age < 15).Where(m => m.Sex == 1).Count();
indexs1[1] = string.Join(",", index1Result.Where(m => m.Age >= 1 && m.Age < 15).Where(m => m.Sex == 1).Select(p => p.PatientId).ToArray());
// Nam từ 15 tuổi
index1[2] = index1Result.Where(m => m.Age >= 15).Where(m => m.Sex == 1).Count();
indexs1[2] = string.Join(",", index1Result.Where(m => m.Age >= 15).Where(m => m.Sex == 1).Select(p => p.PatientId).ToArray());
//Nữ < 1 tuổi
index1[3] = index1Result.Where(m => m.Age < 1).Where(m => m.Sex == 2).Count();
indexs1[3] = string.Join(",", index1Result.Where(m => m.Age < 1).Where(m => m.Sex == 2).Select(p => p.PatientId).ToArray());
//Nữ từ 1-14
index1[4] = index1Result.Where(m => m.Age >= 1 && m.Age < 15).Where(m => m.Sex == 2).Count();
indexs1[4] = string.Join(",", index1Result.Where(m => m.Age >= 1 && m.Age < 15).Where(m => m.Sex == 2).Select(p => p.PatientId).ToArray());
//Nữ từ 15 tuổi
index1[5] = index1Result.Where(m => m.Age >= 15).Where(m => m.Sex == 2).Count();
indexs1[5] = string.Join(",", index1Result.Where(m => m.Age >= 15).Where(m => m.Sex == 2).Select(p => p.PatientId).ToArray());
//fill
_Progress.Cells[36, 3].Value = index1[0]; _Progress.Cells[36, 4].Value = index1[1]; _Progress.Cells[36, 5].Value = index1[2];
_Progress.Cells[36, 7].Value = index1[3]; _Progress.Cells[36, 8].Value = index1[4]; _Progress.Cells[36, 9].Value = index1[5];
_Tracking.Cells[36, 3].Value = indexs1[0]; _Tracking.Cells[36, 4].Value = indexs1[1]; _Tracking.Cells[36, 5].Value = indexs1[2];
_Tracking.Cells[36, 7].Value = indexs1[3]; _Tracking.Cells[36, 8].Value = indexs1[4]; _Tracking.Cells[36, 9].Value = indexs1[5];
#endregion
#region index2
// Mới đăng ký trong kỳ báo cáo
int[] index2 = { 0, 0, 0, 0, 0, 0 };
string[] indexs2 = { "", "", "", "", "", "" };
var index2Result = meta.TblPatient.Where(m => m.DateofRegistration >= thisBeginDate && m.DateofRegistration <= thisEndDate && m.HaveArvBefore != 1).Select(p => new { PatientId = p.PatientId, Sex = p.Sex, Age = thisEndDate.Year - p.BirthYear }).ToList();
//Nam < 1 tuổi
index2[0] = index2Result.Where(m => m.Age < 1).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ừ 1-14
index2[1] = index2Result.Where(m => m.Age >= 1 && m.Age < 15).Where(m => m.Sex == 1).Count();
indexs2[1] = string.Join(",", index2Result.Where(m => m.Age >= 1 && m.Age < 15).Where(m => m.Sex == 1).Select(p => p.PatientId).ToArray());
// Nam từ 15 tuổi
index2[2] = index2Result.Where(m => m.Age >= 15).Where(m => m.Sex == 1).Count();
indexs2[3] = string.Join(",", index2Result.Where(m => m.Age >= 15).Where(m => m.Sex == 1).Select(p => p.PatientId).ToArray());
//Nữ < 1 tuổi
index2[3] = index2Result.Where(m => m.Age < 1).Where(m => m.Sex == 2).Count();
indexs2[3] = string.Join(",", index2Result.Where(m => m.Age < 1).Where(m => m.Sex == 2).Select(p => p.PatientId).ToArray());
//Nữ từ 1-14
index2[4] = index2Result.Where(m => m.Age >= 1 && m.Age < 15).Where(m => m.Sex == 2).Count();
indexs2[4] = string.Join(",", index2Result.Where(m => m.Age >= 1 && m.Age < 15).Where(m => m.Sex == 2).Select(p => p.PatientId).ToArray());
//Nữ từ 15 tuổi
index2[5] = index2Result.Where(m => m.Age >= 15).Where(m => m.Sex == 2).Count();
indexs2[5] = string.Join(",", index2Result.Where(m => m.Age >= 15).Where(m => m.Sex == 2).Select(p => p.PatientId).ToArray());
//fill
_Progress.Cells[37, 3].Value = index2[0]; _Progress.Cells[37, 4].Value = index2[1]; _Progress.Cells[37, 5].Value = index2[2];
_Progress.Cells[37, 7].Value = index2[3]; _Progress.Cells[37, 8].Value = index2[4]; _Progress.Cells[37, 9].Value = index2[5];
_Tracking.Cells[37, 3].Value = indexs2[0]; _Tracking.Cells[37, 4].Value = indexs2[1]; _Tracking.Cells[37, 5].Value = indexs2[2];
_Tracking.Cells[37, 7].Value = indexs2[3]; _Tracking.Cells[37, 8].Value = indexs2[4]; _Tracking.Cells[37, 9].Value = indexs2[5];
#endregion
#region index3
//Điều trị lại trong kỳ báo cáo
int[] index3 = { 0, 0, 0, 0, 0, 4 };
string[] indexs3 = { "", "", "", "", "", "" };
var index3Preresult = meta.TblExaminationInfo.Where(m => m.ExamDate >= thisBeginDate && m.ExamDate <= thisEndDate && m.ReTreatment == 1).ToList();
var index3result = index3Preresult.Join(meta.TblPatient, e => e.PatientId, p => p.PatientId, (e, p) => new { PatientId = p.PatientId, Sex = p.Sex, Age = thisEndDate.Year - p.BirthYear, ExamDate = e.ExamDate, DateofArv = p.DateofArv }).Where(m => m.DateofArv == null || m.ExamDate < m.DateofArv).ToList();
//Nam < 1 tuổi
index3[0] = index3result.Where(m => m.Age < 1).Where(m => m.Sex == 1).Count();
indexs3[0] = string.Join(",", index3result.Where(m => m.Age < 1).Where(m => m.Sex == 1).Select(p => p.PatientId).ToArray());
// Nam từ 1-14
index3[1] = index3result.Where(m => m.Age >= 1 && m.Age < 15).Where(m => m.Sex == 1).Count();
indexs3[1] = string.Join(",", index3result.Where(m => m.Age >= 1 && m.Age < 15).Where(m => m.Sex == 1).Select(p => p.PatientId).ToArray());
// Nam từ 15 tuổi
index3[2] = index3result.Where(m => m.Age >= 15).Where(m => m.Sex == 1).Count();
indexs3[2] = string.Join(",", index3result.Where(m => m.Age >= 15).Where(m => m.Sex == 1).Select(p => p.PatientId).ToArray());
//Nữ < 1 tuổi
index3[3] = index3result.Where(m => m.Age < 1).Where(m => m.Sex == 2).Count();
indexs3[3] = string.Join(",", index3result.Where(m => m.Age < 1).Where(m => m.Sex == 2).Select(p => p.PatientId).ToArray());
//Nữ từ 1-14
index3[4] = index3result.Where(m => m.Age >= 1 && m.Age < 15).Where(m => m.Sex == 2).Count();
indexs3[4] = string.Join(",", index3result.Where(m => m.Age >= 1 && m.Age < 15).Where(m => m.Sex == 2).Select(p => p.PatientId).ToArray());
//Nữ từ 15 tuổi
index3[5] = index3result.Where(m => m.Age >= 15).Where(m => m.Sex == 2).Count();
indexs3[5] = string.Join(",", index3result.Where(m => m.Age >= 15).Where(m => m.Sex == 2).Select(p => p.PatientId).ToArray());
//fill
_Progress.Cells[38, 3].Value = index3[0]; _Progress.Cells[38, 4].Value = index3[1]; _Progress.Cells[38, 5].Value = index3[2];
_Progress.Cells[38, 7].Value = index3[3]; _Progress.Cells[38, 8].Value = index3[4]; _Progress.Cells[38, 9].Value = index3[5];
_Tracking.Cells[38, 3].Value = indexs3[0]; _Tracking.Cells[38, 4].Value = indexs3[1]; _Tracking.Cells[38, 5].Value = indexs3[2];
_Tracking.Cells[38, 7].Value = indexs3[3]; _Tracking.Cells[38, 8].Value = indexs3[4]; _Tracking.Cells[38, 9].Value = indexs3[5];
#endregion
#region index4
//Chuyển đến trong kỳ báo cáo
int[] index4 = { 0, 0, 0, 0, 0, 0 };
string[] indexs4 = { "", "", "", "", "", "" };
var index4Result = meta.TblPatient.Where(p => p.Dateofreferral != null && p.Dateofreferral >= thisBeginDate && p.Dateofreferral <= thisEndDate && p.HaveArvBefore != 1).Select(p => new { PatientId = p.PatientId, Sex = p.Sex, Age = thisEndDate.Year - p.BirthYear }).ToList();
//Nam < 1 tuổi
index4[0] = index4Result.Where(m => m.Age < 1).Where(m => m.Sex == 1).Count();
indexs4[0] = string.Join(",", index4Result.Where(m => m.Age < 1).Where(m => m.Sex == 1).Select(q => q.PatientId).ToArray());
// Nam từ 1-14
index4[1] = index4Result.Where(m => m.Age >= 1 && m.Age < 15).Where(m => m.Sex == 1).Count();
indexs4[1] = string.Join(",", index4Result.Where(m => m.Age >= 1 && m.Age < 15).Where(m => m.Sex == 1).Select(q => q.PatientId).ToArray());
// Nam từ 15 tuổi
index4[2] = index4Result.Where(m => m.Age >= 15).Where(m => m.Sex == 1).Count();
indexs4[2] = string.Join(",", index4Result.Where(m => m.Age >= 15).Where(m => m.Sex == 1).Select(q => q.PatientId).ToArray());
//Nữ < 1 tuổi
index4[3] = index4Result.Where(m => m.Age < 1).Where(m => m.Sex == 2).Count();
indexs4[3] = string.Join(",", index4Result.Where(m => m.Age < 1).Where(m => m.Sex == 2).Select(q => q.PatientId).ToArray());
//Nữ từ 1-14
index4[4] = index4Result.Where(m => m.Age >= 1 && m.Age < 15).Where(m => m.Sex == 2).Count();
indexs4[4] = string.Join(",", index4Result.Where(m => m.Age >= 1 && m.Age < 15).Where(m => m.Sex == 2).Select(q => q.PatientId).ToArray());
//Nữ từ 15 tuổi
index4[5] = index4Result.Where(m => m.Age >= 15).Where(m => m.Sex == 2).Count();
indexs4[5] = string.Join(",", index4Result.Where(m => m.Age >= 15).Where(m => m.Sex == 2).Select(q => q.PatientId).ToArray());
//fill
_Progress.Cells[39, 3].Value = index4[0]; _Progress.Cells[39, 4].Value = index4[1]; _Progress.Cells[39, 5].Value = index4[2];
_Progress.Cells[39, 7].Value = index4[3]; _Progress.Cells[39, 8].Value = index4[4]; _Progress.Cells[39, 9].Value = index4[5];
_Tracking.Cells[39, 3].Value = indexs4[0]; _Tracking.Cells[39, 4].Value = indexs4[1]; _Tracking.Cells[39, 5].Value = indexs4[2];
_Tracking.Cells[39, 7].Value = indexs4[3]; _Tracking.Cells[39, 8].Value = indexs4[4]; _Tracking.Cells[39, 9].Value = indexs4[5];
#endregion
#region index5
//Chuyển đi trong kỳ báo cáo
int[] index5 = { 0, 0, 0, 0, 0, 0 };
string[] indexs5 = { "", "", "", "", "", "" };
var referrals = meta.TblReferralsTo.Where(p => p.EndDate >= thisBeginDate && p.EndDate <= thisEndDate && p.TypeId == "09").ToList();
var index5Result = referrals.Join(meta.TblPatient, e => e.PatientId, p => p.PatientId, (e, p) => new { PatientId = p.PatientId, Sex = p.Sex, Age = thisEndDate.Year - p.BirthYear, DateofArv = p.DateofArv, EndDate = e.EndDate }).Where(m => m.DateofArv == null || m.EndDate < m.DateofArv).ToList();
//Nam < 1 tuổi
index5[0] = index5Result.Where(m => m.Age < 1).Where(m => m.Sex == 1).Count();
indexs5[0] = string.Join(",", index5Result.Where(m => m.Age < 1).Where(m => m.Sex == 1).Select(p => p.PatientId).ToArray());
// Nam từ 1-14
index5[1] = index5Result.Where(m => m.Age >= 1 && m.Age < 15).Where(m => m.Sex == 1).Count();
indexs5[1] = string.Join(",", index5Result.Where(m => m.Age >= 1 && m.Age < 15).Where(m => m.Sex == 1).Select(p => p.PatientId).ToArray());
// Nam từ 15 tuổi
index5[2] = index5Result.Where(m => m.Age >= 15).Where(m => m.Sex == 1).Count();
indexs5[2] = string.Join(",", index5Result.Where(m => m.Age >= 15).Where(m => m.Sex == 1).Select(p => p.PatientId).ToArray());
//Nữ < 1 tuổi
index5[3] = index5Result.Where(m => m.Age < 1).Where(m => m.Sex == 2).Count();
indexs5[3] = string.Join(",", index5Result.Where(m => m.Age < 1).Where(m => m.Sex == 2).Select(p => p.PatientId).ToArray());
//Nữ từ 1-14
index5[4] = index5Result.Where(m => m.Age >= 1 && m.Age < 15).Where(m => m.Sex == 2).Count();
indexs5[4] = string.Join(",", index5Result.Where(m => m.Age >= 1 && m.Age < 15).Where(m => m.Sex == 2).Select(p => p.PatientId).ToArray());
//Nữ từ 15 tuổi
index5[5] = index5Result.Where(m => m.Age >= 15).Where(m => m.Sex == 2).Count();
indexs5[5] = string.Join(",", index5Result.Where(m => m.Age >= 15).Where(m => m.Sex == 2).Select(p => p.PatientId).ToArray());
//fill
_Progress.Cells[40, 3].Value = index5[0]; _Progress.Cells[40, 4].Value = index5[1]; _Progress.Cells[40, 5].Value = index5[2];
_Progress.Cells[40, 7].Value = index5[3]; _Progress.Cells[40, 8].Value = index5[4]; _Progress.Cells[40, 9].Value = index5[5];
_Tracking.Cells[40, 3].Value = indexs5[0]; _Tracking.Cells[40, 4].Value = indexs5[1]; _Tracking.Cells[40, 5].Value = indexs5[2];
_Tracking.Cells[40, 7].Value = indexs5[3]; _Tracking.Cells[40, 8].Value = indexs5[4]; _Tracking.Cells[40, 9].Value = indexs5[5];
#endregion
#region index6
int[] index6 = { 0, 0, 0, 0, 0, 0 };
string[] indexs6 = { "", "", "", "", "", "" };
var lossfollows = meta.TblReferralsTo.Where(p => p.EndDate >= thisBeginDate && p.EndDate <= thisEndDate && 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 = thisEndDate.Year - p.BirthYear, DateofArv = p.DateofArv, EndDate = e.EndDate }).Where(m => m.DateofArv == null || m.EndDate < m.DateofArv).ToList();
//Nam < 1 tuổi
index6[0] = index6Result.Where(m => m.Age < 1).Where(m => m.Sex == 1).Count();
indexs6[0] = string.Join(",", index6Result.Where(m => m.Age < 1).Where(m => m.Sex == 1).Select(p => p.PatientId).ToArray());
// Nam từ 1-14
index6[1] = index6Result.Where(m => m.Age >= 1 && m.Age < 15).Where(m => m.Sex == 1).Count();
indexs6[1] = string.Join(",", index6Result.Where(m => m.Age >= 1 && m.Age < 15).Where(m => m.Sex == 1).Select(p => p.PatientId).ToArray());
// Nam từ 15 tuổi
index6[2] = index6Result.Where(m => m.Age >= 15).Where(m => m.Sex == 1).Count();
indexs6[2] = string.Join(",", index6Result.Where(m => m.Age >= 15).Where(m => m.Sex == 1).Select(p => p.PatientId).ToArray());
//Nữ < 1 tuổi
index6[3] = index6Result.Where(m => m.Age < 1).Where(m => m.Sex == 2).Count();
indexs6[3] = string.Join(",", index6Result.Where(m => m.Age < 1).Where(m => m.Sex == 2).Select(p => p.PatientId).ToArray());
//Nữ từ 1-14
index6[4] = index6Result.Where(m => m.Age >= 1 && m.Age < 15).Where(m => m.Sex == 2).Count();
indexs6[4] = string.Join(",", index6Result.Where(m => m.Age >= 1 && m.Age < 15).Where(m => m.Sex == 2).Select(p => p.PatientId).ToArray());
//Nữ từ 15 tuổi
index6[5] = index6Result.Where(m => m.Age >= 15).Where(m => m.Sex == 2).Count();
indexs6[5] = string.Join(",", index6Result.Where(m => m.Age >= 15).Where(m => m.Sex == 2).Select(p => p.PatientId).ToArray());
//fill
_Progress.Cells[41, 3].Value = index6[0]; _Progress.Cells[41, 4].Value = index6[1]; _Progress.Cells[41, 5].Value = index6[2];
_Progress.Cells[41, 7].Value = index6[3]; _Progress.Cells[41, 8].Value = index6[4]; _Progress.Cells[41, 9].Value = index6[5];
_Tracking.Cells[41, 3].Value = indexs6[0]; _Tracking.Cells[41, 4].Value = indexs6[1]; _Tracking.Cells[41, 5].Value = indexs6[2];
_Tracking.Cells[41, 7].Value = indexs6[3]; _Tracking.Cells[41, 8].Value = indexs6[4]; _Tracking.Cells[41, 9].Value = indexs6[5];
#endregion
#region index7
int[] index7 = { 0, 0, 0, 0, 0, 0 };
string[] indexs7 = { "", "", "", "", "", "" };
var deaths = meta.TblReferralsTo.Where(p => p.EndDate >= thisBeginDate && p.EndDate <= thisEndDate && p.TypeId == "11").ToList();
var index7Result = deaths.Join(meta.TblPatient, e => e.PatientId, p => p.PatientId, (e, p) => new { PatientId = p.PatientId, Sex = p.Sex, Age = thisEndDate.Year - p.BirthYear, DateofArv = p.DateofArv, EndDate = e.EndDate }).Where(m => m.DateofArv == null || m.EndDate < m.DateofArv).ToList();
//Nam < 1 tuổi
index7[0] = index7Result.Where(m => m.Age < 1).Where(m => m.Sex == 1).Count();
indexs7[0] = string.Join(",", index7Result.Where(m => m.Age < 1).Where(m => m.Sex == 1).Select(q => q.PatientId).ToArray());
// Nam từ 1-14
index7[1] = index7Result.Where(m => m.Age >= 1 && m.Age < 15).Where(m => m.Sex == 1).Count();
indexs7[1] = string.Join(",", index7Result.Where(m => m.Age >= 1 && m.Age < 15).Where(m => m.Sex == 1).Select(q => q.PatientId).ToArray());
// Nam từ 15 tuổi
index7[2] = index7Result.Where(m => m.Age >= 15).Where(m => m.Sex == 1).Count();
indexs7[2] = string.Join(",", index7Result.Where(m => m.Age >= 15).Where(m => m.Sex == 1).Select(q => q.PatientId).ToArray());
//Nữ < 1 tuổi
index7[3] = index7Result.Where(m => m.Age < 1).Where(m => m.Sex == 2).Count();
indexs7[3] = string.Join(",", index7Result.Where(m => m.Age < 1).Where(m => m.Sex == 2).Select(q => q.PatientId).ToArray());
//Nữ từ 1-14
index7[4] = index7Result.Where(m => m.Age >= 1 && m.Age < 15).Where(m => m.Sex == 2).Count();
indexs7[4] = string.Join(",", index7Result.Where(m => m.Age >= 1 && m.Age < 15).Where(m => m.Sex == 2).Select(q => q.PatientId).ToArray());
//Nữ từ 15 tuổi
index7[5] = index7Result.Where(m => m.Age >= 15).Where(m => m.Sex == 2).Count();
indexs7[5] = string.Join(",", index7Result.Where(m => m.Age >= 15).Where(m => m.Sex == 2).Select(q => q.PatientId).ToArray());
//fill
_Progress.Cells[42, 3].Value = index7[0]; _Progress.Cells[42, 4].Value = index7[1]; _Progress.Cells[42, 5].Value = index7[2];
_Progress.Cells[42, 7].Value = index7[3]; _Progress.Cells[42, 8].Value = index7[4]; _Progress.Cells[42, 9].Value = index7[5];
_Tracking.Cells[42, 3].Value = indexs7[0]; _Tracking.Cells[42, 4].Value = indexs7[1]; _Tracking.Cells[42, 5].Value = indexs7[2];
_Tracking.Cells[42, 7].Value = indexs7[3]; _Tracking.Cells[42, 8].Value = indexs7[4]; _Tracking.Cells[42, 9].Value = indexs7[5];
#endregion
}
private void VIIARV()
{
//Dịch vụ sau điều trị ARV
LinqMetaData meta = new LinqMetaData(adapter);
DateTime thisBeginDate = this.BeginDate;
DateTime thisEndDate = this.EndDate;
#region index1
// Đang quản lý
int[] index1 = { 0, 0, 0, 0, 0, 0 };
string[] indexs1 = { "", "", "", "", "", "" };
//Lưu ý những cá nhân được đánh dấu là kết thúc điều trị nhưng lại quay lại
List<string> ends = meta.TblReferralsTo.Where(p => p.EndDate <= thisEndDate).Select(p => p.PatientId).ToList();
var index1Result = meta.TblPatient.Where(m => m.DateofArv != null && m.DateofArv <= thisEndDate).Where(p => !ends.Contains(p.PatientId)).Select(p => new { PatientId = p.PatientId, Sex = p.Sex, Age = thisEndDate.Year - p.BirthYear }).ToList();
//Nam < 1 tuổi
index1[0] = index1Result.Where(m => m.Age < 1).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ừ 1-14
index1[1] = index1Result.Where(m => m.Age >= 1 && m.Age < 15).Where(m => m.Sex == 1).Count();
indexs1[1] = string.Join(",", index1Result.Where(m => m.Age >= 1 && m.Age < 15).Where(m => m.Sex == 1).Select(p => p.PatientId).ToArray());
// Nam từ 15 tuổi
index1[2] = index1Result.Where(m => m.Age >= 15).Where(m => m.Sex == 1).Count();
indexs1[2] = string.Join(",", index1Result.Where(m => m.Age >= 15).Where(m => m.Sex == 1).Select(p => p.PatientId).ToArray());
//Nữ < 1 tuổi
index1[3] = index1Result.Where(m => m.Age < 1).Where(m => m.Sex == 2).Count();
indexs1[3] = string.Join(",", index1Result.Where(m => m.Age < 1).Where(m => m.Sex == 2).Select(p => p.PatientId).ToArray());
//Nữ từ 1-14
index1[4] = index1Result.Where(m => m.Age >= 1 && m.Age < 15).Where(m => m.Sex == 2).Count();
indexs1[4] = string.Join(",", index1Result.Where(m => m.Age >= 1 && m.Age < 15).Where(m => m.Sex == 2).Select(p => p.PatientId).ToArray());
//Nữ từ 15 tuổi
index1[5] = index1Result.Where(m => m.Age >= 15).Where(m => m.Sex == 2).Count();
indexs1[5] = string.Join(",", index1Result.Where(m => m.Age >= 15).Where(m => m.Sex == 2).Select(p => p.PatientId).ToArray());
//fill
_Progress.Cells[47, 3].Value = index1[0]; _Progress.Cells[47, 4].Value = index1[1]; _Progress.Cells[47, 5].Value = index1[2];
_Progress.Cells[47, 7].Value = index1[3]; _Progress.Cells[47, 8].Value = index1[4]; _Progress.Cells[47, 9].Value = index1[5];
_Tracking.Cells[47, 3].Value = indexs1[0]; _Tracking.Cells[47, 4].Value = indexs1[1]; _Tracking.Cells[47, 5].Value = indexs1[2];
_Tracking.Cells[47, 7].Value = indexs1[3]; _Tracking.Cells[47, 8].Value = indexs1[4]; _Tracking.Cells[47, 9].Value = indexs1[5];
#endregion
#region index2
//Bắt đầu điều trị Arv trong kỳ báo cáo
int[] index2 = { 0, 0, 0, 0, 0, 0 };
string[] indexs2 = { "", "", "", "", "", "" };
var index2Result = meta.TblPatient.Where(m => m.DateofArv != null && m.DateofArv >= thisBeginDate && m.DateofArv <= thisEndDate && m.HaveArvBefore != 1).Select(p => new { PatientId = p.PatientId, Sex = p.Sex, Age = thisEndDate.Year - p.BirthYear }).ToList();
//Nam < 1 tuổi
index2[0] = index2Result.Where(m => m.Age < 1).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ừ 1-14
index2[1] = index2Result.Where(m => m.Age >= 1 && m.Age < 15).Where(m => m.Sex == 1).Count();
indexs2[1] = string.Join(",", index2Result.Where(m => m.Age >= 1 && m.Age < 15).Where(m => m.Sex == 1).Select(p => p.PatientId).ToArray());
// Nam từ 15 tuổi
index2[2] = index2Result.Where(m => m.Age >= 15).Where(m => m.Sex == 1).Count();
indexs2[2] = string.Join(",", index2Result.Where(m => m.Age >= 15).Where(m => m.Sex == 1).Select(p => p.PatientId).ToArray());
//Nữ < 1 tuổi
index2[3] = index2Result.Where(m => m.Age < 1).Where(m => m.Sex == 2).Count();
indexs2[3] = string.Join(",", index2Result.Where(m => m.Age < 1).Where(m => m.Sex == 2).Select(p => p.PatientId).ToArray());
//Nữ từ 1-14
index2[4] = index2Result.Where(m => m.Age >= 1 && m.Age < 15).Where(m => m.Sex == 2).Count();
indexs2[4] = string.Join(",", index2Result.Where(m => m.Age >= 1 && m.Age < 15).Where(m => m.Sex == 2).Select(p => p.PatientId).ToArray());
//Nữ từ 15 tuổi
index2[5] = index2Result.Where(m => m.Age >= 15).Where(m => m.Sex == 2).Count();
indexs2[5] = string.Join(",", index2Result.Where(m => m.Age >= 15).Where(m => m.Sex == 2).Select(p => p.PatientId).ToArray());
//fill
_Progress.Cells[48, 3].Value = index2[0]; _Progress.Cells[48, 4].Value = index2[1]; _Progress.Cells[48, 5].Value = index2[2];
_Progress.Cells[48, 7].Value = index2[3]; _Progress.Cells[48, 8].Value = index2[4]; _Progress.Cells[48, 9].Value = index2[5];
_Tracking.Cells[48, 3].Value = indexs2[0]; _Tracking.Cells[48, 4].Value = indexs2[1]; _Tracking.Cells[48, 5].Value = indexs2[2];
_Tracking.Cells[48, 7].Value = indexs2[3]; _Tracking.Cells[48, 8].Value = indexs2[4]; _Tracking.Cells[48, 9].Value = indexs2[5];
#endregion
#region index3
//Điều trị lại trong kỳ báo cáo
int[] index3 = { 0, 0, 0, 0, 0, 4 };
string[] indexs3 = { "", "", "", "", "", "" };
var index3Preresult = meta.TblExaminationInfo.Where(m => m.ExamDate >= thisBeginDate && m.ExamDate <= thisEndDate && m.ReTreatment == 1).ToList();
var index3Result = index3Preresult.Join(meta.TblPatient, e => e.PatientId, p => p.PatientId, (e, p) => new { PatientId = p.PatientId, Sex = p.Sex, Age = thisEndDate.Year - p.BirthYear, ExamDate = e.ExamDate, DateofArv = p.DateofArv }).Where(m => m.DateofArv != null && m.ExamDate > m.DateofArv).ToList();
//Nam < 1 tuổi
index3[0] = index3Result.Where(m => m.Age < 1).Where(m => m.Sex == 1).Count();
indexs3[0] = string.Join(",", index3Result.Where(m => m.Age < 1).Where(m => m.Sex == 1).Select(p => p.PatientId).ToArray());
// Nam từ 1-14
index3[1] = index3Result.Where(m => m.Age >= 1 && m.Age < 15).Where(m => m.Sex == 1).Count();
indexs3[1] = string.Join(",", index3Result.Where(m => m.Age >= 1 && m.Age < 15).Where(m => m.Sex == 1).Select(p => p.PatientId).ToArray());
// Nam từ 15 tuổi
index3[2] = index3Result.Where(m => m.Age >= 15).Where(m => m.Sex == 1).Count();
indexs3[2] = string.Join(",", index3Result.Where(m => m.Age >= 15).Where(m => m.Sex == 1).Select(p => p.PatientId).ToArray());
//Nữ < 1 tuổi
index3[3] = index3Result.Where(m => m.Age < 1).Where(m => m.Sex == 2).Count();
indexs3[3] = string.Join(",", index3Result.Where(m => m.Age < 1).Where(m => m.Sex == 2).Select(p => p.PatientId).ToArray());
//Nữ từ 1-14
index3[4] = index3Result.Where(m => m.Age >= 1 && m.Age < 15).Where(m => m.Sex == 2).Count();
indexs3[4] = string.Join(",", index3Result.Where(m => m.Age >= 1 && m.Age < 15).Where(m => m.Sex == 2).Select(p => p.PatientId).ToArray());
//Nữ từ 15 tuổi
index3[5] = index3Result.Where(m => m.Age >= 15).Where(m => m.Sex == 2).Count();
indexs3[5] = string.Join(",", index3Result.Where(m => m.Age >= 15).Where(m => m.Sex == 2).Select(p => p.PatientId).ToArray());
//fill
_Progress.Cells[49, 3].Value = index3[0]; _Progress.Cells[49, 4].Value = index3[1]; _Progress.Cells[49, 5].Value = index3[2];
_Progress.Cells[49, 7].Value = index3[3]; _Progress.Cells[49, 8].Value = index3[4]; _Progress.Cells[49, 9].Value = index3[5];
_Tracking.Cells[49, 3].Value = indexs3[0]; _Tracking.Cells[49, 4].Value = indexs3[1]; _Tracking.Cells[49, 5].Value = indexs3[2];
_Tracking.Cells[49, 7].Value = indexs3[3]; _Tracking.Cells[49, 8].Value = indexs3[4]; _Tracking.Cells[49, 9].Value = indexs3[5];
#endregion
#region index4
//Chuyển đến trong kỳ báo cáo
int[] index4 = { 0, 0, 0, 0, 0, 0 };
string[] indexs4 = { "", "", "", "", "", "" };
var index4Result = meta.TblPatient.Where(p => p.Dateofreferral != null && p.Dateofreferral >= thisBeginDate && p.Dateofreferral <= thisEndDate && p.DateofArv != null && p.HaveArvBefore == 1).Select(p => new { PatientId = p.PatientId, Sex = p.Sex, Age = thisEndDate.Year - p.BirthYear }).ToList();
//Nam < 1 tuổi
index4[0] = index4Result.Where(m => m.Age < 1).Where(m => m.Sex == 1).Count();
indexs4[0] = string.Join(",", index4Result.Where(m => m.Age < 1).Where(m => m.Sex == 1).Select(p => p.PatientId).ToArray());
// Nam từ 1-14
index4[1] = index4Result.Where(m => m.Age >= 1 && m.Age < 15).Where(m => m.Sex == 1).Count();
indexs4[1] = string.Join(",", index4Result.Where(m => m.Age >= 1 && m.Age < 15).Where(m => m.Sex == 1).Select(p => p.PatientId).ToArray());
// Nam từ 15 tuổi
index4[2] = index4Result.Where(m => m.Age >= 15).Where(m => m.Sex == 1).Count();
indexs4[2] = string.Join(",", index4Result.Where(m => m.Age >= 15).Where(m => m.Sex == 1).Select(p => p.PatientId).ToArray());
//Nữ < 1 tuổi
index4[3] = index4Result.Where(m => m.Age < 1).Where(m => m.Sex == 2).Count();
indexs4[3] = string.Join(",", index4Result.Where(m => m.Age < 1).Where(m => m.Sex == 2).Select(p => p.PatientId).ToArray());
//Nữ từ 1-14
index4[4] = index4Result.Where(m => m.Age >= 1 && m.Age < 15).Where(m => m.Sex == 2).Count();
indexs4[4] = string.Join(",", index4Result.Where(m => m.Age >= 1 && m.Age < 15).Where(m => m.Sex == 2).Select(p => p.PatientId).ToArray());
//Nữ từ 15 tuổi
index4[5] = index4Result.Where(m => m.Age >= 15).Where(m => m.Sex == 2).Count();
indexs4[5] = string.Join(",", index4Result.Where(m => m.Age >= 15).Where(m => m.Sex == 2).Select(p => p.PatientId).ToArray());
//fill
_Progress.Cells[50, 3].Value = index4[0]; _Progress.Cells[50, 4].Value = index4[1]; _Progress.Cells[50, 5].Value = index4[2];
_Progress.Cells[50, 7].Value = index4[3]; _Progress.Cells[50, 8].Value = index4[4]; _Progress.Cells[50, 9].Value = index4[5];
_Tracking.Cells[50, 3].Value = indexs4[0]; _Tracking.Cells[50, 4].Value = indexs4[1]; _Tracking.Cells[50, 5].Value = indexs4[2];
_Tracking.Cells[50, 7].Value = indexs4[3]; _Tracking.Cells[50, 8].Value = indexs4[4]; _Tracking.Cells[50, 9].Value = indexs4[5];
#endregion
#region index5
//Chuyển đi trong kỳ báo cáo
int[] index5 = { 0, 0, 0, 0, 0, 0 };
string[] indexs5 = { "", "", "", "", "", "" };
var referrals = meta.TblReferralsTo.Where(p => p.EndDate >= thisBeginDate && p.EndDate <= thisEndDate && p.TypeId == "09").ToList();
var index5Result = referrals.Join(meta.TblPatient, e => e.PatientId, p => p.PatientId, (e, p) => new { PatientId = p.PatientId, Sex = p.Sex, Age = thisEndDate.Year - p.BirthYear, DateofArv = p.DateofArv, EndDate = e.EndDate }).Where(m => m.DateofArv != null && m.EndDate >= m.DateofArv).ToList();
//Nam < 1 tuổi
index5[0] = index5Result.Where(m => m.Age < 1).Where(m => m.Sex == 1).Count();
indexs5[0] = string.Join(",", index5Result.Where(m => m.Age < 1).Where(m => m.Sex == 1).Select(p => p.PatientId).ToArray());
// Nam từ 1-14
index5[1] = index5Result.Where(m => m.Age >= 1 && m.Age < 15).Where(m => m.Sex == 1).Count();
indexs5[1] = string.Join(",", index5Result.Where(m => m.Age >= 1 && m.Age < 15).Where(m => m.Sex == 1).Select(p => p.PatientId).ToArray());
// Nam từ 15 tuổi
index5[2] = index5Result.Where(m => m.Age >= 15).Where(m => m.Sex == 1).Count();
indexs5[2] = string.Join(",", index5Result.Where(m => m.Age >= 15).Where(m => m.Sex == 1).Select(p => p.PatientId).ToArray());
//Nữ < 1 tuổi
index5[3] = index5Result.Where(m => m.Age < 1).Where(m => m.Sex == 2).Count();
indexs5[3] = string.Join(",", index5Result.Where(m => m.Age < 1).Where(m => m.Sex == 2).Select(p => p.PatientId).ToArray());
//Nữ từ 1-14
index5[4] = index5Result.Where(m => m.Age >= 1 && m.Age < 15).Where(m => m.Sex == 2).Count();
indexs5[4] = string.Join(",", index5Result.Where(m => m.Age >= 1 && m.Age < 15).Where(m => m.Sex == 2).Select(p => p.PatientId).ToArray());
//Nữ từ 15 tuổi
index5[5] = index5Result.Where(m => m.Age >= 15).Where(m => m.Sex == 2).Count();
indexs5[5] = string.Join(",", index5Result.Where(m => m.Age >= 15).Where(m => m.Sex == 2).Select(p => p.PatientId).ToArray());
//fill
_Progress.Cells[51, 3].Value = index5[0]; _Progress.Cells[51, 4].Value = index5[1]; _Progress.Cells[51, 5].Value = index5[2];
_Progress.Cells[51, 7].Value = index5[3]; _Progress.Cells[51, 8].Value = index5[4]; _Progress.Cells[51, 9].Value = index5[5];
_Tracking.Cells[51, 3].Value = indexs5[0]; _Tracking.Cells[51, 4].Value = indexs5[1]; _Tracking.Cells[51, 5].Value = indexs5[2];
_Tracking.Cells[51, 7].Value = indexs5[3]; _Tracking.Cells[51, 8].Value = indexs5[4]; _Tracking.Cells[51, 9].Value = indexs5[5];
#endregion
#region index6
//Tử vong trong kỳ báo cáo
int[] index6 = { 0, 0, 0, 0, 0, 0 };
string[] indexs6 = { "", "", "", "", "", "" };
var deaths = meta.TblReferralsTo.Where(p => p.EndDate >= thisBeginDate && p.EndDate <= thisEndDate && p.TypeId == "11").ToList();
var index6Result = deaths.Join(meta.TblPatient, e => e.PatientId, p => p.PatientId, (e, p) => new { PatientId = p.PatientId, Sex = p.Sex, Age = thisEndDate.Year - p.BirthYear, DateofArv = p.DateofArv, EndDate = e.EndDate }).Where(m => m.DateofArv != null || m.EndDate > m.DateofArv).ToList();
//Nam < 1 tuổi
index6[0] = index6Result.Where(m => m.Age < 1).Where(m => m.Sex == 1).Count();
indexs6[0] = string.Join(",", index6Result.Where(m => m.Age < 1).Where(m => m.Sex == 1).Select(p => p.PatientId).ToArray());
// Nam từ 1-14
index6[1] = index6Result.Where(m => m.Age >= 1 && m.Age < 15).Where(m => m.Sex == 1).Count();
indexs6[1] = string.Join(",", index6Result.Where(m => m.Age >= 1 && m.Age < 15).Where(m => m.Sex == 1).Select(p => p.PatientId).ToArray());
// Nam từ 15 tuổi
index6[2] = index6Result.Where(m => m.Age >= 15).Where(m => m.Sex == 1).Count();
indexs6[2] = string.Join(",", index6Result.Where(m => m.Age >= 15).Where(m => m.Sex == 1).Select(p => p.PatientId).ToArray());
//Nữ < 1 tuổi
index6[3] = index6Result.Where(m => m.Age < 1).Where(m => m.Sex == 2).Count();
indexs6[3] = string.Join(",", index6Result.Where(m => m.Age < 1).Where(m => m.Sex == 2).Select(p => p.PatientId).ToArray());
//Nữ từ 1-14
index6[4] = index6Result.Where(m => m.Age >= 1 && m.Age < 15).Where(m => m.Sex == 2).Count();
indexs6[4] = string.Join(",", index6Result.Where(m => m.Age >= 1 && m.Age < 15).Where(m => m.Sex == 2).Select(p => p.PatientId).ToArray());
//Nữ từ 15 tuổi
index6[5] = index6Result.Where(m => m.Age >= 15).Where(m => m.Sex == 2).Count();
indexs6[5] = string.Join(",", index6Result.Where(m => m.Age >= 15).Where(m => m.Sex == 2).Select(p => p.PatientId).ToArray());
//fill
_Progress.Cells[52, 3].Value = index6[0]; _Progress.Cells[52, 4].Value = index6[1]; _Progress.Cells[52, 5].Value = index6[2];
_Progress.Cells[52, 7].Value = index6[3]; _Progress.Cells[52, 8].Value = index6[4]; _Progress.Cells[52, 9].Value = index6[5];
_Tracking.Cells[52, 3].Value = indexs6[0]; _Tracking.Cells[52, 4].Value = indexs6[1]; _Tracking.Cells[52, 5].Value = indexs6[2];
_Tracking.Cells[52, 7].Value = indexs6[3]; _Tracking.Cells[52, 8].Value = indexs6[4]; _Tracking.Cells[52, 9].Value = indexs6[5];
#endregion
#region index7
//Bỏ trị trong kỳ báo cáo
int[] index7 = { 0, 0, 0, 0, 0, 0 };
string[] indexs7 = { "", "", "", "", "", "" };
var lossfollows = meta.TblReferralsTo.Where(p => p.EndDate >= thisBeginDate && p.EndDate <= thisEndDate && p.TypeId == "10").ToList();
var index7Result = lossfollows.Join(meta.TblPatient, e => e.PatientId, p => p.PatientId, (e, p) => new { PatientId = p.PatientId, Sex = p.Sex, Age = thisEndDate.Year - p.BirthYear, DateofArv = p.DateofArv, EndDate = e.EndDate }).Where(m => m.DateofArv != null || m.EndDate > m.DateofArv).ToList();
//Nam < 1 tuổi
index7[0] = index7Result.Where(m => m.Age < 1).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ừ 1-14
index7[1] = index7Result.Where(m => m.Age >= 1 && m.Age < 15).Where(m => m.Sex == 1).Count();
indexs7[1] = string.Join(",", index7Result.Where(m => m.Age >= 1 && m.Age < 15).Where(m => m.Sex == 1).Select(p => p.PatientId).ToArray());
// Nam từ 15 tuổi
index7[2] = index7Result.Where(m => m.Age >= 15).Where(m => m.Sex == 1).Count();
indexs7[2] = string.Join(",", index7Result.Where(m => m.Age >= 15).Where(m => m.Sex == 1).Select(p => p.PatientId).ToArray());
//Nữ < 1 tuổi
index7[3] = index7Result.Where(m => m.Age < 1).Where(m => m.Sex == 2).Count();
indexs7[3] = string.Join(",", index7Result.Where(m => m.Age < 1).Where(m => m.Sex == 2).Select(p => p.PatientId).ToArray());
//Nữ từ 1-14
index7[4] = index7Result.Where(m => m.Age >= 1 && m.Age < 15).Where(m => m.Sex == 2).Count();
indexs7[4] = string.Join(",", index7Result.Where(m => m.Age >= 1 && m.Age < 15).Where(m => m.Sex == 2).Select(p => p.PatientId).ToArray());
//Nữ từ 15 tuổi
index7[5] = index7Result.Where(m => m.Age >= 15).Where(m => m.Sex == 2).Count();
indexs7[5] = string.Join(",", index7Result.Where(m => m.Age >= 15).Where(m => m.Sex == 2).Select(p => p.PatientId).ToArray());
//fill
_Progress.Cells[53, 3].Value = index7[0]; _Progress.Cells[53, 4].Value = index7[1]; _Progress.Cells[53, 5].Value = index7[2];
_Progress.Cells[53, 7].Value = index7[3]; _Progress.Cells[53, 8].Value = index7[4]; _Progress.Cells[53, 9].Value = index7[5];
_Tracking.Cells[53, 3].Value = indexs7[0]; _Tracking.Cells[53, 4].Value = indexs7[1]; _Tracking.Cells[53, 5].Value = indexs7[2];
_Tracking.Cells[53, 7].Value = indexs7[3]; _Tracking.Cells[53, 8].Value = indexs7[4]; _Tracking.Cells[53, 9].Value = indexs7[5];
#endregion
#region index8
//Không khám trong kỳ báo cáo - lưu ý đến ngày hẹn tái khám
int[] index8 = { 0, 0, 0, 0, 0, 0 };
string[] indexs8 = { "", "", "", "", "", "" };
var ReExams = meta.TblExaminationInfo.Where(p => p.ReExamDate >= thisBeginDate && p.ReExamDate <= thisEndDate).GroupBy(m => m.PatientId).Select(g => new { PatientId = g.Key, c1 = g.Count() }).ToList();
var Exams = meta.TblExaminationInfo.Where(p => p.ExamDate >= thisBeginDate && p.ExamDate <= thisEndDate).GroupBy(m => m.PatientId).Select(g => new { PatientId = g.Key, c2 = g.Count() }).ToList();
List<string> skips = (from p in ReExams join q in Exams on p.PatientId equals q.PatientId into g from q in g.DefaultIfEmpty() select new { PatientId = p.PatientId, p.c1, c2 = q == null ? 0 : q.c2 }).ToList().Where(m => m.c1 > m.c2).Select(m => m.PatientId).ToList();
List<string> Ends = meta.TblReferralsTo.Where(p => p.EndDate <= thisBeginDate).Select(p => p.PatientId).ToList();
var index8Result = meta.TblPatient.Where(p => p.DateofRegistration <= thisBeginDate && p.DateofArv != null && p.DateofArv < thisBeginDate).Where(p => skips.Contains(p.PatientId)).Where(p => !Ends.Contains(p.PatientId)).Select(p => new { PatientId = p.PatientId, Sex = p.Sex, Age = thisEndDate.Year - p.BirthYear }).ToList();
//Nam < 1 tuổi
index8[0] = index8Result.Where(m => m.Age < 1).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ừ 1-14
index8[1] = index8Result.Where(m => m.Age >= 1 && m.Age < 15).Where(m => m.Sex == 1).Count();
indexs8[1] = string.Join(",", index8Result.Where(m => m.Age >= 1 && m.Age < 15).Where(m => m.Sex == 1).Select(p => p.PatientId).ToArray());
// Nam từ 15 tuổi
index8[2] = index8Result.Where(m => m.Age >= 15).Where(m => m.Sex == 1).Count();
indexs8[2] = string.Join(",", index8Result.Where(m => m.Age >= 15).Where(m => m.Sex == 1).Select(p => p.PatientId).ToArray());
//Nữ < 1 tuổi
index8[3] = index8Result.Where(m => m.Age < 1).Where(m => m.Sex == 2).Count();
indexs8[3] = string.Join(",", index8Result.Where(m => m.Age < 1).Where(m => m.Sex == 2).Select(p => p.PatientId).ToArray());
//Nữ từ 1-14
index8[4] = index8Result.Where(m => m.Age >= 1 && m.Age < 15).Where(m => m.Sex == 2).Count();
indexs8[4] = string.Join(",", index8Result.Where(m => m.Age >= 1 && m.Age < 15).Where(m => m.Sex == 2).Select(p => p.PatientId).ToArray());
//Nữ từ 15 tuổi
index8[5] = index8Result.Where(m => m.Age >= 15).Where(m => m.Sex == 2).Count();
indexs8[5] = string.Join(",", index8Result.Where(m => m.Age >= 15).Where(m => m.Sex == 2).Select(p => p.PatientId).ToArray());
//fill
_Progress.Cells[54, 3].Value = index8[0]; _Progress.Cells[54, 4].Value = index8[1]; _Progress.Cells[54, 5].Value = index8[2];
_Progress.Cells[54, 7].Value = index8[3]; _Progress.Cells[54, 8].Value = index8[4]; _Progress.Cells[54, 9].Value = index8[5];
_Tracking.Cells[54, 3].Value = indexs8[0]; _Tracking.Cells[54, 4].Value = indexs8[1]; _Tracking.Cells[54, 5].Value = indexs8[2];
_Tracking.Cells[54, 7].Value = indexs8[3]; _Tracking.Cells[54, 8].Value = indexs8[4]; _Tracking.Cells[54, 9].Value = indexs8[5];
#endregion
}
}
}