ncs_mdes_warehouse 0.5.0 → 0.6.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (708) hide show
  1. data/.rvmrc +1 -1
  2. data/.yardopts +0 -1
  3. data/CHANGELOG.md +26 -0
  4. data/Rakefile +1 -1
  5. data/generated_models/ncs_navigator/warehouse/models/two_point_one.rb +563 -0
  6. data/generated_models/ncs_navigator/warehouse/models/two_point_one/address.rb +101 -0
  7. data/generated_models/ncs_navigator/warehouse/models/two_point_one/birth_visit.rb +365 -0
  8. data/generated_models/ncs_navigator/warehouse/models/two_point_one/birth_visit_2.rb +359 -0
  9. data/generated_models/ncs_navigator/warehouse/models/two_point_one/birth_visit_baby_name.rb +47 -0
  10. data/generated_models/ncs_navigator/warehouse/models/two_point_one/birth_visit_baby_name_2.rb +47 -0
  11. data/generated_models/ncs_navigator/warehouse/models/two_point_one/birth_visit_decorate_room.rb +29 -0
  12. data/generated_models/ncs_navigator/warehouse/models/two_point_one/birth_visit_decorate_room_2.rb +32 -0
  13. data/generated_models/ncs_navigator/warehouse/models/two_point_one/birth_visit_li.rb +374 -0
  14. data/generated_models/ncs_navigator/warehouse/models/two_point_one/birth_visit_li_baby_name.rb +47 -0
  15. data/generated_models/ncs_navigator/warehouse/models/two_point_one/birth_visit_li_decorate_room.rb +32 -0
  16. data/generated_models/ncs_navigator/warehouse/models/two_point_one/birth_visit_li_renovate_room.rb +32 -0
  17. data/generated_models/ncs_navigator/warehouse/models/two_point_one/birth_visit_renovate_room.rb +29 -0
  18. data/generated_models/ncs_navigator/warehouse/models/two_point_one/birth_visit_renovate_room_2.rb +32 -0
  19. data/generated_models/ncs_navigator/warehouse/models/two_point_one/contact.rb +77 -0
  20. data/generated_models/ncs_navigator/warehouse/models/two_point_one/drf_therm_verification.rb +50 -0
  21. data/generated_models/ncs_navigator/warehouse/models/two_point_one/dwelling_unit.rb +53 -0
  22. data/generated_models/ncs_navigator/warehouse/models/two_point_one/eighteen_mth_mother.rb +347 -0
  23. data/generated_models/ncs_navigator/warehouse/models/two_point_one/eighteen_mth_mother_cond.rb +29 -0
  24. data/generated_models/ncs_navigator/warehouse/models/two_point_one/eighteen_mth_mother_detail.rb +50 -0
  25. data/generated_models/ncs_navigator/warehouse/models/two_point_one/eighteen_mth_mother_habits.rb +164 -0
  26. data/generated_models/ncs_navigator/warehouse/models/two_point_one/eighteen_mth_mother_lice.rb +29 -0
  27. data/generated_models/ncs_navigator/warehouse/models/two_point_one/eighteen_mth_mother_mold.rb +32 -0
  28. data/generated_models/ncs_navigator/warehouse/models/two_point_one/eighteen_mth_mother_otc.rb +47 -0
  29. data/generated_models/ncs_navigator/warehouse/models/two_point_one/eighteen_mth_mother_pet_type.rb +32 -0
  30. data/generated_models/ncs_navigator/warehouse/models/two_point_one/eighteen_mth_mother_prescr.rb +47 -0
  31. data/generated_models/ncs_navigator/warehouse/models/two_point_one/eighteen_mth_mother_renovate_room.rb +32 -0
  32. data/generated_models/ncs_navigator/warehouse/models/two_point_one/eighteen_mth_mother_room_mold.rb +32 -0
  33. data/generated_models/ncs_navigator/warehouse/models/two_point_one/eighteen_mth_mother_saq.rb +257 -0
  34. data/generated_models/ncs_navigator/warehouse/models/two_point_one/eighteen_mth_mother_suppl.rb +47 -0
  35. data/generated_models/ncs_navigator/warehouse/models/two_point_one/email.rb +74 -0
  36. data/generated_models/ncs_navigator/warehouse/models/two_point_one/env_equipment.rb +47 -0
  37. data/generated_models/ncs_navigator/warehouse/models/two_point_one/env_equipment_prob_log.rb +50 -0
  38. data/generated_models/ncs_navigator/warehouse/models/two_point_one/event.rb +68 -0
  39. data/generated_models/ncs_navigator/warehouse/models/two_point_one/father_pv1.rb +374 -0
  40. data/generated_models/ncs_navigator/warehouse/models/two_point_one/father_pv1_2.rb +380 -0
  41. data/generated_models/ncs_navigator/warehouse/models/two_point_one/father_pv1_cancer.rb +29 -0
  42. data/generated_models/ncs_navigator/warehouse/models/two_point_one/father_pv1_cancer_2.rb +29 -0
  43. data/generated_models/ncs_navigator/warehouse/models/two_point_one/father_pv1_educ.rb +29 -0
  44. data/generated_models/ncs_navigator/warehouse/models/two_point_one/father_pv1_race.rb +29 -0
  45. data/generated_models/ncs_navigator/warehouse/models/two_point_one/father_pv1_race_2.rb +32 -0
  46. data/generated_models/ncs_navigator/warehouse/models/two_point_one/household_enumeration.rb +239 -0
  47. data/generated_models/ncs_navigator/warehouse/models/two_point_one/household_enumeration_age_elig.rb +38 -0
  48. data/generated_models/ncs_navigator/warehouse/models/two_point_one/household_enumeration_hidden_du.rb +50 -0
  49. data/generated_models/ncs_navigator/warehouse/models/two_point_one/household_enumeration_pregnant.rb +38 -0
  50. data/generated_models/ncs_navigator/warehouse/models/two_point_one/household_inventory.rb +203 -0
  51. data/generated_models/ncs_navigator/warehouse/models/two_point_one/household_inventory_age.rb +35 -0
  52. data/generated_models/ncs_navigator/warehouse/models/two_point_one/household_inventory_age_elig.rb +35 -0
  53. data/generated_models/ncs_navigator/warehouse/models/two_point_one/household_unit.rb +53 -0
  54. data/generated_models/ncs_navigator/warehouse/models/two_point_one/incident.rb +98 -0
  55. data/generated_models/ncs_navigator/warehouse/models/two_point_one/incident_media.rb +35 -0
  56. data/generated_models/ncs_navigator/warehouse/models/two_point_one/incident_unanticipated.rb +29 -0
  57. data/generated_models/ncs_navigator/warehouse/models/two_point_one/institution.rb +68 -0
  58. data/generated_models/ncs_navigator/warehouse/models/two_point_one/instrument.rb +74 -0
  59. data/generated_models/ncs_navigator/warehouse/models/two_point_one/internet_usage.rb +92 -0
  60. data/generated_models/ncs_navigator/warehouse/models/two_point_one/internet_usage_participate.rb +29 -0
  61. data/generated_models/ncs_navigator/warehouse/models/two_point_one/link_contact.rb +41 -0
  62. data/generated_models/ncs_navigator/warehouse/models/two_point_one/link_household_dwelling.rb +38 -0
  63. data/generated_models/ncs_navigator/warehouse/models/two_point_one/link_person_household.rb +38 -0
  64. data/generated_models/ncs_navigator/warehouse/models/two_point_one/link_person_institute.rb +32 -0
  65. data/generated_models/ncs_navigator/warehouse/models/two_point_one/link_person_participant.rb +38 -0
  66. data/generated_models/ncs_navigator/warehouse/models/two_point_one/link_person_provider.rb +38 -0
  67. data/generated_models/ncs_navigator/warehouse/models/two_point_one/listing_unit.rb +38 -0
  68. data/generated_models/ncs_navigator/warehouse/models/two_point_one/low_high_script.rb +119 -0
  69. data/generated_models/ncs_navigator/warehouse/models/two_point_one/nine_mth_mother.rb +62 -0
  70. data/generated_models/ncs_navigator/warehouse/models/two_point_one/nine_mth_mother_detail.rb +143 -0
  71. data/generated_models/ncs_navigator/warehouse/models/two_point_one/non_interview_rpt.rb +128 -0
  72. data/generated_models/ncs_navigator/warehouse/models/two_point_one/non_interview_rpt_dutype.rb +32 -0
  73. data/generated_models/ncs_navigator/warehouse/models/two_point_one/non_interview_rpt_noaccess.rb +32 -0
  74. data/generated_models/ncs_navigator/warehouse/models/two_point_one/non_interview_rpt_refusal.rb +32 -0
  75. data/generated_models/ncs_navigator/warehouse/models/two_point_one/non_interview_rpt_vacant.rb +32 -0
  76. data/generated_models/ncs_navigator/warehouse/models/two_point_one/outreach.rb +98 -0
  77. data/generated_models/ncs_navigator/warehouse/models/two_point_one/outreach_eval.rb +32 -0
  78. data/generated_models/ncs_navigator/warehouse/models/two_point_one/outreach_lang2.rb +29 -0
  79. data/generated_models/ncs_navigator/warehouse/models/two_point_one/outreach_race.rb +32 -0
  80. data/generated_models/ncs_navigator/warehouse/models/two_point_one/outreach_staff.rb +29 -0
  81. data/generated_models/ncs_navigator/warehouse/models/two_point_one/outreach_target.rb +32 -0
  82. data/generated_models/ncs_navigator/warehouse/models/two_point_one/participant.rb +62 -0
  83. data/generated_models/ncs_navigator/warehouse/models/two_point_one/participant_auth.rb +44 -0
  84. data/generated_models/ncs_navigator/warehouse/models/two_point_one/participant_consent.rb +86 -0
  85. data/generated_models/ncs_navigator/warehouse/models/two_point_one/participant_consent_sample.rb +35 -0
  86. data/generated_models/ncs_navigator/warehouse/models/two_point_one/participant_rvis.rb +74 -0
  87. data/generated_models/ncs_navigator/warehouse/models/two_point_one/participant_vis_consent.rb +53 -0
  88. data/generated_models/ncs_navigator/warehouse/models/two_point_one/pb_recruitment.rb +275 -0
  89. data/generated_models/ncs_navigator/warehouse/models/two_point_one/pb_recruitment_2.rb +275 -0
  90. data/generated_models/ncs_navigator/warehouse/models/two_point_one/pb_recruitment_info_source.rb +32 -0
  91. data/generated_models/ncs_navigator/warehouse/models/two_point_one/pb_recruitment_info_source_2.rb +29 -0
  92. data/generated_models/ncs_navigator/warehouse/models/two_point_one/pb_recruitment_prov_source.rb +32 -0
  93. data/generated_models/ncs_navigator/warehouse/models/two_point_one/pb_recruitment_prov_source_2.rb +29 -0
  94. data/generated_models/ncs_navigator/warehouse/models/two_point_one/pb_recruitment_prov_svc.rb +32 -0
  95. data/generated_models/ncs_navigator/warehouse/models/two_point_one/pb_recruitment_prov_svc_2.rb +32 -0
  96. data/generated_models/ncs_navigator/warehouse/models/two_point_one/person.rb +113 -0
  97. data/generated_models/ncs_navigator/warehouse/models/two_point_one/person_race.rb +32 -0
  98. data/generated_models/ncs_navigator/warehouse/models/two_point_one/ppg_cati.rb +98 -0
  99. data/generated_models/ncs_navigator/warehouse/models/two_point_one/ppg_details.rb +41 -0
  100. data/generated_models/ncs_navigator/warehouse/models/two_point_one/ppg_saq.rb +92 -0
  101. data/generated_models/ncs_navigator/warehouse/models/two_point_one/ppg_status_history.rb +47 -0
  102. data/generated_models/ncs_navigator/warehouse/models/two_point_one/pre_preg.rb +422 -0
  103. data/generated_models/ncs_navigator/warehouse/models/two_point_one/pre_preg_cool.rb +32 -0
  104. data/generated_models/ncs_navigator/warehouse/models/two_point_one/pre_preg_heat2.rb +32 -0
  105. data/generated_models/ncs_navigator/warehouse/models/two_point_one/pre_preg_pdecorate_room.rb +32 -0
  106. data/generated_models/ncs_navigator/warehouse/models/two_point_one/pre_preg_prenovate_room.rb +32 -0
  107. data/generated_models/ncs_navigator/warehouse/models/two_point_one/pre_preg_room_mold.rb +32 -0
  108. data/generated_models/ncs_navigator/warehouse/models/two_point_one/pre_preg_saq.rb +116 -0
  109. data/generated_models/ncs_navigator/warehouse/models/two_point_one/pre_preg_sp_race.rb +32 -0
  110. data/generated_models/ncs_navigator/warehouse/models/two_point_one/prec_therm_cert.rb +41 -0
  111. data/generated_models/ncs_navigator/warehouse/models/two_point_one/preg_screen_eh.rb +350 -0
  112. data/generated_models/ncs_navigator/warehouse/models/two_point_one/preg_screen_eh_2.rb +362 -0
  113. data/generated_models/ncs_navigator/warehouse/models/two_point_one/preg_screen_eh_know_ncs.rb +29 -0
  114. data/generated_models/ncs_navigator/warehouse/models/two_point_one/preg_screen_eh_know_ncs_2.rb +32 -0
  115. data/generated_models/ncs_navigator/warehouse/models/two_point_one/preg_screen_eh_race.rb +29 -0
  116. data/generated_models/ncs_navigator/warehouse/models/two_point_one/preg_screen_eh_race_2.rb +32 -0
  117. data/generated_models/ncs_navigator/warehouse/models/two_point_one/preg_screen_hi.rb +371 -0
  118. data/generated_models/ncs_navigator/warehouse/models/two_point_one/preg_screen_hi_2.rb +380 -0
  119. data/generated_models/ncs_navigator/warehouse/models/two_point_one/preg_screen_hi_know_ncs.rb +29 -0
  120. data/generated_models/ncs_navigator/warehouse/models/two_point_one/preg_screen_hi_know_ncs_2.rb +32 -0
  121. data/generated_models/ncs_navigator/warehouse/models/two_point_one/preg_screen_hi_race.rb +29 -0
  122. data/generated_models/ncs_navigator/warehouse/models/two_point_one/preg_screen_hi_race_2.rb +32 -0
  123. data/generated_models/ncs_navigator/warehouse/models/two_point_one/preg_screen_pb.rb +371 -0
  124. data/generated_models/ncs_navigator/warehouse/models/two_point_one/preg_screen_pb_2.rb +380 -0
  125. data/generated_models/ncs_navigator/warehouse/models/two_point_one/preg_screen_pb_know_ncs.rb +29 -0
  126. data/generated_models/ncs_navigator/warehouse/models/two_point_one/preg_screen_pb_know_ncs_2.rb +32 -0
  127. data/generated_models/ncs_navigator/warehouse/models/two_point_one/preg_screen_pb_race.rb +29 -0
  128. data/generated_models/ncs_navigator/warehouse/models/two_point_one/preg_screen_pb_race_2.rb +32 -0
  129. data/generated_models/ncs_navigator/warehouse/models/two_point_one/preg_visit_1.rb +521 -0
  130. data/generated_models/ncs_navigator/warehouse/models/two_point_one/preg_visit_1_2.rb +497 -0
  131. data/generated_models/ncs_navigator/warehouse/models/two_point_one/preg_visit_1_commute.rb +29 -0
  132. data/generated_models/ncs_navigator/warehouse/models/two_point_one/preg_visit_1_commute_2.rb +32 -0
  133. data/generated_models/ncs_navigator/warehouse/models/two_point_one/preg_visit_1_cool.rb +29 -0
  134. data/generated_models/ncs_navigator/warehouse/models/two_point_one/preg_visit_1_cool_2.rb +32 -0
  135. data/generated_models/ncs_navigator/warehouse/models/two_point_one/preg_visit_1_diagnose_2.rb +29 -0
  136. data/generated_models/ncs_navigator/warehouse/models/two_point_one/preg_visit_1_diagnose_2_2.rb +29 -0
  137. data/generated_models/ncs_navigator/warehouse/models/two_point_one/preg_visit_1_heat2.rb +29 -0
  138. data/generated_models/ncs_navigator/warehouse/models/two_point_one/preg_visit_1_heat2_2.rb +32 -0
  139. data/generated_models/ncs_navigator/warehouse/models/two_point_one/preg_visit_1_local_trav.rb +29 -0
  140. data/generated_models/ncs_navigator/warehouse/models/two_point_one/preg_visit_1_local_trav_2.rb +32 -0
  141. data/generated_models/ncs_navigator/warehouse/models/two_point_one/preg_visit_1_nonenglish2_2.rb +32 -0
  142. data/generated_models/ncs_navigator/warehouse/models/two_point_one/preg_visit_1_pdecorate_room.rb +29 -0
  143. data/generated_models/ncs_navigator/warehouse/models/two_point_one/preg_visit_1_pdecorate_room_2.rb +32 -0
  144. data/generated_models/ncs_navigator/warehouse/models/two_point_one/preg_visit_1_pet_type.rb +29 -0
  145. data/generated_models/ncs_navigator/warehouse/models/two_point_one/preg_visit_1_pet_type_2.rb +32 -0
  146. data/generated_models/ncs_navigator/warehouse/models/two_point_one/preg_visit_1_prenovate2_room.rb +29 -0
  147. data/generated_models/ncs_navigator/warehouse/models/two_point_one/preg_visit_1_prenovate_room.rb +29 -0
  148. data/generated_models/ncs_navigator/warehouse/models/two_point_one/preg_visit_1_prenovate_room_2.rb +32 -0
  149. data/generated_models/ncs_navigator/warehouse/models/two_point_one/preg_visit_1_room_mold.rb +29 -0
  150. data/generated_models/ncs_navigator/warehouse/models/two_point_one/preg_visit_1_room_mold_2.rb +32 -0
  151. data/generated_models/ncs_navigator/warehouse/models/two_point_one/preg_visit_1_saq.rb +188 -0
  152. data/generated_models/ncs_navigator/warehouse/models/two_point_one/preg_visit_1_saq_2.rb +233 -0
  153. data/generated_models/ncs_navigator/warehouse/models/two_point_one/preg_visit_1_saq_3.rb +236 -0
  154. data/generated_models/ncs_navigator/warehouse/models/two_point_one/preg_visit_1_sp_race.rb +29 -0
  155. data/generated_models/ncs_navigator/warehouse/models/two_point_one/preg_visit_1_sp_race_2.rb +32 -0
  156. data/generated_models/ncs_navigator/warehouse/models/two_point_one/preg_visit_2.rb +452 -0
  157. data/generated_models/ncs_navigator/warehouse/models/two_point_one/preg_visit_2_2.rb +440 -0
  158. data/generated_models/ncs_navigator/warehouse/models/two_point_one/preg_visit_2_cool.rb +29 -0
  159. data/generated_models/ncs_navigator/warehouse/models/two_point_one/preg_visit_2_cool_2.rb +32 -0
  160. data/generated_models/ncs_navigator/warehouse/models/two_point_one/preg_visit_2_diagnose_2.rb +29 -0
  161. data/generated_models/ncs_navigator/warehouse/models/two_point_one/preg_visit_2_diagnose_2_2.rb +32 -0
  162. data/generated_models/ncs_navigator/warehouse/models/two_point_one/preg_visit_2_heat2.rb +29 -0
  163. data/generated_models/ncs_navigator/warehouse/models/two_point_one/preg_visit_2_heat2_2.rb +32 -0
  164. data/generated_models/ncs_navigator/warehouse/models/two_point_one/preg_visit_2_pdecorate2_room.rb +29 -0
  165. data/generated_models/ncs_navigator/warehouse/models/two_point_one/preg_visit_2_pdecorate2_room_2.rb +32 -0
  166. data/generated_models/ncs_navigator/warehouse/models/two_point_one/preg_visit_2_prenovate_room.rb +29 -0
  167. data/generated_models/ncs_navigator/warehouse/models/two_point_one/preg_visit_2_prenovate_room_2.rb +32 -0
  168. data/generated_models/ncs_navigator/warehouse/models/two_point_one/preg_visit_2_room_mold.rb +29 -0
  169. data/generated_models/ncs_navigator/warehouse/models/two_point_one/preg_visit_2_room_mold_2.rb +32 -0
  170. data/generated_models/ncs_navigator/warehouse/models/two_point_one/preg_visit_2_saq.rb +116 -0
  171. data/generated_models/ncs_navigator/warehouse/models/two_point_one/preg_visit_2_saq_2.rb +116 -0
  172. data/generated_models/ncs_navigator/warehouse/models/two_point_one/preg_visit_li.rb +350 -0
  173. data/generated_models/ncs_navigator/warehouse/models/two_point_one/preg_visit_li_2.rb +350 -0
  174. data/generated_models/ncs_navigator/warehouse/models/two_point_one/preg_visit_li_cool.rb +29 -0
  175. data/generated_models/ncs_navigator/warehouse/models/two_point_one/preg_visit_li_cool_2.rb +32 -0
  176. data/generated_models/ncs_navigator/warehouse/models/two_point_one/provider.rb +62 -0
  177. data/generated_models/ncs_navigator/warehouse/models/two_point_one/provider_role.rb +32 -0
  178. data/generated_models/ncs_navigator/warehouse/models/two_point_one/psu.rb +29 -0
  179. data/generated_models/ncs_navigator/warehouse/models/two_point_one/ref_freezer_verification.rb +50 -0
  180. data/generated_models/ncs_navigator/warehouse/models/two_point_one/sample_receipt_confirm.rb +53 -0
  181. data/generated_models/ncs_navigator/warehouse/models/two_point_one/sample_receipt_store.rb +65 -0
  182. data/generated_models/ncs_navigator/warehouse/models/two_point_one/sample_shipping.rb +53 -0
  183. data/generated_models/ncs_navigator/warehouse/models/two_point_one/six_mth_mother.rb +278 -0
  184. data/generated_models/ncs_navigator/warehouse/models/two_point_one/six_mth_mother_detail.rb +266 -0
  185. data/generated_models/ncs_navigator/warehouse/models/two_point_one/six_mth_mother_pet.rb +32 -0
  186. data/generated_models/ncs_navigator/warehouse/models/two_point_one/six_mth_saq.rb +218 -0
  187. data/generated_models/ncs_navigator/warehouse/models/two_point_one/six_mth_saq_2.rb +218 -0
  188. data/generated_models/ncs_navigator/warehouse/models/two_point_one/six_mth_saq_formula_type.rb +29 -0
  189. data/generated_models/ncs_navigator/warehouse/models/two_point_one/six_mth_saq_formula_type_2.rb +29 -0
  190. data/generated_models/ncs_navigator/warehouse/models/two_point_one/six_mth_saq_supp.rb +32 -0
  191. data/generated_models/ncs_navigator/warehouse/models/two_point_one/six_mth_saq_supp_2.rb +32 -0
  192. data/generated_models/ncs_navigator/warehouse/models/two_point_one/six_mth_saq_water.rb +29 -0
  193. data/generated_models/ncs_navigator/warehouse/models/two_point_one/six_mth_saq_water_2.rb +29 -0
  194. data/generated_models/ncs_navigator/warehouse/models/two_point_one/spec_blood.rb +194 -0
  195. data/generated_models/ncs_navigator/warehouse/models/two_point_one/spec_blood_draw.rb +29 -0
  196. data/generated_models/ncs_navigator/warehouse/models/two_point_one/spec_blood_hemolyze.rb +29 -0
  197. data/generated_models/ncs_navigator/warehouse/models/two_point_one/spec_blood_tube.rb +38 -0
  198. data/generated_models/ncs_navigator/warehouse/models/two_point_one/spec_blood_tube_comments.rb +29 -0
  199. data/generated_models/ncs_navigator/warehouse/models/two_point_one/spec_cord_blood.rb +110 -0
  200. data/generated_models/ncs_navigator/warehouse/models/two_point_one/spec_cord_blood_2.rb +110 -0
  201. data/generated_models/ncs_navigator/warehouse/models/two_point_one/spec_cord_blood_specimen.rb +29 -0
  202. data/generated_models/ncs_navigator/warehouse/models/two_point_one/spec_cord_blood_specimen_2.rb +35 -0
  203. data/generated_models/ncs_navigator/warehouse/models/two_point_one/spec_equipment.rb +38 -0
  204. data/generated_models/ncs_navigator/warehouse/models/two_point_one/spec_pickup.rb +47 -0
  205. data/generated_models/ncs_navigator/warehouse/models/two_point_one/spec_receipt.rb +80 -0
  206. data/generated_models/ncs_navigator/warehouse/models/two_point_one/spec_shipping.rb +56 -0
  207. data/generated_models/ncs_navigator/warehouse/models/two_point_one/spec_spsc_info.rb +26 -0
  208. data/generated_models/ncs_navigator/warehouse/models/two_point_one/spec_storage.rb +62 -0
  209. data/generated_models/ncs_navigator/warehouse/models/two_point_one/spec_urine.rb +110 -0
  210. data/generated_models/ncs_navigator/warehouse/models/two_point_one/srsc_info.rb +26 -0
  211. data/generated_models/ncs_navigator/warehouse/models/two_point_one/ssu.rb +29 -0
  212. data/generated_models/ncs_navigator/warehouse/models/two_point_one/staff.rb +65 -0
  213. data/generated_models/ncs_navigator/warehouse/models/two_point_one/staff_cert_training.rb +47 -0
  214. data/generated_models/ncs_navigator/warehouse/models/two_point_one/staff_exp_data_cllctn_tasks.rb +44 -0
  215. data/generated_models/ncs_navigator/warehouse/models/two_point_one/staff_exp_mngmnt_tasks.rb +38 -0
  216. data/generated_models/ncs_navigator/warehouse/models/two_point_one/staff_language.rb +32 -0
  217. data/generated_models/ncs_navigator/warehouse/models/two_point_one/staff_validation.rb +38 -0
  218. data/generated_models/ncs_navigator/warehouse/models/two_point_one/staff_weekly_expense.rb +44 -0
  219. data/generated_models/ncs_navigator/warehouse/models/two_point_one/study_center.rb +26 -0
  220. data/generated_models/ncs_navigator/warehouse/models/two_point_one/subsample_doc.rb +29 -0
  221. data/generated_models/ncs_navigator/warehouse/models/two_point_one/tap_water_twf.rb +152 -0
  222. data/generated_models/ncs_navigator/warehouse/models/two_point_one/tap_water_twf_blank_collected.rb +29 -0
  223. data/generated_models/ncs_navigator/warehouse/models/two_point_one/tap_water_twf_dup_collected.rb +29 -0
  224. data/generated_models/ncs_navigator/warehouse/models/two_point_one/tap_water_twf_dup_filled.rb +29 -0
  225. data/generated_models/ncs_navigator/warehouse/models/two_point_one/tap_water_twf_n_collected.rb +29 -0
  226. data/generated_models/ncs_navigator/warehouse/models/two_point_one/tap_water_twf_reason_filled.rb +29 -0
  227. data/generated_models/ncs_navigator/warehouse/models/two_point_one/tap_water_twf_reason_filled2.rb +29 -0
  228. data/generated_models/ncs_navigator/warehouse/models/two_point_one/tap_water_twf_sample.rb +32 -0
  229. data/generated_models/ncs_navigator/warehouse/models/two_point_one/tap_water_twf_subsamples.rb +29 -0
  230. data/generated_models/ncs_navigator/warehouse/models/two_point_one/tap_water_twq.rb +143 -0
  231. data/generated_models/ncs_navigator/warehouse/models/two_point_one/tap_water_twq_blank_collected.rb +29 -0
  232. data/generated_models/ncs_navigator/warehouse/models/two_point_one/tap_water_twq_dup_collected.rb +29 -0
  233. data/generated_models/ncs_navigator/warehouse/models/two_point_one/tap_water_twq_dup_filled.rb +29 -0
  234. data/generated_models/ncs_navigator/warehouse/models/two_point_one/tap_water_twq_n_collected.rb +29 -0
  235. data/generated_models/ncs_navigator/warehouse/models/two_point_one/tap_water_twq_reason_filled.rb +29 -0
  236. data/generated_models/ncs_navigator/warehouse/models/two_point_one/tap_water_twq_reason_filled2.rb +29 -0
  237. data/generated_models/ncs_navigator/warehouse/models/two_point_one/tap_water_twq_sample.rb +32 -0
  238. data/generated_models/ncs_navigator/warehouse/models/two_point_one/tap_water_twq_subsamples.rb +29 -0
  239. data/generated_models/ncs_navigator/warehouse/models/two_point_one/telephone.rb +83 -0
  240. data/generated_models/ncs_navigator/warehouse/models/two_point_one/three_mth_mother.rb +89 -0
  241. data/generated_models/ncs_navigator/warehouse/models/two_point_one/three_mth_mother_child_detail.rb +59 -0
  242. data/generated_models/ncs_navigator/warehouse/models/two_point_one/three_mth_mother_child_habits.rb +185 -0
  243. data/generated_models/ncs_navigator/warehouse/models/two_point_one/three_mth_mother_race.rb +32 -0
  244. data/generated_models/ncs_navigator/warehouse/models/two_point_one/trh_meter_calibration.rb +77 -0
  245. data/generated_models/ncs_navigator/warehouse/models/two_point_one/tsu.rb +29 -0
  246. data/generated_models/ncs_navigator/warehouse/models/two_point_one/twelve_mth_mother.rb +299 -0
  247. data/generated_models/ncs_navigator/warehouse/models/two_point_one/twelve_mth_mother_detail.rb +302 -0
  248. data/generated_models/ncs_navigator/warehouse/models/two_point_one/twelve_mth_mother_lice.rb +29 -0
  249. data/generated_models/ncs_navigator/warehouse/models/two_point_one/twelve_mth_mother_renovate_room.rb +32 -0
  250. data/generated_models/ncs_navigator/warehouse/models/two_point_one/twelve_mth_mother_room_mold.rb +32 -0
  251. data/generated_models/ncs_navigator/warehouse/models/two_point_one/twelve_mth_saq.rb +293 -0
  252. data/generated_models/ncs_navigator/warehouse/models/two_point_one/twelve_mth_saq_2.rb +293 -0
  253. data/generated_models/ncs_navigator/warehouse/models/two_point_one/twelve_mth_saq_formula_brand.rb +32 -0
  254. data/generated_models/ncs_navigator/warehouse/models/two_point_one/twelve_mth_saq_formula_brand_2.rb +32 -0
  255. data/generated_models/ncs_navigator/warehouse/models/two_point_one/twelve_mth_saq_formula_type.rb +29 -0
  256. data/generated_models/ncs_navigator/warehouse/models/two_point_one/twelve_mth_saq_formula_type_2.rb +29 -0
  257. data/generated_models/ncs_navigator/warehouse/models/two_point_one/twelve_mth_saq_supplement.rb +32 -0
  258. data/generated_models/ncs_navigator/warehouse/models/two_point_one/twelve_mth_saq_supplement_2.rb +32 -0
  259. data/generated_models/ncs_navigator/warehouse/models/two_point_one/twelve_mth_saq_water.rb +29 -0
  260. data/generated_models/ncs_navigator/warehouse/models/two_point_one/twelve_mth_saq_water_2.rb +32 -0
  261. data/generated_models/ncs_navigator/warehouse/models/two_point_one/twenty_four_mth_mother.rb +347 -0
  262. data/generated_models/ncs_navigator/warehouse/models/two_point_one/twenty_four_mth_mother_cond.rb +29 -0
  263. data/generated_models/ncs_navigator/warehouse/models/two_point_one/twenty_four_mth_mother_detail.rb +50 -0
  264. data/generated_models/ncs_navigator/warehouse/models/two_point_one/twenty_four_mth_mother_habits.rb +194 -0
  265. data/generated_models/ncs_navigator/warehouse/models/two_point_one/twenty_four_mth_mother_mold.rb +32 -0
  266. data/generated_models/ncs_navigator/warehouse/models/two_point_one/twenty_four_mth_mother_otc.rb +47 -0
  267. data/generated_models/ncs_navigator/warehouse/models/two_point_one/twenty_four_mth_mother_prescr.rb +47 -0
  268. data/generated_models/ncs_navigator/warehouse/models/two_point_one/twenty_four_mth_mother_suppl.rb +47 -0
  269. data/generated_models/ncs_navigator/warehouse/models/two_point_one/twenty_four_mth_pet_type.rb +32 -0
  270. data/generated_models/ncs_navigator/warehouse/models/two_point_one/twenty_four_mth_renovate_room.rb +32 -0
  271. data/generated_models/ncs_navigator/warehouse/models/two_point_one/twenty_four_mth_room_mold.rb +32 -0
  272. data/generated_models/ncs_navigator/warehouse/models/two_point_one/twenty_four_mth_saq.rb +242 -0
  273. data/generated_models/ncs_navigator/warehouse/models/two_point_one/vacuum_bag.rb +131 -0
  274. data/generated_models/ncs_navigator/warehouse/models/two_point_one/vacuum_bag_outside.rb +32 -0
  275. data/generated_models/ncs_navigator/warehouse/models/two_point_one/validation_ins.rb +233 -0
  276. data/generated_models/ncs_navigator/warehouse/models/two_point_two.rb +681 -0
  277. data/generated_models/ncs_navigator/warehouse/models/two_point_two/address.rb +101 -0
  278. data/generated_models/ncs_navigator/warehouse/models/two_point_two/birth_visit.rb +365 -0
  279. data/generated_models/ncs_navigator/warehouse/models/two_point_two/birth_visit_2.rb +359 -0
  280. data/generated_models/ncs_navigator/warehouse/models/two_point_two/birth_visit_baby_name.rb +47 -0
  281. data/generated_models/ncs_navigator/warehouse/models/two_point_two/birth_visit_baby_name_2.rb +50 -0
  282. data/generated_models/ncs_navigator/warehouse/models/two_point_two/birth_visit_decorate_room.rb +29 -0
  283. data/generated_models/ncs_navigator/warehouse/models/two_point_two/birth_visit_decorate_room_2.rb +32 -0
  284. data/generated_models/ncs_navigator/warehouse/models/two_point_two/birth_visit_li.rb +374 -0
  285. data/generated_models/ncs_navigator/warehouse/models/two_point_two/birth_visit_li_baby_name.rb +47 -0
  286. data/generated_models/ncs_navigator/warehouse/models/two_point_two/birth_visit_li_decorate_room.rb +32 -0
  287. data/generated_models/ncs_navigator/warehouse/models/two_point_two/birth_visit_li_renovate_room.rb +32 -0
  288. data/generated_models/ncs_navigator/warehouse/models/two_point_two/birth_visit_renovate_room.rb +29 -0
  289. data/generated_models/ncs_navigator/warehouse/models/two_point_two/birth_visit_renovate_room_2.rb +32 -0
  290. data/generated_models/ncs_navigator/warehouse/models/two_point_two/contact.rb +77 -0
  291. data/generated_models/ncs_navigator/warehouse/models/two_point_two/drf_therm_verification.rb +50 -0
  292. data/generated_models/ncs_navigator/warehouse/models/two_point_two/dwelling_unit.rb +53 -0
  293. data/generated_models/ncs_navigator/warehouse/models/two_point_two/eighteen_mth_mother.rb +350 -0
  294. data/generated_models/ncs_navigator/warehouse/models/two_point_two/eighteen_mth_mother_2.rb +350 -0
  295. data/generated_models/ncs_navigator/warehouse/models/two_point_two/eighteen_mth_mother_cond.rb +29 -0
  296. data/generated_models/ncs_navigator/warehouse/models/two_point_two/eighteen_mth_mother_detail.rb +50 -0
  297. data/generated_models/ncs_navigator/warehouse/models/two_point_two/eighteen_mth_mother_detail_2.rb +50 -0
  298. data/generated_models/ncs_navigator/warehouse/models/two_point_two/eighteen_mth_mother_habits.rb +164 -0
  299. data/generated_models/ncs_navigator/warehouse/models/two_point_two/eighteen_mth_mother_habits_2.rb +173 -0
  300. data/generated_models/ncs_navigator/warehouse/models/two_point_two/eighteen_mth_mother_lice.rb +29 -0
  301. data/generated_models/ncs_navigator/warehouse/models/two_point_two/eighteen_mth_mother_lice_2.rb +29 -0
  302. data/generated_models/ncs_navigator/warehouse/models/two_point_two/eighteen_mth_mother_mold.rb +32 -0
  303. data/generated_models/ncs_navigator/warehouse/models/two_point_two/eighteen_mth_mother_mold_2.rb +32 -0
  304. data/generated_models/ncs_navigator/warehouse/models/two_point_two/eighteen_mth_mother_otc.rb +47 -0
  305. data/generated_models/ncs_navigator/warehouse/models/two_point_two/eighteen_mth_mother_otc_2.rb +47 -0
  306. data/generated_models/ncs_navigator/warehouse/models/two_point_two/eighteen_mth_mother_pet_type.rb +32 -0
  307. data/generated_models/ncs_navigator/warehouse/models/two_point_two/eighteen_mth_mother_pet_type_2.rb +32 -0
  308. data/generated_models/ncs_navigator/warehouse/models/two_point_two/eighteen_mth_mother_prescr.rb +47 -0
  309. data/generated_models/ncs_navigator/warehouse/models/two_point_two/eighteen_mth_mother_prescr_2.rb +47 -0
  310. data/generated_models/ncs_navigator/warehouse/models/two_point_two/eighteen_mth_mother_renovate_room.rb +32 -0
  311. data/generated_models/ncs_navigator/warehouse/models/two_point_two/eighteen_mth_mother_renovate_room_2.rb +32 -0
  312. data/generated_models/ncs_navigator/warehouse/models/two_point_two/eighteen_mth_mother_room_mold.rb +32 -0
  313. data/generated_models/ncs_navigator/warehouse/models/two_point_two/eighteen_mth_mother_room_mold_2.rb +32 -0
  314. data/generated_models/ncs_navigator/warehouse/models/two_point_two/eighteen_mth_mother_saq.rb +260 -0
  315. data/generated_models/ncs_navigator/warehouse/models/two_point_two/eighteen_mth_mother_suppl.rb +47 -0
  316. data/generated_models/ncs_navigator/warehouse/models/two_point_two/eighteen_mth_mother_suppl_2.rb +47 -0
  317. data/generated_models/ncs_navigator/warehouse/models/two_point_two/email.rb +74 -0
  318. data/generated_models/ncs_navigator/warehouse/models/two_point_two/env_equipment.rb +47 -0
  319. data/generated_models/ncs_navigator/warehouse/models/two_point_two/env_equipment_prob_log.rb +50 -0
  320. data/generated_models/ncs_navigator/warehouse/models/two_point_two/event.rb +68 -0
  321. data/generated_models/ncs_navigator/warehouse/models/two_point_two/father_pv1.rb +374 -0
  322. data/generated_models/ncs_navigator/warehouse/models/two_point_two/father_pv1_2.rb +380 -0
  323. data/generated_models/ncs_navigator/warehouse/models/two_point_two/father_pv1_cancer.rb +29 -0
  324. data/generated_models/ncs_navigator/warehouse/models/two_point_two/father_pv1_cancer_2.rb +29 -0
  325. data/generated_models/ncs_navigator/warehouse/models/two_point_two/father_pv1_educ.rb +29 -0
  326. data/generated_models/ncs_navigator/warehouse/models/two_point_two/father_pv1_race.rb +29 -0
  327. data/generated_models/ncs_navigator/warehouse/models/two_point_two/father_pv1_race_2.rb +32 -0
  328. data/generated_models/ncs_navigator/warehouse/models/two_point_two/household_enumeration.rb +239 -0
  329. data/generated_models/ncs_navigator/warehouse/models/two_point_two/household_enumeration_age_elig.rb +38 -0
  330. data/generated_models/ncs_navigator/warehouse/models/two_point_two/household_enumeration_hidden_du.rb +50 -0
  331. data/generated_models/ncs_navigator/warehouse/models/two_point_two/household_enumeration_pregnant.rb +38 -0
  332. data/generated_models/ncs_navigator/warehouse/models/two_point_two/household_inventory.rb +203 -0
  333. data/generated_models/ncs_navigator/warehouse/models/two_point_two/household_inventory_age.rb +35 -0
  334. data/generated_models/ncs_navigator/warehouse/models/two_point_two/household_inventory_age_elig.rb +35 -0
  335. data/generated_models/ncs_navigator/warehouse/models/two_point_two/household_unit.rb +53 -0
  336. data/generated_models/ncs_navigator/warehouse/models/two_point_two/incident.rb +98 -0
  337. data/generated_models/ncs_navigator/warehouse/models/two_point_two/incident_media.rb +35 -0
  338. data/generated_models/ncs_navigator/warehouse/models/two_point_two/incident_unanticipated.rb +29 -0
  339. data/generated_models/ncs_navigator/warehouse/models/two_point_two/institution.rb +68 -0
  340. data/generated_models/ncs_navigator/warehouse/models/two_point_two/instrument.rb +74 -0
  341. data/generated_models/ncs_navigator/warehouse/models/two_point_two/internet_usage.rb +92 -0
  342. data/generated_models/ncs_navigator/warehouse/models/two_point_two/internet_usage_participate.rb +29 -0
  343. data/generated_models/ncs_navigator/warehouse/models/two_point_two/link_contact.rb +41 -0
  344. data/generated_models/ncs_navigator/warehouse/models/two_point_two/link_household_dwelling.rb +38 -0
  345. data/generated_models/ncs_navigator/warehouse/models/two_point_two/link_person_household.rb +38 -0
  346. data/generated_models/ncs_navigator/warehouse/models/two_point_two/link_person_institute.rb +38 -0
  347. data/generated_models/ncs_navigator/warehouse/models/two_point_two/link_person_participant.rb +38 -0
  348. data/generated_models/ncs_navigator/warehouse/models/two_point_two/link_person_provider.rb +38 -0
  349. data/generated_models/ncs_navigator/warehouse/models/two_point_two/listing_unit.rb +38 -0
  350. data/generated_models/ncs_navigator/warehouse/models/two_point_two/low_high_script.rb +119 -0
  351. data/generated_models/ncs_navigator/warehouse/models/two_point_two/nine_mth_mother.rb +65 -0
  352. data/generated_models/ncs_navigator/warehouse/models/two_point_two/nine_mth_mother_detail.rb +143 -0
  353. data/generated_models/ncs_navigator/warehouse/models/two_point_two/non_interview_rpt.rb +128 -0
  354. data/generated_models/ncs_navigator/warehouse/models/two_point_two/non_interview_rpt_dutype.rb +32 -0
  355. data/generated_models/ncs_navigator/warehouse/models/two_point_two/non_interview_rpt_noaccess.rb +32 -0
  356. data/generated_models/ncs_navigator/warehouse/models/two_point_two/non_interview_rpt_refusal.rb +32 -0
  357. data/generated_models/ncs_navigator/warehouse/models/two_point_two/non_interview_rpt_vacant.rb +32 -0
  358. data/generated_models/ncs_navigator/warehouse/models/two_point_two/outreach.rb +98 -0
  359. data/generated_models/ncs_navigator/warehouse/models/two_point_two/outreach_eval.rb +32 -0
  360. data/generated_models/ncs_navigator/warehouse/models/two_point_two/outreach_lang2.rb +29 -0
  361. data/generated_models/ncs_navigator/warehouse/models/two_point_two/outreach_race.rb +32 -0
  362. data/generated_models/ncs_navigator/warehouse/models/two_point_two/outreach_staff.rb +29 -0
  363. data/generated_models/ncs_navigator/warehouse/models/two_point_two/outreach_target.rb +32 -0
  364. data/generated_models/ncs_navigator/warehouse/models/two_point_two/participant.rb +62 -0
  365. data/generated_models/ncs_navigator/warehouse/models/two_point_two/participant_auth.rb +44 -0
  366. data/generated_models/ncs_navigator/warehouse/models/two_point_two/participant_consent.rb +86 -0
  367. data/generated_models/ncs_navigator/warehouse/models/two_point_two/participant_consent_sample.rb +35 -0
  368. data/generated_models/ncs_navigator/warehouse/models/two_point_two/participant_rvis.rb +74 -0
  369. data/generated_models/ncs_navigator/warehouse/models/two_point_two/participant_vis_consent.rb +53 -0
  370. data/generated_models/ncs_navigator/warehouse/models/two_point_two/pb_recruitment.rb +275 -0
  371. data/generated_models/ncs_navigator/warehouse/models/two_point_two/pb_recruitment_2.rb +275 -0
  372. data/generated_models/ncs_navigator/warehouse/models/two_point_two/pb_recruitment_info_source.rb +32 -0
  373. data/generated_models/ncs_navigator/warehouse/models/two_point_two/pb_recruitment_info_source_2.rb +29 -0
  374. data/generated_models/ncs_navigator/warehouse/models/two_point_two/pb_recruitment_prov_source.rb +32 -0
  375. data/generated_models/ncs_navigator/warehouse/models/two_point_two/pb_recruitment_prov_source_2.rb +29 -0
  376. data/generated_models/ncs_navigator/warehouse/models/two_point_two/pb_recruitment_prov_svc.rb +32 -0
  377. data/generated_models/ncs_navigator/warehouse/models/two_point_two/pb_recruitment_prov_svc_2.rb +32 -0
  378. data/generated_models/ncs_navigator/warehouse/models/two_point_two/person.rb +113 -0
  379. data/generated_models/ncs_navigator/warehouse/models/two_point_two/person_race.rb +32 -0
  380. data/generated_models/ncs_navigator/warehouse/models/two_point_two/ppg_cati.rb +98 -0
  381. data/generated_models/ncs_navigator/warehouse/models/two_point_two/ppg_details.rb +41 -0
  382. data/generated_models/ncs_navigator/warehouse/models/two_point_two/ppg_saq.rb +92 -0
  383. data/generated_models/ncs_navigator/warehouse/models/two_point_two/ppg_status_history.rb +47 -0
  384. data/generated_models/ncs_navigator/warehouse/models/two_point_two/pre_preg.rb +422 -0
  385. data/generated_models/ncs_navigator/warehouse/models/two_point_two/pre_preg_cool.rb +32 -0
  386. data/generated_models/ncs_navigator/warehouse/models/two_point_two/pre_preg_heat2.rb +32 -0
  387. data/generated_models/ncs_navigator/warehouse/models/two_point_two/pre_preg_pdecorate_room.rb +32 -0
  388. data/generated_models/ncs_navigator/warehouse/models/two_point_two/pre_preg_prenovate_room.rb +32 -0
  389. data/generated_models/ncs_navigator/warehouse/models/two_point_two/pre_preg_room_mold.rb +32 -0
  390. data/generated_models/ncs_navigator/warehouse/models/two_point_two/pre_preg_saq.rb +116 -0
  391. data/generated_models/ncs_navigator/warehouse/models/two_point_two/pre_preg_sp_race.rb +32 -0
  392. data/generated_models/ncs_navigator/warehouse/models/two_point_two/prec_therm_cert.rb +41 -0
  393. data/generated_models/ncs_navigator/warehouse/models/two_point_two/preg_screen_eh.rb +350 -0
  394. data/generated_models/ncs_navigator/warehouse/models/two_point_two/preg_screen_eh_2.rb +362 -0
  395. data/generated_models/ncs_navigator/warehouse/models/two_point_two/preg_screen_eh_know_ncs.rb +29 -0
  396. data/generated_models/ncs_navigator/warehouse/models/two_point_two/preg_screen_eh_know_ncs_2.rb +32 -0
  397. data/generated_models/ncs_navigator/warehouse/models/two_point_two/preg_screen_eh_race.rb +29 -0
  398. data/generated_models/ncs_navigator/warehouse/models/two_point_two/preg_screen_eh_race_2.rb +32 -0
  399. data/generated_models/ncs_navigator/warehouse/models/two_point_two/preg_screen_hi.rb +371 -0
  400. data/generated_models/ncs_navigator/warehouse/models/two_point_two/preg_screen_hi_2.rb +380 -0
  401. data/generated_models/ncs_navigator/warehouse/models/two_point_two/preg_screen_hi_know_ncs.rb +29 -0
  402. data/generated_models/ncs_navigator/warehouse/models/two_point_two/preg_screen_hi_know_ncs_2.rb +32 -0
  403. data/generated_models/ncs_navigator/warehouse/models/two_point_two/preg_screen_hi_race.rb +29 -0
  404. data/generated_models/ncs_navigator/warehouse/models/two_point_two/preg_screen_hi_race_2.rb +32 -0
  405. data/generated_models/ncs_navigator/warehouse/models/two_point_two/preg_screen_pb.rb +371 -0
  406. data/generated_models/ncs_navigator/warehouse/models/two_point_two/preg_screen_pb_2.rb +380 -0
  407. data/generated_models/ncs_navigator/warehouse/models/two_point_two/preg_screen_pb_know_ncs.rb +29 -0
  408. data/generated_models/ncs_navigator/warehouse/models/two_point_two/preg_screen_pb_know_ncs_2.rb +32 -0
  409. data/generated_models/ncs_navigator/warehouse/models/two_point_two/preg_screen_pb_race.rb +29 -0
  410. data/generated_models/ncs_navigator/warehouse/models/two_point_two/preg_screen_pb_race_2.rb +32 -0
  411. data/generated_models/ncs_navigator/warehouse/models/two_point_two/preg_visit_1.rb +521 -0
  412. data/generated_models/ncs_navigator/warehouse/models/two_point_two/preg_visit_1_2.rb +497 -0
  413. data/generated_models/ncs_navigator/warehouse/models/two_point_two/preg_visit_1_commute.rb +29 -0
  414. data/generated_models/ncs_navigator/warehouse/models/two_point_two/preg_visit_1_commute_2.rb +32 -0
  415. data/generated_models/ncs_navigator/warehouse/models/two_point_two/preg_visit_1_cool.rb +29 -0
  416. data/generated_models/ncs_navigator/warehouse/models/two_point_two/preg_visit_1_cool_2.rb +32 -0
  417. data/generated_models/ncs_navigator/warehouse/models/two_point_two/preg_visit_1_diagnose_2.rb +29 -0
  418. data/generated_models/ncs_navigator/warehouse/models/two_point_two/preg_visit_1_diagnose_2_2.rb +29 -0
  419. data/generated_models/ncs_navigator/warehouse/models/two_point_two/preg_visit_1_heat2.rb +29 -0
  420. data/generated_models/ncs_navigator/warehouse/models/two_point_two/preg_visit_1_heat2_2.rb +32 -0
  421. data/generated_models/ncs_navigator/warehouse/models/two_point_two/preg_visit_1_local_trav.rb +29 -0
  422. data/generated_models/ncs_navigator/warehouse/models/two_point_two/preg_visit_1_local_trav_2.rb +32 -0
  423. data/generated_models/ncs_navigator/warehouse/models/two_point_two/preg_visit_1_nonenglish2_2.rb +32 -0
  424. data/generated_models/ncs_navigator/warehouse/models/two_point_two/preg_visit_1_pdecorate_room.rb +29 -0
  425. data/generated_models/ncs_navigator/warehouse/models/two_point_two/preg_visit_1_pdecorate_room_2.rb +32 -0
  426. data/generated_models/ncs_navigator/warehouse/models/two_point_two/preg_visit_1_pet_type.rb +29 -0
  427. data/generated_models/ncs_navigator/warehouse/models/two_point_two/preg_visit_1_pet_type_2.rb +32 -0
  428. data/generated_models/ncs_navigator/warehouse/models/two_point_two/preg_visit_1_prenovate2_room.rb +29 -0
  429. data/generated_models/ncs_navigator/warehouse/models/two_point_two/preg_visit_1_prenovate_room.rb +29 -0
  430. data/generated_models/ncs_navigator/warehouse/models/two_point_two/preg_visit_1_prenovate_room_2.rb +32 -0
  431. data/generated_models/ncs_navigator/warehouse/models/two_point_two/preg_visit_1_room_mold.rb +29 -0
  432. data/generated_models/ncs_navigator/warehouse/models/two_point_two/preg_visit_1_room_mold_2.rb +32 -0
  433. data/generated_models/ncs_navigator/warehouse/models/two_point_two/preg_visit_1_saq.rb +188 -0
  434. data/generated_models/ncs_navigator/warehouse/models/two_point_two/preg_visit_1_saq_2.rb +233 -0
  435. data/generated_models/ncs_navigator/warehouse/models/two_point_two/preg_visit_1_saq_3.rb +236 -0
  436. data/generated_models/ncs_navigator/warehouse/models/two_point_two/preg_visit_1_sp_race.rb +29 -0
  437. data/generated_models/ncs_navigator/warehouse/models/two_point_two/preg_visit_1_sp_race_2.rb +32 -0
  438. data/generated_models/ncs_navigator/warehouse/models/two_point_two/preg_visit_2.rb +452 -0
  439. data/generated_models/ncs_navigator/warehouse/models/two_point_two/preg_visit_2_2.rb +440 -0
  440. data/generated_models/ncs_navigator/warehouse/models/two_point_two/preg_visit_2_cool.rb +29 -0
  441. data/generated_models/ncs_navigator/warehouse/models/two_point_two/preg_visit_2_cool_2.rb +32 -0
  442. data/generated_models/ncs_navigator/warehouse/models/two_point_two/preg_visit_2_diagnose_2.rb +29 -0
  443. data/generated_models/ncs_navigator/warehouse/models/two_point_two/preg_visit_2_diagnose_2_2.rb +32 -0
  444. data/generated_models/ncs_navigator/warehouse/models/two_point_two/preg_visit_2_heat2.rb +29 -0
  445. data/generated_models/ncs_navigator/warehouse/models/two_point_two/preg_visit_2_heat2_2.rb +32 -0
  446. data/generated_models/ncs_navigator/warehouse/models/two_point_two/preg_visit_2_pdecorate2_room.rb +29 -0
  447. data/generated_models/ncs_navigator/warehouse/models/two_point_two/preg_visit_2_pdecorate2_room_2.rb +32 -0
  448. data/generated_models/ncs_navigator/warehouse/models/two_point_two/preg_visit_2_prenovate_room.rb +29 -0
  449. data/generated_models/ncs_navigator/warehouse/models/two_point_two/preg_visit_2_prenovate_room_2.rb +32 -0
  450. data/generated_models/ncs_navigator/warehouse/models/two_point_two/preg_visit_2_room_mold.rb +29 -0
  451. data/generated_models/ncs_navigator/warehouse/models/two_point_two/preg_visit_2_room_mold_2.rb +32 -0
  452. data/generated_models/ncs_navigator/warehouse/models/two_point_two/preg_visit_2_saq.rb +116 -0
  453. data/generated_models/ncs_navigator/warehouse/models/two_point_two/preg_visit_2_saq_2.rb +116 -0
  454. data/generated_models/ncs_navigator/warehouse/models/two_point_two/preg_visit_2_saq_3.rb +116 -0
  455. data/generated_models/ncs_navigator/warehouse/models/two_point_two/preg_visit_li.rb +350 -0
  456. data/generated_models/ncs_navigator/warehouse/models/two_point_two/preg_visit_li_2.rb +350 -0
  457. data/generated_models/ncs_navigator/warehouse/models/two_point_two/preg_visit_li_cool.rb +29 -0
  458. data/generated_models/ncs_navigator/warehouse/models/two_point_two/preg_visit_li_cool_2.rb +32 -0
  459. data/generated_models/ncs_navigator/warehouse/models/two_point_two/provider.rb +62 -0
  460. data/generated_models/ncs_navigator/warehouse/models/two_point_two/provider_role.rb +32 -0
  461. data/generated_models/ncs_navigator/warehouse/models/two_point_two/psu.rb +29 -0
  462. data/generated_models/ncs_navigator/warehouse/models/two_point_two/ref_freezer_verification.rb +62 -0
  463. data/generated_models/ncs_navigator/warehouse/models/two_point_two/sample_dist.rb +74 -0
  464. data/generated_models/ncs_navigator/warehouse/models/two_point_two/sample_dist_samp.rb +50 -0
  465. data/generated_models/ncs_navigator/warehouse/models/two_point_two/sample_receipt_confirm.rb +53 -0
  466. data/generated_models/ncs_navigator/warehouse/models/two_point_two/sample_receipt_store.rb +65 -0
  467. data/generated_models/ncs_navigator/warehouse/models/two_point_two/sample_shipping.rb +53 -0
  468. data/generated_models/ncs_navigator/warehouse/models/two_point_two/six_mth_mother.rb +281 -0
  469. data/generated_models/ncs_navigator/warehouse/models/two_point_two/six_mth_mother_detail.rb +266 -0
  470. data/generated_models/ncs_navigator/warehouse/models/two_point_two/six_mth_mother_pet.rb +32 -0
  471. data/generated_models/ncs_navigator/warehouse/models/two_point_two/six_mth_saq.rb +218 -0
  472. data/generated_models/ncs_navigator/warehouse/models/two_point_two/six_mth_saq_2.rb +221 -0
  473. data/generated_models/ncs_navigator/warehouse/models/two_point_two/six_mth_saq_formula_type.rb +29 -0
  474. data/generated_models/ncs_navigator/warehouse/models/two_point_two/six_mth_saq_formula_type_2.rb +29 -0
  475. data/generated_models/ncs_navigator/warehouse/models/two_point_two/six_mth_saq_supp.rb +32 -0
  476. data/generated_models/ncs_navigator/warehouse/models/two_point_two/six_mth_saq_supp_2.rb +32 -0
  477. data/generated_models/ncs_navigator/warehouse/models/two_point_two/six_mth_saq_water.rb +29 -0
  478. data/generated_models/ncs_navigator/warehouse/models/two_point_two/six_mth_saq_water_2.rb +29 -0
  479. data/generated_models/ncs_navigator/warehouse/models/two_point_two/spec_blood.rb +194 -0
  480. data/generated_models/ncs_navigator/warehouse/models/two_point_two/spec_blood_2.rb +197 -0
  481. data/generated_models/ncs_navigator/warehouse/models/two_point_two/spec_blood_draw.rb +29 -0
  482. data/generated_models/ncs_navigator/warehouse/models/two_point_two/spec_blood_draw_2.rb +29 -0
  483. data/generated_models/ncs_navigator/warehouse/models/two_point_two/spec_blood_hemolyze.rb +29 -0
  484. data/generated_models/ncs_navigator/warehouse/models/two_point_two/spec_blood_hemolyze_2.rb +29 -0
  485. data/generated_models/ncs_navigator/warehouse/models/two_point_two/spec_blood_tube.rb +38 -0
  486. data/generated_models/ncs_navigator/warehouse/models/two_point_two/spec_blood_tube_2.rb +38 -0
  487. data/generated_models/ncs_navigator/warehouse/models/two_point_two/spec_blood_tube_comments.rb +29 -0
  488. data/generated_models/ncs_navigator/warehouse/models/two_point_two/spec_blood_tube_comments_2.rb +29 -0
  489. data/generated_models/ncs_navigator/warehouse/models/two_point_two/spec_cord_blood.rb +110 -0
  490. data/generated_models/ncs_navigator/warehouse/models/two_point_two/spec_cord_blood_2.rb +110 -0
  491. data/generated_models/ncs_navigator/warehouse/models/two_point_two/spec_cord_blood_3.rb +122 -0
  492. data/generated_models/ncs_navigator/warehouse/models/two_point_two/spec_cord_blood_specimen.rb +29 -0
  493. data/generated_models/ncs_navigator/warehouse/models/two_point_two/spec_cord_blood_specimen_2.rb +35 -0
  494. data/generated_models/ncs_navigator/warehouse/models/two_point_two/spec_cord_blood_specimen_3.rb +35 -0
  495. data/generated_models/ncs_navigator/warehouse/models/two_point_two/spec_equipment.rb +38 -0
  496. data/generated_models/ncs_navigator/warehouse/models/two_point_two/spec_pickup.rb +47 -0
  497. data/generated_models/ncs_navigator/warehouse/models/two_point_two/spec_receipt.rb +80 -0
  498. data/generated_models/ncs_navigator/warehouse/models/two_point_two/spec_shipping.rb +56 -0
  499. data/generated_models/ncs_navigator/warehouse/models/two_point_two/spec_spsc_info.rb +26 -0
  500. data/generated_models/ncs_navigator/warehouse/models/two_point_two/spec_storage.rb +62 -0
  501. data/generated_models/ncs_navigator/warehouse/models/two_point_two/spec_urine.rb +110 -0
  502. data/generated_models/ncs_navigator/warehouse/models/two_point_two/srsc_info.rb +26 -0
  503. data/generated_models/ncs_navigator/warehouse/models/two_point_two/ssu.rb +29 -0
  504. data/generated_models/ncs_navigator/warehouse/models/two_point_two/staff.rb +65 -0
  505. data/generated_models/ncs_navigator/warehouse/models/two_point_two/staff_cert_training.rb +47 -0
  506. data/generated_models/ncs_navigator/warehouse/models/two_point_two/staff_exp_data_cllctn_tasks.rb +44 -0
  507. data/generated_models/ncs_navigator/warehouse/models/two_point_two/staff_exp_mngmnt_tasks.rb +38 -0
  508. data/generated_models/ncs_navigator/warehouse/models/two_point_two/staff_language.rb +32 -0
  509. data/generated_models/ncs_navigator/warehouse/models/two_point_two/staff_validation.rb +38 -0
  510. data/generated_models/ncs_navigator/warehouse/models/two_point_two/staff_weekly_expense.rb +44 -0
  511. data/generated_models/ncs_navigator/warehouse/models/two_point_two/study_center.rb +26 -0
  512. data/generated_models/ncs_navigator/warehouse/models/two_point_two/subsample_doc.rb +29 -0
  513. data/generated_models/ncs_navigator/warehouse/models/two_point_two/tap_water_twf.rb +152 -0
  514. data/generated_models/ncs_navigator/warehouse/models/two_point_two/tap_water_twf_2.rb +155 -0
  515. data/generated_models/ncs_navigator/warehouse/models/two_point_two/tap_water_twf_blank_collected.rb +29 -0
  516. data/generated_models/ncs_navigator/warehouse/models/two_point_two/tap_water_twf_blank_collected_2.rb +29 -0
  517. data/generated_models/ncs_navigator/warehouse/models/two_point_two/tap_water_twf_dup_collected.rb +29 -0
  518. data/generated_models/ncs_navigator/warehouse/models/two_point_two/tap_water_twf_dup_collected_2.rb +29 -0
  519. data/generated_models/ncs_navigator/warehouse/models/two_point_two/tap_water_twf_dup_filled.rb +29 -0
  520. data/generated_models/ncs_navigator/warehouse/models/two_point_two/tap_water_twf_dup_filled_2.rb +29 -0
  521. data/generated_models/ncs_navigator/warehouse/models/two_point_two/tap_water_twf_n_collected.rb +29 -0
  522. data/generated_models/ncs_navigator/warehouse/models/two_point_two/tap_water_twf_n_collected_2.rb +29 -0
  523. data/generated_models/ncs_navigator/warehouse/models/two_point_two/tap_water_twf_reason_filled.rb +29 -0
  524. data/generated_models/ncs_navigator/warehouse/models/two_point_two/tap_water_twf_reason_filled2.rb +29 -0
  525. data/generated_models/ncs_navigator/warehouse/models/two_point_two/tap_water_twf_reason_filled2_2.rb +29 -0
  526. data/generated_models/ncs_navigator/warehouse/models/two_point_two/tap_water_twf_reason_filled_2.rb +29 -0
  527. data/generated_models/ncs_navigator/warehouse/models/two_point_two/tap_water_twf_sample.rb +32 -0
  528. data/generated_models/ncs_navigator/warehouse/models/two_point_two/tap_water_twf_sample_2.rb +32 -0
  529. data/generated_models/ncs_navigator/warehouse/models/two_point_two/tap_water_twf_saq.rb +98 -0
  530. data/generated_models/ncs_navigator/warehouse/models/two_point_two/tap_water_twf_saq_eat.rb +29 -0
  531. data/generated_models/ncs_navigator/warehouse/models/two_point_two/tap_water_twf_saq_prob.rb +32 -0
  532. data/generated_models/ncs_navigator/warehouse/models/two_point_two/tap_water_twf_subsamples.rb +29 -0
  533. data/generated_models/ncs_navigator/warehouse/models/two_point_two/tap_water_twf_subsamples_2.rb +29 -0
  534. data/generated_models/ncs_navigator/warehouse/models/two_point_two/tap_water_twq.rb +143 -0
  535. data/generated_models/ncs_navigator/warehouse/models/two_point_two/tap_water_twq_2.rb +146 -0
  536. data/generated_models/ncs_navigator/warehouse/models/two_point_two/tap_water_twq_blank_collected.rb +29 -0
  537. data/generated_models/ncs_navigator/warehouse/models/two_point_two/tap_water_twq_blank_collected_2.rb +29 -0
  538. data/generated_models/ncs_navigator/warehouse/models/two_point_two/tap_water_twq_dup_collected.rb +29 -0
  539. data/generated_models/ncs_navigator/warehouse/models/two_point_two/tap_water_twq_dup_collected_2.rb +29 -0
  540. data/generated_models/ncs_navigator/warehouse/models/two_point_two/tap_water_twq_dup_filled.rb +29 -0
  541. data/generated_models/ncs_navigator/warehouse/models/two_point_two/tap_water_twq_dup_filled_2.rb +29 -0
  542. data/generated_models/ncs_navigator/warehouse/models/two_point_two/tap_water_twq_n_collected.rb +29 -0
  543. data/generated_models/ncs_navigator/warehouse/models/two_point_two/tap_water_twq_n_collected_2.rb +29 -0
  544. data/generated_models/ncs_navigator/warehouse/models/two_point_two/tap_water_twq_reason_filled.rb +29 -0
  545. data/generated_models/ncs_navigator/warehouse/models/two_point_two/tap_water_twq_reason_filled2.rb +29 -0
  546. data/generated_models/ncs_navigator/warehouse/models/two_point_two/tap_water_twq_reason_filled2_2.rb +29 -0
  547. data/generated_models/ncs_navigator/warehouse/models/two_point_two/tap_water_twq_reason_filled_2.rb +29 -0
  548. data/generated_models/ncs_navigator/warehouse/models/two_point_two/tap_water_twq_sample.rb +32 -0
  549. data/generated_models/ncs_navigator/warehouse/models/two_point_two/tap_water_twq_sample_2.rb +32 -0
  550. data/generated_models/ncs_navigator/warehouse/models/two_point_two/tap_water_twq_saq.rb +98 -0
  551. data/generated_models/ncs_navigator/warehouse/models/two_point_two/tap_water_twq_saq_prob.rb +32 -0
  552. data/generated_models/ncs_navigator/warehouse/models/two_point_two/tap_water_twq_subsamples.rb +29 -0
  553. data/generated_models/ncs_navigator/warehouse/models/two_point_two/tap_water_twq_subsamples_2.rb +29 -0
  554. data/generated_models/ncs_navigator/warehouse/models/two_point_two/telephone.rb +83 -0
  555. data/generated_models/ncs_navigator/warehouse/models/two_point_two/three_mth_mother.rb +92 -0
  556. data/generated_models/ncs_navigator/warehouse/models/two_point_two/three_mth_mother_child_detail.rb +59 -0
  557. data/generated_models/ncs_navigator/warehouse/models/two_point_two/three_mth_mother_child_habits.rb +185 -0
  558. data/generated_models/ncs_navigator/warehouse/models/two_point_two/three_mth_mother_race.rb +32 -0
  559. data/generated_models/ncs_navigator/warehouse/models/two_point_two/trh_meter_calibration.rb +77 -0
  560. data/generated_models/ncs_navigator/warehouse/models/two_point_two/tsu.rb +29 -0
  561. data/generated_models/ncs_navigator/warehouse/models/two_point_two/twelve_mth_mother.rb +302 -0
  562. data/generated_models/ncs_navigator/warehouse/models/two_point_two/twelve_mth_mother_detail.rb +302 -0
  563. data/generated_models/ncs_navigator/warehouse/models/two_point_two/twelve_mth_mother_lice.rb +29 -0
  564. data/generated_models/ncs_navigator/warehouse/models/two_point_two/twelve_mth_mother_renovate_room.rb +32 -0
  565. data/generated_models/ncs_navigator/warehouse/models/two_point_two/twelve_mth_mother_room_mold.rb +32 -0
  566. data/generated_models/ncs_navigator/warehouse/models/two_point_two/twelve_mth_saq.rb +293 -0
  567. data/generated_models/ncs_navigator/warehouse/models/two_point_two/twelve_mth_saq_2.rb +296 -0
  568. data/generated_models/ncs_navigator/warehouse/models/two_point_two/twelve_mth_saq_formula_brand.rb +32 -0
  569. data/generated_models/ncs_navigator/warehouse/models/two_point_two/twelve_mth_saq_formula_brand_2.rb +32 -0
  570. data/generated_models/ncs_navigator/warehouse/models/two_point_two/twelve_mth_saq_formula_type.rb +29 -0
  571. data/generated_models/ncs_navigator/warehouse/models/two_point_two/twelve_mth_saq_formula_type_2.rb +29 -0
  572. data/generated_models/ncs_navigator/warehouse/models/two_point_two/twelve_mth_saq_supplement.rb +32 -0
  573. data/generated_models/ncs_navigator/warehouse/models/two_point_two/twelve_mth_saq_supplement_2.rb +32 -0
  574. data/generated_models/ncs_navigator/warehouse/models/two_point_two/twelve_mth_saq_water.rb +29 -0
  575. data/generated_models/ncs_navigator/warehouse/models/two_point_two/twelve_mth_saq_water_2.rb +32 -0
  576. data/generated_models/ncs_navigator/warehouse/models/two_point_two/twenty_four_mth_mother.rb +350 -0
  577. data/generated_models/ncs_navigator/warehouse/models/two_point_two/twenty_four_mth_mother_2.rb +353 -0
  578. data/generated_models/ncs_navigator/warehouse/models/two_point_two/twenty_four_mth_mother_cond.rb +29 -0
  579. data/generated_models/ncs_navigator/warehouse/models/two_point_two/twenty_four_mth_mother_detail.rb +50 -0
  580. data/generated_models/ncs_navigator/warehouse/models/two_point_two/twenty_four_mth_mother_detail_2.rb +50 -0
  581. data/generated_models/ncs_navigator/warehouse/models/two_point_two/twenty_four_mth_mother_habits.rb +194 -0
  582. data/generated_models/ncs_navigator/warehouse/models/two_point_two/twenty_four_mth_mother_habits_2.rb +200 -0
  583. data/generated_models/ncs_navigator/warehouse/models/two_point_two/twenty_four_mth_mother_mold.rb +32 -0
  584. data/generated_models/ncs_navigator/warehouse/models/two_point_two/twenty_four_mth_mother_mold_2.rb +32 -0
  585. data/generated_models/ncs_navigator/warehouse/models/two_point_two/twenty_four_mth_mother_otc.rb +47 -0
  586. data/generated_models/ncs_navigator/warehouse/models/two_point_two/twenty_four_mth_mother_otc_2.rb +47 -0
  587. data/generated_models/ncs_navigator/warehouse/models/two_point_two/twenty_four_mth_mother_prescr.rb +47 -0
  588. data/generated_models/ncs_navigator/warehouse/models/two_point_two/twenty_four_mth_mother_prescr_2.rb +47 -0
  589. data/generated_models/ncs_navigator/warehouse/models/two_point_two/twenty_four_mth_mother_suppl.rb +47 -0
  590. data/generated_models/ncs_navigator/warehouse/models/two_point_two/twenty_four_mth_mother_suppl_2.rb +47 -0
  591. data/generated_models/ncs_navigator/warehouse/models/two_point_two/twenty_four_mth_pet_type.rb +32 -0
  592. data/generated_models/ncs_navigator/warehouse/models/two_point_two/twenty_four_mth_pet_type_2.rb +32 -0
  593. data/generated_models/ncs_navigator/warehouse/models/two_point_two/twenty_four_mth_renovate_room.rb +32 -0
  594. data/generated_models/ncs_navigator/warehouse/models/two_point_two/twenty_four_mth_renovate_room_2.rb +32 -0
  595. data/generated_models/ncs_navigator/warehouse/models/two_point_two/twenty_four_mth_room_mold.rb +32 -0
  596. data/generated_models/ncs_navigator/warehouse/models/two_point_two/twenty_four_mth_room_mold_2.rb +32 -0
  597. data/generated_models/ncs_navigator/warehouse/models/two_point_two/twenty_four_mth_saq.rb +245 -0
  598. data/generated_models/ncs_navigator/warehouse/models/two_point_two/vacuum_bag.rb +131 -0
  599. data/generated_models/ncs_navigator/warehouse/models/two_point_two/vacuum_bag_2.rb +137 -0
  600. data/generated_models/ncs_navigator/warehouse/models/two_point_two/vacuum_bag_outside.rb +32 -0
  601. data/generated_models/ncs_navigator/warehouse/models/two_point_two/vacuum_bag_outside_2.rb +32 -0
  602. data/generated_models/ncs_navigator/warehouse/models/two_point_two/vacuum_bag_saq.rb +89 -0
  603. data/generated_models/ncs_navigator/warehouse/models/two_point_two/vacuum_bag_saq_outside.rb +32 -0
  604. data/generated_models/ncs_navigator/warehouse/models/two_point_two/vacuum_bag_saq_prob.rb +32 -0
  605. data/generated_models/ncs_navigator/warehouse/models/two_point_two/validation_ins.rb +233 -0
  606. data/generated_models/ncs_navigator/warehouse/models/two_point_zero.rb +53 -53
  607. data/generated_models/ncs_navigator/warehouse/models/two_point_zero/birth_visit_2.rb +1 -1
  608. data/generated_models/ncs_navigator/warehouse/models/two_point_zero/birth_visit_baby_name_2.rb +2 -2
  609. data/generated_models/ncs_navigator/warehouse/models/two_point_zero/birth_visit_decorate_room_2.rb +2 -2
  610. data/generated_models/ncs_navigator/warehouse/models/two_point_zero/birth_visit_renovate_room_2.rb +2 -2
  611. data/generated_models/ncs_navigator/warehouse/models/two_point_zero/pb_recruitment_2.rb +1 -1
  612. data/generated_models/ncs_navigator/warehouse/models/two_point_zero/pb_recruitment_info_source_2.rb +2 -2
  613. data/generated_models/ncs_navigator/warehouse/models/two_point_zero/pb_recruitment_prov_source_2.rb +2 -2
  614. data/generated_models/ncs_navigator/warehouse/models/two_point_zero/pb_recruitment_prov_svc_2.rb +2 -2
  615. data/generated_models/ncs_navigator/warehouse/models/two_point_zero/preg_screen_eh_2.rb +1 -1
  616. data/generated_models/ncs_navigator/warehouse/models/two_point_zero/preg_screen_eh_know_ncs_2.rb +2 -2
  617. data/generated_models/ncs_navigator/warehouse/models/two_point_zero/preg_screen_eh_race_2.rb +2 -2
  618. data/generated_models/ncs_navigator/warehouse/models/two_point_zero/preg_screen_hi_2.rb +1 -1
  619. data/generated_models/ncs_navigator/warehouse/models/two_point_zero/preg_screen_hi_know_ncs_2.rb +2 -2
  620. data/generated_models/ncs_navigator/warehouse/models/two_point_zero/preg_screen_hi_race_2.rb +2 -2
  621. data/generated_models/ncs_navigator/warehouse/models/two_point_zero/preg_screen_pb_2.rb +1 -1
  622. data/generated_models/ncs_navigator/warehouse/models/two_point_zero/preg_screen_pb_know_ncs_2.rb +2 -2
  623. data/generated_models/ncs_navigator/warehouse/models/two_point_zero/preg_screen_pb_race_2.rb +2 -2
  624. data/generated_models/ncs_navigator/warehouse/models/two_point_zero/preg_visit_1.rb +1 -1
  625. data/generated_models/ncs_navigator/warehouse/models/two_point_zero/preg_visit_1_2.rb +1 -1
  626. data/generated_models/ncs_navigator/warehouse/models/two_point_zero/preg_visit_1_commute.rb +1 -1
  627. data/generated_models/ncs_navigator/warehouse/models/two_point_zero/preg_visit_1_commute_2.rb +2 -2
  628. data/generated_models/ncs_navigator/warehouse/models/two_point_zero/preg_visit_1_cool.rb +1 -1
  629. data/generated_models/ncs_navigator/warehouse/models/two_point_zero/preg_visit_1_cool_2.rb +2 -2
  630. data/generated_models/ncs_navigator/warehouse/models/two_point_zero/preg_visit_1_diagnose_2.rb +2 -2
  631. data/generated_models/ncs_navigator/warehouse/models/two_point_zero/preg_visit_1_diagnose_2_2.rb +2 -2
  632. data/generated_models/ncs_navigator/warehouse/models/two_point_zero/preg_visit_1_heat2.rb +1 -1
  633. data/generated_models/ncs_navigator/warehouse/models/two_point_zero/preg_visit_1_heat2_2.rb +2 -2
  634. data/generated_models/ncs_navigator/warehouse/models/two_point_zero/preg_visit_1_local_trav.rb +1 -1
  635. data/generated_models/ncs_navigator/warehouse/models/two_point_zero/preg_visit_1_local_trav_2.rb +2 -2
  636. data/generated_models/ncs_navigator/warehouse/models/two_point_zero/preg_visit_1_nonenglish2_2.rb +2 -2
  637. data/generated_models/ncs_navigator/warehouse/models/two_point_zero/preg_visit_1_pdecorate_room.rb +1 -1
  638. data/generated_models/ncs_navigator/warehouse/models/two_point_zero/preg_visit_1_pdecorate_room_2.rb +2 -2
  639. data/generated_models/ncs_navigator/warehouse/models/two_point_zero/preg_visit_1_pet_type.rb +1 -1
  640. data/generated_models/ncs_navigator/warehouse/models/two_point_zero/preg_visit_1_pet_type_2.rb +2 -2
  641. data/generated_models/ncs_navigator/warehouse/models/two_point_zero/preg_visit_1_prenovate2_room.rb +1 -1
  642. data/generated_models/ncs_navigator/warehouse/models/two_point_zero/preg_visit_1_prenovate_room.rb +1 -1
  643. data/generated_models/ncs_navigator/warehouse/models/two_point_zero/preg_visit_1_prenovate_room_2.rb +2 -2
  644. data/generated_models/ncs_navigator/warehouse/models/two_point_zero/preg_visit_1_room_mold.rb +1 -1
  645. data/generated_models/ncs_navigator/warehouse/models/two_point_zero/preg_visit_1_room_mold_2.rb +2 -2
  646. data/generated_models/ncs_navigator/warehouse/models/two_point_zero/preg_visit_1_saq_2.rb +1 -1
  647. data/generated_models/ncs_navigator/warehouse/models/two_point_zero/preg_visit_1_sp_race.rb +1 -1
  648. data/generated_models/ncs_navigator/warehouse/models/two_point_zero/preg_visit_1_sp_race_2.rb +2 -2
  649. data/generated_models/ncs_navigator/warehouse/models/two_point_zero/preg_visit_2.rb +1 -1
  650. data/generated_models/ncs_navigator/warehouse/models/two_point_zero/preg_visit_2_2.rb +1 -1
  651. data/generated_models/ncs_navigator/warehouse/models/two_point_zero/preg_visit_2_cool.rb +1 -1
  652. data/generated_models/ncs_navigator/warehouse/models/two_point_zero/preg_visit_2_cool_2.rb +2 -2
  653. data/generated_models/ncs_navigator/warehouse/models/two_point_zero/preg_visit_2_diagnose_2.rb +2 -2
  654. data/generated_models/ncs_navigator/warehouse/models/two_point_zero/preg_visit_2_diagnose_2_2.rb +2 -2
  655. data/generated_models/ncs_navigator/warehouse/models/two_point_zero/preg_visit_2_heat2.rb +1 -1
  656. data/generated_models/ncs_navigator/warehouse/models/two_point_zero/preg_visit_2_heat2_2.rb +2 -2
  657. data/generated_models/ncs_navigator/warehouse/models/two_point_zero/preg_visit_2_pdecorate2_room.rb +1 -1
  658. data/generated_models/ncs_navigator/warehouse/models/two_point_zero/preg_visit_2_pdecorate2_room_2.rb +2 -2
  659. data/generated_models/ncs_navigator/warehouse/models/two_point_zero/preg_visit_2_prenovate_room.rb +1 -1
  660. data/generated_models/ncs_navigator/warehouse/models/two_point_zero/preg_visit_2_prenovate_room_2.rb +2 -2
  661. data/generated_models/ncs_navigator/warehouse/models/two_point_zero/preg_visit_2_room_mold.rb +1 -1
  662. data/generated_models/ncs_navigator/warehouse/models/two_point_zero/preg_visit_2_room_mold_2.rb +2 -2
  663. data/generated_models/ncs_navigator/warehouse/models/two_point_zero/preg_visit_2_saq_2.rb +1 -1
  664. data/generated_models/ncs_navigator/warehouse/models/two_point_zero/preg_visit_li_2.rb +1 -1
  665. data/generated_models/ncs_navigator/warehouse/models/two_point_zero/preg_visit_li_cool_2.rb +2 -2
  666. data/generated_models/ncs_navigator/warehouse/models/two_point_zero/six_mth_saq_2.rb +1 -1
  667. data/generated_models/ncs_navigator/warehouse/models/two_point_zero/six_mth_saq_formula_type_2.rb +2 -2
  668. data/generated_models/ncs_navigator/warehouse/models/two_point_zero/six_mth_saq_supp_2.rb +2 -2
  669. data/generated_models/ncs_navigator/warehouse/models/two_point_zero/six_mth_saq_water_2.rb +2 -2
  670. data/generated_models/ncs_navigator/warehouse/models/two_point_zero/twelve_mth_saq_2.rb +1 -1
  671. data/generated_models/ncs_navigator/warehouse/models/two_point_zero/twelve_mth_saq_formula_brand_2.rb +2 -2
  672. data/generated_models/ncs_navigator/warehouse/models/two_point_zero/twelve_mth_saq_formula_type_2.rb +2 -2
  673. data/generated_models/ncs_navigator/warehouse/models/two_point_zero/twelve_mth_saq_supplement_2.rb +2 -2
  674. data/generated_models/ncs_navigator/warehouse/models/two_point_zero/twelve_mth_saq_water_2.rb +2 -2
  675. data/lib/ncs_navigator/warehouse/cli.rb +33 -0
  676. data/lib/ncs_navigator/warehouse/configuration/file_evaluator.rb +9 -0
  677. data/lib/ncs_navigator/warehouse/table_modeler/mdes_ext.rb +6 -1
  678. data/lib/ncs_navigator/warehouse/transform_load.rb +6 -0
  679. data/lib/ncs_navigator/warehouse/transformers.rb +11 -5
  680. data/lib/ncs_navigator/warehouse/transformers/apply_global_values_filter.rb +63 -0
  681. data/lib/ncs_navigator/warehouse/transformers/coded_as_missing_filter.rb +91 -0
  682. data/lib/ncs_navigator/warehouse/transformers/database.rb +1 -1
  683. data/lib/ncs_navigator/warehouse/transformers/enum_transformer.rb +34 -15
  684. data/lib/ncs_navigator/warehouse/transformers/filters.rb +66 -0
  685. data/lib/ncs_navigator/warehouse/transformers/no_blank_foreign_keys_filter.rb +29 -0
  686. data/lib/ncs_navigator/warehouse/transformers/no_ssu_outreach_all_ssus_filter.rb +102 -0
  687. data/lib/ncs_navigator/warehouse/transformers/no_ssu_outreach_placeholder_filter.rb +61 -0
  688. data/lib/ncs_navigator/warehouse/transformers/vdr_xml.rb +7 -4
  689. data/lib/ncs_navigator/warehouse/transformers/vdr_xml/reader.rb +1 -13
  690. data/lib/ncs_navigator/warehouse/version.rb +1 -1
  691. data/ncs_mdes_warehouse.gemspec +1 -1
  692. data/spec/ncs_navigator/warehouse/configuration_spec.rb +16 -0
  693. data/spec/ncs_navigator/warehouse/models_spec.rb +13 -0
  694. data/spec/ncs_navigator/warehouse/table_modeler_spec.rb +7 -1
  695. data/spec/ncs_navigator/warehouse/transformers/apply_global_values_filter_spec.rb +44 -0
  696. data/spec/ncs_navigator/warehouse/transformers/coded_as_missing_filter_spec.rb +68 -0
  697. data/spec/ncs_navigator/warehouse/transformers/database_spec.rb +9 -1
  698. data/spec/ncs_navigator/warehouse/transformers/enum_transformer_spec.rb +72 -27
  699. data/spec/ncs_navigator/warehouse/transformers/filters_spec.rb +97 -0
  700. data/spec/ncs_navigator/warehouse/transformers/no_blank_foreign_keys_filter_spec.rb +29 -0
  701. data/spec/ncs_navigator/warehouse/transformers/no_ssu_outreach_all_ssus_filter_spec.rb +166 -0
  702. data/spec/ncs_navigator/warehouse/transformers/no_ssu_outreach_placeholder_filter_spec.rb +60 -0
  703. data/spec/ncs_navigator/warehouse/transformers/sampling_units_spec.rb +5 -4
  704. data/spec/ncs_navigator/warehouse/transformers/vdr_xml/reader_spec.rb +2 -32
  705. data/spec/ncs_navigator/warehouse/transformers/vdr_xml_spec.rb +7 -2
  706. data/spec/spec_helper.rb +18 -4
  707. data/spec/test_samples.csv +1 -0
  708. metadata +918 -293
