jeniferfleurant icon

OVC_SERV children (helper)

jeniferfleurant | PRO | 04/11/19 05:33:07 PM UTC | 0 ⭐ | 359 👁️ | Never ⏰ | []
MySQL |

8.69 KB

|

None

|

0 👍

/

0 👎

USE caris_db;
SET  @start_date = '2019-07-01';
SET @end_date = '2019-09-30';
set
@start_date_last = '2019-04-01';
set
@end_date_last = '2019-06-30';
SELECT 
    patient_code,
    IF(arv.id_patient IS NOT NULL,
        'yes',
        'no') AS on_arv,
    IF(statut.id_patient IS NOT NULL,
        'pos',
        'neg') AS statut,
    IF(followup_q1 IS NOT NULL
            OR odk_q1 IS NOT NULL
            OR arv_q1 IS NOT NULL
            OR ques_q1 IS NOT NULL
            OR club_q1 IS NOT NULL
            OR mereenfant_q1 is not null
            OR specimen_q1 is not null,
        'yes',
        'no') AS q1,
    IF(followup_q1 IS NOT NULL, 'yes', 'no') AS followup_q1,
    IF(odk_q1 IS NOT NULL, 'yes', 'no') AS odk_q1,
    IF(arv_q1 IS NOT NULL, 'yes', 'no') AS arv_q1,
    IF(ques_q1 IS NOT NULL, 'yes', 'no') AS ques_q1,
    IF(club_q1 IS NOT NULL, 'yes', 'no') AS club_q1,
    if(mereenfant_q1 is not null, 'yes','no') as mereenfant_q1,
    if(specimen_q1 is not null, 'yes','no') as specimen_q1,
    IF(followup_q2 IS NOT NULL
            OR odk_q2 IS NOT NULL
            OR arv_q2 IS NOT NULL
            OR ques_q2 IS NOT NULL
            OR club_q2 IS NOT NULL
            or mereenfant_q2 is not null
            or specimen_q2 is not null,
        'yes',
        'no') AS q2,
    IF(followup_q2 IS NOT NULL, 'yes', 'no') AS followup_q2,
    IF(odk_q2 IS NOT NULL, 'yes', 'no') AS odk_q2,
    IF(arv_q2 IS NOT NULL, 'yes', 'no') AS arv_q2,
    IF(ques_q2 IS NOT NULL, 'yes', 'no') AS ques_q2,
    IF(club_q2 IS NOT NULL, 'yes', 'no') AS club_q2,
    if(mereenfant_q2 is not null, 'yes','no') as mereenfant_q2,
    if(specimen_q2 is not null, 'yes','no') as specimen_q2,
    office
FROM
    (SELECT 
        *
    FROM
        (SELECT 
        id_patient
    FROM
        tracking_followup
    WHERE
        date BETWEEN @start_date_last AND @end_date UNION (SELECT DISTINCT
        patient.id AS id_patient
    FROM
        openfn.odk_child_visit
    LEFT JOIN patient ON patient.patient_code = odk_child_visit.patient_code
    WHERE
        date_of_visit BETWEEN @start_date_last AND @end_date
            AND patient.id IS NOT NULL
            AND is_available_at_time_visit = 1
            AND linked_to_id_patient = 0) UNION SELECT 
        id_patient
    FROM
        tracking_regime
    WHERE
        (start_date BETWEEN @start_date_last AND @end_date or end_date BETWEEN @start_date_last AND @end_date)
            AND category = 'regime_infant_treatment' UNION SELECT 
        id_patient
    FROM
        questionnaire_child
    WHERE
        date BETWEEN @start_date_last AND @end_date UNION SELECT 
        id_patient
    FROM
        testing_mereenfant
    WHERE
        date BETWEEN @start_date_last AND @end_date UNION SELECT 
        id_patient
    FROM
        testing_specimen
    WHERE
        date_blood_taken BETWEEN @start_date_last AND @end_date  UNION SELECT 
        id_patient
    FROM
        questionnaire_proftraining18
    WHERE
        date BETWEEN @start_date_last AND @end_date UNION ((SELECT 
        id_patient
    FROM
        session
    LEFT JOIN club_session ON club_session.id = id_club_session
    LEFT JOIN club ON club_session.id_club = club.id
    WHERE
        is_present = 1
            AND (date BETWEEN @start_date AND @end_date
            OR date BETWEEN @start_date_last AND @end_date_last)
            AND club_type != 1))) o) bot
        LEFT JOIN
    (SELECT DISTINCT
        id_patient AS followup_q1
    FROM
        tracking_followup
    WHERE
        date BETWEEN @start_date_last AND @end_date_last) x ON followup_q1 = bot.id_patient
        left join
(select distinct id_patient as specimen_q1 from testing_specimen WHERE
        date_blood_taken BETWEEN @start_date_last AND @end_date_last) x2 ON specimen_q1 = bot.id_patient
                left join
