renalware-forms 0.1.10 → 0.1.14
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/.gitignore +8 -0
- data/.rspec +1 -0
- data/.rubocop.yml +63 -0
- data/.ruby-version +1 -0
- data/.semaphore/semaphore.yml +51 -0
- data/CHANGELOG.md +45 -0
- data/Gemfile +21 -0
- data/Gemfile.lock +131 -0
- data/bin/rspec +3 -0
- data/default.yml +6 -0
- data/lib/renalware/forms/generic/homecare/v1.rb +11 -0
- data/lib/renalware/forms/generic/homecare.rb +2 -0
- data/lib/renalware/forms/generic.rb +2 -0
- data/lib/renalware/forms/homecare/args.rb +13 -7
- data/lib/renalware/forms/homecare.rb +3 -4
- data/lib/renalware/forms/version.rb +1 -1
- data/lib/renalware/forms.rb +5 -9
- data/lib/tasks/tasks.rake +3 -1
- data/renalware-forms.gemspec +34 -0
- data/spec/renalware/forms/args_spec.rb +30 -0
- data/spec/renalware/forms/homecare/generic/v1/allergies_spec.rb +38 -0
- data/spec/renalware/forms/homecare/generic/v1/delivery_frequencies_spec.rb +53 -0
- data/spec/renalware/forms/homecare/generic/v1/heading_spec.rb +26 -0
- data/spec/renalware/forms/homecare/generic/v1/mediations_spec.rb +37 -0
- data/spec/renalware/forms/homecare/generic/v1/patient_details_spec.rb +37 -0
- data/spec/renalware/forms/homecare/generic/v1/prescription_durations_spec.rb +52 -0
- data/spec/renalware/forms/homecare/generic/v1/signoff_spec.rb +19 -0
- data/spec/renalware/forms/homecare/pdf_spec.rb +71 -0
- data/spec/spec_helper.rb +78 -0
- metadata +32 -23
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 17b52d0a15890cefaeb0f17f380dfdb7ad4278a018e33c8efce02d0223087661
|
|
4
|
+
data.tar.gz: e03e9e3936da756f26656fa3a3f7f20a0aa2adbc8b4a3e6ffa4171722945fa56
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 7916272475387df5ae34a022fa4119bbe563e556607e3c695255193fc1f2058ced488dd3cbd72f6cb21923ccfde2a782ae2a92d66993b41a0a5bec500c640a01
|
|
7
|
+
data.tar.gz: 24e0160727b509117d8c1ec5b60154e43b15180b1e94113b8e1bcc072083301196c79b8ea21a3e469b458f896701709af7c0ff8a7ea7a5cf702130e402f3bfe8
|
data/.gitignore
ADDED
data/.rspec
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
--require spec_helper
|
data/.rubocop.yml
ADDED
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
require:
|
|
2
|
+
- rubocop-rails
|
|
3
|
+
- rubocop-rspec
|
|
4
|
+
- rubocop-performance
|
|
5
|
+
|
|
6
|
+
# Note that the local default.yml is overwritten on CodeClimate with the contents of
|
|
7
|
+
# the remote rubocop.yml pulled from GitHub in a codeclimate prepare step.
|
|
8
|
+
inherit_from:
|
|
9
|
+
- default.yml
|
|
10
|
+
|
|
11
|
+
AllCops:
|
|
12
|
+
UseCache: true
|
|
13
|
+
TargetRubyVersion: 3.0
|
|
14
|
+
# Just defining the Exclude or Include keys here overwrites the settings in default.yml
|
|
15
|
+
# so we have to redefine the entire set
|
|
16
|
+
Exclude:
|
|
17
|
+
- "*.gemspec"
|
|
18
|
+
- "vendor/**/*"
|
|
19
|
+
- "bin/**/*"
|
|
20
|
+
- "lib/tasks/**/*"
|
|
21
|
+
- "db/**/*"
|
|
22
|
+
- "spec/dummy/bin/**/*"
|
|
23
|
+
- "spec/dummy/lib/tasks/**/*"
|
|
24
|
+
- "spec/dummy/db/**/*"
|
|
25
|
+
- "tmp/**/*"
|
|
26
|
+
- "spec/dummy/tmp/**/*"
|
|
27
|
+
- "vendor/bundle/**/*"
|
|
28
|
+
- "config/initializers/devise.rb"
|
|
29
|
+
|
|
30
|
+
Layout/LineLength:
|
|
31
|
+
Exclude:
|
|
32
|
+
- "spec/acceptance/renalware/steps/**/*"
|
|
33
|
+
|
|
34
|
+
Metrics/AbcSize:
|
|
35
|
+
Max: 50
|
|
36
|
+
RSpec/ExampleLength:
|
|
37
|
+
Max: 40
|
|
38
|
+
RSpec/NestedGroups:
|
|
39
|
+
Max: 4
|
|
40
|
+
RSpec/MultipleExpectations:
|
|
41
|
+
Max: 20
|
|
42
|
+
RSpec/DescribeClass:
|
|
43
|
+
Enabled: false
|
|
44
|
+
RSpec/ImplicitSubject:
|
|
45
|
+
Enabled: false
|
|
46
|
+
RSpec/DescribedClass:
|
|
47
|
+
Enabled: false
|
|
48
|
+
Performance/RedundantBlockCall:
|
|
49
|
+
Enabled: false
|
|
50
|
+
Style/NumericPredicate:
|
|
51
|
+
Enabled: false
|
|
52
|
+
RSpec/InstanceVariable:
|
|
53
|
+
Enabled: false
|
|
54
|
+
Metrics/MethodLength:
|
|
55
|
+
Max: 50
|
|
56
|
+
Rails/Date:
|
|
57
|
+
Enabled: false
|
|
58
|
+
Rails/TimeZone:
|
|
59
|
+
Enabled: false
|
|
60
|
+
Style/AsciiComments:
|
|
61
|
+
Enabled: false
|
|
62
|
+
Style/ZeroLengthPredicate:
|
|
63
|
+
Enabled: false
|
data/.ruby-version
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
3.0.2
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
# Use the latest stable version of Semaphore 2.0 YML syntax:
|
|
2
|
+
version: v1.0
|
|
3
|
+
name: renalware-forms
|
|
4
|
+
|
|
5
|
+
agent:
|
|
6
|
+
machine:
|
|
7
|
+
type: e1-standard-2
|
|
8
|
+
os_image: ubuntu1804
|
|
9
|
+
|
|
10
|
+
blocks:
|
|
11
|
+
- name: Test setup
|
|
12
|
+
task:
|
|
13
|
+
jobs:
|
|
14
|
+
- name: bundle
|
|
15
|
+
commands:
|
|
16
|
+
- checkout
|
|
17
|
+
- cache restore gems-$SEMAPHORE_GIT_BRANCH-$(checksum Gemfile.lock),gems-$SEMAPHORE_GIT_BRANCH-,gems-master-
|
|
18
|
+
- sem-version ruby 3.0.2
|
|
19
|
+
- bundle install --deployment -j 4 --path vendor/bundle
|
|
20
|
+
- cache store gems-$SEMAPHORE_GIT_BRANCH-$(checksum Gemfile.lock) vendor/bundle
|
|
21
|
+
|
|
22
|
+
- name: Tests
|
|
23
|
+
task:
|
|
24
|
+
env_vars:
|
|
25
|
+
- name: RAILS_ENV
|
|
26
|
+
value: test
|
|
27
|
+
|
|
28
|
+
# This secret on semaphore contains the CC_TEST_REPORTER_ID ENV var
|
|
29
|
+
secrets:
|
|
30
|
+
- name: renalware-forms
|
|
31
|
+
|
|
32
|
+
prologue:
|
|
33
|
+
commands:
|
|
34
|
+
- checkout
|
|
35
|
+
- cache restore gems-$SEMAPHORE_GIT_BRANCH-$(checksum Gemfile.lock),gems-$SEMAPHORE_GIT_BRANCH-,gems-master-
|
|
36
|
+
- git submodule sync ; git submodule update --init
|
|
37
|
+
- curl -L https://codeclimate.com/downloads/test-reporter/test-reporter-latest-linux-amd64 > ./cc-test-reporter
|
|
38
|
+
- chmod +x ./cc-test-reporter
|
|
39
|
+
- ./cc-test-reporter before-build
|
|
40
|
+
- sem-version ruby 3.0.2
|
|
41
|
+
- bundle install --deployment --path vendor/bundle
|
|
42
|
+
|
|
43
|
+
jobs:
|
|
44
|
+
- name: RSpec tests
|
|
45
|
+
commands:
|
|
46
|
+
- bundle exec rspec --format progress
|
|
47
|
+
|
|
48
|
+
epilogue:
|
|
49
|
+
on_pass:
|
|
50
|
+
commands:
|
|
51
|
+
- ./cc-test-reporter after-build
|
data/CHANGELOG.md
ADDED
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
# Change Log
|
|
2
|
+
|
|
3
|
+
All notable changes to this project will be documented in
|
|
4
|
+
this [changelog](http://keepachangelog.com/en/0.3.0/).
|
|
5
|
+
This project adheres to Semantic Versioning.
|
|
6
|
+
|
|
7
|
+
## Unreleased
|
|
8
|
+
### Added
|
|
9
|
+
### Changed
|
|
10
|
+
### Fixed
|
|
11
|
+
|
|
12
|
+
## 0.1.14
|
|
13
|
+
6 Oct 2021
|
|
14
|
+
### Added
|
|
15
|
+
### Changed
|
|
16
|
+
- Switched from dry-types to Virtus
|
|
17
|
+
- Use Ruby 3
|
|
18
|
+
|
|
19
|
+
### Fixed
|
|
20
|
+
## 0.1.11
|
|
21
|
+
3 April 2020
|
|
22
|
+
### Added
|
|
23
|
+
### Changed
|
|
24
|
+
- Switched from Virtus to dry-types
|
|
25
|
+
### Fixed
|
|
26
|
+
|
|
27
|
+
## 0.1.7
|
|
28
|
+
31 Mar 2020
|
|
29
|
+
### Added
|
|
30
|
+
### Changed
|
|
31
|
+
### Fixed
|
|
32
|
+
- Remove unused homecare args
|
|
33
|
+
|
|
34
|
+
## 0.1.6
|
|
35
|
+
31 Mar 2020
|
|
36
|
+
### Added
|
|
37
|
+
### Changed
|
|
38
|
+
### Fixed
|
|
39
|
+
- Support supplying a selected delivery frequency
|
|
40
|
+
|
|
41
|
+
## 0.1.3
|
|
42
|
+
### Added
|
|
43
|
+
### Changed
|
|
44
|
+
### Fixed
|
|
45
|
+
- Bring in allergies
|
data/Gemfile
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
source "https://rubygems.org"
|
|
2
|
+
git_source(:github) { |repo| "https://github.com/#{repo}.git" }
|
|
3
|
+
|
|
4
|
+
# Declare your gem's dependencies in renalware-forms.gemspec.
|
|
5
|
+
# Bundler will treat runtime dependencies like base dependencies, and
|
|
6
|
+
# development dependencies will be added by default to the :development group.
|
|
7
|
+
gemspec
|
|
8
|
+
|
|
9
|
+
# Declare any dependencies that are still in development here instead of in
|
|
10
|
+
# your gemspec. These might include edge Rails or gems from your path or
|
|
11
|
+
# Git. Remember to move these dependencies to your gemspec before releasing
|
|
12
|
+
# your gem to rubygems.org.
|
|
13
|
+
|
|
14
|
+
group :development, :test do
|
|
15
|
+
gem "byebug"
|
|
16
|
+
gem "rubocop"
|
|
17
|
+
gem "rubocop-performance"
|
|
18
|
+
gem "rubocop-rails"
|
|
19
|
+
gem "rubocop-rspec"
|
|
20
|
+
gem "simplecov", "~> 0.17.1"
|
|
21
|
+
end
|
data/Gemfile.lock
ADDED
|
@@ -0,0 +1,131 @@
|
|
|
1
|
+
PATH
|
|
2
|
+
remote: .
|
|
3
|
+
specs:
|
|
4
|
+
renalware-forms (0.1.14)
|
|
5
|
+
activemodel
|
|
6
|
+
attr_extras (~> 6.2)
|
|
7
|
+
prawn (~> 2.2)
|
|
8
|
+
prawn-table (~> 0.2)
|
|
9
|
+
rake
|
|
10
|
+
virtus
|
|
11
|
+
|
|
12
|
+
GEM
|
|
13
|
+
remote: https://rubygems.org/
|
|
14
|
+
specs:
|
|
15
|
+
Ascii85 (1.1.0)
|
|
16
|
+
activemodel (6.1.4.1)
|
|
17
|
+
activesupport (= 6.1.4.1)
|
|
18
|
+
activesupport (6.1.4.1)
|
|
19
|
+
concurrent-ruby (~> 1.0, >= 1.0.2)
|
|
20
|
+
i18n (>= 1.6, < 2)
|
|
21
|
+
minitest (>= 5.1)
|
|
22
|
+
tzinfo (~> 2.0)
|
|
23
|
+
zeitwerk (~> 2.3)
|
|
24
|
+
afm (0.2.2)
|
|
25
|
+
ast (2.4.2)
|
|
26
|
+
attr_extras (6.2.4)
|
|
27
|
+
axiom-types (0.1.1)
|
|
28
|
+
descendants_tracker (~> 0.0.4)
|
|
29
|
+
ice_nine (~> 0.11.0)
|
|
30
|
+
thread_safe (~> 0.3, >= 0.3.1)
|
|
31
|
+
byebug (11.1.3)
|
|
32
|
+
coercible (1.0.0)
|
|
33
|
+
descendants_tracker (~> 0.0.1)
|
|
34
|
+
concurrent-ruby (1.1.9)
|
|
35
|
+
descendants_tracker (0.0.4)
|
|
36
|
+
thread_safe (~> 0.3, >= 0.3.1)
|
|
37
|
+
diff-lcs (1.4.4)
|
|
38
|
+
docile (1.4.0)
|
|
39
|
+
hashery (2.1.2)
|
|
40
|
+
i18n (1.8.10)
|
|
41
|
+
concurrent-ruby (~> 1.0)
|
|
42
|
+
ice_nine (0.11.2)
|
|
43
|
+
json (2.5.1)
|
|
44
|
+
minitest (5.14.4)
|
|
45
|
+
parallel (1.21.0)
|
|
46
|
+
parser (3.0.2.0)
|
|
47
|
+
ast (~> 2.4.1)
|
|
48
|
+
pdf-core (0.9.0)
|
|
49
|
+
pdf-reader (2.5.0)
|
|
50
|
+
Ascii85 (~> 1.0)
|
|
51
|
+
afm (~> 0.2.1)
|
|
52
|
+
hashery (~> 2.0)
|
|
53
|
+
ruby-rc4
|
|
54
|
+
ttfunk
|
|
55
|
+
prawn (2.4.0)
|
|
56
|
+
pdf-core (~> 0.9.0)
|
|
57
|
+
ttfunk (~> 1.7)
|
|
58
|
+
prawn-table (0.2.2)
|
|
59
|
+
prawn (>= 1.3.0, < 3.0.0)
|
|
60
|
+
rack (2.2.3)
|
|
61
|
+
rainbow (3.0.0)
|
|
62
|
+
rake (13.0.6)
|
|
63
|
+
regexp_parser (2.1.1)
|
|
64
|
+
rexml (3.2.5)
|
|
65
|
+
rspec (3.10.0)
|
|
66
|
+
rspec-core (~> 3.10.0)
|
|
67
|
+
rspec-expectations (~> 3.10.0)
|
|
68
|
+
rspec-mocks (~> 3.10.0)
|
|
69
|
+
rspec-core (3.10.1)
|
|
70
|
+
rspec-support (~> 3.10.0)
|
|
71
|
+
rspec-expectations (3.10.1)
|
|
72
|
+
diff-lcs (>= 1.2.0, < 2.0)
|
|
73
|
+
rspec-support (~> 3.10.0)
|
|
74
|
+
rspec-mocks (3.10.2)
|
|
75
|
+
diff-lcs (>= 1.2.0, < 2.0)
|
|
76
|
+
rspec-support (~> 3.10.0)
|
|
77
|
+
rspec-support (3.10.2)
|
|
78
|
+
rubocop (1.22.1)
|
|
79
|
+
parallel (~> 1.10)
|
|
80
|
+
parser (>= 3.0.0.0)
|
|
81
|
+
rainbow (>= 2.2.2, < 4.0)
|
|
82
|
+
regexp_parser (>= 1.8, < 3.0)
|
|
83
|
+
rexml
|
|
84
|
+
rubocop-ast (>= 1.12.0, < 2.0)
|
|
85
|
+
ruby-progressbar (~> 1.7)
|
|
86
|
+
unicode-display_width (>= 1.4.0, < 3.0)
|
|
87
|
+
rubocop-ast (1.12.0)
|
|
88
|
+
parser (>= 3.0.1.1)
|
|
89
|
+
rubocop-performance (1.11.5)
|
|
90
|
+
rubocop (>= 1.7.0, < 2.0)
|
|
91
|
+
rubocop-ast (>= 0.4.0)
|
|
92
|
+
rubocop-rails (2.12.2)
|
|
93
|
+
activesupport (>= 4.2.0)
|
|
94
|
+
rack (>= 1.1)
|
|
95
|
+
rubocop (>= 1.7.0, < 2.0)
|
|
96
|
+
rubocop-rspec (2.5.0)
|
|
97
|
+
rubocop (~> 1.19)
|
|
98
|
+
ruby-progressbar (1.11.0)
|
|
99
|
+
ruby-rc4 (0.1.5)
|
|
100
|
+
simplecov (0.17.1)
|
|
101
|
+
docile (~> 1.1)
|
|
102
|
+
json (>= 1.8, < 3)
|
|
103
|
+
simplecov-html (~> 0.10.0)
|
|
104
|
+
simplecov-html (0.10.2)
|
|
105
|
+
thread_safe (0.3.6)
|
|
106
|
+
ttfunk (1.7.0)
|
|
107
|
+
tzinfo (2.0.4)
|
|
108
|
+
concurrent-ruby (~> 1.0)
|
|
109
|
+
unicode-display_width (2.1.0)
|
|
110
|
+
virtus (2.0.0)
|
|
111
|
+
axiom-types (~> 0.1)
|
|
112
|
+
coercible (~> 1.0)
|
|
113
|
+
descendants_tracker (~> 0.0, >= 0.0.3)
|
|
114
|
+
zeitwerk (2.4.2)
|
|
115
|
+
|
|
116
|
+
PLATFORMS
|
|
117
|
+
ruby
|
|
118
|
+
|
|
119
|
+
DEPENDENCIES
|
|
120
|
+
byebug
|
|
121
|
+
pdf-reader
|
|
122
|
+
renalware-forms!
|
|
123
|
+
rspec
|
|
124
|
+
rubocop
|
|
125
|
+
rubocop-performance
|
|
126
|
+
rubocop-rails
|
|
127
|
+
rubocop-rspec
|
|
128
|
+
simplecov (~> 0.17.1)
|
|
129
|
+
|
|
130
|
+
BUNDLED WITH
|
|
131
|
+
2.2.28
|
data/bin/rspec
ADDED
data/default.yml
ADDED
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
inherit_from:
|
|
2
|
+
- https://raw.githubusercontent.com/airslie/styleguide/master/rubocop.yml
|
|
3
|
+
|
|
4
|
+
# Don't add anything to this file other than the inherit_from above
|
|
5
|
+
# as this file is overwritten on CodeClimate with the contents of the above
|
|
6
|
+
# remote url which is downloaded in a CodeClimate prepare step.
|
|
@@ -6,3 +6,14 @@ module Renalware::Forms::Generic
|
|
|
6
6
|
end
|
|
7
7
|
end
|
|
8
8
|
end
|
|
9
|
+
|
|
10
|
+
require_relative "v1/base"
|
|
11
|
+
require_relative "v1/allergies"
|
|
12
|
+
require_relative "v1/delivery_frequencies"
|
|
13
|
+
require_relative "v1/document"
|
|
14
|
+
require_relative "v1/footer"
|
|
15
|
+
require_relative "v1/heading"
|
|
16
|
+
require_relative "v1/medications"
|
|
17
|
+
require_relative "v1/patient_details"
|
|
18
|
+
require_relative "v1/prescription_durations"
|
|
19
|
+
require_relative "v1/signoff"
|
|
@@ -29,6 +29,7 @@ module Renalware::Forms
|
|
|
29
29
|
attribute :nhs_number, String, default: ""
|
|
30
30
|
attribute :born_on, Date
|
|
31
31
|
attribute :modality, String, default: ""
|
|
32
|
+
attribute :fmc_patient, String, default: ""
|
|
32
33
|
attribute :telephone, String, default: ""
|
|
33
34
|
attribute :hospital_number, String, default: ""
|
|
34
35
|
attribute :address, Array(String), default: []
|
|
@@ -45,14 +46,16 @@ module Renalware::Forms
|
|
|
45
46
|
attribute :no_known_allergies, Boolean
|
|
46
47
|
attribute :allergies, Array[String]
|
|
47
48
|
attribute :drug_type, String
|
|
49
|
+
attribute :administration_route, String
|
|
50
|
+
attribute :administration_frequency, String
|
|
48
51
|
attribute :prescription_duration, String
|
|
49
52
|
attribute :administration_device, String
|
|
50
53
|
attribute :medications, Array[Medication]
|
|
51
54
|
attribute :consultant, String
|
|
52
55
|
attribute :delivery_frequencies, Array[String], default: ["3 months", "6 months"]
|
|
56
|
+
attribute :selected_delivery_frequency, String # e.g. "6 months"
|
|
53
57
|
attribute :prescription_durations, Array[String] # e.g. ["3 months", "6 months"]
|
|
54
58
|
attribute :selected_prescription_duration, String # e.g. "3 months"
|
|
55
|
-
attribute :selected_delivery_frequency, String # e.g. "6 months"
|
|
56
59
|
|
|
57
60
|
validates :family_name, presence: true
|
|
58
61
|
validates :given_name, presence: true
|
|
@@ -84,7 +87,7 @@ module Renalware::Forms
|
|
|
84
87
|
end
|
|
85
88
|
|
|
86
89
|
def format_address_array(add)
|
|
87
|
-
return unless add
|
|
90
|
+
return unless add.is_a?(Array)
|
|
88
91
|
|
|
89
92
|
add.compact.reject { |line| line == "" }.uniq&.join("\n")
|
|
90
93
|
end
|
|
@@ -99,6 +102,7 @@ module Renalware::Forms
|
|
|
99
102
|
Array(allergies).uniq.compact.join("<br>")
|
|
100
103
|
end
|
|
101
104
|
|
|
105
|
+
# rubocop:disable Metrics/AbcSize, Metrics/MethodLength
|
|
102
106
|
def self.test_data(provider: :generic, version: 1)
|
|
103
107
|
new.tap do |args|
|
|
104
108
|
args.provider = provider
|
|
@@ -108,6 +112,7 @@ module Renalware::Forms
|
|
|
108
112
|
args.family_name = "JONES"
|
|
109
113
|
args.nhs_number = "0123456789"
|
|
110
114
|
args.born_on = Date.parse("2001-01-01")
|
|
115
|
+
args.fmc_patient = "123"
|
|
111
116
|
args.telephone = "07000 000001"
|
|
112
117
|
args.hospital_number = "ABC123"
|
|
113
118
|
args.modality = "PD"
|
|
@@ -121,19 +126,20 @@ module Renalware::Forms
|
|
|
121
126
|
args.hospital_telephone = "0000 000001"
|
|
122
127
|
args.hospital_department = "Renal"
|
|
123
128
|
args.hospital_address = [
|
|
124
|
-
|
|
125
|
-
"
|
|
126
|
-
"
|
|
129
|
+
nil,
|
|
130
|
+
"WHITECHAPEL",
|
|
131
|
+
"",
|
|
127
132
|
"LONDON",
|
|
128
133
|
"E1 1FR",
|
|
129
134
|
"UK",
|
|
130
135
|
"Tel: 0800 00000000",
|
|
131
136
|
"Another line"
|
|
132
|
-
|
|
133
137
|
]
|
|
134
138
|
args.no_known_allergies = false
|
|
135
139
|
args.allergies = ["Nuts", nil, "Penicillin", "Mown grass"]
|
|
136
140
|
args.drug_type = "ESA"
|
|
141
|
+
args.administration_frequency = "Daily"
|
|
142
|
+
args.administration_route = "Per Oral"
|
|
137
143
|
args.prescription_duration = "1 month"
|
|
138
144
|
args.administration_device = "device?"
|
|
139
145
|
args.po_number = "P123"
|
|
@@ -141,7 +147,6 @@ module Renalware::Forms
|
|
|
141
147
|
args.delivery_frequencies = ["1 week", "3 months", "6 months", "12 month"]
|
|
142
148
|
args.prescription_durations = ["3 months", "6 months", "12 months"]
|
|
143
149
|
args.selected_prescription_duration = "6 months"
|
|
144
|
-
args.selected_delivery_frequency = "6 months"
|
|
145
150
|
|
|
146
151
|
args.medications << Medication.new(
|
|
147
152
|
date: Date.today,
|
|
@@ -154,6 +159,7 @@ module Renalware::Forms
|
|
|
154
159
|
raise ArgumentError, args.errors unless args.valid?
|
|
155
160
|
end
|
|
156
161
|
end
|
|
162
|
+
# rubocop:enable Metrics/AbcSize, Metrics/MethodLength
|
|
157
163
|
|
|
158
164
|
def medications_are_present
|
|
159
165
|
if medications.size == 0
|
data/lib/renalware/forms.rb
CHANGED
|
@@ -1,19 +1,15 @@
|
|
|
1
1
|
# frozen_string_literal: true
|
|
2
2
|
|
|
3
|
-
require "zeitwerk"
|
|
4
3
|
require "prawn"
|
|
5
4
|
require "prawn/table"
|
|
6
5
|
require "attr_extras"
|
|
7
|
-
require_relative "./forms/version"
|
|
8
|
-
|
|
9
|
-
# Set up autoloading with zeitwerk
|
|
10
|
-
# As we are nested in lib/renalware/forms, be sure to push an absolute
|
|
11
|
-
# path to the lib folder.
|
|
12
|
-
loader = Zeitwerk::Loader.new
|
|
13
|
-
loader.push_dir File.expand_path("../", __dir__)
|
|
14
|
-
loader.setup
|
|
15
6
|
|
|
16
7
|
module Renalware
|
|
17
8
|
module Forms
|
|
18
9
|
end
|
|
19
10
|
end
|
|
11
|
+
|
|
12
|
+
require_relative "forms/base"
|
|
13
|
+
require_relative "forms/helpers"
|
|
14
|
+
require_relative "forms/generic"
|
|
15
|
+
require_relative "forms/homecare"
|
data/lib/tasks/tasks.rake
CHANGED
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
$LOAD_PATH.push File.expand_path("lib", __dir__)
|
|
4
|
+
|
|
5
|
+
# Maintain your gem's version:
|
|
6
|
+
require "renalware/forms/version"
|
|
7
|
+
|
|
8
|
+
# Describe your gem and declare its dependencies:
|
|
9
|
+
Gem::Specification.new do |spec|
|
|
10
|
+
spec.name = "renalware-forms"
|
|
11
|
+
spec.version = Renalware::Forms::VERSION
|
|
12
|
+
spec.authors = ["Airslie Ltd"]
|
|
13
|
+
spec.email = ["dev@aisrlie.com"]
|
|
14
|
+
spec.homepage = "http://airslie.com"
|
|
15
|
+
spec.summary = "PDF library for Renalware forms"
|
|
16
|
+
spec.description = "The home for various forms for external providers eg home care prescriptions"
|
|
17
|
+
spec.license = "MIT"
|
|
18
|
+
spec.required_ruby_version = ">= 3.0.0"
|
|
19
|
+
|
|
20
|
+
spec.files = `git ls-files`.split("\n")
|
|
21
|
+
spec.test_files = `git ls-files -- {spec}/*`.split("\n")
|
|
22
|
+
spec.executables = `git ls-files -- bin/*`.split("\n").map { |f| File.basename(f) }
|
|
23
|
+
spec.require_paths = ["lib"]
|
|
24
|
+
spec.extra_rdoc_files = ["README.md"]
|
|
25
|
+
|
|
26
|
+
spec.add_dependency "activemodel"
|
|
27
|
+
spec.add_dependency "attr_extras", "~> 6.2"
|
|
28
|
+
spec.add_dependency "prawn", "~> 2.2"
|
|
29
|
+
spec.add_dependency "prawn-table", "~> 0.2"
|
|
30
|
+
spec.add_dependency "rake"
|
|
31
|
+
spec.add_dependency "virtus"
|
|
32
|
+
spec.add_development_dependency "pdf-reader"
|
|
33
|
+
spec.add_development_dependency "rspec"
|
|
34
|
+
end
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
require "spec_helper"
|
|
4
|
+
|
|
5
|
+
module Renalware::Forms::Homecare
|
|
6
|
+
RSpec.describe Args do
|
|
7
|
+
describe "#patient_name" do
|
|
8
|
+
subject {
|
|
9
|
+
hash = default_test_arg_values.update(
|
|
10
|
+
given_name: "John",
|
|
11
|
+
family_name: "SMITH",
|
|
12
|
+
title: title
|
|
13
|
+
)
|
|
14
|
+
described_class.new(hash).patient_name
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
context "when title present" do
|
|
18
|
+
let(:title) { "Mr" }
|
|
19
|
+
|
|
20
|
+
it { is_expected.to eq("SMITH, John (Mr)") }
|
|
21
|
+
end
|
|
22
|
+
|
|
23
|
+
context "when title missing" do
|
|
24
|
+
let(:title) { "" }
|
|
25
|
+
|
|
26
|
+
it { is_expected.to eq("SMITH, John") }
|
|
27
|
+
end
|
|
28
|
+
end
|
|
29
|
+
end
|
|
30
|
+
end
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
require "spec_helper"
|
|
4
|
+
|
|
5
|
+
module Renalware::Forms::Generic
|
|
6
|
+
RSpec.describe Homecare::V1::Allergies do
|
|
7
|
+
context "when the patient has iit recoreded that they have no known allergies" do
|
|
8
|
+
it do
|
|
9
|
+
hash = default_test_arg_values.update(no_known_allergies: true)
|
|
10
|
+
args = Renalware::Forms::Homecare::Args.new(hash)
|
|
11
|
+
doc = test_prawn_doc
|
|
12
|
+
|
|
13
|
+
described_class.new(doc, args).build
|
|
14
|
+
|
|
15
|
+
text = extract_text_from_prawn_doc(doc)
|
|
16
|
+
expect(text).to include("No Known Allergies")
|
|
17
|
+
end
|
|
18
|
+
end
|
|
19
|
+
|
|
20
|
+
it do
|
|
21
|
+
hash = default_test_arg_values.update(
|
|
22
|
+
no_known_allergies: false,
|
|
23
|
+
allergies: %w(nuts penicillin)
|
|
24
|
+
)
|
|
25
|
+
args = Renalware::Forms::Homecare::Args.new(hash)
|
|
26
|
+
doc = test_prawn_doc
|
|
27
|
+
|
|
28
|
+
described_class.new(doc, args).build
|
|
29
|
+
|
|
30
|
+
text = extract_text_from_prawn_doc(doc)
|
|
31
|
+
|
|
32
|
+
expect(text).not_to include("No Known Allergies")
|
|
33
|
+
expect(text).to include("Known Allergies")
|
|
34
|
+
expect(text).to include("nuts")
|
|
35
|
+
expect(text).to include("penicillin")
|
|
36
|
+
end
|
|
37
|
+
end
|
|
38
|
+
end
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
require "spec_helper"
|
|
4
|
+
|
|
5
|
+
module Renalware::Forms::Generic
|
|
6
|
+
RSpec.describe Homecare::V1::DeliveryFrequencies do
|
|
7
|
+
def extract_pdf_text(args)
|
|
8
|
+
doc = test_prawn_doc
|
|
9
|
+
described_class.new(doc, args).build
|
|
10
|
+
extract_text_from_prawn_doc(doc)
|
|
11
|
+
end
|
|
12
|
+
|
|
13
|
+
it do
|
|
14
|
+
hash = default_test_arg_values.update(delivery_frequencies: ["Once", "3 weeks", "6 weeks"])
|
|
15
|
+
args = Renalware::Forms::Homecare::Args.new(hash)
|
|
16
|
+
|
|
17
|
+
text = extract_pdf_text(args)
|
|
18
|
+
|
|
19
|
+
expect(text).to include("Frequency of deliveries")
|
|
20
|
+
expect(text).to match(/❏ +Once/)
|
|
21
|
+
expect(text).to match(/❏ +3 weeks/)
|
|
22
|
+
expect(text).to match(/❏ +6 weeks/)
|
|
23
|
+
end
|
|
24
|
+
|
|
25
|
+
context "when there are no frequencies supplied" do
|
|
26
|
+
it "displays the defaults" do
|
|
27
|
+
args = Renalware::Forms::Homecare::Args.new(**default_test_arg_values)
|
|
28
|
+
|
|
29
|
+
text = extract_pdf_text(args)
|
|
30
|
+
|
|
31
|
+
expect(text).to match(/Frequency of deliveries/)
|
|
32
|
+
expect(text).to match(/❏ +3 months/)
|
|
33
|
+
expect(text).to match(/❏ +6 months/)
|
|
34
|
+
end
|
|
35
|
+
end
|
|
36
|
+
|
|
37
|
+
context "when there is a selected delivery_frequency" do
|
|
38
|
+
it "indicates that frequency has been selected by checking a box" do
|
|
39
|
+
hash = default_test_arg_values.update(
|
|
40
|
+
delivery_frequencies: ["3 months", "6 months", "12 months"],
|
|
41
|
+
selected_delivery_frequency: "6 months"
|
|
42
|
+
)
|
|
43
|
+
args = Renalware::Forms::Homecare::Args.new(hash)
|
|
44
|
+
|
|
45
|
+
text = extract_pdf_text(args)
|
|
46
|
+
|
|
47
|
+
expect(text).to match(/❏ +3 months/)
|
|
48
|
+
expect(text).to match(/■ +6 months/)
|
|
49
|
+
expect(text).to match(/❏ +12 months/)
|
|
50
|
+
end
|
|
51
|
+
end
|
|
52
|
+
end
|
|
53
|
+
end
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
require "spec_helper"
|
|
4
|
+
|
|
5
|
+
module Renalware::Forms::Generic
|
|
6
|
+
RSpec.describe Homecare::V1::Heading do
|
|
7
|
+
it do
|
|
8
|
+
hash = default_test_arg_values.update(
|
|
9
|
+
po_number: "P123",
|
|
10
|
+
hospital_number: "H123",
|
|
11
|
+
drug_type: "ESA"
|
|
12
|
+
)
|
|
13
|
+
args = Renalware::Forms::Homecare::Args.new(hash)
|
|
14
|
+
doc = test_prawn_doc
|
|
15
|
+
|
|
16
|
+
described_class.new(doc, args).build
|
|
17
|
+
|
|
18
|
+
text = extract_text_from_prawn_doc(doc)
|
|
19
|
+
|
|
20
|
+
expect(text).to include(args.po_number)
|
|
21
|
+
expect(text).to include(args.hospital_number)
|
|
22
|
+
expect(text).to include(args.drug_type)
|
|
23
|
+
expect(text).to include("Home Delivery Medication List")
|
|
24
|
+
end
|
|
25
|
+
end
|
|
26
|
+
end
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
require "spec_helper"
|
|
4
|
+
|
|
5
|
+
module Renalware::Forms::Generic
|
|
6
|
+
RSpec.describe Homecare::V1::Medications do
|
|
7
|
+
it do
|
|
8
|
+
args = Renalware::Forms::Homecare::Args.new(**default_test_arg_values)
|
|
9
|
+
args.medications << Renalware::Forms::Homecare::Args::Medication.new(
|
|
10
|
+
date: "2020-01-01",
|
|
11
|
+
drug: "Drug1",
|
|
12
|
+
dose: "Dose1",
|
|
13
|
+
route: "Route1",
|
|
14
|
+
frequency: "Freq1"
|
|
15
|
+
)
|
|
16
|
+
args.medications << Renalware::Forms::Homecare::Args::Medication.new(
|
|
17
|
+
date: "2020-02-02",
|
|
18
|
+
drug: "Drug2",
|
|
19
|
+
dose: "Dose2",
|
|
20
|
+
route: "Route2",
|
|
21
|
+
frequency: "Freq2"
|
|
22
|
+
)
|
|
23
|
+
doc = test_prawn_doc
|
|
24
|
+
|
|
25
|
+
described_class.new(doc, args).build
|
|
26
|
+
|
|
27
|
+
text = extract_text_from_prawn_doc(doc)
|
|
28
|
+
|
|
29
|
+
expect(text).to include("2020-01-01")
|
|
30
|
+
expect(text).to include("Drug1")
|
|
31
|
+
expect(text).to include("Dose1")
|
|
32
|
+
expect(text).to include("Route1")
|
|
33
|
+
expect(text).to include("Freq1")
|
|
34
|
+
expect(text).to include("Drug2")
|
|
35
|
+
end
|
|
36
|
+
end
|
|
37
|
+
end
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
require "spec_helper"
|
|
4
|
+
|
|
5
|
+
module Renalware::Forms::Generic
|
|
6
|
+
RSpec.describe Homecare::V1::PatientDetails do
|
|
7
|
+
it do
|
|
8
|
+
hash = default_test_arg_values.update(
|
|
9
|
+
given_name: "John",
|
|
10
|
+
family_name: "SMITH",
|
|
11
|
+
title: "Mr",
|
|
12
|
+
modality: "HD",
|
|
13
|
+
born_on: "2001-01-01",
|
|
14
|
+
nhs_number: "0123456789",
|
|
15
|
+
hospital_number: "X123",
|
|
16
|
+
address: %w(aa bb cc),
|
|
17
|
+
postcode: "POSTCODE"
|
|
18
|
+
)
|
|
19
|
+
args = Renalware::Forms::Homecare::Args.new(hash)
|
|
20
|
+
doc = test_prawn_doc
|
|
21
|
+
|
|
22
|
+
described_class.new(doc, args).build
|
|
23
|
+
|
|
24
|
+
text = extract_text_from_prawn_doc(doc)
|
|
25
|
+
|
|
26
|
+
expect(text).to include("SMITH, John (Mr)")
|
|
27
|
+
expect(text).to include("HD")
|
|
28
|
+
expect(text).to include("2001-01-01")
|
|
29
|
+
expect(text).to include("0123456789")
|
|
30
|
+
expect(text).to include("X123")
|
|
31
|
+
expect(text).to include("aa")
|
|
32
|
+
expect(text).to include("bb")
|
|
33
|
+
expect(text).to include("cc")
|
|
34
|
+
expect(text).to include("POSTCODE")
|
|
35
|
+
end
|
|
36
|
+
end
|
|
37
|
+
end
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
require "spec_helper"
|
|
4
|
+
|
|
5
|
+
module Renalware::Forms::Generic
|
|
6
|
+
RSpec.describe Homecare::V1::PrescriptionDurations do
|
|
7
|
+
def extract_pdf_text(args)
|
|
8
|
+
doc = test_prawn_doc
|
|
9
|
+
described_class.new(doc, args).build
|
|
10
|
+
extract_text_from_prawn_doc(doc)
|
|
11
|
+
end
|
|
12
|
+
|
|
13
|
+
it do
|
|
14
|
+
hash = default_test_arg_values.update(
|
|
15
|
+
prescription_durations: ["3 months", "6 months", "12 months"]
|
|
16
|
+
)
|
|
17
|
+
args = Renalware::Forms::Homecare::Args.new(hash)
|
|
18
|
+
|
|
19
|
+
text = extract_pdf_text(args)
|
|
20
|
+
|
|
21
|
+
expect(text).to include("Repeat prescription for")
|
|
22
|
+
expect(text).to match(/❏ +3 months/)
|
|
23
|
+
expect(text).to match(/❏ +6 months/)
|
|
24
|
+
expect(text).to match(/❏ +12 months/)
|
|
25
|
+
end
|
|
26
|
+
|
|
27
|
+
it "works where there are no prescription_durations supplied" do
|
|
28
|
+
args = Renalware::Forms::Homecare::Args.new(default_test_arg_values)
|
|
29
|
+
|
|
30
|
+
text = extract_pdf_text(args)
|
|
31
|
+
|
|
32
|
+
expect(text).to include("Repeat prescription for")
|
|
33
|
+
end
|
|
34
|
+
|
|
35
|
+
context "when there is a selected prescription_duration" do
|
|
36
|
+
it "indicates that duration has been selected eg for checking a box" do
|
|
37
|
+
args = Renalware::Forms::Homecare::Args.new(
|
|
38
|
+
default_test_arg_values.update(
|
|
39
|
+
prescription_durations: ["3 months", "6 months", "12 months"],
|
|
40
|
+
selected_prescription_duration: "6 months"
|
|
41
|
+
)
|
|
42
|
+
)
|
|
43
|
+
|
|
44
|
+
text = extract_pdf_text(args)
|
|
45
|
+
|
|
46
|
+
expect(text).to match(/❏ +3 months/)
|
|
47
|
+
expect(text).to match(/■ +6 months/)
|
|
48
|
+
expect(text).to match(/❏ +12 months/)
|
|
49
|
+
end
|
|
50
|
+
end
|
|
51
|
+
end
|
|
52
|
+
end
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
require "spec_helper"
|
|
4
|
+
|
|
5
|
+
module Renalware::Forms::Generic
|
|
6
|
+
RSpec.describe Homecare::V1::Signoff do
|
|
7
|
+
it do
|
|
8
|
+
args = Renalware::Forms::Homecare::Args.new(
|
|
9
|
+
**default_test_arg_values.update(consultant: "Dr Pepper")
|
|
10
|
+
)
|
|
11
|
+
doc = test_prawn_doc
|
|
12
|
+
|
|
13
|
+
described_class.new(doc, args).build
|
|
14
|
+
|
|
15
|
+
text = extract_text_from_prawn_doc(doc)
|
|
16
|
+
expect(text).to include("Dr Pepper")
|
|
17
|
+
end
|
|
18
|
+
end
|
|
19
|
+
end
|
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
require "spec_helper"
|
|
4
|
+
|
|
5
|
+
RSpec.describe Renalware::Forms::Homecare::Pdf do
|
|
6
|
+
describe "#generate" do
|
|
7
|
+
# describe "argument validation" do
|
|
8
|
+
# it "throws an error if args is nil" do
|
|
9
|
+
# expect { described_class.generate(nil) }.to raise_error(ArgumentError)
|
|
10
|
+
# end
|
|
11
|
+
|
|
12
|
+
# it "throws an error if arg.provider is nil" do
|
|
13
|
+
# args = Renalware::Forms::Homecare::Args.new(provider: nil)
|
|
14
|
+
|
|
15
|
+
# expect {
|
|
16
|
+
# described_class.generate(args)
|
|
17
|
+
# }.to raise_error(ArgumentError, "Missing provider")
|
|
18
|
+
# end
|
|
19
|
+
|
|
20
|
+
# it "throws an error if arg.provider is an empty string" do
|
|
21
|
+
# args = Renalware::Forms::Homecare::Args.new(provider: "")
|
|
22
|
+
|
|
23
|
+
# expect {
|
|
24
|
+
# described_class.generate(args)
|
|
25
|
+
# }.to raise_error(ArgumentError, "Missing provider")
|
|
26
|
+
# end
|
|
27
|
+
|
|
28
|
+
# it "throws an error if arg.version is not a number" do
|
|
29
|
+
# args = Renalware::Forms::Homecare::Args.new(provider: :a, version: nil)
|
|
30
|
+
|
|
31
|
+
# expect {
|
|
32
|
+
# described_class.generate(args)
|
|
33
|
+
# }.to raise_error(ArgumentError, "Version must be >0")
|
|
34
|
+
# end
|
|
35
|
+
|
|
36
|
+
# it "throws an error no matching provider found" do
|
|
37
|
+
# args = Renalware::Forms::Homecare::Args.new(provider: :generico, version: 1)
|
|
38
|
+
|
|
39
|
+
# expect {
|
|
40
|
+
# described_class.generate(args)
|
|
41
|
+
# }.to raise_error(
|
|
42
|
+
# ArgumentError,
|
|
43
|
+
# "No PDF forms found for provider=generico version=1 "\
|
|
44
|
+
# "trying to resolve Renalware::Forms::Generico::Homecare::V1::Document"
|
|
45
|
+
# )
|
|
46
|
+
# end
|
|
47
|
+
|
|
48
|
+
# it "throws an error no matching version found" do
|
|
49
|
+
# args = Renalware::Forms::Homecare::Args.new(provider: :generic, version: 1000)
|
|
50
|
+
|
|
51
|
+
# expect {
|
|
52
|
+
# described_class.generate(args)
|
|
53
|
+
# }.to raise_error(
|
|
54
|
+
# ArgumentError,
|
|
55
|
+
# "No PDF forms found for provider=generic version=1000 "\
|
|
56
|
+
# "trying to resolve Renalware::Forms::Generic::Homecare::V1000::Document"
|
|
57
|
+
# )
|
|
58
|
+
# end
|
|
59
|
+
# end
|
|
60
|
+
|
|
61
|
+
context "when arguments are valid" do
|
|
62
|
+
it "create render a PDF for a Generic::Homecare::V1::Document" do
|
|
63
|
+
args = Renalware::Forms::Homecare::Args.new(**default_test_arg_values)
|
|
64
|
+
|
|
65
|
+
pdf_data = described_class.generate(args).render
|
|
66
|
+
|
|
67
|
+
expect(pdf_data).to start_with("%PDF-")
|
|
68
|
+
end
|
|
69
|
+
end
|
|
70
|
+
end
|
|
71
|
+
end
|
data/spec/spec_helper.rb
ADDED
|
@@ -0,0 +1,78 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
# This file was generated by the `rspec --init` command. Conventionally, all
|
|
4
|
+
# specs live under a `spec` directory, which RSpec adds to the `$LOAD_PATH`.
|
|
5
|
+
# The generated `.rspec` file contains `--require spec_helper` which will cause
|
|
6
|
+
# this file to always be loaded, without a need to explicitly require it in any
|
|
7
|
+
# files.
|
|
8
|
+
#
|
|
9
|
+
# Given that it is always loaded, you are encouraged to keep this file as
|
|
10
|
+
# light-weight as possible. Requiring heavyweight dependencies from this file
|
|
11
|
+
# will add to the boot time of your test suite on EVERY test run, even for an
|
|
12
|
+
# individual file that may not need all of that loaded. Instead, consider making
|
|
13
|
+
# a separate helper file that requires the additional dependencies and performs
|
|
14
|
+
# the additional setup, and require it from the spec files that actually need
|
|
15
|
+
# it.
|
|
16
|
+
|
|
17
|
+
require "simplecov"
|
|
18
|
+
SimpleCov.start
|
|
19
|
+
|
|
20
|
+
require "tempfile"
|
|
21
|
+
require "pdf-reader"
|
|
22
|
+
require "./lib/renalware/forms"
|
|
23
|
+
|
|
24
|
+
def pdf_reader_from(prawn_doc)
|
|
25
|
+
file = Tempfile.new("pdf")
|
|
26
|
+
prawn_doc.render_file file
|
|
27
|
+
PDF::Reader.new(file)
|
|
28
|
+
end
|
|
29
|
+
|
|
30
|
+
def test_prawn_doc
|
|
31
|
+
Prawn::Document.new(
|
|
32
|
+
page_size: "A4",
|
|
33
|
+
page_layout: :portrait,
|
|
34
|
+
margin: 15
|
|
35
|
+
)
|
|
36
|
+
end
|
|
37
|
+
|
|
38
|
+
def default_test_arg_values
|
|
39
|
+
{
|
|
40
|
+
provider: :generic,
|
|
41
|
+
version: 1,
|
|
42
|
+
modality: "HD",
|
|
43
|
+
telephone: "",
|
|
44
|
+
hospital_number: nil,
|
|
45
|
+
nhs_number: nil,
|
|
46
|
+
consultant: nil,
|
|
47
|
+
postcode: nil,
|
|
48
|
+
hospital_department: nil,
|
|
49
|
+
hospital_telephone: nil,
|
|
50
|
+
prescriber_name: nil,
|
|
51
|
+
po_number: "134",
|
|
52
|
+
administration_device: nil,
|
|
53
|
+
given_name: "John",
|
|
54
|
+
family_name: "SMITH",
|
|
55
|
+
title: "Mr",
|
|
56
|
+
no_known_allergies: true,
|
|
57
|
+
allergies: [],
|
|
58
|
+
drug_type: :esa,
|
|
59
|
+
born_on: "2019-01-01",
|
|
60
|
+
prescription_date: "2019-01-01"
|
|
61
|
+
}.dup
|
|
62
|
+
end
|
|
63
|
+
|
|
64
|
+
def extract_text_from_prawn_doc(doc)
|
|
65
|
+
pdf_reader_from(doc).pages.map(&:text).join
|
|
66
|
+
end
|
|
67
|
+
|
|
68
|
+
# See http://rubydoc.info/gems/rspec-core/RSpec/Core/Configuration
|
|
69
|
+
RSpec.configure do |config|
|
|
70
|
+
config.expect_with :rspec do |expectations|
|
|
71
|
+
expectations.include_chain_clauses_in_custom_matcher_descriptions = true
|
|
72
|
+
end
|
|
73
|
+
|
|
74
|
+
config.mock_with :rspec do |mocks|
|
|
75
|
+
mocks.verify_partial_doubles = true
|
|
76
|
+
end
|
|
77
|
+
config.shared_context_metadata_behavior = :apply_to_host_groups
|
|
78
|
+
end
|
metadata
CHANGED
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: renalware-forms
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 0.1.
|
|
4
|
+
version: 0.1.14
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Airslie Ltd
|
|
8
8
|
autorequire:
|
|
9
9
|
bindir: bin
|
|
10
10
|
cert_chain: []
|
|
11
|
-
date:
|
|
11
|
+
date: 2021-10-06 00:00:00.000000000 Z
|
|
12
12
|
dependencies:
|
|
13
13
|
- !ruby/object:Gem::Dependency
|
|
14
14
|
name: activemodel
|
|
@@ -82,20 +82,6 @@ dependencies:
|
|
|
82
82
|
version: '0'
|
|
83
83
|
- !ruby/object:Gem::Dependency
|
|
84
84
|
name: virtus
|
|
85
|
-
requirement: !ruby/object:Gem::Requirement
|
|
86
|
-
requirements:
|
|
87
|
-
- - "~>"
|
|
88
|
-
- !ruby/object:Gem::Version
|
|
89
|
-
version: '1.0'
|
|
90
|
-
type: :runtime
|
|
91
|
-
prerelease: false
|
|
92
|
-
version_requirements: !ruby/object:Gem::Requirement
|
|
93
|
-
requirements:
|
|
94
|
-
- - "~>"
|
|
95
|
-
- !ruby/object:Gem::Version
|
|
96
|
-
version: '1.0'
|
|
97
|
-
- !ruby/object:Gem::Dependency
|
|
98
|
-
name: zeitwerk
|
|
99
85
|
requirement: !ruby/object:Gem::Requirement
|
|
100
86
|
requirements:
|
|
101
87
|
- - ">="
|
|
@@ -109,7 +95,7 @@ dependencies:
|
|
|
109
95
|
- !ruby/object:Gem::Version
|
|
110
96
|
version: '0'
|
|
111
97
|
- !ruby/object:Gem::Dependency
|
|
112
|
-
name:
|
|
98
|
+
name: pdf-reader
|
|
113
99
|
requirement: !ruby/object:Gem::Requirement
|
|
114
100
|
requirements:
|
|
115
101
|
- - ">="
|
|
@@ -123,7 +109,7 @@ dependencies:
|
|
|
123
109
|
- !ruby/object:Gem::Version
|
|
124
110
|
version: '0'
|
|
125
111
|
- !ruby/object:Gem::Dependency
|
|
126
|
-
name:
|
|
112
|
+
name: rspec
|
|
127
113
|
requirement: !ruby/object:Gem::Requirement
|
|
128
114
|
requirements:
|
|
129
115
|
- - ">="
|
|
@@ -136,16 +122,28 @@ dependencies:
|
|
|
136
122
|
- - ">="
|
|
137
123
|
- !ruby/object:Gem::Version
|
|
138
124
|
version: '0'
|
|
139
|
-
description: The home for various forms for external providers
|
|
125
|
+
description: The home for various forms for external providers eg home care prescriptions
|
|
140
126
|
email:
|
|
141
127
|
- dev@aisrlie.com
|
|
142
|
-
executables:
|
|
128
|
+
executables:
|
|
129
|
+
- rspec
|
|
143
130
|
extensions: []
|
|
144
|
-
extra_rdoc_files:
|
|
131
|
+
extra_rdoc_files:
|
|
132
|
+
- README.md
|
|
145
133
|
files:
|
|
134
|
+
- ".gitignore"
|
|
135
|
+
- ".rspec"
|
|
136
|
+
- ".rubocop.yml"
|
|
137
|
+
- ".ruby-version"
|
|
138
|
+
- ".semaphore/semaphore.yml"
|
|
139
|
+
- CHANGELOG.md
|
|
140
|
+
- Gemfile
|
|
141
|
+
- Gemfile.lock
|
|
146
142
|
- MIT-LICENSE
|
|
147
143
|
- README.md
|
|
148
144
|
- Rakefile
|
|
145
|
+
- bin/rspec
|
|
146
|
+
- default.yml
|
|
149
147
|
- lib/renalware/forms.rb
|
|
150
148
|
- lib/renalware/forms/base.rb
|
|
151
149
|
- lib/renalware/forms/generic.rb
|
|
@@ -169,6 +167,17 @@ files:
|
|
|
169
167
|
- lib/renalware/forms/version.rb
|
|
170
168
|
- lib/tasks/homecare.rake
|
|
171
169
|
- lib/tasks/tasks.rake
|
|
170
|
+
- renalware-forms.gemspec
|
|
171
|
+
- spec/renalware/forms/args_spec.rb
|
|
172
|
+
- spec/renalware/forms/homecare/generic/v1/allergies_spec.rb
|
|
173
|
+
- spec/renalware/forms/homecare/generic/v1/delivery_frequencies_spec.rb
|
|
174
|
+
- spec/renalware/forms/homecare/generic/v1/heading_spec.rb
|
|
175
|
+
- spec/renalware/forms/homecare/generic/v1/mediations_spec.rb
|
|
176
|
+
- spec/renalware/forms/homecare/generic/v1/patient_details_spec.rb
|
|
177
|
+
- spec/renalware/forms/homecare/generic/v1/prescription_durations_spec.rb
|
|
178
|
+
- spec/renalware/forms/homecare/generic/v1/signoff_spec.rb
|
|
179
|
+
- spec/renalware/forms/homecare/pdf_spec.rb
|
|
180
|
+
- spec/spec_helper.rb
|
|
172
181
|
homepage: http://airslie.com
|
|
173
182
|
licenses:
|
|
174
183
|
- MIT
|
|
@@ -181,14 +190,14 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
|
181
190
|
requirements:
|
|
182
191
|
- - ">="
|
|
183
192
|
- !ruby/object:Gem::Version
|
|
184
|
-
version:
|
|
193
|
+
version: 3.0.0
|
|
185
194
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
|
186
195
|
requirements:
|
|
187
196
|
- - ">="
|
|
188
197
|
- !ruby/object:Gem::Version
|
|
189
198
|
version: '0'
|
|
190
199
|
requirements: []
|
|
191
|
-
rubygems_version: 3.
|
|
200
|
+
rubygems_version: 3.2.22
|
|
192
201
|
signing_key:
|
|
193
202
|
specification_version: 4
|
|
194
203
|
summary: PDF library for Renalware forms
|