ccls-ccls_engine 3.11.0

Sign up to get free protection for your applications and to get access to all the features.
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