ccls-ccls_engine 3.11.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (269) hide show
  1. data/README.rdoc +182 -0
  2. data/app/models/abstract.rb +181 -0
  3. data/app/models/abstract_search.rb +50 -0
  4. data/app/models/abstract_validations.rb +324 -0
  5. data/app/models/address.rb +70 -0
  6. data/app/models/address_type.rb +15 -0
  7. data/app/models/addressing.rb +147 -0
  8. data/app/models/aliquot.rb +44 -0
  9. data/app/models/aliquot_sample_format.rb +13 -0
  10. data/app/models/analysis.rb +14 -0
  11. data/app/models/bc_request.rb +20 -0
  12. data/app/models/candidate_control.rb +101 -0
  13. data/app/models/context.rb +23 -0
  14. data/app/models/context_data_source.rb +4 -0
  15. data/app/models/county.rb +16 -0
  16. data/app/models/data_source.rb +24 -0
  17. data/app/models/diagnosis.rb +23 -0
  18. data/app/models/document_type.rb +16 -0
  19. data/app/models/document_version.rb +27 -0
  20. data/app/models/enrollment.rb +78 -0
  21. data/app/models/enrollment_validations.rb +167 -0
  22. data/app/models/follow_up.rb +16 -0
  23. data/app/models/follow_up_type.rb +18 -0
  24. data/app/models/gift_card.rb +22 -0
  25. data/app/models/gift_card_search.rb +137 -0
  26. data/app/models/home_exposure_response.rb +24 -0
  27. data/app/models/homex_outcome.rb +75 -0
  28. data/app/models/hospital.rb +22 -0
  29. data/app/models/icf_master_id.rb +30 -0
  30. data/app/models/icf_master_tracker.rb +217 -0
  31. data/app/models/icf_master_tracker_change.rb +9 -0
  32. data/app/models/icf_master_tracker_update.rb +50 -0
  33. data/app/models/ineligible_reason.rb +26 -0
  34. data/app/models/instrument.rb +26 -0
  35. data/app/models/instrument_type.rb +17 -0
  36. data/app/models/instrument_version.rb +28 -0
  37. data/app/models/interview.rb +122 -0
  38. data/app/models/interview_method.rb +17 -0
  39. data/app/models/interview_outcome.rb +16 -0
  40. data/app/models/language.rb +28 -0
  41. data/app/models/live_birth_data_update.rb +142 -0
  42. data/app/models/operational_event.rb +99 -0
  43. data/app/models/operational_event_type.rb +31 -0
  44. data/app/models/organization.rb +28 -0
  45. data/app/models/patient.rb +63 -0
  46. data/app/models/patient_validations.rb +118 -0
  47. data/app/models/person.rb +28 -0
  48. data/app/models/phone_number.rb +105 -0
  49. data/app/models/phone_type.rb +15 -0
  50. data/app/models/project.rb +39 -0
  51. data/app/models/project_outcome.rb +19 -0
  52. data/app/models/race.rb +31 -0
  53. data/app/models/refusal_reason.rb +23 -0
  54. data/app/models/sample.rb +168 -0
  55. data/app/models/sample_kit.rb +14 -0
  56. data/app/models/sample_outcome.rb +16 -0
  57. data/app/models/sample_temperature.rb +14 -0
  58. data/app/models/sample_type.rb +37 -0
  59. data/app/models/search.rb +195 -0
  60. data/app/models/section.rb +18 -0
  61. data/app/models/state.rb +25 -0
  62. data/app/models/study_subject.rb +237 -0
  63. data/app/models/study_subject_abstracts.rb +47 -0
  64. data/app/models/study_subject_addresses.rb +34 -0
  65. data/app/models/study_subject_associations.rb +38 -0
  66. data/app/models/study_subject_duplicates.rb +111 -0
  67. data/app/models/study_subject_enrollments.rb +17 -0
  68. data/app/models/study_subject_homex_outcome.rb +22 -0
  69. data/app/models/study_subject_identifier.rb +153 -0
  70. data/app/models/study_subject_interviews.rb +25 -0
  71. data/app/models/study_subject_languages.rb +21 -0
  72. data/app/models/study_subject_operational_events.rb +66 -0
  73. data/app/models/study_subject_patient.rb +177 -0
  74. data/app/models/study_subject_pii.rb +74 -0
  75. data/app/models/study_subject_races.rb +25 -0
  76. data/app/models/study_subject_search.rb +260 -0
  77. data/app/models/study_subject_validations.rb +116 -0
  78. data/app/models/subject_language.rb +11 -0
  79. data/app/models/subject_race.rb +11 -0
  80. data/app/models/subject_relationship.rb +21 -0
  81. data/app/models/subject_type.rb +22 -0
  82. data/app/models/tracing_status.rb +20 -0
  83. data/app/models/transfer.rb +40 -0
  84. data/app/models/unit.rb +14 -0
  85. data/app/models/vital_status.rb +19 -0
  86. data/app/models/zip_code.rb +36 -0
  87. data/config/abstract_fields.yml +1038 -0
  88. data/config/abstract_sections.yml +77 -0
  89. data/config/home_exposure_response_fields.yml +583 -0
  90. data/config/icf_master_tracker_update.yml +56 -0
  91. data/config/live_birth_data_update.yml +56 -0
  92. data/config/shared_use_db.yml +4 -0
  93. data/generators/ccls_engine/USAGE +2 -0
  94. data/generators/ccls_engine/ccls_engine_generator.rb +123 -0
  95. data/generators/ccls_engine/templates/autotest_ccls_engine.rb +3 -0
  96. data/generators/ccls_engine/templates/ccls_engine.rake +12 -0
  97. data/generators/ccls_engine/templates/fixtures/address_types.yml +30 -0
  98. data/generators/ccls_engine/templates/fixtures/context_data_sources.yml +54 -0
  99. data/generators/ccls_engine/templates/fixtures/contexts.yml +19 -0
  100. data/generators/ccls_engine/templates/fixtures/data_sources.yml +40 -0
  101. data/generators/ccls_engine/templates/fixtures/diagnoses.yml +40 -0
  102. data/generators/ccls_engine/templates/fixtures/document_types.yml +65 -0
  103. data/generators/ccls_engine/templates/fixtures/document_versions.csv +155 -0
  104. data/generators/ccls_engine/templates/fixtures/follow_up_types.yml +16 -0
  105. data/generators/ccls_engine/templates/fixtures/hospitals.yml +114 -0
  106. data/generators/ccls_engine/templates/fixtures/ineligible_reasons.yml +35 -0
  107. data/generators/ccls_engine/templates/fixtures/instrument_types.yml +26 -0
  108. data/generators/ccls_engine/templates/fixtures/instrument_versions.yml +22 -0
  109. data/generators/ccls_engine/templates/fixtures/instruments.yml +22 -0
  110. data/generators/ccls_engine/templates/fixtures/interview_methods.yml +30 -0
  111. data/generators/ccls_engine/templates/fixtures/interview_outcomes.yml +31 -0
  112. data/generators/ccls_engine/templates/fixtures/languages.yml +34 -0
  113. data/generators/ccls_engine/templates/fixtures/operational_event_types.yml +141 -0
  114. data/generators/ccls_engine/templates/fixtures/organizations.yml +198 -0
  115. data/generators/ccls_engine/templates/fixtures/people.yml +130 -0
  116. data/generators/ccls_engine/templates/fixtures/phone_types.yml +30 -0
  117. data/generators/ccls_engine/templates/fixtures/project_outcomes.yml +25 -0
  118. data/generators/ccls_engine/templates/fixtures/projects.yml +59 -0
  119. data/generators/ccls_engine/templates/fixtures/races.yml +52 -0
  120. data/generators/ccls_engine/templates/fixtures/refusal_reasons.yml +55 -0
  121. data/generators/ccls_engine/templates/fixtures/sample_outcomes.yml +36 -0
  122. data/generators/ccls_engine/templates/fixtures/sample_temperatures.yml +16 -0
  123. data/generators/ccls_engine/templates/fixtures/sample_types.yml +147 -0
  124. data/generators/ccls_engine/templates/fixtures/sections.yml +31 -0
  125. data/generators/ccls_engine/templates/fixtures/states.yml +363 -0
  126. data/generators/ccls_engine/templates/fixtures/subject_relationships.yml +46 -0
  127. data/generators/ccls_engine/templates/fixtures/subject_types.yml +30 -0
  128. data/generators/ccls_engine/templates/fixtures/tracing_statuses.yml +30 -0
  129. data/generators/ccls_engine/templates/fixtures/units.yml +13 -0
  130. data/generators/ccls_engine/templates/fixtures/vital_statuses.yml +28 -0
  131. data/generators/ccls_engine/templates/functional/roles_controller_test.rb +142 -0
  132. data/generators/ccls_engine/templates/functional/sessions_controller_test.rb +19 -0
  133. data/generators/ccls_engine/templates/functional/users_controller_test.rb +94 -0
  134. data/generators/ccls_engine/templates/images/sort_down.png +0 -0
  135. data/generators/ccls_engine/templates/images/sort_up.png +0 -0
  136. data/generators/ccls_engine/templates/initializer.rb +28 -0
  137. data/generators/ccls_engine/templates/javascripts/ccls_engine.js +24 -0
  138. data/generators/ccls_engine/templates/javascripts/jquery-ui.js +763 -0
  139. data/generators/ccls_engine/templates/javascripts/jquery.js +154 -0
  140. data/generators/ccls_engine/templates/javascripts/jrails.js +1 -0
  141. data/generators/ccls_engine/templates/migrations/create_user_invitations.rb +18 -0
  142. data/generators/ccls_engine/templates/migrations/create_users.rb +33 -0
  143. data/generators/ccls_engine/templates/migrations/drop_user_invitations.rb +18 -0
  144. data/generators/ccls_engine/templates/stylesheets/ccls_engine.css +180 -0
  145. data/generators/ccls_engine/templates/stylesheets/user.css +35 -0
  146. data/generators/ccls_engine/templates/stylesheets/users.css +23 -0
  147. data/generators/ccls_engine/templates/unit/core_extension_test.rb +18 -0
  148. data/generators/ccls_engine/templates/unit/role_test.rb +30 -0
  149. data/generators/ccls_engine/templates/unit/user_test.rb +321 -0
  150. data/lib/ccls-ccls_engine.rb +1 -0
  151. data/lib/ccls_engine.rb +135 -0
  152. data/lib/ccls_engine/action_view_extension.rb +3 -0
  153. data/lib/ccls_engine/action_view_extension/base.rb +53 -0
  154. data/lib/ccls_engine/action_view_extension/form_builder.rb +39 -0
  155. data/lib/ccls_engine/active_record_extension.rb +2 -0
  156. data/lib/ccls_engine/active_record_extension/base.rb +70 -0
  157. data/lib/ccls_engine/active_record_shared.rb +8 -0
  158. data/lib/ccls_engine/assertions.rb +69 -0
  159. data/lib/ccls_engine/autotest.rb +54 -0
  160. data/lib/ccls_engine/ccls_user.rb +117 -0
  161. data/lib/ccls_engine/core_extension.rb +14 -0
  162. data/lib/ccls_engine/date_and_time_formats.rb +30 -0
  163. data/lib/ccls_engine/factories.rb +880 -0
  164. data/lib/ccls_engine/factory_test_helper.rb +276 -0
  165. data/lib/ccls_engine/helper.rb +112 -0
  166. data/lib/ccls_engine/icf_master_tracker_update_test_helper.rb +121 -0
  167. data/lib/ccls_engine/live_birth_data_update_test_helper.rb +110 -0
  168. data/lib/ccls_engine/package_test_helper.rb +49 -0
  169. data/lib/ccls_engine/shared_database.rb +20 -0
  170. data/lib/ccls_engine/tasks.rb +1 -0
  171. data/lib/ccls_engine/test_tasks.rb +52 -0
  172. data/lib/ccls_engine/translation_table.rb +86 -0
  173. data/lib/shared_migration.rb +5 -0
  174. data/lib/surveyor/survey_extensions.rb +125 -0
  175. data/lib/tasks/application.rake +286 -0
  176. data/lib/tasks/calnet_authenticated.rake +6 -0
  177. data/lib/tasks/common_lib.rake +7 -0
  178. data/lib/tasks/database.rake +288 -0
  179. data/lib/tasks/documentation.rake +71 -0
  180. data/lib/tasks/homex_import.rake +723 -0
  181. data/lib/tasks/odms_import.rake +1116 -0
  182. data/lib/tasks/simply_authorized.rake +6 -0
  183. data/lib/tasks/ucb_ccls_engine_tasks.rake +4 -0
  184. data/lib/tasks/use_db.rake +4 -0
  185. data/rails/init.rb +4 -0
  186. data/test/unit/ccls/abstract_search_test.rb +150 -0
  187. data/test/unit/ccls/abstract_test.rb +674 -0
  188. data/test/unit/ccls/address_test.rb +155 -0
  189. data/test/unit/ccls/address_type_test.rb +25 -0
  190. data/test/unit/ccls/addressing_test.rb +466 -0
  191. data/test/unit/ccls/aliquot_sample_format_test.rb +20 -0
  192. data/test/unit/ccls/aliquot_test.rb +156 -0
  193. data/test/unit/ccls/analysis_test.rb +31 -0
  194. data/test/unit/ccls/bc_request_test.rb +43 -0
  195. data/test/unit/ccls/candidate_control_test.rb +712 -0
  196. data/test/unit/ccls/context_data_source_test.rb +26 -0
  197. data/test/unit/ccls/context_test.rb +40 -0
  198. data/test/unit/ccls/core_extension_test.rb +17 -0
  199. data/test/unit/ccls/county_test.rb +34 -0
  200. data/test/unit/ccls/data_source_test.rb +41 -0
  201. data/test/unit/ccls/diagnosis_test.rb +51 -0
  202. data/test/unit/ccls/document_type_test.rb +35 -0
  203. data/test/unit/ccls/document_version_test.rb +68 -0
  204. data/test/unit/ccls/enrollment_test.rb +575 -0
  205. data/test/unit/ccls/follow_up_test.rb +23 -0
  206. data/test/unit/ccls/follow_up_type_test.rb +34 -0
  207. data/test/unit/ccls/gift_card_search_test.rb +153 -0
  208. data/test/unit/ccls/gift_card_test.rb +40 -0
  209. data/test/unit/ccls/home_exposure_response_test.rb +83 -0
  210. data/test/unit/ccls/homex_outcome_test.rb +199 -0
  211. data/test/unit/ccls/hospital_test.rb +102 -0
  212. data/test/unit/ccls/icf_master_id_test.rb +30 -0
  213. data/test/unit/ccls/icf_master_tracker_change_test.rb +14 -0
  214. data/test/unit/ccls/icf_master_tracker_test.rb +132 -0
  215. data/test/unit/ccls/icf_master_tracker_update_test.rb +176 -0
  216. data/test/unit/ccls/ineligible_reason_test.rb +48 -0
  217. data/test/unit/ccls/instrument_test.rb +62 -0
  218. data/test/unit/ccls/instrument_type_test.rb +39 -0
  219. data/test/unit/ccls/instrument_version_test.rb +71 -0
  220. data/test/unit/ccls/interview_method_test.rb +44 -0
  221. data/test/unit/ccls/interview_outcome_test.rb +34 -0
  222. data/test/unit/ccls/interview_test.rb +298 -0
  223. data/test/unit/ccls/language_test.rb +47 -0
  224. data/test/unit/ccls/live_birth_data_update_test.rb +358 -0
  225. data/test/unit/ccls/operational_event_test.rb +187 -0
  226. data/test/unit/ccls/operational_event_type_test.rb +51 -0
  227. data/test/unit/ccls/organization_test.rb +64 -0
  228. data/test/unit/ccls/patient_test.rb +538 -0
  229. data/test/unit/ccls/person_test.rb +55 -0
  230. data/test/unit/ccls/phone_number_test.rb +244 -0
  231. data/test/unit/ccls/phone_type_test.rb +32 -0
  232. data/test/unit/ccls/project_outcome_test.rb +34 -0
  233. data/test/unit/ccls/project_test.rb +60 -0
  234. data/test/unit/ccls/race_test.rb +37 -0
  235. data/test/unit/ccls/refusal_reason_test.rb +52 -0
  236. data/test/unit/ccls/role_test.rb +26 -0
  237. data/test/unit/ccls/sample_kit_test.rb +35 -0
  238. data/test/unit/ccls/sample_outcome_test.rb +34 -0
  239. data/test/unit/ccls/sample_temperature_test.rb +25 -0
  240. data/test/unit/ccls/sample_test.rb +363 -0
  241. data/test/unit/ccls/sample_type_test.rb +58 -0
  242. data/test/unit/ccls/section_test.rb +34 -0
  243. data/test/unit/ccls/state_test.rb +31 -0
  244. data/test/unit/ccls/study_subject_abstracts_test.rb +115 -0
  245. data/test/unit/ccls/study_subject_addresses_test.rb +93 -0
  246. data/test/unit/ccls/study_subject_duplicates_test.rb +407 -0
  247. data/test/unit/ccls/study_subject_enrollments_test.rb +65 -0
  248. data/test/unit/ccls/study_subject_homex_outcome_test.rb +64 -0
  249. data/test/unit/ccls/study_subject_identifier_test.rb +439 -0
  250. data/test/unit/ccls/study_subject_interviews_test.rb +26 -0
  251. data/test/unit/ccls/study_subject_languages_test.rb +142 -0
  252. data/test/unit/ccls/study_subject_operational_events_test.rb +53 -0
  253. data/test/unit/ccls/study_subject_patient_test.rb +249 -0
  254. data/test/unit/ccls/study_subject_pii_test.rb +278 -0
  255. data/test/unit/ccls/study_subject_races_test.rb +203 -0
  256. data/test/unit/ccls/study_subject_search_test.rb +704 -0
  257. data/test/unit/ccls/study_subject_test.rb +770 -0
  258. data/test/unit/ccls/subject_language_test.rb +43 -0
  259. data/test/unit/ccls/subject_race_test.rb +35 -0
  260. data/test/unit/ccls/subject_relationship_test.rb +43 -0
  261. data/test/unit/ccls/subject_type_test.rb +40 -0
  262. data/test/unit/ccls/tracing_status_test.rb +32 -0
  263. data/test/unit/ccls/transfer_test.rb +81 -0
  264. data/test/unit/ccls/translation_table_test.rb +40 -0
  265. data/test/unit/ccls/unit_test.rb +21 -0
  266. data/test/unit/ccls/user_test.rb +156 -0
  267. data/test/unit/ccls/vital_status_test.rb +36 -0
  268. data/test/unit/ccls/zip_code_test.rb +55 -0
  269. metadata +633 -0