(select distinct id_patient as specimen_q2 from testing_specimen WHERE
        date_blood_taken BETWEEN @start_date AND @end_date) x3 ON specimen_q2 = bot.id_patient
        LEFT JOIN
    (SELECT DISTINCT
        id_patient AS followup_q2
    FROM
        tracking_followup
    WHERE
        date BETWEEN @start_date AND @end_date) y ON followup_q2 = bot.id_patient
        LEFT JOIN
    patient ON patient.id = bot.id_patient
        LEFT JOIN
    (SELECT DISTINCT
        id_patient AS mereenfant_q1
    FROM
        testing_mereenfant
    WHERE
        date BETWEEN @start_date_last AND @end_date_last) me ON mereenfant_q1 = bot.id_patient
        LEFT JOIN
    (SELECT DISTINCT
        id_patient AS mereenfant_q2
    FROM
        testing_mereenfant
    WHERE
        date BETWEEN @start_date AND @end_date) me2 ON mereenfant_q2 = bot.id_patient
        LEFT JOIN
    (SELECT DISTINCT
        patient.id AS odk_q1
    FROM
        openfn.odk_child_visit
    LEFT JOIN patient ON patient.patient_code = odk_child_visit.patient_code
    WHERE
        date_of_visit BETWEEN @start_date_last AND @end_date_last
            AND patient.id IS NOT NULL
            AND is_available_at_time_visit = 1
            AND linked_to_id_patient = 0) z ON odk_q1 = bot.id_patient
        LEFT JOIN
    (SELECT DISTINCT
        patient.id AS odk_q2
    FROM
        openfn.odk_child_visit
    LEFT JOIN patient ON patient.patient_code = odk_child_visit.patient_code
    WHERE
        date_of_visit BETWEEN @start_date AND @end_date
            AND patient.id IS NOT NULL
            AND is_available_at_time_visit = 1
            AND linked_to_id_patient = 0) zz ON odk_q2 = bot.id_patient
        LEFT JOIN
    (SELECT DISTINCT
        id_patient AS arv_q2
    FROM
        tracking_regime
    WHERE
        start_date BETWEEN @start_date AND @end_date or end_date BETWEEN @start_date AND @end_date) a2 ON arv_q2 = bot.id_patient
        LEFT JOIN
    (SELECT DISTINCT
        id_patient AS arv_q1
    FROM
        tracking_regime
    WHERE
        start_date BETWEEN @start_date_last AND @end_date_last or end_date BETWEEN @start_date_last AND @end_date_last) a1 ON arv_q1 = bot.id_patient
        LEFT JOIN
    (SELECT 
        id_patient AS ques_q1
    FROM
        questionnaire_child
    WHERE
        date BETWEEN @start_date_last AND @end_date_last UNION SELECT 
        id_patient AS ques_q1
    FROM
        questionnaire_proftraining18
    WHERE
        date BETWEEN @start_date_last AND @end_date_last) q1 ON ques_q1 = bot.id_patient
        LEFT JOIN
    (SELECT 
        id_patient AS ques_q2
    FROM
        questionnaire_child
    WHERE
        date BETWEEN @start_date AND @end_date UNION SELECT 
        id_patient AS ques_q2
    FROM
        questionnaire_proftraining18
    WHERE
        date BETWEEN @start_date AND @end_date) q2 ON ques_q2 = bot.id_patient
        LEFT JOIN
    (SELECT DISTINCT
        id_patient AS club_q1
    FROM
        session
    LEFT JOIN club_session ON club_session.id = id_club_session
    LEFT JOIN club ON club_session.id_club = club.id
    WHERE
        is_present = 1
            AND date BETWEEN @start_date_last AND @end_date_last
            AND club_type != 1) c1 ON club_q1 = bot.id_patient
        LEFT JOIN
    (SELECT DISTINCT
        id_patient AS club_q2
    FROM
        session
    LEFT JOIN club_session ON club_session.id = id_club_session
    LEFT JOIN club ON club_session.id_club = club.id
    WHERE
        is_present = 1
            AND date BETWEEN @start_date AND @end_date
            AND club_type != 1) c2 ON club_q2 = bot.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') arv ON arv.id_patient = bot.id_patient
        LEFT JOIN
    (SELECT 
        id_patient
    FROM
        tracking_followup UNION SELECT 
        id_patient
    FROM
        tracking_regime
    WHERE
        category = 'regime_infant_treatment' UNION SELECT 
        id_patient
    FROM
        club_patient UNION SELECT 
        id_patient
    FROM
        questionnaire_child UNION SELECT 
        id_patient
    FROM
        questionnaire_proftraining18 UNION SELECT 
        id_patient
    FROM
        testing_specimen
    WHERE
        pcr_result = 1 UNION SELECT 
        id_patient
    FROM
        testing_result
    WHERE
        result = 1 UNION SELECT 
        id_patient
    FROM
        tracking_infant
    WHERE
        positive_pcr_1 != '0000-00-00'
            OR positive_pcr_2 != '0000-00-00') statut ON statut.id_patient = bot.id_patient
WHERE
    linked_to_id_patient = 0

Comments