Medicine Pharmacovigilance toolkit Semantic search

Label/document search using medical synonyms

In medicine we repeatedly need answers to the following kinds of questions:

Based on a set of documents (like an H&P, a few progress notes, perhaps the results of a few lab tests), does a patient have or not have a clinical condition, eg, things like significant cardiac disease, risk factors for seizure, etc?

Based on a set of documents (like drug labels, perhaps the results of a couple of additional studies), has a given drug been associated with clinical conditions, eg, things like significant cardiac risk, risk of renal effects, etc?

This is a time-consuming problem. Usually the clinician ultimately must carefully read the chart, labels, or study to make such an assessment. But an intelligent search of such documents could assist the clinician’s evaluation.

Unfortunately, it’s a hard problem for software to provide any kind of definitive guidance. A first naive pass might include searching the relevant documents for phrases like “myocardial infarction” and “conduction disorder”, or “head injury” and “epilepsy”.

It helps to use standardized synonyms for various conditions and automatically search documents for all such synonyms. Examples of synonym sources include the UMLS Metathesaurus and National Library of Medicine. A second approach is then to search using all the synonyms for a clinical condition.

Here is an experimental search of drug labels using medical synonyms from the National Library of Medicine.


  • Enter “stribild” as drug
  • Press “Fetch label(s)” button (or just press enter)
  • Enter “pain” as search term
  • Press “Get synonyms for search terms” button (or just press enter)
  • Press “Search with synonyms”

Ultimately what is needed is semantic search, which may be amenable to hybrid approaches using these kinds of simple synonym searches combined with machine learning. For example, biologically-oriented BERT models provide some semantic search capability and are the subject of active research.


Anemia diagnosis with a forward-chaining rules engine

To better understand the use of a rules engine for support of clinical decision-making, an app for a simple diagnostic task was implemented in Clojure(script) using a forward-chaining rules engine (Clara) based on the Rete algorithm.

The app reflects well-known diagnostic approaches to anemia (see for example, Leung et al [1]), which are typically implemented imperatively, but here is based on a series of forward-chaining rules providing a functional approach.

Here are example rules:

