Skip to content

Instantly share code, notes, and snippets.

@robmoore
Created October 29, 2018 23:48
Show Gist options
  • Save robmoore/d6156a3c2066142553871bcaf3c71432 to your computer and use it in GitHub Desktop.
Save robmoore/d6156a3c2066142553871bcaf3c71432 to your computer and use it in GitHub Desktop.
import requests
from urllib.parse import quote_plus
url_base = 'https://rxnav.nlm.nih.gov/REST'
def lookup_bn(rxcui):
brand_names = {}
url = f'{url_base}/rxcui/{rxcui}/related.json?tty=BN'
print(url)
response = requests.get(url).json()
for concept_group in response['relatedGroup']['conceptGroup']:
if 'conceptProperties' in concept_group:
for concept_property in concept_group['conceptProperties']:
brand_names[concept_property['rxcui']] = {'rxcui': concept_property['rxcui'],
'name': concept_property['name']}
return brand_names
def lookup_class_id(class_name, class_type='MESHPA'):
classes = {}
class_name = quote_plus(class_name)
url = f'{url_base}/rxclass/class/byName.json?className={class_name}'
print(url)
response = requests.get(url).json()
for min_concept in response['rxclassMinConceptList']['rxclassMinConcept']:
classes[min_concept['classType']] = min_concept['classId']
return classes[class_type]
def lookup_class_members(class_id, rela_source='MESH', tty='IN'):
drugs = {}
url = f'{url_base}/rxclass/classMembers.json?classId={class_id}&relaSource={rela_source}&tty={tty}'
print(url)
response = requests.get(url).json()
for drug_details in response['drugMemberGroup']['drugMember']:
drugs[drug_details['minConcept']['rxcui']] = {'rxcui': drug_details['minConcept']['rxcui'],
'name': drug_details['minConcept']['name']}
return drugs
class_id = lookup_class_id('hypnotics and sedatives')
class_members = lookup_class_members(class_id)
generics = [class_member['name'] for class_member in class_members.values()]
brand_names = [brand_name['name'] for class_member in class_members.values() for brand_name in
lookup_bn(class_member['rxcui']).values()]
for drug in generics:
print(drug)
print()
for drug in brand_names:
print(drug)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment