ipa_test_kit 0.2.0 → 0.3.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (413) hide show
  1. checksums.yaml +4 -4
  2. data/lib/ipa_test_kit/custom_groups/v1.0.0/capability_statement/conformance_support_test.rb +43 -0
  3. data/lib/ipa_test_kit/custom_groups/v1.0.0/capability_statement/fhir_version_test.rb +17 -0
  4. data/lib/ipa_test_kit/custom_groups/v1.0.0/capability_statement/instantiates_ig_test.rb +22 -0
  5. data/lib/ipa_test_kit/custom_groups/v1.0.0/capability_statement/json_support_test.rb +41 -0
  6. data/lib/ipa_test_kit/custom_groups/v1.0.0/capability_statement/profile_support_test.rb +65 -0
  7. data/lib/ipa_test_kit/custom_groups/v1.0.0/capability_statement_group.rb +73 -0
  8. data/lib/ipa_test_kit/custom_groups/v1.0.0/ipa_smart_launch_group.rb +108 -0
  9. data/lib/ipa_test_kit/fhir_resource_navigation.rb +12 -3
  10. data/lib/ipa_test_kit/generated/v1.0.0/allergy_intolerance/allergy_intolerance_must_support_test.rb +46 -0
  11. data/lib/ipa_test_kit/generated/v1.0.0/allergy_intolerance/allergy_intolerance_patient_clinical_status_search_test.rb +50 -0
  12. data/lib/ipa_test_kit/generated/v1.0.0/allergy_intolerance/allergy_intolerance_patient_search_test.rb +63 -0
  13. data/lib/ipa_test_kit/generated/v1.0.0/allergy_intolerance/allergy_intolerance_provenance_revinclude_search_test.rb +51 -0
  14. data/lib/ipa_test_kit/generated/v1.0.0/allergy_intolerance/allergy_intolerance_read_test.rb +26 -0
  15. data/lib/ipa_test_kit/generated/v1.0.0/allergy_intolerance/allergy_intolerance_reference_resolution_test.rb +42 -0
  16. data/lib/ipa_test_kit/generated/v1.0.0/allergy_intolerance/allergy_intolerance_validation_test.rb +40 -0
  17. data/lib/ipa_test_kit/generated/{allergy_intolerance → v1.0.0/allergy_intolerance}/metadata.yml +88 -58
  18. data/lib/ipa_test_kit/generated/{allergy_intolerance_group.rb → v1.0.0/allergy_intolerance_group.rb} +31 -24
  19. data/lib/ipa_test_kit/generated/v1.0.0/condition/condition_must_support_test.rb +47 -0
  20. data/lib/ipa_test_kit/generated/v1.0.0/condition/condition_patient_category_clinical_status_search_test.rb +50 -0
  21. data/lib/ipa_test_kit/generated/v1.0.0/condition/condition_patient_category_search_test.rb +50 -0
  22. data/lib/ipa_test_kit/generated/v1.0.0/condition/condition_patient_clinical_status_search_test.rb +50 -0
  23. data/lib/ipa_test_kit/generated/v1.0.0/condition/condition_patient_code_search_test.rb +50 -0
  24. data/lib/ipa_test_kit/generated/v1.0.0/condition/condition_patient_onset_date_search_test.rb +49 -0
  25. data/lib/ipa_test_kit/generated/v1.0.0/condition/condition_patient_search_test.rb +63 -0
  26. data/lib/ipa_test_kit/generated/v1.0.0/condition/condition_provenance_revinclude_search_test.rb +51 -0
  27. data/lib/ipa_test_kit/generated/v1.0.0/condition/condition_read_test.rb +26 -0
  28. data/lib/ipa_test_kit/generated/v1.0.0/condition/condition_reference_resolution_test.rb +42 -0
  29. data/lib/ipa_test_kit/generated/v1.0.0/condition/condition_validation_test.rb +40 -0
  30. data/lib/ipa_test_kit/generated/v1.0.0/condition/metadata.yml +290 -0
  31. data/lib/ipa_test_kit/generated/{condition_group.rb → v1.0.0/condition_group.rb} +38 -29
  32. data/lib/ipa_test_kit/generated/v1.0.0/document_reference/document_reference_id_search_test.rb +43 -0
  33. data/lib/ipa_test_kit/generated/v1.0.0/document_reference/document_reference_must_support_test.rb +56 -0
  34. data/lib/ipa_test_kit/generated/v1.0.0/document_reference/document_reference_patient_category_date_search_test.rb +48 -0
  35. data/lib/ipa_test_kit/generated/v1.0.0/document_reference/document_reference_patient_category_search_test.rb +48 -0
  36. data/lib/ipa_test_kit/generated/v1.0.0/document_reference/document_reference_patient_contenttype_search_test.rb +49 -0
  37. data/lib/ipa_test_kit/generated/v1.0.0/document_reference/document_reference_patient_search_test.rb +64 -0
  38. data/lib/ipa_test_kit/generated/v1.0.0/document_reference/document_reference_patient_status_search_test.rb +49 -0
  39. data/lib/ipa_test_kit/generated/v1.0.0/document_reference/document_reference_patient_type_date_search_test.rb +50 -0
  40. data/lib/ipa_test_kit/generated/v1.0.0/document_reference/document_reference_patient_type_period_search_test.rb +50 -0
  41. data/lib/ipa_test_kit/generated/v1.0.0/document_reference/document_reference_patient_type_search_test.rb +48 -0
  42. data/lib/ipa_test_kit/generated/v1.0.0/document_reference/document_reference_provenance_revinclude_search_test.rb +51 -0
  43. data/lib/ipa_test_kit/generated/v1.0.0/document_reference/document_reference_read_test.rb +26 -0
  44. data/lib/ipa_test_kit/generated/v1.0.0/document_reference/document_reference_reference_resolution_test.rb +44 -0
  45. data/lib/ipa_test_kit/generated/v1.0.0/document_reference/document_reference_validation_test.rb +40 -0
  46. data/lib/ipa_test_kit/generated/{document_reference → v1.0.0/document_reference}/metadata.yml +197 -188
  47. data/lib/ipa_test_kit/generated/{document_reference_group.rb → v1.0.0/document_reference_group.rb} +45 -34
  48. data/lib/ipa_test_kit/generated/v1.0.0/immunization/immunization_must_support_test.rb +47 -0
  49. data/lib/ipa_test_kit/generated/v1.0.0/immunization/immunization_patient_date_search_test.rb +49 -0
  50. data/lib/ipa_test_kit/generated/v1.0.0/immunization/immunization_patient_search_test.rb +63 -0
  51. data/lib/ipa_test_kit/generated/v1.0.0/immunization/immunization_patient_status_search_test.rb +49 -0
  52. data/lib/ipa_test_kit/generated/v1.0.0/immunization/immunization_provenance_revinclude_search_test.rb +51 -0
  53. data/lib/ipa_test_kit/generated/v1.0.0/immunization/immunization_read_test.rb +26 -0
  54. data/lib/ipa_test_kit/generated/v1.0.0/immunization/immunization_reference_resolution_test.rb +42 -0
  55. data/lib/ipa_test_kit/generated/v1.0.0/immunization/immunization_validation_test.rb +40 -0
  56. data/lib/ipa_test_kit/generated/v1.0.0/immunization/metadata.yml +245 -0
  57. data/lib/ipa_test_kit/generated/{immunization_group.rb → v1.0.0/immunization_group.rb} +32 -25
  58. data/lib/ipa_test_kit/generated/v1.0.0/ipa_test_suite.rb +113 -0
  59. data/lib/ipa_test_kit/generated/v1.0.0/medication/medication_must_support_test.rb +43 -0
  60. data/lib/ipa_test_kit/generated/v1.0.0/medication/medication_read_test.rb +26 -0
  61. data/lib/ipa_test_kit/generated/v1.0.0/medication/medication_validation_test.rb +39 -0
  62. data/lib/ipa_test_kit/generated/v1.0.0/medication/metadata.yml +52 -0
  63. data/lib/ipa_test_kit/generated/v1.0.0/medication_group.rb +61 -0
  64. data/lib/ipa_test_kit/generated/v1.0.0/medication_request/medication_request_category_search_test.rb +51 -0
  65. data/lib/ipa_test_kit/generated/v1.0.0/medication_request/medication_request_code_search_test.rb +50 -0
  66. data/lib/ipa_test_kit/generated/v1.0.0/medication_request/medication_request_must_support_test.rb +52 -0
  67. data/lib/ipa_test_kit/generated/v1.0.0/medication_request/medication_request_patient_intent_authoredon_search_test.rb +54 -0
  68. data/lib/ipa_test_kit/generated/v1.0.0/medication_request/medication_request_patient_intent_search_test.rb +54 -0
  69. data/lib/ipa_test_kit/generated/v1.0.0/medication_request/medication_request_patient_intent_status_search_test.rb +54 -0
  70. data/lib/ipa_test_kit/generated/v1.0.0/medication_request/medication_request_patient_search_test.rb +69 -0
  71. data/lib/ipa_test_kit/generated/v1.0.0/medication_request/medication_request_provenance_revinclude_search_test.rb +51 -0
  72. data/lib/ipa_test_kit/generated/v1.0.0/medication_request/medication_request_read_test.rb +26 -0
  73. data/lib/ipa_test_kit/generated/v1.0.0/medication_request/medication_request_reference_resolution_test.rb +46 -0
  74. data/lib/ipa_test_kit/generated/v1.0.0/medication_request/medication_request_validation_test.rb +40 -0
  75. data/lib/ipa_test_kit/generated/v1.0.0/medication_request/medication_validation_test.rb +39 -0
  76. data/lib/ipa_test_kit/generated/v1.0.0/medication_request/metadata.yml +370 -0
  77. data/lib/ipa_test_kit/generated/{medication_request_group.rb → v1.0.0/medication_request_group.rb} +39 -31
  78. data/lib/ipa_test_kit/generated/v1.0.0/medication_statement/medication_statement_must_support_test.rb +51 -0
  79. data/lib/ipa_test_kit/generated/v1.0.0/medication_statement/medication_statement_patient_search_test.rb +64 -0
  80. data/lib/ipa_test_kit/generated/v1.0.0/medication_statement/medication_statement_patient_status_search_test.rb +49 -0
  81. data/lib/ipa_test_kit/generated/v1.0.0/medication_statement/medication_statement_provenance_revinclude_search_test.rb +51 -0
  82. data/lib/ipa_test_kit/generated/v1.0.0/medication_statement/medication_statement_read_test.rb +26 -0
  83. data/lib/ipa_test_kit/generated/v1.0.0/medication_statement/medication_statement_reference_resolution_test.rb +45 -0
  84. data/lib/ipa_test_kit/generated/v1.0.0/medication_statement/medication_statement_validation_test.rb +40 -0
  85. data/lib/ipa_test_kit/generated/v1.0.0/medication_statement/metadata.yml +222 -0
  86. data/lib/ipa_test_kit/generated/{medication_statement_group.rb → v1.0.0/medication_statement_group.rb} +31 -31
  87. data/lib/ipa_test_kit/generated/v1.0.0/metadata.yml +2845 -0
  88. data/lib/ipa_test_kit/generated/v1.0.0/observation/metadata.yml +341 -0
  89. data/lib/ipa_test_kit/generated/v1.0.0/observation/observation_must_support_test.rb +49 -0
  90. data/lib/ipa_test_kit/generated/v1.0.0/observation/observation_patient_category_date_search_test.rb +48 -0
  91. data/lib/ipa_test_kit/generated/v1.0.0/observation/observation_patient_category_search_test.rb +65 -0
  92. data/lib/ipa_test_kit/generated/v1.0.0/observation/observation_patient_category_status_search_test.rb +50 -0
  93. data/lib/ipa_test_kit/generated/v1.0.0/observation/observation_patient_code_date_search_test.rb +50 -0
  94. data/lib/ipa_test_kit/generated/v1.0.0/observation/observation_patient_code_search_test.rb +48 -0
  95. data/lib/ipa_test_kit/generated/v1.0.0/observation/observation_provenance_revinclude_search_test.rb +52 -0
  96. data/lib/ipa_test_kit/generated/v1.0.0/observation/observation_read_test.rb +26 -0
  97. data/lib/ipa_test_kit/generated/v1.0.0/observation/observation_reference_resolution_test.rb +42 -0
  98. data/lib/ipa_test_kit/generated/v1.0.0/observation/observation_validation_test.rb +40 -0
  99. data/lib/ipa_test_kit/generated/{observation_group.rb → v1.0.0/observation_group.rb} +40 -29
  100. data/lib/ipa_test_kit/generated/v1.0.0/patient/metadata.yml +259 -0
  101. data/lib/ipa_test_kit/generated/v1.0.0/patient/patient_birthdate_family_search_test.rb +45 -0
  102. data/lib/ipa_test_kit/generated/v1.0.0/patient/patient_birthdate_name_search_test.rb +45 -0
  103. data/lib/ipa_test_kit/generated/v1.0.0/patient/patient_birthdate_search_test.rb +45 -0
  104. data/lib/ipa_test_kit/generated/v1.0.0/patient/patient_family_gender_search_test.rb +45 -0
  105. data/lib/ipa_test_kit/generated/v1.0.0/patient/patient_family_search_test.rb +45 -0
  106. data/lib/ipa_test_kit/generated/v1.0.0/patient/patient_gender_name_search_test.rb +45 -0
  107. data/lib/ipa_test_kit/generated/v1.0.0/patient/patient_gender_search_test.rb +45 -0
  108. data/lib/ipa_test_kit/generated/v1.0.0/patient/patient_given_search_test.rb +45 -0
  109. data/lib/ipa_test_kit/generated/v1.0.0/patient/patient_id_search_test.rb +57 -0
  110. data/lib/ipa_test_kit/generated/v1.0.0/patient/patient_identifier_search_test.rb +44 -0
  111. data/lib/ipa_test_kit/generated/v1.0.0/patient/patient_must_support_test.rb +49 -0
  112. data/lib/ipa_test_kit/generated/v1.0.0/patient/patient_name_search_test.rb +45 -0
  113. data/lib/ipa_test_kit/generated/v1.0.0/patient/patient_provenance_revinclude_search_test.rb +51 -0
  114. data/lib/ipa_test_kit/generated/v1.0.0/patient/patient_read_test.rb +26 -0
  115. data/lib/ipa_test_kit/generated/v1.0.0/patient/patient_validation_test.rb +40 -0
  116. data/lib/ipa_test_kit/generated/{patient_group.rb → v1.0.0/patient_group.rb} +44 -34
  117. data/lib/ipa_test_kit/generated/v1.0.0/practitioner/metadata.yml +48 -0
  118. data/lib/ipa_test_kit/generated/v1.0.0/practitioner/practitioner_must_support_test.rb +43 -0
  119. data/lib/ipa_test_kit/generated/v1.0.0/practitioner/practitioner_provenance_revinclude_search_test.rb +0 -0
  120. data/lib/ipa_test_kit/generated/v1.0.0/practitioner/practitioner_read_test.rb +26 -0
  121. data/lib/ipa_test_kit/generated/v1.0.0/practitioner/practitioner_validation_test.rb +40 -0
  122. data/lib/ipa_test_kit/generated/v1.0.0/practitioner_group.rb +61 -0
  123. data/lib/ipa_test_kit/generated/v1.0.0/practitioner_role/metadata.yml +68 -0
  124. data/lib/ipa_test_kit/generated/v1.0.0/practitioner_role/practitioner_role_must_support_test.rb +43 -0
  125. data/lib/ipa_test_kit/generated/v1.0.0/practitioner_role/practitioner_role_read_test.rb +26 -0
  126. data/lib/ipa_test_kit/generated/v1.0.0/practitioner_role/practitioner_role_reference_resolution_test.rb +42 -0
  127. data/lib/ipa_test_kit/generated/v1.0.0/practitioner_role/practitioner_role_validation_test.rb +40 -0
  128. data/lib/ipa_test_kit/generated/v1.0.0/practitioner_role_group.rb +63 -0
  129. data/lib/ipa_test_kit/generated/v1.0.0/problem_list_item/metadata.yml +299 -0
  130. data/lib/ipa_test_kit/generated/v1.0.0/problem_list_item/problem_list_item_must_support_test.rb +48 -0
  131. data/lib/ipa_test_kit/generated/v1.0.0/problem_list_item/problem_list_item_patient_category_clinical_status_search_test.rb +50 -0
  132. data/lib/ipa_test_kit/generated/v1.0.0/problem_list_item/problem_list_item_patient_category_search_test.rb +50 -0
  133. data/lib/ipa_test_kit/generated/v1.0.0/problem_list_item/problem_list_item_patient_clinical_status_search_test.rb +50 -0
  134. data/lib/ipa_test_kit/generated/v1.0.0/problem_list_item/problem_list_item_patient_code_search_test.rb +50 -0
  135. data/lib/ipa_test_kit/generated/v1.0.0/problem_list_item/problem_list_item_patient_onset_date_search_test.rb +49 -0
  136. data/lib/ipa_test_kit/generated/v1.0.0/problem_list_item/problem_list_item_patient_search_test.rb +63 -0
  137. data/lib/ipa_test_kit/generated/v1.0.0/problem_list_item/problem_list_item_provenance_revinclude_search_test.rb +51 -0
  138. data/lib/ipa_test_kit/generated/v1.0.0/problem_list_item/problem_list_item_read_test.rb +26 -0
  139. data/lib/ipa_test_kit/generated/v1.0.0/problem_list_item/problem_list_item_reference_resolution_test.rb +42 -0
  140. data/lib/ipa_test_kit/generated/v1.0.0/problem_list_item/problem_list_item_validation_test.rb +40 -0
  141. data/lib/ipa_test_kit/generated/v1.0.0/problem_list_item_group.rb +100 -0
  142. data/lib/ipa_test_kit/generated/{resource_list.rb → v1.0.0/resource_list.rb} +7 -6
  143. data/lib/ipa_test_kit/generated/v1.0.0/vitalsigns/metadata.yml +370 -0
  144. data/lib/ipa_test_kit/generated/v1.0.0/vitalsigns/vitalsigns_must_support_test.rb +57 -0
  145. data/lib/ipa_test_kit/generated/v1.0.0/vitalsigns/vitalsigns_patient_category_date_search_test.rb +48 -0
  146. data/lib/ipa_test_kit/generated/v1.0.0/vitalsigns/vitalsigns_patient_category_search_test.rb +65 -0
  147. data/lib/ipa_test_kit/generated/v1.0.0/vitalsigns/vitalsigns_patient_category_status_search_test.rb +50 -0
  148. data/lib/ipa_test_kit/generated/v1.0.0/vitalsigns/vitalsigns_patient_code_date_search_test.rb +50 -0
  149. data/lib/ipa_test_kit/generated/v1.0.0/vitalsigns/vitalsigns_patient_code_search_test.rb +48 -0
  150. data/lib/ipa_test_kit/generated/v1.0.0/vitalsigns/vitalsigns_provenance_revinclude_search_test.rb +52 -0
  151. data/lib/ipa_test_kit/generated/v1.0.0/vitalsigns/vitalsigns_read_test.rb +26 -0
  152. data/lib/ipa_test_kit/generated/v1.0.0/vitalsigns/vitalsigns_reference_resolution_test.rb +42 -0
  153. data/lib/ipa_test_kit/generated/v1.0.0/vitalsigns/vitalsigns_validation_test.rb +40 -0
  154. data/lib/ipa_test_kit/generated/v1.0.0/vitalsigns_group.rb +100 -0
  155. data/lib/ipa_test_kit/generator/group_generator.rb +56 -14
  156. data/lib/ipa_test_kit/generator/group_metadata.rb +5 -17
  157. data/lib/ipa_test_kit/generator/group_metadata_extractor.rb +45 -31
  158. data/lib/ipa_test_kit/generator/ig_loader.rb +15 -2
  159. data/lib/ipa_test_kit/generator/ig_metadata.rb +2 -2
  160. data/lib/ipa_test_kit/generator/ig_metadata_extractor.rb +18 -15
  161. data/lib/ipa_test_kit/generator/ig_resources.rb +3 -2
  162. data/lib/ipa_test_kit/generator/must_support_metadata_extractor.rb +245 -35
  163. data/lib/ipa_test_kit/generator/must_support_test_generator.rb +32 -11
  164. data/lib/ipa_test_kit/generator/naming.rb +31 -17
  165. data/lib/ipa_test_kit/generator/provenance_revinclude_search_test_generator.rb +14 -12
  166. data/lib/ipa_test_kit/generator/read_test_generator.rb +12 -7
  167. data/lib/ipa_test_kit/generator/reference_resolution_test_generator.rb +27 -7
  168. data/lib/ipa_test_kit/generator/resource_list_generator.rb +8 -12
  169. data/lib/ipa_test_kit/generator/search_definition_metadata_extractor.rb +36 -74
  170. data/lib/ipa_test_kit/generator/search_metadata_extractor.rb +4 -3
  171. data/lib/ipa_test_kit/generator/search_test_generator.rb +33 -38
  172. data/lib/ipa_test_kit/generator/special_cases.rb +8 -4
  173. data/lib/ipa_test_kit/generator/suite_generator.rb +41 -8
  174. data/lib/ipa_test_kit/generator/terminology_binding_metadata_extractor.rb +18 -3
  175. data/lib/ipa_test_kit/generator/validation_test_generator.rb +29 -17
  176. data/lib/ipa_test_kit/generator/value_extractor.rb +101 -0
  177. data/lib/ipa_test_kit/generator.rb +48 -14
  178. data/lib/ipa_test_kit/igs/ipa_v100/search-parameters.json +65408 -0
  179. data/lib/ipa_test_kit/igs/ipa_v100/vitalsigns.profile.json +3122 -0
  180. data/lib/ipa_test_kit/igs/ipa_v100.tgz +0 -0
  181. data/lib/ipa_test_kit/must_support_test.rb +50 -1
  182. data/lib/ipa_test_kit/provenance_validator.rb +38 -0
  183. data/lib/ipa_test_kit/read_test.rb +1 -1
  184. data/lib/ipa_test_kit/reference_resolution_test.rb +139 -70
  185. data/lib/ipa_test_kit/search_test.rb +253 -224
  186. data/lib/ipa_test_kit/search_test_properties.rb +3 -13
  187. data/lib/ipa_test_kit/validation_test.rb +13 -5
  188. data/lib/ipa_test_kit/version.rb +1 -1
  189. data/lib/ipa_test_kit.rb +3 -2
  190. metadata +173 -236
  191. data/lib/ipa_test_kit/custom_groups/capability_statement/conformance_support_test.rb +0 -41
  192. data/lib/ipa_test_kit/custom_groups/capability_statement/fhir_version_test.rb +0 -15
  193. data/lib/ipa_test_kit/custom_groups/capability_statement/json_support_test.rb +0 -39
  194. data/lib/ipa_test_kit/custom_groups/capability_statement/profile_support_test.rb +0 -76
  195. data/lib/ipa_test_kit/custom_groups/capability_statement_group.rb +0 -64
  196. data/lib/ipa_test_kit/ext/fhir_models.rb +0 -59
  197. data/lib/ipa_test_kit/generated/allergy_intolerance/allergy_intolerance_must_support_test.rb +0 -40
  198. data/lib/ipa_test_kit/generated/allergy_intolerance/allergy_intolerance_patient_clinical_status_search_test.rb +0 -46
  199. data/lib/ipa_test_kit/generated/allergy_intolerance/allergy_intolerance_patient_search_test.rb +0 -60
  200. data/lib/ipa_test_kit/generated/allergy_intolerance/allergy_intolerance_provenance_revinclude_search_test.rb +0 -49
  201. data/lib/ipa_test_kit/generated/allergy_intolerance/allergy_intolerance_read_test.rb +0 -24
  202. data/lib/ipa_test_kit/generated/allergy_intolerance/allergy_intolerance_reference_resolution_test.rb +0 -28
  203. data/lib/ipa_test_kit/generated/allergy_intolerance/allergy_intolerance_validation_test.rb +0 -34
  204. data/lib/ipa_test_kit/generated/bmi/bmi_must_support_test.rb +0 -49
  205. data/lib/ipa_test_kit/generated/bmi/bmi_patient_category_date_search_test.rb +0 -46
  206. data/lib/ipa_test_kit/generated/bmi/bmi_patient_category_search_test.rb +0 -45
  207. data/lib/ipa_test_kit/generated/bmi/bmi_patient_category_status_search_test.rb +0 -47
  208. data/lib/ipa_test_kit/generated/bmi/bmi_patient_code_date_search_test.rb +0 -48
  209. data/lib/ipa_test_kit/generated/bmi/bmi_patient_code_search_test.rb +0 -62
  210. data/lib/ipa_test_kit/generated/bmi/bmi_provenance_revinclude_search_test.rb +0 -51
  211. data/lib/ipa_test_kit/generated/bmi/bmi_read_test.rb +0 -24
  212. data/lib/ipa_test_kit/generated/bmi/bmi_reference_resolution_test.rb +0 -28
  213. data/lib/ipa_test_kit/generated/bmi/bmi_validation_test.rb +0 -34
  214. data/lib/ipa_test_kit/generated/bmi/metadata.yml +0 -322
  215. data/lib/ipa_test_kit/generated/bmi_group.rb +0 -93
  216. data/lib/ipa_test_kit/generated/bodyheight/bodyheight_must_support_test.rb +0 -49
  217. data/lib/ipa_test_kit/generated/bodyheight/bodyheight_patient_category_date_search_test.rb +0 -46
  218. data/lib/ipa_test_kit/generated/bodyheight/bodyheight_patient_category_search_test.rb +0 -45
  219. data/lib/ipa_test_kit/generated/bodyheight/bodyheight_patient_category_status_search_test.rb +0 -47
  220. data/lib/ipa_test_kit/generated/bodyheight/bodyheight_patient_code_date_search_test.rb +0 -48
  221. data/lib/ipa_test_kit/generated/bodyheight/bodyheight_patient_code_search_test.rb +0 -62
  222. data/lib/ipa_test_kit/generated/bodyheight/bodyheight_provenance_revinclude_search_test.rb +0 -51
  223. data/lib/ipa_test_kit/generated/bodyheight/bodyheight_read_test.rb +0 -24
  224. data/lib/ipa_test_kit/generated/bodyheight/bodyheight_reference_resolution_test.rb +0 -28
  225. data/lib/ipa_test_kit/generated/bodyheight/bodyheight_validation_test.rb +0 -34
  226. data/lib/ipa_test_kit/generated/bodyheight/metadata.yml +0 -328
  227. data/lib/ipa_test_kit/generated/bodyheight_group.rb +0 -93
  228. data/lib/ipa_test_kit/generated/bodytemp/bodytemp_must_support_test.rb +0 -49
  229. data/lib/ipa_test_kit/generated/bodytemp/bodytemp_patient_category_date_search_test.rb +0 -46
  230. data/lib/ipa_test_kit/generated/bodytemp/bodytemp_patient_category_search_test.rb +0 -45
  231. data/lib/ipa_test_kit/generated/bodytemp/bodytemp_patient_category_status_search_test.rb +0 -47
  232. data/lib/ipa_test_kit/generated/bodytemp/bodytemp_patient_code_date_search_test.rb +0 -48
  233. data/lib/ipa_test_kit/generated/bodytemp/bodytemp_patient_code_search_test.rb +0 -62
  234. data/lib/ipa_test_kit/generated/bodytemp/bodytemp_provenance_revinclude_search_test.rb +0 -51
  235. data/lib/ipa_test_kit/generated/bodytemp/bodytemp_read_test.rb +0 -24
  236. data/lib/ipa_test_kit/generated/bodytemp/bodytemp_reference_resolution_test.rb +0 -28
  237. data/lib/ipa_test_kit/generated/bodytemp/bodytemp_validation_test.rb +0 -34
  238. data/lib/ipa_test_kit/generated/bodytemp/metadata.yml +0 -328
  239. data/lib/ipa_test_kit/generated/bodytemp_group.rb +0 -93
  240. data/lib/ipa_test_kit/generated/bodyweight/bodyweight_must_support_test.rb +0 -49
  241. data/lib/ipa_test_kit/generated/bodyweight/bodyweight_patient_category_date_search_test.rb +0 -46
  242. data/lib/ipa_test_kit/generated/bodyweight/bodyweight_patient_category_search_test.rb +0 -45
  243. data/lib/ipa_test_kit/generated/bodyweight/bodyweight_patient_category_status_search_test.rb +0 -47
  244. data/lib/ipa_test_kit/generated/bodyweight/bodyweight_patient_code_date_search_test.rb +0 -48
  245. data/lib/ipa_test_kit/generated/bodyweight/bodyweight_patient_code_search_test.rb +0 -62
  246. data/lib/ipa_test_kit/generated/bodyweight/bodyweight_provenance_revinclude_search_test.rb +0 -51
  247. data/lib/ipa_test_kit/generated/bodyweight/bodyweight_read_test.rb +0 -24
  248. data/lib/ipa_test_kit/generated/bodyweight/bodyweight_reference_resolution_test.rb +0 -28
  249. data/lib/ipa_test_kit/generated/bodyweight/bodyweight_validation_test.rb +0 -34
  250. data/lib/ipa_test_kit/generated/bodyweight/metadata.yml +0 -328
  251. data/lib/ipa_test_kit/generated/bodyweight_group.rb +0 -93
  252. data/lib/ipa_test_kit/generated/bp/bp_must_support_test.rb +0 -52
  253. data/lib/ipa_test_kit/generated/bp/bp_patient_category_date_search_test.rb +0 -46
  254. data/lib/ipa_test_kit/generated/bp/bp_patient_category_search_test.rb +0 -45
  255. data/lib/ipa_test_kit/generated/bp/bp_patient_category_status_search_test.rb +0 -47
  256. data/lib/ipa_test_kit/generated/bp/bp_patient_code_date_search_test.rb +0 -48
  257. data/lib/ipa_test_kit/generated/bp/bp_patient_code_search_test.rb +0 -62
  258. data/lib/ipa_test_kit/generated/bp/bp_provenance_revinclude_search_test.rb +0 -51
  259. data/lib/ipa_test_kit/generated/bp/bp_read_test.rb +0 -24
  260. data/lib/ipa_test_kit/generated/bp/bp_reference_resolution_test.rb +0 -28
  261. data/lib/ipa_test_kit/generated/bp/bp_validation_test.rb +0 -34
  262. data/lib/ipa_test_kit/generated/bp/metadata.yml +0 -379
  263. data/lib/ipa_test_kit/generated/bp_group.rb +0 -93
  264. data/lib/ipa_test_kit/generated/condition/condition_must_support_test.rb +0 -39
  265. data/lib/ipa_test_kit/generated/condition/condition_patient_category_search_test.rb +0 -47
  266. data/lib/ipa_test_kit/generated/condition/condition_patient_clinical_status_search_test.rb +0 -46
  267. data/lib/ipa_test_kit/generated/condition/condition_patient_code_search_test.rb +0 -47
  268. data/lib/ipa_test_kit/generated/condition/condition_patient_onset_date_search_test.rb +0 -47
  269. data/lib/ipa_test_kit/generated/condition/condition_patient_search_test.rb +0 -60
  270. data/lib/ipa_test_kit/generated/condition/condition_provenance_revinclude_search_test.rb +0 -49
  271. data/lib/ipa_test_kit/generated/condition/condition_read_test.rb +0 -24
  272. data/lib/ipa_test_kit/generated/condition/condition_reference_resolution_test.rb +0 -28
  273. data/lib/ipa_test_kit/generated/condition/condition_validation_test.rb +0 -34
  274. data/lib/ipa_test_kit/generated/condition/metadata.yml +0 -231
  275. data/lib/ipa_test_kit/generated/document_reference/document_reference_id_search_test.rb +0 -40
  276. data/lib/ipa_test_kit/generated/document_reference/document_reference_must_support_test.rb +0 -49
  277. data/lib/ipa_test_kit/generated/document_reference/document_reference_patient_category_date_search_test.rb +0 -46
  278. data/lib/ipa_test_kit/generated/document_reference/document_reference_patient_category_search_test.rb +0 -45
  279. data/lib/ipa_test_kit/generated/document_reference/document_reference_patient_search_test.rb +0 -61
  280. data/lib/ipa_test_kit/generated/document_reference/document_reference_patient_status_search_test.rb +0 -46
  281. data/lib/ipa_test_kit/generated/document_reference/document_reference_patient_type_period_search_test.rb +0 -48
  282. data/lib/ipa_test_kit/generated/document_reference/document_reference_patient_type_search_test.rb +0 -45
  283. data/lib/ipa_test_kit/generated/document_reference/document_reference_provenance_revinclude_search_test.rb +0 -50
  284. data/lib/ipa_test_kit/generated/document_reference/document_reference_read_test.rb +0 -24
  285. data/lib/ipa_test_kit/generated/document_reference/document_reference_reference_resolution_test.rb +0 -28
  286. data/lib/ipa_test_kit/generated/document_reference/document_reference_validation_test.rb +0 -34
  287. data/lib/ipa_test_kit/generated/head_circumference/head_circumference_must_support_test.rb +0 -49
  288. data/lib/ipa_test_kit/generated/head_circumference/head_circumference_patient_category_date_search_test.rb +0 -46
  289. data/lib/ipa_test_kit/generated/head_circumference/head_circumference_patient_category_search_test.rb +0 -45
  290. data/lib/ipa_test_kit/generated/head_circumference/head_circumference_patient_category_status_search_test.rb +0 -47
  291. data/lib/ipa_test_kit/generated/head_circumference/head_circumference_patient_code_date_search_test.rb +0 -48
  292. data/lib/ipa_test_kit/generated/head_circumference/head_circumference_patient_code_search_test.rb +0 -62
  293. data/lib/ipa_test_kit/generated/head_circumference/head_circumference_provenance_revinclude_search_test.rb +0 -51
  294. data/lib/ipa_test_kit/generated/head_circumference/head_circumference_read_test.rb +0 -24
  295. data/lib/ipa_test_kit/generated/head_circumference/head_circumference_reference_resolution_test.rb +0 -28
  296. data/lib/ipa_test_kit/generated/head_circumference/head_circumference_validation_test.rb +0 -34
  297. data/lib/ipa_test_kit/generated/head_circumference/metadata.yml +0 -324
  298. data/lib/ipa_test_kit/generated/head_circumference_group.rb +0 -93
  299. data/lib/ipa_test_kit/generated/heartrate/heartrate_must_support_test.rb +0 -49
  300. data/lib/ipa_test_kit/generated/heartrate/heartrate_patient_category_date_search_test.rb +0 -46
  301. data/lib/ipa_test_kit/generated/heartrate/heartrate_patient_category_search_test.rb +0 -45
  302. data/lib/ipa_test_kit/generated/heartrate/heartrate_patient_category_status_search_test.rb +0 -47
  303. data/lib/ipa_test_kit/generated/heartrate/heartrate_patient_code_date_search_test.rb +0 -48
  304. data/lib/ipa_test_kit/generated/heartrate/heartrate_patient_code_search_test.rb +0 -62
  305. data/lib/ipa_test_kit/generated/heartrate/heartrate_provenance_revinclude_search_test.rb +0 -51
  306. data/lib/ipa_test_kit/generated/heartrate/heartrate_read_test.rb +0 -24
  307. data/lib/ipa_test_kit/generated/heartrate/heartrate_reference_resolution_test.rb +0 -28
  308. data/lib/ipa_test_kit/generated/heartrate/heartrate_validation_test.rb +0 -34
  309. data/lib/ipa_test_kit/generated/heartrate/metadata.yml +0 -325
  310. data/lib/ipa_test_kit/generated/heartrate_group.rb +0 -93
  311. data/lib/ipa_test_kit/generated/immunization/immunization_must_support_test.rb +0 -40
  312. data/lib/ipa_test_kit/generated/immunization/immunization_patient_date_search_test.rb +0 -47
  313. data/lib/ipa_test_kit/generated/immunization/immunization_patient_search_test.rb +0 -60
  314. data/lib/ipa_test_kit/generated/immunization/immunization_patient_status_search_test.rb +0 -45
  315. data/lib/ipa_test_kit/generated/immunization/immunization_provenance_revinclude_search_test.rb +0 -50
  316. data/lib/ipa_test_kit/generated/immunization/immunization_read_test.rb +0 -24
  317. data/lib/ipa_test_kit/generated/immunization/immunization_reference_resolution_test.rb +0 -28
  318. data/lib/ipa_test_kit/generated/immunization/immunization_validation_test.rb +0 -34
  319. data/lib/ipa_test_kit/generated/immunization/metadata.yml +0 -210
  320. data/lib/ipa_test_kit/generated/ipa_test_suite.rb +0 -88
  321. data/lib/ipa_test_kit/generated/medication_request/medication_request_must_support_test.rb +0 -44
  322. data/lib/ipa_test_kit/generated/medication_request/medication_request_patient_intent_authoredon_search_test.rb +0 -53
  323. data/lib/ipa_test_kit/generated/medication_request/medication_request_patient_intent_encounter_search_test.rb +0 -52
  324. data/lib/ipa_test_kit/generated/medication_request/medication_request_patient_intent_search_test.rb +0 -68
  325. data/lib/ipa_test_kit/generated/medication_request/medication_request_patient_intent_status_search_test.rb +0 -49
  326. data/lib/ipa_test_kit/generated/medication_request/medication_request_provenance_revinclude_search_test.rb +0 -51
  327. data/lib/ipa_test_kit/generated/medication_request/medication_request_read_test.rb +0 -24
  328. data/lib/ipa_test_kit/generated/medication_request/medication_request_reference_resolution_test.rb +0 -28
  329. data/lib/ipa_test_kit/generated/medication_request/medication_request_validation_test.rb +0 -34
  330. data/lib/ipa_test_kit/generated/medication_request/medication_validation_test.rb +0 -34
  331. data/lib/ipa_test_kit/generated/medication_request/metadata.yml +0 -307
  332. data/lib/ipa_test_kit/generated/medication_statement/medication_statement_must_support_test.rb +0 -43
  333. data/lib/ipa_test_kit/generated/medication_statement/medication_statement_patient_context_search_test.rb +0 -51
  334. data/lib/ipa_test_kit/generated/medication_statement/medication_statement_patient_effective_search_test.rb +0 -52
  335. data/lib/ipa_test_kit/generated/medication_statement/medication_statement_patient_search_test.rb +0 -68
  336. data/lib/ipa_test_kit/generated/medication_statement/medication_statement_patient_status_search_test.rb +0 -49
  337. data/lib/ipa_test_kit/generated/medication_statement/medication_statement_provenance_revinclude_search_test.rb +0 -51
  338. data/lib/ipa_test_kit/generated/medication_statement/medication_statement_read_test.rb +0 -24
  339. data/lib/ipa_test_kit/generated/medication_statement/medication_statement_reference_resolution_test.rb +0 -28
  340. data/lib/ipa_test_kit/generated/medication_statement/medication_statement_validation_test.rb +0 -34
  341. data/lib/ipa_test_kit/generated/medication_statement/medication_validation_test.rb +0 -34
  342. data/lib/ipa_test_kit/generated/medication_statement/metadata.yml +0 -230
  343. data/lib/ipa_test_kit/generated/metadata.yml +0 -6230
  344. data/lib/ipa_test_kit/generated/observation/metadata.yml +0 -1280
  345. data/lib/ipa_test_kit/generated/observation/observation_must_support_test.rb +0 -41
  346. data/lib/ipa_test_kit/generated/observation/observation_patient_category_date_search_test.rb +0 -46
  347. data/lib/ipa_test_kit/generated/observation/observation_patient_category_search_test.rb +0 -62
  348. data/lib/ipa_test_kit/generated/observation/observation_patient_category_status_search_test.rb +0 -47
  349. data/lib/ipa_test_kit/generated/observation/observation_patient_code_date_search_test.rb +0 -48
  350. data/lib/ipa_test_kit/generated/observation/observation_patient_code_search_test.rb +0 -45
  351. data/lib/ipa_test_kit/generated/observation/observation_provenance_revinclude_search_test.rb +0 -51
  352. data/lib/ipa_test_kit/generated/observation/observation_read_test.rb +0 -24
  353. data/lib/ipa_test_kit/generated/observation/observation_reference_resolution_test.rb +0 -28
  354. data/lib/ipa_test_kit/generated/observation/observation_validation_test.rb +0 -34
  355. data/lib/ipa_test_kit/generated/oxygensat/metadata.yml +0 -366
  356. data/lib/ipa_test_kit/generated/oxygensat/oxygensat_must_support_test.rb +0 -65
  357. data/lib/ipa_test_kit/generated/oxygensat/oxygensat_patient_category_date_search_test.rb +0 -46
  358. data/lib/ipa_test_kit/generated/oxygensat/oxygensat_patient_category_search_test.rb +0 -45
  359. data/lib/ipa_test_kit/generated/oxygensat/oxygensat_patient_category_status_search_test.rb +0 -47
  360. data/lib/ipa_test_kit/generated/oxygensat/oxygensat_patient_code_date_search_test.rb +0 -48
  361. data/lib/ipa_test_kit/generated/oxygensat/oxygensat_patient_code_search_test.rb +0 -62
  362. data/lib/ipa_test_kit/generated/oxygensat/oxygensat_provenance_revinclude_search_test.rb +0 -51
  363. data/lib/ipa_test_kit/generated/oxygensat/oxygensat_read_test.rb +0 -24
  364. data/lib/ipa_test_kit/generated/oxygensat/oxygensat_reference_resolution_test.rb +0 -28
  365. data/lib/ipa_test_kit/generated/oxygensat/oxygensat_validation_test.rb +0 -34
  366. data/lib/ipa_test_kit/generated/oxygensat_group.rb +0 -93
  367. data/lib/ipa_test_kit/generated/patient/metadata.yml +0 -320
  368. data/lib/ipa_test_kit/generated/patient/patient_birthdate_family_search_test.rb +0 -41
  369. data/lib/ipa_test_kit/generated/patient/patient_birthdate_name_search_test.rb +0 -39
  370. data/lib/ipa_test_kit/generated/patient/patient_family_gender_search_test.rb +0 -41
  371. data/lib/ipa_test_kit/generated/patient/patient_gender_name_search_test.rb +0 -39
  372. data/lib/ipa_test_kit/generated/patient/patient_id_search_test.rb +0 -53
  373. data/lib/ipa_test_kit/generated/patient/patient_identifier_search_test.rb +0 -40
  374. data/lib/ipa_test_kit/generated/patient/patient_must_support_test.rb +0 -57
  375. data/lib/ipa_test_kit/generated/patient/patient_name_search_test.rb +0 -39
  376. data/lib/ipa_test_kit/generated/patient/patient_provenance_revinclude_search_test.rb +0 -49
  377. data/lib/ipa_test_kit/generated/patient/patient_read_test.rb +0 -24
  378. data/lib/ipa_test_kit/generated/patient/patient_reference_resolution_test.rb +0 -28
  379. data/lib/ipa_test_kit/generated/patient/patient_validation_test.rb +0 -34
  380. data/lib/ipa_test_kit/generated/practitioner/metadata.yml +0 -124
  381. data/lib/ipa_test_kit/generated/practitioner/practitioner_identifier_search_test.rb +0 -40
  382. data/lib/ipa_test_kit/generated/practitioner/practitioner_must_support_test.rb +0 -40
  383. data/lib/ipa_test_kit/generated/practitioner/practitioner_name_search_test.rb +0 -49
  384. data/lib/ipa_test_kit/generated/practitioner/practitioner_read_test.rb +0 -24
  385. data/lib/ipa_test_kit/generated/practitioner/practitioner_reference_resolution_test.rb +0 -28
  386. data/lib/ipa_test_kit/generated/practitioner/practitioner_validation_test.rb +0 -34
  387. data/lib/ipa_test_kit/generated/practitioner_group.rb +0 -84
  388. data/lib/ipa_test_kit/generated/practitioner_role/metadata.yml +0 -141
  389. data/lib/ipa_test_kit/generated/practitioner_role/practitioner_role_identifier_search_test.rb +0 -40
  390. data/lib/ipa_test_kit/generated/practitioner_role/practitioner_role_must_support_test.rb +0 -40
  391. data/lib/ipa_test_kit/generated/practitioner_role/practitioner_role_practitioner_search_test.rb +0 -51
  392. data/lib/ipa_test_kit/generated/practitioner_role/practitioner_role_read_test.rb +0 -24
  393. data/lib/ipa_test_kit/generated/practitioner_role/practitioner_role_reference_resolution_test.rb +0 -28
  394. data/lib/ipa_test_kit/generated/practitioner_role/practitioner_role_validation_test.rb +0 -34
  395. data/lib/ipa_test_kit/generated/practitioner_role_group.rb +0 -84
  396. data/lib/ipa_test_kit/generated/provenance/metadata.yml +0 -114
  397. data/lib/ipa_test_kit/generated/provenance/provenance_read_test.rb +0 -24
  398. data/lib/ipa_test_kit/generated/provenance/provenance_reference_resolution_test.rb +0 -28
  399. data/lib/ipa_test_kit/generated/provenance/provenance_validation_test.rb +0 -34
  400. data/lib/ipa_test_kit/generated/provenance_group.rb +0 -53
  401. data/lib/ipa_test_kit/generated/resprate/metadata.yml +0 -325
  402. data/lib/ipa_test_kit/generated/resprate/resprate_must_support_test.rb +0 -49
  403. data/lib/ipa_test_kit/generated/resprate/resprate_patient_category_date_search_test.rb +0 -46
  404. data/lib/ipa_test_kit/generated/resprate/resprate_patient_category_search_test.rb +0 -45
  405. data/lib/ipa_test_kit/generated/resprate/resprate_patient_category_status_search_test.rb +0 -47
  406. data/lib/ipa_test_kit/generated/resprate/resprate_patient_code_date_search_test.rb +0 -48
  407. data/lib/ipa_test_kit/generated/resprate/resprate_patient_code_search_test.rb +0 -62
  408. data/lib/ipa_test_kit/generated/resprate/resprate_provenance_revinclude_search_test.rb +0 -51
  409. data/lib/ipa_test_kit/generated/resprate/resprate_read_test.rb +0 -24
  410. data/lib/ipa_test_kit/generated/resprate/resprate_reference_resolution_test.rb +0 -28
  411. data/lib/ipa_test_kit/generated/resprate/resprate_validation_test.rb +0 -34
  412. data/lib/ipa_test_kit/generated/resprate_group.rb +0 -93
  413. data/lib/ipa_test_kit/igs/package.tgz +0 -0