@@ -0,0 +1,91 @@
1
+ require 'ncs_navigator/warehouse'
2
+
3
+ module NcsNavigator::Warehouse::Transformers
4
+ ##
5
+ # Some source data sets include unnecessary placeholder records and
6
+ # values. This filter excludes the following variables and records:
7
+ #
8
+ # * Entire records whose ID is one of the common MDES error codes
9
+ # (-3, -4, -6, -7).
10
+ #
11
+ # * Foreign key values whose ID is one of those same MDES error
12
+ # codes.
13
+ #
14
+ # * Variable values which are not required and not coded whose value
15
+ # is one of these error codes (e.g., a comments field whose value
16
+ # is '-7').
17
+ #
18
+ # If the `:additional_codes` option is passed to the constructor,
19
+ # those codes will be used in addition to the default list (i.e.,
20
+ # -3, -4, -6, -7).
21
+ #
22
+ # This filter may be used with or without instantiation.
23
+ class CodedAsMissingFilter
24
+ DEFAULT_MISSING_CODES = %w(-3 -4 -6 -7)
25
+
26
+ class << self
27
+ def call(records)
28
+ singleton.call(records)
29
+ end
30
+
31
+ private
32
+
33
+ def singleton
34
+ @singleton ||= CodedAsMissingFilter.new
35
+ end
36
+ end
37
+
38
+ attr_reader :missing_codes
39
+
40
+ ##
41
+ # @param configuration [Configuration]
42
+ # @param options [Hash<Symbol, Object>]
43
+ # @option options [Array<String>] :additional_codes a list of
44
+ # other codes (beyond the defaults) which will also be treated
45
+ # as "missing" for the purposes of this filter.
46
+ def initialize(configuration=nil, options={})
47
+ @missing_codes = DEFAULT_MISSING_CODES.dup
48
+ if options[:additional_codes]
49
+ @missing_codes += options[:additional_codes]
50
+ end
51
+ end
52
+
53
+ def call(records)
54
+ records.collect { |r| process(r) }.compact
55
+ end
56
+
57
+ private
58
+
59
+ def process(record)
60
+ return nil if missing_codes.include?(record.key.first)
61
+
62
+ remove_missing_foreign_keys(record)
63
+ remove_missing_noncoded_values(record)
64
+
65
+ record
66
+ end
67
+
68
+ def remove_missing_foreign_keys(record)
69
+ record.class.relationships.each do |rel|
70
+ reference_key = rel.child_key.first.name
71
+ reference_value = record.send(reference_key)
72
+
73
+ if reference_value && missing_codes.include?(reference_value)
74
+ record.send("#{reference_key}=", nil)
75
+ end
76
+ end
77
+ end
78
+
79
+ def remove_missing_noncoded_values(record)
80
+ record.class.properties.each do |prop|
81
+ unless prop.required? || prop.options[:set]
82
+ prop_value = record.send(prop.name)
83
+ if missing_codes.include?(prop_value)
84
+ record.send("#{prop.name}=", nil)
85
+ end
86
+ end
87
+ end
88
+ end
89
+
90
+ end
91
+ end
@@ -406,7 +406,7 @@ module NcsNavigator::Warehouse::Transformers
406
406
  # enumerable.
