abstractor 4.2.3 → 4.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: a3703df4ac762d87fe77f41a0d3109533896943b
4
- data.tar.gz: 10fb7cb823fa9ef4b2b0ccddb481d461fe3d6cc1
3
+ metadata.gz: e12e1a6577e6efe1216cce735b4bf8430bb6d2c6
4
+ data.tar.gz: d92a5873f58d49d1bb637b604d5a9e387b437b7f
5
5
  SHA512:
6
- metadata.gz: c939fc27c31fc6fb653f0ad6a9ff6e0dc17b8ef9c386b27a7051c1142d0fb05efedb2f84f37e741f39e06d6fc9e0b0c6b3e2c9f1a662ff5b5800832965e55309
7
- data.tar.gz: b510b62d7fd32f365590f34f793fb767a589b6e5194c4603d1bf8b3f99c203355c9277fcae274f646a029d1eaa726e303e7f670684fab29bbcc1f70940942f62
6
+ metadata.gz: 9dbc5beb80be2775fa9776557fc565d6fed3480a891c893c4252df7297facff07f5c17c46a15f03d9fecb0c1ec2fc97b6e417938bc1a9c9ccfec4e4ee6708705
7
+ data.tar.gz: 764ae53872aafc7c7aac5628609d8f208a60f2cb24ac3468d90903555e74b6fac565120f1d0721e2e28454d7ef50bce4d12ea40a8a5b4780d923ed249411db11
@@ -0,0 +1,5 @@
1
+ module Abstractor
2
+ class AbstractorAbstractionSchemasController < Abstractor::ApplicationController
3
+ include Abstractor::Methods::Controllers::AbstractorAbstractionSchemasController
4
+ end
5
+ end
data/config/routes.rb CHANGED
@@ -7,4 +7,7 @@ Abstractor::Engine.routes.draw do
7
7
  end
8
8
  resources :abstractor_suggestions
9
9
  end
10
+
11
+ resources :abstractor_abstraction_schemas do
12
+ end
10
13
  end
@@ -0,0 +1,5 @@
1
+ class AddPropertiesToAbstractorObjectValues < ActiveRecord::Migration
2
+ def change
3
+ add_column :abstractor_object_values, :properties, :text
4
+ end
5
+ end
@@ -0,0 +1,7 @@
1
+ class AddVocabularyColumnsToAbstractorObjectValues < ActiveRecord::Migration
2
+ def change
3
+ add_column :abstractor_object_values, :vocabulary_code, :string
4
+ add_column :abstractor_object_values, :vocabulary, :string
5
+ add_column :abstractor_object_values, :vocabulary_version, :string
6
+ end
7
+ end
@@ -12,81 +12,18 @@ module Abstractor
12
12
  suggestion_endpoint = YAML.load_file("#{Rails.root}/config/abstractor/custom_nlp_providers.yml")[custom_nlp_provider]['suggestion_endpoint'][Rails.env]
13
13
  end
14
14
 
15
- ##
16
- # Formats the object values and object value variants for the passed in Abstractor::AbstractorSubject.
17
- #
18
- # Preperation for submision to a custom NLP provider endpoint.
19
- #
20
- # @example Example of body prepared by Abstractor to submit to an custom NLP provider
21
- # {
22
- # "abstractor_abstraction_schema_id":1,
23
- # "abstractor_abstraction_id":1,
24
- # "abstractor_abstraction_source_id":1,
25
- # "source_type": "PathologyCase",
26
- # "source_method": "note_text",
27
- # "text": "The patient has a diagnosis of glioblastoma. GBM does not have a good prognosis. But I can't rule out meningioma.",
28
- # "object_values": [
29
- # { "value": "glioblastoma, nos",
30
- # "object_value_variants":[
31
- # { "value": "glioblastoma" },
32
- # { "value": "gbm" },
33
- # { "value": "spongioblastoma multiforme"}
34
- # ]
35
- # },
36
- # { "value": "meningioma, nos",
37
- # "object_value_variants":[
38
- # { "value": "meningioma" },
39
- # { "value": "leptomeningioma" },
40
- # { "value": "meningeal fibroblastoma" }
41
- # ]
42
- # }
43
- # ]
44
- # }
45
- #
46
- #
47
- # @param [Abstractor::AbstractorSubject] abstractor_subject The abstractor subject having the desired object values.
48
- # @return [Hash]
49
- def self.abstractor_object_values(abstractor_subject)
50
- object_values = []
51
- abstractor_subject.abstractor_abstraction_schema.abstractor_object_values.each do |abstractor_object_value|
52
- object_value = {}
53
- object_value[:value] = abstractor_object_value.value
54
- object_value[:object_value_variants] = []
55
- abstractor_object_value.abstractor_object_value_variants.each do |abstractor_object_value_variant|
56
- object_value[:object_value_variants] << { value: abstractor_object_value_variant.value }
57
- end
58
- object_values << object_value
59
- end
60
- object_values
61
- end
62
-
63
15
  ##
