The value set contains substances, products, some conditions and also some negation (situation) concepts. Making different choices within the value set may lead to lack of interoperability, e.g. 293584003 |Allergy to paracetamol (disorder)| is not equivalent to 387517004 |Paracetamol (substance)| or to 322237000 |Paracetamol 500mg soluble tablet (product)| but "transforms" can be made in some cases through the concept model, e.g. code = 293584003 |Allergy to paracetamol (disorder)| → code = 387517004 |Paracetamol (substance)| and vice versa, but code = 322237000 |Paracetamol 500mg soluble tablet (product)| does not necessarily imply code = 387517004 |Paracetamol (substance)| or, more clearly, code = 358501001 |Paracetamol+caffeine 500mg/65mg soluble tablet (product)| does not imply code = 387517004 |Paracetamol (substance)| (nor code = 293584003 |Allergy to paracetamol (disorder)| ) while the opposite holds.
Ruled-out allergies or intolerances can be represented either using verificationStatus = refuted or using code = <negation code> from this value set.
The value set contains all clinical findings (<< 404684003 |Clinical finding (finding)|) and could possibly be more constrained like <<282100009 |Adverse reaction caused by substance (disorder)| (although this set probably do have gaps).
The value set contains routes of administration primarily developed for drug use (<<284009009 |Route of administration value (qualifier value)|) and should be reviewed for gaps (e.g. what is the route(s) for a cat dander reaction, noting that reaction.exposureRoute is not mandatory)