ipa_test_kit 0.2.0 → 0.3.0

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 +2846 -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 +260 -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