@@ -5,17 +5,18 @@ module IpaTestKit
5
5
  class Generator
6
6
  class ReferenceResolutionTestGenerator
7
7
  class << self
8
- def generate(ig_metadata)
8
+ def generate(ig_metadata, base_output_dir)
9
9
  ig_metadata.groups
10
- .reject { |group| SpecialCases.exclude_resource? group.resource }
11
- .each { |group| new(group).generate }
10
+ .reject { |group| SpecialCases.exclude_group? group }
11
+ .each { |group| new(group, base_output_dir).generate }
12
12
  end
13
13
  end
14
14
 
15
- attr_accessor :group_metadata
15
+ attr_accessor :group_metadata, :base_output_dir
16
16
 
17
- def initialize(group_metadata)
17
+ def initialize(group_metadata, base_output_dir)
18
18
  self.group_metadata = group_metadata
19
+ self.base_output_dir = base_output_dir
19
20
  end
20
21
 
21
22
  def template
@@ -31,7 +32,7 @@ module IpaTestKit
31
32
  end
32
33
 
33
34
  def output_file_directory
34
- File.join(__dir__, '..', 'generated', profile_identifier)
35
+ File.join(base_output_dir, profile_identifier)
35
36
  end
36
37
 
37
38
  def output_file_name
@@ -43,13 +44,17 @@ module IpaTestKit
43
44
  end
