From 558c6bea60abf1454ab5e21fe13985fc7c475576 Mon Sep 17 00:00:00 2001 From: Richard Croker Date: Mon, 16 Sep 2024 10:28:16 +0100 Subject: [PATCH 01/23] Create doacs_nhse.json amend measure and rename --- .../measures/definitions/doacs_nhse.json | 93 +++++++++++++++++++ 1 file changed, 93 insertions(+) create mode 100644 openprescribing/measures/definitions/doacs_nhse.json diff --git a/openprescribing/measures/definitions/doacs_nhse.json b/openprescribing/measures/definitions/doacs_nhse.json new file mode 100644 index 0000000000..197282576e --- /dev/null +++ b/openprescribing/measures/definitions/doacs_nhse.json @@ -0,0 +1,93 @@ +{ + "name": "Proportion of Direct Acting Oral Anticoagulants (DOACs) not prescribed as generic rivaroxaban or generic apixaban", + "title": "Percentage DOACs items not prescribed as generic rivaroxaban or generic apixaban", + "description": "Percentage DOACs items not prescribed as generic rivaroxaban or generic apixaban", + "numerator_short": "DOAC items not prescribed as generic rivaroxaban or generic apixaban", + "denominator_short": "DOACs items", + "y_label": "Percentage DOACs not prescribed as generic rivaroxaban or generic apixaban", + "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 rankDOACNotes
1 (Best value)generic rivaroxaban
generic apixaban
Best value once a day treatment
Best value twice a day treatment
2Edoxaban (Lixiana®)
3Xarelto® (branded rivaroxaban)
4Dabigatran (Pradaxa®)
5Eliquis® (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.

", + "

Please note: OpenPrescribing.net measures have a consistent way of visualising measures, where 'lower is better' ", + "and therefore in this case we show the proportion of DOACs which are NOT prescribed as edoxaban or generic apixaban." + ], + "tags": [ + "cardiovascular", + "core", + "cost", + "opportunities" + ], + "url": null, + "is_percentage": true, + "is_cost_based": false, + "low_is_good": true, + "numerator_type": "bnf_items", + "numerator_bnf_codes_filter": [ + "0208020Y0 # Rivaroxaban", + "0208020Z0 # Apixaban", + "0208020X0 # Dabigatran etexilate", + "0208020AA # Edoxaban", + "~0208020Z0AA # Apixaban (generic)", + "~0208020Y0AA # Rivaroxaban" + ], + "denominator_type": "bnf_items", + "denominator_bnf_codes_filter": [ + "0208020Y0 # Rivaroxaban", + "0208020AA # Edoxaban", + "0208020Z0 # Apixaban", + "0208020X0 # Dabigatran etexilate" + ], +"authored_by": "richard.croker@phc.ox.ac.uk", + "checked_by": "", + "date_reviewed": "2024-09-16", + "next_review": "2026-09-16", + "measure_complexity": "low", + "measure_type": "bnf_code", + "radar_exclude": false +} From 1726398b90984b43f39b119fd80c9b830c59f665 Mon Sep 17 00:00:00 2001 From: Richard Croker Date: Tue, 1 Oct 2024 10:38:25 +0100 Subject: [PATCH 02/23] Update doacs_nhse.json --- openprescribing/measures/definitions/doacs_nhse.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/openprescribing/measures/definitions/doacs_nhse.json b/openprescribing/measures/definitions/doacs_nhse.json index 197282576e..c7c45c03d6 100644 --- a/openprescribing/measures/definitions/doacs_nhse.json +++ b/openprescribing/measures/definitions/doacs_nhse.json @@ -13,7 +13,7 @@ "

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.", - "", + "
", "", " ", " ", From cb0b84272093677bf02a90d24769d42230d356e2 Mon Sep 17 00:00:00 2001 From: Richard Croker Date: Tue, 1 Oct 2024 10:51:40 +0100 Subject: [PATCH 03/23] Update doacs_nhse.json --- openprescribing/measures/definitions/doacs_nhse.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/openprescribing/measures/definitions/doacs_nhse.json b/openprescribing/measures/definitions/doacs_nhse.json index c7c45c03d6..c7d6557bc4 100644 --- a/openprescribing/measures/definitions/doacs_nhse.json +++ b/openprescribing/measures/definitions/doacs_nhse.json @@ -13,7 +13,7 @@ "

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
", + "
", "", " ", " ", From 1815d99a25fad33ecdbb81ca6e5724467f1df6d2 Mon Sep 17 00:00:00 2001 From: Richard Croker Date: Tue, 1 Oct 2024 11:04:27 +0100 Subject: [PATCH 04/23] Update doacs_nhse.json --- .../measures/definitions/doacs_nhse.json | 38 +++++++++---------- 1 file changed, 19 insertions(+), 19 deletions(-) diff --git a/openprescribing/measures/definitions/doacs_nhse.json b/openprescribing/measures/definitions/doacs_nhse.json index c7d6557bc4..e28026017f 100644 --- a/openprescribing/measures/definitions/doacs_nhse.json +++ b/openprescribing/measures/definitions/doacs_nhse.json @@ -13,40 +13,40 @@ "

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
", + "
", "", " ", - " ", - " ", - " ", + " ", + " ", + " ", " ", "", "", " ", " ", - " ", - " ", - " ", + " ", + " ", + " ", " ", " ", - " ", - " ", - " ", + " ", + " ", + " ", " ", " ", - " ", - " ", - " ", + " ", + " ", + " ", " ", " ", - " ", - " ", - " ", + " ", + " ", + " ", " ", " ", - " ", - " ", - " ", + " ", + " ", + " ", " ", "", "
Overall rankDOACNotesOverall rankDOACNotes
1 (Best value)generic rivaroxaban
generic apixaban
Best value once a day treatment
Best value twice a day treatment
1 (Best value)generic rivaroxaban
generic apixaban
Best value once a day treatment
Best value twice a day treatment
2Edoxaban (Lixiana®)2Edoxaban (Lixiana®)
3Xarelto® (branded rivaroxaban) 3Xarelto® (branded rivaroxaban)
4Dabigatran (Pradaxa®) 4Dabigatran (Pradaxa®)
5Eliquis® (branded apixaban) 5Eliquis® (branded apixaban)
", From 9be161b18f253e7c445ae49f5e61f991a002c2d1 Mon Sep 17 00:00:00 2001 From: Richard Croker Date: Tue, 1 Oct 2024 11:05:13 +0100 Subject: [PATCH 05/23] Update doacs_nhse.json --- openprescribing/measures/definitions/doacs_nhse.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/openprescribing/measures/definitions/doacs_nhse.json b/openprescribing/measures/definitions/doacs_nhse.json index e28026017f..8b1c7bfb9c 100644 --- a/openprescribing/measures/definitions/doacs_nhse.json +++ b/openprescribing/measures/definitions/doacs_nhse.json @@ -13,7 +13,7 @@ "

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.", - "", + "
", "", " ", " ", From f3e3ec29f242e9ee264e47dcb2c57f0ac9457809 Mon Sep 17 00:00:00 2001 From: Richard Croker Date: Tue, 1 Oct 2024 11:08:23 +0100 Subject: [PATCH 06/23] fix double quotes to single --- openprescribing/measures/definitions/doacs_nhse.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/openprescribing/measures/definitions/doacs_nhse.json b/openprescribing/measures/definitions/doacs_nhse.json index 8b1c7bfb9c..245b80583d 100644 --- a/openprescribing/measures/definitions/doacs_nhse.json +++ b/openprescribing/measures/definitions/doacs_nhse.json @@ -13,7 +13,7 @@ "

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
", + "
, "", " ", " ", From cf5eab71b26ce4f2928e9255d4242d47b35bfc81 Mon Sep 17 00:00:00 2001 From: Richard Croker Date: Tue, 1 Oct 2024 11:10:24 +0100 Subject: [PATCH 07/23] Update doacs_nhse.json --- openprescribing/measures/definitions/doacs_nhse.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/openprescribing/measures/definitions/doacs_nhse.json b/openprescribing/measures/definitions/doacs_nhse.json index 245b80583d..8b1c7bfb9c 100644 --- a/openprescribing/measures/definitions/doacs_nhse.json +++ b/openprescribing/measures/definitions/doacs_nhse.json @@ -13,7 +13,7 @@ "

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
, + "
", "", " ", " ", From 89a04ad520d4e49f824ca1d850521fb70a62a8e0 Mon Sep 17 00:00:00 2001 From: Richard Croker Date: Tue, 1 Oct 2024 11:11:58 +0100 Subject: [PATCH 08/23] Update doacs_nhse.json --- openprescribing/measures/definitions/doacs_nhse.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/openprescribing/measures/definitions/doacs_nhse.json b/openprescribing/measures/definitions/doacs_nhse.json index 8b1c7bfb9c..4a134c490f 100644 --- a/openprescribing/measures/definitions/doacs_nhse.json +++ b/openprescribing/measures/definitions/doacs_nhse.json @@ -13,7 +13,7 @@ "

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
", + "
", "", " ", " ", From 3286a1dc24d90a2a243e1c63169bdb07db911510 Mon Sep 17 00:00:00 2001 From: Richard Croker Date: Tue, 1 Oct 2024 11:20:44 +0100 Subject: [PATCH 09/23] Update doacs_nhse.json --- openprescribing/measures/definitions/doacs_nhse.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/openprescribing/measures/definitions/doacs_nhse.json b/openprescribing/measures/definitions/doacs_nhse.json index 4a134c490f..caa1a69386 100644 --- a/openprescribing/measures/definitions/doacs_nhse.json +++ b/openprescribing/measures/definitions/doacs_nhse.json @@ -13,7 +13,7 @@ "

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
", + "
", "", " ", " ", From 64fba12f2837fc39b20663b38cfb4e75eb5c224b Mon Sep 17 00:00:00 2001 From: Richard Croker Date: Tue, 1 Oct 2024 11:39:30 +0100 Subject: [PATCH 10/23] Update doacs_nhse.json --- .../measures/definitions/doacs_nhse.json | 15 ++++++++------- 1 file changed, 8 insertions(+), 7 deletions(-) diff --git a/openprescribing/measures/definitions/doacs_nhse.json b/openprescribing/measures/definitions/doacs_nhse.json index caa1a69386..3701e68896 100644 --- a/openprescribing/measures/definitions/doacs_nhse.json +++ b/openprescribing/measures/definitions/doacs_nhse.json @@ -13,6 +13,7 @@ "

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
", "", " ", @@ -29,29 +30,29 @@ " ", " ", " ", - " ", - " ", - " ", + " ", + " ", + " ", " ", " ", " ", - " ", + " ", " ", " ", " ", " ", - " ", + " ", " ", " ", " ", " ", - " ", + " ", " ", " ", "", "
Best value once a day treatment
Best value twice a day treatment
2Edoxaban (Lixiana®)2Edoxaban (Lixiana®)
3Xarelto® (branded rivaroxaban)Xarelto® (branded rivaroxaban)
4Dabigatran (Pradaxa®)Dabigatran (Pradaxa®)
5Eliquis® (branded apixaban)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.

", "

Please note: OpenPrescribing.net measures have a consistent way of visualising measures, where 'lower is better' ", From 08a680e67745ce35bc2cb2e2de0b5edbb9ce8470 Mon Sep 17 00:00:00 2001 From: Richard Croker Date: Tue, 1 Oct 2024 12:26:48 +0100 Subject: [PATCH 11/23] Refactor Change table Change numerator so that it excludes tablets only. --- .../measures/definitions/doacs_nhse.json | 60 +++++++++++-------- 1 file changed, 36 insertions(+), 24 deletions(-) diff --git a/openprescribing/measures/definitions/doacs_nhse.json b/openprescribing/measures/definitions/doacs_nhse.json index 3701e68896..b8e3c53596 100644 --- a/openprescribing/measures/definitions/doacs_nhse.json +++ b/openprescribing/measures/definitions/doacs_nhse.json @@ -1,10 +1,10 @@ { - "name": "Proportion of Direct Acting Oral Anticoagulants (DOACs) not prescribed as generic rivaroxaban or generic apixaban", - "title": "Percentage DOACs items not prescribed as generic rivaroxaban or generic apixaban", - "description": "Percentage DOACs items not prescribed as generic rivaroxaban or generic apixaban", - "numerator_short": "DOAC items not prescribed as generic rivaroxaban or generic apixaban", + "name": "Proportion of Direct Acting Oral Anticoagulants (DOACs) not prescribed as generic rivaroxaban or generic apixaban tablets", + "title": "Percentage DOACs items not prescribed as generic rivaroxaban or generic apixaban tablets", + "description": "Percentage DOACs items not prescribed as generic rivaroxaban or generic apixaban tablets", + "numerator_short": "DOAC items not prescribed as generic rivaroxaban or generic apixaban tablets", "denominator_short": "DOACs items", - "y_label": "Percentage DOACs not prescribed as generic rivaroxaban or generic apixaban", + "y_label": "Percentage DOACs not prescribed as generic rivaroxaban or generic apixaban tablets", "why_it_matters": [ "In September 2024 the NHS in England released ", "updated commissioning regulations for DOACs, which state:

", @@ -54,9 +54,10 @@ "", "

", "

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

", + "NHS England National Medicines Optimisation Opportunities for 2024/25 identify using best value direct-acting oral anticoagulants as an area for improvement.

", "

Please note: OpenPrescribing.net measures have a consistent way of visualising measures, where 'lower is better' ", - "and therefore in this case we show the proportion of DOACs which are NOT prescribed as edoxaban or generic apixaban." + "and therefore in this case we show the proportion of DOACs which are NOT prescribed as edoxaban or generic apixaban tablets. There are also other oral formulations of generic apixaban and rivaroxaban recently introduced onto the market.", + "We do not consider these to be as cost-effective, and they are not considered as first-line in this measure." ], "tags": [ "cardiovascular", @@ -68,27 +69,38 @@ "is_percentage": true, "is_cost_based": false, "low_is_good": true, - "numerator_type": "bnf_items", - "numerator_bnf_codes_filter": [ - "0208020Y0 # Rivaroxaban", - "0208020Z0 # Apixaban", - "0208020X0 # Dabigatran etexilate", - "0208020AA # Edoxaban", - "~0208020Z0AA # Apixaban (generic)", - "~0208020Y0AA # Rivaroxaban" + "numerator_type": "custom", + "numerator_columns": "SUM(p.items) AS numerator", + "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 \n", + "INNER JOIN {dmd}.vpi AS vpi ON vmp.id = vpi.vmp -- joins vmp to vpi table to get ingredient strengths (strnt_nmrtr_val) \n", + "INNER JOIN {dmd}.ont AS ont ON vmp.id = ont.vmp -- joins vmp to ont table to get formulation codes \n", + "INNER JOIN {dmd}.ontformroute AS route ON ont.form = route.cd -- joins ont table to ontform table to get formulation names " ], - "denominator_type": "bnf_items", - "denominator_bnf_codes_filter": [ - "0208020Y0 # Rivaroxaban", - "0208020AA # Edoxaban", - "0208020Z0 # Apixaban", - "0208020X0 # Dabigatran etexilate" - ], + "numerator_where": [ + "vpi.ing = 698090000 AND NOT((SUBSTR(p.bnf_code,10,2) ='AA' AND route.descr ='tablet.oral')) --Apixaban (except generic tablets) \n", + "OR vpi.ing = 700039002 --Dabigatran etexilate mesilate \n", + "OR vpi.ing = 1162278009 --Edoxaban tosilate\n", + "OR vpi.ing = 442031002 AND NOT((SUBSTR(p.bnf_code,10,2) ='AA' AND route.descr ='tablet.oral')) --Rivaroxaban (except generic tablets) " + ], + "denominator_type": "custom", + "denominator_columns": "SUM(p.items) AS numerator", + "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 \n", + "INNER JOIN {dmd}.vpi AS vpi ON vmp.id = vpi.vmp -- joins vmp to vpi table to get ingredient strengths (strnt_nmrtr_val) \n", + "INNER JOIN {dmd}.ont AS ont ON vmp.id = ont.vmp -- joins vmp to ont table to get formulation codes \n", + "INNER JOIN {dmd}.ontformroute AS route ON ont.form = route.cd -- joins ont table to ontform table to get formulation names " + ], + "denominator_where": [ + "vpi.ing IN (698090000 700039002 1162278009 442031002) --Apixaban, babigatran etexilate mesilate, edoxaban tosilate, rivaroxaban" + ], "authored_by": "richard.croker@phc.ox.ac.uk", "checked_by": "", - "date_reviewed": "2024-09-16", + "date_reviewed": "2024-10-01", "next_review": "2026-09-16", "measure_complexity": "low", - "measure_type": "bnf_code", + "measure_type": "dmd", "radar_exclude": false } From 94f1329ba5dc8533ee151f457eb403331378a1a3 Mon Sep 17 00:00:00 2001 From: Richard Croker Date: Tue, 1 Oct 2024 12:28:00 +0100 Subject: [PATCH 12/23] add commas to IN statement! --- openprescribing/measures/definitions/doacs_nhse.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/openprescribing/measures/definitions/doacs_nhse.json b/openprescribing/measures/definitions/doacs_nhse.json index b8e3c53596..8736f60041 100644 --- a/openprescribing/measures/definitions/doacs_nhse.json +++ b/openprescribing/measures/definitions/doacs_nhse.json @@ -94,7 +94,7 @@ "INNER JOIN {dmd}.ontformroute AS route ON ont.form = route.cd -- joins ont table to ontform table to get formulation names " ], "denominator_where": [ - "vpi.ing IN (698090000 700039002 1162278009 442031002) --Apixaban, babigatran etexilate mesilate, edoxaban tosilate, rivaroxaban" + "vpi.ing IN (698090000,700039002,1162278009,442031002) --Apixaban, babigatran etexilate mesilate, edoxaban tosilate, rivaroxaban" ], "authored_by": "richard.croker@phc.ox.ac.uk", "checked_by": "", From 21e9e2bb13ec0271255ce31f69f2d84e4ce22db6 Mon Sep 17 00:00:00 2001 From: Richard Croker Date: Tue, 1 Oct 2024 12:29:01 +0100 Subject: [PATCH 13/23] typo --- openprescribing/measures/definitions/doacs_nhse.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/openprescribing/measures/definitions/doacs_nhse.json b/openprescribing/measures/definitions/doacs_nhse.json index 8736f60041..240799b27b 100644 --- a/openprescribing/measures/definitions/doacs_nhse.json +++ b/openprescribing/measures/definitions/doacs_nhse.json @@ -94,7 +94,7 @@ "INNER JOIN {dmd}.ontformroute AS route ON ont.form = route.cd -- joins ont table to ontform table to get formulation names " ], "denominator_where": [ - "vpi.ing IN (698090000,700039002,1162278009,442031002) --Apixaban, babigatran etexilate mesilate, edoxaban tosilate, rivaroxaban" + "vpi.ing IN (698090000,700039002,1162278009,442031002) --Apixaban, dabigatran etexilate mesilate, edoxaban tosilate, rivaroxaban" ], "authored_by": "richard.croker@phc.ox.ac.uk", "checked_by": "", From 7a3a084a29e773ef83659c1b876256f5f892b0b3 Mon Sep 17 00:00:00 2001 From: Richard Croker Date: Tue, 1 Oct 2024 12:31:07 +0100 Subject: [PATCH 14/23] trying to fix IN statement --- openprescribing/measures/definitions/doacs_nhse.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/openprescribing/measures/definitions/doacs_nhse.json b/openprescribing/measures/definitions/doacs_nhse.json index 240799b27b..265d925777 100644 --- a/openprescribing/measures/definitions/doacs_nhse.json +++ b/openprescribing/measures/definitions/doacs_nhse.json @@ -94,7 +94,7 @@ "INNER JOIN {dmd}.ontformroute AS route ON ont.form = route.cd -- joins ont table to ontform table to get formulation names " ], "denominator_where": [ - "vpi.ing IN (698090000,700039002,1162278009,442031002) --Apixaban, dabigatran etexilate mesilate, edoxaban tosilate, rivaroxaban" + "vpi.ing IN (698090000,1162278009,700039002,442031002) --Apixaban, dabigatran etexilate mesilate, edoxaban tosilate, rivaroxaban \n" ], "authored_by": "richard.croker@phc.ox.ac.uk", "checked_by": "", From c99dffe1c637338d00d499b7e2364204521b555e Mon Sep 17 00:00:00 2001 From: Richard Croker Date: Tue, 1 Oct 2024 12:33:08 +0100 Subject: [PATCH 15/23] change numerator to denominator --- openprescribing/measures/definitions/doacs_nhse.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/openprescribing/measures/definitions/doacs_nhse.json b/openprescribing/measures/definitions/doacs_nhse.json index 265d925777..b1d185d5a5 100644 --- a/openprescribing/measures/definitions/doacs_nhse.json +++ b/openprescribing/measures/definitions/doacs_nhse.json @@ -85,7 +85,7 @@ "OR vpi.ing = 442031002 AND NOT((SUBSTR(p.bnf_code,10,2) ='AA' AND route.descr ='tablet.oral')) --Rivaroxaban (except generic tablets) " ], "denominator_type": "custom", - "denominator_columns": "SUM(p.items) AS numerator", + "denominator_columns": "SUM(p.items) AS denominator", "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 \n", From 81df75e8b10e5c1a313676e427b451961fa2a5df Mon Sep 17 00:00:00 2001 From: Richard Croker Date: Tue, 1 Oct 2024 12:43:26 +0100 Subject: [PATCH 16/23] Update doacs_nhse.json --- openprescribing/measures/definitions/doacs_nhse.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/openprescribing/measures/definitions/doacs_nhse.json b/openprescribing/measures/definitions/doacs_nhse.json index b1d185d5a5..ac7b8248e6 100644 --- a/openprescribing/measures/definitions/doacs_nhse.json +++ b/openprescribing/measures/definitions/doacs_nhse.json @@ -56,7 +56,7 @@ "

The ", "NHS England National Medicines Optimisation Opportunities for 2024/25 identify using best value direct-acting oral anticoagulants as an area for improvement.

", "

Please note: OpenPrescribing.net measures have a consistent way of visualising measures, where 'lower is better' ", - "and therefore in this case we show the proportion of DOACs which are NOT prescribed as edoxaban or generic apixaban tablets. There are also other oral formulations of generic apixaban and rivaroxaban recently introduced onto the market.", + "and therefore in this case we show the proportion of DOACs which are NOT prescribed as edoxaban or generic apixaban tablets. There are also other oral formulations of generic DOACs recently introduced onto the market.", "We do not consider these to be as cost-effective, and they are not considered as first-line in this measure." ], "tags": [ From f31c21faa1453181663f92d2169bda83c418d981 Mon Sep 17 00:00:00 2001 From: speed-vm <77046757+speed-vm@users.noreply.github.com> Date: Tue, 1 Oct 2024 14:22:37 +0100 Subject: [PATCH 17/23] Update doacs_nhse.json Text edits --- .../measures/definitions/doacs_nhse.json | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/openprescribing/measures/definitions/doacs_nhse.json b/openprescribing/measures/definitions/doacs_nhse.json index ac7b8248e6..e5d61c41af 100644 --- a/openprescribing/measures/definitions/doacs_nhse.json +++ b/openprescribing/measures/definitions/doacs_nhse.json @@ -1,14 +1,14 @@ { "name": "Proportion of Direct Acting Oral Anticoagulants (DOACs) not prescribed as generic rivaroxaban or generic apixaban tablets", - "title": "Percentage DOACs items not prescribed as generic rivaroxaban or generic apixaban tablets", - "description": "Percentage DOACs items not prescribed as generic rivaroxaban or generic apixaban tablets", + "title": "Percentage DOAC items not prescribed as generic rivaroxaban or generic apixaban tablets", + "description": "Percentage DOAC items not prescribed as generic rivaroxaban or generic apixaban tablets", "numerator_short": "DOAC items not prescribed as generic rivaroxaban or generic apixaban tablets", - "denominator_short": "DOACs items", + "denominator_short": "DOAC items", "y_label": "Percentage DOACs not prescribed as generic rivaroxaban or generic apixaban tablets", "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 ", + "

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 ", @@ -25,8 +25,8 @@ "", " ", " ", - " 1 (Best value)", - " generic rivaroxaban
generic apixaban", + " 1 (Joint best value)", + " Rivaroxaban (generic)
Apixaban (generic)", " Best value once a day treatment
Best value twice a day treatment
", " ", " ", @@ -54,7 +54,7 @@ "", "

", "

The ", - "NHS England National Medicines Optimisation Opportunities for 2024/25 identify using best value direct-acting oral anticoagulants as an area for improvement.

", + "NHS England National Medicines Optimisation Opportunities for 2024/25 also identify using best value direct-acting oral anticoagulants as an area for improvement.

", "

Please note: OpenPrescribing.net measures have a consistent way of visualising measures, where 'lower is better' ", "and therefore in this case we show the proportion of DOACs which are NOT prescribed as edoxaban or generic apixaban tablets. There are also other oral formulations of generic DOACs recently introduced onto the market.", "We do not consider these to be as cost-effective, and they are not considered as first-line in this measure." From b0869b14c8d58b3b13afcec341b6a58023c5f28c Mon Sep 17 00:00:00 2001 From: Richard Croker Date: Tue, 1 Oct 2024 15:02:47 +0100 Subject: [PATCH 18/23] Update doacs_nhse.json --- openprescribing/measures/definitions/doacs_nhse.json | 4 ---- 1 file changed, 4 deletions(-) diff --git a/openprescribing/measures/definitions/doacs_nhse.json b/openprescribing/measures/definitions/doacs_nhse.json index e5d61c41af..d78f86a6ed 100644 --- a/openprescribing/measures/definitions/doacs_nhse.json +++ b/openprescribing/measures/definitions/doacs_nhse.json @@ -74,8 +74,6 @@ "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 \n", - "INNER JOIN {dmd}.vpi AS vpi ON vmp.id = vpi.vmp -- joins vmp to vpi table to get ingredient strengths (strnt_nmrtr_val) \n", - "INNER JOIN {dmd}.ont AS ont ON vmp.id = ont.vmp -- joins vmp to ont table to get formulation codes \n", "INNER JOIN {dmd}.ontformroute AS route ON ont.form = route.cd -- joins ont table to ontform table to get formulation names " ], "numerator_where": [ @@ -89,8 +87,6 @@ "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 \n", - "INNER JOIN {dmd}.vpi AS vpi ON vmp.id = vpi.vmp -- joins vmp to vpi table to get ingredient strengths (strnt_nmrtr_val) \n", - "INNER JOIN {dmd}.ont AS ont ON vmp.id = ont.vmp -- joins vmp to ont table to get formulation codes \n", "INNER JOIN {dmd}.ontformroute AS route ON ont.form = route.cd -- joins ont table to ontform table to get formulation names " ], "denominator_where": [ From 875c92f98c91d589733376bad5d4b469eab73461 Mon Sep 17 00:00:00 2001 From: speed-vm <77046757+speed-vm@users.noreply.github.com> Date: Tue, 1 Oct 2024 15:29:23 +0100 Subject: [PATCH 19/23] Update doacs_nhse.json adding back in couple of lines --- openprescribing/measures/definitions/doacs_nhse.json | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/openprescribing/measures/definitions/doacs_nhse.json b/openprescribing/measures/definitions/doacs_nhse.json index d78f86a6ed..e5d61c41af 100644 --- a/openprescribing/measures/definitions/doacs_nhse.json +++ b/openprescribing/measures/definitions/doacs_nhse.json @@ -74,6 +74,8 @@ "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 \n", + "INNER JOIN {dmd}.vpi AS vpi ON vmp.id = vpi.vmp -- joins vmp to vpi table to get ingredient strengths (strnt_nmrtr_val) \n", + "INNER JOIN {dmd}.ont AS ont ON vmp.id = ont.vmp -- joins vmp to ont table to get formulation codes \n", "INNER JOIN {dmd}.ontformroute AS route ON ont.form = route.cd -- joins ont table to ontform table to get formulation names " ], "numerator_where": [ @@ -87,6 +89,8 @@ "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 \n", + "INNER JOIN {dmd}.vpi AS vpi ON vmp.id = vpi.vmp -- joins vmp to vpi table to get ingredient strengths (strnt_nmrtr_val) \n", + "INNER JOIN {dmd}.ont AS ont ON vmp.id = ont.vmp -- joins vmp to ont table to get formulation codes \n", "INNER JOIN {dmd}.ontformroute AS route ON ont.form = route.cd -- joins ont table to ontform table to get formulation names " ], "denominator_where": [ From 37b770a1cfe001eb97e2f70fe02ad81ec0b6ec9b Mon Sep 17 00:00:00 2001 From: speed-vm <77046757+speed-vm@users.noreply.github.com> Date: Tue, 1 Oct 2024 15:34:12 +0100 Subject: [PATCH 20/23] Update doacs_nhse.json removed line for vpi, not needed --- openprescribing/measures/definitions/doacs_nhse.json | 2 -- 1 file changed, 2 deletions(-) diff --git a/openprescribing/measures/definitions/doacs_nhse.json b/openprescribing/measures/definitions/doacs_nhse.json index e5d61c41af..df594952c9 100644 --- a/openprescribing/measures/definitions/doacs_nhse.json +++ b/openprescribing/measures/definitions/doacs_nhse.json @@ -74,7 +74,6 @@ "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 \n", - "INNER JOIN {dmd}.vpi AS vpi ON vmp.id = vpi.vmp -- joins vmp to vpi table to get ingredient strengths (strnt_nmrtr_val) \n", "INNER JOIN {dmd}.ont AS ont ON vmp.id = ont.vmp -- joins vmp to ont table to get formulation codes \n", "INNER JOIN {dmd}.ontformroute AS route ON ont.form = route.cd -- joins ont table to ontform table to get formulation names " ], @@ -89,7 +88,6 @@ "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 \n", - "INNER JOIN {dmd}.vpi AS vpi ON vmp.id = vpi.vmp -- joins vmp to vpi table to get ingredient strengths (strnt_nmrtr_val) \n", "INNER JOIN {dmd}.ont AS ont ON vmp.id = ont.vmp -- joins vmp to ont table to get formulation codes \n", "INNER JOIN {dmd}.ontformroute AS route ON ont.form = route.cd -- joins ont table to ontform table to get formulation names " ], From f13e0e73b4704c73e2053707a5bd9baaccb4a855 Mon Sep 17 00:00:00 2001 From: speed-vm <77046757+speed-vm@users.noreply.github.com> Date: Tue, 1 Oct 2024 15:45:02 +0100 Subject: [PATCH 21/23] Update doacs_nhse.json added vpi and ont back in and signed as reviewed --- openprescribing/measures/definitions/doacs_nhse.json | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/openprescribing/measures/definitions/doacs_nhse.json b/openprescribing/measures/definitions/doacs_nhse.json index df594952c9..694871ff64 100644 --- a/openprescribing/measures/definitions/doacs_nhse.json +++ b/openprescribing/measures/definitions/doacs_nhse.json @@ -74,6 +74,7 @@ "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 \n", + "INNER JOIN {dmd}.vpi AS vpi ON vmp.id = vpi.vmp -- joins vmp to vpi table to get ingredient strengths (strnt_nmrtr_val) \n", "INNER JOIN {dmd}.ont AS ont ON vmp.id = ont.vmp -- joins vmp to ont table to get formulation codes \n", "INNER JOIN {dmd}.ontformroute AS route ON ont.form = route.cd -- joins ont table to ontform table to get formulation names " ], @@ -88,6 +89,7 @@ "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 \n", + "INNER JOIN {dmd}.vpi AS vpi ON vmp.id = vpi.vmp -- joins vmp to vpi table to get ingredient strengths (strnt_nmrtr_val) \n", "INNER JOIN {dmd}.ont AS ont ON vmp.id = ont.vmp -- joins vmp to ont table to get formulation codes \n", "INNER JOIN {dmd}.ontformroute AS route ON ont.form = route.cd -- joins ont table to ontform table to get formulation names " ], @@ -95,7 +97,7 @@ "vpi.ing IN (698090000,1162278009,700039002,442031002) --Apixaban, dabigatran etexilate mesilate, edoxaban tosilate, rivaroxaban \n" ], "authored_by": "richard.croker@phc.ox.ac.uk", - "checked_by": "", + "checked_by": "victoria.speed@phc.ox.ac.uk", "date_reviewed": "2024-10-01", "next_review": "2026-09-16", "measure_complexity": "low", From 9c8e29e8f7184bcada818aee344a5d9d48e36327 Mon Sep 17 00:00:00 2001 From: speed-vm <77046757+speed-vm@users.noreply.github.com> Date: Tue, 1 Oct 2024 16:11:30 +0100 Subject: [PATCH 22/23] Update doacs_nhse.json Removing unnecessary code from denominator --- openprescribing/measures/definitions/doacs_nhse.json | 2 -- 1 file changed, 2 deletions(-) diff --git a/openprescribing/measures/definitions/doacs_nhse.json b/openprescribing/measures/definitions/doacs_nhse.json index 694871ff64..90f58c5d7e 100644 --- a/openprescribing/measures/definitions/doacs_nhse.json +++ b/openprescribing/measures/definitions/doacs_nhse.json @@ -90,8 +90,6 @@ "{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 \n", "INNER JOIN {dmd}.vpi AS vpi ON vmp.id = vpi.vmp -- joins vmp to vpi table to get ingredient strengths (strnt_nmrtr_val) \n", - "INNER JOIN {dmd}.ont AS ont ON vmp.id = ont.vmp -- joins vmp to ont table to get formulation codes \n", - "INNER JOIN {dmd}.ontformroute AS route ON ont.form = route.cd -- joins ont table to ontform table to get formulation names " ], "denominator_where": [ "vpi.ing IN (698090000,1162278009,700039002,442031002) --Apixaban, dabigatran etexilate mesilate, edoxaban tosilate, rivaroxaban \n" From 6c011668731b5dadb0e2178e9b9d7034147d4a64 Mon Sep 17 00:00:00 2001 From: speed-vm <77046757+speed-vm@users.noreply.github.com> Date: Tue, 1 Oct 2024 16:34:56 +0100 Subject: [PATCH 23/23] Update doacs_nhse.json --- openprescribing/measures/definitions/doacs_nhse.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/openprescribing/measures/definitions/doacs_nhse.json b/openprescribing/measures/definitions/doacs_nhse.json index 90f58c5d7e..7f4cae85c4 100644 --- a/openprescribing/measures/definitions/doacs_nhse.json +++ b/openprescribing/measures/definitions/doacs_nhse.json @@ -89,7 +89,7 @@ "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 \n", - "INNER JOIN {dmd}.vpi AS vpi ON vmp.id = vpi.vmp -- joins vmp to vpi table to get ingredient strengths (strnt_nmrtr_val) \n", + "INNER JOIN {dmd}.vpi AS vpi ON vmp.id = vpi.vmp -- joins vmp to vpi table to get ingredient strengths (strnt_nmrtr_val) \n" ], "denominator_where": [ "vpi.ing IN (698090000,1162278009,700039002,442031002) --Apixaban, dabigatran etexilate mesilate, edoxaban tosilate, rivaroxaban \n"