Advertisement
Guest User

Untitled

a guest
Nov 14th, 2019
103
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. DROP VIEW IF EXISTS examination_documents;
  2. CREATE VIEW examination_documents AS
  3. SELECT e.id as examinationId,
  4.   array_remove(array_agg(va.original_document_link), null) as "originalVerificationArea",
  5.   array_remove(array_agg(va.translated_document_link), null) as "translatedVerificationArea",
  6.   array_remove(array_agg(ar.original_document_link), null) as "originalAmikResult",
  7.   array_remove(array_agg(ar.translated_document_link), null) as "translatedAmikResult",
  8.   array_remove(array_agg(me.original_document_link), null) as "originalManualEvaluation",
  9.   array_remove(array_agg(me.translated_document_link), null) as "translatedManualEvaluation",
  10.   array_remove(array_agg(bi.original_document_link), null) as "originalBrasterInformation",
  11.   array_remove(array_agg(bi.translated_document_link), null) as "translatedBrasterInformation",
  12.   array_remove(array_agg(pfe.original_document_link), null) as "originalProcessingFailureEvaluation",
  13.   array_remove(array_agg(pfe.translated_document_link), null) as "translatedProcessingFailureEvaluation"
  14. FROM examinations e
  15. LEFT JOIN tasks t ON t.examination_id = e.id
  16. LEFT JOIN braster_information bi ON bi.task_id = t.id
  17. LEFT JOIN manual_evaluations me ON me.task_id = t.id
  18. LEFT JOIN amik_results ar ON ar.task_id = t.id AND (me.original_document_link IS NULL) -- AND task must be analogous to ResultLogic:333
  19. LEFT JOIN processing_failure_evaluations pfe ON pfe.task_id = t.id
  20. LEFT JOIN verification_area_limitations_results va ON va.task_id = t.id
  21. GROUP BY e.id;
  22.  
  23. DROP VIEW IF EXISTS examinations_view CASCADE;
  24. CREATE VIEW examinations_view AS
  25. SELECT
  26.     e.id AS "id",
  27.     COALESCE(e.procedure_ended, e.created_at) AS "examinationDate",
  28.     e.additional_data AS "additionalData",
  29.     e.device_number as "deviceNumber",
  30.     u.name as "unitName",
  31.     u.id as "unitId",
  32.     c.code as "unitCountry",
  33.     CONCAT(us.first_name,' ',us.last_name) as "userName",
  34.     us.id as "userId",
  35.     p.id as "patientId",
  36.     p.first_name as "patientFirstName",
  37.     p.last_name as "patientLastName",
  38.     p.external_patient_id AS "patientExternalId",
  39.     EXISTS(SELECT * FROM amik_results amik JOIN tasks t2 ON t2.id = amik.task_id WHERE t2.examination_id = e.id)
  40.         AND NOT EXISTS(SELECT * FROM manual_evaluations me JOIN tasks t2 ON t2.id = me.task_id WHERE t2.examination_id = e.id AND me.published_ai = false)
  41.         AND COALESCE((SELECT s.name FROM examinations_exam_statuses es JOIN exam_statuses s ON es.status_id = s.id WHERE es.examination_id = e.id ORDER BY es.created_at DESC LIMIT 1) IN ('AUTOMATIC_PDF_READY', 'FINAL_PDF_READY', 'BAI_READY'), false)
  42.         AS "automaticResult",
  43.     CASE WHEN EXISTS(SELECT * FROM sir_results sir JOIN tasks t2 ON t2.id = sir.task_id WHERE t2.examination_id = e.id) THEN e.included_in_sir ELSE null END as "sir",
  44.     EXISTS(SELECT * FROM manual_evaluations me JOIN tasks t2 ON t2.id = me.task_id WHERE t2.examination_id = e.id) as "manualResult",
  45.     EXISTS(SELECT * FROM braster_information bi JOIN tasks t2 ON t2.id = bi.task_id WHERE t2.examination_id = e.id) as "additionalDocument",
  46.     e.result_read AS "isRead",
  47.     e.included_in_sir AS "inSir",
  48.     (SELECT es.name FROM examinations_exam_statuses ees JOIN exam_statuses es ON ees.status_id = es.id WHERE ees.examination_id = e.id ORDER BY ees.created_at DESC LIMIT 1) AS "currentStatus",
  49.     (SELECT ees.created_at FROM examinations_exam_statuses ees JOIN exam_statuses es ON ees.status_id = es.id WHERE ees.examination_id = e.id ORDER BY ees.created_at DESC LIMIT 1) AS "orderDate",
  50.     ARRAY(SELECT es.name || ' - ' || TO_CHAR(ees.created_at, 'DD.MM.YYYY, HH24:MI') FROM examinations_exam_statuses ees JOIN exam_statuses es ON ees.status_id = es.id WHERE ees.examination_id = e.id ORDER BY ees.created_at DESC) AS "statusHistory",
  51.     ARRAY(SELECT pf.label::text FROM patient_features_patients pfp JOIN patient_features pf ON pfp.patient_features_id = pf.id WHERE pfp.patient_id = p.id AND pfp.deleted_at IS NULL) AS "patientAttributes",
  52.     ARRAY(SELECT c.label::text FROM users_categories uc JOIN categories c ON uc.category_id = c.id WHERE uc.user_id = us.id AND uc.deleted_at IS NULL) AS "userCategories",
  53.     ARRAY(SELECT c.label::text FROM units_categories uc JOIN categories c ON uc.category_id = c.id WHERE uc.unit_id = u.id AND uc.deleted_at IS NULL) AS "unitCategories",
  54.     array_to_string(ARRAY(SELECT uap.parent_id FROM units_all_parents uap WHERE uap.id = u.id), ',') as "unitWithParentIds",
  55.     CASE WHEN EXISTS(
  56.         SELECT * FROM examination_documents ed WHERE ed.examinationId = e.id AND
  57.                                                      (cardinality(ed."originalAmikResult") > 0 OR
  58.                                                       cardinality(ed."originalBrasterInformation") > 0 OR
  59.                                                       cardinality(ed."originalManualEvaluation") > 0 OR
  60.                                                       cardinality(ed."originalVerificationArea") > 0 OR
  61.                                                       cardinality(ed."originalProcessingFailureEvaluation") > 0 OR
  62.                                                       cardinality(ed."translatedAmikResult") > 0 OR
  63.                                                       cardinality(ed."translatedBrasterInformation") > 0 OR
  64.                                                       cardinality(ed."translatedManualEvaluation") > 0 OR
  65.                                                       cardinality(ed."translatedVerificationArea") > 0 OR
  66.                                                       cardinality(ed."translatedProcessingFailureEvaluation") > 0))
  67.       THEN TRUE ELSE FALSE END as hasDocuments
  68. FROM examinations e
  69.          LEFT JOIN units u ON e.unit_id = u.id
  70.          LEFT JOIN patients p ON e.patient_id = p.id
  71. --       In case of CONSUMER or PRO_BASIC join standard User. Otherwise join Examiner.
  72.          LEFT JOIN users us ON us.id = e.examiner_id
  73.          LEFT JOIN territories te ON u.territory_id = te.id
  74.          LEFT JOIN countries c ON te.country_id = c.id;
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement