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 HeadCircumferencePatientCodeSearchTest < 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_head_circumference_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[:head_circumference_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 HeadCircumferenceProvenanceRevincludeSearchTest < 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_head_circumference_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[:head_circumference_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 HeadCircumferenceReadTest < 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_head_circumference_read_test
11
+
12
+ def resource_type
13
+ 'Observation'
14
+ end
15
+
16
+ def scratch_resources
17
+ scratch[:head_circumference_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 HeadCircumferenceReferenceResolutionTest < 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_head_circumference_reference_resolution_test
15
+
16
+ def resource_type
17
+ 'Observation'
18
+ end
19
+
20
+ def scratch_resources
21
+ scratch[:head_circumference_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 HeadCircumferenceValidationTest < Inferno::Test
5
+ include IpaTestKit::ValidationTest
6
+
7
+ id :ipa_010_head_circumference_validation_test
8
+ title 'Observation resources returned during previous tests conform to the Observation Head Circumference Profile'
9
+ description %(
10
+ This test verifies resources returned from the first search conform to
11
+ the [Observation Head Circumference Profile](http://hl7.org/fhir/StructureDefinition/headcircum).
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[:head_circumference_resources] ||= {}
28
+ end
29
+
30
+ run do
31
+ perform_validation_test(scratch_resources[:all] || [], 'http://hl7.org/fhir/StructureDefinition/headcircum')
32
+ end
33
+ end
34
+ end
@@ -0,0 +1,324 @@
1
+ ---
2
+ :name: headcircum
3
+ :class_name: HeadCircumferenceSequence
4
+ :version: v0.1.0
5
+ :reformatted_version: v010
6
+ :resource: Observation
7
+ :profile_url: http://hl7.org/fhir/StructureDefinition/headcircum
8
+ :profile_name: Observation Head Circumference Profile
9
+ :title: Observation Head Circumference
10
+ :short_description: Verify support for the server capabilities required by the Observation Head Circumference Profile.
11
+ :interactions:
12
+ - :code: create
13
+ :expectation: MAY
14
+ - :code: search-type
15
+ :expectation: SHALL
16
+ - :code: read
17
+ :expectation: SHALL
18
+ - :code: vread
19
+ :expectation: SHOULD
20
+ - :code: update
21
+ :expectation: MAY
22
+ - :code: patch
23
+ :expectation: MAY
24
+ - :code: delete
25
+ :expectation: MAY
26
+ - :code: history-instance
27
+ :expectation: SHOULD
28
+ - :code: history-type
29
+ :expectation: MAY
30
+ :operations: []
31
+ :searches:
32
+ - :expectation: SHALL
33
+ :names:
34
+ - patient
35
+ - code
36
+ :names_not_must_support_or_mandatory: []
37
+ :must_support_or_mandatory: true
38
+ - :expectation: SHALL
39
+ :names:
40
+ - patient
41
+ - category
42
+ - date
43
+ :names_not_must_support_or_mandatory: []
44
+ :must_support_or_mandatory: true
45
+ - :expectation: SHOULD
46
+ :names:
47
+ - patient
48
+ - category
49
+ - status
50
+ :names_not_must_support_or_mandatory: []
51
+ :must_support_or_mandatory: true
52
+ - :expectation: SHOULD
53
+ :names:
54
+ - patient
55
+ - code
56
+ - date
57
+ :names_not_must_support_or_mandatory: []
58
+ :must_support_or_mandatory: true
59
+ - :expectation: SHALL
60
+ :names:
61
+ - patient
62
+ - category
63
+ :names_not_must_support_or_mandatory: []
64
+ :must_support_or_mandatory: true
65
+ :search_definitions:
66
+ :patient:
67
+ :path: subject
68
+ :full_path: Observation.subject
69
+ :comparators: {}
70
+ :values: []
71
+ :type: Reference
72
+ :contains_multiple: false
73
+ :multiple_or: MAY
74
+ :category:
75
+ :path: category
76
+ :full_path: Observation.category
77
+ :comparators: {}
78
+ :values:
79
+ - vital-signs
80
+ :type: CodeableConcept
81
+ :contains_multiple: true
82
+ :multiple_or: MAY
83
+ :date:
84
+ :path: effective
85
+ :full_path: Observation.effective
86
+ :comparators:
87
+ :eq: MAY
88
+ :ne: MAY
89
+ :gt: SHALL
90
+ :ge: SHALL
91
+ :lt: SHALL
92
+ :le: SHALL
93
+ :sa: MAY
94
+ :eb: MAY
95
+ :ap: MAY
96
+ :values: []
97
+ :type: date
98
+ :contains_multiple: false
99
+ :multiple_or: MAY
100
+ :status:
101
+ :path: status
102
+ :full_path: Observation.status
103
+ :comparators: {}
104
+ :values:
105
+ - registered
106
+ - preliminary
107
+ - final
108
+ - amended
109
+ - corrected
110
+ - cancelled
111
+ - entered-in-error
112
+ - unknown
113
+ :type: code
114
+ :contains_multiple: false
115
+ :multiple_or: SHALL
116
+ :code:
117
+ :path: code
118
+ :full_path: Observation.code
119
+ :comparators: {}
120
+ :values:
121
+ - 9843-4
122
+ :type: CodeableConcept
123
+ :contains_multiple: false
124
+ :multiple_or: SHOULD
125
+ :include_params: []
126
+ :revincludes:
127
+ - Provenance:target
128
+ :required_concepts:
129
+ :must_supports:
130
+ :extensions: []
131
+ :slices:
132
+ - :name: Observation.value[x]:valueQuantity
133
+ :path: value[x]
134
+ :discriminator:
135
+ :type: type
136
+ :code: Quantity
137
+ - :name: Observation.category:VSCat
138
+ :path: category
139
+ :discriminator:
140
+ :type: value
141
+ :values:
142
+ - :path: coding.code
143
+ :value: vital-signs
144
+ - :path: coding.system
145
+ :value: http://terminology.hl7.org/CodeSystem/observation-category
146
+ :elements:
147
+ - :path: status
148
+ - :path: category
149
+ - :path: category.coding
150
+ - :path: category.coding.system
151
+ :fixed_value: http://terminology.hl7.org/CodeSystem/observation-category
152
+ - :path: category.coding.code
153
+ :fixed_value: vital-signs
154
+ - :path: code.coding.code
155
+ :fixed_value: 9843-4
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
+ :mandatory_elements:
165
+ - Observation.status
166
+ - Observation.category
167
+ - Observation.category
168
+ - Observation.category.coding
169
+ - Observation.category.coding.system
170
+ - Observation.category.coding.code
171
+ - Observation.code
172
+ - Observation.code.coding
173
+ - Observation.code.coding.system
174
+ - Observation.code.coding.code
175
+ - Observation.subject
176
+ - Observation.effective[x]
177
+ - Observation.value[x].value
178
+ - Observation.value[x].unit
179
+ - Observation.value[x].system
180
+ - Observation.value[x].code
181
+ - Observation.component.code
182
+ :bindings:
183
+ - :type: code
184
+ :strength: preferred
185
+ :system: http://hl7.org/fhir/ValueSet/languages
186
+ :path: language
187
+ - :type: code
188
+ :strength: required
189
+ :system: http://hl7.org/fhir/ValueSet/observation-status
190
+ :path: status
191
+ - :type: CodeableConcept
192
+ :strength: preferred
193
+ :system: http://hl7.org/fhir/ValueSet/observation-category
194
+ :path: category
195
+ - :type: CodeableConcept
196
+ :strength: preferred
197
+ :system: http://hl7.org/fhir/ValueSet/observation-category
198
+ :path: category
199
+ - :type: CodeableConcept
200
+ :strength: extensible
201
+ :system: http://hl7.org/fhir/ValueSet/observation-vitalsignresult
202
+ :path: code
203
+ - :type: code
204
+ :strength: required
205
+ :system: http://hl7.org/fhir/ValueSet/quantity-comparator
206
+ :path: value.comparator
207
+ - :type: CodeableConcept
208
+ :strength: extensible
209
+ :system: http://hl7.org/fhir/ValueSet/data-absent-reason
210
+ :path: dataAbsentReason
211
+ - :type: CodeableConcept
212
+ :strength: extensible
213
+ :system: http://hl7.org/fhir/ValueSet/observation-interpretation
214
+ :path: interpretation
215
+ - :type: CodeableConcept
216
+ :strength: example
217
+ :system: http://hl7.org/fhir/ValueSet/body-site
218
+ :path: bodySite
219
+ - :type: CodeableConcept
220
+ :strength: example
221
+ :system: http://hl7.org/fhir/ValueSet/observation-methods
222
+ :path: method
223
+ - :type: CodeableConcept
224
+ :strength: preferred
225
+ :system: http://hl7.org/fhir/ValueSet/referencerange-meaning
226
+ :path: referenceRange.type
227
+ - :type: CodeableConcept
228
+ :strength: example
229
+ :system: http://hl7.org/fhir/ValueSet/referencerange-appliesto
230
+ :path: referenceRange.appliesTo
231
+ - :type: CodeableConcept
232
+ :strength: extensible
233
+ :system: http://hl7.org/fhir/ValueSet/observation-vitalsignresult
234
+ :path: component.code
235
+ - :type: Quantity
236
+ :strength: required
237
+ :system: http://hl7.org/fhir/ValueSet/ucum-vitals-common
238
+ :path: component.value
239
+ - :type: CodeableConcept
240
+ :strength: extensible
241
+ :system: http://hl7.org/fhir/ValueSet/data-absent-reason
242
+ :path: component.dataAbsentReason
243
+ - :type: CodeableConcept
244
+ :strength: extensible
245
+ :system: http://hl7.org/fhir/ValueSet/observation-interpretation
246
+ :path: component.interpretation
247
+ :references:
248
+ - :path: Observation.basedOn
249
+ :profiles:
250
+ - http://hl7.org/fhir/StructureDefinition/CarePlan
251
+ - http://hl7.org/fhir/StructureDefinition/DeviceRequest
252
+ - http://hl7.org/fhir/StructureDefinition/ImmunizationRecommendation
253
+ - http://hl7.org/fhir/StructureDefinition/MedicationRequest
254
+ - http://hl7.org/fhir/StructureDefinition/NutritionOrder
255
+ - http://hl7.org/fhir/StructureDefinition/ServiceRequest
256
+ - :path: Observation.partOf
257
+ :profiles:
258
+ - http://hl7.org/fhir/StructureDefinition/MedicationAdministration
259
+ - http://hl7.org/fhir/StructureDefinition/MedicationDispense
260
+ - http://hl7.org/fhir/StructureDefinition/MedicationStatement
261
+ - http://hl7.org/fhir/StructureDefinition/Procedure
262
+ - http://hl7.org/fhir/StructureDefinition/Immunization
263
+ - http://hl7.org/fhir/StructureDefinition/ImagingStudy
264
+ - :path: Observation.subject
265
+ :profiles:
266
+ - ttp://hl7.org/fhir/StructureDefinition/Patient
267
+ - :path: Observation.focus
268
+ :profiles:
269
+ - http://hl7.org/fhir/StructureDefinition/Resource
270
+ - :path: Observation.encounter
271
+ :profiles:
272
+ - http://hl7.org/fhir/StructureDefinition/Encounter
273
+ - :path: Observation.performer
274
+ :profiles:
275
+ - http://hl7.org/fhir/StructureDefinition/Practitioner
276
+ - http://hl7.org/fhir/StructureDefinition/PractitionerRole
277
+ - http://hl7.org/fhir/StructureDefinition/Organization
278
+ - http://hl7.org/fhir/StructureDefinition/CareTeam
279
+ - http://hl7.org/fhir/StructureDefinition/Patient
280
+ - http://hl7.org/fhir/StructureDefinition/RelatedPerson
281
+ - :path: Observation.specimen
282
+ :profiles:
283
+ - http://hl7.org/fhir/StructureDefinition/Specimen
284
+ - :path: Observation.device
285
+ :profiles:
286
+ - http://hl7.org/fhir/StructureDefinition/Device
287
+ - http://hl7.org/fhir/StructureDefinition/DeviceMetric
288
+ - :path: Observation.hasMember
289
+ :profiles:
290
+ - http://hl7.org/fhir/StructureDefinition/QuestionnaireResponse
291
+ - http://hl7.org/fhir/StructureDefinition/MolecularSequence
292
+ - http://hl7.org/fhir/StructureDefinition/vitalsigns
293
+ - :path: Observation.derivedFrom
294
+ :profiles:
295
+ - http://hl7.org/fhir/StructureDefinition/DocumentReference
296
+ - http://hl7.org/fhir/StructureDefinition/ImagingStudy
297
+ - http://hl7.org/fhir/StructureDefinition/Media
298
+ - http://hl7.org/fhir/StructureDefinition/QuestionnaireResponse
299
+ - http://hl7.org/fhir/StructureDefinition/MolecularSequence
300
+ - http://hl7.org/fhir/StructureDefinition/vitalsigns
301
+ :tests:
302
+ - :id: ipa_010_head_circumference_patient_code_search_test
303
+ :file_name: head_circumference_patient_code_search_test.rb
304
+ - :id: ipa_010_head_circumference_patient_category_date_search_test
305
+ :file_name: head_circumference_patient_category_date_search_test.rb
306
+ - :id: ipa_010_head_circumference_patient_category_status_search_test
307
+ :file_name: head_circumference_patient_category_status_search_test.rb
308
+ - :id: ipa_010_head_circumference_patient_code_date_search_test
309
+ :file_name: head_circumference_patient_code_date_search_test.rb
310
+ - :id: ipa_010_head_circumference_patient_category_search_test
311
+ :file_name: head_circumference_patient_category_search_test.rb
312
+ - :id: ipa_010_head_circumference_read_test
313
+ :file_name: head_circumference_read_test.rb
314
+ - :id: ipa_010_head_circumference_provenance_revinclude_search_test
315
+ :file_name: head_circumference_provenance_revinclude_search_test.rb
316
+ - :id: ipa_010_head_circumference_validation_test
317
+ :file_name: head_circumference_validation_test.rb
318
+ - :id: ipa_010_head_circumference_must_support_test
319
+ :file_name: head_circumference_must_support_test.rb
320
+ - :id: ipa_010_head_circumference_reference_resolution_test
321
+ :file_name: head_circumference_reference_resolution_test.rb
322
+ :id: ipa_010_head_circumference
323
+ :file_name: head_circumference_group.rb
324
+ :delayed_references: []
@@ -0,0 +1,93 @@
1
+ require_relative 'head_circumference/head_circumference_patient_code_search_test'
2
+ require_relative 'head_circumference/head_circumference_patient_category_date_search_test'
3
+ require_relative 'head_circumference/head_circumference_patient_category_status_search_test'
4
+ require_relative 'head_circumference/head_circumference_patient_code_date_search_test'
5
+ require_relative 'head_circumference/head_circumference_patient_category_search_test'
6
+ require_relative 'head_circumference/head_circumference_read_test'
7
+ require_relative 'head_circumference/head_circumference_provenance_revinclude_search_test'
8
+ require_relative 'head_circumference/head_circumference_validation_test'
9
+ require_relative 'head_circumference/head_circumference_must_support_test'
10
+ require_relative 'head_circumference/head_circumference_reference_resolution_test'
11
+
12
+ module IpaTestKit
13
+ class HeadCircumferenceGroup < Inferno::TestGroup
14
+ title 'Observation Head Circumference Tests'
15
+ short_description 'Verify support for the server capabilities required by the Observation Head Circumference Profile.'
16
+ description %(
17
+ # Background
18
+
19
+ The Observation Head Circumference sequence verifies that the system under test is
20
+ able to provide correct responses for Observation queries for head circumference data. These queries
21
+ must contain resources conforming to the Observation Head Circumference Profile as
22
+ specified in the FHIR Observation resource and 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 Head Circumference Profile](http://hl7.org/fhir/headcircum.html). 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_head_circumference
76
+ run_as_group
77
+
78
+ def self.metadata
79
+ @metadata ||= Generator::GroupMetadata.new(YAML.load_file(File.join(__dir__, 'head_circumference', 'metadata.yml')))
80
+ end
81
+
82
+ test from: :ipa_010_head_circumference_patient_code_search_test
83
+ test from: :ipa_010_head_circumference_patient_category_date_search_test
84
+ test from: :ipa_010_head_circumference_patient_category_status_search_test
85
+ test from: :ipa_010_head_circumference_patient_code_date_search_test
86
+ test from: :ipa_010_head_circumference_patient_category_search_test
87
+ test from: :ipa_010_head_circumference_read_test
88
+ test from: :ipa_010_head_circumference_provenance_revinclude_search_test
89
+ test from: :ipa_010_head_circumference_validation_test
90
+ test from: :ipa_010_head_circumference_must_support_test
91
+ test from: :ipa_010_head_circumference_reference_resolution_test
92
+ end
93
+ end
@@ -0,0 +1,49 @@
1
+ require_relative '../../must_support_test'
2
+
3
+ module IpaTestKit
4
+ class HeartrateMustSupportTest < Inferno::Test
5
+ include IpaTestKit::MustSupportTest
6
+
7
+ title 'All must support elements are provided in the Observation 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 Observation resources
12
+ found previously for the following must support elements:
13
+
14
+ * Observation.category
15
+ * Observation.category.coding
16
+ * Observation.category.coding.code
17
+ * Observation.category.coding.system
18
+ * Observation.category:VSCat
19
+ * Observation.code
20
+ * Observation.effective[x]
21
+ * Observation.status
22
+ * Observation.subject
23
+ * Observation.value[x]
24
+ * Observation.value[x].code
25
+ * Observation.value[x].system
26
+ * Observation.value[x].unit
27
+ * Observation.value[x].value
28
+ * Observation.value[x]:valueQuantity
29
+ )
30
+
31
+ id :ipa_010_heartrate_must_support_test
32
+
33
+ def resource_type
34
+ 'Observation'
35
+ end
36
+
37
+ def self.metadata
38
+ @metadata ||= Generator::GroupMetadata.new(YAML.load_file(File.join(__dir__, 'metadata.yml')))
39
+ end
40
+
41
+ def scratch_resources
42
+ scratch[:heartrate_resources] ||= {}
43
+ end
44
+
45
+ run do
46
+ perform_must_support_test(all_scratch_resources)
47
+ end
48
+ end
49
+ end