abstractor 4.2.3 → 4.3.0

Sign up to get free protection for your applications and to get access to all the features.
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