code View

id 39
Title EVI-CS02
Type evidenza
Highlight group filequery1002.cs, Trattamenti
Description Pazienti in Cotrimoxazolo alla fine del periodo sotto i 5 anni
Code
        DateTime date5 = date_to.AddDays(-1825); //  5 years old before date_to


        //Trovo i pazienti con verifiche urgenti
        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();


        //trovo data dell'ultima misurazione CViral
        var qryEsami = db.d_events_att
                        .Where(w => w.domain == "A_EXAMS_VLOAD" && w.date_event != null && w.vt2 != null)
                        .Select(s => new
                        {
                            s.id_person,
                            s.date_event,
                            PCR = s.vt2
                        }).ToList()
                        .GroupBy(g => new { g.id_person })
                        .Select(s => new
                        {
                            dati = s.MaxBy(w => w.date_event)
                        })
                        .Select(s => new
                        {
                            s.dati.id_person,
                            s.dati.date_event,
                            s.dati.PCR
                        }).ToList();

        var qryP = (from P in db.d_person
                        //  from qe in qryEsami.Where(w => w.id_person == P.id_person).DefaultIfEmpty()
                    from q in q_uvu.Where(w => w.id_person == P.id_person).DefaultIfEmpty()
                    where
                         (P.date_stopped == null || P.date_stopped > date_to1)
                         && P.pe_dob > date5
                    select new
                    {
                        P.id_person,
                        P.id_dream,
                        P.pe_surname,
                        P.pe_name,
                        P.pe_sex,
                        P.pe_dob,
                        P.date_started,
                        q.idApt
                        //  qe.PCR

                    }).ToList();

        var st = db.d_status
                    .AsNoTracking()
                    .Where(W => W.date_started <= date_to1 && W.domain == "TER_COT")
                    .OrderByDescending(o => o.date_started)
                    .ThenByDescending(o => o.id_status)
                        .ToList()
                        .GroupBy(g => g.id_person)
                        .Select(s => new
                        {
                            ida = s.Key,
                            status = s.MaxBy(m => m.date_started),
                        }).ToList()
                        .Select(s => new
                        {
                            s.ida,
                            CURRENT_STATUS = s.status.status,
                            ID_PERSON = s.status.id_person,
                            CURRENT_STATUS_ID = s.status.id_status,
                            DATE_STARTED = s.status.date_started
                        }).ToList();

        var qry = (from P in qryP
                   from s in st.Where(W => W.ID_PERSON == P.id_person)
                   from es in qryEsami.Where(W => W.id_person == P.id_person).DefaultIfEmpty()
                   where
                        s.CURRENT_STATUS == "YES"
                   select new
                   {
                       P.id_person,
                       P.idApt,
                       P.id_dream,
                       P.pe_surname,
                       P.pe_name,
                       P.pe_sex,
                       P.pe_dob,
                       P.date_started,
                       age = (P.pe_dob.HasValue ? (DateTime.Today.Date.Year - P.pe_dob.Value.Date.Year).ToString() : ""),
                       tercotdate = s.DATE_STARTED,
                       PCRvalue = (es != null ? es.PCR : "")
                   });


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

 

Ordine