674 lines
47 KiB
C#
674 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()
|
|
{
|
|
|
|
_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<TblExaminationInfoEntity> exams = new EntityCollection<TblExaminationInfoEntity>();
|
|
EntityCollection<TblPatientEntity> Patients = new EntityCollection<TblPatientEntity>();
|
|
|
|
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<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 = 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<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 = 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<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 */
|
|
|
|
/*
|
|
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<TblPatientEntity> Patients = new EntityCollection<TblPatientEntity>();
|
|
EntityCollection<TblTreatmentInfoEntity> TreatmentInfo = new EntityCollection<TblTreatmentInfoEntity>();
|
|
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<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
|
|
|
|
|
|
}
|
|
}
|