opensafely / codelist-development

Repository for discussion of OpenSAFELY codelists
7 stars 3 forks source link

*MEDICATION*: Long acting opioids 50mg to 119mg per day OME #295

Closed chrisjwood16 closed 4 months ago

chrisjwood16 commented 5 months ago

User requirements

A codelist is needed of all long acting opioids with an oral morphine equivalence (OME) of 50-119mg per day - used for analgesia (any route) excluding cough suppression, motility, general anaesthesia, opiate use disorder - this is for a project looking at opioid prescribing for patients on hospital waiting lists.

Sensitivity versus specificity

Any opioid as a modified release formulation or transdermal patch with daily OME 50-119mg based on standard dosing.

Relevant definitions or links to important reference sources

Opioid equivalence - https://fpm.ac.uk/opioids-aware-structured-approach-opioid-prescribing/dose-equivalents-and-changing-opioids

Coding system

dm+d

Existing relevant codelists

Nil

Search terms / synonyms / search strategy

BigQuery used to identify relevant products from BNF data. dm+d data used to filter for modified release/patch versions as appropriate. Faculty of Pain Medicine OME conversions used to calculate daily OME - usual licensed dosing used to determine OME (for example morphine sulphate MR products licensed for twice a day administration (with exception of MXL) - so if prescribed 60mg tablet assume taking twice a day (120mg / day total) - or for MXL assume taking once a day so would be prescribed 120mg tablet to meet 120mg/day total.

  SELECT DISTINCT presentation_code as code, presentation as term
  FROM hscic.bnf p 
  INNER JOIN dmd.vmp vmp ON CONCAT(SUBSTR(p.presentation_code,0,9),'AA', SUBSTR(p.presentation_code,-2), SUBSTR(p.presentation_code,-2)) = vmp.bnf_code
  INNER JOIN dmd.vpi AS vpi ON vmp.id = vpi.vmp
  INNER JOIN dmd.ont AS ont ON vmp.id = ont.vmp
  INNER JOIN dmd.ontformroute AS route ON ont.form = route.cd
  WHERE
  ((vpi.ing = (60886004) AND route.descr LIKE '%modified-release.oral' AND p.presentation NOT LIKE '%MXL%' AND strnt_nmrtr_val/(COALESCE(strnt_dnmtr_val,1)) >=25 AND strnt_nmrtr_val/(COALESCE(strnt_dnmtr_val,1)) <60) /* Morphine Sulfate MR oral preps [excluding MXL as 24hr] (ing code) */
  OR (vpi.ing = (60886004) AND route.descr LIKE '%modified-release.oral' AND p.presentation LIKE '%MXL%' AND strnt_nmrtr_val/(COALESCE(strnt_dnmtr_val,1)) >=50 AND strnt_nmrtr_val/(COALESCE(strnt_dnmtr_val,1)) <120) /* MXL (24hr release) (ing code) */
  OR (vpi.ing = 387024006 AND route.descr LIKE '%modified-release.oral' AND p.presentation NOT LIKE '%Onexila%' AND strnt_nmrtr_val/(COALESCE(strnt_dnmtr_val,1)) >=17 AND strnt_nmrtr_val/(COALESCE(strnt_dnmtr_val,1)) <40) /* Oxycodone MR oral preps [excluding Onexila as 24hr] (ing code) */
  OR (vpi.ing = 387024006 AND route.descr LIKE '%modified-release.oral' AND p.presentation LIKE '%Onexila%' AND strnt_nmrtr_val/(COALESCE(strnt_dnmtr_val,1)) >=33 AND strnt_nmrtr_val/(COALESCE(strnt_dnmtr_val,1)) <80) /* Onexila MR (24hr release) (ing code) */
  OR (vpi.ing IN (442699004,441757005,40755011000001109)  AND route.descr LIKE '%modified-release.oral' AND strnt_nmrtr_val/(COALESCE(strnt_dnmtr_val,1)) >=63 AND strnt_nmrtr_val/(COALESCE(strnt_dnmtr_val,1)) <150) /* Tapentadol HCl/Phosphate MR oral preps (ing code) */
  OR (vpi.ing IN (386858008, 108505002) AND route.descr LIKE '%modified-release.oral' AND (p.presentation NOT LIKE '%Tradorec XL%' AND p.presentation NOT LIKE '%Zamadol 24hr%' AND p.presentation NOT LIKE '%Zydol XL%' AND p.presentation NOT LIKE '%Dromadol XL%') AND strnt_nmrtr_val/(COALESCE(strnt_dnmtr_val,1)) >=250 AND strnt_nmrtr_val/(COALESCE(strnt_dnmtr_val,1)) <600) /* Tramadol HCl/ Tramadol MR 12 hour oral preps (ing code) */
  OR (vpi.ing IN (386858008, 108505002) AND route.descr LIKE '%modified-release.oral' AND (p.presentation LIKE '%Tradorec XL%' OR p.presentation LIKE '%Zamadol 24hr%' OR p.presentation LIKE '%Zydol XL%' OR p.presentation LIKE '%Dromadol XL%') AND strnt_nmrtr_val/(COALESCE(strnt_dnmtr_val,1)) >=500 AND strnt_nmrtr_val/(COALESCE(strnt_dnmtr_val,1)) <1200) /* Tramadol HCl/ Tramadol MR 24 hour oral preps (ing code) */
  OR (vpi.ing IN (44508008, 387485001) AND route.descr LIKE '%modified-release.oral' AND strnt_nmrtr_val/(COALESCE(strnt_dnmtr_val,1)) >=5 AND strnt_nmrtr_val/(COALESCE(strnt_dnmtr_val,1)) <12) /* Hydromorphone (ing code) */
  OR (vpi.ing IN (322538006, 387322000) AND route.descr LIKE '%modified-release.oral' AND strnt_nmrtr_val/(COALESCE(strnt_dnmtr_val,1)) >=250 AND strnt_nmrtr_val/(COALESCE(strnt_dnmtr_val,1)) <600) /* Dihydrocodeine (ing code) */
  OR (vpi.ing = (387173000)  AND route.descr LIKE 'patch.transdermal' AND strnt_nmrtr_val/(COALESCE(strnt_dnmtr_val,1)) >20 AND strnt_nmrtr_val/(COALESCE(strnt_dnmtr_val,1)) <52) /* Buprenorphine patches (ing code) */
  OR (vpi.ing = 373492002 AND route.descr = 'patch.transdermal' AND strnt_nmrtr_val/(COALESCE(strnt_dnmtr_val,1)) >=25 AND strnt_nmrtr_val/(COALESCE(strnt_dnmtr_val,1)) <50)) /* Fentanyl patches (ing code) */
  GROUP BY code, term

Inclusion criteria for codes

Any modified release or transdermal opioid with daily OME 50-119mg (based on licensed dosing).

Exclusion criteria for codes

No response

Borderline cases

No response

Final codelist

BNF format: https://www.opencodelists.org/codelist/opensafely/long-acting-opioids-50mg-to-119mg-per-day-ome/74114984/

dmd format: https://www.opencodelists.org/codelist/opensafely/long-acting-opioids-50mg-to-119mg-per-day-ome-dmd/41f2631a/

speed-vm commented 4 months ago

@chrisjwood16 Fentanyl 37.5microgram/hr patch missing from this one. Otherwise looks good

chrisjwood16 commented 4 months ago

Thanks for spotting. The major weakness in this method seems to be patches as the patch equivalence is only given at fixed doses so requires more thought about cut offs and available patch strengths. Will add in now.

chrisjwood16 commented 4 months ago

Updated codelist here: https://www.opencodelists.org/codelist/opensafely/long-acting-opioids-50mg-to-119mg-per-day-ome/74114984

Diff with previous version: https://www.opencodelists.org/codelist/opensafely/long-acting-opioids-50mg-to-119mg-per-day-ome/74114984/diff/09520ce9/

speed-vm commented 4 months ago

@chrisjwood16 .diff 'ing' like this is really helpful way to show updates after review. Looks good now.

chrisjwood16 commented 4 months ago

Published: BNF format: https://www.opencodelists.org/codelist/opensafely/long-acting-opioids-50mg-to-119mg-per-day-ome/74114984/

dmd format: https://www.opencodelists.org/codelist/opensafely/long-acting-opioids-50mg-to-119mg-per-day-ome-dmd/41f2631a/