Class: Request::AutoMultiplexing

Inherits:
Multiplexing show all
Defined in:
app/models/request/auto_multiplexing.rb

Overview

In the Generic Lims, transfer into the Multiplexed library tube is triggered automatically when the plate is passed. However, if multiplexing decisions are made after library creation, this step has already taken place. This callback ensure that the tube are generated after the submission is complete. The user may then log into generic Lims to see their plates. This issue is avoided in Limber by decoupling tube creation from plate passing allowing the step to be repeated at any time. This class can be removed if either the generic LIMS behaviour is updated, or moved into Limber.

Constant Summary

Constants included from Metadata

Metadata::SECTION_FIELDS

Constants included from Statemachine

Statemachine::ACTIVE, Statemachine::COMPLETED_STATE, Statemachine::INACTIVE, Statemachine::OPENED_STATE, Statemachine::SORT_ORDER

Instance Method Summary collapse

Methods inherited from Multiplexing

#flag_asset_as_stock_well

Methods inherited from CustomerRequest

#biffable?, #can_be_billed?, #create_billing_events, #customer_accepts_responsibility!, #generate_create_request_event, #generate_destroy_request_event, #generate_request_event, #update_responsibilities!

Methods inherited from Request

accessioning_required?, #add_comment, #aliquot_attributes, #associated_studies, #billing_product_identifier, #cancelable?, #copy, #current_request_event, #customer_accepts_responsibility!, delegate_validator, #event_with_key_value, #eventful_studies, for_study, #format_qc_information, #get_value, #has_passed, #lab_events_for_batch, #manifest_processed!, #next_request_type_id, #next_requests, #next_requests_via_asset, #next_requests_via_submission, number_expected_for_submission_id_and_request_type_id, #previous_failed_requests?, #priority, #product_line, #project=, #project_id=, #ready?, #request_type_updatable?, #return_pending_to_inbox!, #run_events, #source_labware, #study=, #study_id=, #submitted_at, #target_purpose, #target_tube, #update_pool_information, #update_priority, #update_responsibilities!, #value_for

Methods included from Metadata

#has_metadata, required_tags

Methods included from EventfulRecord

#has_many_events, #has_many_lab_events, #has_one_event_with_family

Methods included from Statistics

#asset_statistics, #progress_statistics, #sample_statistics_new

Methods included from CustomerResponsibility

included

Methods included from Batch::RequestBehaviour

#create_batch_request!, included, #recycle_from_batch!, #return_for_inbox!, #with_batch_id

Methods included from Statemachine

#cancellable?, #change_decision!, #closed?, #failed_downstream!, #failed_upstream!, #finished?, included, #on_blocked, #on_cancelled, #on_failed, #on_hold, #on_passed, #on_started, #open?, #terminated?, #transfer_aliquots, #transition_to

Methods included from StandardNamedScopes

included

Methods included from Commentable

#after_comment_addition

Methods included from Uuid::Uuidable

included, #unsaved_uuid!, #uuid

Methods included from Api::RequestIO::Extensions

included, #json_root

Methods included from Aliquot::DeprecatedBehaviours::Request

#sample_name, #tag, #tag_number

Methods inherited from ApplicationRecord

convert_labware_to_receptacle_for, find_by_id_or_name, find_by_id_or_name!

Methods included from Warren::BroadcastMessages

#broadcast, included, #queue_associated_for_broadcast, #queue_for_broadcast, #warren

Instance Method Details

#register_transfer_callbackObject

Triggers immediate transfer into the tubes if the source asset already exists. This allows multiplexing requests to be made on plates at the end of library prep, after the plate is qc_complete. If no asset is present then we haven't got to that stage yet and transfer will be triggered as part of the standard workflow.


17
18
19
20
21
22
23
24
25
26
27
# File 'app/models/request/auto_multiplexing.rb', line 17

def register_transfer_callback
  # We go via order as we need to get a particular instance of submission
  return unless asset.present?

  order.submission.register_callback(:once) do
    Transfer::FromPlateToTubeByMultiplex.create!(
      source: asset.plate,
      user: order.user
    )
  end
end