ebmdatalab / openprescribing

A Django app providing a REST API and dashboards for the HSCIC's GP prescribing data
https://openprescribing.net
MIT License
97 stars 26 forks source link

Can we get an improved BNF->dm+d map? #1029

Closed sebbacon closed 5 years ago

sebbacon commented 6 years ago

We use this spreadsheet to map from BNF Codes to dm+d.

It is published quarterly:

The BNF SNOMED mapping version that is published contains data pertaining to the last month of the previous full financial quarter, for example March 2018 dataset contains data relating to December 2017)

We have noticed some missing mappings, so we've compared the current BNF mapping with the March prescribing data per the above notes.

There are 1220 BNF Codes in the prescribing data, for which there are no mapping provided to dm+d. This means about 5% of all codes have no mapping. Full table here. Mitigating this is that these account for only 0.03% of all prescribed items. A manual spot check of the missing data suggests it is possible to map all of them (see examples below).

It would be useful to know either:

Examples of missing mappings that appear technically possible:

bnf_code bnf_name dmd name notes
0102000AKAAAAAA Eluxadoline_Tab 100mg Eluxadoline 100mg tablets
0102000L0AAADAD Glycopyrronium Brom_Liq Spec 1mg/5ml Glycopyrronium bromide 1mg/5ml oral suspension The issue here may be that there's a choice to map this to either (or both) of "Glycopyrronium bromide 1mg/5ml oral solution" and "Glycopyrronium bromide 1mg/5ml oral suspension"
0104010H0AAAKAK Kaolin_Tab 400mg Kaolin 400mg Calcium carbonate 75mg tablets The calcium carbonate is not mentioned in the BNF name, however, googling appears to confirm this is the only form of Kaolin tablet available, and it's the only Kaolin tablet in dm+d
0212000P0AAAFAF Fenofibrate_Cap 200mg Fenofibrate 200mg capsules There are mappings supplied for several AMPs, but not the VMP for some reason
040702050AAACAC Hydromorphone HCl_Cap 8mg M/R Hydromorphone 8mg modified-release capsules
sebbacon commented 6 years ago

Have sent this as an enquiry to BSA today

sebbacon commented 6 years ago

Have just nudged them

sebbacon commented 6 years ago

A new mapping has been supplied by email, with the following comments


Please find the attached new prototype BNF SNOMED mapping. This new version will be available on the BSA website soon. This new mapping file will have some of your missing link answered.

There are (and will be) still some BNF not mapping to SNOMED. One of the main reason for that is due to BNF and SNOMED are held in two different system, and we are currently in a process of streamlining it and bringing it into one system.

Current Structure: Missing Current Structure: Mapped Future Structure Comments
Medihoney A-Bact Honey 50g Wound Dress H/Base Top Applic (20030300023) Medihoney A-Bact Honey 20g Wound Dress H/Base Top Applic (20030300020) Medihoney Antibacterial Medical Honey dressing (Derma Sciences Europe, Ltd) (20030300020) All prescribing against both Current BNF will be accumulated against the Future Structure
IntraSite Gel 15g Wound Dress H/Gel Ster (20030500010) IntraSite Gel 8g Wound Dress H/Gel Ster (20030500005) IntraSite Gel dressing (Smith & Nephew Healthcare Ltd) (20030500005)
Sod Bicarb_Oral Soln 420mg/5ml (0101012B0AABWBW) Sod Bicarb_Liq Spec 420mg/5ml (0101012B0AAAUAU) Sodium bicarbonate 420mg/5ml (1mmol/ml) oral solution (0101012B0AAAUAU)
Nicotine_Chewing Gum 4mg S/F (Icy Wte) (0410020B0AABTBT) Nicotine_Chewing Gum 4mg S/F (0410020B0AABDBD) Nicotine 4mg medicated chewing gum sugar free (0410020B0AABDBD)
sebbacon commented 6 years ago

The new mapping gives us all the VMPs, AMPs, VMPPs, and AMPPs for each BNF code:

image

Outside of appliances, this means there are 252 BNF Codes in the prescribing data without mappings, which is a significant improvement. I'm not sure what "All prescribing against both Current BNF will be accumulated against the Future Structure" means, but I think it might mean that they'll add the 252 codes to the next mapping release.

