jeniferfleurant icon

1st pcr test disags

jeniferfleurant | PRO | 11/30/17 07:13:48 PM UTC | 0 ⭐ | 283 👁️ | Never ⏰ | []
MySQL |

2.15 KB

|

None

|

0 👍

/

0 👎

USE caris_db;
SET @start_date= "2016-10-01";
SET @end_date="2017-09-30";
 
select count(a.id_patient) as nbr_test, 
sum(if(timestampdiff(month,a.dob,date_blood_taken)<2,1,0)) as '<2',
sum(if(timestampdiff(month,a.dob,date_blood_taken)between 2 and 12,1,0)) as bt_2_12,
sum(if(timestampdiff(month,a.dob,date_blood_taken)>12,1,0)) as '>12',
count(b.id_patient) as nbr_on_arv,
sum(if(b.id_patient is not null,if(timestampdiff(month,a.dob,date_blood_taken)<2,1,0),0)) as on_arv_2, 
 sum(if(b.id_patient is not null,if(timestampdiff(month,a.dob,date_blood_taken)between 2 and 12,1,0),0)) as on_arv_2_12
 , sum(if(b.id_patient is not null,if(timestampdiff(month,a.dob,date_blood_taken)>12,1,0),0)) as on_arv_12,
 sum(b.id_patient is null) as total_no_arv,
 sum(if(timestampdiff(month,a.dob,date_blood_taken)<2, if(b.id_patient is null,1,0),0)) as no_arv_2, 
 sum(if(timestampdiff(month,a.dob,date_blood_taken)between 2 and 12,if(b.id_patient is null,1,0),0)) as no_arv_2_12
 , sum(if(timestampdiff(month,a.dob,date_blood_taken)>12,if(b.id_patient is null,1,0),0)) as no_arv_12,
 sum(tracking_infant.is_dead=1) as total_no_arv_dead
 ,sum(if(timestampdiff(month,a.dob,date_blood_taken)<2 and tracking_infant.is_dead=1,1,0)) as no_arv_2_dead,
 sum(if(timestampdiff(month,a.dob,date_blood_taken)between 2 and 12 and tracking_infant.is_dead=1,1,0)) as no_arv_2_12_dead,
 sum(if(timestampdiff(month,a.dob,date_blood_taken)>12 and tracking_infant.is_dead=1,1,0)) as no_arv_12_dead,
 sum(tracking_infant.is_dead=1 and tracking_infant.death_date<a.pcr_result_date) as total_no_arv_dead_before_result
 from (select id_patient, date_of_birth as dob, pcr_result_date, date_blood_taken from testing_specimen t1 
where date_blood_taken between @start_date and @end_date and date_blood_taken = 
(select min(date_blood_taken) from testing_specimen t2 where t1.id_patient=t2.id_patient)
and pcr_result = 1
group by id_patient)a
left join 
(select * from 
( select id_patient 
from tracking_followup where on_arv=1
union
select id_patient 
from tracking_regime
)x group by id_patient
)b on a.id_patient = b.id_patient
left join tracking_infant
on b.id_patient=tracking_infant.id_patient

Comments