44
45
 
45
46
  def test_id
46
- "ipa_010_#{profile_identifier}_reference_resolution_test"
47
+ "ipa_#{group_metadata.reformatted_version}_#{profile_identifier}_reference_resolution_test"
47
48
  end
48
49
 
49
50
  def class_name
50
51
  "#{Naming.upper_camel_case_for_profile(group_metadata)}ReferenceResolutionTest"
51
52
  end
52
53
 
54
+ def module_name
55
+ "Ipa#{group_metadata.reformatted_version.upcase}"
56
+ end
57
+
53
58
  def resource_type
54
59
  group_metadata.resource
55
60
  end
@@ -58,7 +63,22 @@ module IpaTestKit
58
63
  'scratch_resources[:all]'
59
64
  end
60
65
 
66
+ def must_support_references
67
+ group_metadata.must_supports[:elements]
68
+ .select { |element| element[:types]&.include?('Reference') }
69
+ end
70
+
71
+ def must_support_reference_list_string
72
+ must_support_references
73
+ .map { |element| "#{' ' * 8}* #{resource_type}.#{element[:path]}" }
74
+ .uniq
75
+ .sort
76
+ .join("\n")
77
+ end
78
+
61
79
  def generate
80
+ return if must_support_references.empty?
81
+
62
82
  FileUtils.mkdir_p(output_file_directory)
