openehr 1.1.4 → 1.1.5
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.
- data/.gitignore +32 -0
- data/Gemfile +1 -21
- data/Guardfile +9 -1
- data/README.rdoc +5 -3
- data/Rakefile +3 -33
- data/features/rmfactory.feature +9 -0
- data/features/step_definitions/rmfactory_steps.rb +12 -0
- data/features/support/env.rb +10 -0
- data/lib/openehr.rb +3 -2
- data/lib/openehr/rm.rb +1 -0
- data/lib/openehr/rm/data_types/basic.rb +5 -1
- data/lib/openehr/rm/data_types/quantity.rb +1 -1
- data/lib/openehr/rm/ehr.rb +1 -1
- data/lib/openehr/rm/factory.rb +180 -0
- data/lib/openehr/version.rb +3 -0
- data/openehr.gemspec +40 -463
- data/spec/lib/openehr/am/openehr_profile/data_types/quantity/c_quantity_item_spec.rb +2 -1
- data/spec/lib/openehr/rm/data_types/basic/dv_state_spec.rb +4 -0
- data/spec/lib/openehr/rm/data_types/text/dv_coded_text_spec.rb +29 -0
- data/spec/lib/openehr/rm/factory_spec.rb +189 -0
- metadata +71 -17
data/.gitignore
ADDED
@@ -0,0 +1,32 @@
|
|
1
|
+
*~
|
2
|
+
*#
|
3
|
+
|
4
|
+
\#*
|
5
|
+
.\#*
|
6
|
+
|
7
|
+
# rcov generated
|
8
|
+
coverage
|
9
|
+
|
10
|
+
# rdoc generated
|
11
|
+
rdoc
|
12
|
+
|
13
|
+
# yard generated
|
14
|
+
doc/
|
15
|
+
.yardoc
|
16
|
+
|
17
|
+
# bundler
|
18
|
+
.bundle
|
19
|
+
*.lock
|
20
|
+
|
21
|
+
# jeweler generated
|
22
|
+
pkg
|
23
|
+
|
24
|
+
# logger generated
|
25
|
+
log
|
26
|
+
|
27
|
+
# subversion ignore
|
28
|
+
.svn
|
29
|
+
|
30
|
+
tmp
|
31
|
+
*.gem
|
32
|
+
*.rbc
|
data/Gemfile
CHANGED
@@ -1,23 +1,3 @@
|
|
1
1
|
source "http://rubygems.org"
|
2
2
|
|
3
|
-
|
4
|
-
gem 'activesupport'
|
5
|
-
gem 'locale'
|
6
|
-
gem 'builder'
|
7
|
-
gem 'jeweler'
|
8
|
-
gem 'i18n'
|
9
|
-
gem 'treetop'
|
10
|
-
gem 'polyglot'
|
11
|
-
gem 'rdoc'
|
12
|
-
gem 'sqlite3'
|
13
|
-
gem 'activerecord'
|
14
|
-
|
15
|
-
group :development, :test do
|
16
|
-
gem 'rspec'
|
17
|
-
gem 'guard-rspec'
|
18
|
-
gem 'ruby-debug19'
|
19
|
-
gem 'spork', '~> 1.0rc'
|
20
|
-
gem 'guard-spork'
|
21
|
-
gem 'simplecov'
|
22
|
-
gem 'libnotify'
|
23
|
-
end
|
3
|
+
gemspec
|
data/Guardfile
CHANGED
@@ -1,12 +1,20 @@
|
|
1
1
|
guard 'spork' do
|
2
2
|
watch('spec/spec_helper.rb')
|
3
|
+
watch('feature/support/env.rb')
|
3
4
|
end
|
4
5
|
|
5
|
-
guard 'rspec', :
|
6
|
+
guard 'rspec', :cli => '--drb --color' do
|
6
7
|
watch(%r{^spec/.+_spec\.rb})
|
7
8
|
watch(%r{^lib/(.+)\.rb}) { |m| "spec/lib/#{m[1]}_spec.rb" }
|
8
9
|
watch('spec/spec_helper.rb') { "spec" }
|
9
10
|
watch(%r{^lib/open_ehr/parser/.+\.tt}) { "spec/lib/open_ehr/parser" }
|
10
11
|
end
|
11
12
|
|
13
|
+
guard 'cucumber', cli: '--drb --format progress' do
|
14
|
+
watch(%r{^features/.+\.feature$})
|
15
|
+
watch(%r{^features/support/.+$}) { 'features' }
|
16
|
+
watch(%r{^features/step_definitions/(.+)_steps\.rb$}) { |m| Dir[File.join("**/#{m[1]}.feature")][0] || 'features' }
|
17
|
+
end
|
18
|
+
|
12
19
|
notification :libnotify, :timeout => 5, :transient => true, :append => false
|
20
|
+
|
data/README.rdoc
CHANGED
@@ -5,7 +5,7 @@ Ruby openEHR implementation project.
|
|
5
5
|
|
6
6
|
= Version
|
7
7
|
|
8
|
-
Release-1.1.
|
8
|
+
Release-1.1.5
|
9
9
|
|
10
10
|
= Requirements
|
11
11
|
|
@@ -38,6 +38,8 @@ This package excludes:
|
|
38
38
|
* ADL serializer(in progress)
|
39
39
|
* ADL validator(in progress)
|
40
40
|
* Data store/retrieve would be separate to the other project.
|
41
|
+
* Terminology service(moved to open_terminology package)
|
42
|
+
* Rails plugin(moved to openehr-rails package
|
41
43
|
|
42
44
|
Almost all classes passed the test constructed by RSpec2. These spec
|
43
45
|
files are under /spec.
|
@@ -59,7 +61,7 @@ reference implementation project of the openEHR.
|
|
59
61
|
= Copyright
|
60
62
|
The software, including all files in this directory and
|
61
63
|
subdirectories is copyrighted to the original authors and
|
62
|
-
contributors, 2011.
|
64
|
+
contributors, 2011-2013.
|
63
65
|
|
64
66
|
All Rights Reserved.
|
65
67
|
|
@@ -67,7 +69,7 @@ All Rights Reserved.
|
|
67
69
|
|
68
70
|
This product is under Apache 2.0 license
|
69
71
|
|
70
|
-
Copyright [2012] Shinji Kobayashi, Akimichi Tatsukawa, openEHR.jp
|
72
|
+
Copyright [2012,2013] Shinji Kobayashi, Akimichi Tatsukawa, openEHR.jp
|
71
73
|
|
72
74
|
Licensed under the Apache License, Version 2.0 (the "License");
|
73
75
|
you may not use this file except in compliance with the License.
|
data/Rakefile
CHANGED
@@ -1,44 +1,14 @@
|
|
1
1
|
require 'rubygems'
|
2
2
|
require 'bundler'
|
3
|
-
require
|
3
|
+
require "bundler/gem_tasks"
|
4
|
+
Bundler::GemHelper::install_tasks
|
4
5
|
|
5
|
-
begin
|
6
|
-
Bundler.setup(:default, :development)
|
7
|
-
rescue Bundler::BundlerError => e
|
8
|
-
$stderr.puts e.message
|
9
|
-
$stderr.puts "Run `bundle install` to install missing gems"
|
10
|
-
exit e.status_code
|
11
|
-
end
|
12
6
|
require 'rake'
|
13
|
-
|
14
|
-
require 'jeweler'
|
15
|
-
Jeweler::Tasks.new do |gem|
|
16
|
-
# gem is a Gem::Specification... see http://docs.rubygems.org/read/chapter/20 for more options
|
17
|
-
gem.name = "openehr"
|
18
|
-
gem.homepage = "http://github.com/skoba/ruby-impl-openehr"
|
19
|
-
gem.license = "Apache 2.0 license"
|
20
|
-
gem.summary = %Q{Ruby implementation of the openEHR specification}
|
21
|
-
gem.description = %Q{This project is an implementation of the openEHR specification on Ruby.}
|
22
|
-
gem.email = "skoba@moss.gr.jp"
|
23
|
-
gem.authors = ["Shinji KOBAYASHI", "Akimichi Tatsukawa"]
|
24
|
-
# dependencies defined in Gemfile
|
25
|
-
end
|
26
|
-
Jeweler::RubygemsDotOrgTasks.new
|
27
|
-
|
28
7
|
require 'rspec/core'
|
29
8
|
require 'rspec/core/rake_task'
|
9
|
+
|
30
10
|
RSpec::Core::RakeTask.new(:spec) do |spec|
|
31
11
|
spec.pattern = FileList['spec/**/*_spec.rb']
|
32
12
|
end
|
33
13
|
|
34
14
|
task :default => :spec
|
35
|
-
|
36
|
-
require 'rdoc/task'
|
37
|
-
Rake::RDocTask.new do |rdoc|
|
38
|
-
version = File.exist?('VERSION') ? File.read('VERSION') : ""
|
39
|
-
|
40
|
-
rdoc.rdoc_dir = 'rdoc'
|
41
|
-
rdoc.title = "gempack #{version}"
|
42
|
-
rdoc.rdoc_files.include('README*')
|
43
|
-
rdoc.rdoc_files.include('lib/**/*.rb')
|
44
|
-
end
|
@@ -0,0 +1,9 @@
|
|
1
|
+
Feature: RMFactory generates RM insntances
|
2
|
+
In order to generate RM instance by archetype definition
|
3
|
+
As RM factory
|
4
|
+
RM Type and attributes should be specified
|
5
|
+
|
6
|
+
Scenario: RMFactory generates DvText instance
|
7
|
+
Given "DV_TEXT" in archetype definition with attribute
|
8
|
+
When RM Factory generates instance
|
9
|
+
Then DvText instance should be available
|
@@ -0,0 +1,12 @@
|
|
1
|
+
Given /^\"DV_TEXT\" in archetype definition with attribute$/ do
|
2
|
+
@type= "DV_TEXT"
|
3
|
+
@params = [value: 'text']
|
4
|
+
end
|
5
|
+
|
6
|
+
When /^RM Factory generates instance$/ do
|
7
|
+
@dv_text = OpenEHR::RM::Factory.create(@type, @params)
|
8
|
+
end
|
9
|
+
|
10
|
+
Then /^DvText instance should be available$/ do
|
11
|
+
@dv_text.should be_an_instance_of OpenEHR::RM::DataTypes::Text::DvText
|
12
|
+
end
|
data/lib/openehr.rb
CHANGED
@@ -1,10 +1,11 @@
|
|
1
1
|
$:.unshift(File.dirname(__FILE__))
|
2
|
+
require 'openehr/version'
|
2
3
|
|
3
4
|
module OpenEHR
|
4
5
|
autoload :AssumedLibraryTypes, 'openehr/assumed_library_types'
|
5
6
|
autoload :RM, 'openehr/rm'
|
6
7
|
autoload :AM, 'openehr/am'
|
7
|
-
autoload :Terminology, 'openehr/terminology'
|
8
|
-
autoload :Serializer, 'openehr/serializer'
|
9
8
|
autoload :Parser, 'openehr/parser'
|
9
|
+
autoload :Serializer, 'openehr/serializer'
|
10
|
+
autoload :Terminology, 'openehr/terminology'
|
10
11
|
end
|
data/lib/openehr/rm.rb
CHANGED
@@ -46,7 +46,7 @@ module OpenEHR
|
|
46
46
|
|
47
47
|
def initialize(args)
|
48
48
|
super(args)
|
49
|
-
self.
|
49
|
+
self.terminal = args[:is_terminal].nil? ? args[:terminal] : args[:is_terminal]
|
50
50
|
end
|
51
51
|
|
52
52
|
def value=(v)
|
@@ -58,10 +58,14 @@ module OpenEHR
|
|
58
58
|
@is_terminal
|
59
59
|
end
|
60
60
|
|
61
|
+
alias terminal? is_terminal?
|
62
|
+
|
61
63
|
def is_terminal=(s)
|
62
64
|
raise ArgumentError, "terminal should not be nil" if s.nil?
|
63
65
|
@is_terminal = s
|
64
66
|
end
|
67
|
+
|
68
|
+
alias terminal= is_terminal=
|
65
69
|
end # end of DvState
|
66
70
|
|
67
71
|
class DvIdentifier < DataValue
|
@@ -13,7 +13,7 @@ module OpenEHR
|
|
13
13
|
|
14
14
|
class DvOrdered < OpenEHR::RM::DataTypes::Basic::DataValue
|
15
15
|
include Comparable
|
16
|
-
attr_accessor :normal_range, :
|
16
|
+
attr_accessor :normal_range, :other_reference_ranges, :normal_status
|
17
17
|
|
18
18
|
def initialize(args = {})
|
19
19
|
super(args)
|
data/lib/openehr/rm/ehr.rb
CHANGED
@@ -0,0 +1,180 @@
|
|
1
|
+
require 'active_support/inflector'
|
2
|
+
|
3
|
+
module OpenEHR
|
4
|
+
module RM
|
5
|
+
class Factory
|
6
|
+
def self.create(type, *param)
|
7
|
+
type = type.downcase.camelize if type.include? '_'
|
8
|
+
class_eval("#{type}Factory").create(*param)
|
9
|
+
end
|
10
|
+
end
|
11
|
+
|
12
|
+
class DvBooleanFactory
|
13
|
+
def self.create(*param)
|
14
|
+
OpenEHR::RM::DataTypes::Basic::DvBoolean.new(*param)
|
15
|
+
end
|
16
|
+
end
|
17
|
+
|
18
|
+
class DvStateFactory
|
19
|
+
def self.create(*param)
|
20
|
+
OpenEHR::RM::DataTypes::Basic::DvState.new(*param)
|
21
|
+
end
|
22
|
+
end
|
23
|
+
|
24
|
+
class DvIdentifierFactory
|
25
|
+
def self.create(*param)
|
26
|
+
OpenEHR::RM::DataTypes::Basic::DvIdentifier.new(*param)
|
27
|
+
end
|
28
|
+
end
|
29
|
+
|
30
|
+
class DvTextFactory
|
31
|
+
def self.create(*param)
|
32
|
+
OpenEHR::RM::DataTypes::Text::DvText.new(*param)
|
33
|
+
end
|
34
|
+
end
|
35
|
+
|
36
|
+
class TermMappingFactory
|
37
|
+
def self.create(*param)
|
38
|
+
OpenEHR::RM::DataTypes::Text::TermMapping.new(*param)
|
39
|
+
end
|
40
|
+
end
|
41
|
+
|
42
|
+
class CodePhraseFactory
|
43
|
+
def self.create(*param)
|
44
|
+
OpenEHR::RM::DataTypes::Text::CodePhrase.new(*param)
|
45
|
+
end
|
46
|
+
end
|
47
|
+
|
48
|
+
class DvCodedTextFactory
|
49
|
+
def self.create(*param)
|
50
|
+
OpenEHR::RM::DataTypes::Text::DvCodedText.new(*param)
|
51
|
+
end
|
52
|
+
end
|
53
|
+
|
54
|
+
class DvParagraphFactory
|
55
|
+
def self.create(*param)
|
56
|
+
OpenEHR::RM::DataTypes::Text::DvParagraph.new(*param)
|
57
|
+
end
|
58
|
+
end
|
59
|
+
|
60
|
+
class DvOrderedFactory
|
61
|
+
def self.create(*param)
|
62
|
+
OpenEHR::RM::DataTypes::Quantity::DvOrdered.new(*param)
|
63
|
+
end
|
64
|
+
end
|
65
|
+
|
66
|
+
class DvIntervalFactory
|
67
|
+
def self.create(*param)
|
68
|
+
OpenEHR::RM::DataTypes::Quantity::DvInterval.new(*param)
|
69
|
+
end
|
70
|
+
end
|
71
|
+
|
72
|
+
class ReferenceRangeFactory
|
73
|
+
def self.create(*param)
|
74
|
+
OpenEHR::RM::DataTypes::Quantity::ReferenceRange.new(*param)
|
75
|
+
end
|
76
|
+
end
|
77
|
+
|
78
|
+
class DvOrdinalFactory
|
79
|
+
def self.create(*param)
|
80
|
+
OpenEHR::RM::DataTypes::Quantity::DvOrdinal.new(*param)
|
81
|
+
end
|
82
|
+
end
|
83
|
+
|
84
|
+
class DvQuantifiedFactory
|
85
|
+
def self.create(*param)
|
86
|
+
DataTypes::Quantity::DvQuantified.new(*param)
|
87
|
+
end
|
88
|
+
end
|
89
|
+
|
90
|
+
class DvAmountFactory
|
91
|
+
def self.create(*param)
|
92
|
+
DataTypes::Quantity::DvAmount.new(*param)
|
93
|
+
end
|
94
|
+
end
|
95
|
+
|
96
|
+
class DvQuantityFactory
|
97
|
+
def self.create(*param)
|
98
|
+
OpenEHR::RM::DataTypes::Quantity::DvQuantity.new(*param)
|
99
|
+
end
|
100
|
+
end
|
101
|
+
|
102
|
+
class DvCountFactory
|
103
|
+
def self.create(*param)
|
104
|
+
DataTypes::Quantity::DvCount.new(*param)
|
105
|
+
end
|
106
|
+
end
|
107
|
+
|
108
|
+
class DvProportionFactory
|
109
|
+
def self.create(*param)
|
110
|
+
DataTypes::Quantity::DvProportion.new(*param)
|
111
|
+
end
|
112
|
+
end
|
113
|
+
|
114
|
+
class DvAbsoluteQuantityFactory
|
115
|
+
def self.create(*param)
|
116
|
+
DataTypes::Quantity::DvAbsoluteQuantity.new(*param)
|
117
|
+
end
|
118
|
+
end
|
119
|
+
|
120
|
+
class DvTemporalFactory
|
121
|
+
def self.create(*param)
|
122
|
+
DataTypes::Quantity::DateTime::DvTemporal.new(*param)
|
123
|
+
end
|
124
|
+
end
|
125
|
+
|
126
|
+
class DvDateFactory
|
127
|
+
def self.create(*param)
|
128
|
+
OpenEHR::RM::DataTypes::Quantity::DateTime::DvDate.new(*param)
|
129
|
+
end
|
130
|
+
end
|
131
|
+
|
132
|
+
class DvTimeFactory
|
133
|
+
def self.create(*param)
|
134
|
+
DataTypes::Quantity::DateTime::DvTime.new(*param)
|
135
|
+
end
|
136
|
+
end
|
137
|
+
|
138
|
+
class DvDateTimeFactory
|
139
|
+
def self.create(*param)
|
140
|
+
DataTypes::Quantity::DateTime::DvDateTime.new(*param)
|
141
|
+
end
|
142
|
+
end
|
143
|
+
|
144
|
+
class DvDurationFactory
|
145
|
+
def self.create(*param)
|
146
|
+
DataTypes::Quantity::DateTime::DvDuration.new(*param)
|
147
|
+
end
|
148
|
+
end
|
149
|
+
|
150
|
+
class DvEncapsulatedFactory
|
151
|
+
def self.create(*param)
|
152
|
+
DataTypes::Encapsulated::DvEncapsulated.new(*param)
|
153
|
+
end
|
154
|
+
end
|
155
|
+
|
156
|
+
class DvMultimediaFactory
|
157
|
+
def self.create(*param)
|
158
|
+
DataTypes::Encapsulated::DvMultimedia.new(*param)
|
159
|
+
end
|
160
|
+
end
|
161
|
+
|
162
|
+
class DvParsableFactory
|
163
|
+
def self.create(*param)
|
164
|
+
DataTypes::Encapsulated::DvParsable.new(*param)
|
165
|
+
end
|
166
|
+
end
|
167
|
+
|
168
|
+
class DvUriFactory
|
169
|
+
def self.create(*param)
|
170
|
+
DataTypes::URI::DvUri.new(*param)
|
171
|
+
end
|
172
|
+
end
|
173
|
+
|
174
|
+
class DvEhrUriFactory
|
175
|
+
def self.create(*param)
|
176
|
+
DataTypes::URI::DvEhrUri.new(*param)
|
177
|
+
end
|
178
|
+
end
|
179
|
+
end
|
180
|
+
end
|