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,62 @@
1
+ require_relative '../../search_test'
2
+ require_relative '../../generator/group_metadata'
3
+
4
+ module IpaTestKit
5
+ class BpPatientCodeSearchTest < Inferno::Test
6
+ include IpaTestKit::SearchTest
7
+
8
+ title 'Server returns valid results for Observation search by patient + code'
9
+ description %(
10
+ A server SHALL support searching by
11
+ patient + code on the Observation 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_bp_patient_code_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
+ fixed_value_search: true,
41
+ resource_type: 'Observation',
42
+ search_param_names: ['patient', 'code'],
43
+ possible_status_search: true,
44
+ token_search_params: ['code'],
45
+ test_reference_variants: true,
46
+ test_post_search: true
47
+ )
48
+ end
49
+
50
+ def self.metadata
51
+ @metadata ||= Generator::GroupMetadata.new(YAML.load_file(File.join(__dir__, 'metadata.yml')))
52
+ end
53
+
54
+ def scratch_resources
55
+ scratch[:bp_resources] ||= {}
56
+ end
57
+
58
+ run do
59
+ run_search_test
60
+ end
61
+ end
62
+ end
@@ -0,0 +1,51 @@
1
+ require_relative '../../search_test'
2
+ require_relative '../../generator/group_metadata'
3
+
4
+ module IpaTestKit
5
+ class BpProvenanceRevincludeSearchTest < Inferno::Test
6
+ include IpaTestKit::SearchTest
7
+
8
+ title 'Server returns Provenance resources from Observation search by patient + code + 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 + code + revInclude:Provenance:target and
13
+ will pass if a Provenance resource is found in the response.
14
+ %)
15
+
16
+ id :ipa_010_bp_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
+ fixed_value_search: true,
25
+ resource_type: 'Observation',
26
+ search_param_names: ['patient', 'code'],
27
+ possible_status_search: true
28
+ )
29
+ end
30
+
31
+ def self.metadata
32
+ @metadata ||= Generator::GroupMetadata.new(YAML.load_file(File.join(__dir__, 'metadata.yml')))
33
+ end
34
+
35
+ def self.provenance_metadata
36
+ @provenance_metadata ||= Generator::GroupMetadata.new(YAML.load_file(File.join(__dir__, '..', 'provenance', 'metadata.yml')))
37
+ end
38
+
39
+ def scratch_resources
40
+ scratch[:bp_resources] ||= {}
41
+ end
42
+
43
+ def scratch_provenance_resources
44
+ scratch[:provenance_resources] ||= {}
45
+ end
46
+
47
+ run do
48
+ run_provenance_revinclude_search_test
49
+ end
50
+ end
51
+ end
@@ -0,0 +1,24 @@
1
+ require_relative '../../read_test'
2
+
3
+ module IpaTestKit
4
+ class BpReadTest < Inferno::Test
5
+ include IpaTestKit::ReadTest
6
+
7
+ title 'Server returns correct Observation resource from Observation read interaction'
8
+ description 'A server SHALL support the Observation read interaction.'
9
+
10
+ id :ipa_010_bp_read_test
11
+
12
+ def resource_type
13
+ 'Observation'
14
+ end
15
+
16
+ def scratch_resources
17
+ scratch[:bp_resources] ||= {}
18
+ end
19
+
20
+ run do
21
+ perform_read_test(all_scratch_resources)
22
+ end
23
+ end
24
+ end
@@ -0,0 +1,28 @@
1
+ require_relative '../../reference_resolution_test'
2
+
3
+ module IpaTestKit
4
+ class BpReferenceResolutionTest < Inferno::Test
5
+ include IpaTestKit::ReferenceResolutionTest
6
+
7
+ title 'Every reference within Observation 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_bp_reference_resolution_test
15
+
16
+ def resource_type
17
+ 'Observation'
18
+ end
19
+
20
+ def scratch_resources
21
+ scratch[:bp_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 BpValidationTest < Inferno::Test
5
+ include IpaTestKit::ValidationTest
6
+
7
+ id :ipa_010_bp_validation_test
8
+ title 'Observation resources returned during previous tests conform to the Observation Blood Pressure Profile'
9
+ description %(
10
+ This test verifies resources returned from the first search conform to
11
+ the [Observation Blood Pressure Profile](http://hl7.org/fhir/StructureDefinition/bp).
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
+ 'Observation'
24
+ end
25
+
26
+ def scratch_resources
27
+ scratch[:bp_resources] ||= {}
28
+ end
29
+
30
+ run do
31
+ perform_validation_test(scratch_resources[:all] || [], 'http://hl7.org/fhir/StructureDefinition/bp')
32
+ end
33
+ end
34
+ end
@@ -0,0 +1,379 @@
1
+ ---
2
+ :name: bp
3
+ :class_name: BpSequence
4
+ :version: v0.1.0
5
+ :reformatted_version: v010
6
+ :resource: Observation
7
+ :profile_url: http://hl7.org/fhir/StructureDefinition/bp
8
+ :profile_name: Observation Blood Pressure Profile
9
+ :title: Observation Blood Pressure
10
+ :short_description: Verify support for the server capabilities required by the Observation
11
+ Blood Pressure 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
+ - 85354-9
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.category:VSCat
134
+ :path: category
135
+ :discriminator:
136
+ :type: value
137
+ :values:
138
+ - :path: coding.code
139
+ :value: vital-signs
140
+ - :path: coding.system
141
+ :value: http://terminology.hl7.org/CodeSystem/observation-category
142
+ - :name: Observation.component:SystolicBP
143
+ :path: component
144
+ :discriminator:
145
+ :type: value
146
+ :values:
147
+ - :path: code.coding.code
148
+ :value: 8480-6
149
+ - :path: code.coding.system
150
+ :value: http://loinc.org
151
+ - :name: Observation.component:DiastolicBP
152
+ :path: component
153
+ :discriminator:
154
+ :type: value
155
+ :values:
156
+ - :path: code.coding.code
157
+ :value: 8462-4
158
+ - :path: code.coding.system
159
+ :value: http://loinc.org
160
+ :elements:
161
+ - :path: status
162
+ - :path: category
163
+ - :path: category.coding
164
+ - :path: category.coding.system
165
+ :fixed_value: http://terminology.hl7.org/CodeSystem/observation-category
166
+ - :path: category.coding.code
167
+ :fixed_value: vital-signs
168
+ - :path: code
169
+ - :path: subject
170
+ - :path: effective[x]
171
+ - :path: component
172
+ - :path: component.value[x].system
173
+ :fixed_value: http://unitsofmeasure.org
174
+ - :path: component.value[x].code
175
+ :fixed_value: mm[Hg]
176
+ - :path: component.code
177
+ - :path: component.value[x]
178
+ - :path: component.value[x].value
179
+ - :path: component.value[x].unit
180
+ :mandatory_elements:
181
+ - Observation.status
182
+ - Observation.category
183
+ - Observation.category
184
+ - Observation.category.coding
185
+ - Observation.category.coding.system
186
+ - Observation.category.coding.code
187
+ - Observation.code
188
+ - Observation.code.coding
189
+ - Observation.code.coding.system
190
+ - Observation.code.coding.code
191
+ - Observation.subject
192
+ - Observation.effective[x]
193
+ - Observation.component
194
+ - Observation.component.code
195
+ - Observation.component
196
+ - Observation.component.code
197
+ - Observation.component.code.coding
198
+ - Observation.component.code.coding.system
199
+ - Observation.component.code.coding.code
200
+ - Observation.component.value[x].value
201
+ - Observation.component.value[x].unit
202
+ - Observation.component.value[x].system
203
+ - Observation.component.value[x].code
204
+ - Observation.component
205
+ - Observation.component.code
206
+ - Observation.component.code.coding
207
+ - Observation.component.code.coding.system
208
+ - Observation.component.code.coding.code
209
+ - Observation.component.value[x].value
210
+ - Observation.component.value[x].unit
211
+ - Observation.component.value[x].system
212
+ - Observation.component.value[x].code
213
+ :bindings:
214
+ - :type: code
215
+ :strength: preferred
216
+ :system: http://hl7.org/fhir/ValueSet/languages
217
+ :path: language
218
+ - :type: code
219
+ :strength: required
220
+ :system: http://hl7.org/fhir/ValueSet/observation-status
221
+ :path: status
222
+ - :type: CodeableConcept
223
+ :strength: preferred
224
+ :system: http://hl7.org/fhir/ValueSet/observation-category
225
+ :path: category
226
+ - :type: CodeableConcept
227
+ :strength: preferred
228
+ :system: http://hl7.org/fhir/ValueSet/observation-category
229
+ :path: category
230
+ - :type: CodeableConcept
231
+ :strength: extensible
232
+ :system: http://hl7.org/fhir/ValueSet/observation-vitalsignresult
233
+ :path: code
234
+ - :type: CodeableConcept
235
+ :strength: extensible
236
+ :system: http://hl7.org/fhir/ValueSet/data-absent-reason
237
+ :path: dataAbsentReason
238
+ - :type: CodeableConcept
239
+ :strength: extensible
240
+ :system: http://hl7.org/fhir/ValueSet/observation-interpretation
241
+ :path: interpretation
242
+ - :type: CodeableConcept
243
+ :strength: example
244
+ :system: http://hl7.org/fhir/ValueSet/body-site
245
+ :path: bodySite
246
+ - :type: CodeableConcept
247
+ :strength: example
248
+ :system: http://hl7.org/fhir/ValueSet/observation-methods
249
+ :path: method
250
+ - :type: CodeableConcept
251
+ :strength: preferred
252
+ :system: http://hl7.org/fhir/ValueSet/referencerange-meaning
253
+ :path: referenceRange.type
254
+ - :type: CodeableConcept
255
+ :strength: example
256
+ :system: http://hl7.org/fhir/ValueSet/referencerange-appliesto
257
+ :path: referenceRange.appliesTo
258
+ - :type: CodeableConcept
259
+ :strength: extensible
260
+ :system: http://hl7.org/fhir/ValueSet/observation-vitalsignresult
261
+ :path: component.code
262
+ - :type: CodeableConcept
263
+ :strength: extensible
264
+ :system: http://hl7.org/fhir/ValueSet/data-absent-reason
265
+ :path: component.dataAbsentReason
266
+ - :type: CodeableConcept
267
+ :strength: extensible
268
+ :system: http://hl7.org/fhir/ValueSet/observation-interpretation
269
+ :path: component.interpretation
270
+ - :type: CodeableConcept
271
+ :strength: extensible
272
+ :system: http://hl7.org/fhir/ValueSet/observation-vitalsignresult
273
+ :path: component.code
274
+ - :type: code
275
+ :strength: required
276
+ :system: http://hl7.org/fhir/ValueSet/quantity-comparator
277
+ :path: component.value.comparator
278
+ - :type: CodeableConcept
279
+ :strength: extensible
280
+ :system: http://hl7.org/fhir/ValueSet/data-absent-reason
281
+ :path: component.dataAbsentReason
282
+ - :type: CodeableConcept
283
+ :strength: extensible
284
+ :system: http://hl7.org/fhir/ValueSet/observation-interpretation
285
+ :path: component.interpretation
286
+ - :type: CodeableConcept
287
+ :strength: extensible
288
+ :system: http://hl7.org/fhir/ValueSet/observation-vitalsignresult
289
+ :path: component.code
290
+ - :type: code
291
+ :strength: required
292
+ :system: http://hl7.org/fhir/ValueSet/quantity-comparator
293
+ :path: component.value.comparator
294
+ - :type: CodeableConcept
295
+ :strength: extensible
296
+ :system: http://hl7.org/fhir/ValueSet/data-absent-reason
297
+ :path: component.dataAbsentReason
298
+ - :type: CodeableConcept
299
+ :strength: extensible
300
+ :system: http://hl7.org/fhir/ValueSet/observation-interpretation
301
+ :path: component.interpretation
302
+ :references:
303
+ - :path: Observation.basedOn
304
+ :profiles:
305
+ - http://hl7.org/fhir/StructureDefinition/CarePlan
306
+ - http://hl7.org/fhir/StructureDefinition/DeviceRequest
307
+ - http://hl7.org/fhir/StructureDefinition/ImmunizationRecommendation
308
+ - http://hl7.org/fhir/StructureDefinition/MedicationRequest
309
+ - http://hl7.org/fhir/StructureDefinition/NutritionOrder
310
+ - http://hl7.org/fhir/StructureDefinition/ServiceRequest
311
+ - :path: Observation.partOf
312
+ :profiles:
313
+ - http://hl7.org/fhir/StructureDefinition/MedicationAdministration
314
+ - http://hl7.org/fhir/StructureDefinition/MedicationDispense
315
+ - http://hl7.org/fhir/StructureDefinition/MedicationStatement
316
+ - http://hl7.org/fhir/StructureDefinition/Procedure
317
+ - http://hl7.org/fhir/StructureDefinition/Immunization
318
+ - http://hl7.org/fhir/StructureDefinition/ImagingStudy
319
+ - :path: Observation.subject
320
+ :profiles:
321
+ - http://hl7.org/fhir/StructureDefinition/Patient
322
+ - :path: Observation.focus
323
+ :profiles:
324
+ - http://hl7.org/fhir/StructureDefinition/Resource
325
+ - :path: Observation.encounter
326
+ :profiles:
327
+ - http://hl7.org/fhir/StructureDefinition/Encounter
328
+ - :path: Observation.performer
329
+ :profiles:
330
+ - http://hl7.org/fhir/StructureDefinition/Practitioner
331
+ - http://hl7.org/fhir/StructureDefinition/PractitionerRole
332
+ - http://hl7.org/fhir/StructureDefinition/Organization
333
+ - http://hl7.org/fhir/StructureDefinition/CareTeam
334
+ - http://hl7.org/fhir/StructureDefinition/Patient
335
+ - http://hl7.org/fhir/StructureDefinition/RelatedPerson
336
+ - :path: Observation.specimen
337
+ :profiles:
338
+ - http://hl7.org/fhir/StructureDefinition/Specimen
339
+ - :path: Observation.device
340
+ :profiles:
341
+ - http://hl7.org/fhir/StructureDefinition/Device
342
+ - http://hl7.org/fhir/StructureDefinition/DeviceMetric
343
+ - :path: Observation.hasMember
344
+ :profiles:
345
+ - http://hl7.org/fhir/StructureDefinition/QuestionnaireResponse
346
+ - http://hl7.org/fhir/StructureDefinition/MolecularSequence
347
+ - http://hl7.org/fhir/StructureDefinition/vitalsigns
348
+ - :path: Observation.derivedFrom
349
+ :profiles:
350
+ - http://hl7.org/fhir/StructureDefinition/DocumentReference
351
+ - http://hl7.org/fhir/StructureDefinition/ImagingStudy
352
+ - http://hl7.org/fhir/StructureDefinition/Media
353
+ - http://hl7.org/fhir/StructureDefinition/QuestionnaireResponse
354
+ - http://hl7.org/fhir/StructureDefinition/MolecularSequence
355
+ - http://hl7.org/fhir/StructureDefinition/vitalsigns
356
+ :tests:
357
+ - :id: ipa_010_bp_patient_code_search_test
358
+ :file_name: bp_patient_code_search_test.rb
359
+ - :id: ipa_010_bp_patient_category_date_search_test
360
+ :file_name: bp_patient_category_date_search_test.rb
361
+ - :id: ipa_010_bp_patient_category_status_search_test
362
+ :file_name: bp_patient_category_status_search_test.rb
363
+ - :id: ipa_010_bp_patient_code_date_search_test
364
+ :file_name: bp_patient_code_date_search_test.rb
365
+ - :id: ipa_010_bp_patient_category_search_test
366
+ :file_name: bp_patient_category_search_test.rb
367
+ - :id: ipa_010_bp_read_test
368
+ :file_name: bp_read_test.rb
369
+ - :id: ipa_010_bp_provenance_revinclude_search_test
370
+ :file_name: bp_provenance_revinclude_search_test.rb
371
+ - :id: ipa_010_bp_validation_test
372
+ :file_name: bp_validation_test.rb
373
+ - :id: ipa_010_bp_must_support_test
374
+ :file_name: bp_must_support_test.rb
375
+ - :id: ipa_010_bp_reference_resolution_test
376
+ :file_name: bp_reference_resolution_test.rb
377
+ :id: ipa_010_bp
378
+ :file_name: bp_group.rb
379
+ :delayed_references: []
@@ -0,0 +1,93 @@
1
+ require_relative 'bp/bp_patient_code_search_test'
2
+ require_relative 'bp/bp_patient_category_date_search_test'
3
+ require_relative 'bp/bp_patient_category_status_search_test'
4
+ require_relative 'bp/bp_patient_code_date_search_test'
5
+ require_relative 'bp/bp_patient_category_search_test'
6
+ require_relative 'bp/bp_read_test'
7
+ require_relative 'bp/bp_provenance_revinclude_search_test'
8
+ require_relative 'bp/bp_validation_test'
9
+ require_relative 'bp/bp_must_support_test'
10
+ require_relative 'bp/bp_reference_resolution_test'
11
+
12
+ module IpaTestKit
13
+ class BpGroup < Inferno::TestGroup
14
+ title 'Observation Blood Pressure Tests'
15
+ short_description 'Verify support for the server capabilities required by the Observation Blood Pressure Profile.'
16
+ description %(
17
+ # Background
18
+
19
+ The IPA Observation Blood Pressure 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 Blood Pressure 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 Blood Pressure Profile](http://hl7.org/fhir/StructureDefinition/bp). 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_bp
76
+ run_as_group
77
+
78
+ def self.metadata
79
+ @metadata ||= Generator::GroupMetadata.new(YAML.load_file(File.join(__dir__, 'bp', 'metadata.yml')))
80
+ end
81
+
82
+ test from: :ipa_010_bp_patient_code_search_test
83
+ test from: :ipa_010_bp_patient_category_date_search_test
84
+ test from: :ipa_010_bp_patient_category_status_search_test
85
+ test from: :ipa_010_bp_patient_code_date_search_test
86
+ test from: :ipa_010_bp_patient_category_search_test
87
+ test from: :ipa_010_bp_read_test
88
+ test from: :ipa_010_bp_provenance_revinclude_search_test
89
+ test from: :ipa_010_bp_validation_test
90
+ test from: :ipa_010_bp_must_support_test
91
+ test from: :ipa_010_bp_reference_resolution_test
92
+ end
93
+ end