407
407
  # @see EnumTransformer
408
408
  def create_transformer(configuration, options={})
409
- EnumTransformer.new(configuration, new(configuration, options))
409
+ EnumTransformer.new(configuration, new(configuration, options), options)
410
410
  end
411
411
  end
412
412
 
@@ -31,16 +31,31 @@ module NcsNavigator::Warehouse::Transformers
31
31
  # @return [Enumerable] the enumeration that will be transformed.
32
32
  attr_reader :enum
33
33
 
34
+ ##
35
+ # @return [Filters] the filters in use on this transformer.
36
+ attr_reader :filters
37
+
34
38
  def_delegators :@configuration, :log, :shell
35
39
 
36
40
  ##
37
41
  # @param [Configuration] configuration
38
42
  # @param [Enumerable] enum
39
- def initialize(configuration, enum)
43
+ # @param [Hash<Symbol, Object>] options
44
+ # @option options [Array<#call>,#call] :filters a list of
45
+ # filters to use for this transformer
46
+ #
47
+ # @see Filters
48
+ def initialize(configuration, enum, options={})
40
49
  @configuration = configuration
41
50
  @enum = enum
51
+ filter_list = options.delete(:filters)
52
+ @filters = Filters.new(filter_list ? [*filter_list].compact : [])
42
53
  end