63
83
  File.open(output_file_name, 'w') { |f| f.write(output) }
64
84
 
@@ -2,11 +2,11 @@ module IpaTestKit
2
2
  class Generator
3
3
  class ResourceListGenerator
4
4
  class << self
5
- def generate(ig_metadata)
5
+ def generate(ig_metadata, base_output_dir)
6
6
  @ig_metadata = ig_metadata
7
7
 
8
- FileUtils.mkdir_p(output_file_directory)
9
- File.open(output_file_name, 'w') { |f| f.write(output) }
8
+ FileUtils.mkdir_p(base_output_dir)
9
+ File.open(File.join(base_output_dir, base_output_file_name), 'w') { |f| f.write(output) }
10
10
  end
11
11
 
12
12
  def resource_list
@@ -17,6 +17,10 @@ module IpaTestKit
17
17
  resource_list.map { |resource| " '#{resource}'" }.join(",\n")
18
18
  end
19
19
 
20
+ def module_name
21
+ "Ipa#{@ig_metadata.reformatted_version.upcase}"
22
+ end
23
+
20
24
  def read_interaction(group_metadata)
21
25
  group_metadata.interactions.find { |interaction| interaction[:code] == 'read' }
22
26
  end
@@ -26,20 +30,12 @@ module IpaTestKit
26
30
  end
