jeniferfleurant

OVC_SERV with all disagg age and gender

Oct 28th, 2015
384
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
SQL 7.11 KB | None | 0 0
  1. USE caris_db;
  2. SET @start_date= "2014-10-01";
  3. SET @end_date="2015-09-30";
  4.  
  5. SELECT lookup_hospital.hospital_code, total,
  6. m_under_1, f_under_1, m_btwn_1_and_4, f_btwn_1_and_4, m_btwn_5_and_9, f_btwn_5_and_9, m_btwn_10_and_14, f_btwn_10_and_14 , m_btwn_15_and_17, f_btwn_15_and_17 , m_btwn_18_and_24, f_btwn_18_and_24, m_25plus, f_25plus
  7.  FROM
  8. (SELECT
  9.         CONCAT(city_code, '/', hospital_code) AS hospital_code,
  10.             hospital_code AS hcode_nocity
  11.     FROM
  12.         lookup_hospital) lookup_hospital
  13.         LEFT JOIN
  14.  
  15. (
  16. SELECT CONCAT(city_code, '/', hospital_code) AS hospital_code, COUNT(*) AS 'total',
  17. #gender, dob ,
  18.  
  19.     SUM(CASE
  20.         WHEN
  21.             dob BETWEEN (@start_date - INTERVAL 364 DAY) AND @end_date
  22.             AND dob != '0000-00-00'
  23.             AND gender = 1
  24.         THEN
  25.             1
  26.         ELSE 0
  27.     END) AS m_under_1,
  28.         SUM(CASE
  29.         WHEN
  30.             dob BETWEEN (@start_date - INTERVAL 364 DAY) AND @end_date
  31.             AND dob != '0000-00-00'
  32.             AND gender = 2
  33.         THEN
  34.             1
  35.         ELSE 0
  36.     END) AS f_under_1,
  37.     SUM(CASE
  38.         WHEN
  39.             dob BETWEEN (@start_date - INTERVAL 4 YEAR + INTERVAL 1 DAY) AND @end_date - INTERVAL 1 YEAR
  40.             AND dob != '0000-00-00' AND timestampdiff(YEAR, dob, @start_date)>=1
  41.             AND gender = 1
  42.            
  43.         THEN
  44.             1
  45.         ELSE 0
  46.     END) AS m_btwn_1_and_4,
  47.         SUM(CASE
  48.         WHEN
  49.             dob BETWEEN (@start_date - INTERVAL 4 YEAR + INTERVAL 1 DAY) AND @end_date - INTERVAL 1 YEAR
  50.             AND dob != '0000-00-00' AND timestampdiff(YEAR, dob, @start_date)>=1
  51.             AND gender = 2
  52.         THEN
  53.             1
  54.         ELSE 0
  55.     END) AS f_btwn_1_and_4,
  56.     SUM(CASE
  57.         WHEN
  58.               dob BETWEEN (@start_date - INTERVAL 9 YEAR + INTERVAL 1 DAY) AND @end_date - INTERVAL 5 YEAR
  59.               AND dob != '0000-00-00' AND timestampdiff(YEAR, dob, @start_date)>= 5
  60.               AND gender = 1
  61.         THEN
  62.             1
  63.         ELSE 0
  64.     END) AS m_btwn_5_and_9,
  65.         SUM(CASE
  66.         WHEN
  67.               dob BETWEEN (@start_date - INTERVAL 9 YEAR + INTERVAL 1 DAY) AND @end_date - INTERVAL 5 YEAR
  68.               AND dob != '0000-00-00' AND timestampdiff(YEAR, dob, @start_date)>= 5
  69.               AND gender = 2
  70.         THEN
  71.             1
  72.         ELSE 0
  73.     END) AS f_btwn_5_and_9,
  74.     SUM(CASE
  75.         WHEN
  76.             dob BETWEEN (@start_date - INTERVAL 14 YEAR + INTERVAL 1 DAY) AND @end_date - INTERVAL 10 YEAR
  77.             AND dob != '0000-00-00' AND timestampdiff(YEAR, dob, @start_date)>= 10
  78.             AND gender = 1
  79.         THEN
  80.             1
  81.         ELSE 0
  82.     END) AS m_btwn_10_and_14,
  83.     SUM(CASE
  84.         WHEN
  85.             dob BETWEEN (@start_date - INTERVAL 14 YEAR + INTERVAL 1 DAY) AND @end_date - INTERVAL 10 YEAR
  86.             AND dob != '0000-00-00' AND timestampdiff(YEAR, dob, @start_date)>= 10
  87.             AND gender = 2
  88.         THEN
  89.             1
  90.         ELSE 0
  91.     END) AS f_btwn_10_and_14,
  92.     SUM(CASE
  93.         WHEN
  94.              dob BETWEEN (@start_date - INTERVAL 17 YEAR + INTERVAL 1 DAY) AND @end_date - INTERVAL 15 YEAR
  95.              AND dob != '0000-00-00' AND timestampdiff(YEAR, dob, @start_date)>= 15
  96.              AND gender = 1
  97.         THEN
  98.             1
  99.         ELSE 0
  100.     END) AS m_btwn_15_and_17,
  101.     SUM(CASE
  102.         WHEN
  103.              dob BETWEEN (@start_date - INTERVAL 17 YEAR + INTERVAL 1 DAY) AND @end_date - INTERVAL 15 YEAR
  104.              AND dob != '0000-00-00' AND timestampdiff(YEAR, dob, @start_date)>= 15
  105.              AND gender = 2
  106.         THEN
  107.             1
  108.         ELSE 0
  109.     END) AS f_btwn_15_and_17,
  110.     SUM(CASE
  111.         WHEN
  112.             dob BETWEEN (@start_date - INTERVAL 24 YEAR + INTERVAL 1 DAY) AND @end_date - INTERVAL 18 YEAR
  113.             AND dob != '0000-00-00' AND timestampdiff(YEAR, dob, @start_date)>= 18
  114.             AND gender = 1
  115.         THEN
  116.             1
  117.         ELSE 0
  118.     END) AS m_btwn_18_and_24,
  119.     SUM(CASE
  120.         WHEN
  121.             dob BETWEEN (@start_date - INTERVAL 24 YEAR + INTERVAL 1 DAY) AND @end_date - INTERVAL 18 YEAR
  122.             AND dob != '0000-00-00' AND timestampdiff(YEAR, dob, @start_date)>= 18
  123.             AND gender = 2
  124.         THEN
  125.             1
  126.         ELSE 0
  127.     END) AS f_btwn_18_and_24,
  128.     SUM(CASE
  129.         WHEN
  130.             dob <= @end_date - INTERVAL 25 YEAR AND dob != '0000-00-00' AND timestampdiff(YEAR, dob, @start_date)>= 25
  131.             AND gender = 1
  132.         THEN
  133.             1
  134.         ELSE 0
  135.     END) AS m_25plus,
  136.     SUM(CASE
  137.         WHEN
  138.             dob <= @end_date - INTERVAL 25 YEAR AND dob != '0000-00-00' AND timestampdiff(YEAR, dob, @start_date)>= 25
  139.             AND gender = 2
  140.         THEN
  141.             1
  142.         ELSE 0
  143.     END) AS f_25plus
  144. FROM
  145. /*
  146. (
  147. select id_patient, infant_dob as dob , infant_gender as gender
  148. from testing_mereenfant
  149. where date >="2013-10-01" and date<@start_date
  150. ) i , patient
  151. */
  152. (
  153. (
  154. SELECT id_patient, infant_dob AS dob , infant_gender AS gender
  155. FROM testing_mereenfant
  156. WHERE DATE >=@start_date AND date<@end_date )
  157.  
  158. UNION
  159. (
  160. SELECT id_patient, dob ,  gender
  161. FROM patient LEFT JOIN tracking_infant
  162. ON tracking_infant.id_patient = patient.id
  163.   AND
  164.   (
  165.     (
  166.       (    kids_club_program =1
  167.         OR id_patient IN (SELECT id FROM tracking_followup WHERE date>=@start_date AND  date<@end_date )
  168.       )
  169.       AND id_patient NOT IN (SELECT id_patient FROM testing_mereenfant WHERE DATE >=@start_date AND date<@end_date )
  170.     )
  171.     OR
  172.     (
  173.         id_patient IN (
  174.             SELECT id FROM patient WHERE
  175.                
  176.                 (
  177.                 created_at >=@start_date AND created_at<=@end_date
  178.                 AND id NOT IN
  179.                 (
  180.                    SELECT id_patient FROM testing_mereenfant WHERE DATE >=@start_date AND date<@end_date                
  181.                  )
  182.                 )
  183.                 OR id IN
  184.                 (
  185.                     SELECT id_patient FROM testing_specimen WHERE date_blood_taken >=@start_date AND date_blood_taken <@end_date
  186.                 )
  187.                 OR id IN
  188.                 (
  189.                     SELECT id_patient FROM tracking_regime WHERE created_at >=@start_date AND created_at<=@end_date
  190.                
  191.                 )
  192.                 OR id IN
  193.                 (
  194.                     SELECT id_patient FROM tracking_followup WHERE DATE >=@start_date AND date<=@end_date
  195.                
  196.                 )
  197.                 OR id IN
  198.                 (
  199.                     SELECT id_patient FROM SESSION LEFT JOIN club_session ON SESSION.id_club_session = club_session.id
  200.                     LEFT JOIN club ON club.id = club_session.id_club
  201.                     WHERE club_session.DATE >=@start_date AND club_session.date<=@end_date AND club.club_type != 1
  202.                 )
  203.                 OR id IN
  204.                 (
  205.                     SELECT id_patient FROM tracking_infant WHERE  positive_pcr_1 >=@start_date AND positive_pcr_1 <@end_date OR
  206.                     positive_pcr_2 >=@start_date AND positive_pcr_2 <@end_date
  207.                 )
  208.        
  209.         )
  210.     )
  211.  
  212.   )
  213.  
  214. ) ) i , patient
  215. WHERE
  216. #kids_club_program =1
  217. #and
  218.  
  219. patient.id = i.id_patient
  220. #and datediff(@start_date,dob) /365 <15
  221. GROUP BY hospital_code
  222. ) table_for_left_join_with_lookup_hospital
  223. ON table_for_left_join_with_lookup_hospital.hospital_code = lookup_hospital.hospital_code
  224. ORDER BY hcode_nocity
Advertisement
Add Comment
Please, Sign In to add comment