sebbacon commented 6 years ago

Further clarification:

The BNF - SNOMED mapping file published on NHS BSA website only includes products that can be mapped from dm+d to MDR (i.e. NHS BSA's legacy drug database).

Prescription data may still include a small number of prescription items which are not listed on dm+d. This is due to the following reasons:

1) Our MDR legacy drug database being used to process late submitted prescriptions (Late prescriptions are where dispensing contractors submit prescriptions not in the normal processing month)

2) Prescriptions prescribed in England and dispensed in Scotland / Wales

3) Prescription dispensed in Isle of Man and Channel Islands.

In the above scenarios the operator can choose products from the MDR drug lookup which are not listed on dm+d. In these cases these BNF records will not be included in the BNF - SNOMED mapping data.

We are currently in the process of moving to one drug database which will be dm+d. This means that in the near future unmapped BNF prescribing will not be available for the operators to pick when processing prescriptions

We have checked a few unmapped BNF codes and this is due to the above reason. You could send us the 252 BNF codes which you mentioned in your email for us to verify and confirm.

Also I would like to refer to JJ's email dated "24th July 2018 15:24" where she mentioned about the BNF - SNOMED Mapping data's timeline against prescription data.

To clarify my comment "All prescribing against both Current BNF will be accumulated against the Future Structure" in my previous email, what I meant by future structure is the prototype mapping file I sent to you. Hopefully this answers your question 1 fully.

sebbacon commented 6 years ago

@inglesp pls digest and comment as you see fit

sebbacon commented 6 years ago

The edge case where a BNF code maps directly to a Pack (rather than a Product and all its Packs) doesn't appear to be mapped consistently. Have sent this email to BSA:

Thanks for this. I have a further question.

Looking at bnf code 0206010F0AACHCH. Its MDR description is Glyceryl Trinit_Sub A/Spy 400mcg (200D)

It appears four times in the mapping, as four AMPPs:

  • Glyceryl trinitrate 400micrograms/dose aerosol sublingual (Kent Pharmaceuticals Ltd) 200 doses
  • Glyceryl trinitrate 400micrograms/dose aerosol sublingual (Actavis UK Ltd) 200 doses
  • Glyceryl trinitrate 400micrograms/dose aerosol sublingual (A A H Pharmaceuticals Ltd) 180 doses
  • Glyceryl trinitrate 400micrograms/dose aerosol sublingual (A A H Pharmaceuticals Ltd) 200 doses

Note the last two, i.e. that AAH Pharma appear to make 180D and 200D packs yet both are mapped to the code that appears to be for the 200D packs.

This is just an example, there are several other cases where a BNF code which indicates a Pack (rather than the usual Product) appears to be mapped inconsistently to VMPPs or AMPPs, if we judge its pack size by its MDR name.

sebbacon commented 6 years ago

Here's the file as provided to me BNF_SNOMED_MAPPING_201806_csv.zip

Currently loaded in bigquery here

inglesp commented 6 years ago

I have some questions about the SNOMED mapping data, which I think can only be answered by combining it with the rest of the dm+d data. @sebbacon, you may already have done this.

I'd like to break up the data into diamonds, where each diamond is identified by its VMP. (Does that make sense?)

Then, questions:

sebbacon commented 6 years ago

No I've not already done this.

I can't remember how you arranged them to look like a diamond but I get the gist!

I would expect everything that maps to a BNF code to have a VMP in its "diamond". Everything with a BNF code must be prescribable (or recently so) so:

inglesp commented 6 years ago
  • every VMP must have at least one VMPP
  • every VMP should have at least one AMP
  • every VMPP should have at least one AMPP

This is what I mean about the diamond -- it's written up on the wiki.

I think my questions above are worth answering, because if we're linking BNF codes to packs, as suggested here, we'll need to know when we use the pack name and when we use the product name.

inglesp commented 6 years ago

Some invariants, according to the data in BNF_SNOMED_MAPPING_201806_csv:

However...

In July we identified several cases in the June mapping of a single VMP having multiple BNF codes, and we explained this by observing that the BNF codes appeared to map to individual VMPPs.

For instance, here is one VMP that had (in the June mapping) four different BNF codes.