64
16
  # Formats the JSON body in preparation for submision to a custom NLP provider endpoint.
65
17
  #
66
18
  # @example Example of body prepared by Abstractor to submit to an custom NLP provider
67
19
  # {
68
20
  # "abstractor_abstraction_schema_id":1,
21
+ # "abstractor_abstraction_schema_uri":"https://moomin.com/abstractor_abstraction_schemas/1",
69
22
  # "abstractor_abstraction_id":1,
70
23
  # "abstractor_abstraction_source_id":1,
71
24
  # "source_type": "PathologyCase",
72
25
  # "source_method": "note_text",
73
- # "text": "The patient has a diagnosis of glioblastoma. GBM does not have a good prognosis. But I can't rule out meningioma.",
74
- # "object_values": [
75
- # { "value": "glioblastoma, nos",
76
- # "object_value_variants":[
77
- # { "value": "glioblastoma" },
78
- # { "value": "gbm" },
79
- # { "value": "spongioblastoma multiforme"}
80
- # ]
81
- # },
82
- # { "value": "meningioma, nos",
83
- # "object_value_variants":[
84
- # { "value": "meningioma" },
85
- # { "value": "leptomeningioma" },
86
- # { "value": "meningeal fibroblastoma" }
87
- # ]
88
- # }
89
- # ]
26
+ # "text": "The patient has a diagnosis of glioblastoma. GBM does not have a good prognosis. But I can't rule out meningioma."
90
27
  # }
91
28
  #
92
29
  #
@@ -96,16 +33,15 @@ module Abstractor
96
33
  # @param [Hash] source The hash of values representing the source for submission to a custom nlp provider endpoint.
97
34
  # @return [Hash] The formatted body.
98
35
  def self.format_body_for_suggestion_endpoint(abstractor_abstraction, abstractor_abstraction_source, abstractor_text, source)
99
- object_values = CustomNlpProvider.abstractor_object_values(abstractor_abstraction.abstractor_subject)
100
36
  {
101
37
  abstractor_abstraction_schema_id: abstractor_abstraction.abstractor_subject.abstractor_abstraction_schema.id,
38
+ abstractor_abstraction_schema_uri: Abstractor::Engine.routes.url_helpers.abstractor_abstraction_schema_url(abstractor_abstraction.abstractor_subject.abstractor_abstraction_schema),
102
39
  abstractor_abstraction_id: abstractor_abstraction.id,
103
40
  abstractor_abstraction_source_id: abstractor_abstraction_source.id,
104
41
  source_id: source[:source_id],
105
42
  source_type: source[:source_type].to_s,
106
43
  source_method: source[:source_method],
107
- text: abstractor_text,
108
- object_values: object_values
44
+ text: abstractor_text
109
45
  }
110
46
  end
111
47
  end
@@ -0,0 +1,23 @@
1
+ module Abstractor
2
+ module Methods
3
+ module Controllers
4
+ module AbstractorAbstractionSchemasController
5
+ def self.included(base)
6
+ base.send :helper, :all
7
+ base.send :before_filter, :set_abstractor_abstraction_schema, only: :show
8
+ end
9
+
10
+ def show
11
+ respond_to do |format|
12
+ format.json { render json: Abstractor::Serializers::AbstractorAbstractionSchemaSerializer.new(@abstractor_abstraction_schema).as_json }
13
+ end
14
+ end
15
+
16
+ private
17
+ def set_abstractor_abstraction_schema
18
+ @abstractor_abstraction_schema = Abstractor::AbstractorAbstractionSchema.find(params[:id])
19
+ end
20
+ end
21
+ end
22
+ end
23
+ end
@@ -138,8 +138,8 @@ module Abstractor
138
138
  create_unknown_abstractor_suggestion(about, abstractor_abstraction, abstractor_abstraction_source)
139
139
  end
140
140
 
141
- # Looks up a suggestion endpoint to submit text, object values and object value variants
142
- # to an external, custom NLP provider for the delegation of suggestion generation.
141
+ # Looks up a suggestion endpoint to submit text to an external
142
+ # custom NLP provider for the delegation of suggestion generation.
143
143
  #
