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 +4 -4
- data/app/controllers/abstractor/abstractor_abstraction_schemas_controller.rb +5 -0
- data/config/routes.rb +3 -0
- data/db/migrate/20150317172523_add_properties_to_abstractor_object_values.rb +5 -0
- data/db/migrate/20150317204748_add_vocabulary_columns_to_abstractor_object_values.rb +7 -0
- data/lib/abstractor/custom_nlp_provider.rb +4 -68
- data/lib/abstractor/methods/controllers/abstractor_abstraction_schemas_controller.rb +23 -0
- data/lib/abstractor/methods/models/abstractor_subject.rb +4 -20
- data/lib/abstractor/serializers/abstractor_abstraction_schema_serializer.rb +34 -0
- data/lib/abstractor/version.rb +1 -1
- data/lib/generators/abstractor/install/install_generator.rb +1 -0
- data/lib/tasks/abstractor_tasks.rake +17 -0
- metadata +7 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: e12e1a6577e6efe1216cce735b4bf8430bb6d2c6
|
4
|
+
data.tar.gz: d92a5873f58d49d1bb637b604d5a9e387b437b7f
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 9dbc5beb80be2775fa9776557fc565d6fed3480a891c893c4252df7297facff07f5c17c46a15f03d9fecb0c1ec2fc97b6e417938bc1a9c9ccfec4e4ee6708705
|
7
|
+
data.tar.gz: 764ae53872aafc7c7aac5628609d8f208a60f2cb24ac3468d90903555e74b6fac565120f1d0721e2e28454d7ef50bce4d12ea40a8a5b4780d923ed249411db11
|
data/config/routes.rb
CHANGED
@@ -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
|
142
|
-
#
|
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
|
data/lib/abstractor/version.rb
CHANGED
@@ -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.
|
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-
|
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
|