code View

id 20
Title EVI-CS20 / Last prescription VL older than 12 months
Type evidenza
Highlight group filequery1003.cs, Evidenze
Description Last prescription VL older than 12 months
Code
         DateTime nowminus365 = DateTime.Now.AddDays(-365);

        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();

        //find last CViral prescription
        var qryPreOld = from eatt in db.d_events_att.Where(w => w.domain == "A_EXAMS_PRESC")
                        where
                            //eatt.vb13 == true
                            (!string.IsNullOrEmpty(eatt.vt7) && eatt.vt7.Substring(12, 1) == "1")
                        group eatt by new { eatt.id_person, eatt.date_event } into g
                        select new
                        {
                            g.Key.id_person,
                            MaxDiData = g.Max(p => p.date_event)
                        };

        //find last CViral prescription
        var qryPre = db.d_events_att.AsNoTracking().Where(w => w.domain == "A_EXAMS_PRESC" && (!string.IsNullOrEmpty(w.vt7) && w.vt7.Substring(12, 1) == "1") && w.date_event.HasValue)
                     .Select(s => new
                     {
                         s.id_person,
                         s.date_event
                     }).ToList()
                        .GroupBy(g => new { g.id_person })
                        .Select(s => new
                        {
                            dati = s.MaxBy(w => w.date_event)
                        })
                        .Select(s => new
                        {
                            id_person = s.dati.id_person,
                            MaxdiData = s.dati.date_event
                        }).AsQueryable().ToList();

        var qry = (from p in db.d_person
                   from q in q_uvu.Where(w => p.id_person == w.id_person).DefaultIfEmpty()
                   where
                        p.date_stopped == null
                   select new
                   {
                       p.id_person,
                       p.id_dream,
                       p.pe_surname,
                       p.pe_name,
                       p.pe_sex,
                       p.pe_dob,
                       q.idApt,
                       p.pe_note
                   }).AsEnumerable().Select(s => new
                   {
                       s.id_person,
                       s.idApt,
                       s.id_dream,
                       s.pe_surname,
                       s.pe_name,
                       s.pe_sex,
                       dob = (s.pe_dob.HasValue) ? s.pe_dob.Value.ToShortDateString() : "",
                       s.pe_note
                   }).Distinct().ToList();

        var qry2 = (from p in qry
                   from c in qryPre.Where(w => p.id_person == w.id_person)
                   where
                     c.MaxdiData < nowminus365
                   select new
                   {
                       p.id_person,
                       p.idApt,
                       p.id_dream,
                       p.pe_surname,
                       p.pe_name,
                       p.pe_sex,
                       p.dob,
                       c.MaxdiData,
                       p.pe_note
                   }).Distinct().ToList(); ;

        dt = qry2.ToDataTable();
        dt.TableName = "lst_data";

 

Ordine