27
31
 
28
32
  def output
29
- @output ||= ERB.new(template).result(binding)
33
+ ERB.new(template).result(binding)
30
34
  end
31
35
 
32
36
  def base_output_file_name
33
37
  "resource_list.rb"
34
38
  end
35
-
36
- def output_file_directory
37
- File.join(__dir__, '..', 'generated')
38
- end
39
-
40
- def output_file_name
41
- File.join(output_file_directory, base_output_file_name)
42
- end
43
39
  end
44
40
  end
45
41
  end
@@ -1,20 +1,23 @@
1
+ require_relative 'value_extractor'
2
+
1
3
  module IpaTestKit
2
4
  class Generator
3
5
  class SearchDefinitionMetadataExtractor
4
- attr_accessor :ig_resources, :name, :resource, :profile_elements
6
+ attr_accessor :ig_resources, :name, :resource, :profile_elements, :base_search_params
5
7
 
6
- def initialize(name, ig_resources, resource, profile_elements)
8
+ def initialize(name, ig_resources, resource, profile_elements, base_search_params)
7
9
  self.name = name
8
10
  self.ig_resources = ig_resources
9
11
  self.resource = resource
10
12
  self.profile_elements = profile_elements
13
+ self.base_search_params = base_search_params
11
14
  end
12
15
 
