ipa_test_kit 0.2.0 → 0.3.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (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,19 @@ module IpaTestKit
5
5
  class Generator
6
6
  class GroupGenerator
7
7
  class << self
8
- def generate(ig_metadata)
8
+ def generate(ig_metadata, base_output_dir)
9
9
  ig_metadata.ordered_groups
10
- .reject { |group| SpecialCases.exclude_resource? group.resource }
11
- .each { |group| new(group).generate }
10
+ .reject { |group| group.nil?}
11
+ .reject { |group| SpecialCases.exclude_group? group }
12
+ .each { |group| new(group, base_output_dir).generate }
12
13
  end
13
14
  end
14
15
 
15
- attr_accessor :group_metadata
16
+ attr_accessor :group_metadata, :base_output_dir
16
17
 
17
- def initialize(group_metadata)
18
+ def initialize(group_metadata, base_output_dir)
18
19
  self.group_metadata = group_metadata
20
+ self.base_output_dir = base_output_dir
19
21
  end
20
22
 
21
23
  def template
@@ -38,6 +40,10 @@ module IpaTestKit
38
40
  "#{Naming.upper_camel_case_for_profile(group_metadata)}Group"
39
41
  end
40
42
 
43
+ def module_name
44
+ "Ipa#{group_metadata.reformatted_version.upcase}"
45
+ end
46
+
41
47
  def title
42
48
  group_metadata.title
43
49
  end
@@ -47,11 +53,11 @@ module IpaTestKit
47
53
  end
48
54
 
49
55
  def output_file_name
50
- File.join(__dir__, '..', 'generated', base_output_file_name)
56
+ File.join(base_output_dir, base_output_file_name)
51
57
  end
52
58
 
53
59
  def metadata_file_name
54
- File.join(__dir__, '..', 'generated', profile_identifier, base_metadata_file_name)
60
+ File.join(base_output_dir, profile_identifier, base_metadata_file_name)
55
61
  end
56
62
 
57
63
  def profile_identifier
@@ -59,13 +65,27 @@ module IpaTestKit
59
65
  end
60
66
 
61
67
  def group_id
62
- "ipa_010_#{profile_identifier}"
68
+ "ipa_#{group_metadata.reformatted_version}_#{profile_identifier}"
63
69
  end
64
70
 
65
71
  def resource_type
66
72
  group_metadata.resource
67
73
  end
68
74
 
75
+ def search_validation_resource_type
76
+ text = "#{resource_type} resources"
77
+ if resource_type == 'Condition' && group_metadata.reformatted_version == 'v501'
78
+ case profile_url
79
+ when 'http://hl7.org/fhir/us/core/StructureDefinition/us-core-condition-encounter-diagnosis'
80
+ text.concat(' with category `encounter-diagnosis`')
81
+ when 'http://hl7.org/fhir/us/core/StructureDefinition/us-core-condition-problems-health-concerns'
82
+ text.concat(' with category `problem-list-item | health-concern`')
83
+ end
84
+ end
85
+
86
+ text
87
+ end
88
+
69
89
  def profile_name
70
90
  group_metadata.profile_name
71
91
  end
@@ -74,13 +94,31 @@ module IpaTestKit
74
94
  group_metadata.profile_url
75
95
  end
76
96
 
97
+ def base_observation_group?
98
+ profile_url == 'http://hl7.org/fhir/uv/ipa/StructureDefinition/ipa-observation'
99
+ end
100
+
101
+ def optional?
102
+ resource_type == 'QuestionnaireResponse'
103
+ end
104
+
105
+ def read_all_resources?(id)
106
+ ['Medication', 'Practitioner', 'PractitionerRole'].include?(resource_type) &&
107
+ id.end_with?('read_test')
108
+ end
109
+
77
110
  def generate
111
+ add_special_tests
78
112
  File.open(output_file_name, 'w') { |f| f.write(output) }
79
113
  group_metadata.id = group_id
80
114
  group_metadata.file_name = base_output_file_name
81
115
  File.open(metadata_file_name, 'w') { |f| f.write(YAML.dump(group_metadata.to_hash)) }
82
116
  end
83
117
 
118
+ def add_special_tests
119
+
120
+ end
121
+
84
122
  def test_id_list
85
123
  @test_id_list ||=
86
124
  group_metadata.tests.map { |test| test[:id] }
@@ -88,7 +126,10 @@ module IpaTestKit
88
126
 
89
127
  def test_file_list
90
128
  @test_file_list ||=
91
- group_metadata.tests.map { |test| test[:file_name].delete_suffix('.rb') }
129
+ group_metadata.tests.map do |test|
130
+ name_without_suffix = test[:file_name].delete_suffix('.rb')
131
+ name_without_suffix.start_with?('..') ? name_without_suffix : "#{profile_identifier}/#{name_without_suffix}"
132
+ end
92
133
  end
93
134
 
94
135
  def required_searches
@@ -123,7 +164,7 @@ module IpaTestKit
123
164
 
124
165
  ### Search Validation
125
166
  Inferno will retrieve up to the first 20 bundle pages of the reply for
126
- #{resource_type} resources and save them for subsequent tests. Each of
167
+ #{search_validation_resource_type} and save them for subsequent tests. Each of
127
168
  these resources is then checked to see if it matches the searched
128
169
  parameters in accordance with [FHIR search
129
170
  guidelines](https://www.hl7.org/fhir/search.html). The test will fail,
@@ -139,7 +180,7 @@ module IpaTestKit
139
180
  The IPA #{title} sequence verifies that the system under test is
140
181
  able to provide correct responses for #{resource_type} queries. These queries
141
182
  must contain resources conforming to the #{profile_name} as
142
- specified in the IPA v0.1.0 Implementation Guide.
183
+ specified in the IPA #{group_metadata.version} Implementation Guide.
143
184
 
144
185
  # Testing Methodology
145
186
  #{search_description}
@@ -161,9 +202,10 @@ module IpaTestKit
161
202
  then the test will fail.
162
203
 
163
204
  ## Reference Validation
164
- Each reference within the resources found from the previous tests must
165
- resolve. The test will attempt to read each reference found and will
166
- fail if any attempted read fails.
205
+ At least one instance of each external reference in elements marked as
206
+ "must support" within the resources provided by the system must resolve.
207
+ The test will attempt to read each reference found and will fail if no
208
+ read succeeds.
167
209
  DESCRIPTION
168
210
  end
169
211
  end
@@ -9,6 +9,7 @@ module IpaTestKit
9
9
  :resource,
10
10
  :profile_url,
11
11
  :profile_name,
12
+ :profile_version,
12
13
  :title,
13
14
  :short_description,
14
15
  :interactions,
@@ -28,19 +29,10 @@ module IpaTestKit
28
29
  :delayed_references
29
30
  ].freeze
30
31
 
31
- NON_USCDI_RESOURCES = [
32
- 'Encounter',
33
- 'Location',
34
- 'Organization',
35
- 'Practitioner',
36
- 'PractitionerRole',
37
- 'Provenance'
38
- ].freeze
39
-
40
32
  ATTRIBUTES.each { |name| attr_accessor name }
41
33
 
42
- def initialize(params)
43
- params.each do |key, value|
34
+ def initialize(metadata)
35
+ metadata.each do |key, value|
44
36
  raise "Unknown attribute #{key}" unless ATTRIBUTES.include? key
45
37
 
46
38
  instance_variable_set(:"@#{key}", value)
@@ -50,17 +42,13 @@ module IpaTestKit
50
42
  def delayed?
51
43
  return false if resource == 'Patient'
52
44
 
53
- no_patient_searches? || non_uscdi_resource?
45
+ no_patient_searches?
54
46
  end
55
47
 
56
48
  def no_patient_searches?
57
49
  searches.none? { |search| search[:names].include? 'patient' }
58
50
  end
59
51
 
60
- def non_uscdi_resource?
61
- NON_USCDI_RESOURCES.include? resource
62
- end
63
-
64
52
  def add_test(id:, file_name:)
65
53
  self.tests ||= []
66
54
 
@@ -77,7 +65,7 @@ module IpaTestKit
77
65
  end
78
66
 
79
67
  def to_hash
80
- ATTRIBUTES.each_with_object({}) { |key, hash| hash[key] = send(key) }
68
+ ATTRIBUTES.each_with_object({}) { |key, hash| hash[key] = send(key) unless send(key).nil? }
81
69
  end
82
70
 
83
71
  def add_delayed_references(delayed_profiles, ig_resources)
@@ -7,13 +7,14 @@ require_relative 'terminology_binding_metadata_extractor'
7
7
  module IpaTestKit
8
8
  class Generator
9
9
  class GroupMetadataExtractor
10
- attr_accessor :resource_capabilities, :profile_url, :ig_metadata, :ig_resources
10
+ attr_accessor :resource_capabilities, :profile_url, :ig_metadata, :ig_resources, :base_search_params
11
11
 
12
- def initialize(resource_capabilities, profile_url, ig_metadata, ig_resources)
12
+ def initialize(resource_capabilities, profile_url, ig_metadata, ig_resources, base_search_params)
13
13
  self.resource_capabilities = resource_capabilities
14
14
  self.profile_url = profile_url
15
15
  self.ig_metadata = ig_metadata
16
16
  self.ig_resources = ig_resources
17
+ self.base_search_params = base_search_params
17
18
  end
18
19
 
19
20
  def group_metadata
@@ -32,6 +33,7 @@ module IpaTestKit
32
33
  resource: resource,
33
34
  profile_url: profile_url,
34
35
  profile_name: profile_name,
36
+ profile_version: profile_version,
35
37
  title: title,
36
38
  short_description: short_description,
37
39
  interactions: interactions,
@@ -57,26 +59,32 @@ module IpaTestKit
57
59
  def mark_mandatory_and_must_support_searches
58
60
  searches.each do |search|
59
61
  search[:names_not_must_support_or_mandatory] = search[:names].reject do |name|
60
- path = search_definitions[name.to_sym][:full_path]
62
+ full_paths = search_definitions[name.to_sym][:full_paths]
61
63
  any_must_support_elements = (must_supports[:elements]).any? do |element|
62
- full_must_support_path = "#{resource}.#{element[:path]}"
64
+ full_must_support_paths = ["#{resource}.#{element[:original_path]}", "#{resource}.#{element[:path]}"]
63
65
 
64
- # allow for non-choice, choice types, and _id
65
- name == '_id' || full_must_support_path == path || full_must_support_path == "#{path}[x]"
66
+ full_paths.any? do |path|
67
+ # allow for non-choice, choice types, and _id
68
+ name == '_id' || full_must_support_paths.include?(path) || full_must_support_paths.include?("#{path}[x]")
69
+ end
66
70
  end
67
71
 
68
72
  any_must_support_slices = must_supports[:slices].any? do |slice|
69
73
  # only handle type slices because that is all we need for now
74
+ # for a slice like Observation.effective[x]:effectiveDateTime, the search parameter's expression could be
75
+ # either Observation.effective or Observation.effectiveDateTime.
70
76
  if slice[:discriminator] && slice[:discriminator][:type] == 'type'
71
77
  full_must_support_path = "#{resource}.#{slice[:path].sub('[x]', slice[:discriminator][:code])}"
72
- full_must_support_path == path
78
+ base_must_support_path = "#{resource}.#{slice[:path].sub('[x]', '')}"
79
+
80
+ full_paths.intersection([full_must_support_path,base_must_support_path]).present?
73
81
  else
74
82
  false
75
83
  end
76
84
  end
77
85
 
78
86
  any_mandatory_elements = mandatory_elements.any? do |element|
79
- element == path
87
+ full_paths.include?(element)
80
88
  end
81
89
 
82
90
  any_must_support_elements || any_must_support_slices || any_mandatory_elements
@@ -89,7 +97,15 @@ module IpaTestKit
89
97
  ### BEGIN SPECIAL CASES ###
90
98
 
91
99
  CATEGORY_FIRST_PROFILES = [
92
- 'http://hl7.org/fhir/uv/ipa/StructureDefinition/ipa-observation',
100
+ # 'http://hl7.org/fhir/us/core/StructureDefinition/us-core-careplan',
101
+ # 'http://hl7.org/fhir/us/core/StructureDefinition/us-core-diagnosticreport-lab',
102
+ # 'http://hl7.org/fhir/us/core/StructureDefinition/us-core-diagnosticreport-note',
103
+ # 'http://hl7.org/fhir/us/core/StructureDefinition/us-core-observation-clinical-test',
104
+ # 'http://hl7.org/fhir/us/core/StructureDefinition/us-core-observation-imaging',
105
+ # 'http://hl7.org/fhir/us/core/StructureDefinition/us-core-observation-lab',
106
+ # 'http://hl7.org/fhir/us/core/StructureDefinition/us-core-observation-sdoh-assessment',
107
+ # 'http://hl7.org/fhir/us/core/StructureDefinition/us-core-observation-social-history',
108
+ # 'http://hl7.org/fhir/us/core/StructureDefinition/us-core-observation-survey'
93
109
  ]
94
110
 
95
111
  def category_first_profile?
@@ -100,10 +116,6 @@ module IpaTestKit
100
116
  @first_search_params ||=
101
117
  if category_first_profile?
102
118
  ['patient', 'category']
103
- elsif resource == 'Observation'
104
- ['patient', 'code']
105
- elsif resource == 'MedicationRequest'
106
- ['patient', 'intent']
107
119
  else
108
120
  ['patient']
109
121
  end
@@ -111,17 +123,6 @@ module IpaTestKit
111
123
 
112
124
  def handle_special_cases
113
125
  set_first_search
114
-
115
- case profile_url
116
- when 'http://hl7.org/fhir/uv/ipa/StructureDefinition/ipa-implantable-device'
117
- must_supports[:elements].delete_if do |element|
118
- ['udiCarrier.carrierAIDC', 'udiCarrier.carrierHRF'].include? element[:path]
119
- end
120
- when 'http://hl7.org/fhir/uv/ipa/StructureDefinition/ipa-documentreference'
121
- must_supports[:elements].delete_if do |element|
122
- ['content.attachment.data', 'content.attachment.url'].include? element[:path]
123
- end
124
- end
125
126
  end
126
127
 
127
128
  def set_first_search
@@ -172,11 +173,22 @@ module IpaTestKit
172
173
  end
173
174
 
174
175
  def profile_name
176
+ binding.pry if profile.nil?
175
177
  profile.title.gsub(' ', ' ')
176
178
  end
177
179
 
180
+ def profile_version
181
+ profile.version
182
+ end
183
+
178
184
  def title
179
- profile.title.gsub(/IPA\s*/, '').gsub(/\s*Profile/, '').strip
185
+ title = profile.title.gsub(/IPA\-/, ' ').strip
186
+
187
+ if (Naming.resources_with_multiple_profiles.include?(resource)) && !title.start_with?(resource) && version != 'v3.1.1'
188
+ title = "#{resource} (#{title.split(resource).map(&:strip).join(' ').gsub(/\-/, ' ')})".titleize
189
+ end
190
+
191
+ title
180
192
  end
181
193
 
182
194
  def short_description
@@ -205,7 +217,7 @@ module IpaTestKit
205
217
 
206
218
  def search_metadata_extractor
207
219
  @search_metadata_extractor ||=
208
- SearchMetadataExtractor.new(resource_capabilities, ig_resources, resource, profile_elements)
220
+ SearchMetadataExtractor.new(resource_capabilities, ig_resources, resource, profile_elements, base_search_params)
209
221
  end
210
222
 
211
223
  def searches
@@ -227,7 +239,7 @@ module IpaTestKit
227
239
  def required_concepts
228
240
  # The base FHIR vital signs profile has a required binding that isn't
229
241
  # relevant for any of its child profiles
230
- return if resource == 'Observation'
242
+ return [] if resource == 'Observation'
231
243
 
232
244
  profile_elements
233
245
  .select { |element| element.type&.any? { |type| type.code == 'CodeableConcept' } }
@@ -247,7 +259,7 @@ module IpaTestKit
247
259
 
248
260
  def must_support_metadata_extractor
249
261
  @must_support_metadata_extractor ||=
250
- MustSupportMetadataExtractor.new(profile_elements, profile, resource)
262
+ MustSupportMetadataExtractor.new(profile_elements, profile, resource, ig_resources)
251
263
  end
252
264
 
253
265
  def must_supports
@@ -260,16 +272,18 @@ module IpaTestKit
260
272
  profile_elements
261
273
  .select { |element| element.min.positive? }
262
274
  .map { |element| element.path }
275
+ .uniq
263
276
  end
264
277
 
265
278
  def references
266
279
  @references ||=
267
280
  profile_elements
268
- .select { |element| element.type&.first&.code == 'Reference' }
281
+ .select { |element| element.type&.any? { |type| type&.code == 'Reference' } }
269
282
  .map do |reference_definition|
283
+ reference_type = reference_definition.type.find { |type| type.code == 'Reference' }
270
284
  {
271
- path: reference_definition.path,
272
- profiles: reference_definition.type.first.targetProfile
285
+ path: reference_definition.path.gsub('[x]', 'Reference'),
286
+ profiles: reference_type.targetProfile
273
287
  }
274
288
  end
275
289
  end
@@ -1,5 +1,6 @@
1
1
  require 'active_support/all'
2
2
  require 'fhir_models'
3
+ require 'pathname'
3
4
  require 'rubygems/package'
4
5
  require 'zlib'
5
6
  require_relative 'ig_resources'
@@ -7,6 +8,12 @@ require_relative 'ig_resources'
7
8
  module IpaTestKit
8
9
  class Generator
9
10
  class IGLoader
11
+ attr_accessor :ig_file_name
12
+
13
+ def initialize(ig_file_name)
14
+ self.ig_file_name = ig_file_name
15
+ end
16
+
10
17
  def ig_resources
11
18
  @ig_resources ||= IGResources.new
12
19
  end
@@ -17,7 +24,9 @@ module IpaTestKit
17
24
  end
18
25
 
19
26
  def load_ig
20
- tar = Gem::Package::TarReader.new(Zlib::GzipReader.open(File.join(__dir__, '..', 'igs', 'package.tgz')))
27
+ tar = Gem::Package::TarReader.new(
28
+ Zlib::GzipReader.open(ig_file_name)
29
+ )
21
30
 
22
31
  tar.each do |entry|
23
32
  next if entry.directory?
@@ -43,7 +52,11 @@ module IpaTestKit
43
52
  end
44
53
 
45
54
  def load_standalone_resources
46
- Dir.glob(File.join(__dir__, '..', 'igs', '*.json')).each do |file_path|
55
+ ig_directory = ig_file_name.chomp('.tgz')
56
+
57
+ return ig_resources unless File.exist? ig_directory
58
+
59
+ Dir.glob(File.join(ig_directory, '*.json')).each do |file_path|
47
60
  begin
48
61
  resource = FHIR.from_contents(File.read(file_path))
49
62
  next if resource.nil?
@@ -4,12 +4,12 @@ module IpaTestKit
4
4
  attr_accessor :ig_version, :groups
5
5
 
6
6
  def reformatted_version
7
- @reformatted_version ||= ig_version.delete('.')
7
+ @reformatted_version ||= ig_version.delete('.').delete('-')
8
8
  end
9
9
 
10
10
  def ordered_groups
11
11
  @ordered_groups ||=
12
- [patient_group] + non_delayed_groups + delayed_groups
12
+ ([patient_group] + non_delayed_groups + delayed_groups).reject{|group| group.nil?}
13
13
  end
14
14
 
15
15
  def patient_group
@@ -4,11 +4,13 @@ require_relative 'group_metadata_extractor'
4
4
  module IpaTestKit
5
5
  class Generator
6
6
  class IGMetadataExtractor
7
- attr_accessor :ig_resources, :metadata
7
+ attr_accessor :ig_resources, :metadata, :base_search_params
8
8
 
9
- def initialize(ig_resources)
9
+ def initialize(ig_resources, base_search_params)
10
10
  self.ig_resources = ig_resources
11
- add_vital_signs_profiles
11
+ self.base_search_params = base_search_params
12
+ add_missing_supported_profiles
13
+ remove_extra_supported_profiles
12
14
  self.metadata = IGMetadata.new
13
15
  end
14
16
 
@@ -26,27 +28,28 @@ module IpaTestKit
26
28
  ig_resources.capability_statement.rest.first.resource
27
29
  end
28
30
 
29
- # The IPA Server Capability Statement does not list support for the
30
- # required vital signs profiles, so they need to be added
31
- def add_vital_signs_profiles
31
+ def add_missing_supported_profiles
32
32
  ig_resources.capability_statement.rest.first.resource
33
33
  .find { |resource| resource.type == 'Observation' }
34
34
  .supportedProfile.concat [
35
- 'http://hl7.org/fhir/StructureDefinition/bodyheight',
36
- 'http://hl7.org/fhir/StructureDefinition/bodytemp',
37
- 'http://hl7.org/fhir/StructureDefinition/bp',
38
- 'http://hl7.org/fhir/StructureDefinition/bodyweight',
39
- 'http://hl7.org/fhir/StructureDefinition/heartrate',
40
- 'http://hl7.org/fhir/StructureDefinition/resprate'
35
+ 'http://hl7.org/fhir/StructureDefinition/vitalsigns'
41
36
  ]
42
37
  end
43
38
 
39
+ def remove_extra_supported_profiles
40
+ ig_resources.capability_statement.rest.first.resource
41
+ .find { |resource| resource.type == 'Observation' }
42
+ .supportedProfile.delete_if do |profile_url|
43
+ SpecialCases::PROFILES_TO_EXCLUDE.include?(profile_url)
44
+ end
45
+ end
46
+
44
47
  def add_metadata_from_resources
45
48
  metadata.groups =
46
49
  resources_in_capability_statement.flat_map do |resource|
47
- resource.supportedProfile&.map do |supported_profile|
48
- GroupMetadataExtractor.new(resource, supported_profile, metadata, ig_resources).group_metadata
49
- end
50
+ ([resource.profile] + resource.supportedProfile).uniq&.map do |supported_profile|
51
+ GroupMetadataExtractor.new(resource, supported_profile, metadata, ig_resources, base_search_params).group_metadata
52
+ end.compact
50
53
  end
51
54
 
52
55
  metadata.postprocess_groups(ig_resources)
@@ -32,10 +32,11 @@ module IpaTestKit
32
32
  end
33
33
 
34
34
  def search_param_by_resource_and_name(resource, name)
35
- normalized_name = name.to_s == '_id' ? 'id' : name.to_s
35
+ # remove '_' from search parameter name, such as _id or _tag
36
+ normalized_name = normalized_name = name.to_s.delete_prefix('_')
36
37
 
37
38
  resources_by_type['SearchParameter']
38
- .find { |param| param.id == "ipa-#{resource.downcase}-#{normalized_name}" }
39
+ .find { |param| param.id == "us-core-#{resource.downcase}-#{normalized_name}" }
39
40
  end
40
41
 
41
42
  private