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