initial commit

This commit is contained in:
Andrew Charlwood
2026-05-12 16:40:03 +01:00
commit 647d1bfa7f
38 changed files with 2715 additions and 0 deletions
@@ -0,0 +1,27 @@
-- Snowflake version: Check dispensing by VMP (Virtual Medicinal Product)
-- Uses GPMeds dispensing data from NATIONAL.GPMED
WITH SnomedCodes AS (
SELECT "ProductSnomedCode"
FROM DATA_HUB.DWH."DimMedicineAndDevice"
WHERE "MedicinalLatestSnomedCode" = '40326811000001109' -- Specific VMP
),
LatestPeriod AS (
SELECT MAX("ProcessingPeriodDate") AS MaxPeriodDate
FROM NATIONAL.GPMED."MedicinesDispensedInPrimarycare"
)
SELECT
gpm."ProcessingPeriodDate",
dos."OrganisationName",
COUNT(DISTINCT gpm."PatientPseudonym") AS UniquePatientCount,
SUM(gpm."ItemCount") AS TotalItemsDispensed,
SUM(gpm."PaidQuantity") AS TotalQuantityDispensed
FROM NATIONAL.GPMED."MedicinesDispensedInPrimarycare" gpm
INNER JOIN SnomedCodes sc ON gpm."PaiddmdCode" = sc."ProductSnomedCode"
LEFT JOIN DATA_HUB.DWH."DimOrganisationAndSite" dos
ON gpm."CostCentreODSCode" = dos."SiteCode"
CROSS JOIN LatestPeriod lp
WHERE gpm."ProcessingPeriodDate" > DATEADD(MONTH, -12, lp.MaxPeriodDate)
AND gpm."ProcessingPeriodDate" <= lp.MaxPeriodDate
GROUP BY gpm."ProcessingPeriodDate", dos."OrganisationName", gpm."CostCentreODSCode"
ORDER BY gpm."ProcessingPeriodDate", dos."OrganisationName";
@@ -0,0 +1,29 @@
-- Snowflake version: Check dispensing by VTM (Virtual Therapeutic Moiety)
-- Uses GPMeds dispensing data from NATIONAL.GPMED
WITH SnomedCodes AS (
SELECT "ProductSnomedCode", "ProductDescription"
FROM DATA_HUB.DWH."DimMedicineAndDevice"
WHERE "TherapeuticMoietySnomedCode" = '41145911000001106' -- Tirzepatide VTM
),
LatestPeriod AS (
SELECT MAX("ProcessingPeriodDate") AS MaxPeriodDate
FROM NATIONAL.GPMED."MedicinesDispensedInPrimarycare"
)
SELECT *
FROM NATIONAL.GPMED."MedicinesDispensedInPrimarycare" gpm
INNER JOIN SnomedCodes sc ON gpm."PaiddmdCode" = sc."ProductSnomedCode"
CROSS JOIN LatestPeriod lp
WHERE gpm."ProcessingPeriodDate" > DATEADD(MONTH, -1, lp.MaxPeriodDate)
AND gpm."ProcessingPeriodDate" <= lp.MaxPeriodDate
limit 100;
SELECT
COUNT(DISTINCT gpm."PatientPseudonym") AS UniquePatientCount,
MAX(gpm."ProcessingPeriodDate") AS LatestPeriod
FROM NATIONAL.GPMED."MedicinesDispensedInPrimarycare" gpm
INNER JOIN SnomedCodes sc ON gpm."PaiddmdCode" = sc."ProductSnomedCode"
CROSS JOIN LatestPeriod lp
WHERE gpm."ProcessingPeriodDate" > DATEADD(MONTH, -1, lp.MaxPeriodDate)
AND gpm."ProcessingPeriodDate" <= lp.MaxPeriodDate;
@@ -0,0 +1,19 @@
-- Snowflake version: Check prescribing by VMP (Virtual Medicinal Product)
-- Uses unified PrimaryCareMedication table (combines EMIS + TPP)
SET StartDate = '2025-04-01';
SET EndDate = '2025-07-31';
WITH SnomedCodes AS (
SELECT "ProductSnomedCode"
FROM DATA_HUB.DWH."DimMedicineAndDevice"
WHERE "MedicinalLatestSnomedCode" = '40326811000001109' -- Specific VMP
)
SELECT DISTINCT
pcm."PatientPseudonym",
pcm."DateMedicationStart" AS EffectiveDate,
CAST(pcm."Quantity" AS VARCHAR(20)) AS Quantity
FROM DATA_HUB.PHM."PrimaryCareMedication" pcm
INNER JOIN SnomedCodes sc ON pcm."SNOMEDCode" = sc."ProductSnomedCode"
WHERE pcm."DateMedicationStart" BETWEEN $StartDate AND $EndDate
AND pcm."PatientPseudonym" IS NOT NULL;
@@ -0,0 +1,30 @@
-- Snowflake version: Check prescribing by VTM (Virtual Therapeutic Moiety)
-- Uses unified PrimaryCareMedication table (combines EMIS + TPP)
SET StartDate = '2025-11-01';
SET EndDate = '2025-12-31';
WITH SnomedCodes AS (
SELECT "ProductSnomedCode", "ProductDescription"
FROM DATA_HUB.DWH."DimMedicineAndDevice"
WHERE "TherapeuticMoietySnomedCode" = '41145911000001106' -- Tirzepatide VTM
)
SELECT DISTINCT
dos."OrganisationName",
dp."PersonKey",
pcm."DateMedicationStart" AS EffectiveDate,
sc."ProductDescription",
CAST(pcm."Quantity" AS VARCHAR(20)) AS Quantity,
pcm."QuantityText" AS Dosage
FROM DATA_HUB.PHM."PrimaryCareMedication" pcm
INNER JOIN DATA_HUB.DWH."DimPerson" dp
ON pcm."PatientPseudonym" = dp."PatientPseudonym"
INNER JOIN SnomedCodes sc
ON pcm."SNOMEDCode" = sc."ProductSnomedCode"
INNER JOIN DATA_HUB.DWH."DimOrganisationAndSite" dos
ON dp."CurrentGeneralPractice" = dos."SiteCode"
WHERE pcm."DateMedicationStart" BETWEEN $StartDate AND $EndDate
AND pcm."PatientPseudonym" IS NOT NULL
AND dos."OrganisationSubType" = 'GP Practice'
AND dos."IsSiteNorfolkAndWaveney" = 'Yes'
AND dos."IsSiteActive" = 'Yes';
@@ -0,0 +1,28 @@
-- Snowflake version: Check prescribing by VTM (Virtual Therapeutic Moiety)
-- Uses unified PrimaryCareMedication table (combines EMIS + TPP)
SET StartDate = '2025-05-01';
SET EndDate = '2025-11-30';
WITH SnomedCodes AS (
SELECT "ProductSnomedCode", "ProductDescription"
FROM DATA_HUB.DWH."DimMedicineAndDevice"
WHERE "TherapeuticMoietySnomedCode" = '41145911000001106' -- Tirzepatide VTM
)
SELECT
DATE_TRUNC('MONTH', pcm."DateMedicationStart") AS PrescribingMonth,
COUNT(DISTINCT dp."PersonKey") AS UniquePatientCount
FROM DATA_HUB.PHM."PrimaryCareMedication" pcm
INNER JOIN DATA_HUB.DWH."DimPerson" dp
ON pcm."PatientPseudonym" = dp."PatientPseudonym"
INNER JOIN SnomedCodes sc
ON pcm."SNOMEDCode" = sc."ProductSnomedCode"
INNER JOIN DATA_HUB.DWH."DimOrganisationAndSite" dos
ON dp."CurrentGeneralPractice" = dos."SiteCode"
WHERE pcm."DateMedicationStart" BETWEEN $StartDate AND $EndDate
AND pcm."PatientPseudonym" IS NOT NULL
AND dos."OrganisationSubType" = 'GP Practice'
AND dos."IsSiteNorfolkAndWaveney" = 'Yes'
AND dos."IsSiteActive" = 'Yes'
GROUP BY DATE_TRUNC('MONTH', pcm."DateMedicationStart")
ORDER BY PrescribingMonth
@@ -0,0 +1,34 @@
-- Snowflake version: Check prescribing by VTM for last 3 months
-- Uses unified PrimaryCareMedication table (combines EMIS + TPP)
-- Dynamically calculates date range from latest data
WITH LatestDate AS (
SELECT DATEADD(DAY, 1, MAX("DateMedicationStart")::DATE) AS EndDate
FROM DATA_HUB.PHM."PrimaryCareMedication"
WHERE "DateMedicationStart" >= DATEADD(MONTH, -6, CURRENT_DATE())
),
DateRange AS (
SELECT
EndDate,
DATEADD(MONTH, -3, EndDate) AS StartDate
FROM LatestDate
),
SnomedCodes AS (
SELECT "ProductSnomedCode", "ProductDescription"
FROM DATA_HUB.DWH."DimMedicineAndDevice"
WHERE "TherapeuticMoietySnomedCode" = '775477008' -- Tirzepatide VTM
),
AllPatients AS (
SELECT DISTINCT pcm."PatientPseudonym"
FROM DATA_HUB.PHM."PrimaryCareMedication" pcm
INNER JOIN SnomedCodes sc ON pcm."SNOMEDCode" = sc."ProductSnomedCode"
CROSS JOIN DateRange dr
WHERE pcm."DateMedicationStart" > dr.StartDate
AND pcm."DateMedicationStart" <= dr.EndDate
AND pcm."PatientPseudonym" IS NOT NULL
)
SELECT
COUNT(DISTINCT "PatientPseudonym") AS UniquePatientCount,
(SELECT StartDate FROM DateRange) AS StartDate,
(SELECT EndDate FROM DateRange) AS EndDate
FROM AllPatients;