jeniferfleurant icon

OVC_SERV children (newly added)

jeniferfleurant | PRO | 03/27/19 02:18:34 AM UTC | 0 ⭐ | 369 👁️ | Never ⏰ | []
MySQL |

24.76 KB

|

None

|

0 👍

/

0 👎

USE caris_db;
SET
  @start_date = "2019-01-01";
SET
  @end_date = "2019-03-31";
SELECT 
    patient_code,
    COALESCE(ti.dob, tm.infant_dob, ts.date_of_birth) AS dob,
    IF(TIMESTAMPDIFF(YEAR,
            COALESCE(IF(tm.infant_dob = '0000-00-00',
                        NULL,
                        tm.infant_dob),
                    IF(ts.date_of_birth = '0000-00-00',
                        NULL,
                        ts.date_of_birth),
                    ti.dob),
            @start_date) < 1
            AND COALESCE(IF(tm.infant_dob = '0000-00-00',
                    NULL,
                    tm.infant_dob),
                IF(ts.date_of_birth = '0000-00-00',
                    NULL,
                    ts.date_of_birth),
                ti.dob) != '0000-00-00',
        'under1',
        IF(TIMESTAMPDIFF(YEAR,
                COALESCE(IF(tm.infant_dob = '0000-00-00',
                            NULL,
                            tm.infant_dob),
                        IF(ts.date_of_birth = '0000-00-00',
                            NULL,
                            ts.date_of_birth),
                        ti.dob),
                @start_date) >= 1
                AND TIMESTAMPDIFF(YEAR,
                COALESCE(IF(tm.infant_dob = '0000-00-00',
                            NULL,
                            tm.infant_dob),
                        IF(ts.date_of_birth = '0000-00-00',
                            NULL,
                            ts.date_of_birth),
                        ti.dob),
                @start_date) < 10
                AND COALESCE(IF(tm.infant_dob = '0000-00-00',
                        NULL,
                        tm.infant_dob),
                    IF(ts.date_of_birth = '0000-00-00',
                        NULL,
                        ts.date_of_birth),
                    ti.dob) != '0000-00-00',
            'bt_1_9',
            IF(TIMESTAMPDIFF(YEAR,
                    COALESCE(IF(tm.infant_dob = '0000-00-00',
                                NULL,
                                tm.infant_dob),
                            IF(ts.date_of_birth = '0000-00-00',
                                NULL,
                                ts.date_of_birth),
                            ti.dob),
                    @start_date) < 1
                    AND COALESCE(IF(tm.infant_dob = '0000-00-00',
                            NULL,
                            tm.infant_dob),
                        IF(ts.date_of_birth = '0000-00-00',
                            NULL,
                            ts.date_of_birth),
                        ti.dob) != '0000-00-00'
                    AND (ti.gender = 1 OR tm.infant_gender = 1),
                'm_under1',
                IF(TIMESTAMPDIFF(YEAR,
                        COALESCE(IF(tm.infant_dob = '0000-00-00',
                                    NULL,
                                    tm.infant_dob),
                                IF(ts.date_of_birth = '0000-00-00',
                                    NULL,
                                    ts.date_of_birth),
                                ti.dob),
                        @start_date) < 1
                        AND COALESCE(IF(tm.infant_dob = '0000-00-00',
                                NULL,
                                tm.infant_dob),
                            IF(ts.date_of_birth = '0000-00-00',
                                NULL,
                                ts.date_of_birth),
                            ti.dob) != '0000-00-00'
                        AND (ti.gender = 2 OR tm.infant_gender = 2),
                    'f_under1',
                    IF(TIMESTAMPDIFF(YEAR,
                            COALESCE(IF(tm.infant_dob = '0000-00-00',
                                        NULL,
                                        tm.infant_dob),
                                    IF(ts.date_of_birth = '0000-00-00',
                                        NULL,
                                        ts.date_of_birth),
                                    ti.dob),
                            @start_date) >= 1
                            AND TIMESTAMPDIFF(YEAR,
                            COALESCE(IF(tm.infant_dob = '0000-00-00',
                                        NULL,
                                        tm.infant_dob),
                                    IF(ts.date_of_birth = '0000-00-00',
                                        NULL,
                                        ts.date_of_birth),
                                    ti.dob),
                            @start_date) < 10
                            AND COALESCE(IF(tm.infant_dob = '0000-00-00',
                                    NULL,
                                    tm.infant_dob),
                                IF(ts.date_of_birth = '0000-00-00',
                                    NULL,
                                    ts.date_of_birth),
                                ti.dob) != '0000-00-00'
                            AND (ti.gender = 1 OR tm.infant_gender = 1),
                        'm_bt_1_9',
                        IF(TIMESTAMPDIFF(YEAR,
                                COALESCE(IF(tm.infant_dob = '0000-00-00',
                                            NULL,
                                            tm.infant_dob),
                                        IF(ts.date_of_birth = '0000-00-00',
                                            NULL,
                                            ts.date_of_birth),
                                        ti.dob),
                                @start_date) >= 1
                                AND TIMESTAMPDIFF(YEAR,
                                COALESCE(IF(tm.infant_dob = '0000-00-00',
                                            NULL,
                                            tm.infant_dob),
                                        IF(ts.date_of_birth = '0000-00-00',
                                            NULL,
                                            ts.date_of_birth),
                                        ti.dob),
                                @start_date) < 10
                                AND COALESCE(IF(tm.infant_dob = '0000-00-00',
                                        NULL,
                                        tm.infant_dob),
                                    IF(ts.date_of_birth = '0000-00-00',
                                        NULL,
                                        ts.date_of_birth),
                                    ti.dob) != '0000-00-00'
                                AND (ti.gender = 2 OR tm.infant_gender = 2),
                            'f_bt_1_9',
                            IF(TIMESTAMPDIFF(YEAR,
                                    COALESCE(IF(tm.infant_dob = '0000-00-00',
                                                NULL,
                                                tm.infant_dob),
                                            IF(ts.date_of_birth = '0000-00-00',
                                                NULL,
                                                ts.date_of_birth),
                                            ti.dob),
                                    @start_date) >= 10
                                    AND TIMESTAMPDIFF(YEAR,
                                    COALESCE(IF(tm.infant_dob = '0000-00-00',
                                                NULL,
                                                tm.infant_dob),
                                            IF(ts.date_of_birth = '0000-00-00',
                                                NULL,
                                                ts.date_of_birth),
                                            ti.dob),
                                    @start_date) < 15
                                    AND COALESCE(IF(tm.infant_dob = '0000-00-00',
                                            NULL,
                                            tm.infant_dob),
                                        IF(ts.date_of_birth = '0000-00-00',
                                            NULL,
                                            ts.date_of_birth),
                                        ti.dob) != '0000-00-00'
                                    AND (ti.gender = 1 OR tm.infant_gender = 1),
                                'm_bt_10_14',
                                IF(TIMESTAMPDIFF(YEAR,
                                        COALESCE(IF(tm.infant_dob = '0000-00-00',
                                                    NULL,
                                                    tm.infant_dob),
                                                IF(ts.date_of_birth = '0000-00-00',
                                                    NULL,
                                                    ts.date_of_birth),
                                                ti.dob),
                                        @start_date) >= 10
                                        AND TIMESTAMPDIFF(YEAR,
                                        COALESCE(IF(tm.infant_dob = '0000-00-00',
                                                    NULL,
                                                    tm.infant_dob),
                                                IF(ts.date_of_birth = '0000-00-00',
                                                    NULL,
                                                    ts.date_of_birth),
                                                ti.dob),
                                        @start_date) < 15
                                        AND COALESCE(IF(tm.infant_dob = '0000-00-00',
                                                NULL,
                                                tm.infant_dob),
                                            IF(ts.date_of_birth = '0000-00-00',
                                                NULL,
                                                ts.date_of_birth),
                                            ti.dob) != '0000-00-00'
                                        AND (ti.gender = 2 OR tm.infant_gender = 2),
                                    'f_bt_10_14',
                                    IF(TIMESTAMPDIFF(YEAR,
                                            COALESCE(IF(tm.infant_dob = '0000-00-00',
                                                        NULL,
                                                        tm.infant_dob),
                                                    IF(ts.date_of_birth = '0000-00-00',
                                                        NULL,
                                                        ts.date_of_birth),
                                                    ti.dob),
                                            @start_date) >= 15
                                            AND TIMESTAMPDIFF(YEAR,
                                            COALESCE(IF(tm.infant_dob = '0000-00-00',
                                                        NULL,
                                                        tm.infant_dob),
                                                    IF(ts.date_of_birth = '0000-00-00',
                                                        NULL,
                                                        ts.date_of_birth),
                                                    ti.dob),
                                            @start_date) < 18
                                            AND COALESCE(IF(tm.infant_dob = '0000-00-00',
                                                    NULL,
                                                    tm.infant_dob),
                                                IF(ts.date_of_birth = '0000-00-00',
                                                    NULL,
                                                    ts.date_of_birth),
                                                ti.dob) != '0000-00-00'
                                            AND (ti.gender = 1 OR tm.infant_gender = 1),
                                        'm_bt_15_17',
                                        IF(TIMESTAMPDIFF(YEAR,
                                                COALESCE(IF(tm.infant_dob = '0000-00-00',
                                                            NULL,
                                                            tm.infant_dob),
                                                        IF(ts.date_of_birth = '0000-00-00',
                                                            NULL,
                                                            ts.date_of_birth),
                                                        ti.dob),
                                                @start_date) >= 15
                                                AND TIMESTAMPDIFF(YEAR,
                                                COALESCE(IF(tm.infant_dob = '0000-00-00',
                                                            NULL,
                                                            tm.infant_dob),
                                                        IF(ts.date_of_birth = '0000-00-00',
                                                            NULL,
                                                            ts.date_of_birth),
                                                        ti.dob),
                                                @start_date) < 18
                                                AND COALESCE(IF(tm.infant_dob = '0000-00-00',
                                                        NULL,
                                                        tm.infant_dob),
                                                    IF(ts.date_of_birth = '0000-00-00',
                                                        NULL,
                                                        ts.date_of_birth),
                                                    ti.dob) != '0000-00-00'
                                                AND (ti.gender = 2 OR tm.infant_gender = 2),
                                            'f_bt_15_17',
                                            IF(TIMESTAMPDIFF(YEAR,
                                                    COALESCE(IF(tm.infant_dob = '0000-00-00',
                                                                NULL,
                                                                tm.infant_dob),
                                                            IF(ts.date_of_birth = '0000-00-00',
                                                                NULL,
                                                                ts.date_of_birth),
                                                            ti.dob),
                                                    @start_date) >= 18
                                                    AND TIMESTAMPDIFF(YEAR,
                                                    COALESCE(IF(tm.infant_dob = '0000-00-00',
                                                                NULL,
                                                                tm.infant_dob),
                                                            IF(ts.date_of_birth = '0000-00-00',
                                                                NULL,
                                                                ts.date_of_birth),
                                                            ti.dob),
                                                    @start_date) < 25
                                                    AND COALESCE(IF(tm.infant_dob = '0000-00-00',
                                                            NULL,
                                                            tm.infant_dob),
                                                        IF(ts.date_of_birth = '0000-00-00',
                                                            NULL,
                                                            ts.date_of_birth),
                                                        ti.dob) != '0000-00-00'
                                                    AND (ti.gender = 1 OR tm.infant_gender = 1),
                                                'm_bt_18_24',
                                                IF(TIMESTAMPDIFF(YEAR,
                                                        COALESCE(IF(tm.infant_dob = '0000-00-00',
                                                                    NULL,
                                                                    tm.infant_dob),
                                                                IF(ts.date_of_birth = '0000-00-00',
                                                                    NULL,
                                                                    ts.date_of_birth),
                                                                ti.dob),
                                                        @start_date) >= 18
                                                        AND TIMESTAMPDIFF(YEAR,
                                                        COALESCE(IF(tm.infant_dob = '0000-00-00',
                                                                    NULL,
                                                                    tm.infant_dob),
                                                                IF(ts.date_of_birth = '0000-00-00',
                                                                    NULL,
                                                                    ts.date_of_birth),
                                                                ti.dob),
                                                        @start_date) < 25
                                                        AND COALESCE(IF(tm.infant_dob = '0000-00-00',
                                                                NULL,
                                                                tm.infant_dob),
                                                            IF(ts.date_of_birth = '0000-00-00',
                                                                NULL,
                                                                ts.date_of_birth),
                                                            ti.dob) != '0000-00-00'
                                                        AND (ti.gender = 2 OR tm.infant_gender = 2),
                                                    'f_bt_18_24',
                                                    IF(TIMESTAMPDIFF(YEAR,
                                                            COALESCE(IF(tm.infant_dob = '0000-00-00',
                                                                        NULL,
                                                                        tm.infant_dob),
                                                                    IF(ts.date_of_birth = '0000-00-00',
                                                                        NULL,
                                                                        ts.date_of_birth),
                                                                    ti.dob),
                                                            @start_date) >= 25
                                                            AND COALESCE(IF(tm.infant_dob = '0000-00-00',
                                                                    NULL,
                                                                    tm.infant_dob),
                                                                IF(ts.date_of_birth = '0000-00-00',
                                                                    NULL,
                                                                    ts.date_of_birth),
                                                                ti.dob) != '0000-00-00'
                                                            AND (ti.gender = 1 OR tm.infant_gender = 1),
                                                        'm_25',
                                                        IF(TIMESTAMPDIFF(YEAR,
                                                                COALESCE(IF(tm.infant_dob = '0000-00-00',
                                                                            NULL,
                                                                            tm.infant_dob),
                                                                        IF(ts.date_of_birth = '0000-00-00',
                                                                            NULL,
                                                                            ts.date_of_birth),
                                                                        ti.dob),
                                                                @start_date) >= 25
                                                                AND COALESCE(IF(tm.infant_dob = '0000-00-00',
                                                                        NULL,
                                                                        tm.infant_dob),
                                                                    IF(ts.date_of_birth = '0000-00-00',
                                                                        NULL,
                                                                        ts.date_of_birth),
                                                                    ti.dob) != '0000-00-00'
                                                                AND (ti.gender = 2 OR tm.infant_gender = 2),
                                                            'f_25',
                                                            '')))))))))))))) AS tranche,
    IF(regime.id_patient IS NOT NULL,
        'yes',
        'non') AS on_arv,
    office,
    IF(statut.id_patient IS NOT NULL,
        'pos',
        'neg') AS statut
