study_engine 0.0.2

Sign up to get free protection for your applications and to get access to all the features.
Files changed (138) hide show
  1. checksums.yaml +7 -0
  2. data/Rakefile +42 -0
  3. data/app/assets/images/study_engine/spinner.gif +0 -0
  4. data/app/assets/images/study_engine/sprite/delete.png +0 -0
  5. data/app/assets/images/study_engine/sprite/download.png +0 -0
  6. data/app/assets/images/study_engine/sprite/edit.png +0 -0
  7. data/app/assets/images/study_engine/sprite/incomplete.png +0 -0
  8. data/app/assets/images/study_engine/sprite/metrc-sm.png +0 -0
  9. data/app/assets/images/study_engine/sprite/metrc.png +0 -0
  10. data/app/assets/images/study_engine/sprite/new.png +0 -0
  11. data/app/assets/javascripts/study_engine/admin_notes.js.coffee +12 -0
  12. data/app/assets/javascripts/study_engine/assessment_notifications.js.coffee +36 -0
  13. data/app/assets/javascripts/study_engine/assessment_timeout.js.coffee +24 -0
  14. data/app/assets/javascripts/study_engine/disable_buttons_after_click.js.coffee +6 -0
  15. data/app/assets/javascripts/study_engine/fire_click_event_immediately_on_mobile.js.coffee.erb +10 -0
  16. data/app/assets/javascripts/study_engine/response_validation.js.coffee +8 -0
  17. data/app/assets/javascripts/study_engine/restart_assessment_button.js.coffee +3 -0
  18. data/app/assets/javascripts/study_engine/study_engine.js.coffee +9 -0
  19. data/app/assets/javascripts/study_engine/study_id_picker.js.coffee +28 -0
  20. data/app/assets/stylesheets/study_engine.sass +1 -0
  21. data/app/assets/stylesheets/study_engine/_constant.sass +52 -0
  22. data/app/assets/stylesheets/study_engine/_mobile.sass +8 -0
  23. data/app/assets/stylesheets/study_engine/_tablet.sass +36 -0
  24. data/app/assets/stylesheets/study_engine/application.sass +101 -0
  25. data/app/assets/stylesheets/study_engine/base/_form.sass +131 -0
  26. data/app/assets/stylesheets/study_engine/base/_list.sass +38 -0
  27. data/app/assets/stylesheets/study_engine/base/_tables.sass +33 -0
  28. data/app/assets/stylesheets/study_engine/base/_text.sass +78 -0
  29. data/app/assets/stylesheets/study_engine/components/-fields/_login-fields.sass +14 -0
  30. data/app/assets/stylesheets/study_engine/components/-fields/_start-fields.sass +101 -0
  31. data/app/assets/stylesheets/study_engine/components/-nav/_global-nav.sass +19 -0
  32. data/app/assets/stylesheets/study_engine/components/-table/_results-table.sass +75 -0
  33. data/app/assets/stylesheets/study_engine/components/-table/_users-table.sass +11 -0
  34. data/app/assets/stylesheets/study_engine/components/_assessment-questions.sass +30 -0
  35. data/app/assets/stylesheets/study_engine/components/_form-buttons.sass +102 -0
  36. data/app/assets/stylesheets/study_engine/components/_helpt-text.sass +2 -0
  37. data/app/assets/stylesheets/study_engine/components/_method-icons.sass +15 -0
  38. data/app/assets/stylesheets/study_engine/components/_notes-modal.sass +65 -0
  39. data/app/assets/stylesheets/study_engine/components/_progress-bar.sass +25 -0
  40. data/app/assets/stylesheets/study_engine/components/_sortable-columns.sass +26 -0
  41. data/app/assets/stylesheets/study_engine/components/_table-actions.sass +8 -0
  42. data/app/assets/stylesheets/study_engine/components/_table-buttons.sass +17 -0
  43. data/app/assets/stylesheets/study_engine/components/_user-privileges.sass +3 -0
  44. data/app/assets/stylesheets/study_engine/mixins/_actions-table.sass +11 -0
  45. data/app/assets/stylesheets/study_engine/mixins/_buttons.sass +55 -0
  46. data/app/assets/stylesheets/study_engine/mixins/_checkbox-columns.sass +50 -0
  47. data/app/assets/stylesheets/study_engine/mixins/_custom-radios.sass +47 -0
  48. data/app/assets/stylesheets/study_engine/mixins/_icons.sass +38 -0
  49. data/app/assets/stylesheets/study_engine/mixins/_notification-text.sass +23 -0
  50. data/app/controllers/study_engine/admin/application_controller.rb +6 -0
  51. data/app/controllers/study_engine/admin/assessments_controller.rb +79 -0
  52. data/app/controllers/study_engine/admin/notes_controller.rb +17 -0
  53. data/app/controllers/study_engine/application_controller.rb +12 -0
  54. data/app/controllers/study_engine/assessments_controller.rb +94 -0
  55. data/app/helpers/study_engine/helpers.rb +15 -0
  56. data/app/helpers/study_engine/mailer_helpers.rb +11 -0
  57. data/app/mailers/study_engine/mailer.rb +25 -0
  58. data/app/models/study_engine/answer.rb +36 -0
  59. data/app/models/study_engine/assessment.rb +118 -0
  60. data/app/models/study_engine/begin_assessment_form.rb +110 -0
  61. data/app/models/study_engine/existing_assessments_form.rb +99 -0
  62. data/app/models/study_engine/form.rb +59 -0
  63. data/app/models/study_engine/report.rb +69 -0
  64. data/app/models/study_engine/result.rb +46 -0
  65. data/app/models/study_engine/screen_results.rb +54 -0
  66. data/app/models/study_engine/study_id.rb +47 -0
  67. data/app/models/study_engine/study_id/bank.rb +38 -0
  68. data/app/models/study_engine/study_id/sync.rb +52 -0
  69. data/app/models/study_engine/update_assessments_form.rb +53 -0
  70. data/app/views/study_engine/_progress_bar.html.slim +4 -0
  71. data/app/views/study_engine/admin/assessments/_assessment.html.slim +36 -0
  72. data/app/views/study_engine/admin/assessments/domain_results.csv.csvbuilder +17 -0
  73. data/app/views/study_engine/admin/assessments/edit.html.slim +68 -0
  74. data/app/views/study_engine/admin/assessments/index.html.slim +26 -0
  75. data/app/views/study_engine/admin/assessments/item_results.csv.csvbuilder +24 -0
  76. data/app/views/study_engine/admin/assessments/new.html.slim +46 -0
  77. data/app/views/study_engine/admin/assessments/screen_results.csv.csvbuilder +2 -0
  78. data/app/views/study_engine/assessments/complete.html.slim +25 -0
  79. data/app/views/study_engine/assessments/create.html.slim +46 -0
  80. data/app/views/study_engine/assessments/index.html.slim +43 -0
  81. data/app/views/study_engine/assessments/restart.html.slim +28 -0
  82. data/app/views/study_engine/assessments/show.html.slim +60 -0
  83. data/app/views/study_engine/mailer/assessment_recorded_notification.erb +8 -0
  84. data/app/views/study_engine/mailer/assessment_url_notification.erb +6 -0
  85. data/config/routes.rb +15 -0
  86. data/db/migrate/20160422185859_create_tables.rb +52 -0
  87. data/lib/study_engine.rb +5 -0
  88. data/lib/study_engine/config.rb +37 -0
  89. data/lib/study_engine/cucumber.rb +96 -0
  90. data/lib/study_engine/engine.rb +7 -0
  91. data/lib/study_engine/version.rb +3 -0
  92. data/lib/tasks/study_engine_tasks.rake +10 -0
  93. data/spec/ar_helper.rb +30 -0
  94. data/spec/models/study_engine/answer_spec.rb +28 -0
  95. data/spec/models/study_engine/assessment_spec.rb +250 -0
  96. data/spec/models/study_engine/begin_assessment_form_spec.rb +87 -0
  97. data/spec/models/study_engine/existing_assessments_form_spec.rb +171 -0
  98. data/spec/models/study_engine/report_spec.rb +48 -0
  99. data/spec/models/study_engine/result_spec.rb +102 -0
  100. data/spec/models/study_engine/screen_results_spec.rb +69 -0
  101. data/spec/models/study_engine/study_id/bank_spec.rb +72 -0
  102. data/spec/models/study_engine/study_id/sync_spec.rb +61 -0
  103. data/spec/models/study_engine/study_id_spec.rb +7 -0
  104. data/spec/models/study_engine/update_assessments_form_spec.rb +38 -0
  105. data/spec/rails_helper.rb +50 -0
  106. data/spec/schema.rb +65 -0
  107. data/spec/spec_helper.rb +72 -0
  108. data/spec/support/CATEngine3.exe +0 -0
  109. data/spec/support/forms/01. Physical Function Bank.xml +1213 -0
  110. data/spec/support/forms/02. Pain Interference Bank.xml +443 -0
  111. data/spec/support/forms/03. Anxiety Bank.xml +322 -0
  112. data/spec/support/forms/04. Depression Bank.xml +311 -0
  113. data/spec/support/forms/05. Ability to Participate Social bank Version 2.xml +353 -0
  114. data/spec/support/forms/06. Psychosocial Illness Impact Pos Bank.xml +900 -0
  115. data/spec/support/forms/07. Applied Cognition Gen Concerns Bank.xml +377 -0
  116. data/spec/support/forms/08. Satisfaction with Roles and Activities Bank Version 2.xml +443 -0
  117. data/spec/support/forms/09. Sleep Disturbance Bank.xml +300 -0
  118. data/spec/support/forms/10. Emotional Support Bank.xml +163 -0
  119. data/spec/support/forms/A - 07. Psychosocial Illness Impact Pos Bank.xml +471 -0
  120. data/spec/support/forms/A - 08. Pain interference Bank.xml +443 -0
  121. data/spec/support/forms/A - 09. Depression Bank.xml +311 -0
  122. data/spec/support/forms/B - 07. Physical Function Short Form.xml +123 -0
  123. data/spec/support/forms/B - 08. Physical Function Remainder A.xml +543 -0
  124. data/spec/support/forms/B - 09. Ability to Participate Social bank Version 2.xml +353 -0
  125. data/spec/support/forms/C - 07. Physical Function Short Form.xml +123 -0
  126. data/spec/support/forms/C - 08. Physical Function Remainder B.xml +553 -0
  127. data/spec/support/forms/C - 09. Anxiety Bank.xml +322 -0
  128. data/spec/support/parameters/01. Physical Function Bank.xml +682 -0
  129. data/spec/support/parameters/02. Pain Interference Bank.xml +256 -0
  130. data/spec/support/parameters/03. Anxiety Bank.xml +190 -0
  131. data/spec/support/parameters/04. Depression Bank.xml +184 -0
  132. data/spec/support/parameters/05. Ability to Participate Social bank Version 2.xml +226 -0
  133. data/spec/support/parameters/06. Psychosocial Illness Impact Pos Bank.xml +211 -0
  134. data/spec/support/parameters/07. Applied Cognition Gen Concerns Bank.xml +1 -0
  135. data/spec/support/parameters/08. Satisfaction with Roles and Activities Bank Version 2.xml +1 -0
  136. data/spec/support/parameters/09. Sleep Disturbance Bank.xml +1 -0
  137. data/spec/support/parameters/10. Emotional Support Bank.xml +1 -0
  138. 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,4 @@
1
+ .progress
2
+ .bar style="right: #{100 - percent}%"
3
+ .percentage style="left: #{percent}%" #{percent}%
4
+
@@ -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,2 @@
1
+ StudyEngine::ScreenResults.new(report.groups).each { |row| csv << row }
2
+
@@ -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
+