Class: Api::V2::QcAssayResource

Inherits:
BaseResource
  • Object
show all
Defined in:
app/resources/api/v2/qc_assay_resource.rb

Overview

TODO:

the below qc_results attribute is an array of QcResultResource objects. It returns a 201 Created even when no record is created (when no qc_result objects are passed). See Y25-236.

TODO:

the below qc_results relationship is include for reference only. It appears to be redundant. See qc_results relationship comment. See Y25-236.

Note:

Access this resource via the /api/v2/qc_assays/ endpoint.

Note:

At the time of writing, I was unable to create a valid PATCH request for this resource.

Provides a JSON:API representation of QcAssay.

A QC Assay groups together a set of QC Results which were performed together. It allows for attributes which are associated with each other such as loci_passed and loci_tested to be coupled

For more details on JSON:API, see the JSON:API Specifications or check out the JSONAPI::Resources package for Sequencescape's implementation.

Examples:

GET request to retrieve all QC assays

GET /api/v2/qc_assays/

POST request to create a new QC assay, with a an Asset barcode provded in the qc_results attribute

POST /api/v2/qc_assays/
{
  "data": {
    "type": "qc_assay",
    "attributes": {
      "lot_number": "67890",
      "qc_results": [
        {
          // "id": 45
          "uuid": "9dd79a6c-f524-11ef-8842-000000000000",
          "key": "x",
          "value": "x",
          "units": "s"
        }
      ]
    },
    "relationships": {
      "qc_results": {
        "data": {
          "type": "qc_results",
          "id": 45
        }
      }
    }
  }
}

Instance Attribute Summary collapse

Method Summary

Methods inherited from BaseResource

apply_includes, creatable_fields, default_includes, #fetchable_fields, inclusions, resolve_relationship_names_to_relations, updatable_fields

Instance Attribute Details

#lot_numberObject

The lot number associated with the QC assay.

Returns:

  • String



63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
# File 'app/resources/api/v2/qc_assay_resource.rb', line 63

 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

#qc_resultsArray<QcResultResource>

TODO:

deprecate, fix, or update this relationship to be read-only

Note:

This relationship appears to be redundant. A new Qc Result record is created with every request, by providing the qc_results attribute in the request.

The Qc Results associated with the QC assay.

Returns:



71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
# File 'app/resources/api/v2/qc_assay_resource.rb', line 71

 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