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
@@ -1,49 +1,31 @@
1
+ require_relative 'value_extractor'
2
+
1
3
  module IpaTestKit
2
4
  class Generator
3
5
  class MustSupportMetadataExtractor
4
- attr_accessor :profile_elements, :profile, :resource
6
+ attr_accessor :profile_elements, :profile, :resource, :ig_resources
5
7
 
6
- def initialize(profile_elements, profile, resource)
8
+ def initialize(profile_elements, profile, resource, ig_resources)
7
9
  self.profile_elements = profile_elements
8
10
  self.profile = profile
9
11
  self.resource = resource
12
+ self.ig_resources = ig_resources
10
13
  end
11
14
 
12
15
  def must_supports
13
- {
16
+ @must_supports = {
14
17
  extensions: must_support_extensions,
15
18
  slices: must_support_slices,
16
19
  elements: must_support_elements
17
20
  }
18
- end
19
-
20
- # exclude component from vital sign profiles except observation-bp and observation-pulse-ox
21
- # observation-bp is excluded by profile.name != 'observation-bp'
22
- # observation-plux-ox is excluded by profile.baseDefinition == 'http://hl7.org/fhir/StructureDefinition/vitalsigns'
23
- def vital_signs_component?(element)
24
- profile.baseDefinition == 'http://hl7.org/fhir/StructureDefinition/vitalsigns' &&
25
- profile.name != 'observation-bp' &&
26
- element.path.include?('component')
27
- end
28
21
 
29
- def blood_pressure_value?(element)
30
- profile.name == 'observation-bp' && element.path.include?('Observation.value[x]')
31
- end
22
+ handle_special_cases
32
23
 
33
- # ONC clarified that health IT developers that always provide HL7 FHIR "observation" values
34
- # are not required to demonstrate Health IT Module support for "dataAbsentReason" elements.
35
- # Remove MS check for dataAbsentReason and component.dataAbsentReason from vital sign profiles
36
- def data_absent_reason?(element)
37
- profile.type == 'Observation' && ['Observation.dataAbsentReason', 'Observation.component.dataAbsentReason'].include?(element.path)
24
+ @must_supports
38
25
  end
39
26
 
40
27
  def all_must_support_elements
41
- profile_elements
42
- .select { |element| element.mustSupport }
43
- .reject do |element|
44
- # TODO: Can special cases be moved out of here?
45
- vital_signs_component?(element) || blood_pressure_value?(element) || data_absent_reason?(element)
46
- end
28
+ profile_elements.select { |element| element.mustSupport }
47
29
  end
48
30
 
49
31
  def must_support_extension_elements
@@ -101,12 +83,32 @@ module IpaTestKit
101
83
  code: pattern_element.patternCodeableConcept.coding.first.code,
102
84
  system: pattern_element.patternCodeableConcept.coding.first.system
103
85
  }
86
+ elsif pattern_element.patternCoding.present?
87
+ {
88
+ type: 'patternCoding',
89
+ path: discriminator_path,
90
+ code: pattern_element.patternCoding.code,
91
+ system: pattern_element.patternCoding.system
92
+ }
104
93
  elsif pattern_element.patternIdentifier.present?
105
94
  {
106
95
  type: 'patternIdentifier',
107
96
  path: discriminator_path,
108
97
  system: pattern_element.patternIdentifier.system
109
98
  }
99
+ elsif pattern_element.binding&.strength == 'required' &&
100
+ pattern_element.binding&.valueSet.present?
101
+
102
+ value_extractor = ValueExactor.new(ig_resources, resource, profile_elements)
103
+
104
+ values = value_extractor.values_from_value_set_binding(pattern_element).presence ||
105
+ value_extractor.values_from_resource_metadata([metadata[:path]]).presence || []
106
+
107
+ {
108
+ type: 'requiredBinding',
109
+ path: discriminator_path,
110
+ values: values
111
+ }
110
112
  else
111
113
  raise StandardError, 'Unsupported discriminator pattern type'
112
114
  end
@@ -166,7 +168,6 @@ module IpaTestKit
166
168
  element.path == "#{current_element.path}.#{discriminator.path}"
167
169
  end
168
170
 
