How to store data in look-up tables when some of it may be semantically different, but logically the same?
Am I missing something or does this seem like the best way to achieve
  this?


Item 1

You seem to be missing the part of the contract with the laboratories that state "you will send us data in this format.".  That document should clearly list the valid values for TestReason (even if it is their list of values).

Design Idea 1


  receives patient appointment status information, specimen collection
  information and final laboratory test results.


I'm pretty sure there are ISO/Government standards for accomplishing this.  CDISC comes to mind.

I would look at various Government web sites to see if they have a standardized lists of Sample Types.  The Open Data StackExchange might be able to help you out (or even state that this does not exist).

Design Idea 2

Natural Keys.

In both your tables (Order.TestReasons and Results.TestReasons) should have a Unique Constraint on (LaboratoryId, Value).  These can be your PK.  You may want to investigate why they are two separate set of values.

Design Idea 3

You should already have a TestReasons dimension table (and a table for each of the other 12 dimensions).  That would narrow your requirement down to 26 tables.  Then, you just need to reduce the two tables into one.  (eg add a "Domain" column that indicates "Orders" vs "Results")