PREVIEW: Proportion of rivaroxaban and apixaban not prescribed generically

Below are the database queries which are used to create this measure. These are run against a copy of the BSA prescribing data which we store in Google BigQuery. We're working on making our BigQuery tables publicly available at which point it will be possible to run and modify these queries yourself. But even where code and database queries are not directly useable by others we believe it is always preferable to make them public.

Description Percentage of rivaroxaban and apixaban not prescribed generically
Why it matters In September 2024 the NHS in England released updated commissioning regulations for DOACs, which state:

For patients commencing treatment for Atrial Fibrillation (AF): subject to the criteria specified in the relevant NICE technology appraisal guidance, clinicians should use the best value DOAC that is clinically appropriate for the patient.

Table 1 provides the available DOACs ranked from highest to lowest best value according to the September 2024 and confidential framework prices. If the highest ranked best value DOAC (generic apixaban or generic rivaroxaban) is contraindicated or not clinically appropriate for the specific patient then, subject to the criteria specified in the relevant NICE technology appraisal guidance, clinicians should then consider the next highest ranked DOAC (edoxaban) and so on until an appropriate treatment is identified.

Overall rank DOAC Notes
1 (Joint best value) Rivaroxaban (generic)
Apixaban (generic)
Best value once a day treatment
Best value twice a day treatment
2 Edoxaban (Lixiana®)
3 Xarelto® (branded rivaroxaban)
4 Dabigatran (Pradaxa®)
5 Eliquis® (branded apixaban)

The NHS England National Medicines Optimisation Opportunities for 2023/24 identify using best value direct-acting oral anticoagulants as an area for improvement.

This measures shows the percentage of prescriptions for rivaroxaban and apixaban which were not prescribed generically.

Tags
Implies cost savings Yes
History View change history on GitHub →

Numerator SQL

SELECT
     CAST(month AS DATE) AS month,
     practice AS practice_id,
     SUM(p.items) AS numerator
 FROM hscic.normalised_prescribing p  INNER JOIN dmd.vmp vmp ON CONCAT(SUBSTR(p.bnf_code,0,9),'AA', SUBSTR(p.bnf_code,-2), SUBSTR(p.bnf_code,-2)) = vmp.bnf_code -- joins prescribing data to vmp table using generic BNF code 
 INNER JOIN dmd.vpi AS vpi ON vmp.id = vpi.vmp -- joins vmp to vpi table to get ingredient strengths (strnt_nmrtr_val) 
 INNER JOIN dmd.ont AS ont ON vmp.id = ont.vmp -- joins vmp to ont table to get formulation codes 
 INNER JOIN dmd.ontformroute AS route ON ont.form = route.cd -- joins ont table to ontform table to get formulation names
 WHERE (vpi.ing = 698090000 AND NOT(SUBSTR(p.bnf_code,10,2) ='AA' AND route.descr ='tablet.oral')) --Apixaban (except generic tablets) 
 OR (vpi.ing = 442031002 AND NOT(SUBSTR(p.bnf_code,10,2) ='AA' AND route.descr ='tablet.oral')) --Rivaroxaban (except generic tablets)
 GROUP BY month, practice_id

Denominator SQL

SELECT
     CAST(month AS DATE) AS month,
     practice AS practice_id,
     SUM(p.items) AS denominator
 FROM hscic.normalised_prescribing p  INNER JOIN dmd.vmp vmp ON CONCAT(SUBSTR(p.bnf_code,0,9),'AA', SUBSTR(p.bnf_code,-2), SUBSTR(p.bnf_code,-2)) = vmp.bnf_code -- joins prescribing data to vmp table using generic BNF code 
 INNER JOIN dmd.vpi AS vpi ON vmp.id = vpi.vmp -- joins vmp to vpi table to get ingredient strengths (strnt_nmrtr_val) 
 INNER JOIN dmd.ont AS ont ON vmp.id = ont.vmp -- joins vmp to ont table to get formulation codes 
 INNER JOIN dmd.ontformroute AS route ON ont.form = route.cd -- joins ont table to ontform table to get formulation names
 WHERE vpi.ing IN (698090000,442031002) --Apixaban, rivaroxaban 
 AND route.descr IN ('tablet.oral', 'capsule.oral')
 GROUP BY month, practice_id
Feedback