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
@@ -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