renalware-forms 0.1.1 → 0.1.2

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
  SHA256:
3
- metadata.gz: 7b8cdf83759e6c1ddacfa9d339f9c9b2baeca1a0a380a7e19e88fd7c318f5274
4
- data.tar.gz: aae863d39847a60411fa8dba064e4523cc6e64a663bb5961b30056f6cbd05410
3
+ metadata.gz: 0c1b027bd4d284c58163596140b304afd5c666d11fb24a00879a1ea47753bb2a
4
+ data.tar.gz: 7938555c6f12fd5575ad8442f27b4f0df7ffd102c671669636ad6e73801ab087
5
5
  SHA512:
6
- metadata.gz: 3b8e557c9259bf7fe13d28d5b9157cab38d8bd3efca56f2d719b9c67d95901c8da9d440c02a5b7cc5811e5b969f45eda96db829d7c8688d5c125861afcec5d33
7
- data.tar.gz: 43c1fecc6aec66d9cafae6ab6c1a113043d9dd876ca32e658c0b44e2b326deda459313f51d8be8a5d8c076f8f31d764d2df58211f73005ab63bdbb0f2185df1d
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
- # validates! will raise eg ActiveModel::StrictValidationFailed: Family name can't be blank
59
- validates! :family_name, presence: true
60
- validates! :given_name, presence: true
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 == "" }&.uniq&.join("\n")
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 self.generate(args)
9
- raise ArgumentError unless args
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::#{document_klass_name}"
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
@@ -2,6 +2,6 @@
2
2
 
3
3
  module Renalware
4
4
  module Forms
5
- VERSION = "0.1.1"
5
+ VERSION = "0.1.2"
6
6
  end
7
7
  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.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-02-28 00:00:00.000000000 Z
11
+ date: 2020-03-06 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: activemodel