43
54
 
55
+ ##
56
+ # A human-readable name for this transformer.
57
+ #
58
+ # @return [String]
44
59
  def name
45
60
  enum_name = if enum.respond_to?(:name)
46
61
  enum.name
@@ -74,14 +89,19 @@ module NcsNavigator::Warehouse::Transformers
74
89
  when NcsNavigator::Warehouse::TransformError
75
90
  receive_transform_error(record, status)
76
91
  else
77
- save_model_instance(record, status)
92
+ filters.call([record]).each do |filtered_record|
93
+ save_model_instance(filtered_record, status)
94
+ end
78
95
  end
79
96
  end
80
97
  end
81
98
 
82
99
  def save_model_instance(record, status)
83
- apply_global_values_if_necessary(record)
84
- if record.valid?
100
+ if !has_valid_psu?(record)
101
+ msg = "Invalid PSU ID #{record.psu_id.inspect}. The list of valid PSU IDs for this Study Center is #{@configuration.navigator.psus.collect(&:id).inspect}."
102
+ log.error "#{record_ident record}: #{msg}"
103
+ status.unsuccessful_record(record, msg)
104
+ elsif record.valid?
85
105
  log.debug("Saving valid record #{record_ident record}.")
86
106
  begin
87
107
  unless record.save
@@ -122,17 +142,16 @@ module NcsNavigator::Warehouse::Transformers
122
142
  }.flatten
