ipa_test_kit 0.2.0

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 (270) hide show
  1. checksums.yaml +7 -0
  2. data/LICENSE +201 -0
  3. data/lib/ipa_test_kit/custom_groups/capability_statement/conformance_support_test.rb +41 -0
  4. data/lib/ipa_test_kit/custom_groups/capability_statement/fhir_version_test.rb +15 -0
  5. data/lib/ipa_test_kit/custom_groups/capability_statement/json_support_test.rb +39 -0
  6. data/lib/ipa_test_kit/custom_groups/capability_statement/profile_support_test.rb +76 -0
  7. data/lib/ipa_test_kit/custom_groups/capability_statement_group.rb +64 -0
  8. data/lib/ipa_test_kit/date_search_validation.rb +101 -0
  9. data/lib/ipa_test_kit/ext/fhir_models.rb +59 -0
  10. data/lib/ipa_test_kit/fhir_resource_navigation.rb +63 -0
  11. data/lib/ipa_test_kit/generated/allergy_intolerance/allergy_intolerance_must_support_test.rb +40 -0
  12. data/lib/ipa_test_kit/generated/allergy_intolerance/allergy_intolerance_patient_clinical_status_search_test.rb +46 -0
  13. data/lib/ipa_test_kit/generated/allergy_intolerance/allergy_intolerance_patient_search_test.rb +60 -0
  14. data/lib/ipa_test_kit/generated/allergy_intolerance/allergy_intolerance_provenance_revinclude_search_test.rb +49 -0
  15. data/lib/ipa_test_kit/generated/allergy_intolerance/allergy_intolerance_read_test.rb +24 -0
  16. data/lib/ipa_test_kit/generated/allergy_intolerance/allergy_intolerance_reference_resolution_test.rb +28 -0
  17. data/lib/ipa_test_kit/generated/allergy_intolerance/allergy_intolerance_validation_test.rb +34 -0
  18. data/lib/ipa_test_kit/generated/allergy_intolerance/metadata.yml +165 -0
  19. data/lib/ipa_test_kit/generated/allergy_intolerance_group.rb +85 -0
  20. data/lib/ipa_test_kit/generated/bmi/bmi_must_support_test.rb +49 -0
  21. data/lib/ipa_test_kit/generated/bmi/bmi_patient_category_date_search_test.rb +46 -0
  22. data/lib/ipa_test_kit/generated/bmi/bmi_patient_category_search_test.rb +45 -0
  23. data/lib/ipa_test_kit/generated/bmi/bmi_patient_category_status_search_test.rb +47 -0
  24. data/lib/ipa_test_kit/generated/bmi/bmi_patient_code_date_search_test.rb +48 -0
  25. data/lib/ipa_test_kit/generated/bmi/bmi_patient_code_search_test.rb +62 -0
  26. data/lib/ipa_test_kit/generated/bmi/bmi_provenance_revinclude_search_test.rb +51 -0
  27. data/lib/ipa_test_kit/generated/bmi/bmi_read_test.rb +24 -0
  28. data/lib/ipa_test_kit/generated/bmi/bmi_reference_resolution_test.rb +28 -0
  29. data/lib/ipa_test_kit/generated/bmi/bmi_validation_test.rb +34 -0
  30. data/lib/ipa_test_kit/generated/bmi/metadata.yml +322 -0
  31. data/lib/ipa_test_kit/generated/bmi_group.rb +93 -0
  32. data/lib/ipa_test_kit/generated/bodyheight/bodyheight_must_support_test.rb +49 -0
  33. data/lib/ipa_test_kit/generated/bodyheight/bodyheight_patient_category_date_search_test.rb +46 -0
  34. data/lib/ipa_test_kit/generated/bodyheight/bodyheight_patient_category_search_test.rb +45 -0
  35. data/lib/ipa_test_kit/generated/bodyheight/bodyheight_patient_category_status_search_test.rb +47 -0
  36. data/lib/ipa_test_kit/generated/bodyheight/bodyheight_patient_code_date_search_test.rb +48 -0
  37. data/lib/ipa_test_kit/generated/bodyheight/bodyheight_patient_code_search_test.rb +62 -0
  38. data/lib/ipa_test_kit/generated/bodyheight/bodyheight_provenance_revinclude_search_test.rb +51 -0
  39. data/lib/ipa_test_kit/generated/bodyheight/bodyheight_read_test.rb +24 -0
  40. data/lib/ipa_test_kit/generated/bodyheight/bodyheight_reference_resolution_test.rb +28 -0
  41. data/lib/ipa_test_kit/generated/bodyheight/bodyheight_validation_test.rb +34 -0
  42. data/lib/ipa_test_kit/generated/bodyheight/metadata.yml +328 -0
  43. data/lib/ipa_test_kit/generated/bodyheight_group.rb +93 -0
  44. data/lib/ipa_test_kit/generated/bodytemp/bodytemp_must_support_test.rb +49 -0
  45. data/lib/ipa_test_kit/generated/bodytemp/bodytemp_patient_category_date_search_test.rb +46 -0
  46. data/lib/ipa_test_kit/generated/bodytemp/bodytemp_patient_category_search_test.rb +45 -0
  47. data/lib/ipa_test_kit/generated/bodytemp/bodytemp_patient_category_status_search_test.rb +47 -0
  48. data/lib/ipa_test_kit/generated/bodytemp/bodytemp_patient_code_date_search_test.rb +48 -0
  49. data/lib/ipa_test_kit/generated/bodytemp/bodytemp_patient_code_search_test.rb +62 -0
  50. data/lib/ipa_test_kit/generated/bodytemp/bodytemp_provenance_revinclude_search_test.rb +51 -0
  51. data/lib/ipa_test_kit/generated/bodytemp/bodytemp_read_test.rb +24 -0
  52. data/lib/ipa_test_kit/generated/bodytemp/bodytemp_reference_resolution_test.rb +28 -0
  53. data/lib/ipa_test_kit/generated/bodytemp/bodytemp_validation_test.rb +34 -0
  54. data/lib/ipa_test_kit/generated/bodytemp/metadata.yml +328 -0
  55. data/lib/ipa_test_kit/generated/bodytemp_group.rb +93 -0
  56. data/lib/ipa_test_kit/generated/bodyweight/bodyweight_must_support_test.rb +49 -0
  57. data/lib/ipa_test_kit/generated/bodyweight/bodyweight_patient_category_date_search_test.rb +46 -0
  58. data/lib/ipa_test_kit/generated/bodyweight/bodyweight_patient_category_search_test.rb +45 -0
  59. data/lib/ipa_test_kit/generated/bodyweight/bodyweight_patient_category_status_search_test.rb +47 -0
  60. data/lib/ipa_test_kit/generated/bodyweight/bodyweight_patient_code_date_search_test.rb +48 -0
  61. data/lib/ipa_test_kit/generated/bodyweight/bodyweight_patient_code_search_test.rb +62 -0
  62. data/lib/ipa_test_kit/generated/bodyweight/bodyweight_provenance_revinclude_search_test.rb +51 -0
  63. data/lib/ipa_test_kit/generated/bodyweight/bodyweight_read_test.rb +24 -0
  64. data/lib/ipa_test_kit/generated/bodyweight/bodyweight_reference_resolution_test.rb +28 -0
  65. data/lib/ipa_test_kit/generated/bodyweight/bodyweight_validation_test.rb +34 -0
  66. data/lib/ipa_test_kit/generated/bodyweight/metadata.yml +328 -0
  67. data/lib/ipa_test_kit/generated/bodyweight_group.rb +93 -0
  68. data/lib/ipa_test_kit/generated/bp/bp_must_support_test.rb +52 -0
  69. data/lib/ipa_test_kit/generated/bp/bp_patient_category_date_search_test.rb +46 -0
  70. data/lib/ipa_test_kit/generated/bp/bp_patient_category_search_test.rb +45 -0
  71. data/lib/ipa_test_kit/generated/bp/bp_patient_category_status_search_test.rb +47 -0
  72. data/lib/ipa_test_kit/generated/bp/bp_patient_code_date_search_test.rb +48 -0
  73. data/lib/ipa_test_kit/generated/bp/bp_patient_code_search_test.rb +62 -0
  74. data/lib/ipa_test_kit/generated/bp/bp_provenance_revinclude_search_test.rb +51 -0
  75. data/lib/ipa_test_kit/generated/bp/bp_read_test.rb +24 -0
  76. data/lib/ipa_test_kit/generated/bp/bp_reference_resolution_test.rb +28 -0
  77. data/lib/ipa_test_kit/generated/bp/bp_validation_test.rb +34 -0
  78. data/lib/ipa_test_kit/generated/bp/metadata.yml +379 -0
  79. data/lib/ipa_test_kit/generated/bp_group.rb +93 -0
  80. data/lib/ipa_test_kit/generated/condition/condition_must_support_test.rb +39 -0
  81. data/lib/ipa_test_kit/generated/condition/condition_patient_category_search_test.rb +47 -0
  82. data/lib/ipa_test_kit/generated/condition/condition_patient_clinical_status_search_test.rb +46 -0
  83. data/lib/ipa_test_kit/generated/condition/condition_patient_code_search_test.rb +47 -0
  84. data/lib/ipa_test_kit/generated/condition/condition_patient_onset_date_search_test.rb +47 -0
  85. data/lib/ipa_test_kit/generated/condition/condition_patient_search_test.rb +60 -0
  86. data/lib/ipa_test_kit/generated/condition/condition_provenance_revinclude_search_test.rb +49 -0
  87. data/lib/ipa_test_kit/generated/condition/condition_read_test.rb +24 -0
  88. data/lib/ipa_test_kit/generated/condition/condition_reference_resolution_test.rb +28 -0
  89. data/lib/ipa_test_kit/generated/condition/condition_validation_test.rb +34 -0
  90. data/lib/ipa_test_kit/generated/condition/metadata.yml +231 -0
  91. data/lib/ipa_test_kit/generated/condition_group.rb +91 -0
  92. data/lib/ipa_test_kit/generated/document_reference/document_reference_id_search_test.rb +40 -0
  93. data/lib/ipa_test_kit/generated/document_reference/document_reference_must_support_test.rb +49 -0
  94. data/lib/ipa_test_kit/generated/document_reference/document_reference_patient_category_date_search_test.rb +46 -0
  95. data/lib/ipa_test_kit/generated/document_reference/document_reference_patient_category_search_test.rb +45 -0
  96. data/lib/ipa_test_kit/generated/document_reference/document_reference_patient_search_test.rb +61 -0
  97. data/lib/ipa_test_kit/generated/document_reference/document_reference_patient_status_search_test.rb +46 -0
  98. data/lib/ipa_test_kit/generated/document_reference/document_reference_patient_type_period_search_test.rb +48 -0
  99. data/lib/ipa_test_kit/generated/document_reference/document_reference_patient_type_search_test.rb +45 -0
  100. data/lib/ipa_test_kit/generated/document_reference/document_reference_provenance_revinclude_search_test.rb +50 -0
  101. data/lib/ipa_test_kit/generated/document_reference/document_reference_read_test.rb +24 -0
  102. data/lib/ipa_test_kit/generated/document_reference/document_reference_reference_resolution_test.rb +28 -0
  103. data/lib/ipa_test_kit/generated/document_reference/document_reference_validation_test.rb +34 -0
  104. data/lib/ipa_test_kit/generated/document_reference/metadata.yml +356 -0
  105. data/lib/ipa_test_kit/generated/document_reference_group.rb +99 -0
  106. data/lib/ipa_test_kit/generated/head_circumference/head_circumference_must_support_test.rb +49 -0
  107. data/lib/ipa_test_kit/generated/head_circumference/head_circumference_patient_category_date_search_test.rb +46 -0
  108. data/lib/ipa_test_kit/generated/head_circumference/head_circumference_patient_category_search_test.rb +45 -0
  109. data/lib/ipa_test_kit/generated/head_circumference/head_circumference_patient_category_status_search_test.rb +47 -0
  110. data/lib/ipa_test_kit/generated/head_circumference/head_circumference_patient_code_date_search_test.rb +48 -0
  111. data/lib/ipa_test_kit/generated/head_circumference/head_circumference_patient_code_search_test.rb +62 -0
  112. data/lib/ipa_test_kit/generated/head_circumference/head_circumference_provenance_revinclude_search_test.rb +51 -0
  113. data/lib/ipa_test_kit/generated/head_circumference/head_circumference_read_test.rb +24 -0
  114. data/lib/ipa_test_kit/generated/head_circumference/head_circumference_reference_resolution_test.rb +28 -0
  115. data/lib/ipa_test_kit/generated/head_circumference/head_circumference_validation_test.rb +34 -0
  116. data/lib/ipa_test_kit/generated/head_circumference/metadata.yml +324 -0
  117. data/lib/ipa_test_kit/generated/head_circumference_group.rb +93 -0
  118. data/lib/ipa_test_kit/generated/heartrate/heartrate_must_support_test.rb +49 -0
  119. data/lib/ipa_test_kit/generated/heartrate/heartrate_patient_category_date_search_test.rb +46 -0
  120. data/lib/ipa_test_kit/generated/heartrate/heartrate_patient_category_search_test.rb +45 -0
  121. data/lib/ipa_test_kit/generated/heartrate/heartrate_patient_category_status_search_test.rb +47 -0
  122. data/lib/ipa_test_kit/generated/heartrate/heartrate_patient_code_date_search_test.rb +48 -0
  123. data/lib/ipa_test_kit/generated/heartrate/heartrate_patient_code_search_test.rb +62 -0
  124. data/lib/ipa_test_kit/generated/heartrate/heartrate_provenance_revinclude_search_test.rb +51 -0
  125. data/lib/ipa_test_kit/generated/heartrate/heartrate_read_test.rb +24 -0
  126. data/lib/ipa_test_kit/generated/heartrate/heartrate_reference_resolution_test.rb +28 -0
  127. data/lib/ipa_test_kit/generated/heartrate/heartrate_validation_test.rb +34 -0
  128. data/lib/ipa_test_kit/generated/heartrate/metadata.yml +325 -0
  129. data/lib/ipa_test_kit/generated/heartrate_group.rb +93 -0
  130. data/lib/ipa_test_kit/generated/immunization/immunization_must_support_test.rb +40 -0
  131. data/lib/ipa_test_kit/generated/immunization/immunization_patient_date_search_test.rb +47 -0
  132. data/lib/ipa_test_kit/generated/immunization/immunization_patient_search_test.rb +60 -0
  133. data/lib/ipa_test_kit/generated/immunization/immunization_patient_status_search_test.rb +45 -0
  134. data/lib/ipa_test_kit/generated/immunization/immunization_provenance_revinclude_search_test.rb +50 -0
  135. data/lib/ipa_test_kit/generated/immunization/immunization_read_test.rb +24 -0
  136. data/lib/ipa_test_kit/generated/immunization/immunization_reference_resolution_test.rb +28 -0
  137. data/lib/ipa_test_kit/generated/immunization/immunization_validation_test.rb +34 -0
  138. data/lib/ipa_test_kit/generated/immunization/metadata.yml +210 -0
  139. data/lib/ipa_test_kit/generated/immunization_group.rb +87 -0
  140. data/lib/ipa_test_kit/generated/ipa_test_suite.rb +88 -0
  141. data/lib/ipa_test_kit/generated/medication_request/medication_request_must_support_test.rb +44 -0
  142. data/lib/ipa_test_kit/generated/medication_request/medication_request_patient_intent_authoredon_search_test.rb +53 -0
  143. data/lib/ipa_test_kit/generated/medication_request/medication_request_patient_intent_encounter_search_test.rb +52 -0
  144. data/lib/ipa_test_kit/generated/medication_request/medication_request_patient_intent_search_test.rb +68 -0
  145. data/lib/ipa_test_kit/generated/medication_request/medication_request_patient_intent_status_search_test.rb +49 -0
  146. data/lib/ipa_test_kit/generated/medication_request/medication_request_provenance_revinclude_search_test.rb +51 -0
  147. data/lib/ipa_test_kit/generated/medication_request/medication_request_read_test.rb +24 -0
  148. data/lib/ipa_test_kit/generated/medication_request/medication_request_reference_resolution_test.rb +28 -0
  149. data/lib/ipa_test_kit/generated/medication_request/medication_request_validation_test.rb +34 -0
  150. data/lib/ipa_test_kit/generated/medication_request/medication_validation_test.rb +34 -0
  151. data/lib/ipa_test_kit/generated/medication_request/metadata.yml +307 -0
  152. data/lib/ipa_test_kit/generated/medication_request_group.rb +92 -0
  153. data/lib/ipa_test_kit/generated/medication_statement/medication_statement_must_support_test.rb +43 -0
  154. data/lib/ipa_test_kit/generated/medication_statement/medication_statement_patient_context_search_test.rb +51 -0
  155. data/lib/ipa_test_kit/generated/medication_statement/medication_statement_patient_effective_search_test.rb +52 -0
  156. data/lib/ipa_test_kit/generated/medication_statement/medication_statement_patient_search_test.rb +68 -0
  157. data/lib/ipa_test_kit/generated/medication_statement/medication_statement_patient_status_search_test.rb +49 -0
  158. data/lib/ipa_test_kit/generated/medication_statement/medication_statement_provenance_revinclude_search_test.rb +51 -0
  159. data/lib/ipa_test_kit/generated/medication_statement/medication_statement_read_test.rb +24 -0
  160. data/lib/ipa_test_kit/generated/medication_statement/medication_statement_reference_resolution_test.rb +28 -0
  161. data/lib/ipa_test_kit/generated/medication_statement/medication_statement_validation_test.rb +34 -0
  162. data/lib/ipa_test_kit/generated/medication_statement/medication_validation_test.rb +34 -0
  163. data/lib/ipa_test_kit/generated/medication_statement/metadata.yml +230 -0
  164. data/lib/ipa_test_kit/generated/medication_statement_group.rb +92 -0
  165. data/lib/ipa_test_kit/generated/metadata.yml +6230 -0
  166. data/lib/ipa_test_kit/generated/observation/metadata.yml +1280 -0
  167. data/lib/ipa_test_kit/generated/observation/observation_must_support_test.rb +41 -0
  168. data/lib/ipa_test_kit/generated/observation/observation_patient_category_date_search_test.rb +46 -0
  169. data/lib/ipa_test_kit/generated/observation/observation_patient_category_search_test.rb +62 -0
  170. data/lib/ipa_test_kit/generated/observation/observation_patient_category_status_search_test.rb +47 -0
  171. data/lib/ipa_test_kit/generated/observation/observation_patient_code_date_search_test.rb +48 -0
  172. data/lib/ipa_test_kit/generated/observation/observation_patient_code_search_test.rb +45 -0
  173. data/lib/ipa_test_kit/generated/observation/observation_provenance_revinclude_search_test.rb +51 -0
  174. data/lib/ipa_test_kit/generated/observation/observation_read_test.rb +24 -0
  175. data/lib/ipa_test_kit/generated/observation/observation_reference_resolution_test.rb +28 -0
  176. data/lib/ipa_test_kit/generated/observation/observation_validation_test.rb +34 -0
  177. data/lib/ipa_test_kit/generated/observation_group.rb +93 -0
  178. data/lib/ipa_test_kit/generated/oxygensat/metadata.yml +366 -0
  179. data/lib/ipa_test_kit/generated/oxygensat/oxygensat_must_support_test.rb +65 -0
  180. data/lib/ipa_test_kit/generated/oxygensat/oxygensat_patient_category_date_search_test.rb +46 -0
  181. data/lib/ipa_test_kit/generated/oxygensat/oxygensat_patient_category_search_test.rb +45 -0
  182. data/lib/ipa_test_kit/generated/oxygensat/oxygensat_patient_category_status_search_test.rb +47 -0
  183. data/lib/ipa_test_kit/generated/oxygensat/oxygensat_patient_code_date_search_test.rb +48 -0
  184. data/lib/ipa_test_kit/generated/oxygensat/oxygensat_patient_code_search_test.rb +62 -0
  185. data/lib/ipa_test_kit/generated/oxygensat/oxygensat_provenance_revinclude_search_test.rb +51 -0
  186. data/lib/ipa_test_kit/generated/oxygensat/oxygensat_read_test.rb +24 -0
  187. data/lib/ipa_test_kit/generated/oxygensat/oxygensat_reference_resolution_test.rb +28 -0
  188. data/lib/ipa_test_kit/generated/oxygensat/oxygensat_validation_test.rb +34 -0
  189. data/lib/ipa_test_kit/generated/oxygensat_group.rb +93 -0
  190. data/lib/ipa_test_kit/generated/patient/metadata.yml +320 -0
  191. data/lib/ipa_test_kit/generated/patient/patient_birthdate_family_search_test.rb +41 -0
  192. data/lib/ipa_test_kit/generated/patient/patient_birthdate_name_search_test.rb +39 -0
  193. data/lib/ipa_test_kit/generated/patient/patient_family_gender_search_test.rb +41 -0
  194. data/lib/ipa_test_kit/generated/patient/patient_gender_name_search_test.rb +39 -0
  195. data/lib/ipa_test_kit/generated/patient/patient_id_search_test.rb +53 -0
  196. data/lib/ipa_test_kit/generated/patient/patient_identifier_search_test.rb +40 -0
  197. data/lib/ipa_test_kit/generated/patient/patient_must_support_test.rb +57 -0
  198. data/lib/ipa_test_kit/generated/patient/patient_name_search_test.rb +39 -0
  199. data/lib/ipa_test_kit/generated/patient/patient_provenance_revinclude_search_test.rb +49 -0
  200. data/lib/ipa_test_kit/generated/patient/patient_read_test.rb +24 -0
  201. data/lib/ipa_test_kit/generated/patient/patient_reference_resolution_test.rb +28 -0
  202. data/lib/ipa_test_kit/generated/patient/patient_validation_test.rb +34 -0
  203. data/lib/ipa_test_kit/generated/patient_group.rb +99 -0
  204. data/lib/ipa_test_kit/generated/practitioner/metadata.yml +124 -0
  205. data/lib/ipa_test_kit/generated/practitioner/practitioner_identifier_search_test.rb +40 -0
  206. data/lib/ipa_test_kit/generated/practitioner/practitioner_must_support_test.rb +40 -0
  207. data/lib/ipa_test_kit/generated/practitioner/practitioner_name_search_test.rb +49 -0
  208. data/lib/ipa_test_kit/generated/practitioner/practitioner_read_test.rb +24 -0
  209. data/lib/ipa_test_kit/generated/practitioner/practitioner_reference_resolution_test.rb +28 -0
  210. data/lib/ipa_test_kit/generated/practitioner/practitioner_validation_test.rb +34 -0
  211. data/lib/ipa_test_kit/generated/practitioner_group.rb +84 -0
  212. data/lib/ipa_test_kit/generated/practitioner_role/metadata.yml +141 -0
  213. data/lib/ipa_test_kit/generated/practitioner_role/practitioner_role_identifier_search_test.rb +40 -0
  214. data/lib/ipa_test_kit/generated/practitioner_role/practitioner_role_must_support_test.rb +40 -0
  215. data/lib/ipa_test_kit/generated/practitioner_role/practitioner_role_practitioner_search_test.rb +51 -0
  216. data/lib/ipa_test_kit/generated/practitioner_role/practitioner_role_read_test.rb +24 -0
  217. data/lib/ipa_test_kit/generated/practitioner_role/practitioner_role_reference_resolution_test.rb +28 -0
  218. data/lib/ipa_test_kit/generated/practitioner_role/practitioner_role_validation_test.rb +34 -0
  219. data/lib/ipa_test_kit/generated/practitioner_role_group.rb +84 -0
  220. data/lib/ipa_test_kit/generated/provenance/metadata.yml +114 -0
  221. data/lib/ipa_test_kit/generated/provenance/provenance_read_test.rb +24 -0
  222. data/lib/ipa_test_kit/generated/provenance/provenance_reference_resolution_test.rb +28 -0
  223. data/lib/ipa_test_kit/generated/provenance/provenance_validation_test.rb +34 -0
  224. data/lib/ipa_test_kit/generated/provenance_group.rb +53 -0
  225. data/lib/ipa_test_kit/generated/resource_list.rb +18 -0
  226. data/lib/ipa_test_kit/generated/resprate/metadata.yml +325 -0
  227. data/lib/ipa_test_kit/generated/resprate/resprate_must_support_test.rb +49 -0
  228. data/lib/ipa_test_kit/generated/resprate/resprate_patient_category_date_search_test.rb +46 -0
  229. data/lib/ipa_test_kit/generated/resprate/resprate_patient_category_search_test.rb +45 -0
  230. data/lib/ipa_test_kit/generated/resprate/resprate_patient_category_status_search_test.rb +47 -0
  231. data/lib/ipa_test_kit/generated/resprate/resprate_patient_code_date_search_test.rb +48 -0
  232. data/lib/ipa_test_kit/generated/resprate/resprate_patient_code_search_test.rb +62 -0
  233. data/lib/ipa_test_kit/generated/resprate/resprate_provenance_revinclude_search_test.rb +51 -0
  234. data/lib/ipa_test_kit/generated/resprate/resprate_read_test.rb +24 -0
  235. data/lib/ipa_test_kit/generated/resprate/resprate_reference_resolution_test.rb +28 -0
  236. data/lib/ipa_test_kit/generated/resprate/resprate_validation_test.rb +34 -0
  237. data/lib/ipa_test_kit/generated/resprate_group.rb +93 -0
  238. data/lib/ipa_test_kit/generator/group_generator.rb +171 -0
  239. data/lib/ipa_test_kit/generator/group_metadata.rb +98 -0
  240. data/lib/ipa_test_kit/generator/group_metadata_extractor.rb +278 -0
  241. data/lib/ipa_test_kit/generator/ig_loader.rb +63 -0
  242. data/lib/ipa_test_kit/generator/ig_metadata.rb +49 -0
  243. data/lib/ipa_test_kit/generator/ig_metadata_extractor.rb +56 -0
  244. data/lib/ipa_test_kit/generator/ig_resources.rb +48 -0
  245. data/lib/ipa_test_kit/generator/must_support_metadata_extractor.rb +221 -0
  246. data/lib/ipa_test_kit/generator/must_support_test_generator.rb +86 -0
  247. data/lib/ipa_test_kit/generator/naming.rb +46 -0
  248. data/lib/ipa_test_kit/generator/provenance_revinclude_search_test_generator.rb +186 -0
  249. data/lib/ipa_test_kit/generator/read_test_generator.rb +89 -0
  250. data/lib/ipa_test_kit/generator/reference_resolution_test_generator.rb +72 -0
  251. data/lib/ipa_test_kit/generator/resource_list_generator.rb +46 -0
  252. data/lib/ipa_test_kit/generator/search_definition_metadata_extractor.rb +181 -0
  253. data/lib/ipa_test_kit/generator/search_metadata_extractor.rb +74 -0
  254. data/lib/ipa_test_kit/generator/search_test_generator.rb +295 -0
  255. data/lib/ipa_test_kit/generator/special_cases.rb +16 -0
  256. data/lib/ipa_test_kit/generator/suite_generator.rb +67 -0
  257. data/lib/ipa_test_kit/generator/terminology_binding_metadata_extractor.rb +105 -0
  258. data/lib/ipa_test_kit/generator/validation_test_generator.rb +124 -0
  259. data/lib/ipa_test_kit/generator.rb +86 -0
  260. data/lib/ipa_test_kit/igs/package.tgz +0 -0
  261. data/lib/ipa_test_kit/must_support_test.rb +146 -0
  262. data/lib/ipa_test_kit/read_test.rb +62 -0
  263. data/lib/ipa_test_kit/reference_resolution_test.rb +111 -0
  264. data/lib/ipa_test_kit/request_logger.rb +46 -0
  265. data/lib/ipa_test_kit/search_test.rb +728 -0
  266. data/lib/ipa_test_kit/search_test_properties.rb +61 -0
  267. data/lib/ipa_test_kit/validation_test.rb +48 -0
  268. data/lib/ipa_test_kit/version.rb +3 -0
  269. data/lib/ipa_test_kit.rb +2 -0
  270. metadata +397 -0