13
16
  def search_definition
14
17
  @search_definition ||=
15
18
  {
16
- path: path,
17
- full_path: full_path,
19
+ paths: paths,
20
+ full_paths: full_paths,
18
21
  comparators: comparators,
19
22
  values: values,
20
23
  type: type,
@@ -25,31 +28,39 @@ module IpaTestKit
25
28
  end
26
29
 
27
30
  def param
28
- @param ||= ig_resources.search_param_by_resource_and_name(resource, name)
31
+ @param ||= ig_resources.search_param_by_resource_and_name(resource, name) || search_base_param_by_resource_and_name(resource, name)
32
+ end
33
+
34
+ def search_base_param_by_resource_and_name(resource, name)
35
+ search_param = base_search_params['entry'].find{|entry| entry['resource']['code'] == name && (entry['resource']['base'].include?(resource) || entry['resource']['base'].include?('Resource'))}
36
+ FHIR::SearchParameter.new(search_param['resource'])
29
37
  end
30
38
 
31
39
  def param_hash
32
40
  param.source_hash
33
41
  end
34
42
 
35
- def full_path
36
- @full_path ||=
43
+ def full_paths
44
+ @full_paths ||=
37
45
  begin
38
- path = param.expression.gsub(/.where\((.*)/, '')
46
+ path = param.expression.gsub(/\.where\(resolve\(\)[^\)]*\)/, '')
47
+ path = path.gsub(/.where\((.*)/, '')
39
48
  path = path[1..-2] if path.start_with?('(') && path.end_with?(')')
40
- as_type = path.scan(/[. ]as[( ]([^)]*)[)]?/).flatten.first
41
- path.gsub!(/[. ]as[( ]([^)]*)[)]?/, as_type.upcase_first) if as_type.present?
42
- path
49
+ path.scan(/[. ]as[( ]([^)]*)[)]?/).flatten.map do |as_type|
50
+ path.gsub!(/[. ]as[( ](#{as_type}[^)]*)[)]?/, as_type.upcase_first) if as_type.present?
51
+ end
52
+ path.gsub!("Resource.", "#{resource}.")
53
+ path.split('|').map(&:strip)
43
54
  end
44
55
  end
45
56
 
46
- def path
47
- @path ||= full_path.gsub("#{resource}.", '')
57
+ def paths
58
+ @paths ||= full_paths.map { |a_path| a_path.gsub("#{resource}.", '')}
48
59
  end
49
60
 
50
61
  def profile_element
51
62
  @profile_element ||=
52
- profile_elements.find { |element| element.id == full_path }
63
+ profile_elements.find { |element| full_paths.include?(element.id) }
53
64
  end
54
65
 
55
66
  def comparator_expectation_extensions
@@ -107,74 +118,25 @@ module IpaTestKit
107
118
  end
108
119
 
109
120
  def multiple_or_expectation
110
- param_hash['_multipleOr']['extension'].first['valueCode']
121
+ param_hash['_multipleOr']&.[]('extension')&.first&.[]('valueCode')
111
122
  end
112
123
 
113
124
  def values
114
- (
115
- values_from_slices +
116
- values_from_fixed_codes +
117
- values_from_pattern_codeable_concept +
118
- values_from_value_set_binding
119
- ).uniq.presence || values_from_resource_metadata
120
- end
121
-
122
- def slices
123
- return [] unless contains_multiple?
124
-
125
- profile_elements.select do |element|
126
- element.path == full_path &&
127
- element.sliceName.present? &&
128
- element.patternCodeableConcept.present?
129
- end
125
+ value_extractor.values_from_slicing(profile_element, type).presence ||
126
+ value_extractor.values_from_value_set_binding(profile_element).presence ||
127
+ values_from_resource_metadata(paths).presence || []
130
128
  end
131
129
 
132
- def values_from_slices
133
- slices.map do |slice|
134
- slice.patternCodeableConcept.coding.first.code
130
+ def values_from_resource_metadata(paths)
131
+ if multiple_or_expectation == 'SHALL' || paths.any? { |path| path.downcase.include?('status') }
132
+ value_extractor.values_from_resource_metadata(paths)
133
+ else
134
+ []
135
135
  end
136
136
  end
137
137
 
138
- def values_from_fixed_codes
139
- return [] unless type == 'CodeableConcept'
140
-
141
- profile_elements
142
- .select { |element| element.path == "#{profile_element.path}.coding.code" && element.fixedCode.present? }
143
- .map { |element| element.fixedCode }
144
- end
145
-
146
- def values_from_pattern_codeable_concept
147
- return [] if type != 'CodeableConcept' || profile_element.patternCodeableConcept.blank?
148
-
149
- [profile_element.patternCodeableConcept.coding.first.code]
150
- end
151
-
152
- def value_set_binding
153
- profile_element&.binding
154
- end
155
-
156
- def value_set
157
- ig_resources.value_set_by_url(value_set_binding&.valueSet)
158
- end
159
-
160
- def bound_systems
161
- value_set&.compose&.include&.reject { |code| code.concept.nil? }
162
- end
163
-
164
- def values_from_value_set_binding
165
- return [] if bound_systems.blank?
166
-
167
- bound_systems.flat_map { |system| system.concept.map { |code| code.code } }.uniq
168
- end
169
-
170
- def fhir_metadata
171
- FHIR.const_get(resource)::METADATA[path.gsub("#{resource}.", '')]
172
- end
173
-
174
- def values_from_resource_metadata
175
- return [] if fhir_metadata&.dig('valid_codes').blank?
176
-
177
- fhir_metadata['valid_codes'].values.flatten
138
+ def value_extractor
139
+ @value_extractor ||= ValueExactor.new(ig_resources, resource, profile_elements)
178
140
  end
179
141
  end
180
142
  end
@@ -6,13 +6,14 @@ module IpaTestKit
6
6
  COMBO_EXTENSION_URL =
7
7
  'http://hl7.org/fhir/StructureDefinition/capabilitystatement-search-parameter-combination'.freeze
8
8
 
9
- attr_accessor :resource_capabilities, :ig_resources, :resource, :profile_elements
9
+ attr_accessor :resource_capabilities, :ig_resources, :resource, :profile_elements, :base_search_params
10
10
 
11
- def initialize(resource_capabilities, ig_resources, resource, profile_elements)
11
+ def initialize(resource_capabilities, ig_resources, resource, profile_elements, base_search_params)
12
12
  self.resource_capabilities = resource_capabilities
13
13
  self.ig_resources = ig_resources
14
14
  self.resource = resource
15
15
  self.profile_elements = profile_elements
16
+ self.base_search_params = base_search_params
16
17
  end
17
18
 
18
19
  def searches
@@ -66,7 +67,7 @@ module IpaTestKit
66
67
  def search_definitions
67
68
  search_param_names.each_with_object({}) do |name, definitions|
68
69
  definitions[name.to_sym] =
69
- SearchDefinitionMetadataExtractor.new(name, ig_resources, resource, profile_elements).search_definition
70
+ SearchDefinitionMetadataExtractor.new(name, ig_resources, resource, profile_elements, base_search_params).search_definition
70
71
  end
71
72
  end
72
73
  end
@@ -5,21 +5,22 @@ module IpaTestKit
5
5
  class Generator
6
6
  class SearchTestGenerator
7
7
  class << self
8
- def generate(ig_metadata)
8
+ def generate(ig_metadata, base_output_dir)
9
9
  ig_metadata.groups
10
- .reject { |group| SpecialCases.exclude_resource? group.resource }
10
+ .reject { |group| SpecialCases.exclude_group? group }
11
11
  .select { |group| group.searches.present? }
12
12
  .each do |group|
13
- group.searches.each { |search| new(group, search).generate }
13
+ group.searches.each { |search| new(group, search, base_output_dir).generate }
14
14
  end
15
15
  end
16
16
  end
17
17
 
18
- attr_accessor :group_metadata, :search_metadata
18
+ attr_accessor :group_metadata, :search_metadata, :base_output_dir
19
19
 
20
- def initialize(group_metadata, search_metadata)
20
+ def initialize(group_metadata, search_metadata, base_output_dir)
21
21
  self.group_metadata = group_metadata
22
22
  self.search_metadata = search_metadata
23
+ self.base_output_dir = base_output_dir
23
24
  end
24
25
 
25
26
  def template
@@ -35,7 +36,7 @@ module IpaTestKit
35
36
  end
36
37
 
37
38
  def output_file_directory
38
- File.join(__dir__, '..', 'generated', profile_identifier)
39
+ File.join(base_output_dir, profile_identifier)
39
40
  end
40
41
 
41
42
  def output_file_name
@@ -47,7 +48,7 @@ module IpaTestKit
47
48
  end
48
49
 
49
50
  def test_id
50
- "ipa_010_#{profile_identifier}_#{search_identifier}_search_test"
51
+ "ipa_#{group_metadata.reformatted_version}_#{profile_identifier}_#{search_identifier}_search_test"
51
52
  end
52
53
 
53
54
  def search_identifier
@@ -62,6 +63,10 @@ module IpaTestKit
62
63
  "#{Naming.upper_camel_case_for_profile(group_metadata)}#{search_title}SearchTest"
63
64
  end
64
65
 
66
+ def module_name
67
+ "Ipa#{group_metadata.reformatted_version.upcase}"
68
+ end
69
+
65
70
  def resource_type
66
71
  group_metadata.resource
67
72
  end
@@ -127,7 +132,7 @@ module IpaTestKit
127
132
  end
128
133
 
129
134
  def optional?
130
- conformance_expectation != 'SHALL' || !search_metadata[:must_support_or_mandatory]
135
+ conformance_expectation != 'SHALL' || !search_metadata[:must_support_or_mandatory]
131
136
  end
132
137
 
133
138
  def search_definition(name)
@@ -138,11 +143,6 @@ module IpaTestKit
138
143
  first_search? && group_metadata.delayed_references.present?
139
144
  end
140
145
 
141
- def possible_status_search?
142
- !search_metadata[:names].any? { |name| name.include? 'status' } &&
143
- group_metadata.search_definitions.keys.any? { |key| key.to_s.include? 'status' }
144
- end
145
-
146
146
  def token_search_params
147
147
  @token_search_params ||=
148
148
  search_param_names.select do |name|
@@ -178,14 +178,10 @@ module IpaTestKit
178
178
  first_search? && search_param_names.include?('patient')
179
179
  end
180
180
 
181
- def test_medication_inclusion_mr?
181
+ def test_medication_inclusion?
182
182
  resource_type == 'MedicationRequest'
183
183
  end
184
184
 
185
- def test_medication_inclusion_ms?
186
- resource_type == 'MedicationStatement'
187
- end
188
-
189
185
  def test_post_search?
190
186
  first_search?
191
187
  end
@@ -197,9 +193,7 @@ module IpaTestKit
197
193
  properties[:resource_type] = "'#{resource_type}'"
198
194
  properties[:search_param_names] = search_param_names_array
199
195
  properties[:saves_delayed_references] = 'true' if saves_delayed_references?
200
- properties[:possible_status_search] = 'true' if possible_status_search?
201
- properties[:test_medication_inclusion_mr] = 'true' if test_medication_inclusion_mr?
202
- properties[:test_medication_inclusion_ms] = 'true' if test_medication_inclusion_ms?
196
+ properties[:test_medication_inclusion] = 'true' if test_medication_inclusion?
203
197
  properties[:token_search_params] = token_search_params_string if token_search_params.present?
204
198
  properties[:test_reference_variants] = 'true' if test_reference_variants?
205
199
  properties[:params_with_comparators] = required_comparators_string if required_comparators.present?
@@ -208,6 +202,15 @@ module IpaTestKit
208
202
  end
209
203
  end
210
204
 
205
+ def url_version
206
+ case group_metadata.version
207
+ when 'v3.1.1'
208
+ 'STU3.1.1'
209
+ when 'v4.0.0'
210
+ 'STU4'
211
+ end
212
+ end
213
+
211
214
  def search_test_properties_string
212
215
  search_properties
213
216
  .map { |key, value| "#{' ' * 8}#{key}: #{value}" }
@@ -231,7 +234,7 @@ module IpaTestKit
231
234
  This test verifies that the server supports searching by reference using
232
235
  the form `patient=[id]` as well as `patient=Patient/[id]`. The two
233
236
  different forms are expected to return the same number of results. IPA
234
- requires that both forms are supported by IPA responders.
237
+ requires that both forms are supported by IPA Core responders.
235
238
  REFERENCE_SEARCH_DESCRIPTION
236
239
  end
237
240
 
@@ -244,24 +247,14 @@ module IpaTestKit
244
247
  FIRST_SEARCH_DESCRIPTION
245
248
  end
246
249
 
247
- def medication_inclusion_mr_description
248
- return '' unless test_medication_inclusion_mr?
250
+ def medication_inclusion_description
251
+ return '' unless test_medication_inclusion?
249
252
 
250
- <<~MEDICATION_INCLUSION_MR_DESCRIPTION
253
+ <<~MEDICATION_INCLUSION_DESCRIPTION
251
254
  If any MedicationRequest resources use external references to
252
255
  Medications, the search will be repeated with
253
256
  `_include=MedicationRequest:medication`.
254
- MEDICATION_INCLUSION_MR_DESCRIPTION
255
- end
256
-
257
- def medication_inclusion_ms_description
258
- return '' unless test_medication_inclusion_ms?
259
-
260
- <<~MEDICATION_INCLUSION_MS_DESCRIPTION
261
- If any MedicationStatement resources use external references to
262
- Medications, the search will be repeated with
263
- `_include=MedicationStatement:medication`.
264
- MEDICATION_INCLUSION_MS_DESCRIPTION
257
+ MEDICATION_INCLUSION_DESCRIPTION
265
258
  end
266
259
 
267
260
  def post_search_description
@@ -271,7 +264,7 @@ module IpaTestKit
271
264
  Additionally, this test will check that GET and POST search methods
272
265
  return the same number of results. Search by POST is required by the
273
266
  FHIR R4 specification, and these tests interpret search by GET as a
274
- requirement of IPA v0.1.0.
267
+ requirement of IPA #{group_metadata.version}.
275
268
  POST_SEARCH_DESCRIPTION
276
269
  end
277
270
 
@@ -287,7 +280,9 @@ module IpaTestKit
287
280
  #{first_search_description}
288
281
  #{post_search_description}
289
282
 
290
- [IPA Server CapabilityStatement](https://build.fhir.org/ig/HL7/fhir-ipa/CapabilityStatement-ipa-server.html)
283
+ # TODO: Fix this
284
+ # [US Core Server CapabilityStatement](http://hl7.org/fhir/us/core/#{url_version}/CapabilityStatement-us-core-server.html)
285
+
291
286
  DESCRIPTION
292
287
  end
293
288
  end
@@ -2,13 +2,17 @@ module IpaTestKit
2
2
  class Generator
3
3
  module SpecialCases
4
4
  RESOURCES_TO_EXCLUDE = [
5
- 'Medication',
6
- #'PractitionerRole'
5
+ 'Location'
6
+ ].freeze
7
+
8
+ PROFILES_TO_EXCLUDE = [
9
+ 'http://hl7.org/fhir/us/core/StructureDefinition/us-core-observation-survey',
10
+ 'http://hl7.org/fhir/us/core/StructureDefinition/us-core-vital-signs'
7
11
  ].freeze
8
12
 
9
13
  class << self
10
- def exclude_resource?(resource)
11
- RESOURCES_TO_EXCLUDE.include? resource
14
+ def exclude_group?(group)
15
+ RESOURCES_TO_EXCLUDE.include?(group&.resource)
12
16
  end
13
17
  end
14
18
  end
@@ -5,15 +5,16 @@ module IpaTestKit
5
5
  class Generator
6
6
  class SuiteGenerator
7
7
  class << self
8
- def generate(ig_metadata)
9
- new(ig_metadata).generate
8
+ def generate(ig_metadata, base_output_dir)
9
+ new(ig_metadata, base_output_dir).generate
10
10
  end
11
11
  end
12
12
 
13
- attr_accessor :ig_metadata
13
+ attr_accessor :ig_metadata, :base_output_dir
14
14
 
15
- def initialize(ig_metadata)
15
+ def initialize(ig_metadata, base_output_dir)
16
16
  self.ig_metadata = ig_metadata
17
+ self.base_output_dir = base_output_dir
17
18
  end
18
19
 
19
20
  def template
@@ -32,16 +33,32 @@ module IpaTestKit
32
33
  "IpaTestSuite"
33
34
  end
34
35
 
36
+ def module_name
37
+ "Ipa#{ig_metadata.reformatted_version.upcase}"
38
+ end
39
+
35
40
  def output_file_name
36
- File.join(__dir__, '..', 'generated', base_output_file_name)
41
+ File.join(base_output_dir, base_output_file_name)
37
42
  end
38
43
 
39
44
  def suite_id
40
- 'ipa_010'
45
+ "ipa_#{ig_metadata.reformatted_version}"
41
46
  end
42
47
 
43
48
  def title
44
- 'IPA 3.1.1'
49
+ "International Patient Access (#{ig_metadata.ig_version})"
50
+ end
51
+
52
+ def short_title
53
+ "IPA #{ig_metadata.ig_version}"
54
+ end
55
+
56
+ def validator_env_name
57
+ "IPA_#{ig_metadata.reformatted_version.upcase}_VALIDATOR_URL"
58
+ end
59
+
60
+ def ig_link
61
+ 'http://build.fhir.org/ig/HL7/fhir-ipa/'
45
62
  end
46
63
 
47
64
  def generate
@@ -50,7 +67,7 @@ module IpaTestKit
50
67
 
51
68
  def groups
52
69
  ig_metadata.ordered_groups
53
- .reject { |group| SpecialCases.exclude_resource? group.resource }
70
+ .reject { |group| SpecialCases.exclude_group? group }
54
71
  end
55
72
 
56
73
  def group_id_list
@@ -62,6 +79,22 @@ module IpaTestKit
62
79
  @group_file_list ||=
63
80
  groups.map { |group| group.file_name.delete_suffix('.rb') }
64
81
  end
82
+
83
+ def capability_statement_file_name
84
+ "../../custom_groups/#{ig_metadata.ig_version}/capability_statement_group"
85
+ end
86
+
87
+ def capability_statement_group_id
88
+ "ipa_#{ig_metadata.reformatted_version}_capability_statement"
89
+ end
90
+
91
+ def smart_launch_file_name
92
+ "../../custom_groups/#{ig_metadata.ig_version}/ipa_smart_launch_group"
93
+ end
94
+
95
+ def smart_launch_group_id
96
+ "ipa_#{ig_metadata.reformatted_version}_smart_launch"
97
+ end
65
98
  end
66
99
  end
67
100
  end
@@ -27,21 +27,33 @@ module IpaTestKit
27
27
  end
28
28
  end
29
29
 
30
+ def element_has_optional_binding_slice?(element)
31
+ element.sliceName.present? && element.min == 0
32
+ end
33
+
30
34
  def profile_elements_with_bindings
31
35
  profile_elements
32
- .select { |element| element.binding.present? }
33
- .reject { |element| element_has_fixed_value? element }
36
+ .select { |element| element.binding.present? && element.binding.strength == 'required'}
37
+ .reject { |element| element_has_fixed_value?(element) || element_has_optional_binding_slice?(element) }
34
38
  end
35
39
 
40
+
41
+
36
42
  def element_terminology_bindings
37
43
  profile_elements_with_bindings.map do |element|
38
- {
44
+ binding = {
39
45
  type: element.type.first.code,
40
46
  strength: element.binding.strength,
41
47
  # Goal.target.detail has an unbound binding
42
48
  system: element.binding.valueSet&.split('|')&.first,
43
49
  path: element.path.gsub('[x]', '').gsub("#{resource}.", '')
44
50
  }
51
+
52
+ if element.sliceName.present? && element.min > 0
53
+ binding[:required_binding_slice] = true
54
+ end
55
+
56
+ binding
45
57
  end
46
58
  end
47
59
 
@@ -61,6 +73,9 @@ module IpaTestKit
61
73
  url = extension_profile_url(extension_profile_element)
62
74
  extension = ig_resources.profile_by_url(url)
63
75
 
76
+ # TODO: Temporaray fix for extension defined out of US Core. FI-1623
77
+ next if extension.nil?
78
+
64
79
  elements = extension.snapshot.element
65
80
  elements_with_bindings = elements.select do |element|
66
81
  element.binding.present? && !element.id.include?('Extension.extension')