(defrule anemic
[Lab (= test-name 'hct) (lab-low? hct-nl value)]
[Lab (= test-name 'hgb) (lab-low? hgb-nl value)]
[Lab (= test-name 'rbc-count) (lab-low? rbc-count-nl value)]]
(insert! (->Diagnoses "pt-0" "anemia")))
(defrule microcytic-anemia
[Diagnoses (= diagnosis "anemia")]
[Lab (= test-name 'mcv) (lab-low? mcv-nl value)]
(insert! (->Diagnoses "pt-0" "microcytic anemia")))
(defrule microcytic-but-no-iron-studies
[Diagnoses (= diagnosis "microcytic anemia")]
[:not [Lab (= test-name 'fe)]]
[:not [Lab (= test-name 'tibc)]]
[:not [Lab (= test-name 'ferritin)]]
(insert! (->Diagnoses "pt-0" "Advise getting iron studies.")))
(defrule macrocytic-anemia
[Diagnoses (= diagnosis "anemia")]
[Lab (= test-name 'mcv) (lab-high? mcv-nl value)]
(insert! (->Diagnoses "pt-0" "macrocytic anemia")))
(defrule macrocytic-but-no-workup
[Diagnoses (= diagnosis "macrocytic anemia")]
[:not [Lab (= test-name 'b12)]]
[:not [Lab (= test-name 'folate)]]
(insert! (->Diagnoses "pt-0" "Advise obtaining vitamin B12 and folate levels.")))
(defrule b12-deficiency-anemia
[Diagnoses (= diagnosis "macrocytic anemia")]
[Lab (= test-name 'b12) (lab-low? b12-nl value)]
[Lab (= test-name 'methylmalonate) (lab-low? methylmalonate-nl value)]
[Lab (= test-name 'homocysteine) (lab-high? homocysteine-nl value)]
(insert! (->Diagnoses "pt-0" "B12 deficiency anemia")))

(defrule fe-deficiency-anemia
[Diagnoses (= diagnosis "microcytic anemia")]
[Lab (= test-name 'fe) (lab-low? fe-nl value)]
[Lab (= test-name 'tibc) (lab-high? tibc-nl value)]
[Lab (= test-name 'ferritin) (lab-low? ferritin-nl value)]
(insert! (->Diagnoses "pt-0" "Iron deficiency anemia: find cause")))

(defrule sideroblastic-anemia
;; Microcytic anemia with iron overload, siderocytes/sideroblasts
[Diagnoses (= diagnosis "microcytic anemia")]
[Lab (= test-name 'fe) (lab-normal? fe-nl value)]
[Lab (= test-name 'fe) (lab-high? fe-nl value)]]
[Lab (= test-name 'ferritin) (lab-high? ferritin-nl value)]
[Lab (= test-name 'ferritin) (lab-normal? ferritin-nl value)]]
[Lab (= test-name 'sideroblasts)]
[Lab (= test-name 'siderocytes)]]
(insert! (->Diagnoses "pt-0" "Sideroblastic anemia; find cause")))
(defrule thalassemias
;; Microcytic anemia with signs of α or β thalassemia
[Diagnoses (= diagnosis "microcytic anemia")]
[Lab (= test-name 'fe) (lab-normal? fe-nl value)]
[Lab (= test-name 'fe) (lab-high? fe-nl value)]]
[Lab (= test-name 'ferritin) (lab-high? ferritin-nl value)]
[Lab (= test-name 'ferritin) (lab-normal? ferritin-nl value)]]
[Lab (= test-name 'teardrops)]
[Lab (= test-name 'targetcells)]
[Lab (= test-name 'splenomegaly)]]
(insert! (->Diagnoses "pt-0" "α or β thalassemia; get Hgb electrophoresis")))

The example app (demonstration purposes only; not suitable for clinical use) is here.

Complete source is available.

[1] Leung LL et al.”Approach to the adult with anemia.” Waltham, MA: UpToDate Inc. (Accessed February 15, 2021.)

Medicine Ontology Pharmacovigilance toolkit SPARQL

Pharmacological Actions

Interface to National Library of Medicine MESH SPARQL endpoint to obtain the pharmacological action of a medication, using the following type of query:

PREFIX rdf: <>
PREFIX rdfs: <>
PREFIX xsd: <>
PREFIX owl: <>
PREFIX meshv: <>
PREFIX mesh: <>
PREFIX mesh2020: <>
PREFIX mesh2019: <>
PREFIX mesh2018: <>
PREFIX : <urn:ex:>
?s ?p ?n . 
?possible_concepts (:|!:){,3} ?s . 
BIND (?possible_concepts as ?fresh_possible_concepts) .
?fresh_possible_concepts (:|!:){,3} ?n . 
?fresh_possible_concepts rdf:type meshv:TopicalDescriptor .
?fresh_possible_concepts meshv:pharmacologicalAction ?pa .
?pa rdfs:label ?paLabel .} '

Compare the results obtained via MESH with results obtainable via US FDA National Drug Code (NDC) Directory data:

MESH results for ‘Stribild’:

  • Anti-HIV Agents

US FDA NDC results for ‘Stribild’:

  • Mechanism of Action
    • HIV Integrase Inhibitors
    • Cytochrome P450 2C9 Inducers
    • Cytochrome P450 3A Inhibitors
    • P-Glycoprotein Inhibitors
    • Cytochrome P450 2D6 Inhibitors
    • Organic Anion Transporting Polypeptide 1B1 Inhibitors
    • Organic Anion Transporting Polypeptide 1B3 Inhibitors
    • Breast Cancer Resistance Protein Inhibitors
    • Nucleoside Reverse Transcriptase Inhibitors
    • Nucleoside Reverse Transcriptase Inhibitors
  • Established Pharmacological Class
    • Human Immunodeficiency Virus Integrase Strand Transfer Inhibitor
    • Cytochrome P450 3A Inhibitor
    • Human Immunodeficiency Virus Nucleoside Analog Reverse Transcriptase Inhibitor
    • Human Immunodeficiency Virus Nucleoside Analog Reverse Transcriptase Inhibitor
    • Hepatitis B Virus Nucleoside Analog Reverse Transcriptase Inhibitor
  • Chemical Structure
    • Nucleosides

Ontology Pharmacovigilance toolkit SPARQL

Medical Synonyms

Example interface to the National Library of Medicine MESH SPARQL endpoint, which returns medical synonyms using the following type of query:

PREFIX rdf: <>
PREFIX rdfs: <>
PREFIX xsd: <>
PREFIX owl: <>
PREFIX meshv: <>
PREFIX mesh: <>
PREFIX mesh2020: <>
PREFIX mesh2019: <>
PREFIX mesh2018: <>
PREFIX : <urn:ex:>


  # Which direct triples ?s match the query string?
  ?s ?p ?n.
  # Find ancestors a few levels above. The limiting numbers {,3} mean
  # only consider 3 levels at most - this is important as the number
  # of ancestors/descendants are potentially large.
  ?possible_concepts (:|!:){,3} ?s.
  # Of these ancestors, which have a direct path to the query string?
  ?possible_concepts (:|!:){,3} ?n.
  # ..and of these, we want concepts because they contain
  #   synonyms of interest
  [] meshv:preferredConcept ?possible_concepts.
  # Find all the children of these concepts
  ?possible_concepts (:|!:){,3} ?all_descendants.
  # Finally, enumerate labels of these concepts as synonyms of the
  # input string
  ?all_descendants meshv:label|meshv:prefLabel|rdfs:label|meshv:altLabel ?synonyms.}

Pharmacovigilance toolkit

Get drug class(es) of drug

Enter a drug name (generic or brand name) – returns the medication class or classes.

Pharmacovigilance toolkit

Drugs in class

Select a drug class to get a list of drugs in that class (with manufacturer).

Pharmacovigilance toolkit

Label grep

Experimental application to allow quick search across USPI and SmPC for multiple drugs.

Paste a comma-separated list of medications (either generic or brand name can be used).

Press fetch.

Enter a search term.

Simple clinical reasoning using Kanren

Here’s an example of construction of a tiny ontology and use of a particularly robust logic programming system — Dan Friedman and Oleg Kiselyov’s Kanren and a functional language like Scheme:

;; Assert a few simple facts
(define causes
(extend-relation (a1 a2)
(fact () ‘schizophrenia ‘paranoia)
(fact () ‘depression ‘paranoia)
(fact () ‘depression ‘anhedonia)
(fact () ‘depression ‘insomnia)))

;; We can also add facts to our little ontology
(define causes
(extend-relation (a1 a2) causes
(fact () ‘(bipolar disorder) ‘paranoia)))
(define causes
(extend-relation (a1 a2) causes
(fact () ‘(bipolar disorder) ‘mania)))
(define causes
(extend-relation (a1 a2) causes
(fact () ‘(bipolar disorder) ‘insomnia)))

;; Establish relationship of anatomical structures
(define caudal-to
(extend-relation (a1 a2)
(fact () ‘capsule ‘midbrain)
(fact () ‘midbrain ‘pons)
(fact () ‘pons ‘medulla)
(fact () ‘medulla ‘cord)))

(define crosses-at
(extend-relation (a1)
(fact () ‘pons)))

(define caudal-all
(lambda (cephalic caudal)
(adjacent cephalic caudal)
(exists (intermediate)
(all (adjacent cephalic intermediate)
(caudal-all intermediate caudal))))))

(define ipsilateral-symptoms?
(lambda (lesion-at)
(names (solve 5 (x)
(caudal-all lesion-at
(car (names
(solve 5 (s) (crosses-at s))))))))

;; Prettify solutions a bit
(define names
(lambda (ls)
(map car
(map cdr
(map car ls)))))

;; Try a simple relationship query:
;; What symptoms can depression cause?
;; (solve 5 …) means ‘give me at most 5 solutions
;; for the logic variable x that would make
;; (causes ‘depression x) true.
> (names (solve 5 (x) (causes ‘depression x)))
(paranoia anhedonia insomnia)

;; What symptoms can bipolar disorder cause?
> (names (solve 5 (x) (causes ‘(bipolar disorder) x)))
(paranoia mania insomnia)

;; What conditions cause paranoia?
> (names (solve 5 (x) (causes x ‘paranoia)))
(schizophrenia depression (bipolar disorder))

;; What structure is immediately caudal to the midbrain?
> (names (solve 5 (x) (caudal-to ‘midbrain x)))

;; What are *all* structures caudal to midbrain?
> (names (solve 5 (x) (caudal-all ‘midbrain x)))
(pons medulla cord)

;; What structure is cephalic to the pons?
;; (Note reordering of terms in the predicate.
;; You can read this logic statement as ‘give me
;; all answers such that x makes predicate caudal-all true’
> (names (solve 5 (x) (caudal-to x ‘pons)))

;; Give all terms cephalic to pons:
> (names (solve 5 (x) (caudal-all x ‘pons)))
(midbrain capsule)

;; Are symptoms ipsilateral to a given lesion location?
> (ipsilateral-symptoms? ‘cord)
() ;; i.e., false (empty list)

> (ipsilateral-symptoms? ‘medulla)
(_.0) ;; i.e., true for all

These are trivial examples. However, very sophisticated systems can be constructed using logical rather than declarative programming models.

Logic programming has traditionally been done in Prolog. However, systems like the Kanren family (eg, Minikanren) can be embedded in languages like Scheme, Lisp, and Haskell to take advantage of a functional paradigm. Compilation is possible to lower level languages like C for easy porting to various platforms, including ubiquitous portable computers.

For a good introduction to the use of logic programming embedded in a functional language like Scheme, see sections 4.3 – 4.4 of SICP [1].

Much of the current talk around clinical software unfortunately stops at electronic health records (EHR) – the paper chart (with all its limitations) mirrored in various incarnations of ‘the cloud’ (with the additional disadvantage of confidentiality rot). For all the endless effort put into EHR, it was a problem solved long ago with nothing more than punched-card-fed mainframes. All we are seeing now is the iterative pursuit of competing data interchange platforms.

Physicians and researchers need software that advances the goal of making routine things routine beyond just the level of data storage and retrieval…to decision support, data discovery and visualizationunsupervised ontology construction, learning, and scripting of reasoning agents.

Historical attempts at decision support include Mycin for diagnosing infectious blood diseases, which contained assertions and rules in the form if IF-THEN clauses:

the site of the culture is blood, AND the organism gram +, AND
the original infectious site was the GI tract, AND
the abdomen is the locus of infection, OR
the pelvis is the locus of infection
therapy should cover Enterobacteriaceae

Rules structured in this manner are brittle, and don’t use unification. Such a system, for example, would not robustly provide answers to queries for all flora that would be likely found in a pelvic infection. The narrow domains and lack of some of what we might call “common sense” knowledge can be problematic: H.R. Ekbia [1] humorously notes that querying a medical inference engine for suggestions on what could be causing the reddish-brown spots on the chassis and body of your Jeep, you’d get “measles”. Another medical support program, asked to suggest treatment for bacterial infection in the kidney, suggested boiling the kidney in hot water.

Another decision support system of historical interest was Internist-I – a system with a much broader domain of medical rules and knowledge. Here’s a transcript of a consultation with that system.


[1] Abelson H, Sussman GJ, Sussman J. Structure and Interpretation of Computer Programs, 2nd Edition. 1996, MIT Press, Cambridge MA.
[2] Ekbia, HR. Artificial Dreams – The Quest for Non-Biological Intelligence. 2008, Cambridge University Press, ppg 96-97.

Allen’s temporal calculus

I ported Allen’s temporal calculus to Racket (Scheme) – details here.

Query for medications containing acetaminophen

Hepatotoxicity due to excessive acetaminophen exposure and idiosyncratic drug reactions are now the most common causes of acute liver failure in the United States, surpassing liver failure from viral hepatitis [1-2]. A lack of awareness for how frequently acetaminophen is found in medications may contribute to overexposure.

(Code on Github)

# Use National Library of Medicine’s RXNorm API to
# find medications containing a given ingredient

import requests, json, urllib

def name_resolve_json (name):
# Give a possibly ambiguous name, returns a list of possible matches ranked
# by a likelihood score
s = ‘’.replace(‘xx’, urllib.quote(name))
r = requests.get(s, headers={‘Accept’: ‘application/json’, ‘charset’: ‘UTF-8’})
return r.json()

def first_ranked_cui (approximates):
# Just return the identifier for the best match by score
return extract_from_json(approximates, "candidate", l=[])[0][0][‘rxcui’]

def contains (cui_l):
# Give a list of ingredient identifiers, return drugs which contain
# those ingredients
sl = ‘+’.join(cui_l)
s = ‘’.replace(‘xx’, sl)
r = requests.get(s, headers={‘Accept’: ‘application/json’, ‘application/json’ ‘charset’: ‘UTF-8’})
return r.json()

def extract_from_json (data, key, l=[]):
# Extract a list of value(s) from a key in
# a (potentially deeply) nested json object
if isinstance(data, list):
for item in data:
extract_from_json(item, key, l)
elif isinstance(data, dict):
for k, v in data.iteritems():
if (k == key):
extract_from_json(v, key, l)
return l

cv = contains([first_ranked_cui(name_resolve_json(‘acetaminophen’))])
cl = extract_from_json(cv, "name", l=[])
print "{0} medications contain acetaminophen:".format(len(cl))
print "\n".join(cl)
406 medications contain acetaminophen:
666 Cold Preparation
Actifed Cold &amp; Sinus
Actifed Plus
Adprin B
Ali Flex
Alka-Seltzer Cold and Sinus
Alka-Seltzer Plus Cold
Alka-Seltzer Plus Cold Liquigel
Alka-Seltzer Plus Cold and Sinus
Alka-Seltzer Plus Cough and Cold Liquigel
Alka-Seltzer Plus Cough and Cold Liquigel Reformulated Aug 2011
Alka-Seltzer Plus Day Severe Cold, Cough And Flu
Alka-Seltzer Plus Flu Liquigels
Alka-Seltzer Plus Flu Reformulated Jan 2011
Alka-Seltzer Plus Night Cold and Flu
Alka-Seltzer Plus Night Severe Cold, Cough and Flu
Alka-Seltzer Plus Night Time Cold Liquigel
Alka-Seltzer Plus Night Time Reformulated Dec 2006
Alka-Seltzer Plus Severe Allergy
Alka-Seltzer Plus Severe Sinus Congestion and Cough
Allerest Headache Strength
Allerest No Drowsiness
Allerest Sinus
Anacin AF
Anacin Advanced Headache Formula
Anacin PM Aspirin Free
Arthriten Inflammatory Pain
BP Poly-650
Backaid IPF
Baczol Cold Medicine
Bayer Migraine
Bayer Select Decongestant
Benadryl Allergy Cold
Benadryl Allergy Cold Reformulated Jun 2007
Benadryl Severe Allergy Sinus Headache Reformulated Jun 2007
Bromo Seltzer
By Ache
Capital and Codeine
Children’s Mucinex Multi-Symptom Cold and Fever
Childrens Tylenol Cold Plus Cough
Childrens Tylenol Plus Cold &amp; Allergy
Comtrex Allergy Sinus
Comtrex Cold and Cough Nighttime
Comtrex Cold and Cough Non Drowsy
Comtrex Cold and Flu Maximum Strength Liquid
Comtrex Cold and Flu Maximum Strength Reformulated Aug 2006
Comtrex Deep Chest Cold Non Drowsy
Comtrex Nighttime Acute Head Cold
Comtrex Non-Drowsy
Comtrex Sore Throat Relief
Contac Cold and Flu Cooling Night
Contac Cold and Flu Maximum Strength
Contac Cold and Flu Non Drowsy Maximum Strength
Contac Severe Cold and Flu Non Drowsy
Coricidin D Cold
Coricidin HBP Flu Maximum Strength
Coricidin HBP Nighttime Multi-Symptom Cold Reformulated Feb 2013
Coricidin Night Time Cold Relief
CounterAct Pain
Counteract Day
Counteract Night
Counteract PM
DayQuil Sinex
Dayquil Cold &amp; Flu
Dayquil Liquicaps Reformulated Apr 2009
Dayquil Sinus
Delsym Adult Night Time Multi-Symptom
Delsym Children’s Nighttime Cough and Cold Reformulated Apr 2013
Delsym Cough Plus Cold Daytime
Delsym Cough Plus Cold Night Time
Delsym Night Time Cough and Cold
Diabetic Tussin Night Time Formula
Dimetapp Nighttime Flu
Dimetapp Nighttime Flu Reformulated Sep 2007
Dolgic LQ
Dolgic Plus
Dolorex Forte
Dristan Cold
Dristan Cold Multi Symptom
Drixoral Sinus
Durabac Forte
Ed Flex
Elixsure Fever/Pain
Emagrin Forte
Ephed Plus Cold Flu and Sinus
Excedrin Aspirin Free
Excedrin Back &amp; Body
Excedrin PM
Excedrin Quick Tab
Excedrin Sinus
Excedrin Sinus Headache
Excedrin Tension Headache
Fioricet with Codeine
Flextra Plus
Goody’s Body Pain
Goody’s Extra Strength
Goody’s Headache Relief Shot
Goody’s Migraine Relief
Goody’s PM
Kolephrin DM
Legatrin PM
Little Colds
Little Fevers
Lusonex Plus
Mapap Cold Formula
Mapap PM
Mapap Sinus Congestion and Pain
Maxiflu CD
Maxiflu DM
Midol Maximum Strength Menstrual
Midol PM
Midol PM Reformulated Apr 2011
Midol PMS Maximum Strength
Midol Teen
Mucinex Children’s Night Time Multi-Symptom Cold
Mucinex Fast-Max Cold and Sinus
Mucinex Fast-Max Cold, Flu and Sore Throat
Mucinex Fast-Max Night Time Cold and Flu
Mucinex Fast-Max Severe Cold
Mucinex Sinus-Max Day
Mucinex Sinus-Max Night
Nature Fusion Cold &amp; Flu
Norel AD
Norel SR
NyQuil D
NyQuil Sinex
Nyquil Alcohol Free
Nyquil Cold &amp; Flu
Nyquil Multi-Symptom
Onetab Cold and Flu
Onset Forte
Orbivan CF
Painaid BRF
Painaid ESF
Pamprin Cramp Formula
Pamprin Max Formula
Pamprin Multi-Symptom
Panadol Cold &amp; Flu Non Drowsy
Panadol PM
Pancold S
Panlor DC Reformulated Jan 2008
Panlor SS
PediaCare Children’s Plus Cough and Sore Throat
Pediacare Children’s Fever Reducer Pain Reliever
Pediacare Children’s Plus Cough and Runny Nose
Pediacare Infant Fever Reducer
Percogesic Reformulated Jan 2011
Phenflu CD
Phenflu DM
Phrenilin with Caffeine and Codeine
Poly-Vent Plus
Premsyn PMS
Pyrroxate Cold &amp; Congestion
Respa C&amp;C
Robitussin Cold Cough and Flu
Robitussin Honey Flu Nighttime
Robitussin Honey Flu Non-Drowsy
Robitussin Night Cold
Robitussin Night Relief
Robitussin Peak Cold Daytime Cold Plus Flu
Robitussin Peak Cold Nasal
Robitussin Peak Cold Nighttime Cold Plus Flu
Robitussin Peak Cold Nighttime Multi-Symptom Cold
Robitussin Peak Cold Nighttime Nasal Relief
Rx-Act Cold Head Congestion
Rx-Act Flu &amp; Severe Cold &amp; Cough
Rx-Act Flu &amp; Sore Throat
Rx-Act Headache Formula
Rx-Act Nighttime
Rx-Act Pain Relief
Rx-Act Pain Relief PM
Rx-Act Sinus Congestion &amp; Pain
SanaTos Night
Sanatos Day
Scot-Tussin Multisymptom Cold and Allergy
Sinarest Sinus
Sine-Off Cold and Cough
Sine-Off Maximum Strength
Sine-Off Maximum Strength Reformulated Sep 2008
Sine-Off Sinus and Cold
Sinutab Ex-Strength
Sinutab Sinus
St. Joseph Aspirin-Free
Sudafed PE Cold &amp; Cough
Sudafed PE Nighttime Cold
Sudafed PE Pressure Plus Pain Plus Cough
Sudafed PE Pressure Plus Pain Plus Mucus
Sudafed PE Severe Cold
Sudafed PE Sinus Headache
Sudafed PE Triple Action
Sudafed Triple Action
T-Painol Extra Strength
Tavist Allergy/Sinus/Headache
Tavist Sinus
Tempra 2
Tempra Quicklets
Theraflu Cold &amp; Sore Throat
Theraflu Cold &amp; Sore Throat Reformulated Sep 2008
Theraflu Daytime Severe Cold
Theraflu Daytime Severe Cold &amp; Cough
Theraflu Flu &amp; Chest Congestion
Theraflu Flu &amp; Sore Throat
Theraflu Flu &amp; Sore Throat Reformulated Sep 2008
Theraflu Flu and Cold Medicine Powder
Theraflu Max-D
Theraflu Nighttime Maximum Strength
Theraflu Nighttime Severe Cold
Theraflu Nighttime Severe Cold &amp; Cough
Theraflu Nighttime Severe Cold Capsule
Theraflu Severe Cold &amp; Congestion Non-Drowsy
Theraflu Severe Cold Nighttime
Theraflu Sore Throat Maximum Strength
Theraflu Warming Cold &amp; Chest Congestion
Theraflu Warming Relief
Theraflu, Flu, Cold, and Cough
Trezix Reformulated Oct 2011
Triaminic Cold and Fever
Triaminic Cough &amp; Sore Throat
Triaminic Cough &amp; Sore Throat Reformulated Jul 2007
Triaminic Fever &amp; Pain
Triaminic Infant Drops Reformulated Nov 2010
Triaminic Multi-Symptom Fever
Triaminic Softchews Allergy Sinus
Triaminic Softchews Cough &amp; Sore Throat
Triaminic Softchews Cough &amp; Sore Throat Reformulated Jul 2007
Triaminic Sore Throat Formula
Tylenol Allergy Multi-Symptom
Tylenol Allergy Multi-Symptom Nighttime
Tylenol Allergy Sinus
Tylenol Chest Congestion
Tylenol Children’s Multi-Symptom Cold Plus
Tylenol Children’s Plus Cold
Tylenol Children’s Plus Cold &amp; Cough
Tylenol Children’s Plus Cold Reformulated Mar 2013
Tylenol Childrens Plus Cough &amp; Runny Nose
Tylenol Childrens Plus Cough &amp; Sore Throat
Tylenol Cold
Tylenol Cold &amp; Flu Severe Day Time
Tylenol Cold Complete Formula
Tylenol Cold Head Congestion Severe
Tylenol Cold Multi-Symptom Daytime
Tylenol Cold Multi-Symptom Nighttime
Tylenol Cold Multi-Symptom Nighttime Liquid
Tylenol Cold Multi-Symptom Severe Daytime
Tylenol Cold Relief Nighttime
Tylenol Cold Severe Congestion Non-Drowsy
Tylenol Cough &amp; Sore Throat Night Time
Tylenol Cough and Sore Throat Daytime
Tylenol Flu Maximum Strength Nighttime
Tylenol PM
Tylenol Severe Allergy
Tylenol Sinus
Tylenol Sinus Congestion and Pain Daytime
Tylenol Sinus Congestion and Pain Severe
Tylenol Sinus NightTime
Tylenol Sinus Severe Congestion
Tylenol with Codeine
Unisom with Pain Relief
Valorin Extra
Vicks 44 Cold, Flu and Cough
Vicks Formula 44 Custom Care Cough &amp; Cold PM
Vicks Formula 44M
Vicks Nature Fusion Cold and Flu Night
Wal-Dryl Severe Allergy &amp; Sinus
Wal-Flu Cold and Sore Throat
Wal-Flu Daytime Severe Cold and Cough
Wal-Flu Flu and Sore Throat
Wal-Flu Severe Cold
Wal-Flu Severe Cold and Cough
Wal-Phed Cold &amp; Cough
Wal-Phed PE Severe Cold
Womens Tylenol Menstrual Relief
Yinchiao Fast Relief Flu
Zicam Flu Nighttime
Zicam Multi-Symptom Cold and Flu Daytime
Zicam Multi-Symptom Cold and Flu Nighttime

[1] Sood GK et al. Acute Liver Failure Medscape eMedicine Reference, August 20, 2012.
[2] George Ostapowicz, Robert J. Fontana, Frank V. Schiødt, Anne Larson, Timothy J. Davern, Steven H.B. Han, Timothy M. McCashland, A. Obaid Shakil, J. Eileen Hay, Linda Hynan, Jeffrey S. Crippin, Andres T. Blei, Grace Samuel, Joan Reisch, William M. Lee, the U.S. Acute Liver Failure Study Group; Results of a Prospective Study of Acute Liver Failure at 17 Tertiary Care Centers in the United States. Annals of Internal Medicine. 2002 Dec;137(12):947-954.