study_engine 0.0.2
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +7 -0
- data/Rakefile +42 -0
- data/app/assets/images/study_engine/spinner.gif +0 -0
- data/app/assets/images/study_engine/sprite/delete.png +0 -0
- data/app/assets/images/study_engine/sprite/download.png +0 -0
- data/app/assets/images/study_engine/sprite/edit.png +0 -0
- data/app/assets/images/study_engine/sprite/incomplete.png +0 -0
- data/app/assets/images/study_engine/sprite/metrc-sm.png +0 -0
- data/app/assets/images/study_engine/sprite/metrc.png +0 -0
- data/app/assets/images/study_engine/sprite/new.png +0 -0
- data/app/assets/javascripts/study_engine/admin_notes.js.coffee +12 -0
- data/app/assets/javascripts/study_engine/assessment_notifications.js.coffee +36 -0
- data/app/assets/javascripts/study_engine/assessment_timeout.js.coffee +24 -0
- data/app/assets/javascripts/study_engine/disable_buttons_after_click.js.coffee +6 -0
- data/app/assets/javascripts/study_engine/fire_click_event_immediately_on_mobile.js.coffee.erb +10 -0
- data/app/assets/javascripts/study_engine/response_validation.js.coffee +8 -0
- data/app/assets/javascripts/study_engine/restart_assessment_button.js.coffee +3 -0
- data/app/assets/javascripts/study_engine/study_engine.js.coffee +9 -0
- data/app/assets/javascripts/study_engine/study_id_picker.js.coffee +28 -0
- data/app/assets/stylesheets/study_engine.sass +1 -0
- data/app/assets/stylesheets/study_engine/_constant.sass +52 -0
- data/app/assets/stylesheets/study_engine/_mobile.sass +8 -0
- data/app/assets/stylesheets/study_engine/_tablet.sass +36 -0
- data/app/assets/stylesheets/study_engine/application.sass +101 -0
- data/app/assets/stylesheets/study_engine/base/_form.sass +131 -0
- data/app/assets/stylesheets/study_engine/base/_list.sass +38 -0
- data/app/assets/stylesheets/study_engine/base/_tables.sass +33 -0
- data/app/assets/stylesheets/study_engine/base/_text.sass +78 -0
- data/app/assets/stylesheets/study_engine/components/-fields/_login-fields.sass +14 -0
- data/app/assets/stylesheets/study_engine/components/-fields/_start-fields.sass +101 -0
- data/app/assets/stylesheets/study_engine/components/-nav/_global-nav.sass +19 -0
- data/app/assets/stylesheets/study_engine/components/-table/_results-table.sass +75 -0
- data/app/assets/stylesheets/study_engine/components/-table/_users-table.sass +11 -0
- data/app/assets/stylesheets/study_engine/components/_assessment-questions.sass +30 -0
- data/app/assets/stylesheets/study_engine/components/_form-buttons.sass +102 -0
- data/app/assets/stylesheets/study_engine/components/_helpt-text.sass +2 -0
- data/app/assets/stylesheets/study_engine/components/_method-icons.sass +15 -0
- data/app/assets/stylesheets/study_engine/components/_notes-modal.sass +65 -0
- data/app/assets/stylesheets/study_engine/components/_progress-bar.sass +25 -0
- data/app/assets/stylesheets/study_engine/components/_sortable-columns.sass +26 -0
- data/app/assets/stylesheets/study_engine/components/_table-actions.sass +8 -0
- data/app/assets/stylesheets/study_engine/components/_table-buttons.sass +17 -0
- data/app/assets/stylesheets/study_engine/components/_user-privileges.sass +3 -0
- data/app/assets/stylesheets/study_engine/mixins/_actions-table.sass +11 -0
- data/app/assets/stylesheets/study_engine/mixins/_buttons.sass +55 -0
- data/app/assets/stylesheets/study_engine/mixins/_checkbox-columns.sass +50 -0
- data/app/assets/stylesheets/study_engine/mixins/_custom-radios.sass +47 -0
- data/app/assets/stylesheets/study_engine/mixins/_icons.sass +38 -0
- data/app/assets/stylesheets/study_engine/mixins/_notification-text.sass +23 -0
- data/app/controllers/study_engine/admin/application_controller.rb +6 -0
- data/app/controllers/study_engine/admin/assessments_controller.rb +79 -0
- data/app/controllers/study_engine/admin/notes_controller.rb +17 -0
- data/app/controllers/study_engine/application_controller.rb +12 -0
- data/app/controllers/study_engine/assessments_controller.rb +94 -0
- data/app/helpers/study_engine/helpers.rb +15 -0
- data/app/helpers/study_engine/mailer_helpers.rb +11 -0
- data/app/mailers/study_engine/mailer.rb +25 -0
- data/app/models/study_engine/answer.rb +36 -0
- data/app/models/study_engine/assessment.rb +118 -0
- data/app/models/study_engine/begin_assessment_form.rb +110 -0
- data/app/models/study_engine/existing_assessments_form.rb +99 -0
- data/app/models/study_engine/form.rb +59 -0
- data/app/models/study_engine/report.rb +69 -0
- data/app/models/study_engine/result.rb +46 -0
- data/app/models/study_engine/screen_results.rb +54 -0
- data/app/models/study_engine/study_id.rb +47 -0
- data/app/models/study_engine/study_id/bank.rb +38 -0
- data/app/models/study_engine/study_id/sync.rb +52 -0
- data/app/models/study_engine/update_assessments_form.rb +53 -0
- data/app/views/study_engine/_progress_bar.html.slim +4 -0
- data/app/views/study_engine/admin/assessments/_assessment.html.slim +36 -0
- data/app/views/study_engine/admin/assessments/domain_results.csv.csvbuilder +17 -0
- data/app/views/study_engine/admin/assessments/edit.html.slim +68 -0
- data/app/views/study_engine/admin/assessments/index.html.slim +26 -0
- data/app/views/study_engine/admin/assessments/item_results.csv.csvbuilder +24 -0
- data/app/views/study_engine/admin/assessments/new.html.slim +46 -0
- data/app/views/study_engine/admin/assessments/screen_results.csv.csvbuilder +2 -0
- data/app/views/study_engine/assessments/complete.html.slim +25 -0
- data/app/views/study_engine/assessments/create.html.slim +46 -0
- data/app/views/study_engine/assessments/index.html.slim +43 -0
- data/app/views/study_engine/assessments/restart.html.slim +28 -0
- data/app/views/study_engine/assessments/show.html.slim +60 -0
- data/app/views/study_engine/mailer/assessment_recorded_notification.erb +8 -0
- data/app/views/study_engine/mailer/assessment_url_notification.erb +6 -0
- data/config/routes.rb +15 -0
- data/db/migrate/20160422185859_create_tables.rb +52 -0
- data/lib/study_engine.rb +5 -0
- data/lib/study_engine/config.rb +37 -0
- data/lib/study_engine/cucumber.rb +96 -0
- data/lib/study_engine/engine.rb +7 -0
- data/lib/study_engine/version.rb +3 -0
- data/lib/tasks/study_engine_tasks.rake +10 -0
- data/spec/ar_helper.rb +30 -0
- data/spec/models/study_engine/answer_spec.rb +28 -0
- data/spec/models/study_engine/assessment_spec.rb +250 -0
- data/spec/models/study_engine/begin_assessment_form_spec.rb +87 -0
- data/spec/models/study_engine/existing_assessments_form_spec.rb +171 -0
- data/spec/models/study_engine/report_spec.rb +48 -0
- data/spec/models/study_engine/result_spec.rb +102 -0
- data/spec/models/study_engine/screen_results_spec.rb +69 -0
- data/spec/models/study_engine/study_id/bank_spec.rb +72 -0
- data/spec/models/study_engine/study_id/sync_spec.rb +61 -0
- data/spec/models/study_engine/study_id_spec.rb +7 -0
- data/spec/models/study_engine/update_assessments_form_spec.rb +38 -0
- data/spec/rails_helper.rb +50 -0
- data/spec/schema.rb +65 -0
- data/spec/spec_helper.rb +72 -0
- data/spec/support/CATEngine3.exe +0 -0
- data/spec/support/forms/01. Physical Function Bank.xml +1213 -0
- data/spec/support/forms/02. Pain Interference Bank.xml +443 -0
- data/spec/support/forms/03. Anxiety Bank.xml +322 -0
- data/spec/support/forms/04. Depression Bank.xml +311 -0
- data/spec/support/forms/05. Ability to Participate Social bank Version 2.xml +353 -0
- data/spec/support/forms/06. Psychosocial Illness Impact Pos Bank.xml +900 -0
- data/spec/support/forms/07. Applied Cognition Gen Concerns Bank.xml +377 -0
- data/spec/support/forms/08. Satisfaction with Roles and Activities Bank Version 2.xml +443 -0
- data/spec/support/forms/09. Sleep Disturbance Bank.xml +300 -0
- data/spec/support/forms/10. Emotional Support Bank.xml +163 -0
- data/spec/support/forms/A - 07. Psychosocial Illness Impact Pos Bank.xml +471 -0
- data/spec/support/forms/A - 08. Pain interference Bank.xml +443 -0
- data/spec/support/forms/A - 09. Depression Bank.xml +311 -0
- data/spec/support/forms/B - 07. Physical Function Short Form.xml +123 -0
- data/spec/support/forms/B - 08. Physical Function Remainder A.xml +543 -0
- data/spec/support/forms/B - 09. Ability to Participate Social bank Version 2.xml +353 -0
- data/spec/support/forms/C - 07. Physical Function Short Form.xml +123 -0
- data/spec/support/forms/C - 08. Physical Function Remainder B.xml +553 -0
- data/spec/support/forms/C - 09. Anxiety Bank.xml +322 -0
- data/spec/support/parameters/01. Physical Function Bank.xml +682 -0
- data/spec/support/parameters/02. Pain Interference Bank.xml +256 -0
- data/spec/support/parameters/03. Anxiety Bank.xml +190 -0
- data/spec/support/parameters/04. Depression Bank.xml +184 -0
- data/spec/support/parameters/05. Ability to Participate Social bank Version 2.xml +226 -0
- data/spec/support/parameters/06. Psychosocial Illness Impact Pos Bank.xml +211 -0
- data/spec/support/parameters/07. Applied Cognition Gen Concerns Bank.xml +1 -0
- data/spec/support/parameters/08. Satisfaction with Roles and Activities Bank Version 2.xml +1 -0
- data/spec/support/parameters/09. Sleep Disturbance Bank.xml +1 -0
- data/spec/support/parameters/10. Emotional Support Bank.xml +1 -0
- metadata +394 -0
@@ -0,0 +1,53 @@
|
|
1
|
+
module StudyEngine
|
2
|
+
class UpdateAssessmentsForm
|
3
|
+
extend ActiveModel::Naming
|
4
|
+
|
5
|
+
def self.model_name
|
6
|
+
ActiveModel::Name.new(Assessment)
|
7
|
+
end
|
8
|
+
|
9
|
+
def to_model
|
10
|
+
self
|
11
|
+
end
|
12
|
+
|
13
|
+
def to_key
|
14
|
+
end
|
15
|
+
|
16
|
+
def to_param
|
17
|
+
study_id.to_s
|
18
|
+
end
|
19
|
+
|
20
|
+
def persisted?
|
21
|
+
true
|
22
|
+
end
|
23
|
+
|
24
|
+
def initialize study_id
|
25
|
+
self.assessments = Assessment.by_study_id(study_id)
|
26
|
+
self.study_id = StudyID.new(study_id)
|
27
|
+
end
|
28
|
+
|
29
|
+
attr_accessor :assessments, :study_id
|
30
|
+
|
31
|
+
delegate :study, :site, :id, to: :study_id, prefix: true
|
32
|
+
delegate :study=, :site=, :id=, to: :study_id, prefix: true
|
33
|
+
|
34
|
+
def study_options
|
35
|
+
StudyID::Bank.studies
|
36
|
+
end
|
37
|
+
|
38
|
+
def update_attributes! attributes
|
39
|
+
attributes.each do |key, value|
|
40
|
+
send "#{key}=", value
|
41
|
+
end
|
42
|
+
save
|
43
|
+
end
|
44
|
+
|
45
|
+
def save
|
46
|
+
assessments.each do |assessment|
|
47
|
+
assessment.update study_id: study_id
|
48
|
+
end
|
49
|
+
true
|
50
|
+
end
|
51
|
+
end
|
52
|
+
end
|
53
|
+
|
@@ -0,0 +1,36 @@
|
|
1
|
+
- cache assessment do
|
2
|
+
.assessment
|
3
|
+
- if !assessment.completed_at && !assessment.by_mail?
|
4
|
+
p.section-count<>
|
5
|
+
| (#{assessment.results.select(&:finished?).count}/#{assessment.results.count})
|
6
|
+
p.updated<> = link_to without_timezone(assessment.assessment_updated_at), edit_admin_assessment_path(assessment.id)
|
7
|
+
|
8
|
+
- if assessment.group_index
|
9
|
+
p<>
|
10
|
+
span.set-requested title="Randomization Set #{assessment.group_index_name}" = assessment.group_index_name
|
11
|
+
|
12
|
+
- if assessment.method_applied.present?
|
13
|
+
- title = assessment.by_url? ? "By URL #{study_url}#{assessment_path(assessment)}" : assessment.method_applied
|
14
|
+
- title += " - #{assessment.coordinator.email} " if assessment.coordinator
|
15
|
+
p<> title=title class="assessment-method #{assessment.method_applied.parameterize}"
|
16
|
+
span = title
|
17
|
+
|
18
|
+
.note-wrapper.admin-only<>
|
19
|
+
= form_tag admin_assessment_notes_path(assessment), method: :put do |form|
|
20
|
+
input.toggle-note type="checkbox" id="notes-toggle-#{assessment.id}"
|
21
|
+
label.note for="notes-toggle-#{assessment.id}" class="#{"-saved" if assessment.notes?}"
|
22
|
+
span Take note
|
23
|
+
|
24
|
+
.note-modal
|
25
|
+
label.close for="notes-toggle-#{assessment.id}"
|
26
|
+
.field
|
27
|
+
label for="notes-#{assessment.id}" Assessment note:
|
28
|
+
textarea id="notes-#{assessment.id}" name="notes" = assessment.notes
|
29
|
+
.field
|
30
|
+
.save-wrapper
|
31
|
+
input type="submit" value="Save note"
|
32
|
+
|
33
|
+
p.admin-only<>
|
34
|
+
= link_to [:admin, assessment], method: :delete, class: "delete", data: { confirm: "Are you sure you want to delete this assessment?" } do
|
35
|
+
span Delete #{assessment.event}
|
36
|
+
|
@@ -0,0 +1,17 @@
|
|
1
|
+
csv << ["#{study_name} ID", "Study ID", "Method", "Event", "Item Bank", "Theta", "Standard Error", "Timestamp"]
|
2
|
+
|
3
|
+
assessments.each do |assessment|
|
4
|
+
assessment.results.each do |result|
|
5
|
+
csv << [
|
6
|
+
assessment.stream_id,
|
7
|
+
assessment.study_id,
|
8
|
+
assessment.method_applied,
|
9
|
+
assessment.event,
|
10
|
+
result.name,
|
11
|
+
result.theta,
|
12
|
+
result.standard_error,
|
13
|
+
result.updated_at,
|
14
|
+
]
|
15
|
+
end
|
16
|
+
end
|
17
|
+
|
@@ -0,0 +1,68 @@
|
|
1
|
+
h2 Edit Assessment
|
2
|
+
|
3
|
+
hr.no_margin
|
4
|
+
|
5
|
+
= form_for assessments || assessment, url: admin_assessment_path do |form|
|
6
|
+
fieldset.start-fields
|
7
|
+
- if assessments
|
8
|
+
.select-fields
|
9
|
+
.field.study-field
|
10
|
+
= form.label :study_id_study, "Study"
|
11
|
+
= form.select :study_id_study, form.object.study_options, {}, class: "study"
|
12
|
+
|
13
|
+
.field.site-field
|
14
|
+
= form.label :study_id_site, "Site"
|
15
|
+
= form.text_field :study_id_site, class: "site", maxlength: 3, placeholder: "XXX"
|
16
|
+
|
17
|
+
.field.id-field
|
18
|
+
= form.label :study_id_id, "ID"
|
19
|
+
= form.text_field :study_id_id, class: "id", maxlength: 4, placeholder: "####"
|
20
|
+
|
21
|
+
- else
|
22
|
+
fieldset.assessment-details
|
23
|
+
legend = assessment.study_id
|
24
|
+
.field
|
25
|
+
label = assessment.event
|
26
|
+
label = assessment.assessment_updated_at
|
27
|
+
|
28
|
+
.clear
|
29
|
+
label Method
|
30
|
+
.admin-method-fields
|
31
|
+
.field
|
32
|
+
label.hidden Method
|
33
|
+
label.method-label
|
34
|
+
= form.radio_button :method_applied, "In-person"
|
35
|
+
.custom-symbol.in-person
|
36
|
+
span In-person
|
37
|
+
.field
|
38
|
+
label.method-label
|
39
|
+
= form.radio_button :method_applied, "By phone"
|
40
|
+
.custom-symbol.by-phone
|
41
|
+
span By phone
|
42
|
+
.field
|
43
|
+
label.method-label
|
44
|
+
= form.radio_button :method_applied, "By URL"
|
45
|
+
.custom-symbol.by-url
|
46
|
+
span By URL
|
47
|
+
.field
|
48
|
+
label.method-label
|
49
|
+
= form.radio_button :method_applied, "By mail"
|
50
|
+
.custom-symbol.by-mail
|
51
|
+
span By mail
|
52
|
+
.field
|
53
|
+
label.method-label
|
54
|
+
= form.radio_button :method_applied, "Paper form"
|
55
|
+
.custom-symbol.paper-form
|
56
|
+
span Paper form
|
57
|
+
.field
|
58
|
+
label.method-label
|
59
|
+
= form.radio_button :method_applied, "Missing"
|
60
|
+
.custom-symbol.missing
|
61
|
+
span Missing
|
62
|
+
|
63
|
+
hr
|
64
|
+
|
65
|
+
.actions
|
66
|
+
input.save(type="submit" value="Save Assessment")
|
67
|
+
a.cancel(href="" class="cancel") Cancel
|
68
|
+
|
@@ -0,0 +1,26 @@
|
|
1
|
+
- if current_user.admin?
|
2
|
+
.table-buttons
|
3
|
+
.buttons-left
|
4
|
+
= link_to "Add Existing Assessment", new_admin_assessment_path, class: "add"
|
5
|
+
.buttons-right
|
6
|
+
= link_to "Results Screen", admin_assessments_path(report: "screen_results", format: :csv), class: "download"
|
7
|
+
= link_to "Domain Results", admin_assessments_path(report: "domain_results", format: :csv), class: "download"
|
8
|
+
= link_to "Item Results", admin_assessments_path(report: "item_results", format: :csv), class: "download"
|
9
|
+
.clear
|
10
|
+
p.helptext All timestamps are in UTC time zone
|
11
|
+
|
12
|
+
table.results-table
|
13
|
+
thead
|
14
|
+
tr
|
15
|
+
th = link_to "Study ID", sortable_link_url(report, "study_id"), id: "col-study-id", class: "sortable #{sortable_link_class(report, "study_id")}"
|
16
|
+
- events.each.with_index do |event, index|
|
17
|
+
th = link_to event.titleize, sortable_link_url(report, "event_#{index}"), id: "col-baseline", class: "sortable #{sortable_link_class(report, "event_#{index}")}"
|
18
|
+
|
19
|
+
tbody
|
20
|
+
- report.groups.each do |group|
|
21
|
+
tr
|
22
|
+
td = link_to group.study_id, edit_admin_assessment_path(group.study_id)
|
23
|
+
|
24
|
+
- group.each do |assessments|
|
25
|
+
td = render collection: assessments, partial: "study_engine/admin/assessments/assessment"
|
26
|
+
|
@@ -0,0 +1,24 @@
|
|
1
|
+
csv << ["#{study_name} ID", "Study ID", "Method", "Event", "Item Bank", "Question", "Question ID", "Before", "Response", "Response ID", "Theta", "Standard Error", "Timestamp"]
|
2
|
+
|
3
|
+
assessments.each do |assessment|
|
4
|
+
assessment.results.each do |result|
|
5
|
+
result.answers.each do |answer|
|
6
|
+
csv << [
|
7
|
+
assessment.stream_id,
|
8
|
+
assessment.study_id,
|
9
|
+
assessment.method_applied,
|
10
|
+
assessment.event,
|
11
|
+
result.name,
|
12
|
+
answer.question.context_and_title,
|
13
|
+
answer.question.promis_id,
|
14
|
+
answer.response.before,
|
15
|
+
answer.response.title,
|
16
|
+
answer.response.promis_id,
|
17
|
+
result.theta,
|
18
|
+
result.standard_error,
|
19
|
+
answer.updated_at,
|
20
|
+
]
|
21
|
+
end
|
22
|
+
end
|
23
|
+
end
|
24
|
+
|
@@ -0,0 +1,46 @@
|
|
1
|
+
p Input a Study ID and Assessment Timestamps to allow users to take 6 and/or 12 Month Assessments.
|
2
|
+
|
3
|
+
= form_for assessments, url: admin_assessments_path do |form|
|
4
|
+
fieldset.start-fields
|
5
|
+
.select-fields
|
6
|
+
.field.study-field
|
7
|
+
= form.label :study_id_study, "Study"
|
8
|
+
= form.select :study_id_study, form.object.study_options, {}, class: "study"
|
9
|
+
|
10
|
+
.field.site-field
|
11
|
+
= form.label :study_id_site, "Site"
|
12
|
+
= form.text_field :study_id_site, class: "site", maxlength: 3, placeholder: "XXX"
|
13
|
+
|
14
|
+
.field.id-field
|
15
|
+
= form.label :study_id_id, "ID"
|
16
|
+
= form.text_field :study_id_id, class: "id", maxlength: 4, placeholder: "####"
|
17
|
+
.visit-fields
|
18
|
+
- events.each.with_index do |event, index|
|
19
|
+
.field
|
20
|
+
= label_tag "study_engine_assessment_event_datetimes_#{event.underscore}", "#{event.titleize} Assessment Timestamp"
|
21
|
+
= text_field_tag "study_engine_assessment[event_datetimes][]", form.object.event_datetimes[index], placeholder: "yyyy-mm-dd hh:mm", id: "study_engine_assessment_event_datetimes_#{event.parameterize.underscore}"
|
22
|
+
|
23
|
+
label Method
|
24
|
+
.method-fields
|
25
|
+
.field
|
26
|
+
label.method-label
|
27
|
+
= form.radio_button :method_applied, "Paper form"
|
28
|
+
.custom-symbol.paper-form
|
29
|
+
span Paper form
|
30
|
+
.field
|
31
|
+
label.method-label
|
32
|
+
= form.radio_button :method_applied, "By mail"
|
33
|
+
.custom-symbol.by-mail
|
34
|
+
span By mail
|
35
|
+
.field
|
36
|
+
label.method-label
|
37
|
+
= form.radio_button :method_applied, "Missing"
|
38
|
+
.custom-symbol.missing
|
39
|
+
span Missing
|
40
|
+
|
41
|
+
hr
|
42
|
+
|
43
|
+
.actions
|
44
|
+
input.save type="submit" value="Save Assessment"
|
45
|
+
= link_to "Cancel", :back, class: "cancel"
|
46
|
+
|
@@ -0,0 +1,25 @@
|
|
1
|
+
- hide_nav!
|
2
|
+
|
3
|
+
- if assessment.by_url?
|
4
|
+
fieldset.center
|
5
|
+
h2 Thank you for taking the time to complete the assessment!
|
6
|
+
p Your responses have been submitted.
|
7
|
+
|
8
|
+
= progress_bar assessment.percent_complete
|
9
|
+
|
10
|
+
- else
|
11
|
+
fieldset
|
12
|
+
h2 Thank you!
|
13
|
+
p Your responses have been saved.
|
14
|
+
p Please return the device to the METRC research coordinator.
|
15
|
+
|
16
|
+
= progress_bar assessment.percent_complete
|
17
|
+
|
18
|
+
.actions
|
19
|
+
a.start-over href="/" Start Another Assessment
|
20
|
+
|
21
|
+
javascript:
|
22
|
+
if(window.assessmentNotification) {
|
23
|
+
window.assessmentNotification.disable();
|
24
|
+
}
|
25
|
+
|
@@ -0,0 +1,46 @@
|
|
1
|
+
fieldset
|
2
|
+
- if assessment.by_url?
|
3
|
+
p You have requested a URL to provide access to an assessment for a study participant. Details pertaining to your request are located below:
|
4
|
+
|
5
|
+
- if assessment.by_mail?
|
6
|
+
p You have created an assessment timestamp marking when mail was sent to a study participant. Details pertaining to the assessment are located below:
|
7
|
+
|
8
|
+
table.assessment-details
|
9
|
+
tr
|
10
|
+
td
|
11
|
+
b Study ID:
|
12
|
+
td= assessment.study_id
|
13
|
+
|
14
|
+
tr
|
15
|
+
td
|
16
|
+
b Assessment:
|
17
|
+
td= assessment.event
|
18
|
+
|
19
|
+
- if assessment.group_index_name.present?
|
20
|
+
tr
|
21
|
+
td
|
22
|
+
b Randomization Group
|
23
|
+
td= assessment.group_index_name
|
24
|
+
|
25
|
+
- if assessment.by_url?
|
26
|
+
tr
|
27
|
+
td
|
28
|
+
b URL:
|
29
|
+
td= assessment_url(assessment)
|
30
|
+
|
31
|
+
tr
|
32
|
+
td
|
33
|
+
b Date and time requested:
|
34
|
+
td= assessment.created_at
|
35
|
+
|
36
|
+
- if assessment.by_url?
|
37
|
+
p An email has been sent to your email address with the above information. Participants can now go to the link and complete the assessment on their own computers. This does not disallow taking this assessment in-person or by phone, but once completed in any method the link will no longer work.
|
38
|
+
|
39
|
+
- if assessment.by_mail?
|
40
|
+
p This does not disallow taking this assessment in-person, by phone, or by URL.
|
41
|
+
|
42
|
+
hr
|
43
|
+
|
44
|
+
.actions
|
45
|
+
a.start-over href="/" Start Another Assessment
|
46
|
+
|
@@ -0,0 +1,43 @@
|
|
1
|
+
== welcome_content
|
2
|
+
|
3
|
+
= form_for assessment do |form|
|
4
|
+
fieldset.start-fields
|
5
|
+
.select-fields data-study-id-picker=form.object.ids_grouped_by_study_and_site.to_json
|
6
|
+
.field.study-field
|
7
|
+
= form.label :study_id_study, "Study"
|
8
|
+
= form.select :study_id_study, form.object.study_options, { include_blank: (!form.object.study_options.one? && "---") }, class: "study"
|
9
|
+
|
10
|
+
.field.site-field
|
11
|
+
= form.label :study_id_site, "Site"
|
12
|
+
= form.select :study_id_site, form.object.site_options, { include_blank: (!form.object.site_options.one? && "---") }, class: "site"
|
13
|
+
|
14
|
+
.field.id-field
|
15
|
+
= form.label :study_id_id, "ID"
|
16
|
+
= form.select :study_id_id, form.object.id_options, { include_blank: (!form.object.id_options.one? && "----") }, class: "id"
|
17
|
+
|
18
|
+
.visit-fields
|
19
|
+
label.hidden Visit
|
20
|
+
- events.each do |event|
|
21
|
+
.field
|
22
|
+
label.visit-label
|
23
|
+
= form.radio_button :event, event
|
24
|
+
.custom-symbol
|
25
|
+
span = event.titleize
|
26
|
+
|
27
|
+
.method-fields
|
28
|
+
label.hidden Method
|
29
|
+
|
30
|
+
- enabled_application_methods.each do |method_applied|
|
31
|
+
.field
|
32
|
+
label.method-label
|
33
|
+
= form.radio_button :method_applied, method_applied
|
34
|
+
div class=method_applied.parameterize class="custom-symbol"
|
35
|
+
span = method_applied
|
36
|
+
|
37
|
+
|
38
|
+
hr
|
39
|
+
|
40
|
+
.actions
|
41
|
+
input.start-button type="submit" value="Start Assessment" data-disable-on-click="true"
|
42
|
+
.spinner
|
43
|
+
|
@@ -0,0 +1,28 @@
|
|
1
|
+
.center
|
2
|
+
.field.static-study-id
|
3
|
+
b = assessment.study_id
|
4
|
+
h3 = assessment.event
|
5
|
+
|
6
|
+
p
|
7
|
+
b This assessment is #{assessment.existing_assessment.percent_complete}% complete.
|
8
|
+
br
|
9
|
+
span It was started on #{format_datetime assessment.existing_assessment.created_at}
|
10
|
+
span and was last updated on #{format_datetime assessment.existing_assessment.assessment_updated_at}.
|
11
|
+
|
12
|
+
hr
|
13
|
+
|
14
|
+
= form_for assessment do |form|
|
15
|
+
= form.hidden_field :study_id_study
|
16
|
+
= form.hidden_field :study_id_site
|
17
|
+
= form.hidden_field :study_id_id
|
18
|
+
= form.hidden_field :event
|
19
|
+
|
20
|
+
.actions
|
21
|
+
- if form.object.restartable?
|
22
|
+
= link_to "Resume Assessment", [:edit, form.object.existing_assessment], class: "resume"
|
23
|
+
.restart-wrapper
|
24
|
+
input type="submit" value="Restart Assessment" data-restart="true"
|
25
|
+
|
26
|
+
= link_to "Cancel", :back, class: "back"
|
27
|
+
.spinner
|
28
|
+
|
@@ -0,0 +1,60 @@
|
|
1
|
+
- hide_nav!
|
2
|
+
|
3
|
+
#questions
|
4
|
+
= form_for assessment, html: { data: { pjax: true, timeout: StudyEngine::Assessment.timeout_interval } } do
|
5
|
+
= fields_for assessment.current_question do |form|
|
6
|
+
= form.hidden_field :id
|
7
|
+
= form.hidden_field :promis_id
|
8
|
+
= form.hidden_field :context
|
9
|
+
= form.hidden_field :title
|
10
|
+
|
11
|
+
- form.object.responses.each.with_index do |response, index|
|
12
|
+
= form.fields_for :responses, response do |response_form|
|
13
|
+
= response_form.hidden_field :id
|
14
|
+
= response_form.hidden_field :promis_id
|
15
|
+
= response_form.hidden_field :title
|
16
|
+
|
17
|
+
- if assessment.current_result.bank.paired?
|
18
|
+
p = raw form.object.context
|
19
|
+
h3.center = raw form.object.title
|
20
|
+
|
21
|
+
fieldset.paired-bank
|
22
|
+
h3 How true was this <u>before your illness</u>?
|
23
|
+
- form.object.responses.each do |response|
|
24
|
+
.field
|
25
|
+
label.custom-label
|
26
|
+
= form.radio_button :response_before, response.title, class: "custom-radio"
|
27
|
+
.custom-symbol
|
28
|
+
span = raw response.title
|
29
|
+
|
30
|
+
fieldset.paired-bank
|
31
|
+
h3 How true is this now, <u>since your illness</u>?
|
32
|
+
- form.object.responses.each.with_index do |response, index|
|
33
|
+
.field
|
34
|
+
label.custom-label
|
35
|
+
= form.radio_button :selected_response_index, index, class: "custom-radio"
|
36
|
+
.custom-symbol
|
37
|
+
span = raw response.title
|
38
|
+
|
39
|
+
- else
|
40
|
+
fieldset.assessment-questions
|
41
|
+
h3 = raw form.object.context
|
42
|
+
p = raw form.object.title
|
43
|
+
|
44
|
+
- form.object.responses.each.with_index do |response, index|
|
45
|
+
.field
|
46
|
+
label.custom-label
|
47
|
+
= form.radio_button :selected_response_index, index, class: "custom-radio"
|
48
|
+
.custom-symbol
|
49
|
+
span = raw response.title
|
50
|
+
|
51
|
+
= progress_bar assessment.percent_complete
|
52
|
+
|
53
|
+
.assessment-actions
|
54
|
+
input.skip type="submit" value="Skip this question" data-disable-on-click="true" data-data-confirm="You didn't answer this question.\nClick 'OK' if you want to skip this question.\nClick 'Cancel' if you want to answer this question."
|
55
|
+
input.submit type="submit" value="Next" data-disable-on-click="true"
|
56
|
+
.spinner
|
57
|
+
|
58
|
+
a.exit href="/" data-confirm="You are about to exit this application. Click Ok to exit or Cancel to return to the application."
|
59
|
+
| Exit Assessment
|
60
|
+
|