jeniferfleurant icon

OVC_SERV Mother/PTME 1quarter

jeniferfleurant | PRO | 07/25/19 10:48:54 PM UTC | 0 ⭐ | 249 👁️ | Never ⏰ | []
MySQL |

3.7 KB

|

None

|

0 👍

/

0 👎

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