Class: WorkCompletion::TubeRackCompletion

Inherits:
LabwareCompletion
  • Object
show all
Defined in:
app/models/work_completion/tube_rack_completion.rb

Overview

Class WorkCompletion::TubeRackCompletion provides the business logic for passing tubes within a tube rack, especially in the Limber pipelines. This has been pulled out of WorkCompletion itself to allow for separate behaviour for tube racks.

Author:

  • Genome Research Ltd.

Instance Method Summary collapse

Instance Method Details

#connect_requestsvoid

This method returns an undefined value.

Connects upstream requests to the target labware's racked tubes.

Iterates through each upstream request and links it to the receptacle of each tube in the target labware's racked tubes.

Examples:

connect_requests
  # => Connects upstream requests to the target tubes' receptacles


21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
# File 'app/models/work_completion/tube_rack_completion.rb', line 21

 do
  # NOTE: The following attribute is not required for Microarray Genotyping.
  # I think this might be broken and suggests that there should be separate classes for project: one for
  # next-gen sequencing that includes this attribute in it's metadata, and one for microarray genotyping
  # that doesn't.
  include ProjectManager::Associations
  include BudgetDivision::Associations

  custom_attribute(:project_cost_code, required: true)
  custom_attribute(:funding_comments)
  custom_attribute(:collaborators)
  custom_attribute(:external_funding_source)
  custom_attribute(:sequencing_budget_cost_centre)
  custom_attribute(:project_funding_model, in: PROJECT_FUNDING_MODELS)
  custom_attribute(:gt_committee_tracking_id)

  before_validation do |record|
    record.project_cost_code = nil if record.project_cost_code.blank?
    record.project_funding_model = nil if record.project_funding_model.blank?
  end
end

#detect_upstream_requestsActiveRecord::Relation

Detects upstream customer requests associated with the target labware.

Queries the database for customer requests linked to the aliquots of the target labware.

Examples:

detect_upstream_requests
# => [#<CustomerRequest id: 1>, #<CustomerRequest id: 2>]

Returns:

  • (ActiveRecord::Relation)

    A collection of customer requests.



59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
# File 'app/models/work_completion/tube_rack_completion.rb', line 59

 do
  # NOTE: The following attribute is not required for Microarray Genotyping.
  # I think this might be broken and suggests that there should be separate classes for project: one for
  # next-gen sequencing that includes this attribute in it's metadata, and one for microarray genotyping
  # that doesn't.
  include ProjectManager::Associations
  include BudgetDivision::Associations

  custom_attribute(:project_cost_code, required: true)
  custom_attribute(:funding_comments)
  custom_attribute(:collaborators)
  custom_attribute(:external_funding_source)
  custom_attribute(:sequencing_budget_cost_centre)
  custom_attribute(:project_funding_model, in: PROJECT_FUNDING_MODELS)
  custom_attribute(:gt_committee_tracking_id)

  before_validation do |record|
    record.project_cost_code = nil if record.project_cost_code.blank?
    record.project_funding_model = nil if record.project_funding_model.blank?
  end
end

#target_tubesActiveRecord::Relation

Note:

This method is similar to the target_wells method in WorkCompletion::PlateCompletion,

Retrieves the target tubes associated with the target labware.

This method fetches the tubes that are racked within the target labware (i.e., tube rack), including their associated aliquots and requests. It filters the tubes based on the submission IDs of the requests.

Examples:

target_tubes
# => [#<Tube id: 1>, #<Tube id: 2>]

Returns:

  • (ActiveRecord::Relation)

    A collection of target tubes.



41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
# File 'app/models/work_completion/tube_rack_completion.rb', line 41

 do
  # NOTE: The following attribute is not required for Microarray Genotyping.
  # I think this might be broken and suggests that there should be separate classes for project: one for
  # next-gen sequencing that includes this attribute in it's metadata, and one for microarray genotyping
  # that doesn't.
  include ProjectManager::Associations
  include BudgetDivision::Associations

  custom_attribute(:project_cost_code, required: true)
  custom_attribute(:funding_comments)
  custom_attribute(:collaborators)
  custom_attribute(:external_funding_source)
  custom_attribute(:sequencing_budget_cost_centre)
  custom_attribute(:project_funding_model, in: PROJECT_FUNDING_MODELS)
  custom_attribute(:gt_committee_tracking_id)

  before_validation do |record|
    record.project_cost_code = nil if record.project_cost_code.blank?
    record.project_funding_model = nil if record.project_funding_model.blank?
  end
end