144
144
  # The method will determine an endpoint by looking in
145
145
  # config/abstractor/custom_nlp_providers.yml based on the current environment
@@ -154,27 +154,12 @@ module Abstractor
154
154
  # @example Example of body prepared by Abstractor to submit to an custom NLP provider
155
155
  # {
156
156
  # "abstractor_abstraction_schema_id":1,
157
+ # "abstractor_abstraction_schema_uri":"https://moomin.com/abstractor_abstraction_schemas/1",
157
158
  # "abstractor_abstraction_id":1,
158
159
  # "abstractor_abstraction_source_id":1,
159
160
  # "source_type": "PathologyCase",
160
161
  # "source_method": "note_text",
161
- # "text": "The patient has a diagnosis of glioblastoma. GBM does not have a good prognosis. But I can't rule out meningioma.",
162
- # "object_values": [
163
- # { "value": "glioblastoma, nos",
164
- # "object_value_variants":[
165
- # { "value": "glioblastoma" },
166
- # { "value": "gbm" },
167
- # { "value": "spongioblastoma multiforme"}
168
- # ]
169
- # },
170
- # { "value": "meningioma, nos",
171
- # "object_value_variants":[
172
- # { "value": "meningioma" },
173
- # { "value": "leptomeningioma" },
174
- # { "value": "meningeal fibroblastoma" }
175
- # ]
176
- # }
177
- # ]
162
+ # "text": "The patient has a diagnosis of glioblastoma. GBM does not have a good prognosis. But I can't rule out meningioma."
178
163
  # }
179
164
  #
180
165
  # @param [ActiveRecord::Base] about The entity to abstract. An instance of the class specified in the Abstractor::AbstractorSubject#subject_type attribute.
@@ -183,7 +168,6 @@ module Abstractor
183
168
  # @return [void]
184
169
  def abstract_custom_nlp_suggestion(about, abstractor_abstraction, abstractor_abstraction_source)
185
170
  suggestion_endpoint = CustomNlpProvider.determine_suggestion_endpoint(abstractor_abstraction_source.custom_nlp_provider)
186
- object_values = CustomNlpProvider.abstractor_object_values(self)
187
171
  abstractor_abstraction_source.normalize_from_method_to_sources(about).each do |source|
188
172
  abstractor_text = Abstractor::AbstractorAbstractionSource.abstractor_text(source)
189
173
  body = Abstractor::CustomNlpProvider.format_body_for_suggestion_endpoint(abstractor_abstraction, abstractor_abstraction_source, abstractor_text, source)
@@ -0,0 +1,34 @@
1
+ require 'json'
2
+ module Abstractor
3
+ module Serializers
4
+ class AbstractorAbstractionSchemaSerializer
5
+ def initialize(abstractor_abstraction_schema)
6
+ @abstractor_abstraction_schema = abstractor_abstraction_schema
7
+ end
8
+
9
+ def as_json(options = {})
10
+ {
11
+ "predicate" => abstractor_abstraction_schema.predicate,
12
+ "display_name" => abstractor_abstraction_schema.display_name,
13
+ "abstractor_object_type" => abstractor_abstraction_schema.abstractor_object_type.value,
14
+ "preferred_name" => abstractor_abstraction_schema.preferred_name,
15
+ "predicate_variants" => abstractor_abstraction_schema.abstractor_abstraction_schema_predicate_variants.map { |abstractor_abstraction_schema_predicate_variant| { 'value' => abstractor_abstraction_schema_predicate_variant.value } },
16
+ "object_values" => abstractor_abstraction_schema.abstractor_object_values.map do |abstractor_object_value|
17
+ {
18
+ 'value' => abstractor_object_value.value,
19
+ 'properties' => abstractor_object_value.properties.nil? ? nil : JSON.parse(abstractor_object_value.properties),
20
+ 'vocabulary_code' => abstractor_object_value.vocabulary_code,
21
+ 'vocabulary' => abstractor_object_value.vocabulary,
22
+ 'vocabulary_version' => abstractor_object_value.vocabulary_version,
23
+ 'object_value_variants' => abstractor_object_value.abstractor_object_value_variants.map { |abstractor_object_value_variant| { 'value' => abstractor_object_value_variant.value } }
24
+ }
25
+ end
26
+ }
27
+ end
28
+
29
+ private
30
+
31
+ attr_reader :abstractor_abstraction_schema
32
+ end
33
+ end
34
+ end
@@ -1,3 +1,3 @@
1
1
  module Abstractor
