Skip to content

Instantly share code, notes, and snippets.

@fwgreen
Created March 28, 2023 21:50
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save fwgreen/f7881d5e01b9d8384585ab6563ab7023 to your computer and use it in GitHub Desktop.
Save fwgreen/f7881d5e01b9d8384585ab6563ab7023 to your computer and use it in GitHub Desktop.
ORMish view for row mapper
DROP VIEW IF EXISTS patient_room_view;
CREATE VIEW patient_room_view AS
SELECT
nt.room_number,
CASE
WHEN coalesce(jsonb_agg(tm.*) FILTER (WHERE tm.job_title = 'RN'), '{}') ->> 0 != '[null]'
THEN (coalesce(jsonb_agg(tm.*) FILTER (WHERE tm.job_title = 'RN'), '{}') ->> 0)::jsonb
ELSE '{}'
END
AS nurse,
CASE
WHEN coalesce(jsonb_agg(tm.*) FILTER (WHERE tm.job_title = 'NA'), '{}') ->> 0 != '[null]'
THEN (coalesce(jsonb_agg(tm.*) FILTER (WHERE tm.job_title = 'NA'), '{}') ->> 0)::jsonb
ELSE '{}'
END
AS assistant,
row_to_json(prs.*)::jsonb AS status,
row_number() OVER () AS id
FROM patient_room pr, patient_room_status prs
JOIN nursing_team nt ON prs.room_number = nt.room_number
LEFT JOIN team_member tm ON (nt.assistant_id = tm.team_member_id OR nt.nurse_id = tm.team_member_id)
GROUP BY prs.id, nt.id
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment