Upload to server
uploading
This commit is contained in:
673
patientman/PatientMan/Classes/Actions/clsD28.cs
Normal file
673
patientman/PatientMan/Classes/Actions/clsD28.cs
Normal file
@@ -0,0 +1,673 @@
|
||||
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
|
||||
|
||||
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user