Code |
DateTime date_to1 = date_to.AddHours(23.99);
var q_uvu = db.d_events
.AsNoTracking()
.Where(x => x.event_type.ToLower() == "app_verify" && x.date_apt_exe == null)
.Select(s => new { s.id_person, idApt = (string.IsNullOrEmpty(s.id_event) ? "" : "!") }).Distinct();
//Calcolo l'ultimo inizio di terapia TPI per ciascun paziente prima della data di valutazione
//(w.DataInizio.Value.Year <= date_to. & f.MaxDiData.Value.Month <= date_to & f.MaxDiData.Value.Day <= date_to)
var qLastSStart = db.d_status
.AsNoTracking()
.Where(w => w.date_started < date_to1 && w.date_started > date_from && w.domain == "TBC_PRE_TPI" && w.status == "YES")
.GroupBy(g => g.id_person)
.Select(s => new
{
idAnagrafica = s.Key,
LastSStart = s.Max(m => m.date_started)
});
//Pazienti in trattamento TPI alla fine del periodo
var qry = (from a in db.d_person
from b in qLastSStart.Where(w => a.id_person == w.idAnagrafica)
from c in q_uvu.Where(w => a.id_person == w.id_person).DefaultIfEmpty()
where
b.LastSStart != null
&& (a.date_stopped == null || a.date_stopped > date_to1)
select new
{
a.id_person,
c.idApt,
a.id_dream,
a.pe_surname,
a.pe_name,
a.pe_sex,
Data_Nascita = (a != null) ? a.pe_dob : (DateTime?)null,
AssistanceStartDate = (a != null) ? a.date_assistance_start : (DateTime?)null,
b.LastSStart,
a.pe_note
}).AsEnumerable();
dt = qry.ToDataTable();
dt.TableName = "lst_data";
|