@@ -0,0 +1,49 @@
1
+ require_relative '../../search_test'
2
+ require_relative '../../generator/group_metadata'
3
+
4
+ module IpaTestKit
5
+ class PractitionerNameSearchTest < Inferno::Test
6
+ include IpaTestKit::SearchTest
7
+
8
+ title 'Server returns valid results for Practitioner search by name'
9
+ description %(
10
+ A server SHALL support searching by
11
+ name on the Practitioner resource. This test
12
+ will pass if resources are returned and match the search criteria. If
13
+ none are returned, the test is skipped.
14
+
15
+ Because this is the first search of the sequence, resources in the
16
+ response will be used for subsequent tests.
17
+
18
+ Additionally, this test will check that GET and POST search methods
19
+ return the same number of results. Search by POST is required by the
20
+ FHIR R4 specification, and these tests interpret search by GET as a
21
+ requirement of IPA v0.1.0.
22
+
23
+ [IPA Server CapabilityStatement](https://build.fhir.org/ig/HL7/fhir-ipa/CapabilityStatement-ipa-server.html)
24
+
25
+ )
26
+
27
+ id :ipa_010_practitioner_name_search_test
28
+ def self.properties
29
+ @properties ||= SearchTestProperties.new(
30
+ first_search: true,
31
+ resource_type: 'Practitioner',
32
+ search_param_names: ['name'],
33
+ test_post_search: true
34
+ )
35
+ end
36
+
37
+ def self.metadata
38
+ @metadata ||= Generator::GroupMetadata.new(YAML.load_file(File.join(__dir__, 'metadata.yml')))
39
+ end
40
+
41
+ def scratch_resources
42
+ scratch[:practitioner_resources] ||= {}
43
+ end
44
+
45
+ run do
46
+ run_search_test
47
+ end
48
+ end
49
+ end
@@ -0,0 +1,24 @@
1
+ require_relative '../../read_test'
2
+
3
+ module IpaTestKit
4
+ class PractitionerReadTest < Inferno::Test
5
+ include IpaTestKit::ReadTest
6
+
7
+ title 'Server returns correct Practitioner resource from Practitioner read interaction'
8
+ description 'A server SHALL support the Practitioner read interaction.'
9
+
10
+ id :ipa_010_practitioner_read_test
11
+
12
+ def resource_type
13
+ 'Practitioner'
14
+ end
15
+
16
+ def scratch_resources
17
+ scratch[:practitioner_resources] ||= {}
18
+ end
19
+
20
+ run do
21
+ perform_read_test(scratch.dig(:references, 'Practitioner'))
22
+ end
23
+ end
24
+ end
@@ -0,0 +1,28 @@
1
+ require_relative '../../reference_resolution_test'
2
+
3
+ module IpaTestKit
4
+ class PractitionerReferenceResolutionTest < Inferno::Test
5
+ include IpaTestKit::ReferenceResolutionTest
6
+
7
+ title 'Every reference within Practitioner resources can be read'
8
+ description %(
9
+ This test will attempt to read the first 50 references found in the
10
+ resources from the first search. The test will fail if Inferno fails to
11
+ read any of those references.
12
+ )
13
+
14
+ id :ipa_010_practitioner_reference_resolution_test
15
+
16
+ def resource_type
17
+ 'Practitioner'
18
+ end
19
+
20
+ def scratch_resources
21
+ scratch[:practitioner_resources] ||= {}
22
+ end
23
+
24
+ run do
25
+ perform_reference_resolution_test(scratch_resources[:all])
26
+ end
27
+ end
28
+ end
@@ -0,0 +1,34 @@
1
+ require_relative '../../validation_test'
2
+
3
+ module IpaTestKit
4
+ class PractitionerValidationTest < Inferno::Test
5
+ include IpaTestKit::ValidationTest
6
+
7
+ id :ipa_010_practitioner_validation_test
8
+ title 'Practitioner resources returned during previous tests conform to the IPA Practitioner Profile'
9
+ description %(
10
+ This test verifies resources returned from the first search conform to
11
+ the [IPA Practitioner Profile](http://hl7.org/fhir/uv/ipa/StructureDefinition/ipa-practitioner).
12
+
13
+ It verifies the presence of mandatory elements and that elements with
14
+ required bindings contain appropriate values. CodeableConcept element
15
+ bindings will fail if none of their codings have a code/system belonging
16
+ to the bound ValueSet. Quantity, Coding, and code element bindings will
17
+ fail if their code/system are not found in the valueset.
18
+
19
+ )
20
+ output :dar_code_found, :dar_extension_found
21
+
22
+ def resource_type
23
+ 'Practitioner'
24
+ end
25
+
26
+ def scratch_resources
27
+ scratch[:practitioner_resources] ||= {}
28
+ end
29
+
30
+ run do
31
+ perform_validation_test(scratch_resources[:all] || [], 'http://hl7.org/fhir/uv/ipa/StructureDefinition/ipa-practitioner')
32
+ end
33
+ end
34
+ end
@@ -0,0 +1,84 @@
1
+ require_relative 'practitioner/practitioner_read_test'
2
+ require_relative 'practitioner/practitioner_name_search_test'
3
+ require_relative 'practitioner/practitioner_identifier_search_test'
4
+ require_relative 'practitioner/practitioner_validation_test'
5
+ require_relative 'practitioner/practitioner_must_support_test'
6
+ require_relative 'practitioner/practitioner_reference_resolution_test'
7
+
8
+ module IpaTestKit
9
+ class PractitionerGroup < Inferno::TestGroup
10
+ title 'Practitioner Tests'
11
+ short_description 'Verify support for the server capabilities required by the IPA Practitioner Profile.'
12
+ description %(
13
+ # Background
14
+
15
+ The IPA Practitioner sequence verifies that the system under test is
16
+ able to provide correct responses for Practitioner queries. These queries
17
+ must contain resources conforming to the IPA Practitioner Profile as
18
+ specified in the IPA v0.1.0 Implementation Guide.
19
+
20
+ # Testing Methodology
21
+ ## Searching
22
+ This test sequence will first perform each required search associated
23
+ with this resource. This sequence will perform searches with the
24
+ following parameters:
25
+
26
+ * name
27
+ * identifier
28
+
29
+ ### Search Parameters
30
+ The first search uses the selected patient(s) from the prior launch
31
+ sequence. Any subsequent searches will look for its parameter values
32
+ from the results of the first search. For example, the `identifier`
33
+ search in the patient sequence is performed by looking for an existing
34
+ `Patient.identifier` from any of the resources returned in the `_id`
35
+ search. If a value cannot be found this way, the search is skipped.
36
+
37
+ ### Search Validation
38
+ Inferno will retrieve up to the first 20 bundle pages of the reply for
39
+ Practitioner resources and save them for subsequent tests. Each of
40
+ these resources is then checked to see if it matches the searched
41
+ parameters in accordance with [FHIR search
42
+ guidelines](https://www.hl7.org/fhir/search.html). The test will fail,
43
+ for example, if a Patient search for `gender=male` returns a `female`
44
+ patient.
45
+
46
+
47
+ ## Must Support
48
+ Each profile contains elements marked as "must support". This test
49
+ sequence expects to see each of these elements at least once. If at
50
+ least one cannot be found, the test will fail. The test will look
51
+ through the Practitioner resources found in the first test for these
52
+ elements.
53
+
54
+ ## Profile Validation
55
+ Each resource returned from the first search is expected to conform to
56
+ the [IPA Practitioner Profile](http://hl7.org/fhir/uv/ipa/StructureDefinition/ipa-practitioner). Each element is checked against
57
+ teminology binding and cardinality requirements.
58
+
59
+ Elements with a required binding are validated against their bound
60
+ ValueSet. If the code/system in the element is not part of the ValueSet,
61
+ then the test will fail.
62
+
63
+ ## Reference Validation
64
+ Each reference within the resources found from the previous tests must
65
+ resolve. The test will attempt to read each reference found and will
66
+ fail if any attempted read fails.
67
+
68
+ )
69
+
70
+ id :ipa_010_practitioner
71
+ run_as_group
72
+
73
+ def self.metadata
74
+ @metadata ||= Generator::GroupMetadata.new(YAML.load_file(File.join(__dir__, 'practitioner', 'metadata.yml')))
75
+ end
76
+
77
+ test from: :ipa_010_practitioner_read_test
78
+ test from: :ipa_010_practitioner_name_search_test
79
+ test from: :ipa_010_practitioner_identifier_search_test
80
+ test from: :ipa_010_practitioner_validation_test
81
+ test from: :ipa_010_practitioner_must_support_test
82
+ test from: :ipa_010_practitioner_reference_resolution_test
83
+ end
84
+ end
@@ -0,0 +1,141 @@
1
+ ---
2
+ :name: ipa_practitioner_role
3
+ :class_name: Ipav010PractitionerRoleSequence
4
+ :version: v0.1.0
5
+ :reformatted_version: v010
6
+ :resource: PractitionerRole
7
+ :profile_url: http://hl7.org/fhir/uv/ipa/StructureDefinition/ipa-practitionerrole
8
+ :profile_name: IPA Practitioner Role Profile
9
+ :title: PractitionerRole
10
+ :short_description: Verify support for the server capabilities required by the IPA
11
+ Practitioner Role Profile.
12
+ :interactions:
13
+ - :code: create
14
+ :expectation: MAY
15
+ - :code: search-type
16
+ :expectation: SHALL
17
+ - :code: read
18
+ :expectation: SHALL
19
+ - :code: vread
20
+ :expectation: SHOULD
21
+ - :code: update
22
+ :expectation: MAY
23
+ - :code: patch
24
+ :expectation: MAY
25
+ - :code: delete
26
+ :expectation: MAY
27
+ - :code: history-instance
28
+ :expectation: SHOULD
29
+ - :code: history-type
30
+ :expectation: MAY
31
+ :operations: []
32
+ :searches:
33
+ - :names:
34
+ - practitioner
35
+ :expectation: SHALL
36
+ :names_not_must_support_or_mandatory: []
37
+ :must_support_or_mandatory: true
38
+ - :names:
39
+ - identifier
40
+ :expectation: SHALL
41
+ :names_not_must_support_or_mandatory: []
42
+ :must_support_or_mandatory: true
43
+ :search_definitions:
44
+ :practitioner:
45
+ :path: practitioner
46
+ :full_path: PractitionerRole.practitioner
47
+ :comparators: {}
48
+ :values: []
49
+ :type: Reference
50
+ :contains_multiple: false
51
+ :multiple_or: MAY
52
+ :chain:
53
+ - :chain: identifier
54
+ :expectation: SHALL
55
+ - :chain: name
56
+ :expectation: SHALL
57
+ :identifier:
58
+ :path: identifier
59
+ :full_path: PractitionerRole.identifier
60
+ :comparators: {}
61
+ :values: []
62
+ :type: Identifier
63
+ :contains_multiple: true
64
+ :multiple_or: MAY
65
+ :include_params: []
66
+ :revincludes: []
67
+ :required_concepts: []
68
+ :must_supports:
69
+ :extensions: []
70
+ :slices: []
71
+ :elements:
72
+ - :path: active
73
+ - :path: practitioner
74
+ :mandatory_elements:
75
+ - PractitionerRole.active
76
+ - PractitionerRole.practitioner
77
+ - PractitionerRole.notAvailable.description
78
+ :bindings:
79
+ - :type: code
80
+ :strength: preferred
81
+ :system: http://hl7.org/fhir/ValueSet/languages
82
+ :path: language
83
+ - :type: code
84
+ :strength: required
85
+ :system: http://hl7.org/fhir/ValueSet/identifier-use
86
+ :path: identifier.use
87
+ - :type: CodeableConcept
88
+ :strength: extensible
89
+ :system: http://hl7.org/fhir/ValueSet/identifier-type
90
+ :path: identifier.type
91
+ - :type: code
92
+ :strength: required
93
+ :system: http://hl7.org/fhir/ValueSet/name-use
94
+ :path: name.use
95
+ - :type: code
96
+ :strength: required
97
+ :system: http://hl7.org/fhir/ValueSet/administrative-gender
98
+ :path: gender
99
+ - :type: CodeableConcept
100
+ :strength: example
101
+ :system: http://terminology.hl7.org/ValueSet/v2-2.7-0360
102
+ :path: qualification.code
103
+ - :type: CodeableConcept
104
+ :strength: preferred
105
+ :system: http://hl7.org/fhir/ValueSet/languages
106
+ :path: communication
107
+ :references:
108
+ - :path: PractitionerRole.identifier.assigner
109
+ :profiles:
110
+ - http://hl7.org/fhir/StructureDefinition/Organization
111
+ - :path: PractitionerRole.practitioner
112
+ :profiles:
113
+ - http://hl7.org/fhir/uv/ipa/StructureDefinition/ipa-practitioner
114
+ - :path: PractitionerRole.organization
115
+ :profiles:
116
+ - http://hl7.org/fhir/StructureDefinition/Organization
117
+ - :path: PractitionerRole.location
118
+ :profiles:
119
+ - http://hl7.org/fhir/StructureDefinition/Location
120
+ - :path: PractitionerRole.healthcareService
121
+ :profiles:
122
+ - http://hl7.org/fhir/StructureDefinition/HealthcareService
123
+ - :path: PractitionerRole.endpoint
124
+ :profiles:
125
+ - http://hl7.org/fhir/StructureDefinition/Endpoint
126
+ :tests:
127
+ - :id: ipa_010_practitioner_role_read_test
128
+ :file_name: practitioner_role_read_test.rb
129
+ - :id: ipa_010_practitioner_role_practitioner_search_test
130
+ :file_name: practitioner_role_practitioner_search_test.rb
131
+ - :id: ipa_010_practitioner_role_identifier_search_test
132
+ :file_name: practitioner_role_identifier_search_test.rb
133
+ - :id: ipa_010_practitioner_role_validation_test
134
+ :file_name: practitioner_role_validation_test.rb
135
+ - :id: ipa_010_practitioner_role_must_support_test
136
+ :file_name: practitioner_role_must_support_test.rb
137
+ - :id: ipa_010_practitioner_role_reference_resolution_test
138
+ :file_name: practitioner_role_reference_resolution_test.rb
139
+ :id: ipa_010_practitioner_role
140
+ :file_name: practitioner_role_group.rb
141
+ :delayed_references: []
@@ -0,0 +1,40 @@
1
+ require_relative '../../search_test'
2
+ require_relative '../../generator/group_metadata'
3
+
4
+ module IpaTestKit
5
+ class PractitionerRoleIdentifierSearchTest < Inferno::Test
6
+ include IpaTestKit::SearchTest
7
+
8
+ title 'Server returns valid results for PractitionerRole search by identifier'
9
+ description %(
10
+ A server SHALL support searching by
11
+ identifier on the PractitionerRole resource. This test
12
+ will pass if resources are returned and match the search criteria. If
13
+ none are returned, the test is skipped.
14
+
15
+ [IPA Server CapabilityStatement](https://build.fhir.org/ig/HL7/fhir-ipa/CapabilityStatement-ipa-server.html)
16
+
17
+ )
18
+
19
+ id :ipa_010_practitioner_role_identifier_search_test
20
+ def self.properties
21
+ @properties ||= SearchTestProperties.new(
22
+ resource_type: 'PractitionerRole',
23
+ search_param_names: ['identifier'],
24
+ token_search_params: ['identifier']
25
+ )
26
+ end
27
+
28
+ def self.metadata
29
+ @metadata ||= Generator::GroupMetadata.new(YAML.load_file(File.join(__dir__, 'metadata.yml')))
30
+ end
31
+
32
+ def scratch_resources
33
+ scratch[:practitioner_role_resources] ||= {}
34
+ end
35
+
36
+ run do
37
+ run_search_test
38
+ end
39
+ end
40
+ end
@@ -0,0 +1,40 @@
1
+ require_relative '../../must_support_test'
2
+
3
+ module IpaTestKit
4
+ class PractitionerRoleMustSupportTest < Inferno::Test
5
+ include IpaTestKit::MustSupportTest
6
+
7
+ title 'All must support elements are provided in the PractitionerRole resources returned'
8
+ description %(
9
+ IPA Responders SHALL be capable of populating all data elements as
10
+ part of the query results as specified by the IPA Server Capability
11
+ Statement. This test will look through the PractitionerRole resources
12
+ found previously for the following must support elements:
13
+
14
+ * PractitionerRole.identifier
15
+ * PractitionerRole.identifier.system
16
+ * PractitionerRole.identifier.value
17
+ * PractitionerRole.identifier:NPI
18
+ * PractitionerRole.name
19
+ * PractitionerRole.name.family
20
+ )
21
+
22
+ id :ipa_010_practitioner_role_must_support_test
23
+
24
+ def resource_type
25
+ 'PractitionerRole'
26
+ end
27
+
28
+ def self.metadata
29
+ @metadata ||= Generator::GroupMetadata.new(YAML.load_file(File.join(__dir__, 'metadata.yml')))
30
+ end
31
+
32
+ def scratch_resources
33
+ scratch[:practitioner_role_resources] ||= {}
34
+ end
35
+
36
+ run do
37
+ perform_must_support_test(all_scratch_resources)
38
+ end
39
+ end
40
+ end
@@ -0,0 +1,51 @@
1
+ require_relative '../../search_test'
2
+ require_relative '../../generator/group_metadata'
3
+
4
+ module IpaTestKit
5
+ class PractitionerRolePractitionerSearchTest < Inferno::Test
6
+ include IpaTestKit::SearchTest
7
+
8
+ title 'Server returns valid results for PractitionerRole search by practitioner'
9
+ description %(
10
+ A server SHALL support searching by
11
+ practitioner on the PractitionerRole resource. This test
12
+ will pass if resources are returned and match the search criteria. If
13
+ none are returned, the test is skipped.
14
+
15
+ Because this is the first search of the sequence, resources in the
16
+ response will be used for subsequent tests.
17
+
18
+ Additionally, this test will check that GET and POST search methods
19
+ return the same number of results. Search by POST is required by the
20
+ FHIR R4 specification, and these tests interpret search by GET as a
21
+ requirement of IPA v0.1.0.
22
+
23
+ [IPA Server CapabilityStatement](https://build.fhir.org/ig/HL7/fhir-ipa/CapabilityStatement-ipa-server.html)
24
+
25
+ )
26
+
27
+ id :ipa_010_practitioner_role_practitioner_search_test
28
+ def self.properties
29
+ @properties ||= SearchTestProperties.new(
30
+ first_search: true,
31
+ resource_type: 'PractitionerRole',
32
+ search_param_names: ['practitioner'],
33
+ possible_status_search: true,
34
+ test_reference_variants: true,
35
+ test_post_search: true
36
+ )
37
+ end
38
+
39
+ def self.metadata
40
+ @metadata ||= Generator::GroupMetadata.new(YAML.load_file(File.join(__dir__, 'metadata.yml')))
41
+ end
42
+
43
+ def scratch_resources
44
+ scratch[:practitioner_role_resources] ||= {}
45
+ end
46
+
47
+ run do
48
+ run_search_test
49
+ end
50
+ end
51
+ end
@@ -0,0 +1,24 @@
1
+ require_relative '../../read_test'
2
+
3
+ module IpaTestKit
4
+ class PractitionerRoleReadTest < Inferno::Test
5
+ include IpaTestKit::ReadTest
6
+
7
+ title 'Server returns correct PractitionerRole resource from PractitionerRole read interaction'
8
+ description 'A server SHALL support the PractitionerRole read interaction.'
9
+
10
+ id :ipa_010_practitioner_role_read_test
11
+
12
+ def resource_type
13
+ 'PractitionerRole'
14
+ end
15
+
16
+ def scratch_resources
17
+ scratch[:practitioner_role_resources] ||= {}
18
+ end
19
+
20
+ run do
21
+ perform_read_test(scratch.dig(:references, 'PractitionerRole'))
22
+ end
23
+ end
24
+ end
@@ -0,0 +1,28 @@
1
+ require_relative '../../reference_resolution_test'
2
+
3
+ module IpaTestKit
4
+ class PractitionerRoleReferenceResolutionTest < Inferno::Test
5
+ include IpaTestKit::ReferenceResolutionTest
6
+
7
+ title 'Every reference within PractitionerRole resources can be read'
8
+ description %(
9
+ This test will attempt to read the first 50 references found in the
10
+ resources from the first search. The test will fail if Inferno fails to
11
+ read any of those references.
12
+ )
13
+
14
+ id :ipa_010_practitioner_role_reference_resolution_test
15
+
16
+ def resource_type
17
+ 'PractitionerRole'
18
+ end
19
+
20
+ def scratch_resources
21
+ scratch[:practitioner_role_resources] ||= {}
22
+ end
23
+
24
+ run do
25
+ perform_reference_resolution_test(scratch_resources[:all])
26
+ end
27
+ end
28
+ end
@@ -0,0 +1,34 @@
1
+ require_relative '../../validation_test'
2
+
3
+ module IpaTestKit
4
+ class PractitionerRoleValidationTest < Inferno::Test
5
+ include IpaTestKit::ValidationTest
6
+
7
+ id :ipa_010_practitioner_role_validation_test
8
+ title 'PractitionerRole resources returned during previous tests conform to the IPA PractitionerRole Profile'
9
+ description %(
10
+ This test verifies resources returned from the first search conform to
11
+ the [IPA PractitionerRole Profile](http://hl7.org/fhir/uv/ipa/StructureDefinition/ipa-practitionerrole).
12
+
13
+ It verifies the presence of mandatory elements and that elements with
14
+ required bindings contain appropriate values. CodeableConcept element
15
+ bindings will fail if none of their codings have a code/system belonging
16
+ to the bound ValueSet. Quantity, Coding, and code element bindings will
17
+ fail if their code/system are not found in the valueset.
18
+
19
+ )
20
+ output :dar_code_found, :dar_extension_found
21
+
22
+ def resource_type
23
+ 'PractitionerRole'
24
+ end
25
+
26
+ def scratch_resources
27
+ scratch[:practitioner_role_resources] ||= {}
28
+ end
29
+
30
+ run do
31
+ perform_validation_test(scratch_resources[:all] || [], 'http://hl7.org/fhir/uv/ipa/StructureDefinition/ipa-practitionerrole')
32
+ end
33
+ end
34
+ end
@@ -0,0 +1,84 @@
1
+ require_relative 'practitioner_role/practitioner_role_read_test'
2
+ require_relative 'practitioner_role/practitioner_role_practitioner_search_test'
3
+ require_relative 'practitioner_role/practitioner_role_identifier_search_test'
4
+ require_relative 'practitioner_role/practitioner_role_validation_test'
5
+ require_relative 'practitioner_role/practitioner_role_must_support_test'
6
+ require_relative 'practitioner_role/practitioner_role_reference_resolution_test'
7
+
8
+ module IpaTestKit
9
+ class PractitionerRoleGroup < Inferno::TestGroup
10
+ title 'PractitionerRole Tests'
11
+ short_description 'Verify support for the server capabilities required by the IPA PractitionerRole Profile.'
12
+ description %(
13
+ # Background
14
+
15
+ The IPA PractitionerRole sequence verifies that the system under test is
16
+ able to provide correct responses for PractitionerRole queries. These queries
17
+ must contain resources conforming to the IPA PractitionerRole Profile as
18
+ specified in the IPA v0.1.0 Implementation Guide.
19
+
20
+ # Testing Methodology
21
+ ## Searching
22
+ This test sequence will first perform each required search associated
23
+ with this resource. This sequence will perform searches with the
24
+ following parameters:
25
+
26
+ * practitioner
27
+ * identifier
28
+
29
+ ### Search Parameters
30
+ The first search uses the selected patient(s) from the prior launch
31
+ sequence. Any subsequent searches will look for its parameter values
32
+ from the results of the first search. For example, the `identifier`
33
+ search in the patient sequence is performed by looking for an existing
34
+ `Patient.identifier` from any of the resources returned in the `_id`
35
+ search. If a value cannot be found this way, the search is skipped.
36
+
37
+ ### Search Validation
38
+ Inferno will retrieve up to the first 20 bundle pages of the reply for
39
+ PractitionerRole resources and save them for subsequent tests. Each of
40
+ these resources is then checked to see if it matches the searched
41
+ parameters in accordance with [FHIR search
42
+ guidelines](https://www.hl7.org/fhir/search.html). The test will fail,
43
+ for example, if a Patient search for `gender=male` returns a `female`
44
+ patient.
45
+
46
+
47
+ ## Must Support
48
+ Each profile contains elements marked as "must support". This test
49
+ sequence expects to see each of these elements at least once. If at
50
+ least one cannot be found, the test will fail. The test will look
51
+ through the PractitionerRole resources found in the first test for these
52
+ elements.
53
+
54
+ ## Profile Validation
55
+ Each resource returned from the first search is expected to conform to
56
+ the [IPA PractitionerRole Profile](http://hl7.org/fhir/uv/ipa/StructureDefinition/ipa-practitionerrole). Each element is checked against
57
+ teminology binding and cardinality requirements.
58
+
59
+ Elements with a required binding are validated against their bound
60
+ ValueSet. If the code/system in the element is not part of the ValueSet,
61
+ then the test will fail.
62
+
63
+ ## Reference Validation
64
+ Each reference within the resources found from the previous tests must
65
+ resolve. The test will attempt to read each reference found and will
66
+ fail if any attempted read fails.
67
+
68
+ )
69
+
70
+ id :ipa_010_practitioner_role
71
+ run_as_group
72
+
73
+ def self.metadata
74
+ @metadata ||= Generator::GroupMetadata.new(YAML.load_file(File.join(__dir__, 'practitioner_role', 'metadata.yml')))
75
+ end
76
+
77
+ test from: :ipa_010_practitioner_role_read_test
78
+ test from: :ipa_010_practitioner_role_practitioner_search_test
79
+ test from: :ipa_010_practitioner_role_identifier_search_test
80
+ test from: :ipa_010_practitioner_role_validation_test
81
+ test from: :ipa_010_practitioner_role_must_support_test
82
+ test from: :ipa_010_practitioner_role_reference_resolution_test
83
+ end
84
+ end