Module: StudyReport::StudyDetails

Included in:
Study
Defined in:
app/models/study_report/study_details.rb

Constant Summary collapse

BATCH_SIZE =
1000

Instance Method Summary collapse

Instance Method Details

#each_stock_well_id_in_study_in_batches(&block) ⇒ Object

This will pull out all well ids from stock plates in the study


5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
# File 'app/models/study_report/study_details.rb', line 5

def each_stock_well_id_in_study_in_batches(&block)
  # Stock wells are determined by the requests leading from the stock plate
  handle_wells(
    :requests,
    { requests: { initial_study_id: id } },
    PlatePurpose.where(name: Study::STOCK_PLATE_PURPOSES).pluck(:id),
    &block
  )

  # Aliquot 1,2,3,4 & 5 plates are determined by the aliquots in their wells
  handle_wells(
    :aliquots,
    { aliquots: { study_id: id } },
    PlatePurpose.where(name: ['Aliquot 1', 'Aliquot 2', 'Aliquot 3', 'Aliquot 4', 'Aliquot 1', 'Pre-Extracted Plate']).pluck(:id),
    &block
  )
end

#progress_report_headerObject


39
40
41
42
43
44
45
46
47
# File 'app/models/study_report/study_details.rb', line 39

def progress_report_header
  [
    'Status', 'Study', 'Supplier', 'Sanger Sample Name', 'Supplier Sample Name', 'Plate', 'Well', 'Supplier Volume',
    'Supplier Gender', 'Concentration', 'Initial Volume', 'Current Volume', 'Total Micrograms', 'Sequenome Count',
    'Sequenome Gender', 'Pico', 'Gel', 'Qc Status', 'QC started date', 'Pico date', 'Gel QC date', 'Seq stamp date',
    'Cohort', 'Country of Origin', 'Geographical Region',
    'Ethnicity', 'DNA Source', 'Is Resubmitted', 'Control', 'Is in Fluidigm'
  ]
end

#progress_report_on_all_assets {|progress_report_header| ... } ⇒ Object


49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
# File 'app/models/study_report/study_details.rb', line 49

def progress_report_on_all_assets
  yield(progress_report_header)
  each_stock_well_id_in_study_in_batches do |asset_ids|
    # eager loading of well_attribute , can only be done on  wells ...
    # We've already split into batches, so find_each here only slows things down.
    Well.for_study_report.where(id: asset_ids).each do |asset| # rubocop:disable Rails/FindEach
      asset_progress_data = asset.qc_report
      next if asset_progress_data.nil?

      yield([
        asset_progress_data[:status],
        name,
        asset_progress_data[:supplier],
        asset_progress_data[:sanger_sample_id],
        asset_progress_data[:sample_name],
        asset_progress_data[:plate_barcode],
        asset_progress_data[:well],
        asset_progress_data[:supplier_volume],
        asset_progress_data[:supplier_gender],
        asset_progress_data[:concentration],
        asset_progress_data[:initial_volume],
        asset_progress_data[:current_volume],
        asset_progress_data[:quantity],
        asset_progress_data[:sequenom_count],
        [(asset_progress_data[:sequenom_gender])].flatten.compact.join(''),
        asset_progress_data[:pico],
        asset_progress_data[:gel],
        asset_progress_data[:qc_status],
        asset_progress_data[:qc_started_date],
        asset_progress_data[:pico_date],
        asset_progress_data[:gel_qc_date],
        asset_progress_data[:sequenom_stamp_date],
        asset_progress_data[:cohort],
        asset_progress_data[:country_of_origin],
        asset_progress_data[:geographical_region],
        asset_progress_data[:ethnicity],
        asset_progress_data[:dna_source],
        asset_progress_data[:is_resubmitted],
        asset_progress_data[:control],
        asset_progress_data[:is_in_fluidigm]
      ])
    end
  end
end