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 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