2
- VERSION = '4.2.3'
2
+ VERSION = '4.3.0'
3
3
  end
@@ -85,6 +85,7 @@ module Abstractor
85
85
  copy_file "controllers/abstractor_abstraction_groups_controller.rb", "#{path}/abstractor_abstraction_groups_controller.rb"
86
86
  copy_file "controllers/abstractor_abstractions_controller.rb", "#{path}/abstractor_abstractions_controller.rb"
87
87
  copy_file "controllers/abstractor_suggestions_controller.rb", "#{path}/abstractor_suggestions_controller.rb"
88
+ copy_file "controllers/abstractor_abstraction_schemas_controller.rb", "#{path}/abstractor_abstraction_schemas_controller.rb"
88
89
  end
89
90
 
90
91
  if options["customize-all"] || options["customize-helpers"]
@@ -1,6 +1,11 @@
1
1
  require 'open-uri'
2
2
  require 'zip'
3
3
  require 'fileutils'
4
+ require 'thor'
5
+
6
+ class Hammer < Thor
7
+ include Thor::Actions
8
+ end
4
9
 
5
10
  namespace :abstractor do
6
11
  namespace :setup do
@@ -48,6 +53,18 @@ EOS
48
53
  f << template
49
54
  }
50
55
  end
56
+
57
+ puts "Warning! Warning! Warning!"
58
+ puts "Setting Abstractor::Engine.routes.default_url_options[:host] in config/environemnts/development.rb"
59
+ puts "Change it as appropriate."
60
+
61
+ hammer = Hammer.new
62
+ hammer.insert_into_file("#{Rails.root}/config/environments/development.rb", :after => /(::Application.configure do\n|application.configure do\n)/) do
63
+ "
64
+ Abstractor::Engine.routes.default_url_options[:host] = 'https://moomin.com'
65
+
66
+ "
67
+ end
51
68
  end
52
69
  end
53
70
 
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: abstractor
3
3
  version: !ruby/object:Gem::Version
4
- version: 4.2.3
4
+ version: 4.3.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Michael Gurley, Yulia Bushmanova
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2015-03-03 00:00:00.000000000 Z
11
+ date: 2015-03-18 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rails
@@ -480,6 +480,7 @@ files:
480
480
  - app/assets/stylesheets/abstractor/application.css.scss
481
481
  - app/assets/stylesheets/abstractor/jquery.ui.override.css.scss
482
482
  - app/controllers/abstractor/abstractor_abstraction_groups_controller.rb
483
+ - app/controllers/abstractor/abstractor_abstraction_schemas_controller.rb
483
484
  - app/controllers/abstractor/abstractor_abstractions_controller.rb
484
485
  - app/controllers/abstractor/abstractor_suggestions_controller.rb
485
486
  - app/controllers/abstractor/application_controller.rb
@@ -554,6 +555,8 @@ files:
554
555
  - db/migrate/20141120044606_add_system_generated_to_abstractor_abstraction_groups.rb
555
556
  - db/migrate/20150110002921_create_indexes_for_performance.rb
556
557
  - db/migrate/20150223033848_add_custom_nlp_provider_to_abstractor_abstraction_sources.rb
558
+ - db/migrate/20150317172523_add_properties_to_abstractor_object_values.rb
559
+ - db/migrate/20150317204748_add_vocabulary_columns_to_abstractor_object_values.rb
557
560
  - db/seeds.rb
558
561
  - lib/abstractor.rb
559
562
  - lib/abstractor/abstractable.rb
@@ -562,6 +565,7 @@ files:
562
565
  - lib/abstractor/engine.rb
563
566
  - lib/abstractor/enum.rb
564
567
  - lib/abstractor/methods/controllers/abstractor_abstraction_groups_controller.rb
568
+ - lib/abstractor/methods/controllers/abstractor_abstraction_schemas_controller.rb
565
569
  - lib/abstractor/methods/controllers/abstractor_abstractions_controller.rb
566
570
  - lib/abstractor/methods/controllers/abstractor_suggestions_controller.rb
567
571
  - lib/abstractor/methods/models/abstractor_abstraction.rb
@@ -593,6 +597,7 @@ files:
593
597
  - lib/abstractor/methods/models/soft_delete.rb
594
598
  - lib/abstractor/negation_detection.rb
595
599
  - lib/abstractor/parser.rb
600
+ - lib/abstractor/serializers/abstractor_abstraction_schema_serializer.rb
596
601
  - lib/abstractor/setup.rb
597
602
  - lib/abstractor/user_interface.rb
598
603
  - lib/abstractor/utility.rb