plan_executor 1.0.2

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 (337) hide show
  1. checksums.yaml +7 -0
  2. data/.gitignore +44 -0
  3. data/.simplecov +16 -0
  4. data/.travis.yml +13 -0
  5. data/Gemfile +26 -0
  6. data/Gemfile.lock +197 -0
  7. data/LICENSE +201 -0
  8. data/README.md +126 -0
  9. data/Rakefile +25 -0
  10. data/fixtures/daf/conformance-daf-query-responder.xml +1471 -0
  11. data/fixtures/diagnostic_order/do-100.xml +64 -0
  12. data/fixtures/diagnostic_order/do-200.xml +121 -0
  13. data/fixtures/diagnostic_order/do-300.xml +91 -0
  14. data/fixtures/diagnostic_order/do-400.xml +88 -0
  15. data/fixtures/diagnostic_report/dr-100.xml +96 -0
  16. data/fixtures/diagnostic_report/dr-200.xml +125 -0
  17. data/fixtures/diagnostic_report/dr-300.xml +132 -0
  18. data/fixtures/diagnostic_report/dr-400.xml +121 -0
  19. data/fixtures/financial/claim-example-average.xml +168 -0
  20. data/fixtures/financial/claim-example-simple.xml +67 -0
  21. data/fixtures/observation/obs-100.xml +58 -0
  22. data/fixtures/observation/obs-101.xml +58 -0
  23. data/fixtures/observation/obs-200.xml +125 -0
  24. data/fixtures/observation/obs-300.xml +106 -0
  25. data/fixtures/observation/obs-301.xml +106 -0
  26. data/fixtures/observation/obs-302.xml +106 -0
  27. data/fixtures/observation/obs-303.xml +106 -0
  28. data/fixtures/observation/obs-304.xml +106 -0
  29. data/fixtures/observation/obs-400.xml +87 -0
  30. data/fixtures/observation/obs-401.xml +95 -0
  31. data/fixtures/observation/obs-402.xml +95 -0
  32. data/fixtures/observation/obs-403.xml +84 -0
  33. data/fixtures/observation/obs-404.xml +84 -0
  34. data/fixtures/observation/obs-405.xml +83 -0
  35. data/fixtures/observation/obs-406.xml +83 -0
  36. data/fixtures/observation/obs-407.xml +70 -0
  37. data/fixtures/observation/obs-408.xml +84 -0
  38. data/fixtures/observation/obs-uslab-example5.xml +102 -0
  39. data/fixtures/order/order-100.xml +61 -0
  40. data/fixtures/order/order-200.xml +61 -0
  41. data/fixtures/order/order-300.xml +61 -0
  42. data/fixtures/order/order-400.xml +61 -0
  43. data/fixtures/order_response/ordresp-100.xml +79 -0
  44. data/fixtures/order_response/ordresp-110.xml +79 -0
  45. data/fixtures/order_response/ordresp-200.xml +79 -0
  46. data/fixtures/order_response/ordresp-210.xml +79 -0
  47. data/fixtures/order_response/ordresp-300.xml +79 -0
  48. data/fixtures/order_response/ordresp-310.xml +79 -0
  49. data/fixtures/order_response/ordresp-400.xml +79 -0
  50. data/fixtures/order_response/ordresp-410.xml +79 -0
  51. data/fixtures/organization/org-uslab-example3.xml +49 -0
  52. data/fixtures/patient/patient-example-updated.xml +140 -0
  53. data/fixtures/patient/patient-example-us-extensions(us01).xml +81 -0
  54. data/fixtures/patient/patient-example.xml +132 -0
  55. data/fixtures/patient/patient-format-example.xml +101 -0
  56. data/fixtures/patient/patient-minimal.xml +9 -0
  57. data/fixtures/patient/patient-uslab-example1.xml +44 -0
  58. data/fixtures/practitioner/pract-uslab-example1.xml +18 -0
  59. data/fixtures/practitioner/pract-uslab-example3.xml +36 -0
  60. data/fixtures/record/condition-example-f201-fever.xml +63 -0
  61. data/fixtures/record/condition-example-f205-infection.xml +20 -0
  62. data/fixtures/record/diagnosticreport-example-f201-brainct.xml +18 -0
  63. data/fixtures/record/encounter-example-f201-20130404.xml +17 -0
  64. data/fixtures/record/encounter-example-f202-20130128.xml +17 -0
  65. data/fixtures/record/observation-example-f202-temperature.xml +60 -0
  66. data/fixtures/record/organization-example-f201-aumc.xml +5 -0
  67. data/fixtures/record/organization-example-f203-bumc.xml +5 -0
  68. data/fixtures/record/patient-example-f201-roel.xml +16 -0
  69. data/fixtures/record/practitioner-example-f201-ab.xml +14 -0
  70. data/fixtures/record/procedure-example-f201-tpf.xml +23 -0
  71. data/fixtures/scheduling/appointment-simple.xml +24 -0
  72. data/fixtures/scheduling/appointmentresponse-patient-simple.xml +12 -0
  73. data/fixtures/scheduling/appointmentresponse-practitioner-simple.xml +12 -0
  74. data/fixtures/scheduling/practitioner-simple.xml +10 -0
  75. data/fixtures/scheduling/schedule-simple.xml +12 -0
  76. data/fixtures/scheduling/slot-simple.xml +10 -0
  77. data/fixtures/specimen/spec-100.xml +65 -0
  78. data/fixtures/specimen/spec-400.xml +70 -0
  79. data/fixtures/specimen/spec-uslab-example1.xml +82 -0
  80. data/fixtures/validation/observation.profile.xml +2045 -0
  81. data/fixtures/validation/observations/observation-example(example).xml +50 -0
  82. data/lib/FHIR_structure.json +529 -0
  83. data/lib/daf_resource_generator.rb +94 -0
  84. data/lib/data/fhir_structure.rb +8 -0
  85. data/lib/data/resources.rb +138 -0
  86. data/lib/executor.rb +56 -0
  87. data/lib/ext/client.rb +27 -0
  88. data/lib/ext/client_reply.rb +19 -0
  89. data/lib/plan_executor.rb +31 -0
  90. data/lib/resource_generator.rb +656 -0
  91. data/lib/tasks/tasks.rake +329 -0
  92. data/lib/tasks/templates/summary.html.erb +163 -0
  93. data/lib/test_result.rb +69 -0
  94. data/lib/tests/assertions.rb +261 -0
  95. data/lib/tests/base_test.rb +117 -0
  96. data/lib/tests/suites/argonaut_resprint_1_test.rb +260 -0
  97. data/lib/tests/suites/argonaut_resprint_2_test.rb +369 -0
  98. data/lib/tests/suites/argonaut_resprint_3_test.rb +309 -0
  99. data/lib/tests/suites/argonaut_sprint_1_test.rb +187 -0
  100. data/lib/tests/suites/argonaut_sprint_2_test.rb +115 -0
  101. data/lib/tests/suites/argonaut_sprint_3_test.rb +208 -0
  102. data/lib/tests/suites/argonaut_sprint_4_test.rb +335 -0
  103. data/lib/tests/suites/argonaut_sprint_5_test.rb +196 -0
  104. data/lib/tests/suites/argonaut_sprint_6_test.rb +243 -0
  105. data/lib/tests/suites/argonaut_sprint_7_test.rb +161 -0
  106. data/lib/tests/suites/base_suite.rb +116 -0
  107. data/lib/tests/suites/connectathon_audit_track.rb +354 -0
  108. data/lib/tests/suites/connectathon_fetch_patient_record.rb +443 -0
  109. data/lib/tests/suites/connectathon_financial_track.rb +380 -0
  110. data/lib/tests/suites/connectathon_lab_order_track.rb +239 -0
  111. data/lib/tests/suites/connectathon_patient_track.rb +364 -0
  112. data/lib/tests/suites/connectathon_profile_validation.rb +101 -0
  113. data/lib/tests/suites/connectathon_scheduling_track.rb +266 -0
  114. data/lib/tests/suites/connectathon_terminology_track.rb +242 -0
  115. data/lib/tests/suites/daf_profiles_test.rb +431 -0
  116. data/lib/tests/suites/format_test.rb +453 -0
  117. data/lib/tests/suites/history_test.rb +311 -0
  118. data/lib/tests/suites/read_test.rb +104 -0
  119. data/lib/tests/suites/resource_test.rb +553 -0
  120. data/lib/tests/suites/search_test.rb +219 -0
  121. data/lib/tests/suites/search_test_robust.rb +172 -0
  122. data/lib/tests/suites/sprinkler_search_test.rb +660 -0
  123. data/lib/tests/suites/suite_engine.rb +114 -0
  124. data/lib/tests/suites/transaction_test.rb +571 -0
  125. data/lib/tests/testscripts/base_testscript.rb +480 -0
  126. data/lib/tests/testscripts/testscript_engine.rb +81 -0
  127. data/lib/tests/testscripts/xml/Connectathon11/Track1-Patient/Client Assigned Id/track1-patient-base-client-id-json.xml +348 -0
  128. data/lib/tests/testscripts/xml/Connectathon11/Track1-Patient/Client Assigned Id/track1-patient-base-client-id-xml.xml +348 -0
  129. data/lib/tests/testscripts/xml/Connectathon11/Track1-Patient/Client Assigned Id/track1-patient-bonus-client-id-json.xml +420 -0
  130. data/lib/tests/testscripts/xml/Connectathon11/Track1-Patient/Client Assigned Id/track1-patient-bonus-client-id-xml.xml +420 -0
  131. data/lib/tests/testscripts/xml/Connectathon11/Track1-Patient/README.html +68 -0
  132. data/lib/tests/testscripts/xml/Connectathon11/Track1-Patient/Server Assigned Id/track1-patient-base-server-id-json.xml +352 -0
  133. data/lib/tests/testscripts/xml/Connectathon11/Track1-Patient/Server Assigned Id/track1-patient-base-server-id-xml.xml +352 -0
  134. data/lib/tests/testscripts/xml/Connectathon11/Track1-Patient/Server Assigned Id/track1-patient-bonus-server-id-json.xml +421 -0
  135. data/lib/tests/testscripts/xml/Connectathon11/Track1-Patient/Server Assigned Id/track1-patient-bonus-server-id-xml.xml +421 -0
  136. data/lib/tests/testscripts/xml/Connectathon11/Track1-Patient/_reference/conformance/PatientConformance.xml +34 -0
  137. data/lib/tests/testscripts/xml/Connectathon11/Track1-Patient/_reference/resources/patient-create-PeterChalmers-min.json +45 -0
  138. data/lib/tests/testscripts/xml/Connectathon11/Track1-Patient/_reference/resources/patient-create-PeterChalmers-min.xml +26 -0
  139. data/lib/tests/testscripts/xml/Connectathon11/Track1-Patient/_reference/resources/patient-create-PeterChalmers.json +100 -0
  140. data/lib/tests/testscripts/xml/Connectathon11/Track1-Patient/_reference/resources/patient-create-PeterChalmers.xml +102 -0
  141. data/lib/tests/testscripts/xml/Connectathon11/Track1-Patient/_reference/resources/patient-create-bonus-PeterChalmers-min.json +53 -0
  142. data/lib/tests/testscripts/xml/Connectathon11/Track1-Patient/_reference/resources/patient-create-bonus-PeterChalmers-min.xml +30 -0
  143. data/lib/tests/testscripts/xml/Connectathon11/Track1-Patient/_reference/resources/patient-create-bonus-PeterChalmers.json +108 -0
  144. data/lib/tests/testscripts/xml/Connectathon11/Track1-Patient/_reference/resources/patient-create-bonus-PeterChalmers.xml +108 -0
  145. data/lib/tests/testscripts/xml/Connectathon11/Track1-Patient/_reference/resources/patient-update-PeterChalmers-min.json +45 -0
  146. data/lib/tests/testscripts/xml/Connectathon11/Track1-Patient/_reference/resources/patient-update-PeterChalmers-min.xml +26 -0
  147. data/lib/tests/testscripts/xml/Connectathon11/Track1-Patient/_reference/resources/patient-update-PeterChalmers.json +100 -0
  148. data/lib/tests/testscripts/xml/Connectathon11/Track1-Patient/_reference/resources/patient-update-PeterChalmers.xml +102 -0
  149. data/lib/tests/testscripts/xml/Connectathon11/Track1-Patient/_reference/resources/patient-update-bonus1-PeterChalmers-min.json +53 -0
  150. data/lib/tests/testscripts/xml/Connectathon11/Track1-Patient/_reference/resources/patient-update-bonus1-PeterChalmers-min.xml +30 -0
  151. data/lib/tests/testscripts/xml/Connectathon11/Track1-Patient/_reference/resources/patient-update-bonus1-PeterChalmers.json +108 -0
  152. data/lib/tests/testscripts/xml/Connectathon11/Track1-Patient/_reference/resources/patient-update-bonus1-PeterChalmers.xml +107 -0
  153. data/lib/tests/testscripts/xml/Connectathon11/Track1-Patient/_reference/resources/patient-update-bonus2-PeterChalmers-min.json +53 -0
  154. data/lib/tests/testscripts/xml/Connectathon11/Track1-Patient/_reference/resources/patient-update-bonus2-PeterChalmers-min.xml +31 -0
  155. data/lib/tests/testscripts/xml/Connectathon11/Track1-Patient/_reference/resources/patient-update-bonus2-PeterChalmers.json +108 -0
  156. data/lib/tests/testscripts/xml/Connectathon11/Track1-Patient/_reference/resources/patient-update-bonus2-PeterChalmers.xml +106 -0
  157. data/lib/tests/testscripts/xml/Connectathon11/Track11-SDC/_reference/C-CDA_R2-1_CCD-ussg.xml +3414 -0
  158. data/lib/tests/testscripts/xml/Connectathon11/Track11-SDC/_reference/resources/parameters-A1-empty-on-instance.xml +9 -0
  159. data/lib/tests/testscripts/xml/Connectathon11/Track11-SDC/_reference/resources/parameters-A2-empty-by-ref.xml +15 -0
  160. data/lib/tests/testscripts/xml/Connectathon11/Track11-SDC/_reference/resources/parameters-A3-empty-by-identifier.xml +13 -0
  161. data/lib/tests/testscripts/xml/Connectathon11/Track11-SDC/_reference/resources/parameters-A4-empty-by-contained.xml +15 -0
  162. data/lib/tests/testscripts/xml/Connectathon11/Track11-SDC/_reference/resources/parameters-B1-CCDA-on-instance.xml +15 -0
  163. data/lib/tests/testscripts/xml/Connectathon11/Track11-SDC/_reference/resources/parameters-B2-CCDA-by-ref.xml +21 -0
  164. data/lib/tests/testscripts/xml/Connectathon11/Track11-SDC/_reference/resources/parameters-B3-CCDA-by-identifier.xml +19 -0
  165. data/lib/tests/testscripts/xml/Connectathon11/Track11-SDC/_reference/resources/parameters-B4-CCDA-by-contained.xml +21 -0
  166. data/lib/tests/testscripts/xml/Connectathon11/Track11-SDC/_reference/resources/questionnaire-sdc-profile-example-ussg-fht.xml +3905 -0
  167. data/lib/tests/testscripts/xml/Connectathon11/Track11-SDC/_reference/resources/questionnaireresponse-expected-ussg-fht-CCDA.xml +190 -0
  168. data/lib/tests/testscripts/xml/Connectathon11/Track11-SDC/_reference/resources/questionnaireresponse-expected-ussg-fht-empty.xml +177 -0
  169. data/lib/tests/testscripts/xml/Connectathon11/Track11-SDC/track11-sdc-prepop-xml.xml +142 -0
  170. data/lib/tests/testscripts/xml/Connectathon11/Track2-Terminology/Expand/Client Assigned Id/track2-ts-suite1-expand-client-id.xml +925 -0
  171. data/lib/tests/testscripts/xml/Connectathon11/Track2-Terminology/Expand/Client Assigned Id/track2-ts-suite2-expand-filter-client-id.xml +930 -0
  172. data/lib/tests/testscripts/xml/Connectathon11/Track2-Terminology/Expand/Server Assigned Id/track2-ts-suite1-expand-server-id.xml +953 -0
  173. data/lib/tests/testscripts/xml/Connectathon11/Track2-Terminology/Expand/Server Assigned Id/track2-ts-suite2-expand-filter-server-id.xml +958 -0
  174. data/lib/tests/testscripts/xml/Connectathon11/Track2-Terminology/Lookup/track2-ts-suite5-loinc-lookup-xml.xml +224 -0
  175. data/lib/tests/testscripts/xml/Connectathon11/Track2-Terminology/Lookup/track2-ts-suite5-snomed-lookup-xml.xml +224 -0
  176. data/lib/tests/testscripts/xml/Connectathon11/Track2-Terminology/README.html +85 -0
  177. data/lib/tests/testscripts/xml/Connectathon11/Track2-Terminology/Translate/track2-ts-suite6-translate-xml.xml +224 -0
  178. data/lib/tests/testscripts/xml/Connectathon11/Track2-Terminology/Validate-code/Client Assigned Id/track2-ts-suite3-validate-code-client-id.xml +1807 -0
  179. data/lib/tests/testscripts/xml/Connectathon11/Track2-Terminology/Validate-code/Client Assigned Id/track2-ts-suite4-validate-code-client-id.xml +714 -0
  180. data/lib/tests/testscripts/xml/Connectathon11/Track2-Terminology/Validate-code/Server Assigned Id/track2-ts-suite3-validate-code-server-id.xml +1835 -0
  181. data/lib/tests/testscripts/xml/Connectathon11/Track2-Terminology/Validate-code/Server Assigned Id/track2-ts-suite4-validate-code-server-id.xml +742 -0
  182. data/lib/tests/testscripts/xml/Connectathon11/Track2-Terminology/_reference/conformance/ConceptMapSuite6Conformance.xml +11 -0
  183. data/lib/tests/testscripts/xml/Connectathon11/Track2-Terminology/_reference/conformance/ValueSetSuite1Conformance.xml +17 -0
  184. data/lib/tests/testscripts/xml/Connectathon11/Track2-Terminology/_reference/conformance/ValueSetSuite2Conformance.xml +17 -0
  185. data/lib/tests/testscripts/xml/Connectathon11/Track2-Terminology/_reference/conformance/ValueSetSuite3Conformance.xml +14 -0
  186. data/lib/tests/testscripts/xml/Connectathon11/Track2-Terminology/_reference/conformance/ValueSetSuite4Conformance.xml +14 -0
  187. data/lib/tests/testscripts/xml/Connectathon11/Track2-Terminology/_reference/conformance/ValueSetSuite5Conformance.xml +11 -0
  188. data/lib/tests/testscripts/xml/Connectathon11/Track2-Terminology/_reference/input/extensional-case-1-input-4-2-a.xml +11 -0
  189. data/lib/tests/testscripts/xml/Connectathon11/Track2-Terminology/_reference/input/extensional-case-1-input-4-2-b.xml +11 -0
  190. data/lib/tests/testscripts/xml/Connectathon11/Track2-Terminology/_reference/input/extensional-case-1-input-4-3-a.xml +13 -0
  191. data/lib/tests/testscripts/xml/Connectathon11/Track2-Terminology/_reference/input/extensional-case-1-input-4-3-b.xml +13 -0
  192. data/lib/tests/testscripts/xml/Connectathon11/Track2-Terminology/_reference/input/extensional-case-1-input-4-4-a.xml +15 -0
  193. data/lib/tests/testscripts/xml/Connectathon11/Track2-Terminology/_reference/input/extensional-case-1-input-4-4-b.xml +15 -0
  194. data/lib/tests/testscripts/xml/Connectathon11/Track2-Terminology/_reference/input/lookup-loinc-input-5-2.xml +10 -0
  195. data/lib/tests/testscripts/xml/Connectathon11/Track2-Terminology/_reference/input/lookup-loinc-input-5-3.xml +11 -0
  196. data/lib/tests/testscripts/xml/Connectathon11/Track2-Terminology/_reference/input/lookup-snomed-input-5-2.xml +10 -0
  197. data/lib/tests/testscripts/xml/Connectathon11/Track2-Terminology/_reference/input/lookup-snomed-input-5-3.xml +11 -0
  198. data/lib/tests/testscripts/xml/Connectathon11/Track2-Terminology/_reference/input/translate-conceptmap-input-6-2.xml +14 -0
  199. data/lib/tests/testscripts/xml/Connectathon11/Track2-Terminology/_reference/input/translate-conceptmap-input-6-3.xml +15 -0
  200. data/lib/tests/testscripts/xml/Connectathon11/Track2-Terminology/_reference/output/extensional-case-1-expand-min.xml +47 -0
  201. data/lib/tests/testscripts/xml/Connectathon11/Track2-Terminology/_reference/output/extensional-case-1-filter-min.xml +23 -0
  202. data/lib/tests/testscripts/xml/Connectathon11/Track2-Terminology/_reference/output/extensional-case-2-expand-min.xml +132 -0
  203. data/lib/tests/testscripts/xml/Connectathon11/Track2-Terminology/_reference/output/extensional-case-2-filter-min.xml +38 -0
  204. data/lib/tests/testscripts/xml/Connectathon11/Track2-Terminology/_reference/output/extensional-case-3-expand-min.xml +252 -0
  205. data/lib/tests/testscripts/xml/Connectathon11/Track2-Terminology/_reference/output/extensional-case-3-filter-min.xml +58 -0
  206. data/lib/tests/testscripts/xml/Connectathon11/Track2-Terminology/_reference/output/extensional-case-4-expand-min.xml +57 -0
  207. data/lib/tests/testscripts/xml/Connectathon11/Track2-Terminology/_reference/output/extensional-case-4-filter-min.xml +28 -0
  208. data/lib/tests/testscripts/xml/Connectathon11/Track2-Terminology/_reference/output/intensional-case-1-expand-min.xml +347 -0
  209. data/lib/tests/testscripts/xml/Connectathon11/Track2-Terminology/_reference/output/intensional-case-1-filter-min.xml +33 -0
  210. data/lib/tests/testscripts/xml/Connectathon11/Track2-Terminology/_reference/output/intensional-case-2-expand-min.xml +637 -0
  211. data/lib/tests/testscripts/xml/Connectathon11/Track2-Terminology/_reference/output/intensional-case-2-filter-min.xml +33 -0
  212. data/lib/tests/testscripts/xml/Connectathon11/Track2-Terminology/_reference/output/intensional-case-3-filter-min.xml +58 -0
  213. data/lib/tests/testscripts/xml/Connectathon11/Track2-Terminology/_reference/output/lookup-loinc-min.xml +11 -0
  214. data/lib/tests/testscripts/xml/Connectathon11/Track2-Terminology/_reference/output/lookup-snomed-min.xml +11 -0
  215. data/lib/tests/testscripts/xml/Connectathon11/Track2-Terminology/_reference/output/suite3-invalid-min.xml +10 -0
  216. data/lib/tests/testscripts/xml/Connectathon11/Track2-Terminology/_reference/output/suite3-valid-min.xml +7 -0
  217. data/lib/tests/testscripts/xml/Connectathon11/Track2-Terminology/_reference/output/suite4-invalid-min.xml +10 -0
  218. data/lib/tests/testscripts/xml/Connectathon11/Track2-Terminology/_reference/output/suite4-valid-min.xml +7 -0
  219. data/lib/tests/testscripts/xml/Connectathon11/Track2-Terminology/_reference/output/translate-conceptmap-min.xml +17 -0
  220. data/lib/tests/testscripts/xml/Connectathon11/Track2-Terminology/_reference/resources/extensional-case-1.xml +55 -0
  221. data/lib/tests/testscripts/xml/Connectathon11/Track2-Terminology/_reference/resources/extensional-case-2.xml +122 -0
  222. data/lib/tests/testscripts/xml/Connectathon11/Track2-Terminology/_reference/resources/extensional-case-3.xml +222 -0
  223. data/lib/tests/testscripts/xml/Connectathon11/Track2-Terminology/_reference/resources/extensional-case-4.xml +65 -0
  224. data/lib/tests/testscripts/xml/Connectathon11/Track2-Terminology/_reference/resources/intensional-case-1.xml +31 -0
  225. data/lib/tests/testscripts/xml/Connectathon11/Track2-Terminology/_reference/resources/intensional-case-2.xml +31 -0
  226. data/lib/tests/testscripts/xml/Connectathon11/Track2-Terminology/_reference/resources/intensional-case-3.xml +31 -0
  227. data/lib/tests/testscripts/xml/Connectathon11/Track2-Terminology/_reference/resources/translate-conceptmap-case-1.xml +145 -0
  228. data/lib/tests/testscripts/xml/Connectathon11/Track3-CDS-on-FHIR/_reference/conformance/DecisionSupportServiceModule-Evaluate.xml +17 -0
  229. data/lib/tests/testscripts/xml/Connectathon11/Track3-CDS-on-FHIR/_reference/resources/ecrs-fhir-cdc-immunizations-incomplete-request-payload.xml +26 -0
  230. data/lib/tests/testscripts/xml/Connectathon11/Track3-CDS-on-FHIR/_reference/resources/ecrs-fhir-cdc-immunizations-incomplete-response-min-payload.xml +7 -0
  231. data/lib/tests/testscripts/xml/Connectathon11/Track3-CDS-on-FHIR/_reference/resources/ecrs-fhir-cdc-immunizations-incomplete-response-payload.xml +332 -0
  232. data/lib/tests/testscripts/xml/Connectathon11/Track3-CDS-on-FHIR/_reference/resources/ecrs-fhir-cdc-immunizations-malformed-request-payload.xml +28 -0
  233. data/lib/tests/testscripts/xml/Connectathon11/Track3-CDS-on-FHIR/_reference/resources/ecrs-fhir-cdc-immunizations-malformed-response-min-payload.xml +7 -0
  234. data/lib/tests/testscripts/xml/Connectathon11/Track3-CDS-on-FHIR/_reference/resources/ecrs-fhir-cdc-immunizations-malformed-response-payload.xml +20 -0
  235. data/lib/tests/testscripts/xml/Connectathon11/Track3-CDS-on-FHIR/_reference/resources/ecrs-fhir-cdc-immunizations-request-payload.xml +28 -0
  236. data/lib/tests/testscripts/xml/Connectathon11/Track3-CDS-on-FHIR/_reference/resources/ecrs-fhir-cdc-immunizations-response-min-payload.xml +7 -0
  237. data/lib/tests/testscripts/xml/Connectathon11/Track3-CDS-on-FHIR/_reference/resources/ecrs-fhir-cdc-immunizations-response-payload.xml +332 -0
  238. data/lib/tests/testscripts/xml/Connectathon11/Track3-CDS-on-FHIR/_reference/resources/ecrs-fhir-cdc-immunizations-unauthorized-request-payload.xml +28 -0
  239. data/lib/tests/testscripts/xml/Connectathon11/Track3-CDS-on-FHIR/_reference/resources/ecrs-fhir-cdc-immunizations-unauthorized-response-min-payload.xml +7 -0
  240. data/lib/tests/testscripts/xml/Connectathon11/Track3-CDS-on-FHIR/_reference/resources/ecrs-fhir-cdc-immunizations-unauthorized-response-payload.xml +8 -0
  241. data/lib/tests/testscripts/xml/Connectathon11/Track3-CDS-on-FHIR/_reference/resources/gao-assessment-request-payload.xml +176 -0
  242. data/lib/tests/testscripts/xml/Connectathon11/Track3-CDS-on-FHIR/_reference/resources/gao-assessment-response-payload-min.xml +32 -0
  243. data/lib/tests/testscripts/xml/Connectathon11/Track3-CDS-on-FHIR/_reference/resources/gao-assessment-response-payload.xml +80 -0
  244. data/lib/tests/testscripts/xml/Connectathon11/Track3-CDS-on-FHIR/track3-cds-evaluate-cdc-immunization.xml +290 -0
  245. data/lib/tests/testscripts/xml/Connectathon11/Track3-CDS-on-FHIR/track3-cds-evaluate-gao-profile.xml +110 -0
  246. data/lib/tests/testscripts/xml/Connectathon11/Track6-FHIR-Genomics/Client_Assigned_Id/TestScript_FHIR-Genomics.xml +170 -0
  247. data/lib/tests/testscripts/xml/Connectathon11/Track6-FHIR-Genomics/_reference/resources/sequence-example-1.xml +31 -0
  248. data/lib/tests/testscripts/xml/Connectathon11/Track6-FHIR-Genomics/_reference/resources/sequence-example-2.xml +31 -0
  249. data/lib/tests/testscripts/xml/Connectathon11/Track7-LabOrderLabReport/Actors.png +0 -0
  250. data/lib/tests/testscripts/xml/Connectathon11/Track7-LabOrderLabReport/Client_Assigned_Id/track7-laborder100-xml.xml +590 -0
  251. data/lib/tests/testscripts/xml/Connectathon11/Track7-LabOrderLabReport/Client_Assigned_Id/track7-laborder200-xml.xml +587 -0
  252. data/lib/tests/testscripts/xml/Connectathon11/Track7-LabOrderLabReport/Client_Assigned_Id/track7-laborder300-xml.xml +612 -0
  253. data/lib/tests/testscripts/xml/Connectathon11/Track7-LabOrderLabReport/Client_Assigned_Id/track7-laborder400-xml.xml +635 -0
  254. data/lib/tests/testscripts/xml/Connectathon11/Track7-LabOrderLabReport/Peer-to-Peer/track7-laborder100-peer2peer-xml.xml +752 -0
  255. data/lib/tests/testscripts/xml/Connectathon11/Track7-LabOrderLabReport/Thumbs.db +0 -0
  256. data/lib/tests/testscripts/xml/Connectathon11/Track7-LabOrderLabReport/_reference/conformance/LabOrderLabReport-CreateDeleteReadUpdate.xml +187 -0
  257. data/lib/tests/testscripts/xml/Connectathon11/Track7-LabOrderLabReport/_reference/conformance/html.xslt +45 -0
  258. data/lib/tests/testscripts/xml/Connectathon11/Track7-LabOrderLabReport/_reference/resources/DiagnosticOrder/do-100-update.xml +64 -0
  259. data/lib/tests/testscripts/xml/Connectathon11/Track7-LabOrderLabReport/_reference/resources/DiagnosticOrder/do-100.xml +64 -0
  260. data/lib/tests/testscripts/xml/Connectathon11/Track7-LabOrderLabReport/_reference/resources/DiagnosticOrder/do-200-update.xml +121 -0
  261. data/lib/tests/testscripts/xml/Connectathon11/Track7-LabOrderLabReport/_reference/resources/DiagnosticOrder/do-200.xml +121 -0
  262. data/lib/tests/testscripts/xml/Connectathon11/Track7-LabOrderLabReport/_reference/resources/DiagnosticOrder/do-300-update.xml +91 -0
  263. data/lib/tests/testscripts/xml/Connectathon11/Track7-LabOrderLabReport/_reference/resources/DiagnosticOrder/do-300.xml +91 -0
  264. data/lib/tests/testscripts/xml/Connectathon11/Track7-LabOrderLabReport/_reference/resources/DiagnosticOrder/do-400-update.xml +88 -0
  265. data/lib/tests/testscripts/xml/Connectathon11/Track7-LabOrderLabReport/_reference/resources/DiagnosticOrder/do-400.xml +88 -0
  266. data/lib/tests/testscripts/xml/Connectathon11/Track7-LabOrderLabReport/_reference/resources/DiagnosticReport/dr-100.xml +96 -0
  267. data/lib/tests/testscripts/xml/Connectathon11/Track7-LabOrderLabReport/_reference/resources/DiagnosticReport/dr-200.xml +125 -0
  268. data/lib/tests/testscripts/xml/Connectathon11/Track7-LabOrderLabReport/_reference/resources/DiagnosticReport/dr-300.xml +132 -0
  269. data/lib/tests/testscripts/xml/Connectathon11/Track7-LabOrderLabReport/_reference/resources/DiagnosticReport/dr-400.xml +121 -0
  270. data/lib/tests/testscripts/xml/Connectathon11/Track7-LabOrderLabReport/_reference/resources/Observation/obs-100.xml +58 -0
  271. data/lib/tests/testscripts/xml/Connectathon11/Track7-LabOrderLabReport/_reference/resources/Observation/obs-101.xml +58 -0
  272. data/lib/tests/testscripts/xml/Connectathon11/Track7-LabOrderLabReport/_reference/resources/Observation/obs-200.xml +125 -0
  273. data/lib/tests/testscripts/xml/Connectathon11/Track7-LabOrderLabReport/_reference/resources/Observation/obs-300.xml +106 -0
  274. data/lib/tests/testscripts/xml/Connectathon11/Track7-LabOrderLabReport/_reference/resources/Observation/obs-301.xml +106 -0
  275. data/lib/tests/testscripts/xml/Connectathon11/Track7-LabOrderLabReport/_reference/resources/Observation/obs-302.xml +106 -0
  276. data/lib/tests/testscripts/xml/Connectathon11/Track7-LabOrderLabReport/_reference/resources/Observation/obs-303.xml +106 -0
  277. data/lib/tests/testscripts/xml/Connectathon11/Track7-LabOrderLabReport/_reference/resources/Observation/obs-304.xml +106 -0
  278. data/lib/tests/testscripts/xml/Connectathon11/Track7-LabOrderLabReport/_reference/resources/Observation/obs-400.xml +87 -0
  279. data/lib/tests/testscripts/xml/Connectathon11/Track7-LabOrderLabReport/_reference/resources/Observation/obs-401.xml +95 -0
  280. data/lib/tests/testscripts/xml/Connectathon11/Track7-LabOrderLabReport/_reference/resources/Observation/obs-402.xml +95 -0
  281. data/lib/tests/testscripts/xml/Connectathon11/Track7-LabOrderLabReport/_reference/resources/Observation/obs-403.xml +84 -0
  282. data/lib/tests/testscripts/xml/Connectathon11/Track7-LabOrderLabReport/_reference/resources/Observation/obs-404.xml +84 -0
  283. data/lib/tests/testscripts/xml/Connectathon11/Track7-LabOrderLabReport/_reference/resources/Observation/obs-405.xml +83 -0
  284. data/lib/tests/testscripts/xml/Connectathon11/Track7-LabOrderLabReport/_reference/resources/Observation/obs-406.xml +83 -0
  285. data/lib/tests/testscripts/xml/Connectathon11/Track7-LabOrderLabReport/_reference/resources/Observation/obs-407.xml +70 -0
  286. data/lib/tests/testscripts/xml/Connectathon11/Track7-LabOrderLabReport/_reference/resources/Observation/obs-408.xml +84 -0
  287. data/lib/tests/testscripts/xml/Connectathon11/Track7-LabOrderLabReport/_reference/resources/Observation/obs-uslab-example5.xml +102 -0
  288. data/lib/tests/testscripts/xml/Connectathon11/Track7-LabOrderLabReport/_reference/resources/Order/order-100.xml +61 -0
  289. data/lib/tests/testscripts/xml/Connectathon11/Track7-LabOrderLabReport/_reference/resources/Order/order-200.xml +61 -0
  290. data/lib/tests/testscripts/xml/Connectathon11/Track7-LabOrderLabReport/_reference/resources/Order/order-300.xml +61 -0
  291. data/lib/tests/testscripts/xml/Connectathon11/Track7-LabOrderLabReport/_reference/resources/Order/order-400.xml +61 -0
  292. data/lib/tests/testscripts/xml/Connectathon11/Track7-LabOrderLabReport/_reference/resources/OrderResponse/ordresp-100.xml +79 -0
  293. data/lib/tests/testscripts/xml/Connectathon11/Track7-LabOrderLabReport/_reference/resources/OrderResponse/ordresp-110.xml +79 -0
  294. data/lib/tests/testscripts/xml/Connectathon11/Track7-LabOrderLabReport/_reference/resources/OrderResponse/ordresp-200.xml +79 -0
  295. data/lib/tests/testscripts/xml/Connectathon11/Track7-LabOrderLabReport/_reference/resources/OrderResponse/ordresp-210.xml +79 -0
  296. data/lib/tests/testscripts/xml/Connectathon11/Track7-LabOrderLabReport/_reference/resources/OrderResponse/ordresp-300.xml +79 -0
  297. data/lib/tests/testscripts/xml/Connectathon11/Track7-LabOrderLabReport/_reference/resources/OrderResponse/ordresp-310.xml +79 -0
  298. data/lib/tests/testscripts/xml/Connectathon11/Track7-LabOrderLabReport/_reference/resources/OrderResponse/ordresp-400.xml +79 -0
  299. data/lib/tests/testscripts/xml/Connectathon11/Track7-LabOrderLabReport/_reference/resources/OrderResponse/ordresp-410.xml +79 -0
  300. data/lib/tests/testscripts/xml/Connectathon11/Track7-LabOrderLabReport/_reference/resources/Organization/org-uslab-example3.xml +49 -0
  301. data/lib/tests/testscripts/xml/Connectathon11/Track7-LabOrderLabReport/_reference/resources/Patient/patient-uslab-example1.xml +44 -0
  302. data/lib/tests/testscripts/xml/Connectathon11/Track7-LabOrderLabReport/_reference/resources/Practitioner/pract-uslab-example1.xml +18 -0
  303. data/lib/tests/testscripts/xml/Connectathon11/Track7-LabOrderLabReport/_reference/resources/Practitioner/pract-uslab-example3.xml +36 -0
  304. data/lib/tests/testscripts/xml/Connectathon11/Track7-LabOrderLabReport/_reference/resources/Specimen/Thumbs.db +0 -0
  305. data/lib/tests/testscripts/xml/Connectathon11/Track7-LabOrderLabReport/_reference/resources/Specimen/spec-100.xml +65 -0
  306. data/lib/tests/testscripts/xml/Connectathon11/Track7-LabOrderLabReport/_reference/resources/Specimen/spec-400.xml +70 -0
  307. data/lib/tests/testscripts/xml/Connectathon11/Track7-LabOrderLabReport/_reference/resources/Specimen/spec-uslab-example1.xml +82 -0
  308. data/lib/tests/testscripts/xml/Connectathon11/Track7-LabOrderLabReport/_reference/resources/Testscript 1 Document.txt +122 -0
  309. data/lib/tests/testscripts/xml/Connectathon11/Track7-LabOrderLabReport/_reference/resources/Testscript 2 Document.txt +103 -0
  310. data/lib/tests/testscripts/xml/Connectathon11/Track7-LabOrderLabReport/_reference/resources/Testscript 3 Document.txt +201 -0
  311. data/lib/tests/testscripts/xml/Connectathon11/Track7-LabOrderLabReport/_reference/resources/Testscript 4 Document.txt +310 -0
  312. data/lib/tests/testscripts/xml/Connectathon11/Track9-Patch/_reference/conformance/MedicationStatementCreate.xml +11 -0
  313. data/lib/tests/testscripts/xml/Connectathon11/Track9-Patch/_reference/conformance/PatientSearchType.xml +15 -0
  314. data/lib/tests/testscripts/xml/Connectathon11/Track9-Patch/_reference/resources/medicationstatement-create.json +39 -0
  315. data/lib/tests/testscripts/xml/Connectathon11/Track9-Patch/_reference/resources/medicationstatement-patch.json +3 -0
  316. data/lib/tests/testscripts/xml/Connectathon11/Track9-Patch/track9-patch-medicationstatement-json-if-match.xml +321 -0
  317. data/lib/tests/testscripts/xml/Connectathon11/Track9-Patch/track9-patch-medicationstatement-json.xml +303 -0
  318. data/lib/tests/testscripts/xml/Connectathon11/Track9-Patch/track9-patch-peer2peer-patient-json.xml +235 -0
  319. data/plan_executor.gemspec +14 -0
  320. data/test/fixtures/diagnostic_bundle.xml +51 -0
  321. data/test/fixtures/lab_results_bundle.xml +49 -0
  322. data/test/fixtures/observation_bundle.json +61 -0
  323. data/test/fixtures/testscript-example.xml +202 -0
  324. data/test/fixtures/testscript-history.xml +143 -0
  325. data/test/fixtures/testscript-readtest.xml +272 -0
  326. data/test/fixtures/testscript-search.xml +282 -0
  327. data/test/fixtures/testscript-update.xml +147 -0
  328. data/test/fixtures/vital_signs_bundle.xml +117 -0
  329. data/test/test_helper.rb +8 -0
  330. data/test/unit/argonaut_sprint6_test.rb +31 -0
  331. data/test/unit/argonaut_sprint7_test.rb +21 -0
  332. data/test/unit/basic_test.rb +27 -0
  333. data/test/unit/fetch_patient_record_test.rb +357 -0
  334. data/test/unit/financial_test.rb +41 -0
  335. data/test/unit/fixtures_test.rb +45 -0
  336. data/test/unit/metadata_test.rb +33 -0
  337. metadata +394 -0