FROM
    (SELECT 
        id_patient, MIN(date) AS date
    FROM
        (SELECT 
        id_patient, date
    FROM
        (SELECT 
        id_patient, date
    FROM
        questionnaire_child
    LEFT JOIN patient ON patient.id = id_patient
    WHERE
        patient.created_at >= @start_date
            AND date IS NOT NULL
            AND date != '0000-00-00') ques UNION SELECT 
        id_patient, date
    FROM
        (SELECT 
        patient.id AS id_patient, date_of_visit AS date
    FROM
        patient
    LEFT JOIN openfn.odk_child_visit od ON patient.patient_code = od.patient_code
    WHERE
        date_of_visit IS NOT NULL
            AND date_of_visit != '0000-00-00'
            AND patient.created_at >= @start_date) odk UNION SELECT 
        id_patient, date
    FROM
        (SELECT 
        id_patient, date
    FROM
        session
    LEFT JOIN club_session ON club_session.id = session.id_club_session
    LEFT JOIN club ON club.id = id_club
    LEFT JOIN patient ON patient.id = id_patient
    WHERE
        is_present = 1 AND club_type != 1
            AND patient.created_at >= @start_date) club UNION SELECT 
        id_patient, date
    FROM
        (SELECT 
        id_patient, date
    FROM
        (SELECT 
        id_patient, date
    FROM
        testing_mereenfant UNION SELECT 
        id_patient, date_blood_taken AS date
    FROM
        testing_specimen UNION SELECT 
        id_patient, blood_draw_date AS date
    FROM
        testing_result) pcr
    LEFT JOIN patient ON patient.id = pcr.id_patient
    WHERE
        patient.created_at >= @start_date) p UNION SELECT 
        id_patient, date
    FROM
        (SELECT 
        id_patient, date
    FROM
        tracking_followup
    LEFT JOIN patient ON patient.id = id_patient
    WHERE
        patient.created_at >= @start_date) o) last
    GROUP BY id_patient) lastone
        LEFT JOIN
    patient ON patient.id = lastone.id_patient
        LEFT JOIN
    tracking_infant ti ON ti.id_patient = lastone.id_patient
        LEFT JOIN
    testing_mereenfant tm ON lastone.id_patient = tm.id_patient
        LEFT JOIN
    testing_specimen ts ON ts.id_patient = lastone.id_patient
        LEFT JOIN
    lookup_hospital ON CONCAT(lookup_hospital.city_code,
            '/',
            lookup_hospital.hospital_code) = LEFT(patient_code, 8)
        LEFT JOIN
    (SELECT DISTINCT
        id_patient
    FROM
        tracking_regime
    WHERE
        category = 'regime_infant_treatment') regime ON regime.id_patient = lastone.id_patient
        LEFT JOIN
    (SELECT 
        id AS id_patient
    FROM
        view_patient_positive UNION SELECT 
        id_patient
    FROM
        tracking_regime
    WHERE
        category = 'regime_infant_treatment') statut ON statut.id_patient = lastone.id_patient
WHERE
    lastone.date BETWEEN @start_date AND @end_date
        AND patient.created_at >= @start_date
        AND lastone.id_patient IS NOT NULL
        AND linked_to_id_patient = 0
GROUP BY lastone.id_patient

Comments