def create
authorize VaccinationRecord.new(
patient: @patient,
session: @session,
programme: @programme
)
draft_vaccination_record =
DraftVaccinationRecord.new(request_session: session, current_user:)
@vaccinate_form =
VaccinateForm.new(
current_user:,
patient: @patient,
session: @session,
programme: @programme,
todays_batch: @todays_batch,
**vaccinate_form_params
)
if @vaccinate_form.save(draft_vaccination_record:)
steps = draft_vaccination_record.wizard_steps
steps.delete(:mmr_or_mmrv)
steps.delete(:dose)
steps.delete(:identity)
steps.delete(:notes)
steps.delete(:supplier)
steps.delete(:date_and_time)
steps.delete(:outcome) if draft_vaccination_record.administered?
if draft_vaccination_record.delivery_method.present? &&
draft_vaccination_record.delivery_site.present?
steps.delete(:delivery)
end
steps.delete(:vaccine) if draft_vaccination_record.vaccine.present?
if draft_vaccination_record.batch_number.present? &&
draft_vaccination_record.batch_expiry.present?
steps.delete(:batch)
end
steps.delete(:dose_sequence)
draft_vaccination_record.update!(first_active_wizard_step: steps.first)
redirect_to draft_vaccination_record_path(
I18n.t(steps.first, scope: :wicked)
)
else
render "patient_sessions/programmes/show",
layout: "full",
status: :unprocessable_content
end
end