Skip to content

Commit 7ddedc6

Browse files
committed
Add Vaccine#delivery_method_to_vaccine_method
This moves the method out of the `DraftVaccinationRecord` model so it can be used in multiple places.
1 parent 64a0c58 commit 7ddedc6

2 files changed

Lines changed: 15 additions & 13 deletions

File tree

app/models/draft_vaccination_record.rb

Lines changed: 4 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -204,8 +204,9 @@ def delivery_method=(value)
204204
super
205205
return if delivery_method_was.nil? # Don't clear batch on first set
206206

207-
previous_value = delivery_method_to_vaccine_method(delivery_method_was)
208-
new_value = delivery_method_to_vaccine_method(value)
207+
previous_value =
208+
Vaccine.delivery_method_to_vaccine_method(delivery_method_was)
209+
new_value = Vaccine.delivery_method_to_vaccine_method(value)
209210

210211
self.batch_id = nil unless previous_value == new_value
211212
end
@@ -245,23 +246,13 @@ def vaccine_method_matches_consent_and_triage?
245246
return true if delivery_method.blank? || !administered?
246247

247248
approved_methods = patient.approved_vaccine_methods(programme:)
248-
vaccine_method = delivery_method_to_vaccine_method(delivery_method)
249+
vaccine_method = Vaccine.delivery_method_to_vaccine_method(delivery_method)
249250

250251
approved_methods.include?(vaccine_method)
251252
end
252253

253254
private
254255

255-
def delivery_method_to_vaccine_method(delivery_method)
256-
return nil if delivery_method.nil?
257-
258-
if delivery_method.in?(Vaccine::INJECTION_DELIVERY_METHODS)
259-
"injection"
260-
else
261-
"nasal"
262-
end
263-
end
264-
265256
def readable_attribute_names
266257
writable_attribute_names - %w[vaccine_id]
267258
end

app/models/vaccine.rb

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -91,6 +91,17 @@ def available_delivery_methods
9191
AVAILABLE_DELIVERY_METHODS.fetch(method)
9292
end
9393

94+
def self.delivery_method_to_vaccine_method(delivery_method)
95+
return nil if delivery_method.nil?
96+
97+
suitable_delivery_methods =
98+
AVAILABLE_DELIVERY_METHODS.select do |_key, value|
99+
delivery_method.in?(value)
100+
end
101+
102+
suitable_delivery_methods.keys.first
103+
end
104+
94105
private
95106

96107
def fhir_mapper = @fhir_mapper ||= FHIRMapper::Vaccine.new(self)

0 commit comments

Comments
 (0)