USE caris_db;
SET @start_date="2019-04-01";
SET @end_date="2019-06-30";
SELECT
a.patient_code,
dob,
IF(TIMESTAMPDIFF(YEAR, dob, @start_date) >= 25,
'25+',
IF(TIMESTAMPDIFF(YEAR, dob, @start_date) < 25
AND TIMESTAMPDIFF(YEAR, dob, @start_date) >= 18,
'18-24',
IF(TIMESTAMPDIFF(YEAR, dob, @start_date) < 18
AND TIMESTAMPDIFF(YEAR, dob, @start_date) >= 15,
'15 17',
IF(TIMESTAMPDIFF(YEAR, dob, @start_date) < 15
AND TIMESTAMPDIFF(YEAR, dob, @start_date) >= 10,
'10 15',
IF(TIMESTAMPDIFF(YEAR, dob, @start_date) < 10
AND TIMESTAMPDIFF(YEAR, dob, @start_date) >= 1,
'1 9',
''))))) AS tranche
FROM
(SELECT DISTINCT
patient_code
FROM
(SELECT
patient_code
FROM
tracking_motherbasicinfo
LEFT JOIN patient ON patient.id = tracking_motherbasicinfo.id_patient
LEFT JOIN (SELECT DISTINCT
id_patient
FROM
tracking_regime
WHERE
category = 'regime_mother_treatment'
AND (start_date BETWEEN @start_date AND @end_date
OR end_date BETWEEN @start_date AND @end_date)) z ON z.id_patient = tracking_motherbasicinfo.id_patient
LEFT JOIN (SELECT
id_patient
FROM
questionnaire_motherhivknowledge
WHERE
date BETWEEN @start_date AND @end_date UNION SELECT
id_patient
FROM
questionnaire_newmotherhivknowledge
WHERE
date BETWEEN @start_date AND @end_date UNION SELECT
id_patient
FROM
questionnaire_mothersurvey
WHERE
date BETWEEN @start_date AND @end_date) x ON x.id_patient = tracking_motherbasicinfo.id_patient
LEFT JOIN (SELECT DISTINCT
session.id_patient
FROM
session
LEFT JOIN club_session ON club_session.id = session.id_club_session
WHERE
is_present = 1
AND club_session.date BETWEEN @start_date AND @end_date) y ON y.id_patient = tracking_motherbasicinfo.id_patient
LEFT JOIN tracking_pregnancy on tracking_pregnancy.id_patient_mother = tracking_motherbasicinfo.id_patient
LEFT JOIN (SELECT
patient.id AS id_patient
FROM
tracking_motherbasicinfo
LEFT JOIN patient ON patient.id = tracking_motherbasicinfo.id_patient
LEFT JOIN testing_mereenfant ON CONCAT(testing_mereenfant.mother_city_code, '/', testing_mereenfant.mother_hospital_code, '/', testing_mereenfant.mother_code) = patient_code
WHERE
date BETWEEN @start_date AND @end_date
AND patient_code IS NOT NULL
GROUP BY patient_code) bb ON bb.id_patient = tracking_motherbasicinfo.id_patient
WHERE
patient.id IS NOT NULL
AND (x.id_patient IS NOT NULL
OR PTME_date BETWEEN @start_date AND @end_date
OR tracking_pregnancy.actual_delivery_date BETWEEN @start_date AND @end_date
or ptme_enrollment_date BETWEEN @start_date AND @end_date
OR y.id_patient IS NOT NULL
OR z.id_patient IS NOT NULL
OR bb.id_patient IS NOT NULL)) c UNION SELECT DISTINCT
health_id AS patient_code
FROM
openfn.odk_pregnancy_visit
WHERE
date_of_visit BETWEEN @start_date AND @end_date) a
LEFT JOIN
patient ON patient.patient_code = a.patient_code
LEFT JOIN
tracking_motherbasicinfo ON tracking_motherbasicinfo.id_patient = patient.id
WHERE
patient.linked_to_id_patient IS NULL
OR patient.linked_to_id_patient = 0
GROUP BY a.patient_code
Comments