Initial commit.  Migrated over spec suite
from the extraction of the abstractor code
in the application it was originally developed
inside of.  No UI testing or implementation 
is here yet.
Downgrade to Rails 3.2.17.
Add in paper_trails gem to track changes to
the abstractor_abstractions table.
Add specific class to jQuery UI dialog to help
with testing later.
* Big refactor to give up on letting namespaced
models handle a lot of magic.  I don't like
how it makes you go against a lot of Rails
conventions, like foreign key references not
matching parent table names.

* Also replaced subject in abstractor_abstractions
and abstractor_abstraction_groups with a
a polymorphic relationship named about.
Implement the creation of abstractions for
abstractor rule type of 'unknown'.  The 
'unknown' rule type will be useful for scenarios
where the system will not even attempt to make
a suggestion but a reviewable abstraction is
desired.
Change Abstractable#detect_abstractor_abstraction
to detect abstractions based on an abstractor_subject
instead of an abstractor_abstraction_schema.
It is conceivable that the same
abstractor_abstraction_schema could be used
more than once for an entity.  For example,
a measurement schema in 2 different groups.
Add support for displaying short lists as
radio buttons.  Requested by the NBTI data
coordinator.
Add top-level abstractor folder to copying of
models during the 'customize-models' option
of the abstractor:install generator.
Fix some typos in the encounter_note_spec.rb
caused by some overzealous search and replace.
Rename all the models in the /lib/generators/
abstractor/install/templates/models 
directory.
Experimenting with requiring the
'stanford-core-nlp' library explicitly.
Having problems with it not being loaded
in apps using the gem.
Put back CLASSPATH setting for the negation
detection library into the main Abstractor
module.
Add support for the from_method in the
abstractor_abstraction_sources table to
return a complex object. 

Most of the time a user of Abstractor will simply
want to define a data point to abstract against
a textual column defined by the from_method
column in abstractor_abstraction_sources.  But
sometimes things might need to be more complex.
The specific example that drove this was trying
to abstract cancer diagnosis for pathology
specimens.  The textual fragment relevant for
abstracting a cancer diagnosis for a pathology
specimen was variable.  Could come from multiple
different sources that could only be determined
at run time.

So now the from_method is expected to return
a string or an array of hashes -- each hash expected
to follow this format:

{ source_type: ?, source_id: ? , source_method: ? }

Abstractor::AbstractorAbstractionSource#normalize_from_method_to_sources
was added to normalize the from_method to an array
of such hashes.  The various methods in AbstractorSubject
now call this method to normalize every from_method
to an array of such hashes.
Add a sentence_match_field to
abstractor_suggestion_sources table.
This will allow us to track the token
that caused the match and the sentence that the
token was embedded.  For the 'value' 
abstractor rule type having only the whole sentence
is confusing if the sentence detection swallows
a very large sentence.  Formerly, the whole sentence
was getting saved in the match_value fields.  Now
just the token that caused the sentence to mach
is saved in match_value and sentence_match_value
contains the entire sentence.  For the 'name/value'
rule type mach_value and sentence_value will always
be the same.

Done for the Discerner PathCore application because
we want to be able to highlight matched cancer
diagnoses.  Not just the entire sentence that was
matched.

References #10341.
Add 'non-' entry to
NegationDetection::manual_negated_match_value?
to handle not matching on tokens like
'non-small cell carcinoma' and
'small cell carcinoma'.
* Add nubic-gem-tasks for easier deployment to
local gem server.

* Clean up gemsepc to get rid of warnings.
* Optimize performance of 
  Abstractor::AbstractorSubject#abstract_sentential_value.
  Only search for terms naively found via a SQL like.
  Reduce number of queries via caching.
* Add some more negation cues 
  Abstractor::NegationDetection:::manual_negated_match_value

References #10340
Optimize performance of
Abstractor::AbstractorSubject#abstract_sentential_value.
Only restrict Abstractor::AbstractorObjectValue 
found via a SQL like.  Optimization
in 1.0.1 only applied to Abstractor::AbstractorObjectValueVariant.
First attempt at making Abstractor work with remote sources