jeniferfleurant

OVC_Nut detailed

Jul 12th, 2019
403
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
MySQL 5.51 KB | None | 0 0
  1. USE caris_db;
  2. SET  @start_date = '2018-10-01';
  3. SET @end_date = '2019-06-30';
  4. SELECT
  5.     z.patient_code,
  6.     caseId,
  7.     x.*,
  8.     odk.date_of_visit AS odk_date_of_visit,
  9.     odk.type_of_visit AS odk_type_of_visit,
  10.     odk.weight_kg AS odk_weight_kg,
  11.     odk.Height AS odk_Height,
  12.     odk.muac AS odk_muac,
  13.     last_muac AS odk_last_muac,
  14.     last_weight AS odk_last_weight,
  15.     f.date AS hiv_date_of_visit,
  16.     f.mid_arm_circumference AS hiv_muac,
  17.     f.weight AS hiv_weight,
  18.     f.Height AS hiv_Height,
  19.     hiv_last_muac,
  20.     hiv_last_muac_date
  21. FROM
  22.     (SELECT
  23.         dob,
  24.             COALESCE(followup.id_patient, club.id_patient, specimen.id_patient, arv.id_patient, odk.id_patient) AS id_patient,
  25.             IF(followup.id_patient IS NOT NULL, 'yes', 'no') AS followup,
  26.             IF(club.id_patient IS NOT NULL, 'yes', 'no') AS club,
  27.             IF(specimen.id_patient IS NOT NULL, 'yes', 'no') AS specimen,
  28.             IF(arv.id_patient IS NOT NULL, 'yes', 'no') AS arv,
  29.             IF(odk.id_patient IS NOT NULL, 'yes', 'no') AS odk
  30.     FROM
  31.         tracking_infant
  32.     LEFT JOIN (SELECT DISTINCT
  33.         tracking_followup.id_patient
  34.     FROM
  35.         tracking_followup
  36.     LEFT JOIN tracking_infant ON tracking_infant.id_patient = tracking_followup.id_patient
  37.     WHERE
  38.         TIMESTAMPDIFF(MONTH, dob, date) < 60
  39.             AND TIMESTAMPDIFF(MONTH, dob, date) > 5
  40.             AND date BETWEEN @start_date AND @end_date) followup ON tracking_infant.id_patient = followup.id_patient
  41.     LEFT JOIN (SELECT DISTINCT
  42.         session.id_patient
  43.     FROM
  44.         session
  45.     LEFT JOIN tracking_infant ON tracking_infant.id_patient = session.id_patient
  46.     LEFT JOIN club_session ON club_session.id = session.id_club_session
  47.     WHERE
  48.         TIMESTAMPDIFF(MONTH, dob, date) < 60
  49.             AND TIMESTAMPDIFF(MONTH, dob, date) > 5
  50.             AND date BETWEEN @start_date AND @end_date
  51.             AND is_present = 1) club ON club.id_patient = followup.id_patient
  52.     LEFT JOIN (SELECT DISTINCT
  53.         testing_specimen.id_patient
  54.     FROM
  55.         testing_specimen
  56.     LEFT JOIN tracking_infant ON tracking_infant.id_patient = testing_specimen.id_patient
  57.     WHERE
  58.         TIMESTAMPDIFF(MONTH, dob, date_blood_taken) < 60
  59.             AND TIMESTAMPDIFF(MONTH, dob, date_blood_taken) > 5
  60.             AND date_blood_taken BETWEEN @start_date AND @end_date) specimen ON specimen.id_patient = tracking_infant.id_patient
  61.     LEFT JOIN (SELECT DISTINCT
  62.         tracking_regime.id_patient
  63.     FROM
  64.         tracking_regime
  65.     LEFT JOIN tracking_infant ON tracking_infant.id_patient = tracking_regime.id_patient
  66.     WHERE
  67.         TIMESTAMPDIFF(MONTH, dob, start_date) < 60
  68.             AND TIMESTAMPDIFF(MONTH, dob, start_date) > 5
  69.             AND start_date BETWEEN @start_date AND @end_date) arv ON arv.id_patient = tracking_infant.id_patient
  70.     LEFT JOIN (SELECT DISTINCT
  71.         patient.id AS id_patient
  72.     FROM
  73.         openfn.odk_child_visit
  74.     LEFT JOIN patient ON patient.patient_code = odk_child_visit.patient_code
  75.     LEFT JOIN tracking_infant ON tracking_infant.id_patient = patient.id
  76.     WHERE
  77.         TIMESTAMPDIFF(MONTH, dob, date_of_visit) < 60
  78.             AND TIMESTAMPDIFF(MONTH, dob, date_of_visit) > 5
  79.             AND date_of_visit BETWEEN @start_date AND @end_date) odk ON odk.id_patient = tracking_infant.id_patient) x
  80.         LEFT JOIN
  81.     (SELECT DISTINCT
  82.         date_of_visit,
  83.             type_of_visit,
  84.             weight_kg,
  85.             Height,
  86.             muac,
  87.             last_muac,
  88.             last_weight,
  89.             caseId,
  90.             gender,
  91.             patient.id AS id_patient
  92.     FROM
  93.         openfn.odk_child_visit
  94.     LEFT JOIN patient ON patient.patient_code = odk_child_visit.patient_code
  95.     LEFT JOIN tracking_infant ON tracking_infant.id_patient = patient.id
  96.     WHERE
  97.         TIMESTAMPDIFF(MONTH, dob, date_of_visit) < 60
  98.             AND TIMESTAMPDIFF(MONTH, dob, date_of_visit) > 5
  99.             AND date_of_visit BETWEEN @start_date AND @end_date) odk ON odk.id_patient = x.id_patient
  100.         LEFT JOIN
  101.     (SELECT DISTINCT
  102.         tracking_followup.id_patient,
  103.             date,
  104.             mid_arm_circumference,
  105.             weight,
  106.             Height
  107.     FROM
  108.         tracking_followup
  109.     LEFT JOIN tracking_infant ON tracking_infant.id_patient = tracking_followup.id_patient
  110.     WHERE
  111.         TIMESTAMPDIFF(MONTH, dob, date) < 60
  112.             AND TIMESTAMPDIFF(MONTH, dob, date) > 5
  113.             AND date BETWEEN @start_date AND @end_date) f ON f.id_patient = x.id_patient
  114.         LEFT JOIN
  115.     (SELECT
  116.         patient_code, id, linked_to_id_patient
  117.     FROM
  118.         patient) z ON z.id = x.id_patient
  119.         LEFT JOIN
  120.     (SELECT
  121.         f1.id_patient,
  122.             mid_arm_circumference AS hiv_last_muac,
  123.             date AS hiv_last_muac_date
  124.     FROM
  125.         tracking_followup f1
  126.     LEFT JOIN tracking_infant ON tracking_infant.id_patient = f1.id_patient
  127.     WHERE
  128.         date = (SELECT
  129.                 MAX(date)
  130.             FROM
  131.                 tracking_followup f2
  132.             WHERE
  133.                 TIMESTAMPDIFF(MONTH, dob, date) < 60
  134.                     AND TIMESTAMPDIFF(MONTH, dob, date) > 5
  135.                     AND date BETWEEN @start_date AND @end_date
  136.                     AND f1.id_patient = f2.id_patient
  137.                     AND mid_arm_circumference IS NOT NULL
  138.                     AND mid_arm_circumference != 0)) last_muac ON last_muac.id_patient = x.id_patient
  139. WHERE
  140.     x.id_patient IS NOT NULL
  141.         AND linked_to_id_patient = 0
Advertisement
Add Comment
Please, Sign In to add comment