From 27fde8589520be575c26b6432be211c3b1ffac3d Mon Sep 17 00:00:00 2001 From: sonzsara Date: Tue, 11 Aug 2026 12:32:13 +0530 Subject: [PATCH 1/2] Add documentation for Patients With Medication Due query --- Care/Clinical/patients_with_medication_due.md | 41 +++++++++++++++++++ 1 file changed, 41 insertions(+) create mode 100644 Care/Clinical/patients_with_medication_due.md diff --git a/Care/Clinical/patients_with_medication_due.md b/Care/Clinical/patients_with_medication_due.md new file mode 100644 index 0000000..4f6ced4 --- /dev/null +++ b/Care/Clinical/patients_with_medication_due.md @@ -0,0 +1,41 @@ + +# Patients With Medication Due + +> Count of patients whose latest 15-day medication course is overdue for renewal + +## Purpose + +Counts patients whose most recent medication request with a 15-day duration has already passed its due date. Useful for identifying how many patients may now be due for medication review, refill, or follow-up. + +--- + +## Query + +```sql +WITH latest_15_day_per_patient AS ( + SELECT DISTINCT ON (emr_medicationrequest.patient_id) + emr_medicationrequest.patient_id, + emr_medicationrequest.authored_on::date AS last_prescribed_on + FROM emr_medicationrequest + WHERE emr_medicationrequest.deleted = FALSE + AND emr_medicationrequest.status != 'entered_in_error' + AND EXISTS ( + SELECT 1 + FROM jsonb_array_elements(emr_medicationrequest.dosage_instruction) AS dosage_element + WHERE dosage_element->'timing'->'repeat'->'bounds_duration'->>'unit' = 'd' + AND (dosage_element->'timing'->'repeat'->'bounds_duration'->>'value')::int = 15 + ) + ORDER BY emr_medicationrequest.patient_id, emr_medicationrequest.authored_on DESC +) +SELECT COUNT(*) AS due_patient_count +FROM latest_15_day_per_patient +WHERE CURRENT_DATE > (latest_15_day_per_patient.last_prescribed_on + INTERVAL '15 days')::date; +``` + +## Notes + +- **Overdue rule:** A patient is counted when `CURRENT_DATE` is strictly greater than `last_prescribed_on + 15 days`, meaning the full 15-day course has elapsed. +- **Hardcoded duration filter:** This query only considers medication requests with a 15-day duration. If you need 7-day, 30-day, or mixed-duration tracking, adjust the JSONB filter logic. +- **No Metabase filters:** This query currently has no Metabase variables and always evaluates against `CURRENT_DATE` at runtime. + +*Last updated: 2026-08-11* From d2a682b6577bb3f0bfe0a903c2412bd2d8f06894 Mon Sep 17 00:00:00 2001 From: Sona Sara Shibu Date: Wed, 12 Aug 2026 17:18:57 +0530 Subject: [PATCH 2/2] Update patients_with_medication_due.md --- Care/Clinical/patients_with_medication_due.md | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/Care/Clinical/patients_with_medication_due.md b/Care/Clinical/patients_with_medication_due.md index 4f6ced4..21c4ad5 100644 --- a/Care/Clinical/patients_with_medication_due.md +++ b/Care/Clinical/patients_with_medication_due.md @@ -17,8 +17,7 @@ WITH latest_15_day_per_patient AS ( emr_medicationrequest.patient_id, emr_medicationrequest.authored_on::date AS last_prescribed_on FROM emr_medicationrequest - WHERE emr_medicationrequest.deleted = FALSE - AND emr_medicationrequest.status != 'entered_in_error' + WHERE emr_medicationrequest.status != 'entered_in_error' AND EXISTS ( SELECT 1 FROM jsonb_array_elements(emr_medicationrequest.dosage_instruction) AS dosage_element