renalware-forms 0.1.1 → 0.1.2
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/lib/renalware/forms/homecare/args.rb +12 -4
- data/lib/renalware/forms/homecare/pdf.rb +44 -11
- data/lib/renalware/forms/version.rb +1 -1
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 0c1b027bd4d284c58163596140b304afd5c666d11fb24a00879a1ea47753bb2a
|
4
|
+
data.tar.gz: 7938555c6f12fd5575ad8442f27b4f0df7ffd102c671669636ad6e73801ab087
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 5c1683b1e93f7939d4f4a18542ea8c985ccf685a61980fdd7617b24c136bc561f7ccfb4b78e18ef864e2b6793fb96b2f82c71bef09a5217765ed21720b88bb19
|
7
|
+
data.tar.gz: c90bd8fba7930ff462a5cb246150996018ba010321fa325827b4fcddf450008395a8a8a04f1764c009c0e076a7cf6b8f4453b02a99c0f2f24c31c67261e86d89
|
@@ -55,9 +55,11 @@ module Renalware::Forms
|
|
55
55
|
attribute :prescription_durations, Array[String] # e.g. ["3 months", "6 months"]
|
56
56
|
attribute :selected_prescription_duration, String # e.g. "3 months"
|
57
57
|
|
58
|
-
|
59
|
-
validates
|
60
|
-
validates
|
58
|
+
validates :family_name, presence: true
|
59
|
+
validates :given_name, presence: true
|
60
|
+
validates :provider, presence: true
|
61
|
+
validates :version, presence: true
|
62
|
+
validate :medications_are_present
|
61
63
|
|
62
64
|
def patient_name
|
63
65
|
name = [family_name, given_name].compact.join(", ")
|
@@ -85,7 +87,7 @@ module Renalware::Forms
|
|
85
87
|
def format_address_array(add)
|
86
88
|
return unless add&.is_a?(Array)
|
87
89
|
|
88
|
-
add.compact.reject { |line| line == "" }
|
90
|
+
add.compact.reject { |line| line == "" }.uniq&.join("\n")
|
89
91
|
end
|
90
92
|
|
91
93
|
def formatted_prescription_date
|
@@ -150,6 +152,12 @@ module Renalware::Forms
|
|
150
152
|
raise ArgumentError, args.errors unless args.valid?
|
151
153
|
end
|
152
154
|
end
|
155
|
+
|
156
|
+
def medications_are_present
|
157
|
+
if medications.size == 0
|
158
|
+
errors.add(:base, "There are no home delivery prescriptions for this drug type")
|
159
|
+
end
|
160
|
+
end
|
153
161
|
end
|
154
162
|
end
|
155
163
|
# rubocop:enable Metrics/ClassLength
|
@@ -2,26 +2,59 @@
|
|
2
2
|
|
3
3
|
module Renalware::Forms
|
4
4
|
class Homecare::Pdf
|
5
|
+
def initialize(args)
|
6
|
+
raise ArgumentError unless args
|
7
|
+
|
8
|
+
@args = args
|
9
|
+
end
|
10
|
+
|
11
|
+
def self.valid?(args)
|
12
|
+
new(args).valid?
|
13
|
+
end
|
14
|
+
|
15
|
+
def self.generate(args)
|
16
|
+
new(args).generate
|
17
|
+
end
|
18
|
+
|
19
|
+
def valid?
|
20
|
+
args.valid?
|
21
|
+
check_args_are_able_to_create_a_pdf
|
22
|
+
args.errors.none?
|
23
|
+
end
|
24
|
+
|
5
25
|
# Given an Args instance containing a provider (eg :fresenius) and a version (eg 1),
|
6
26
|
# get the document class for e.g. Renalware::Forms::Fresenius::Homecare::Document
|
7
27
|
# and use it to build a new PDF with the data (patient name etc supplied in args)
|
8
|
-
def
|
9
|
-
|
10
|
-
raise(ArgumentError, "Missing provider") unless args.provider
|
11
|
-
raise(ArgumentError, "Missing provider") if args.provider == ""
|
12
|
-
raise(ArgumentError, "Version must be >0") if args.version.to_i == 0
|
13
|
-
|
14
|
-
provider = args.provider.to_s.capitalize
|
15
|
-
version = "V#{args.version.to_i}"
|
16
|
-
document_klass_name = "#{provider}::Homecare::#{version}::Document"
|
17
|
-
document_klass = Renalware::Forms.const_get(document_klass_name)
|
28
|
+
def generate
|
29
|
+
document_klass = Renalware::Forms.const_get(document_class_name)
|
18
30
|
document_klass.build(args)
|
19
31
|
rescue NameError
|
20
32
|
raise(
|
21
33
|
ArgumentError,
|
22
34
|
"No PDF forms found for provider=#{args.provider} version=#{args.version} "\
|
23
|
-
"trying to resolve Renalware::Forms::#{
|
35
|
+
"trying to resolve Renalware::Forms::#{document_class_name}"
|
24
36
|
)
|
25
37
|
end
|
38
|
+
|
39
|
+
private
|
40
|
+
|
41
|
+
attr_reader :args
|
42
|
+
|
43
|
+
def check_args_are_able_to_create_a_pdf
|
44
|
+
unless Renalware::Forms.const_defined?(document_class_name)
|
45
|
+
args.errors.add(
|
46
|
+
:base,
|
47
|
+
"Supplied Provider and Version cannot be resolved to any homecare form"
|
48
|
+
)
|
49
|
+
end
|
50
|
+
end
|
51
|
+
|
52
|
+
def document_class_name
|
53
|
+
@document_class_name ||= begin
|
54
|
+
provider = args.provider.to_s.capitalize
|
55
|
+
version = "V#{args.version.to_i}"
|
56
|
+
"#{provider}::Homecare::#{version}::Document"
|
57
|
+
end
|
58
|
+
end
|
26
59
|
end
|
27
60
|
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.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Airslie Ltd
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2020-
|
11
|
+
date: 2020-03-06 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: activemodel
|