169
- binding.pry if fixed_element.nil?
170
171
  {
171
172
  path: discriminator.path,
172
173
  value: fixed_element.fixedUri || fixed_element.fixedCode
@@ -198,24 +199,233 @@ module IpaTestKit
198
199
  end
199
200
  end
200
201
 
202
+ def type_must_support_extension?(extensions)
203
+ extensions&.any? do |extension|
204
+ extension.url == 'http://hl7.org/fhir/StructureDefinition/elementdefinition-type-must-support' &&
205
+ extension.valueBoolean
206
+ end
207
+ end
208
+
209
+ def save_type_code?(type)
210
+ 'Reference' == type.code
211
+ end
212
+
213
+ def get_type_must_support_metadata(current_metadata, current_element)
214
+ current_element.type.map do |type|
215
+ if type_must_support_extension?(type.extension)
216
+ metadata =
217
+ {
218
+ path: "#{current_metadata[:path].delete_suffix('[x]')}#{type.code.upcase_first}",
219
+ original_path: current_metadata[:path]
220
+ }
221
+ metadata[:type] = [type.code] if save_type_code?(type)
222
+ handle_type_must_support_target_profiles(type, metadata) if type.code == 'Reference'
223
+
224
+ metadata
225
+ end
226
+ end.compact
227
+ end
228
+
229
+ def handle_type_must_support_target_profiles(type, metadata)
230
+ index = 0
231
+ target_profiles = []
232
+
233
+ type.source_hash['_targetProfile']&.each do |hash|
234
+ if hash.present?
235
+ element = FHIR::Element.new(hash)
236
+ target_profiles << type.targetProfile[index] if type_must_support_extension?(element.extension)
237
+ end
238
+ index += 1
239
+ end
240
+
241
+ metadata[:target_profiles] = target_profiles if target_profiles.present?
242
+ end
243
+
244
+ def handle_choice_type_in_sliced_element(current_metadata, must_support_elements_metadata)
245
+ choice_element_metadata = must_support_elements_metadata.find do |metadata|
246
+ metadata[:original_path].present? &&
247
+ current_metadata[:path].include?( metadata[:original_path] )
248
+ end
249
+
250
+ if choice_element_metadata.present?
251
+ current_metadata[:original_path] = current_metadata[:path]
252
+ current_metadata[:path] = current_metadata[:path].sub(choice_element_metadata[:original_path], choice_element_metadata[:path])
253
+ end
254
+ end
255
+
201
256
  def must_support_elements
202
257
  plain_must_support_elements.each_with_object([]) do |current_element, must_support_elements_metadata|
203
258
  {
204
259
  path: current_element.path.gsub("#{resource}.", '')
205
260
  }.tap do |current_metadata|
206
- path = current_element.path.gsub("#{resource}.", '')
207
- current_metadata[:path] = path
261
+ type_must_support_metadata = get_type_must_support_metadata(current_metadata, current_element)
208
262
 
209
- handle_fixed_values(current_metadata, current_element)
263
+ if type_must_support_metadata.any?
264
+ must_support_elements_metadata.concat(type_must_support_metadata)
265
+ else
266
+ handle_choice_type_in_sliced_element(current_metadata, must_support_elements_metadata)
210
267
 
211
- must_support_elements_metadata.delete_if do |metadata|
212
- metadata[:path] == current_metadata[:path] && metadata[:fixed_value].blank?
213
- end
268
+ supported_types = current_element.type.select { |type| save_type_code?(type) }.map { |type| type.code }
269
+ current_metadata[:types] = supported_types if supported_types.present?
270
+
271
+ handle_type_must_support_target_profiles(current_element.type.first, current_metadata) if current_element.type.first&.code == 'Reference'
272
+
273
+ handle_fixed_values(current_metadata, current_element)
274
+
275
+ must_support_elements_metadata.delete_if do |metadata|
276
+ metadata[:path] == current_metadata[:path] && metadata[:fixed_value].blank?
277
+ end
214
278
 
215
- must_support_elements_metadata << current_metadata
279
+ must_support_elements_metadata << current_metadata
280
+ end
216
281
  end
217
282
  end.uniq
218
283
  end
284
+
285
+ #### SPECIAL CASE ####
286
+
287
+ def handle_special_cases
288
+ remove_vital_sign_component
289
+ remove_blood_pressure_value
290
+ add_must_support_choices
291
+
292
+ case profile.version
293
+ when '3.1.1'
294
+ remove_document_reference_custodian
295
+ when '4.0.0'
296
+ add_device_distinct_identifier
297
+ when '5.0.1'
298
+ add_document_reference_category_values
299
+ remove_survey_questionnaire_response
300
+ end
301
+ end
302
+
303
+ def is_vital_sign?
304
+ [
305
+ 'http://hl7.org/fhir/StructureDefinition/vitalsigns',
306
+ 'http://hl7.org/fhir/us/core/StructureDefinition/us-core-vital-signs'
307
+ ].include?(profile.baseDefinition)
308
+ end
309
+
310
+ def is_blood_pressure?
311
+ ['observation-bp', 'IpaBloodPressureProfile'].include?(profile.name)
312
+ end
313
+
314
+ # Exclude Observation.component from vital sign profiles except observation-bp and observation-pulse-ox
315
+ def remove_vital_sign_component
316
+ if is_vital_sign? && !is_blood_pressure? && profile.name != 'IpaPulseOximetryProfile'
317
+ @must_supports[:elements].delete_if do |element|
318
+ element[:path].start_with?('component')
319
+ end
320
+ end
321
+ end
322
+
323
+ # Exclude Observation.value[x] from observation-bp
324
+ def remove_blood_pressure_value
325
+ if is_blood_pressure?
326
+ @must_supports[:elements].delete_if do |element|
327
+ element[:path].start_with?('value[x]') || element[:original_path]&.start_with?('value[x]')
328
+ end
329
+ @must_supports[:slices].delete_if do |slice|
330
+ slice[:path].start_with?('value[x]')
331
+ end
332
+ end
333
+ end
334
+
335
+ def remove_device_carrier
336
+ if profile.type == 'Device'
337
+ @must_supports[:elements].delete_if do |element|
338
+ ['udiCarrier.carrierAIDC', 'udiCarrier.carrierHRF'].include?(element[:path])
339
+ end
340
+ end
341
+ end
342
+
343
+ # US Core clarified that server implmentation is not required to support DocumentReference.custodian (FHIR-28393)
344
+ def remove_document_reference_custodian
345
+ if profile.type == 'DocumentReference'
346
+ @must_supports[:elements].delete_if do |element|
347
+ element[:path] == 'custodian'
348
+ end
349
+ end
350
+ end
351
+
352
+ def remove_document_reference_attachment_data_url
353
+ if profile.type == 'DocumentReference'
354
+ @must_supports[:elements].delete_if do |element|
355
+ ['content.attachment.data', 'content.attachment.url'].include?(element[:path])
356
+ end
357
+ end
358
+ end
359
+
360
+ def add_must_support_choices
361
+ choices = []
362
+
363
+ choices << { paths: ['content.attachment.data', 'content.attachment.url'] } if profile.type == 'DocumentReference'
364
+
365
+ case profile.version
366
+ when '3.1.1'
367
+ choices << { paths: ['udiCarrier.carrierAIDC', 'udiCarrier.carrierHRF'] } if profile.type == 'Device'
368
+ when '4.0.0'
369
+ case profile.type
370
+ when 'Encounter'
371
+ choices << { paths: ['reasonCode', 'reasonReference'] }
372
+ choices << { paths: ['location.location', 'serviceProvider'] }
373
+ when 'MedicationRequest'
374
+ choices << { paths: ['reportedBoolean', 'reportedReference'] }
375
+ end
376
+ when '5.0.1'
377
+ case profile.type
378
+ when 'CareTeam'
379
+ choices << {
380
+ target_profiles: [
381
+ 'http://hl7.org/fhir/us/core/StructureDefinition/us-core-practitioner',
382
+ 'http://hl7.org/fhir/us/core/StructureDefinition/us-core-practitionerrole'
383
+ ]
384
+ }
385
+ when 'Condition'
386
+ choices << {
387
+ paths: ['onsetDateTime'],
388
+ extension_ids: ['Condition.extension:assertedDate']
389
+ }
390
+ when 'Encounter'
391
+ choices << { paths: ['reasonCode', 'reasonReference'] }
392
+ choices << { paths: ['location.location', 'serviceProvider'] }
393
+ when 'MedicationRequest'
394
+ choices << { paths: ['reportedBoolean', 'reportedReference'] }
395
+ end
396
+ end
397
+
398
+ @must_supports[:choices] = choices if choices.present?
399
+ end
400
+
401
+ def add_device_distinct_identifier
402
+ if profile.type == 'Device'
403
+ # FHIR-36303 US Core 4.0.0 mistakenly removed MS from Device.distinctIdentifier
404
+ # This will be fixed in US Core 5.0.0
405
+ @must_supports[:elements] << {
406
+ path: 'distinctIdentifier'
407
+ }
408
+ end
409
+ end
410
+
411
+ def add_document_reference_category_values
412
+ return unless profile.type == 'DocumentReference'
413
+
414
+ slice = @must_supports[:slices].find{|slice| slice[:path] == 'category'}
415
+
416
+ slice[:discriminator][:values] = ['clinical-note'] if slice.present?
417
+ end
418
+
419
+ # FHIR-37794 Server systems are not required to support US Core QuestionnaireResponse
420
+ def remove_survey_questionnaire_response
421
+ return unless profile.type == 'Observation' &&
422
+ ['us-core-observation-survey', 'us-core-observation-sdoh-assessment'].include?(profile.id)
423
+
424
+ element = @must_supports[:elements].find { |element| element[:path] == 'derivedFrom' }
425
+ element[:target_profiles].delete_if do |url|
426
+ url == 'http://hl7.org/fhir/us/core/StructureDefinition/us-core-questionnaireresponse'
427
+ end
428
+ end
219
429
  end
220
430
  end
221
431
  end
@@ -5,17 +5,18 @@ module IpaTestKit
5
5
  class Generator
6
6
  class MustSupportTestGenerator
7
7
  class << self
8
- def generate(ig_metadata)
8
+ def generate(ig_metadata, base_output_dir)
9
9
  ig_metadata.groups
10
- .reject { |group| SpecialCases.exclude_resource? group.resource }
11
- .each { |group| new(group).generate }
10
+ .reject { |group| SpecialCases.exclude_group? group }
11
+ .each { |group| new(group, base_output_dir).generate }
12
12
  end
13
13
  end
14
14
 
15
- attr_accessor :group_metadata
15
+ attr_accessor :group_metadata, :base_output_dir
16
16
 
17
- def initialize(group_metadata)
17
+ def initialize(group_metadata, base_output_dir)
18
18
  self.group_metadata = group_metadata
19
+ self.base_output_dir = base_output_dir
19
20
  end
20
21
 
21
22
  def template
@@ -31,7 +32,7 @@ module IpaTestKit
31
32
  end
32
33
 
33
34
  def output_file_directory
34
- File.join(__dir__, '..', 'generated', profile_identifier)
35
+ File.join(base_output_dir, profile_identifier)
35
36
  end
36
37
 
37
38
  def output_file_name
@@ -47,13 +48,17 @@ module IpaTestKit
47
48
  end
48
49
 
49
50
  def test_id
50
- "ipa_010_#{profile_identifier}_must_support_test"
51
+ "ipa_#{group_metadata.reformatted_version}_#{profile_identifier}_must_support_test"
51
52
  end
52
53
 
53
54
  def class_name
54
55
  "#{Naming.upper_camel_case_for_profile(group_metadata)}MustSupportTest"
55
56
  end
56
57
 
58
+ def module_name
59
+ "Ipa#{group_metadata.reformatted_version.upcase}"
60
+ end
61
+
57
62
  def resource_type
58
63
  group_metadata.resource
59
64
  end
@@ -63,12 +68,28 @@ module IpaTestKit
63
68
  end
64
69
 
65
70
  def must_support_list_string
66
- slice_names = group_metadata.must_supports[:slices].map { |slice| slice[:name] }
67
- element_names = group_metadata.must_supports[:elements].map { |slice| "#{resource_type}.#{slice[:path]}" }
68
- extension_names = group_metadata.must_supports[:extensions].map { |slice| slice[:id] }
71
+ build_must_support_list_string
72
+ end
73
+
74
+ def build_must_support_list_string
75
+ slice_names = group_metadata.must_supports[:slices]
76
+ .map { |slice| slice[:name] }
77
+
78
+ element_names = group_metadata.must_supports[:elements]
79
+ .map { |element| "#{resource_type}.#{element[:path]}" }
80
+
81
+ extension_names = group_metadata.must_supports[:extensions]
82
+ .map { |extension| extension[:id] }
83
+
84
+ group_metadata.must_supports[:choices]&.each do |choice|
85
+ choice[:paths].each { |path| element_names.delete("#{resource_type}.#{path}") }
86
+ element_names << choice[:paths].map { |path| "#{resource_type}.#{path}" }.join(' or ')
87
+ end
88
+
69
89
  (slice_names + element_names + extension_names)
90
+ .uniq
70
91
  .sort
71
- .map { |name| " * #{name}" }
92
+ .map { |name| "#{' ' * 8}* #{name}" }
72
93
  .join("\n")
73
94
  end
74
95
 
@@ -1,25 +1,36 @@
1
1
  module IpaTestKit
2
2
  class Generator
3
3
  module Naming
4
- ALLERGY_INTOLERANCE = 'http://hl7.org/fhir/uv/ipa/StructureDefinition/ipa-allergyintolerance'
5
- CONDITION = 'http://hl7.org/fhir/uv/ipa/StructureDefinition/ipa-condition'
6
- DOCUMENT_REFERENCE = 'http://hl7.org/fhir/uv/ipa/StructureDefinition/ipa-documentreference'
7
- IMMUNIZATION = 'http://hl7.org/fhir/uv/ipa/StructureDefinition/ipa-immunization'
8
- MEDICATION = 'http://hl7.org/fhir/uv/ipa/StructureDefinition/ipa-medication'
9
- MEDICATION_REQUEST = 'http://hl7.org/fhir/uv/ipa/StructureDefinition/ipa-medicationrequest'
10
- MEDICATION_STATEMENT = 'http://hl7.org/fhir/uv/ipa/StructureDefinition/ipa-medicationstatement'
11
- OBSERVATION = 'http://hl7.org/fhir/uv/ipa/StructureDefinition/ipa-observation'
12
- BMI = 'http://hl7.org/fhir/StructureDefinition/bmi'
13
- OXYGEN_SAT = 'http://hl7.org/fhir/StructureDefinition/oxygensat'
14
- HEAD_CIRCUMFERENCE = 'http://hl7.org/fhir/StructureDefinition/headcircum'
15
- PATIENT = 'http://hl7.org/fhir/uv/ipa/StructureDefinition/ipa-patient'
16
- PRACTITIONER = 'http://hl7.org/fhir/uv/ipa/StructureDefinition/ipa-practitioner'
17
- PRACTITIONER_ROLE = 'http://hl7.org/fhir/uv/ipa/StructureDefinition/ipa-practitionerrole'
18
- PROVENANCE = 'http://hl7.org/fhir/uv/ipa/StructureDefinition/ipa-provenance'
4
+ ALLERGY_INTOLERANCE = 'http://hl7.org/fhir/us/core/StructureDefinition/us-core-allergyintolerance'
5
+ CARE_PLAN = 'http://hl7.org/fhir/us/core/StructureDefinition/us-core-careplan'
6
+ CARE_TEAM = 'http://hl7.org/fhir/us/core/StructureDefinition/us-core-careteam'
7
+ CONDITION = 'http://hl7.org/fhir/us/core/StructureDefinition/us-core-condition'
8
+ IMPLANTABLE_DEVICE = 'http://hl7.org/fhir/us/core/StructureDefinition/us-core-implantable-device'
9
+ DIAGNOSTIC_REPORT_NOTE = 'http://hl7.org/fhir/us/core/StructureDefinition/us-core-diagnosticreport-note'
10
+ DIAGNOSTIC_REPORT_LAB = 'http://hl7.org/fhir/us/core/StructureDefinition/us-core-diagnosticreport-lab'
11
+ DOCUMENT_REFERENCE = 'http://hl7.org/fhir/us/core/StructureDefinition/us-core-documentreference'
12
+ ENCOUNTER = 'http://hl7.org/fhir/us/core/StructureDefinition/us-core-encounter'
13
+ GOAL = 'http://hl7.org/fhir/us/core/StructureDefinition/us-core-goal'
14
+ IMMUNIZATION = 'http://hl7.org/fhir/us/core/StructureDefinition/us-core-immunization'
15
+ LOCATION = 'http://hl7.org/fhir/us/core/StructureDefinition/us-core-location'
16
+ MEDICATION = 'http://hl7.org/fhir/us/core/StructureDefinition/us-core-medication'
17
+ MEDICATION_REQUEST = 'http://hl7.org/fhir/us/core/StructureDefinition/us-core-medicationrequest'
18
+ SMOKING_STATUS = 'http://hl7.org/fhir/us/core/StructureDefinition/us-core-smokingstatus'
19
+ PEDIATRIC_WEIGHT_FOR_HEIGHT = 'http://hl7.org/fhir/us/core/StructureDefinition/pediatric-weight-for-height'
20
+ OBSERVATION_LAB = 'http://hl7.org/fhir/us/core/StructureDefinition/us-core-observation-lab'
21
+ PEDIATRIC_BMI_FOR_AGE = 'http://hl7.org/fhir/us/core/StructureDefinition/pediatric-bmi-for-age'
22
+ PULSE_OXIMETRY = 'http://hl7.org/fhir/us/core/StructureDefinition/us-core-pulse-oximetry'
23
+ HEAD_CIRCUMFERENCE = 'http://hl7.org/fhir/us/core/StructureDefinition/head-occipital-frontal-circumference-percentile'
24
+ ORGANIZATION = 'http://hl7.org/fhir/us/core/StructureDefinition/us-core-organization'
25
+ PATIENT = 'http://hl7.org/fhir/us/core/StructureDefinition/us-core-patient'
26
+ PRACTITIONER = 'http://hl7.org/fhir/us/core/StructureDefinition/us-core-practitioner'
27
+ PRACTITIONER_ROLE = 'http://hl7.org/fhir/us/core/StructureDefinition/us-core-practitionerrole'
28
+ PROCEDURE = 'http://hl7.org/fhir/us/core/StructureDefinition/us-core-procedure'
29
+ PROVENANCE = 'http://hl7.org/fhir/us/core/StructureDefinition/us-core-provenance'
19
30
 
20
31
  class << self
21
32
  def resources_with_multiple_profiles
22
- ['Observation']
33
+ ['Condition', 'DiagnosticReport', 'Observation']
23
34
  end
24
35
 
25
36
  def resource_has_multiple_profiles?(resource)
@@ -30,10 +41,13 @@ module IpaTestKit
30
41
  resource = group_metadata.resource
31
42
  return resource.underscore unless resource_has_multiple_profiles?(resource)
32
43
 
33
- return 'head_circumference' if group_metadata.profile_url == HEAD_CIRCUMFERENCE
44
+ if group_metadata.profile_url == HEAD_CIRCUMFERENCE
45
+ return group_metadata.reformatted_version == 'v311' ? 'head_circumference' : 'head_circumference_percentile'
46
+ end
34
47
 
35
48
  group_metadata.name
36
49
  .delete_prefix('ipa_')
50
+ .gsub('diagnosticreport', 'diagnostic_report')
37
51
  .underscore
38
52
  end
39
53
 
@@ -5,19 +5,21 @@ module IpaTestKit
5
5
  class Generator
6
6
  class ProvenanceRevincludeSearchTestGenerator
7
7
  class << self
8
- def generate(ig_metadata)
8
+ def generate(ig_metadata, base_output_dir)
9
9
  ig_metadata.groups
10
- .reject { |group| SpecialCases.exclude_resource? group.resource }
10
+ .reject { |group| SpecialCases.exclude_group? group }
11
11
  .select { |group| group.revincludes.include? 'Provenance:target' }
12
- .each { |group| new(group, group.searches.first).generate }
12
+ .select { |group| group.searches.any? }
13
+ .each { |group| new(group, group.searches.first, base_output_dir).generate }
13
14
  end
14
15
  end
15
16
 
16
- attr_accessor :group_metadata, :search_metadata
17
+ attr_accessor :group_metadata, :search_metadata, :base_output_dir
17
18
 
18
- def initialize(group_metadata, search_metadata)
19
+ def initialize(group_metadata, search_metadata, base_output_dir)
19
20
  self.group_metadata = group_metadata
20
21
  self.search_metadata = search_metadata
22
+ self.base_output_dir = base_output_dir
21
23
  end
22
24
 
23
25
  def template
@@ -33,7 +35,7 @@ module IpaTestKit
33
35
  end
34
36
 
35
37
  def output_file_directory
36
- File.join(__dir__, '..', 'generated', profile_identifier)
38
+ File.join(base_output_dir, profile_identifier)
37
39
  end
38
40
 
39
41
  def output_file_name
@@ -45,7 +47,7 @@ module IpaTestKit
45
47
  end
46
48
 
47
49
  def test_id
48
- "ipa_010_#{profile_identifier}_#{search_identifier}_search_test"
50
+ "ipa_#{group_metadata.reformatted_version}_#{profile_identifier}_#{search_identifier}_search_test"
49
51
  end
50
52
 
51
53
  def search_identifier
@@ -60,6 +62,10 @@ module IpaTestKit
60
62
  "#{Naming.upper_camel_case_for_profile(group_metadata)}#{search_title}SearchTest"
61
63
  end
62
64
 
65
+ def module_name
66
+ "Ipa#{group_metadata.reformatted_version.upcase}"
67
+ end
68
+
63
69
  def resource_type
64
70
  group_metadata.resource
65
71
  end
@@ -88,6 +94,7 @@ module IpaTestKit
88
94
  end
89
95
 
90
96
  def search_param_name_string
97
+ binding.pry if search_metadata.nil?
91
98
  search_metadata[:names].join(' + ') + ' + revInclude:Provenance:target'
92
99
  end
93
100
 
@@ -133,10 +140,6 @@ module IpaTestKit
133
140
  first_search? && group_metadata.delayed_references.present?
134
141
  end
135
142
 
136
- def possible_status_search?
137
- !search_metadata[:names].include?('status') && group_metadata.search_definitions.key?(:status)
138
- end
139
-
140
143
  def token_search_params
141
144
  @token_search_params ||=
142
145
  search_param_names.select do |name|
@@ -162,7 +165,6 @@ module IpaTestKit
162
165
  properties[:fixed_value_search] = 'true' if fixed_value_search?
163
166
  properties[:resource_type] = "'#{resource_type}'"
164
167
  properties[:search_param_names] = search_param_names_array
165
- properties[:possible_status_search] = 'true' if possible_status_search?
166
168
  end
167
169
  end
168
170
 
@@ -5,11 +5,11 @@ module IpaTestKit
5
5
  class Generator
6
6
  class ReadTestGenerator
7
7
  class << self
8
- def generate(ig_metadata)
8
+ def generate(ig_metadata, base_output_dir)
9
9
  ig_metadata.groups
10
- .reject { |group| SpecialCases.exclude_resource? group.resource }
10
+ .reject { |group| SpecialCases.exclude_group? group }
11
11
  .select { |group| read_interaction(group).present? }
12
- .each { |group| new(group).generate }
12
+ .each { |group| new(group, base_output_dir).generate }
13
13
  end
14
14
 
15
15
  def read_interaction(group_metadata)
@@ -17,10 +17,11 @@ module IpaTestKit
17
17
  end
18
18
  end
19
19
 
20
- attr_accessor :group_metadata
20
+ attr_accessor :group_metadata, :base_output_dir
21
21
 
22
- def initialize(group_metadata)
22
+ def initialize(group_metadata, base_output_dir)
23
23
  self.group_metadata = group_metadata
24
+ self.base_output_dir = base_output_dir
24
25
  end
25
26
 
26
27
  def template
@@ -36,7 +37,7 @@ module IpaTestKit
36
37
  end
37
38
 
38
39
  def output_file_directory
39
- File.join(__dir__, '..', 'generated', profile_identifier)
40
+ File.join(base_output_dir, profile_identifier)
40
41
  end
41
42
 
42
43
  def output_file_name
@@ -52,13 +53,17 @@ module IpaTestKit
52
53
  end
53
54
 
54
55
  def test_id
55
- "ipa_010_#{profile_identifier}_read_test"
56
+ "ipa_#{group_metadata.reformatted_version}_#{profile_identifier}_read_test"
56
57
  end
57
58
 
58
59
  def class_name
59
60
  "#{Naming.upper_camel_case_for_profile(group_metadata)}ReadTest"
60
61
  end
61
62
 
63
+ def module_name
64
+ "Ipa#{group_metadata.reformatted_version.upcase}"
65
+ end
66
+
62
67
  def resource_type
63
68
  group_metadata.resource
64
69
  end