Though these small phrases aren't quite like the varied natural-language text usually used with word2vec & related algorithms, with enough data, it might be helpful. It will tend to learn which words are "highly related", even if not exact synonyms.
The best data would have many examples of each tokens' use, in varied contexts, including mixes of different lingo. For example, if you only have training data that includes...
blah blah oral tablet
blah blah po tab
...it'll be harder for it to discover the similarities between 'oral' & 'po', and 'tablet' & 'tab', than if you also had training examples which included:
blah blah oral tab
blah blah po tablet
(That is: data that's a little more chaotic/gradual in its lingo mixes may be better than something that keeps alternate conventions totally separate.)
When you say you're getting "all noise", are the lists of most-similar words sensible for your purposes? (For example, are 'oral' and 'po' very close, after training?) If so, at least a little, you may be on the right path and be able to tune further to get better results. If not, your data or training parameters may be insufficient or have some other problems.
In training, with smaller or less-varied data, it can be helpful to reduce the vector-dimensionality, or up the number of training-epochs, to squeeze meaningful final vector-positions out. If your data has some natural sort-order that groups all related items together – such that certain words only appear all early, or all late – an initial shuffle of examples may help a little.
The window parameter can be especially influential in affecting whether the resulting model emphasizes exact 'syntactic' (drop-in-replacement word) similarity, or general domain/topic similarity. Smaller windows – say just 1-3 words – emphasize drop-in replacement words (both synonyms & antonyms), while larger windows find more general associations.
(See this answer for a bit more context & a link to a paper which observed this window-size effect.)
You might want to try a later word2vec implementation, like that in the Python gensim library, if any part of your pipeline is in Python or you want to try a few options that weren't in the initial Google word2vec.c (like using non-default ns_exponent values, which one paper suggested was especially useful in recommendation-applications where related-item-basket token frequencies are somewhat different from natural-language).
If many of your 'unknown' words are in fact abbreviations or typos of known-words, using the Facebook 'FastText' refinement of word2vec may be a help. It also learns vectors for subwords, so pulls 'tab' and 'tablet' closer to each other, and when confronted with a never-before-seen word can assemble a candidate-vector from word fragments that's usually better than a random guess, same as people intuit a word's general gist from word-roots. (Python gensim also contains a FastText implementation.)
If you do achieve a word-model whose lists of most-similar words seem sensible to you, you might then try:
when you have a text with words you know aren't in `RxNorm', try replacing the unknown words with their nearest-neighbor that is in 'RxNorm'
using "Word Mover's Distance" to compare your phrases with known phrases - it's often good at quantifying the shift between short phrases, using word-vectors as an input. It's expensive on larger texts, but on 4-6 word fragments, might work really well. (It's available in the gensim word-vectors classes as a .wmdistance() method.)
Finally, to the extent there's a limited number of 'tab'->'tablet' type exact replacements, progressively replacing any fuzzy discoveries from word2vec analysis with expert-confirmed synonyms seems a good idea, to replace statistical guesses with sure-things.
Going back to the example above, if you already knew 'tab'->'tablet', but not yet 'po'->'oral', it might even make sense to take all texts that have 'tab' or 'tablet' & create new additional synthetic examples with that word reversed. That could give subsequent word2vec training an extra hint/shove in the direction of being able to realize that 'po'/'oral' fills the same relative-role with both 'tab'/'tablet'.