Sha256: 6c57082a121cf840caed12afa023d5de637ea0265206be971f40f3dd265cf38d

Contents?: true

Size: 1.87 KB

Versions: 54

Compression:

Stored size: 1.87 KB

Contents

class CreateSurveys < ActiveRecord::Migration[5.2]
  def change
    within_renalware_schema do
      create_table :survey_surveys do |t|
        t.string :name, null: false
        t.string :code, null: false
        t.string :description
        t.datetime :deleted_at, index: true
        t.timestamps null: false
      end

      # name must be unique among non-deleted surveys
      add_index(
        :survey_surveys,
        :name,
        unique: true,
        where: "deleted_at is NULL"
      )

      # code must be unique among non-deleted surveys
      add_index(
        :survey_surveys,
        :code,
        unique: true,
        where: "deleted_at is NULL"
      )

      create_table :survey_questions do |t|
        t.references(
          :survey,
          foreign_key: { to_table: :survey_surveys },
          index: true,
          null: false
        )
        t.string :code, null: false
        t.string :label
        t.integer :position, null: false, default: 0, index: true
        t.datetime :deleted_at, index: true
        t.timestamps null: false
      end

      # Prevent a unique index on code within any survey, but exclusing deleted questions.
      add_index(
        :survey_questions,
        [:code, :survey_id],
        unique: true,
        where: "deleted_at is NULL"
      )

      create_table :survey_responses do |t|
        t.date :answered_on, null: false, index: true
        t.references(:patient, null: false)
        t.references(
          :question,
          foreign_key: { to_table: :survey_questions },
          null: false
        )
        t.string :value
        t.string :reference # for future use - possibly to tie responses together?
        t.timestamps null: false
      end

      add_index(
        :survey_responses,
        [:answered_on, :patient_id, :question_id],
        name: :survey_responses_compound_index
      )
    end
  end
end

Version data entries

54 entries across 54 versions & 1 rubygems

Version Path
renalware-core-2.1.1 db/migrate/20191008010839_create_surveys.rb
renalware-core-2.1.0 db/migrate/20191008010839_create_surveys.rb
renalware-core-2.0.167 db/migrate/20191008010839_create_surveys.rb
renalware-core-2.0.166 db/migrate/20191008010839_create_surveys.rb
renalware-core-2.0.165 db/migrate/20191008010839_create_surveys.rb
renalware-core-2.0.164 db/migrate/20191008010839_create_surveys.rb
renalware-core-2.0.163 db/migrate/20191008010839_create_surveys.rb
renalware-core-2.0.162 db/migrate/20191008010839_create_surveys.rb
renalware-core-2.0.161 db/migrate/20191008010839_create_surveys.rb
renalware-core-2.0.160 db/migrate/20191008010839_create_surveys.rb
renalware-core-2.0.159 db/migrate/20191008010839_create_surveys.rb
renalware-core-2.0.158 db/migrate/20191008010839_create_surveys.rb
renalware-core-2.0.157 db/migrate/20191008010839_create_surveys.rb
renalware-core-2.0.156 db/migrate/20191008010839_create_surveys.rb
renalware-core-2.0.155 db/migrate/20191008010839_create_surveys.rb
renalware-core-2.0.153 db/migrate/20191008010839_create_surveys.rb
renalware-core-2.0.152 db/migrate/20191008010839_create_surveys.rb
renalware-core-2.0.151 db/migrate/20191008010839_create_surveys.rb
renalware-core-2.0.149 db/migrate/20191008010839_create_surveys.rb
renalware-core-2.0.148 db/migrate/20191008010839_create_surveys.rb