123
143
  end
124
144
 
125
- def apply_global_values_if_necessary(record)
126
- {
127
- :psu_id => @configuration.navigator.psus.first.id,
128
- :recruit_type => @configuration.navigator.recruitment_type_id
129
- }.each do |attr, value|
130
- setter = :"#{attr}="
131
- if record.respond_to?(setter) && record.respond_to?(attr)
132
- unless record.send(attr)
133
- record.send(setter, value)
134
- end
135
- end
145
+ ##
146
+ # Has valid PSU is true if:
147
+ # * The record has no PSU reference, or
148
+ # * The record's PSU ID is one of those configured for the
149
+ # study center
150
+ def has_valid_psu?(record)
151
+ if record.respond_to?(:psu_id)
152
+ @configuration.navigator.psus.collect(&:id).include?(record.psu_id)
153
+ else
154
+ true
136
155
  end
137
156
  end
138
157
  end
@@ -0,0 +1,66 @@
1
+ require 'forwardable'
2
+
3
+ module NcsNavigator::Warehouse::Transformers
4
+ ##
5
+ # Encapsulates an ordered list of filters that can be applied to a
6
+ # record coming out of an enumeration in {EnumTransformer}.
7
+ #
8
+ # Each filter is an object with an `call` method. The `call`
9
+ # method takes an array of zero or more records as input and returns
10
+ # an array of zero or more records. The input and output arrays may
11
+ # be the same or different. A filter may add, remove, or mutate
12
+ # records (or all three).
13
+ #
14
+ # A filter will be called multiple times for a single transform run,
15
+ # but it will never see the same record twice. To put it another
16
+ # way, the first filter will be invoked exactly once per record
17
+ # yielded from an {EnumTransformer}'s enumeration. Subsequent
18
+ # filters are invoked on return value from the previous filter.
19
+ #
20
+ # Depending on the filter order, a particular filter may never see
21
+ # some of the eventually transformed records. This will happen if
22
+ # records are created by a filter lower in the filter chain.
23
+ class Filters
24
+ include Enumerable
25
+ extend Forwardable
26
+
27
+ def_delegators :@filters, :each
28
+
29
+ attr_accessor :filters
30
+
31
+ def initialize(filter_objects)
32
+ check_filters(filter_objects)
33
+
34
+ @filters = filter_objects
35
+ end
36
+
37
+ ##
38
+ # @param records [Array] zero or more records to filter.
39
+ # @return [Array] the filtered records.
40
+ def call(records)
41
+ filters.inject(ensure_array(records)) { |result, filter| ensure_array(filter.call(result)) }
42
+ end
43
+
44
+ private
45
+
46
+ def check_filters(candidates)
47
+ candidates.each_with_index do |f, i|
48
+ unless f.respond_to?(:call)
49
+ fail "Filter #{i} (#{f.class}) does not have a call method"
50
+ end
51
+ end
52
+ end
53
+
54
+ def ensure_array(records)
55
+ case records
56
+ when nil
57
+ []
58
+ when Enumerable
59
+ records.to_a
60
+ else
61
+ [records]
62
+ end
63
+ end
64
+ end
65
+ end
66
+
@@ -0,0 +1,29 @@
1
+ require 'ncs_navigator/warehouse'
2
+
3
+ module NcsNavigator::Warehouse::Transformers
4
+ ##
5
+ # This filter transforms any blank foreign keys into nil. Blank
6
+ # foreign keys are a common issue in source XML data.
7
+ #
8
+ # This filter is stateless and so should not be instantiated when
9
+ # added to a warehouse's configuration.
10
+ class NoBlankForeignKeysFilter
11
+ def self.call(records)
12
+ records.each do |record|
13
+ remove_missing_foreign_keys(record)
14
+ end
15
+ end
16
+
17
+ private
18
+
19
+ def self.remove_missing_foreign_keys(record)
20
+ record.class.relationships.each do |rel|
21
+ reference_key = rel.child_key.first.name
22
+ reference_value = record.send(reference_key)
23
+ if reference_value && reference_value.strip.empty?
24
+ record.send("#{reference_key}=", nil)
25
+ end
26
+ end
27
+ end
28
+ end
29
+ end
@@ -0,0 +1,102 @@
1
+ require 'ncs_navigator/warehouse'
2
+
3
+ module NcsNavigator::Warehouse::Transformers
4
+ ##
5
+ # A filter which duplicates outreach event records that don't have
6
+ # an SSU ID across all of a center's SSUs.
7
+ #
8
+ # This filter is intended for use when reading a center's VDR XML
9
+ # into the warehouse for eventual import into a new NCS Navigator
10
+ # instance. Some centers have outreach events which are not
11
+ # associated with any SSUs in their XML. They intend this in
12
+ # indicate that the outreach events are associated with all the
13
+ # center's SSUs. This filter makes that happen.
14
+ #
15
+ # This filter is stateful and so needs to be instantiated when being
16
+ # added to the warehouse configuration.
17
+ class NoSsuOutreachAllSsusFilter
18
+ attr_reader :ssu_ids
19
+
20
+ ##
21
+ # @param configuration [Configuration] the warehouse
22
+ # configuration.
23
+ # @param options [Hash<Symbol, Object>]
24
+ # @option options [Array<String>] :ssu_ids by default, full set of
25
+ # SSU IDs is derived from the navigator suite configuration. It
26
+ # can be overridden with this option.
27
+ def initialize(configuration, options={})
28
+ @configuration = configuration
29
+ @ssu_ids = options[:ssu_ids] || default_ssu_ids
30
+
31
+ @outreach_model = configuration.models_module.const_get(:Outreach)
32
+ @outreach_associated_models = configuration.models_module.mdes_order.select { |model|
33
+ model.relationships.detect { |rel| rel.parent_model == @outreach_model }
34
+ }
35
+
36
+ @replicated_outreach_event_ids = {}
37
+ end
38
+
39
+ def call(records)
40
+ [].tap do |result|
41
+ records.each do |rec|
42
+ if is_no_ssu_outreach?(rec)
43
+ result.concat replicate_outreach_across_ssus(rec)
44
+ elsif is_replicated_oe_associate?(rec)
45
+ result.concat replicate_associated_record(rec)
46
+ else
47
+ result << rec
48
+ end
49
+ end
50
+ end
51
+ end
52
+
53
+ private
54
+
55
+ def default_ssu_ids
56
+ @configuration.navigator.ssus.collect(&:id)
57
+ end
58
+
59
+ def is_no_ssu_outreach?(record)
60
+ record.class == @outreach_model && record.ssu_id.nil?
61
+ end
62
+
63
+ def is_replicated_oe_associate?(record)
64
+ @outreach_associated_models.include?(record.class) &&
65
+ @replicated_outreach_event_ids.keys.include?(record.outreach_event_id)
66
+ end
67
+
68
+ def replicate_outreach_across_ssus(outreach_event)
69
+ oe_id = outreach_event.outreach_event_id
70
+
71
+ replica_ids = ssu_ids.collect { |ssu_id| [ssu_id, create_replica_id(oe_id, ssu_id)] }
72
+
73
+ @replicated_outreach_event_ids[oe_id] = replica_ids
74
+
75
+ replica_ids.collect { |ssu_id, replica_oe_id|
76
+ outreach_event.class.new(
77
+ outreach_event.attributes.
78
+ merge(:ssu_id => ssu_id, :outreach_event_id => replica_oe_id)
79
+ )
80
+ }
81
+ end
82
+
83
+ def create_replica_id(base_id, ssu_id)
84
+ [base_id, ssu_id].join('-')
85
+ end
86
+
87
+ def replicate_associated_record(record)
88
+ replica_oe_ids = @replicated_outreach_event_ids[record.outreach_event_id]
89
+
90
+ associated_key_name = record.class.key.first.name
91
+
92
+ replica_oe_ids.collect { |ssu_id, replica_oe_id|
93
+ record.class.new(
94
+ record.attributes.merge(
95
+ :outreach_event_id => replica_oe_id,
96
+ associated_key_name => create_replica_id(record.key.first, ssu_id)
97
+ )
98
+ )
99
+ }
100
+ end
101
+ end
102
+ end
@@ -0,0 +1,61 @@
1
+ require 'ncs_navigator/warehouse'
2
+
3
+ module NcsNavigator::Warehouse::Transformers
4
+ ##
5
+ # A filter which associates outreach event records that don't have
6
+ # an SSU ID with an automatically-created placeholder SSU.
7
+ #
8
+ # This filter is intended for use when reading a center's VDR XML
9
+ # into the warehouse for eventual import into a new NCS Navigator
10
+ # instance. Some centers have outreach events which are not
11
+ # logically associated with any SSUs. This scenario is permitted in
12
+ # MDES 2.1+, but not in MDES 2.0. This filter provides a shim to
13
+ # allow their data to be loaded, both into the warehouse and
14
+ # eventually into Staff Portal. The shim will be removed after they
15
+ # are upgraded to MDES 2.1.
16
+ #
17
+ # This filter is stateful and so needs to be instantiated when being
18
+ # added to the warehouse configuration.
19
+ class NoSsuOutreachPlaceholderFilter
20
+ PLACEHOLDER_SSU_ID = 'NO_SSU_PLACEHOLDER_PRE_MDES_2_1'
21
+
22
+ def initialize(configuration)
23
+ @configuration = configuration
24
+ @outreach_model = configuration.models_module.const_get(:Outreach)
25
+ end
26
+
27
+ def call(records)
28
+ return records unless has_any_no_ssu_outreach?(records)
29
+
30
+ unless @placeholder_ssu_created
31
+ records.unshift(create_placeholder_ssu)
32
+ @placeholder_ssu_created = true
33
+ end
34
+
35
+ records.each do |rec|
36
+ rec.ssu_id = PLACEHOLDER_SSU_ID if is_no_ssu_outreach?(rec)
37
+ end
38
+
39
+ records
40
+ end
41
+
42
+ private
43
+
44
+ def has_any_no_ssu_outreach?(records)
45
+ records.detect { |r| is_no_ssu_outreach?(r) }
46
+ end
47
+
48
+ def is_no_ssu_outreach?(record)
49
+ record.class == @outreach_model && record.ssu_id.nil?
50
+ end
51
+
52
+ def create_placeholder_ssu
53
+ @configuration.models_module.const_get(:Ssu).new(
54
+ :ssu_id => PLACEHOLDER_SSU_ID,
55
+ :ssu_name => 'Placeholder SSU for no-SSU outreach events until upgraded to MDES 2.0',
56
+ :psu_id => @configuration.navigator.psus.first.id,
57
+ :sc_id => @configuration.navigator.study_center_id
58
+ )
59
+ end
60
+ end
61
+ end