@@ -0,0 +1,453 @@
1
+ module Crucible
2
+ module Tests
3
+ class FormatTest < BaseSuite
4
+
5
+ def id
6
+ 'Format001'
7
+ end
8
+
9
+ def description
10
+ 'Initial Sprinkler tests (CT01, CT02, CT03, CT04) for testing resource format requests.'
11
+ end
12
+
13
+ def initialize(client1, client2=nil)
14
+ super(client1, client2)
15
+ @category = {id: 'core_functionality', title: 'Core Functionality'}
16
+ end
17
+
18
+ # Create a patient and store its details for format requests
19
+ def setup
20
+ @xml_format = FHIR::Formats::ResourceFormat::RESOURCE_XML
21
+ @json_format = FHIR::Formats::ResourceFormat::RESOURCE_JSON
22
+ @xml_format_params = ['xml', 'text/xml', 'application/xml', @xml_format]
23
+ @json_format_params = ['json', 'application/json', @json_format]
24
+ @resources = Crucible::Generator::Resources.new
25
+ @resource = @resources.minimal_patient
26
+ @create_failed = false
27
+
28
+ create_reply = @client.create(@resource)
29
+
30
+ begin
31
+ assert_response_created create_reply
32
+ result = create_reply.resource
33
+ rescue AssertionException
34
+ @create_failed = true
35
+ end
36
+
37
+ if @create_failed
38
+ # If create fails, pick one from the Patient Bundle
39
+ begin
40
+ bundle_reply = request_bundle(FHIR::Patient, @xml_format)
41
+ assert_response_ok bundle_reply
42
+ bundle_patient = bundle_reply.resource.entry.first.resource
43
+ @id = bundle_patient.xmlId
44
+ @create_failed = false
45
+ rescue Exception
46
+ @create_failed = true
47
+ end
48
+ else
49
+ @id = create_reply.id
50
+ end
51
+
52
+ assert(!@create_failed, 'Unable to create or read a patient.')
53
+ end
54
+
55
+ # Delete the reference patient if we created it
56
+ def teardown
57
+ @client.destroy(FHIR::Patient, @id) unless @create_failed
58
+ end
59
+
60
+ test 'CT01', 'Request xml using headers' do
61
+ metadata {
62
+ links "#{BASE_SPEC_LINK}/formats.html"
63
+ links "#{REST_SPEC_LINK}#mime-type"
64
+ links "#{REST_SPEC_LINK}#read"
65
+ requires resource: 'Patient', methods: ['create','read']
66
+ validates resource: 'Patient', methods: ['read'], formats: ['XML']
67
+ }
68
+ begin
69
+ patient = request_entry(FHIR::Patient, @id, @xml_format)
70
+ assert compare_response_format(patient, @xml_format), "XML format header mismatch: requested #{@xml_format}, received #{patient.response_format}"
71
+ warning { assert compare_response(patient), 'requested XML (headers) resource does not match created resource' }
72
+ rescue => e
73
+ raise AssertionException.new("CTO1 - Failed to handle XML format header response. Error: #{e.message}")
74
+ end
75
+ end
76
+
77
+ test 'CT02A', 'Request [xml] using [_format]' do
78
+ metadata {
79
+ links "#{BASE_SPEC_LINK}/formats.html"
80
+ links "#{REST_SPEC_LINK}#mime-type"
81
+ links "#{REST_SPEC_LINK}#read"
82
+ requires resource: 'Patient', methods: ['create','read']
83
+ validates resource: 'Patient', methods: ['read'], formats: ['XML']
84
+ }
85
+ begin
86
+ patient = request_entry(FHIR::Patient, @id, @xml_format_params[0], true)
87
+ assert compare_response_format(patient, @xml_format), "XML format param mismatch: requested #{@xml_format}, received #{patient.response_format}"
88
+ warning { assert compare_response(patient), 'requested XML (_format) resource does not match created resource' }
89
+ rescue => e
90
+ @client.use_format_param = false
91
+ raise AssertionException.new("CTO2 - Failed to handle XML format param response. Error: #{e.message}")
92
+ end
93
+ end
94
+
95
+ test 'CT02B', 'Request [text/xml] using [_format]' do
96
+ metadata {
97
+ links "#{BASE_SPEC_LINK}/formats.html"
98
+ links "#{REST_SPEC_LINK}#mime-type"
99
+ links "#{REST_SPEC_LINK}#read"
100
+ requires resource: 'Patient', methods: ['create','read']
101
+ validates resource: 'Patient', methods: ['read'], formats: ['XML']
102
+ }
103
+ begin
104
+ patient = request_entry(FHIR::Patient, @id, @xml_format_params[1], true)
105
+ assert compare_response_format(patient, @xml_format), "XML format param mismatch: requested #{@xml_format}, received #{patient.response_format}"
106
+ warning { assert compare_response(patient), 'requested XML (_format) resource does not match created resource' }
107
+ rescue => e
108
+ @client.use_format_param = false
109
+ raise AssertionException.new("CTO2 - Failed to handle XML format param response. Error: #{e.message}")
110
+ end
111
+ end
112
+
113
+ test 'CT02C', 'Request [application/xml] using [_format]' do
114
+ metadata {
115
+ links "#{BASE_SPEC_LINK}/formats.html"
116
+ links "#{REST_SPEC_LINK}#mime-type"
117
+ links "#{REST_SPEC_LINK}#read"
118
+ requires resource: 'Patient', methods: ['create','read']
119
+ validates resource: 'Patient', methods: ['read'], formats: ['XML']
120
+ }
121
+ begin
122
+ patient = request_entry(FHIR::Patient, @id, @xml_format_params[2], true)
123
+ assert compare_response_format(patient, @xml_format), "XML format param mismatch: requested #{@xml_format}, received #{patient.response_format}"
124
+ warning { assert compare_response(patient), 'requested XML (_format) resource does not match created resource' }
125
+ rescue => e
126
+ @client.use_format_param = false
127
+ raise AssertionException.new("CTO2 - Failed to handle XML format param response. Error: #{e.message}")
128
+ end
129
+ end
130
+
131
+ test 'CT02D', 'Request [application/xml+fhir] using [_format]' do
132
+ metadata {
133
+ links "#{BASE_SPEC_LINK}/formats.html"
134
+ links "#{REST_SPEC_LINK}#mime-type"
135
+ links "#{REST_SPEC_LINK}#read"
136
+ requires resource: 'Patient', methods: ['create','read']
137
+ validates resource: 'Patient', methods: ['read'], formats: ['XML']
138
+ }
139
+ begin
140
+ patient = request_entry(FHIR::Patient, @id, @xml_format_params[3], true)
141
+ assert compare_response_format(patient, @xml_format), "XML format param mismatch: requested #{@xml_format}, received #{patient.response_format}"
142
+ warning { assert compare_response(patient), 'requested XML (_format) resource does not match created resource' }
143
+ rescue => e
144
+ @client.use_format_param = false
145
+ raise AssertionException.new("CTO2 - Failed to handle XML format param response. Error: #{e.message}")
146
+ end
147
+ end
148
+
149
+ test 'CT03', 'Request json using headers' do
150
+ metadata {
151
+ links "#{BASE_SPEC_LINK}/formats.html"
152
+ links "#{REST_SPEC_LINK}#mime-type"
153
+ links "#{REST_SPEC_LINK}#read"
154
+ requires resource: 'Patient', methods: ['create','read']
155
+ validates resource: 'Patient', methods: ['read'], formats: ['JSON']
156
+ }
157
+ begin
158
+ patient = request_entry(FHIR::Patient, @id, @json_format)
159
+ assert compare_response_format(patient, @json_format), "JSON format header mismatch: requested #{@json_format}, received #{patient.response_format}"
160
+ warning { assert compare_response(patient), 'requested JSON (headers) resource does not match created resource' }
161
+ rescue => e
162
+ raise AssertionException.new("CTO3 - Failed to handle JSON format header response. Error: #{e.message}")
163
+ end
164
+ end
165
+
166
+ test 'CT04A', 'Request [json] using [_format]' do
167
+ metadata {
168
+ links "#{BASE_SPEC_LINK}/formats.html"
169
+ links "#{REST_SPEC_LINK}#mime-type"
170
+ links "#{REST_SPEC_LINK}#read"
171
+ requires resource: 'Patient', methods: ['create','read']
172
+ validates resource: 'Patient', methods: ['read'], formats: ['JSON']
173
+ }
174
+ begin
175
+ patient = request_entry(FHIR::Patient, @id, @json_format_params[0], true)
176
+ assert compare_response_format(patient, @json_format), "JSON format param mismatch: requested #{@json_format}, received #{patient.response_format}"
177
+ warning { assert compare_response(patient), 'requested JSON (_format) resource does not match created resource' }
178
+ rescue => e
179
+ @client.use_format_param = false
180
+ raise AssertionException.new("CTO4 - Failed to handle JSON format param response. Error: #{e.message}")
181
+ end
182
+ end
183
+
184
+ test 'CT04C', 'Request [application/json] using [_format]' do
185
+ metadata {
186
+ links "#{BASE_SPEC_LINK}/formats.html"
187
+ links "#{REST_SPEC_LINK}#mime-type"
188
+ links "#{REST_SPEC_LINK}#read"
189
+ requires resource: 'Patient', methods: ['create','read']
190
+ validates resource: 'Patient', methods: ['read'], formats: ['JSON']
191
+ }
192
+ begin
193
+ patient = request_entry(FHIR::Patient, @id, @json_format_params[1], true)
194
+ assert compare_response_format(patient, @json_format), "JSON format param mismatch: requested #{@json_format}, received #{patient.response_format}"
195
+ warning { assert compare_response(patient), 'requested JSON (_format) resource does not match created resource' }
196
+ rescue => e
197
+ @client.use_format_param = false
198
+ raise AssertionException.new("CTO4 - Failed to handle JSON format param response. Error: #{e.message}")
199
+ end
200
+ end
201
+
202
+ test 'CT04D', 'Request [application/json+fhir] using [_format]' do
203
+ metadata {
204
+ links "#{BASE_SPEC_LINK}/formats.html"
205
+ links "#{REST_SPEC_LINK}#mime-type"
206
+ links "#{REST_SPEC_LINK}#read"
207
+ requires resource: 'Patient', methods: ['create','read']
208
+ validates resource: 'Patient', methods: ['read'], formats: ['JSON']
209
+ }
210
+ begin
211
+ patient = request_entry(FHIR::Patient, @id, @json_format_params[2], true)
212
+ assert compare_response_format(patient, @json_format), "JSON format param mismatch: requested #{@json_format}, received #{patient.response_format}"
213
+ warning { assert compare_response(patient), 'requested JSON (_format) resource does not match created resource' }
214
+ rescue => e
215
+ @client.use_format_param = false
216
+ raise AssertionException.new("CTO4 - Failed to handle JSON format param response. Error: #{e.message}")
217
+ end
218
+ end
219
+
220
+ test 'FT01', 'Request xml and json using headers' do
221
+ metadata {
222
+ links "#{BASE_SPEC_LINK}/formats.html"
223
+ links "#{REST_SPEC_LINK}#mime-type"
224
+ links "#{REST_SPEC_LINK}#read"
225
+ requires resource: 'Patient', methods: ['create','read']
226
+ validates resource: 'Patient', methods: ['read'], formats: ['XML','JSON']
227
+ }
228
+ begin
229
+ patient_xml = request_entry(FHIR::Patient, @id, @xml_format)
230
+ patient_json = request_entry(FHIR::Patient, @id, @json_format)
231
+
232
+ assert compare_response_format(patient_xml, @xml_format), "XML format header mismatch: requested #{@xml_format}, received #{patient_xml.response_format}"
233
+ assert compare_response_format(patient_json, @json_format), "JSON format header mismatch: requested #{@json_format}, received #{patient_json.response_format}"
234
+ warning { assert compare_entries(patient_xml, patient_json), 'requested XML & JSON (headers) resources do not match created resource or each other' }
235
+ rescue => e
236
+ @client.use_format_param = false
237
+ raise AssertionException.new("FTO1 - Failed to handle XML & JSON header param response. Error: #{e.message}")
238
+ end
239
+ end
240
+
241
+ test 'FT02', 'Request xml and json using [_format]' do
242
+ metadata {
243
+ links "#{BASE_SPEC_LINK}/formats.html"
244
+ links "#{REST_SPEC_LINK}#mime-type"
245
+ links "#{REST_SPEC_LINK}#read"
246
+ requires resource: 'Patient', methods: ['create','read']
247
+ validates resource: 'Patient', methods: ['read'], formats: ['XML','JSON']
248
+ }
249
+ begin
250
+ patient_xml = request_entry(FHIR::Patient, @id, @xml_format, true)
251
+ patient_json = request_entry(FHIR::Patient, @id, @json_format, true)
252
+
253
+ assert compare_response_format(patient_xml, @xml_format), "XML format header mismatch: requested #{@xml_format}, received #{patient_xml.response_format}"
254
+ assert compare_response_format(patient_json, @json_format), "JSON format header mismatch: requested #{@json_format}, received #{patient_json.response_format}"
255
+ warning { assert compare_entries(patient_xml, patient_json), 'requested XML & JSON (_format) resources do not match created resource or each other' }
256
+ rescue => e
257
+ @client.use_format_param = false
258
+ raise AssertionException.new("FTO2 - Failed to handle XML & JSON format param response. Error: #{e.message}")
259
+ end
260
+ end
261
+
262
+ test 'FT03', 'Request xml Bundle using headers' do
263
+ metadata {
264
+ links "#{BASE_SPEC_LINK}/formats.html"
265
+ links "#{REST_SPEC_LINK}#mime-type"
266
+ links "#{REST_SPEC_LINK}#read"
267
+ requires resource: 'Patient', methods: ['create','read']
268
+ validates resource: 'Patient', methods: ['read'], formats: ['XML']
269
+ }
270
+ begin
271
+ patients_bundle = request_bundle(FHIR::Patient, @xml_format)
272
+
273
+ assert compare_response_format(patients_bundle, @xml_format), "Bundle XML format header mismatch: requested #{@xml_format}, received #{patients_bundle.response_format}"
274
+ rescue => e
275
+ raise AssertionException.new("FTO3 - Failed to handle Bundle XML format header response. Error: #{e.message}")
276
+ end
277
+ end
278
+
279
+ test 'FT04A', 'Request [xml] Bundle using [_format]' do
280
+ metadata {
281
+ links "#{BASE_SPEC_LINK}/formats.html"
282
+ links "#{REST_SPEC_LINK}#mime-type"
283
+ links "#{REST_SPEC_LINK}#read"
284
+ requires resource: 'Patient', methods: ['create','read']
285
+ validates resource: 'Patient', methods: ['read'], formats: ['XML']
286
+ }
287
+ begin
288
+ patients_bundle = request_bundle(FHIR::Patient, @xml_format_params[0], true)
289
+
290
+ assert compare_response_format(patients_bundle, @xml_format), "Bundle XML format param mismatch: requested #{@xml_format}, received #{patients_bundle.response_format}"
291
+ rescue => e
292
+ raise AssertionException.new("FTO4- Failed to handle Bundle XML format param response. Error: #{e.message}")
293
+ end
294
+ end
295
+
296
+ test 'FT04B', 'Request [text/xml] Bundle using [_format]' do
297
+ metadata {
298
+ links "#{BASE_SPEC_LINK}/formats.html"
299
+ links "#{REST_SPEC_LINK}#mime-type"
300
+ links "#{REST_SPEC_LINK}#read"
301
+ requires resource: 'Patient', methods: ['create','read']
302
+ validates resource: 'Patient', methods: ['read'], formats: ['XML']
303
+ }
304
+ begin
305
+ patients_bundle = request_bundle(FHIR::Patient, @xml_format_params[1], true)
306
+
307
+ assert compare_response_format(patients_bundle, @xml_format), "Bundle XML format param mismatch: requested #{@xml_format}, received #{patients_bundle.response_format}"
308
+ rescue => e
309
+ raise AssertionException.new("FTO4- Failed to handle Bundle XML format param response. Error: #{e.message}")
310
+ end
311
+ end
312
+
313
+ test 'FT04C', 'Request [application/xml] Bundle using [_format]' do
314
+ metadata {
315
+ links "#{BASE_SPEC_LINK}/formats.html"
316
+ links "#{REST_SPEC_LINK}#mime-type"
317
+ links "#{REST_SPEC_LINK}#read"
318
+ requires resource: 'Patient', methods: ['create','read']
319
+ validates resource: 'Patient', methods: ['read'], formats: ['XML']
320
+ }
321
+ begin
322
+ patients_bundle = request_bundle(FHIR::Patient, @xml_format_params[2], true)
323
+
324
+ assert compare_response_format(patients_bundle, @xml_format), "Bundle XML format param mismatch: requested #{@xml_format}, received #{patients_bundle.response_format}"
325
+ rescue => e
326
+ raise AssertionException.new("FTO4- Failed to handle Bundle XML format param response. Error: #{e.message}")
327
+ end
328
+ end
329
+
330
+ test 'FT04D', 'Request [application/xml+fhir] Bundle using [_format]' do
331
+ metadata {
332
+ links "#{BASE_SPEC_LINK}/formats.html"
333
+ links "#{REST_SPEC_LINK}#mime-type"
334
+ links "#{REST_SPEC_LINK}#read"
335
+ requires resource: 'Patient', methods: ['create','read']
336
+ validates resource: 'Patient', methods: ['read'], formats: ['XML']
337
+ }
338
+ begin
339
+ patients_bundle = request_bundle(FHIR::Patient, @xml_format_params[3], true)
340
+
341
+ assert compare_response_format(patients_bundle, @xml_format), "Bundle XML format param mismatch: requested #{@xml_format}, received #{patients_bundle.response_format}"
342
+ rescue => e
343
+ raise AssertionException.new("FTO4- Failed to handle Bundle XML format param response. Error: #{e.message}")
344
+ end
345
+ end
346
+
347
+ test 'FT05', 'Request json Bundle using headers' do
348
+ metadata {
349
+ links "#{BASE_SPEC_LINK}/formats.html"
350
+ links "#{REST_SPEC_LINK}#mime-type"
351
+ links "#{REST_SPEC_LINK}#read"
352
+ requires resource: 'Patient', methods: ['create','read']
353
+ validates resource: 'Patient', methods: ['read'], formats: ['JSON']
354
+ }
355
+ begin
356
+ patients_bundle = request_bundle(FHIR::Patient, @json_format)
357
+
358
+ assert compare_response_format(patients_bundle, @json_format), "Bundle JSON format header mismatch: requested #{@json_format}, received #{patients_bundle.response_format}"
359
+ rescue => e
360
+ raise AssertionException.new("FT05 - Failed to handle Bundle JSON format header response. Error: #{e.message}")
361
+ end
362
+ end
363
+
364
+ test 'FT06A', 'Request [json] Bundle using [_format]' do
365
+ metadata {
366
+ links "#{BASE_SPEC_LINK}/formats.html"
367
+ links "#{REST_SPEC_LINK}#mime-type"
368
+ links "#{REST_SPEC_LINK}#read"
369
+ requires resource: 'Patient', methods: ['create','read']
370
+ validates resource: 'Patient', methods: ['read'], formats: ['JSON']
371
+ }
372
+ begin
373
+ patients_bundle = request_bundle(FHIR::Patient, @json_format_params[0], true)
374
+
375
+ assert compare_response_format(patients_bundle, @json_format), "Bundle JSON format param mismatch: requested #{@json_format}, received #{patients_bundle.response_format}"
376
+ rescue => e
377
+ raise AssertionException.new("FTO6 - Failed to handle Bundle JSON format param response. Error: #{e.message}")
378
+ end
379
+ end
380
+
381
+ test 'FT06C', 'Request [application/json] Bundle using [_format]' do
382
+ metadata {
383
+ links "#{BASE_SPEC_LINK}/formats.html"
384
+ links "#{REST_SPEC_LINK}#mime-type"
385
+ links "#{REST_SPEC_LINK}#read"
386
+ requires resource: 'Patient', methods: ['create','read']
387
+ validates resource: 'Patient', methods: ['read'], formats: ['JSON']
388
+ }
389
+ begin
390
+ patients_bundle = request_bundle(FHIR::Patient, @json_format_params[1], true)
391
+
392
+ assert compare_response_format(patients_bundle, @json_format), "Bundle JSON format param mismatch: requested #{@json_format}, received #{patients_bundle.response_format}"
393
+ rescue => e
394
+ raise AssertionException.new("FTO6 - Failed to handle Bundle JSON format param response. Error: #{e.message}")
395
+ end
396
+ end
397
+
398
+ test 'FT06D', 'Request [application/json+fhir] Bundle using [_format]' do
399
+ metadata {
400
+ links "#{BASE_SPEC_LINK}/formats.html"
401
+ links "#{REST_SPEC_LINK}#mime-type"
402
+ links "#{REST_SPEC_LINK}#read"
403
+ requires resource: 'Patient', methods: ['create','read']
404
+ validates resource: 'Patient', methods: ['read'], formats: ['JSON']
405
+ }
406
+ begin
407
+ patients_bundle = request_bundle(FHIR::Patient, @json_format_params[2], true)
408
+
409
+ assert compare_response_format(patients_bundle, @json_format), "Bundle JSON format param mismatch: requested #{@json_format}, received #{patients_bundle.response_format}"
410
+ rescue => e
411
+ raise AssertionException.new("FTO6 - Failed to handle Bundle JSON format param response. Error: #{e.message}")
412
+ end
413
+ end
414
+
415
+ private
416
+
417
+ # Compare requested resource with created resource
418
+ def compare_response(entry)
419
+ @create_failed || entry != nil && entry.resource != nil && entry.resource == @resource
420
+ end
421
+
422
+ # Compare response format with requested format
423
+ def compare_response_format(entry, requested_format)
424
+ entry != nil && entry.response != nil && entry.response_format == requested_format
425
+ end
426
+
427
+ # Compare two requested entries
428
+ def compare_entries(entry1, entry2)
429
+ @create_failed || compare_response(entry1) && compare_response(entry2) && entry1.resource == entry2.resource
430
+ end
431
+
432
+ # Unify resource requests and format specification
433
+ def request_entry(resource_class, id, format, use_format_param=false)
434
+ @client.use_format_param = use_format_param
435
+ entry = @client.read(resource_class, id, format)
436
+ @client.use_format_param = false
437
+ assert_response_ok entry, "Failed to retrieve resource: #{entry.request[:url]}"
438
+ entry.resource.id = id
439
+ entry
440
+ end
441
+
442
+ # Unify Bundle requests and format specification
443
+ def request_bundle(resource_class, format, use_format_param=false)
444
+ @client.use_format_param = use_format_param
445
+ entry = @client.read_feed(resource_class, format)
446
+ @client.use_format_param = false
447
+ assert_response_ok entry, "Failed to retrieve Bundle: #{entry.request[:url]}"
448
+ entry
449
+ end
450
+
451
+ end
452
+ end
453
+ end