@@ -0,0 +1,880 @@
1
+ def random_pos_neg
2
+ [nil,1,2][rand(3)]
3
+ end
4
+ def random_true_or_false
5
+ [true,false][rand(2)]
6
+ end
7
+ def random_yndk
8
+ [nil,1,2,999][rand(4)]
9
+ end
10
+ def random_date
11
+ Date.jd(2440000+rand(15000))
12
+ end
13
+ def random_float
14
+ rand * 100
15
+ end
16
+ def random_sex
17
+ %w( M F )[rand(2)]
18
+ end
19
+
20
+ # This is no longer used in this gem, but is used in the apps
21
+ Factory.define :page do |f|
22
+ f.sequence(:path) { |n| "/path#{n}" }
23
+ f.sequence(:menu_en) { |n| "Menu #{n}" }
24
+ f.sequence(:title_en){ |n| "Title #{n}" }
25
+ f.body_en "Page Body"
26
+ end
27
+
28
+ Factory.define :user do |f|
29
+ f.sequence(:uid) { |n| "UID#{n}" }
30
+ # f.sequence(:username) { |n| "username#{n}" }
31
+ # f.sequence(:email) { |n| "username#{n}@example.com" }
32
+ # f.password 'V@1!dP@55w0rd'
33
+ # f.password_confirmation 'V@1!dP@55w0rd'
34
+ # f.role_name 'user'
35
+ end
36
+ Factory.define :admin_user, :parent => :user do |f|
37
+ f.administrator true
38
+ end # parent must be defined first
39
+
40
+ Factory.define :address do |f|
41
+ f.association :address_type
42
+ f.sequence(:line_1) { |n| "Box #{n}" }
43
+ f.city "Berkeley"
44
+ f.state "CA"
45
+ f.zip "12345"
46
+ end
47
+ Factory.define :mailing_address, :parent => :address do |f|
48
+ f.address_type { AddressType['mailing'] }
49
+ end
50
+ Factory.define :residence_address, :parent => :address do |f|
51
+ f.address_type { AddressType['residence'] }
52
+ end
53
+
54
+ Factory.define :addressing do |f|
55
+ f.association :address
56
+ f.association :study_subject
57
+ f.is_valid 1
58
+ f.is_verified false # 2 # 20111110 just noticed that this is boolean and not int for YNDK
59
+ f.updated_at Time.now # to make it dirty
60
+ end
61
+ Factory.define :mailing_addressing, :parent => :addressing do |f|
62
+ f.association :address, :factory => :mailing_address
63
+ f.current_address { YNDK[:no] }
64
+ end
65
+ Factory.define :current_mailing_addressing, :parent => :mailing_addressing do |f|
66
+ f.association :address, :factory => :mailing_address
67
+ f.current_address { YNDK[:yes] }
68
+ end
69
+ Factory.define :residence_addressing, :parent => :addressing do |f|
70
+ f.association :address, :factory => :residence_address
71
+ f.current_address { YNDK[:no] }
72
+ end
73
+ Factory.define :current_residence_addressing, :parent => :residence_addressing do |f|
74
+ f.association :address, :factory => :residence_address
75
+ f.current_address { YNDK[:yes] }
76
+ end
77
+
78
+ Factory.define :address_type do |f|
79
+ f.sequence(:key) { |n| "Key#{n}" }
80
+ f.sequence(:description) { |n| "Desc#{n}" }
81
+ end
82
+
83
+ Factory.define :aliquot do |f|
84
+ f.association :sample
85
+ f.association :unit
86
+ f.association :owner, :factory => :organization
87
+ end
88
+
89
+ Factory.define :aliquot_sample_format do |f|
90
+ f.sequence(:key) { |n| "Key#{n}" }
91
+ f.sequence(:description) { |n| "Desc#{n}" }
92
+ end
93
+
94
+ Factory.define :analysis do |f|
95
+ f.sequence(:key) { |n| "Key#{n}" }
96
+ f.sequence(:description) { |n| "Desc#{n}" }
97
+ end
98
+
99
+ Factory.define :bc_request do |f|
100
+ f.sequence(:notes) { |n| "Notes#{n}" } # forces an update
101
+ end
102
+
103
+ Factory.define :candidate_control do |f|
104
+ f.first_name "First"
105
+ f.last_name "Last"
106
+ f.dob { random_date } #Date.jd(2440000+rand(15000))
107
+ f.reject_candidate false
108
+ f.sex { random_sex }
109
+ end
110
+ Factory.define :rejected_candidate_control, :parent => :candidate_control do |f|
111
+ f.reject_candidate true
112
+ f.rejection_reason "Some test reason"
113
+ end
114
+
115
+ Factory.define :context do |f|
116
+ f.sequence(:key) { |n| "Key#{n}" }
117
+ f.sequence(:description) { |n| "Desc#{n}" }
118
+ end
119
+
120
+ Factory.define :context_data_source do |f|
121
+ f.association :context
122
+ f.association :data_source
123
+ end
124
+
125
+ Factory.define :county do |f|
126
+ f.sequence(:name){ |n| "Name #{n}" }
127
+ f.state_abbrev 'XX'
128
+ end
129
+
130
+ Factory.define :data_source do |f|
131
+ f.sequence(:key) { |n| "Key#{n}" }
132
+ f.sequence(:description) { |n| "Desc#{n}" }
133
+ end
134
+
135
+ Factory.define :diagnosis do |f|
136
+ f.sequence(:key) { |n| "key#{n}"}
137
+ f.sequence(:code) { |n| n+4 } # 1, 2 and 3 are in the fixtures
138
+ f.sequence(:description) { |n| "Desc#{n}" }
139
+ end
140
+
141
+ Factory.define :document_type do |f|
142
+ f.sequence(:title) { |n| "Title#{n}" }
143
+ end
144
+
145
+ Factory.define :document_version do |f|
146
+ f.sequence(:title) { |n| "Title#{n}" }
147
+ f.association :document_type
148
+ end
149
+
150
+ Factory.define :subjectless_enrollment, :class => 'Enrollment' do |f|
151
+ f.association :project
152
+ end
153
+ Factory.define :enrollment, :parent => :subjectless_enrollment do |f|
154
+ f.association :study_subject
155
+ # f.association :project
156
+ # f.is_eligible 1 #true
157
+ # f.is_chosen 1 #true
158
+ # f.consented 1 #true
159
+ # f.consented_on Date.yesterday
160
+ # f.terminated_participation 2 #false
161
+ # f.is_complete 2 #false
162
+ end
163
+ Factory.define :consented_enrollment, :parent => :enrollment do |f|
164
+ f.consented { YNDK[:yes] } #1 #true
165
+ f.consented_on Date.yesterday
166
+ end
167
+ Factory.define :declined_enrollment, :parent => :enrollment do |f|
168
+ f.consented { YNDK[:no] } # 2
169
+ f.consented_on Date.yesterday
170
+ f.association :refusal_reason
171
+ end
172
+
173
+ Factory.define :follow_up do |f|
174
+ f.association :section
175
+ f.association :enrollment
176
+ f.association :follow_up_type
177
+ end
178
+
179
+ Factory.define :follow_up_type do |f|
180
+ f.sequence(:key) { |n| "Key#{n}" }
181
+ f.sequence(:description) { |n| "Desc#{n}" }
182
+ end
183
+
184
+ Factory.define :gift_card do |f|
185
+ f.sequence(:number){ |n| "#{n}" }
186
+ end
187
+
188
+ # This is no longer used in this gem, but is used in the apps
189
+ Factory.define :guide do |f|
190
+ f.sequence(:controller){ |n| "controller#{n}" }
191
+ f.sequence(:action) { |n| "action#{n}" }
192
+ f.sequence(:body) { |n| "Body #{n}" }
193
+ end
194
+
195
+ Factory.define :home_exposure_response do |f|
196
+ f.association :study_subject
197
+ end
198
+
199
+ Factory.define :homex_outcome do |f|
200
+ # 20111110 - don't know why this was explicitly set
201
+ # They are explicitly set solely for testing OTHER models.
202
+ # interview_outcome_on is required for the InterviewOutcome test
203
+ # sample_outcome_on is required for the SampleOutcome test
204
+ f.sample_outcome_on Date.today
205
+ f.interview_outcome_on Date.today
206
+ end
207
+
208
+ Factory.define :hospital do |f|
209
+ f.association :organization
210
+ end
211
+ Factory.define :waivered_hospital, :parent => :hospital do |f|
212
+ f.has_irb_waiver true
213
+ end
214
+ Factory.define :nonwaivered_hospital, :parent => :hospital do |f|
215
+ f.has_irb_waiver false
216
+ end
217
+
218
+ Factory.define :icf_master_id do |f|
219
+ end
220
+
221
+ Factory.define :icf_master_tracker do |f|
222
+ f.sequence(:Masterid){|n| "#{n}"} # in order to test uniqueness, MUST BE HERE
223
+ end
224
+ Factory.define :icf_master_tracker_change do |f|
225
+ f.sequence(:icf_master_id){|n| "#{n}"}
226
+ end
227
+ Factory.define :icf_master_tracker_update do |f|
228
+ end
229
+
230
+ Factory.define :ineligible_reason do |f|
231
+ f.sequence(:key) { |n| "Key#{n}" }
232
+ f.sequence(:description) { |n| "Desc#{n}" }
233
+ end
234
+
235
+ Factory.define :instrument do |f|
236
+ f.association :project
237
+ f.sequence(:key) { |n| "Key#{n}" }
238
+ f.name 'Instrument Name'
239
+ f.sequence(:description) { |n| "Desc#{n}" }
240
+ end
241
+
242
+ Factory.define :instrument_type do |f|
243
+ f.sequence(:key) { |n| "Key#{n}" }
244
+ f.sequence(:description) { |n| "Desc#{n}" }
245
+ f.association :project
246
+ end
247
+
248
+ Factory.define :instrument_version do |f|
249
+ f.sequence(:key) { |n| "Key#{n}" }
250
+ f.sequence(:description) { |n| "Desc#{n}" }
251
+ f.association :instrument_type
252
+ end
253
+
254
+ Factory.define :interview_method do |f|
255
+ f.sequence(:key) { |n| "Key#{n}" }
256
+ f.sequence(:description) { |n| "Desc#{n}" }
257
+ end
258
+
259
+ Factory.define :interview_outcome do |f|
260
+ f.sequence(:key) { |n| "Key#{n}" }
261
+ f.sequence(:description) { |n| "Desc#{n}" }
262
+ end
263
+
264
+ Factory.define :interview do |f|
265
+ f.association :study_subject
266
+ end
267
+
268
+ Factory.define :live_birth_data_update do |f|
269
+ end
270
+
271
+ Factory.define :language do |f|
272
+ f.sequence(:key) { |n| "Key#{n}" }
273
+ f.sequence(:code) { |n| "Code#{n}" }
274
+ f.sequence(:description) { |n| "Desc#{n}" }
275
+ end
276
+
277
+ Factory.define :operational_event do |f|
278
+ f.association :enrollment, :factory => :subjectless_enrollment
279
+ f.association :operational_event_type
280
+ end
281
+
282
+ Factory.define :operational_event_type do |f|
283
+ f.sequence(:key) { |n| "Key#{n}" }
284
+ f.sequence(:description) { |n| "Desc#{n}" }
285
+ f.sequence(:event_category) { |n| "Cat#{n}" }
286
+ end
287
+
288
+ Factory.define :organization do |f|
289
+ f.sequence(:key) { |n| "Key #{n}" }
290
+ f.sequence(:name) { |n| "Name #{n}" }
291
+ end
292
+
293
+ Factory.define :subjectless_patient, :class => 'Patient' do |f|
294
+ # Today should always be after the dob.
295
+ # However, with all of the date chronology tests, still may cause problems.
296
+ f.admit_date Date.today
297
+
298
+ # in order to test presence or uniqueness, MUST BE HERE
299
+ f.sequence(:hospital_no){|n| "#{n}"}
300
+
301
+ # Doing it this way will actually include organization_id
302
+ # in the Factory.attributes_for(:patient) method.
303
+ # Of course, it requires that there actually be an Organization.
304
+ # f.association :organization
305
+ # f.organization { Organization.first }
306
+ # f.organization_id { Organization.first.id }
307
+
308
+ # f.organization_id { Hospital.first.organization_id } # make this a sequence rather than just first?
309
+ # This sequence seems to work, but lets see if it has any repercusions. May have to modify
310
+ # some other existing tests that may have expected it not to change.
311
+ f.sequence(:organization_id){|n| Hospital.all()[ n % Hospital.count ].organization_id }
312
+
313
+ f.diagnosis_id { Diagnosis['ALL'].id }
314
+ end
315
+ Factory.define :patient, :parent => :subjectless_patient do |f|
316
+ # really don't see the point of a patient w/o a study_subject
317
+ f.association :study_subject, :factory => :case_study_subject
318
+ end
319
+ Factory.define :waivered_patient, :parent => :patient do |f|
320
+ # f.organization_id { Hospital.waivered.first.organization_id } # make this a sequence rather than just first?
321
+ f.sequence(:organization_id){|n| Hospital.waivered()[ n % Hospital.waivered.length ].organization_id }
322
+ end
323
+ Factory.define :nonwaivered_patient, :parent => :patient do |f|
324
+ # f.organization_id { Hospital.nonwaivered.first.organization_id } # make this a sequence rather than just first?
325
+ f.sequence(:organization_id){|n| Hospital.nonwaivered()[ n % Hospital.nonwaivered.length ].organization_id }
326
+ end
327
+
328
+ Factory.define :person do |f|
329
+ # use sequence so will actually update
330
+ f.sequence(:last_name){|n| "LastName#{n}"}
331
+ end
332
+
333
+ Factory.define :phone_number do |f|
334
+ f.association :study_subject
335
+ f.association :phone_type
336
+ f.sequence(:phone_number){|n| sprintf("%010d",n) }
337
+ f.is_valid 1
338
+ f.is_verified false # 2 # 20111110 just noticed that this is boolean and not int for YNDK
339
+ end
340
+
341
+ Factory.define :phone_type do |f|
342
+ f.sequence(:key) { |n| "Key#{n}" }
343
+ f.sequence(:description) { |n| "Desc#{n}" }
344
+ end
345
+
346
+ Factory.define :project_outcome do |f|
347
+ f.sequence(:key) { |n| "Key#{n}" }
348
+ # f.sequence(:code) { |n| "Code#{n}" }
349
+ f.sequence(:description) { |n| "Desc#{n}" }
350
+ end
351
+
352
+ Factory.define :project do |f|
353
+ f.sequence(:key) { |n| "Key#{n}" }
354
+ f.sequence(:description) { |n| "Desc#{n}" }
355
+ end
356
+
357
+ Factory.define :race do |f|
358
+ f.sequence(:key) {|n| "key#{n}"}
359
+ f.sequence(:code) {|n| "Race#{n}"}
360
+ f.sequence(:description){|n| "Desc#{n}"}
361
+ end
362
+
363
+ Factory.define :refusal_reason do |f|
364
+ f.sequence(:key) { |n| "Key#{n}" }
365
+ f.sequence(:description) { |n| "Desc#{n}" }
366
+ end
367
+
368
+ Factory.define :sample_kit do |f|
369
+ f.association :sample
370
+ end
371
+
372
+ Factory.define :sample_outcome do |f|
373
+ f.sequence(:key) { |n| "Key#{n}" }
374
+ f.sequence(:description) { |n| "Desc#{n}" }
375
+ end
376
+
377
+ Factory.define :sample do |f|
378
+ f.association :study_subject
379
+ f.association :project
380
+ f.association :sample_type
381
+ end
382
+
383
+ Factory.define :sample_temperature do |f|
384
+ f.sequence(:key) { |n| "Key#{n}" }
385
+ f.sequence(:description) { |n| "Desc#{n}" }
386
+ end
387
+
388
+ Factory.define :sample_type do |f|
389
+ f.sequence(:key) { |n| "Key#{n}" }
390
+ f.sequence(:description) { |n| "Desc#{n}" }
391
+ f.association :parent, :factory => :sample_type_parent
392
+ end
393
+ Factory.define :sample_type_parent, :parent => :sample_type do |f|
394
+ f.parent nil
395
+ end
396
+
397
+ Factory.define :section do |f|
398
+ f.sequence(:key) { |n| "Key#{n}" }
399
+ f.sequence(:description) { |n| "Desc#{n}" }
400
+ end
401
+
402
+ Factory.define :state do |f|
403
+ f.sequence(:code) { |n| "Code#{n}" }
404
+ f.sequence(:name) { |n| "Name#{n}" }
405
+ # This is just one character so looping through known unused chars.
406
+ # This is potentially a problem causer in testing.
407
+ # fips_state_code is actually 2 chars so could add something
408
+ # 36 squared is pretty big so ....
409
+ f.sequence(:fips_state_code){|n|
410
+ # n += 56 # 56 appears to be the highest code used
411
+ 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'.split('')[n/26] <<
412
+ 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'.split('')[n%26] }
413
+ # '0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ'.split('')[n/36] <<
414
+ # '0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ'.split('')[n%36] }
415
+ f.fips_country_code 'US'
416
+ end
417
+
418
+ Factory.define :study_subject do |f|
419
+ f.association :subject_type
420
+ f.association :vital_status
421
+ f.sex { random_sex }
422
+ f.sequence(:email){|n| "email#{n}@example.com"} # required here only to test uniqueness
423
+ f.dob { random_date } #Date.jd(2440000+rand(15000))
424
+ f.sequence(:case_control_type){|n| '123456789'.split('')[n%9] }
425
+ f.sequence(:state_id_no){|n| "#{n}"}
426
+ f.sequence(:state_registrar_no){|n| "#{n}"}
427
+ f.sequence(:local_registrar_no){|n| "#{n}"}
428
+ f.sequence(:gbid){|n| "#{n}"}
429
+ f.sequence(:accession_no){|n| "#{n}"}
430
+ f.sequence(:lab_no_wiemels){|n| "#{n}"}
431
+ f.sequence(:idno_wiemels){|n| "#{n}"}
432
+ end
433
+ Factory.define :case_study_subject, :parent => :study_subject do |f|
434
+ f.subject_type { SubjectType['Case'] }
435
+ f.case_control_type 'c'
436
+ end
437
+ Factory.define :complete_case_study_subject, :parent => :case_study_subject do |f|
438
+ # wrap in {} so is a proc/lambda and runs at runtime NOT at definition
439
+ # when the fixtures have been loaded and these will work.
440
+ # Only really needed for patient as gets Hospital and Diagnosis.
441
+
442
+ # f.patient { Factory.build(:subjectless_patient) }
443
+ # Either by building subjectless versions(above) or
444
+ # with nested attributes(below). Both seem to work.
445
+ # The model must be set to accept nested attributes for
446
+ # those versions to actually work though.
447
+ # Using the nested attributes makes for easier merging.
448
+ # Actually, this mucks up sequencing. Calling this factory twice results in uniqueness validation failures.
449
+ # If these calls are wrapped in {}, the sequencing is fine. Its all about when its called
450
+ # and the {} delay the execution of the Factory.attributes_for
451
+ f.patient_attributes { Factory.attributes_for(:patient) }
452
+ end
453
+ Factory.define :complete_waivered_case_study_subject, :parent => :complete_case_study_subject do |f|
454
+ f.patient_attributes { Factory.attributes_for(:waivered_patient) }
455
+ end
456
+ Factory.define :complete_nonwaivered_case_study_subject, :parent => :complete_case_study_subject do |f|
457
+ f.patient_attributes { Factory.attributes_for(:nonwaivered_patient) }
458
+ end
459
+ Factory.define :control_study_subject, :parent => :study_subject do |f|
460
+ f.subject_type { SubjectType['Control'] }
461
+ end
462
+ Factory.define :complete_control_study_subject, :parent => :control_study_subject do |f|
463
+ end
464
+ Factory.define :mother_study_subject, :parent => :study_subject do |f|
465
+ f.subject_type { SubjectType['Mother'] }
466
+ f.sex 'F'
467
+ f.case_control_type 'm'
468
+ end
469
+ Factory.define :complete_mother_study_subject, :parent => :mother_study_subject do |f|
470
+ end
471
+
472
+
473
+ Factory.define :subject_language do |f|
474
+ f.association :study_subject
475
+ f.association :language
476
+ end
477
+
478
+ Factory.define :subject_race do |f|
479
+ f.association :study_subject
480
+ f.association :race
481
+ end
482
+
483
+ Factory.define :subject_relationship do |f|
484
+ f.sequence(:key) { |n| "Key#{n}" }
485
+ f.sequence(:description) { |n| "Desc#{n}" }
486
+ end
487
+
488
+ Factory.define :subject_type do |f|
489
+ f.sequence(:key) { |n| "Key#{n}" }
490
+ f.sequence(:description) { |n| "Desc#{n}" }
491
+ end
492
+
493
+ Factory.define :tracing_status do |f|
494
+ f.sequence(:key) { |n| "Key#{n}" }
495
+ f.sequence(:description) { |n| "Desc#{n}" }
496
+ end
497
+
498
+ Factory.define :transfer do |f|
499
+ f.association :from_organization, :factory => :organization
500
+ f.association :to_organization, :factory => :organization
501
+ f.association :aliquot
502
+ end
503
+
504
+ Factory.define :unit do |f|
505
+ f.sequence(:key) { |n| "Key#{n}" }
506
+ f.sequence(:description) { |n| "Desc#{n}" }
507
+ end
508
+
509
+ Factory.define :vital_status do |f|
510
+ f.sequence(:key) { |n| "key#{n}" }
511
+ # f.sequence(:code) { |n| n+3 } # 3 in fixtures
512
+ f.sequence(:description) { |n| "Desc#{n}" }
513
+ end
514
+
515
+ Factory.define :zip_code do |f|
516
+ f.sequence(:zip_code){ |n| sprintf("X%04d",n) }
517
+ # f.latitude { random_float() }
518
+ # f.longitude { random_float() }
519
+ f.sequence(:city){ |n| sprintf("%05d",n) }
520
+ f.sequence(:state){ |n| sprintf("%05d",n) }
521
+ # f.sequence(:county){ |n| sprintf("%05d",n) }
522
+ f.zip_class "TESTING"
523
+ end
524
+
525
+
526
+ #
527
+ # Intended for communication with SRC,
528
+ # but that doesn't look like it'll be happening now.
529
+ #
530
+ Factory.define :import do |f|
531
+ end
532
+ Factory.define :export do |f|
533
+ f.sequence(:childid) { |n| "childid#{n}" }
534
+ f.sequence(:patid) { |n| "patid#{n}" }
535
+ end
536
+
537
+
538
+
539
+ Factory.define :abstract do |f|
540
+ f.updated_at Time.now # to make it dirty
541
+ end
542
+ Factory.define :complete_abstract, :class => 'Abstract' do |f|
543
+ # f.sequence(:subject_id){|n| n }
544
+ f.response_day14or28_flag { random_yndk() }
545
+ f.received_bone_marrow_biopsy { random_yndk() }
546
+ f.received_h_and_p { random_yndk() }
547
+ f.received_other_reports { random_yndk() }
548
+ f.received_discharge_summary { random_yndk() }
549
+ f.received_chemo_protocol { random_yndk() }
550
+ f.received_resp_to_therapy { random_yndk() }
551
+ f.sequence(:received_specify_other_reports){|n| "#{n}"}
552
+ f.received_bone_marrow_aspirate { random_yndk() }
553
+ f.received_flow_cytometry { random_yndk() }
554
+ f.received_ploidy { random_yndk() }
555
+ f.received_hla_typing { random_yndk() }
556
+ f.received_cytogenetics { random_yndk() }
557
+ f.received_cbc { random_yndk() }
558
+ f.received_csf { random_yndk() }
559
+ f.received_chest_xray { random_yndk() }
560
+ f.response_report_found_day_14 { random_yndk() }
561
+ f.response_report_found_day_28 { random_yndk() }
562
+ f.response_report_found_day_7 { random_yndk() }
563
+ f.response_report_on_day_14 { random_date() }
564
+ f.response_report_on_day_28 { random_date() }
565
+ f.response_report_on_day_7 { random_date() }
566
+ f.sequence(:response_classification_day_14){|n| "#{n}"}
567
+ f.sequence(:response_classification_day_28){|n| "#{n}"}
568
+ f.sequence(:response_classification_day_7){|n| "#{n}"}
569
+ f.sequence(:response_blasts_day_14){|n| n }
570
+ f.sequence(:response_blasts_day_28){|n| n }
571
+ f.sequence(:response_blasts_day_7){|n| n }
572
+ f.sequence(:response_blasts_units_day_14){|n| "#{n}"}
573
+ f.sequence(:response_blasts_units_day_28){|n| "#{n}"}
574
+ f.sequence(:response_blasts_units_day_7){|n| "#{n}"}
575
+ f.sequence(:response_in_remission_day_14){|n| n }
576
+ f.marrow_biopsy_report_found { random_yndk() }
577
+ f.marrow_biopsy_on { random_date() }
578
+ f.sequence(:marrow_biopsy_diagnosis){|n| "#{n}"}
579
+ f.marrow_aspirate_report_found { random_yndk() }
580
+ f.marrow_aspirate_taken_on { random_date() }
581
+ f.sequence(:marrow_aspirate_diagnosis){|n| "#{n}"}
582
+ f.sequence(:response_marrow_kappa_day_14){|n| n }
583
+ f.sequence(:response_marrow_kappa_day_7){|n| n }
584
+ f.sequence(:response_marrow_lambda_day_14){|n| n }
585
+ f.sequence(:response_marrow_lambda_day_7){|n| n }
586
+ f.cbc_report_found { random_yndk() }
587
+ f.cbc_report_on { random_date() }
588
+ f.cbc_white_blood_count { rand*1000 }
589
+ f.sequence(:cbc_percent_blasts){|n| n }
590
+ f.cbc_percent_blasts_unknown { random_true_or_false() }
591
+ f.sequence(:cbc_number_blasts){|n| n }
592
+ f.cbc_hemoglobin_level { rand*1000 }
593
+ f.sequence(:cbc_platelet_count){|n| n }
594
+ f.cerebrospinal_fluid_report_found { random_yndk() }
595
+ f.csf_report_on { random_date() }
596
+ f.sequence(:csf_white_blood_count){|n| n }
597
+ f.sequence(:csf_white_blood_count_text){|n| "#{n}"}
598
+ f.sequence(:csf_red_blood_count){|n| n }
599
+ f.sequence(:csf_red_blood_count_text){|n| "#{n}"}
600
+ f.sequence(:blasts_are_present){|n| "#{n}"}
601
+ f.sequence(:number_of_blasts){|n| n }
602
+ f.sequence(:peripheral_blood_in_csf){|n| "#{n}"}
603
+ f.sequence(:csf_comment){|n| "#{n}"}
604
+ f.chemo_protocol_report_found { random_yndk() }
605
+ f.patient_on_chemo_protocol { random_yndk() }
606
+ f.sequence(:chemo_protocol_name){|n| "#{n}"}
607
+ f.sequence(:chemo_protocol_agent_description){|n| "#{n}"}
608
+ f.sequence(:response_cd10_day_14){|n| "#{n}"}
609
+ f.sequence(:response_cd10_day_7){|n| "#{n}"}
610
+ f.sequence(:response_cd13_day_14){|n| "#{n}"}
611
+ f.sequence(:response_cd13_day_7){|n| "#{n}"}
612
+ f.sequence(:response_cd14_day_14){|n| "#{n}"}
613
+ f.sequence(:response_cd14_day_7){|n| "#{n}"}
614
+ f.sequence(:response_cd15_day_14){|n| "#{n}"}
615
+ f.sequence(:response_cd15_day_7){|n| "#{n}"}
616
+ f.sequence(:response_cd19_day_14){|n| "#{n}"}
617
+ f.sequence(:response_cd19_day_7){|n| "#{n}"}
618
+ f.sequence(:response_cd19cd10_day_14){|n| "#{n}"}
619
+ f.sequence(:response_cd19cd10_day_7){|n| "#{n}"}
620
+ f.sequence(:response_cd1a_day_14){|n| "#{n}"}
621
+ f.sequence(:response_cd2a_day_14){|n| "#{n}"}
622
+ f.sequence(:response_cd20_day_14){|n| "#{n}"}
623
+ f.sequence(:response_cd20_day_7){|n| "#{n}"}
624
+ f.sequence(:response_cd3a_day_14){|n| "#{n}"}
625
+ f.sequence(:response_cd3_day_7){|n| "#{n}"}
626
+ f.sequence(:response_cd33_day_14){|n| "#{n}"}
627
+ f.sequence(:response_cd33_day_7){|n| "#{n}"}
628
+ f.sequence(:response_cd34_day_14){|n| "#{n}"}
629
+ f.sequence(:response_cd34_day_7){|n| "#{n}"}
630
+ f.sequence(:response_cd4a_day_14){|n| "#{n}"}
631
+ f.sequence(:response_cd5a_day_14){|n| "#{n}"}
632
+ f.sequence(:response_cd56_day_14){|n| "#{n}"}
633
+ f.sequence(:response_cd61_day_14){|n| "#{n}"}
634
+ f.sequence(:response_cd7a_day_14){|n| "#{n}"}
635
+ f.sequence(:response_cd8a_day_14){|n| "#{n}"}
636
+ f.response_day30_is_in_remission { random_yndk() }
637
+ f.chest_imaging_report_found { random_yndk() }
638
+ f.chest_imaging_report_on { random_date() }
639
+ f.mediastinal_mass_present { random_yndk() }
640
+ f.sequence(:chest_imaging_comment){|n| "#{n}"}
641
+ f.received_chest_ct { random_yndk() }
642
+ f.chest_ct_taken_on { random_date() }
643
+ f.chest_ct_medmass_present { random_yndk() }
644
+ # f.sequence(:user_id){|n| n }
645
+ f.cytogen_trisomy10 { random_yndk() }
646
+ f.cytogen_trisomy17 { random_yndk() }
647
+ f.cytogen_trisomy21 { random_yndk() }
648
+ f.is_down_syndrome_phenotype { random_yndk() }
649
+ f.cytogen_trisomy4 { random_yndk() }
650
+ f.cytogen_trisomy5 { random_yndk() }
651
+ f.cytogen_report_found { random_yndk() }
652
+ f.cytogen_report_on { random_date() }
653
+ f.sequence(:conventional_karyotype_results){|n| "#{n}"}
654
+ f.sequence(:normal_cytogen){|n| "#{n}"}
655
+ f.sequence(:is_cytogen_hosp_fish_t1221_done){|n| "#{n}"}
656
+ f.sequence(:is_karyotype_normal){|n| "#{n}"}
657
+ f.sequence(:number_normal_metaphase_karyotype){|n| n }
658
+ f.sequence(:number_metaphase_tested_karyotype){|n| n }
659
+ f.sequence(:cytogen_comment){|n| "#{n}"}
660
+ f.is_verification_complete { random_true_or_false } #[true,false][rand(2)]
661
+ f.sequence(:discharge_summary){|n| "#{n}"}
662
+ f.diagnosis_is_b_all { random_yndk() }
663
+ f.diagnosis_is_t_all { random_yndk() }
664
+ f.diagnosis_is_all { random_yndk() }
665
+ f.sequence(:diagnosis_all_type_id){|n| n}
666
+ f.diagnosis_is_cml { random_yndk() }
667
+ f.diagnosis_is_cll { random_yndk() }
668
+ f.diagnosis_is_aml { random_yndk() }
669
+ f.sequence(:diagnosis_aml_type_id){|n| n}
670
+ f.diagnosis_is_other { random_yndk() }
671
+ f.flow_cyto_report_found { random_yndk() }
672
+ f.sequence(:received_flow_cyto_day_14){|n| n }
673
+ f.sequence(:received_flow_cyto_day_7){|n| n }
674
+ f.flow_cyto_report_on { random_date() }
675
+ f.response_flow_cyto_day_14_on { random_date() }
676
+ f.response_flow_cyto_day_7_on { random_date() }
677
+ f.sequence(:flow_cyto_cd10){|n| "#{n}"}
678
+ f.sequence(:flow_cyto_igm){|n| "#{n}"}
679
+ f.sequence(:flow_cyto_igm_text){|n| "#{n}"}
680
+ f.sequence(:flow_cyto_bm_kappa){|n| "#{n}"}
681
+ f.sequence(:flow_cyto_bm_kappa_text){|n| "#{n}"}
682
+ f.sequence(:flow_cyto_bm_lambda){|n| "#{n}"}
683
+ f.sequence(:flow_cyto_bm_lambda_text){|n| "#{n}"}
684
+ f.sequence(:flow_cyto_cd10_19){|n| "#{n}"}
685
+ f.sequence(:flow_cyto_cd10_19_text){|n| "#{n}"}
686
+ f.sequence(:flow_cyto_cd10_text){|n| "#{n}"}
687
+ f.sequence(:flow_cyto_cd19){|n| "#{n}"}
688
+ f.sequence(:flow_cyto_cd19_text){|n| "#{n}"}
689
+ f.sequence(:flow_cyto_cd20){|n| "#{n}"}
690
+ f.sequence(:flow_cyto_cd20_text){|n| "#{n}"}
691
+ f.sequence(:flow_cyto_cd21){|n| "#{n}"}
692
+ f.sequence(:flow_cyto_cd21_text){|n| "#{n}"}
693
+ f.sequence(:flow_cyto_cd22){|n| "#{n}"}
694
+ f.sequence(:flow_cyto_cd22_text){|n| "#{n}"}
695
+ f.sequence(:flow_cyto_cd23){|n| "#{n}"}
696
+ f.sequence(:flow_cyto_cd23_text){|n| "#{n}"}
697
+ f.sequence(:flow_cyto_cd24){|n| "#{n}"}
698
+ f.sequence(:flow_cyto_cd24_text){|n| "#{n}"}
699
+ f.sequence(:flow_cyto_cd40){|n| "#{n}"}
700
+ f.sequence(:flow_cyto_cd40_text){|n| "#{n}"}
701
+ f.sequence(:flow_cyto_surface_ig){|n| "#{n}"}
702
+ f.sequence(:flow_cyto_surface_ig_text){|n| "#{n}"}
703
+ f.sequence(:flow_cyto_cd1a){|n| "#{n}"}
704
+ f.sequence(:flow_cyto_cd1a_text){|n| "#{n}"}
705
+ f.sequence(:flow_cyto_cd2){|n| "#{n}"}
706
+ f.sequence(:flow_cyto_cd2_text){|n| "#{n}"}
707
+ f.sequence(:flow_cyto_cd3){|n| "#{n}"}
708
+ f.sequence(:flow_cyto_cd3_text){|n| "#{n}"}
709
+ f.sequence(:flow_cyto_cd4){|n| "#{n}"}
710
+ f.sequence(:flow_cyto_cd4_text){|n| "#{n}"}
711
+ f.sequence(:flow_cyto_cd5){|n| "#{n}"}
712
+ f.sequence(:flow_cyto_cd5_text){|n| "#{n}"}
713
+ f.sequence(:flow_cyto_cd7){|n| "#{n}"}
714
+ f.sequence(:flow_cyto_cd7_text){|n| "#{n}"}
715
+ f.sequence(:flow_cyto_cd8){|n| "#{n}"}
716
+ f.sequence(:flow_cyto_cd8_text){|n| "#{n}"}
717
+ f.sequence(:flow_cyto_cd3_cd4){|n| "#{n}"}
718
+ f.sequence(:flow_cyto_cd3_cd4_text){|n| "#{n}"}
719
+ f.sequence(:flow_cyto_cd3_cd8){|n| "#{n}"}
720
+ f.sequence(:flow_cyto_cd3_cd8_text){|n| "#{n}"}
721
+ f.sequence(:flow_cyto_cd11b){|n| "#{n}"}
722
+ f.sequence(:flow_cyto_cd11b_text){|n| "#{n}"}
723
+ f.sequence(:flow_cyto_cd11c){|n| "#{n}"}
724
+ f.sequence(:flow_cyto_cd11c_text){|n| "#{n}"}
725
+ f.sequence(:flow_cyto_cd13){|n| "#{n}"}
726
+ f.sequence(:flow_cyto_cd13_text){|n| "#{n}"}
727
+ f.sequence(:flow_cyto_cd15){|n| "#{n}"}
728
+ f.sequence(:flow_cyto_cd15_text){|n| "#{n}"}
729
+ f.sequence(:flow_cyto_cd33){|n| "#{n}"}
730
+ f.sequence(:flow_cyto_cd33_text){|n| "#{n}"}
731
+ f.sequence(:flow_cyto_cd41){|n| "#{n}"}
732
+ f.sequence(:flow_cyto_cd41_text){|n| "#{n}"}
733
+ f.sequence(:flow_cyto_cdw65){|n| "#{n}"}
734
+ f.sequence(:flow_cyto_cdw65_text){|n| "#{n}"}
735
+ f.sequence(:flow_cyto_cd34){|n| "#{n}"}
736
+ f.sequence(:flow_cyto_cd34_text){|n| "#{n}"}
737
+ f.sequence(:flow_cyto_cd61){|n| "#{n}"}
738
+ f.sequence(:flow_cyto_cd61_text){|n| "#{n}"}
739
+ f.sequence(:flow_cyto_cd14){|n| "#{n}"}
740
+ f.sequence(:flow_cyto_cd14_text){|n| "#{n}"}
741
+ f.sequence(:flow_cyto_glycoa){|n| "#{n}"}
742
+ f.sequence(:flow_cyto_glycoa_text){|n| "#{n}"}
743
+ f.sequence(:flow_cyto_cd16){|n| "#{n}"}
744
+ f.sequence(:flow_cyto_cd16_text){|n| "#{n}"}
745
+ f.sequence(:flow_cyto_cd56){|n| "#{n}"}
746
+ f.sequence(:flow_cyto_cd56_text){|n| "#{n}"}
747
+ f.sequence(:flow_cyto_cd57){|n| "#{n}"}
748
+ f.sequence(:flow_cyto_cd57_text){|n| "#{n}"}
749
+ f.sequence(:flow_cyto_cd9){|n| "#{n}"}
750
+ f.sequence(:flow_cyto_cd9_text){|n| "#{n}"}
751
+ f.sequence(:flow_cyto_cd25){|n| "#{n}"}
752
+ f.sequence(:flow_cyto_cd25_text){|n| "#{n}"}
753
+ f.sequence(:flow_cyto_cd38){|n| "#{n}"}
754
+ f.sequence(:flow_cyto_cd38_text){|n| "#{n}"}
755
+ f.sequence(:flow_cyto_cd45){|n| "#{n}"}
756
+ f.sequence(:flow_cyto_cd45_text){|n| "#{n}"}
757
+ f.sequence(:flow_cyto_cd71){|n| "#{n}"}
758
+ f.sequence(:flow_cyto_cd71_text){|n| "#{n}"}
759
+ f.sequence(:flow_cyto_tdt){|n| "#{n}"}
760
+ f.sequence(:flow_cyto_tdt_text){|n| "#{n}"}
761
+ f.sequence(:flow_cyto_hladr){|n| "#{n}"}
762
+ f.sequence(:flow_cyto_hladr_text){|n| "#{n}"}
763
+ f.sequence(:flow_cyto_other_marker_1_name){|n| "#{n}"}
764
+ f.sequence(:flow_cyto_other_marker_1){|n| "#{n}"}
765
+ f.sequence(:flow_cyto_other_marker_1_text){|n| "#{n}"}
766
+ f.sequence(:flow_cyto_other_marker_2_name){|n| "#{n}"}
767
+ f.sequence(:flow_cyto_other_marker_2){|n| "#{n}"}
768
+ f.sequence(:flow_cyto_other_marker_2_text){|n| "#{n}"}
769
+ f.sequence(:flow_cyto_other_marker_3_name){|n| "#{n}"}
770
+ f.sequence(:flow_cyto_other_marker_3){|n| "#{n}"}
771
+ f.sequence(:flow_cyto_other_marker_3_text){|n| "#{n}"}
772
+ f.sequence(:flow_cyto_other_marker_4_name){|n| "#{n}"}
773
+ f.sequence(:flow_cyto_other_marker_4){|n| "#{n}"}
774
+ f.sequence(:flow_cyto_other_marker_4_text){|n| "#{n}"}
775
+ f.sequence(:flow_cyto_other_marker_5_name){|n| "#{n}"}
776
+ f.sequence(:flow_cyto_other_marker_5){|n| "#{n}"}
777
+ f.sequence(:flow_cyto_other_marker_5_text){|n| "#{n}"}
778
+ f.sequence(:flow_cyto_remarks){|n| "#{n}"}
779
+ f.tdt_often_found_flow_cytometry { random_yndk() }
780
+ f.tdt_report_found { random_yndk() }
781
+ f.tdt_report_on { random_date() }
782
+ f.tdt_positive_or_negative { random_pos_neg() }
783
+ f.sequence(:tdt_numerical_result){|n| n }
784
+ f.tdt_found_in_flow_cyto_chart { random_true_or_false } #[true,false][rand(2)]
785
+ f.tdt_found_in_separate_report { random_true_or_false } #[true,false][rand(2)]
786
+ f.sequence(:response_comment_day_7){|n| "#{n}"}
787
+ f.sequence(:response_comment_day_14){|n| "#{n}"}
788
+ f.cytogen_karyotype_done { random_yndk() }
789
+ f.cytogen_hospital_fish_done { random_yndk() }
790
+ f.sequence(:hospital_fish_results){|n| "#{n}"}
791
+ f.cytogen_ucb_fish_done { random_yndk() }
792
+ f.sequence(:ucb_fish_results){|n| "#{n}"}
793
+ f.sequence(:response_hladr_day_14){|n| "#{n}"}
794
+ f.sequence(:response_hladr_day_7){|n| "#{n}"}
795
+ f.histo_report_found { random_yndk() }
796
+ f.histo_report_on { random_date() }
797
+ f.sequence(:histo_report_results){|n| "#{n}"}
798
+ f.diagnosed_on { random_date() }
799
+ f.treatment_began_on { random_date() }
800
+ f.response_is_inconclusive_day_14 { random_yndk() }
801
+ f.response_is_inconclusive_day_21 { random_yndk() }
802
+ f.response_is_inconclusive_day_28 { random_yndk() }
803
+ f.response_is_inconclusive_day_7 { random_yndk() }
804
+ f.sequence(:abstractor_id){|n| n }
805
+ f.abstracted_on { random_date() }
806
+ f.sequence(:reviewer_id){|n| n }
807
+ f.reviewed_on { random_date() }
808
+ f.data_entry_done_on { random_date() }
809
+ # f.sequence(:abstract_version_number){|n| n }
810
+ f.flow_cyto_num_results_available { random_yndk() }
811
+ f.sequence(:response_other1_value_day_14){|n| "#{n}"}
812
+ f.sequence(:response_other1_value_day_7){|n| "#{n}"}
813
+ f.sequence(:response_other2_value_day_14){|n| "#{n}"}
814
+ f.sequence(:response_other2_value_day_7){|n| "#{n}"}
815
+ f.sequence(:response_other3_value_day_14){|n| "#{n}"}
816
+ f.sequence(:response_other4_value_day_14){|n| "#{n}"}
817
+ f.sequence(:response_other5_value_day_14){|n| "#{n}"}
818
+ f.h_and_p_reports_found { random_yndk() }
819
+ f.is_h_and_p_report_found { random_true_or_false } #[true,false][rand(2)]
820
+ f.h_and_p_reports_on { random_date() }
821
+ f.sequence(:physical_neuro){|n| "#{n}"}
822
+ f.sequence(:physical_other_soft_2){|n| "#{n}"}
823
+ f.sequence(:vital_status_id){|n| n }
824
+ f.dod { random_date() }
825
+ f.discharge_summary_found { random_yndk() }
826
+ f.sequence(:physical_gingival){|n| "#{n}"}
827
+ f.sequence(:physical_leukemic_skin){|n| "#{n}"}
828
+ f.sequence(:physical_lymph){|n| "#{n}"}
829
+ f.sequence(:physical_spleen){|n| "#{n}"}
830
+ f.sequence(:physical_testicle){|n| "#{n}"}
831
+ f.sequence(:physical_other_soft){|n| "#{n}"}
832
+ f.ploidy_report_found { random_yndk() }
833
+ f.ploidy_report_on { random_date() }
834
+ f.sequence(:is_hypodiploid){|n| "#{n}"}
835
+ f.sequence(:is_hyperdiploid){|n| "#{n}"}
836
+ f.sequence(:is_diploid){|n| "#{n}"}
837
+ f.sequence(:dna_index){|n| "#{n}"}
838
+ f.sequence(:other_dna_measure){|n| "#{n}"}
839
+ f.sequence(:ploidy_comment){|n| "#{n}"}
840
+ # f.sequence(:hepatomegaly_present){|n| n }
841
+ f.hepatomegaly_present{ random_yndk() }
842
+ # f.sequence(:splenomegaly_present){|n| n }
843
+ f.splenomegaly_present{ random_yndk() }
844
+ f.sequence(:response_comment){|n| "#{n}"}
845
+ f.sequence(:response_other1_name_day_14){|n| "#{n}"}
846
+ f.sequence(:response_other1_name_day_7){|n| "#{n}"}
847
+ f.sequence(:response_other2_name_day_14){|n| "#{n}"}
848
+ f.sequence(:response_other2_name_day_7){|n| "#{n}"}
849
+ f.sequence(:response_other3_name_day_14){|n| "#{n}"}
850
+ f.sequence(:response_other4_name_day_14){|n| "#{n}"}
851
+ f.sequence(:response_other5_name_day_14){|n| "#{n}"}
852
+ f.sequence(:fab_classification){|n| "#{n}"}
853
+ f.sequence(:diagnosis_icdo_description){|n| "#{n}"}
854
+ f.sequence(:diagnosis_icdo_number){|n| "#{n}"}
855
+ f.sequence(:cytogen_t1221){|n| "#{n}"}
856
+ f.sequence(:cytogen_inv16){|n| "#{n}"}
857
+ f.sequence(:cytogen_t119){|n| "#{n}"}
858
+ f.sequence(:cytogen_t821){|n| "#{n}"}
859
+ f.sequence(:cytogen_t1517){|n| "#{n}"}
860
+ f.sequence(:cytogen_is_hyperdiploidy){|n| "#{n}"}
861
+ f.sequence(:cytogen_chromosome_number){|n| "#{n}"}
862
+ f.sequence(:cytogen_t922){|n| "#{n}"}
863
+ f.sequence(:cytogen_other_trans_1){|n| "#{n}"}
864
+ f.sequence(:cytogen_other_trans_2){|n| "#{n}"}
865
+ f.sequence(:cytogen_other_trans_3){|n| "#{n}"}
866
+ f.sequence(:cytogen_other_trans_4){|n| "#{n}"}
867
+ f.sequence(:cytogen_other_trans_5){|n| "#{n}"}
868
+ f.sequence(:cytogen_other_trans_6){|n| "#{n}"}
869
+ f.sequence(:cytogen_other_trans_7){|n| "#{n}"}
870
+ f.sequence(:cytogen_other_trans_8){|n| "#{n}"}
871
+ f.sequence(:cytogen_other_trans_9){|n| "#{n}"}
872
+ f.sequence(:cytogen_other_trans_10){|n| "#{n}"}
873
+ f.sequence(:response_fab_subtype){|n| "#{n}"}
874
+ f.sequence(:response_tdt_day_14){|n| "#{n}"}
875
+ f.sequence(:response_tdt_day_7){|n| "#{n}"}
876
+ # f.sequence(:abstract_version_description){|n| "#{n}"}
877
+ f.sequence(:abstract_version_id){|n| n }
878
+ f.height_at_diagnosis { random_float() }
879
+ f.weight_at_diagnosis { random_float() }
880
+ end