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,325 @@
1
+ ---
2
+ :name: heartrate
3
+ :class_name: HeartrateSequence
4
+ :version: v0.1.0
5
+ :reformatted_version: v010
6
+ :resource: Observation
7
+ :profile_url: http://hl7.org/fhir/StructureDefinition/heartrate
8
+ :profile_name: Observation Heart Rate Profile
9
+ :title: Observation Heart Rate
10
+ :short_description: Verify support for the server capabilities required by the Observation
11
+ Heart Rate 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
+ - :expectation: SHALL
34
+ :names:
35
+ - patient
36
+ - code
37
+ :names_not_must_support_or_mandatory: []
38
+ :must_support_or_mandatory: true
39
+ - :expectation: SHALL
40
+ :names:
41
+ - patient
42
+ - category
43
+ - date
44
+ :names_not_must_support_or_mandatory: []
45
+ :must_support_or_mandatory: true
46
+ - :expectation: SHOULD
47
+ :names:
48
+ - patient
49
+ - category
50
+ - status
51
+ :names_not_must_support_or_mandatory: []
52
+ :must_support_or_mandatory: true
53
+ - :expectation: SHOULD
54
+ :names:
55
+ - patient
56
+ - code
57
+ - date
58
+ :names_not_must_support_or_mandatory: []
59
+ :must_support_or_mandatory: true
60
+ - :expectation: SHALL
61
+ :names:
62
+ - patient
63
+ - category
64
+ :names_not_must_support_or_mandatory: []
65
+ :must_support_or_mandatory: true
66
+ :search_definitions:
67
+ :patient:
68
+ :path: subject
69
+ :full_path: Observation.subject
70
+ :comparators: {}
71
+ :values: []
72
+ :type: Reference
73
+ :contains_multiple: false
74
+ :multiple_or: MAY
75
+ :category:
76
+ :path: category
77
+ :full_path: Observation.category
78
+ :comparators: {}
79
+ :values:
80
+ - vital-signs
81
+ :type: CodeableConcept
82
+ :contains_multiple: true
83
+ :multiple_or: MAY
84
+ :date:
85
+ :path: effective
86
+ :full_path: Observation.effective
87
+ :comparators:
88
+ :eq: MAY
89
+ :ne: MAY
90
+ :gt: SHALL
91
+ :ge: SHALL
92
+ :lt: SHALL
93
+ :le: SHALL
94
+ :sa: MAY
95
+ :eb: MAY
96
+ :ap: MAY
97
+ :values: []
98
+ :type: date
99
+ :contains_multiple: false
100
+ :multiple_or: MAY
101
+ :status:
102
+ :path: status
103
+ :full_path: Observation.status
104
+ :comparators: {}
105
+ :values:
106
+ - registered
107
+ - preliminary
108
+ - final
109
+ - amended
110
+ - corrected
111
+ - cancelled
112
+ - entered-in-error
113
+ - unknown
114
+ :type: code
115
+ :contains_multiple: false
116
+ :multiple_or: SHALL
117
+ :code:
118
+ :path: code
119
+ :full_path: Observation.code
120
+ :comparators: {}
121
+ :values:
122
+ - 8867-4
123
+ :type: CodeableConcept
124
+ :contains_multiple: false
125
+ :multiple_or: SHOULD
126
+ :include_params: []
127
+ :revincludes:
128
+ - Provenance:target
129
+ :required_concepts:
130
+ :must_supports:
131
+ :extensions: []
132
+ :slices:
133
+ - :name: Observation.value[x]:valueQuantity
134
+ :path: value[x]
135
+ :discriminator:
136
+ :type: type
137
+ :code: Quantity
138
+ - :name: Observation.category:VSCat
139
+ :path: category
140
+ :discriminator:
141
+ :type: value
142
+ :values:
143
+ - :path: coding.code
144
+ :value: vital-signs
145
+ - :path: coding.system
146
+ :value: http://terminology.hl7.org/CodeSystem/observation-category
147
+ :elements:
148
+ - :path: status
149
+ - :path: category
150
+ - :path: category.coding
151
+ - :path: category.coding.system
152
+ :fixed_value: http://terminology.hl7.org/CodeSystem/observation-category
153
+ - :path: category.coding.code
154
+ :fixed_value: vital-signs
155
+ - :path: code
156
+ - :path: subject
157
+ - :path: effective[x]
158
+ - :path: value[x]
159
+ - :path: value[x].value
160
+ - :path: value[x].unit
161
+ - :path: value[x].system
162
+ :fixed_value: http://unitsofmeasure.org
163
+ - :path: value[x].code
164
+ :fixed_value: "/min"
165
+ :mandatory_elements:
166
+ - Observation.status
167
+ - Observation.category
168
+ - Observation.category
169
+ - Observation.category.coding
170
+ - Observation.category.coding.system
171
+ - Observation.category.coding.code
172
+ - Observation.code
173
+ - Observation.code.coding
174
+ - Observation.code.coding.system
175
+ - Observation.code.coding.code
176
+ - Observation.subject
177
+ - Observation.effective[x]
178
+ - Observation.value[x].value
179
+ - Observation.value[x].unit
180
+ - Observation.value[x].system
181
+ - Observation.value[x].code
182
+ - Observation.component.code
183
+ :bindings:
184
+ - :type: code
185
+ :strength: preferred
186
+ :system: http://hl7.org/fhir/ValueSet/languages
187
+ :path: language
188
+ - :type: code
189
+ :strength: required
190
+ :system: http://hl7.org/fhir/ValueSet/observation-status
191
+ :path: status
192
+ - :type: CodeableConcept
193
+ :strength: preferred
194
+ :system: http://hl7.org/fhir/ValueSet/observation-category
195
+ :path: category
196
+ - :type: CodeableConcept
197
+ :strength: preferred
198
+ :system: http://hl7.org/fhir/ValueSet/observation-category
199
+ :path: category
200
+ - :type: CodeableConcept
201
+ :strength: extensible
202
+ :system: http://hl7.org/fhir/ValueSet/observation-vitalsignresult
203
+ :path: code
204
+ - :type: code
205
+ :strength: required
206
+ :system: http://hl7.org/fhir/ValueSet/quantity-comparator
207
+ :path: value.comparator
208
+ - :type: CodeableConcept
209
+ :strength: extensible
210
+ :system: http://hl7.org/fhir/ValueSet/data-absent-reason
211
+ :path: dataAbsentReason
212
+ - :type: CodeableConcept
213
+ :strength: extensible
214
+ :system: http://hl7.org/fhir/ValueSet/observation-interpretation
215
+ :path: interpretation
216
+ - :type: CodeableConcept
217
+ :strength: example
218
+ :system: http://hl7.org/fhir/ValueSet/body-site
219
+ :path: bodySite
220
+ - :type: CodeableConcept
221
+ :strength: example
222
+ :system: http://hl7.org/fhir/ValueSet/observation-methods
223
+ :path: method
224
+ - :type: CodeableConcept
225
+ :strength: preferred
226
+ :system: http://hl7.org/fhir/ValueSet/referencerange-meaning
227
+ :path: referenceRange.type
228
+ - :type: CodeableConcept
229
+ :strength: example
230
+ :system: http://hl7.org/fhir/ValueSet/referencerange-appliesto
231
+ :path: referenceRange.appliesTo
232
+ - :type: CodeableConcept
233
+ :strength: extensible
234
+ :system: http://hl7.org/fhir/ValueSet/observation-vitalsignresult
235
+ :path: component.code
236
+ - :type: Quantity
237
+ :strength: required
238
+ :system: http://hl7.org/fhir/ValueSet/ucum-vitals-common
239
+ :path: component.value
240
+ - :type: CodeableConcept
241
+ :strength: extensible
242
+ :system: http://hl7.org/fhir/ValueSet/data-absent-reason
243
+ :path: component.dataAbsentReason
244
+ - :type: CodeableConcept
245
+ :strength: extensible
246
+ :system: http://hl7.org/fhir/ValueSet/observation-interpretation
247
+ :path: component.interpretation
248
+ :references:
249
+ - :path: Observation.basedOn
250
+ :profiles:
251
+ - http://hl7.org/fhir/StructureDefinition/CarePlan
252
+ - http://hl7.org/fhir/StructureDefinition/DeviceRequest
253
+ - http://hl7.org/fhir/StructureDefinition/ImmunizationRecommendation
254
+ - http://hl7.org/fhir/StructureDefinition/MedicationRequest
255
+ - http://hl7.org/fhir/StructureDefinition/NutritionOrder
256
+ - http://hl7.org/fhir/StructureDefinition/ServiceRequest
257
+ - :path: Observation.partOf
258
+ :profiles:
259
+ - http://hl7.org/fhir/StructureDefinition/MedicationAdministration
260
+ - http://hl7.org/fhir/StructureDefinition/MedicationDispense
261
+ - http://hl7.org/fhir/StructureDefinition/MedicationStatement
262
+ - http://hl7.org/fhir/StructureDefinition/Procedure
263
+ - http://hl7.org/fhir/StructureDefinition/Immunization
264
+ - http://hl7.org/fhir/StructureDefinition/ImagingStudy
265
+ - :path: Observation.subject
266
+ :profiles:
267
+ - http://hl7.org/fhir/StructureDefinition/Patient
268
+ - :path: Observation.focus
269
+ :profiles:
270
+ - http://hl7.org/fhir/StructureDefinition/Resource
271
+ - :path: Observation.encounter
272
+ :profiles:
273
+ - http://hl7.org/fhir/StructureDefinition/Encounter
274
+ - :path: Observation.performer
275
+ :profiles:
276
+ - http://hl7.org/fhir/StructureDefinition/Practitioner
277
+ - http://hl7.org/fhir/StructureDefinition/PractitionerRole
278
+ - http://hl7.org/fhir/StructureDefinition/Organization
279
+ - http://hl7.org/fhir/StructureDefinition/CareTeam
280
+ - http://hl7.org/fhir/StructureDefinition/Patient
281
+ - http://hl7.org/fhir/StructureDefinition/RelatedPerson
282
+ - :path: Observation.specimen
283
+ :profiles:
284
+ - http://hl7.org/fhir/StructureDefinition/Specimen
285
+ - :path: Observation.device
286
+ :profiles:
287
+ - http://hl7.org/fhir/StructureDefinition/Device
288
+ - http://hl7.org/fhir/StructureDefinition/DeviceMetric
289
+ - :path: Observation.hasMember
290
+ :profiles:
291
+ - http://hl7.org/fhir/StructureDefinition/QuestionnaireResponse
292
+ - http://hl7.org/fhir/StructureDefinition/MolecularSequence
293
+ - http://hl7.org/fhir/StructureDefinition/vitalsigns
294
+ - :path: Observation.derivedFrom
295
+ :profiles:
296
+ - http://hl7.org/fhir/StructureDefinition/DocumentReference
297
+ - http://hl7.org/fhir/StructureDefinition/ImagingStudy
298
+ - http://hl7.org/fhir/StructureDefinition/Media
299
+ - http://hl7.org/fhir/StructureDefinition/QuestionnaireResponse
300
+ - http://hl7.org/fhir/StructureDefinition/MolecularSequence
301
+ - http://hl7.org/fhir/StructureDefinition/vitalsigns
302
+ :tests:
303
+ - :id: ipa_010_heartrate_patient_code_search_test
304
+ :file_name: heartrate_patient_code_search_test.rb
305
+ - :id: ipa_010_heartrate_patient_category_date_search_test
306
+ :file_name: heartrate_patient_category_date_search_test.rb
307
+ - :id: ipa_010_heartrate_patient_category_status_search_test
308
+ :file_name: heartrate_patient_category_status_search_test.rb
309
+ - :id: ipa_010_heartrate_patient_code_date_search_test
310
+ :file_name: heartrate_patient_code_date_search_test.rb
311
+ - :id: ipa_010_heartrate_patient_category_search_test
312
+ :file_name: heartrate_patient_category_search_test.rb
313
+ - :id: ipa_010_heartrate_read_test
314
+ :file_name: heartrate_read_test.rb
315
+ - :id: ipa_010_heartrate_provenance_revinclude_search_test
316
+ :file_name: heartrate_provenance_revinclude_search_test.rb
317
+ - :id: ipa_010_heartrate_validation_test
318
+ :file_name: heartrate_validation_test.rb
319
+ - :id: ipa_010_heartrate_must_support_test
320
+ :file_name: heartrate_must_support_test.rb
321
+ - :id: ipa_010_heartrate_reference_resolution_test
322
+ :file_name: heartrate_reference_resolution_test.rb
323
+ :id: ipa_010_heartrate
324
+ :file_name: heartrate_group.rb
325
+ :delayed_references: []
@@ -0,0 +1,93 @@
1
+ require_relative 'heartrate/heartrate_patient_code_search_test'
2
+ require_relative 'heartrate/heartrate_patient_category_date_search_test'
3
+ require_relative 'heartrate/heartrate_patient_category_status_search_test'
4
+ require_relative 'heartrate/heartrate_patient_code_date_search_test'
5
+ require_relative 'heartrate/heartrate_patient_category_search_test'
6
+ require_relative 'heartrate/heartrate_read_test'
7
+ require_relative 'heartrate/heartrate_provenance_revinclude_search_test'
8
+ require_relative 'heartrate/heartrate_validation_test'
9
+ require_relative 'heartrate/heartrate_must_support_test'
10
+ require_relative 'heartrate/heartrate_reference_resolution_test'
11
+
12
+ module IpaTestKit
13
+ class HeartrateGroup < Inferno::TestGroup
14
+ title 'Observation Heart Rate Tests'
15
+ short_description 'Verify support for the server capabilities required by the Observation Heart Rate Profile.'
16
+ description %(
17
+ # Background
18
+
19
+ The IPA Observation Heart Rate sequence verifies that the system under test is
20
+ able to provide correct responses for Observation queries. These queries
21
+ must contain resources conforming to the Observation Heart Rate Profile as
22
+ specified in the IPA v0.1.0 Implementation Guide.
23
+
24
+ # Testing Methodology
25
+ ## Searching
26
+ This test sequence will first perform each required search associated
27
+ with this resource. This sequence will perform searches with the
28
+ following parameters:
29
+
30
+ * patient + code
31
+ * patient + category + date
32
+ * patient + category
33
+
34
+ ### Search Parameters
35
+ The first search uses the selected patient(s) from the prior launch
36
+ sequence. Any subsequent searches will look for its parameter values
37
+ from the results of the first search. For example, the `identifier`
38
+ search in the patient sequence is performed by looking for an existing
39
+ `Patient.identifier` from any of the resources returned in the `_id`
40
+ search. If a value cannot be found this way, the search is skipped.
41
+
42
+ ### Search Validation
43
+ Inferno will retrieve up to the first 20 bundle pages of the reply for
44
+ Observation resources and save them for subsequent tests. Each of
45
+ these resources is then checked to see if it matches the searched
46
+ parameters in accordance with [FHIR search
47
+ guidelines](https://www.hl7.org/fhir/search.html). The test will fail,
48
+ for example, if a Patient search for `gender=male` returns a `female`
49
+ patient.
50
+
51
+
52
+ ## Must Support
53
+ Each profile contains elements marked as "must support". This test
54
+ sequence expects to see each of these elements at least once. If at
55
+ least one cannot be found, the test will fail. The test will look
56
+ through the Observation resources found in the first test for these
57
+ elements.
58
+
59
+ ## Profile Validation
60
+ Each resource returned from the first search is expected to conform to
61
+ the [Observation Heart Rate Profile](http://hl7.org/fhir/StructureDefinition/heartrate). Each element is checked against
62
+ teminology binding and cardinality requirements.
63
+
64
+ Elements with a required binding are validated against their bound
65
+ ValueSet. If the code/system in the element is not part of the ValueSet,
66
+ then the test will fail.
67
+
68
+ ## Reference Validation
69
+ Each reference within the resources found from the previous tests must
70
+ resolve. The test will attempt to read each reference found and will
71
+ fail if any attempted read fails.
72
+
73
+ )
74
+
75
+ id :ipa_010_heartrate
76
+ run_as_group
77
+
78
+ def self.metadata
79
+ @metadata ||= Generator::GroupMetadata.new(YAML.load_file(File.join(__dir__, 'heartrate', 'metadata.yml')))
80
+ end
81
+
82
+ test from: :ipa_010_heartrate_patient_code_search_test
83
+ test from: :ipa_010_heartrate_patient_category_date_search_test
84
+ test from: :ipa_010_heartrate_patient_category_status_search_test
85
+ test from: :ipa_010_heartrate_patient_code_date_search_test
86
+ test from: :ipa_010_heartrate_patient_category_search_test
87
+ test from: :ipa_010_heartrate_read_test
88
+ test from: :ipa_010_heartrate_provenance_revinclude_search_test
89
+ test from: :ipa_010_heartrate_validation_test
90
+ test from: :ipa_010_heartrate_must_support_test
91
+ test from: :ipa_010_heartrate_reference_resolution_test
92
+ end
93
+ end
@@ -0,0 +1,40 @@
1
+ require_relative '../../must_support_test'
2
+
3
+ module IpaTestKit
4
+ class ImmunizationMustSupportTest < Inferno::Test
5
+ include IpaTestKit::MustSupportTest
6
+
7
+ title 'All must support elements are provided in the Immunization 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 Immunization resources
12
+ found previously for the following must support elements:
13
+
14
+ * Immunization.occurrence[x]
15
+ * Immunization.patient
16
+ * Immunization.primarySource
17
+ * Immunization.status
18
+ * Immunization.statusReason
19
+ * Immunization.vaccineCode
20
+ )
21
+
22
+ id :ipa_010_immunization_must_support_test
23
+
24
+ def resource_type
25
+ 'Immunization'
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[:immunization_resources] ||= {}
34
+ end
35
+
36
+ run do
37
+ perform_must_support_test(all_scratch_resources)
38
+ end
39
+ end
40
+ end
@@ -0,0 +1,47 @@
1
+ require_relative '../../search_test'
2
+ require_relative '../../generator/group_metadata'
3
+
4
+ module IpaTestKit
5
+ class ImmunizationPatientDateSearchTest < Inferno::Test
6
+ include IpaTestKit::SearchTest
7
+
8
+ title 'Server returns valid results for Immunization search by patient + date'
9
+ description %(
10
+ A server SHOULD support searching by
11
+ patient + date on the Immunization 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_immunization_patient_date_search_test
20
+ optional
21
+
22
+ input :patient_ids,
23
+ title: 'Patient IDs',
24
+ description: 'Comma separated list of patient IDs that in sum contain all MUST SUPPORT elements'
25
+
26
+ def self.properties
27
+ @properties ||= SearchTestProperties.new(
28
+ resource_type: 'Immunization',
29
+ search_param_names: ['patient', 'date'],
30
+ possible_status_search: true,
31
+ params_with_comparators: ['date']
32
+ )
33
+ end
34
+
35
+ def self.metadata
36
+ @metadata ||= Generator::GroupMetadata.new(YAML.load_file(File.join(__dir__, 'metadata.yml')))
37
+ end
38
+
39
+ def scratch_resources
40
+ scratch[:immunization_resources] ||= {}
41
+ end
42
+
43
+ run do
44
+ run_search_test
45
+ end
46
+ end
47
+ end
@@ -0,0 +1,60 @@
1
+ require_relative '../../search_test'
2
+ require_relative '../../generator/group_metadata'
3
+
4
+ module IpaTestKit
5
+ class ImmunizationPatientSearchTest < Inferno::Test
6
+ include IpaTestKit::SearchTest
7
+
8
+ title 'Server returns valid results for Immunization search by patient'
9
+ description %(
10
+ A server SHALL support searching by
11
+ patient on the Immunization 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
+ This test verifies that the server supports searching by reference using
16
+ the form `patient=[id]` as well as `patient=Patient/[id]`. The two
17
+ different forms are expected to return the same number of results. IPA
18
+ requires that both forms are supported by IPA responders.
19
+
20
+ Because this is the first search of the sequence, resources in the
21
+ response will be used for subsequent tests.
22
+
23
+ Additionally, this test will check that GET and POST search methods
24
+ return the same number of results. Search by POST is required by the
25
+ FHIR R4 specification, and these tests interpret search by GET as a
26
+ requirement of IPA v0.1.0.
27
+
28
+ [IPA Server CapabilityStatement](https://build.fhir.org/ig/HL7/fhir-ipa/CapabilityStatement-ipa-server.html)
29
+
30
+ )
31
+
32
+ id :ipa_010_immunization_patient_search_test
33
+ input :patient_ids,
34
+ title: 'Patient IDs',
35
+ description: 'Comma separated list of patient IDs that in sum contain all MUST SUPPORT elements'
36
+
37
+ def self.properties
38
+ @properties ||= SearchTestProperties.new(
39
+ first_search: true,
40
+ resource_type: 'Immunization',
41
+ search_param_names: ['patient'],
42
+ possible_status_search: true,
43
+ test_reference_variants: true,
44
+ test_post_search: true
45
+ )
46
+ end
47
+
48
+ def self.metadata
49
+ @metadata ||= Generator::GroupMetadata.new(YAML.load_file(File.join(__dir__, 'metadata.yml')))
50
+ end
51
+
52
+ def scratch_resources
53
+ scratch[:immunization_resources] ||= {}
54
+ end
55
+
56
+ run do
57
+ run_search_test
58
+ end
59
+ end
60
+ end
@@ -0,0 +1,45 @@
1
+ require_relative '../../search_test'
2
+ require_relative '../../generator/group_metadata'
3
+
4
+ module IpaTestKit
5
+ class ImmunizationPatientStatusSearchTest < Inferno::Test
6
+ include IpaTestKit::SearchTest
7
+
8
+ title 'Server returns valid results for Immunization search by patient + status'
9
+ description %(
10
+ A server SHOULD support searching by
11
+ patient + status on the Immunization 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_immunization_patient_status_search_test
20
+ optional
21
+
22
+ input :patient_ids,
23
+ title: 'Patient IDs',
24
+ description: 'Comma separated list of patient IDs that in sum contain all MUST SUPPORT elements'
25
+
26
+ def self.properties
27
+ @properties ||= SearchTestProperties.new(
28
+ resource_type: 'Immunization',
29
+ search_param_names: ['patient', 'status']
30
+ )
31
+ end
32
+
33
+ def self.metadata
34
+ @metadata ||= Generator::GroupMetadata.new(YAML.load_file(File.join(__dir__, 'metadata.yml')))
35
+ end
36
+
37
+ def scratch_resources
38
+ scratch[:immunization_resources] ||= {}
39
+ end
40
+
41
+ run do
42
+ run_search_test
43
+ end
44
+ end
45
+ end
@@ -0,0 +1,50 @@
1
+ require_relative '../../search_test'
2
+ require_relative '../../generator/group_metadata'
3
+
4
+ module IpaTestKit
5
+ class ImmunizationProvenanceRevincludeSearchTest < Inferno::Test
6
+ include IpaTestKit::SearchTest
7
+
8
+ title 'Server returns Provenance resources from Immunization search by patient + revInclude:Provenance:target'
9
+ description %(
10
+ A server SHALL be capable of supporting _revIncludes:Provenance:target.
11
+
12
+ This test will perform a search by patient + revInclude:Provenance:target and
13
+ will pass if a Provenance resource is found in the response.
14
+ %)
15
+
16
+ id :ipa_010_immunization_provenance_revinclude_search_test
17
+
18
+ input :patient_ids,
19
+ title: 'Patient IDs',
20
+ description: 'Comma separated list of patient IDs that in sum contain all MUST SUPPORT elements'
21
+
22
+ def properties
23
+ @properties ||= SearchTestProperties.new(
24
+ resource_type: 'Immunization',
25
+ search_param_names: ['patient'],
26
+ possible_status_search: true
27
+ )
28
+ end
29
+
30
+ def self.metadata
31
+ @metadata ||= Generator::GroupMetadata.new(YAML.load_file(File.join(__dir__, 'metadata.yml')))
32
+ end
33
+
34
+ def self.provenance_metadata
35
+ @provenance_metadata ||= Generator::GroupMetadata.new(YAML.load_file(File.join(__dir__, '..', 'provenance', 'metadata.yml')))
36
+ end
37
+
38
+ def scratch_resources
39
+ scratch[:immunization_resources] ||= {}
40
+ end
41
+
42
+ def scratch_provenance_resources
43
+ scratch[:provenance_resources] ||= {}
44
+ end
45
+
46
+ run do
47
+ run_provenance_revinclude_search_test
48
+ end
49
+ end
50
+ end
@@ -0,0 +1,24 @@
1
+ require_relative '../../read_test'
2
+
3
+ module IpaTestKit
4
+ class ImmunizationReadTest < Inferno::Test
5
+ include IpaTestKit::ReadTest
6
+
7
+ title 'Server returns correct Immunization resource from Immunization read interaction'
8
+ description 'A server SHALL support the Immunization read interaction.'
9
+
10
+ id :ipa_010_immunization_read_test
11
+
12
+ def resource_type
13
+ 'Immunization'
14
+ end
15
+
16
+ def scratch_resources
17
+ scratch[:immunization_resources] ||= {}
18
+ end
19
+
20
+ run do
21
+ perform_read_test(all_scratch_resources)
22
+ end
23
+ end
24
+ end