VMP ID dm+d name BNF code BNF name
3412311000001102 Absorbent cotton gauze type 13 light BP 1988 sterile 90cm 20040200120 Absorbent Cott Gz 90cm x 5m Ster
20040200100 Absorbent Cott Gz 90cm x 1m Ster
20040200130 Absorbent Cott Gz 90cm x 10m Ster
20040200110 Absorbent Cott Gz 90cm x 3m Ster

This corresponds to the four VMPPs that belong to the VMP:

VMP ID VMPPID VMPP name
3412311000001102 1180811000001103 Absorbent cotton gauze type 13 light BP 1988 sterile 90cm 1 m
3412311000001102 999011000001100 Absorbent cotton gauze type 13 light BP 1988 sterile 90cm 3 m
3412311000001102 1207011000001106 Absorbent cotton gauze type 13 light BP 1988 sterile 90cm 5 m
3412311000001102 978411000001106 Absorbent cotton gauze type 13 light BP 1988 sterile 90cm 10 m

However, in BNF_SNOMED_MAPPING_201806_csv, only 20040200100 is present, where it is mapped to the VMP and the four VMPPs.

What are we to make of this?

Either:

sebbacon commented 6 years ago

I have posed the question (and chased the other VMPP/dose issue) this morning by email

inglesp commented 5 years ago

BNF_SNOMED_MAPPING_201806_csv (from https://github.com/ebmdatalab/openprescribing/issues/1029#issuecomment-426950613 on 2018-10-04) does not have the same data as June 2018 Snomed mapping.xlsx, which is currently available from https://www.nhsbsa.nhs.uk/prescription-data/understanding-our-data/bnf-snomed-mapping.

inglesp commented 5 years ago

Specifically: BNF code 20040200100 is in BNF_SNOMED_MAPPING_201806_csv.csv (as described in https://github.com/ebmdatalab/openprescribing/issues/1029#issuecomment-427663269) but is not in June 2018 Snomed mapping.xlsx.

inglesp commented 5 years ago

And there are 321,265 rows in BNF_SNOMED_MAPPING_201806_csv.csv, and 143,417 in June 2018 Snomed mapping.xlsx.

inglesp commented 5 years ago

June 2018 Snomed mapping.xlsx just contains AMPPs and VMPPs, while BNF_SNOMED_MAPPING_201806_csv.csv also contains AMPs and VMPs.

inglesp commented 5 years ago

The date of June 2018 Snomed mapping.xlsx is 2018-06-29.

The date of BNF_SNOMED_MAPPING_201806_csv.csv is 2018-09-10.

So BNF_SNOMED_MAPPING_201806_csv.csv is more recent.

I'm not sure what data I was referring to above (in https://github.com/ebmdatalab/openprescribing/issues/1029#issuecomment-427663269) when I said "in July".

sebbacon commented 5 years ago

Another question I asked by email (unanswered):

And another question in addition to the one regarding 0206010F0AACHCH above.

In the published June mapping, there are a few examples of BNF codes which each map to their own VMPP but one VMP. For example, BNF codes 20040200120 and 20040200100 both to Absorbent Cott Gz 90cm x 5m Ster (VMP 3412311000001102), with respective VMPPs 1180811000001103 and 999011000001100 (these are bandages of 1m and 3m lengths). (This is true of 2 BNF codes in total in the case of this product).

In the July mapping you supplied (in the new format), only 20040200100 is present, where it is mapped to the VMP and the four VMPPs. What happened to the BNF code 20040200120 (and, indeed, 20040200110 and 20040200130?

inglesp commented 5 years ago

Some notes from today's call:

inglesp commented 5 years ago

Can we get an improved BNF->dm+d map?

Yes. The spreadsheet that we have been sent by the BSA allows us to link BNF codes to the majority of dm+d products.

I will adapt import_snomed_mapping in the dmd2 app to work with the existing code in the dmd app. Then we can close this issue.

See https://github.com/ebmdatalab/openprescribing/wiki/Mapping-from-dm-d-objects-to-BNF-codes for a more detailed writeup.

inglesp commented 5 years ago

Can we get an improved BNF->dm+d map?

Yes, and we're using it!