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,380 @@
1
+ module Crucible
2
+ module Tests
3
+ class ConnectathonFinancialTrackTest < BaseSuite
4
+
5
+ def id
6
+ 'ConnectathonFinancialTrackTest'
7
+ end
8
+
9
+ def description
10
+ 'Connectathon Financial Track Test focuses on submitting Claims and retreiving ClaimResponses.'
11
+ end
12
+
13
+ def initialize(client1, client2=nil)
14
+ super(client1, client2)
15
+ @category = {id: 'connectathon', title: 'Connectathon'}
16
+ end
17
+
18
+ def setup
19
+ @resources = Crucible::Generator::Resources.new
20
+
21
+ @simple = @resources.simple_claim
22
+ @simple.xmlId = nil # clear the identifier, in case the server checks for duplicates
23
+ @simple.identifier = nil # clear the identifier, in case the server checks for duplicates
24
+
25
+ @average = @resources.average_claim
26
+ @average.xmlId = nil # clear the identifier, in case the server checks for duplicates
27
+ @average.identifier = nil # clear the identifier, in case the server checks for duplicates
28
+ end
29
+
30
+ def teardown
31
+ @client.destroy(FHIR::Claim, @simple_id) if !@simple_id.nil?
32
+ @client.destroy(FHIR::ClaimResponse, @simple_response_id) if !@simple_response_id.nil?
33
+ @client.destroy(FHIR::Claim, @average_id) if !@average_id.nil?
34
+ @client.destroy(FHIR::ClaimResponse, @average_response_id) if !@average_response_id.nil?
35
+ end
36
+
37
+ #
38
+ # Test if we can create a new Claim.
39
+ #
40
+ test 'C9F_1A','Register a simple claim' do
41
+ metadata {
42
+ links "#{REST_SPEC_LINK}#create"
43
+ links "#{BASE_SPEC_LINK}/claim.html"
44
+ links 'http://wiki.hl7.org/index.php?title=Connectathon9_Financial#Submit_a_Claim_via_REST.2C_Retrieve_a_ClaimResponse'
45
+ requires resource: 'Claim', methods: ['create']
46
+ validates resource: 'Claim', methods: ['create']
47
+ }
48
+
49
+ reply = @client.create(@simple)
50
+ assert_response_ok(reply)
51
+ @simple_id = reply.id
52
+ sleep(10) # sleep to allow server to process claim, no wait time was causing incorrect failures in subsequent tests
53
+
54
+ if !reply.resource.nil?
55
+ # Response is Claim
56
+ temp = reply.resource.xmlId
57
+ reply.resource.xmlId = nil
58
+ warning { assert @simple.equals?(reply.resource), 'The server did not correctly preserve the Claim data.' }
59
+ reply.resource.xmlId = temp
60
+ elsif !reply.body.nil?
61
+ begin
62
+ cr = FHIR::Resource.from_contents(reply.body)
63
+ if cr.class==FHIR::ClaimResponse
64
+ # Response is ClaimResponse
65
+ @simple_response_id = cr.xmlId
66
+ @simple_id = cr.request.reference if cr.request
67
+ else
68
+ warning { assert(false,"The Claim request responded with an unexpected resource: #{cr.class}",reply.body) }
69
+ end
70
+ rescue Exception => ex
71
+ warning { assert(false,'The Claim request responded with an unexpected body.',reply.body) }
72
+ end
73
+ end
74
+
75
+ warning { assert_valid_resource_content_type_present(reply) }
76
+ warning { assert_last_modified_present(reply) }
77
+ warning { assert_valid_content_location_present(reply) }
78
+ end
79
+
80
+ #
81
+ # Test if we can create a different new Claim.
82
+ #
83
+ test 'C9F_1B','Register an average claim' do
84
+ metadata {
85
+ links "#{REST_SPEC_LINK}#create"
86
+ links "#{BASE_SPEC_LINK}/claim.html"
87
+ links 'http://wiki.hl7.org/index.php?title=Connectathon9_Financial#Submit_a_Claim_via_REST.2C_Retrieve_a_ClaimResponse'
88
+ requires resource: 'Claim', methods: ['create']
89
+ validates resource: 'Claim', methods: ['create']
90
+ }
91
+
92
+ reply = @client.create(@average)
93
+ assert_response_ok(reply)
94
+ @average_id = reply.id
95
+ sleep(10) # sleep to allow server to process claim, no wait time was causing incorrect failures in subsequent tests
96
+
97
+ if !reply.resource.nil?
98
+ # Response is Claim
99
+ temp = reply.resource.xmlId
100
+ reply.resource.xmlId = nil
101
+ warning { assert @average.equals?(reply.resource), 'The server did not correctly preserve the Claim data.' }
102
+ reply.resource.xmlId = temp
103
+ elsif !reply.body.nil?
104
+ begin
105
+ cr = FHIR::Resource.from_contents(reply.body)
106
+ if cr.class==FHIR::ClaimResponse
107
+ # Response is ClaimResponse
108
+ @average_response_id = cr.xmlId
109
+ @average_id = cr.request.reference if cr.request
110
+ else
111
+ warning { assert(false,"The Claim request responded with an unexpected resource: #{cr.class}",reply.body) }
112
+ end
113
+ rescue Exception => ex
114
+ warning { assert(false,'The Claim request responded with an unexpected body.',reply.body) }
115
+ end
116
+ end
117
+ warning { assert_valid_resource_content_type_present(reply) }
118
+ warning { assert_last_modified_present(reply) }
119
+ warning { assert_valid_content_location_present(reply) }
120
+ end
121
+
122
+ # ------------------------------------------------------------------------------
123
+
124
+ #
125
+ # Check if our claim now has a reference to a ClaimResponse
126
+ #
127
+ test 'C9F_1C','Check on simple claim' do
128
+ metadata {
129
+ links "#{REST_SPEC_LINK}#read"
130
+ links "#{BASE_SPEC_LINK}/claim.html"
131
+ links 'http://wiki.hl7.org/index.php?title=Connectathon9_Financial#Submit_a_Claim_via_REST.2C_Retrieve_a_ClaimResponse'
132
+ requires resource: 'Claim', methods: ['read']
133
+ validates resource: 'Claim', methods: ['read']
134
+ }
135
+
136
+ reply = @client.read(FHIR::Claim,@simple_id)
137
+ assert_response_ok(reply)
138
+ assert_resource_type(reply,FHIR::Claim)
139
+ reply.resource.coverage.each do |coverage|
140
+ assert(!coverage.try(:claimResponse).try(:reference).nil?,'Claim does not reference a ClaimResponse.',reply.body)
141
+ end
142
+ warning { assert_valid_resource_content_type_present(reply) }
143
+ warning { assert_last_modified_present(reply) }
144
+ warning { assert_valid_content_location_present(reply) }
145
+ end
146
+
147
+ #
148
+ # Check if our claim now has a reference to a ClaimResponse
149
+ #
150
+ test 'C9F_1D','Check on average claim' do
151
+ metadata {
152
+ links "#{REST_SPEC_LINK}#read"
153
+ links "#{BASE_SPEC_LINK}/claim.html"
154
+ links 'http://wiki.hl7.org/index.php?title=Connectathon9_Financial#Submit_a_Claim_via_REST.2C_Retrieve_a_ClaimResponse'
155
+ requires resource: 'Claim', methods: ['read']
156
+ validates resource: 'Claim', methods: ['read']
157
+ }
158
+
159
+ reply = @client.read(FHIR::Claim,@average_id)
160
+ assert_response_ok(reply)
161
+ assert_resource_type(reply,FHIR::Claim)
162
+ reply.resource.coverage.each do |coverage|
163
+ assert(!coverage.try(:claimResponse).try(:reference).nil?,'Claim does not reference a ClaimResponse.',reply.body)
164
+ end
165
+ warning { assert_valid_resource_content_type_present(reply) }
166
+ warning { assert_last_modified_present(reply) }
167
+ warning { assert_valid_content_location_present(reply) }
168
+ end
169
+
170
+ # ------------------------------------------------------------------------------
171
+
172
+ #
173
+ # Search for a ClaimResponse by simple claim
174
+ #
175
+ test 'C9F_2A_request', 'Search ClaimResponse by simple claim ID' do
176
+ metadata {
177
+ links "#{REST_SPEC_LINK}#search"
178
+ links "#{BASE_SPEC_LINK}/claimresponse.html"
179
+ links 'http://wiki.hl7.org/index.php?title=Connectathon9_Financial#Submit_a_Claim_via_REST.2C_Retrieve_a_ClaimResponse'
180
+ requires resource: 'ClaimResponse', methods: ['search']
181
+ validates resource: 'ClaimResponse', methods: ['search']
182
+ }
183
+ skip unless @simple_id
184
+
185
+ search_string = @simple_id
186
+ search_regex = Regexp.new(search_string)
187
+
188
+ options = {
189
+ :search => {
190
+ :flag => true,
191
+ :compartment => nil,
192
+ :parameters => {
193
+ 'request' => search_string
194
+ }
195
+ }
196
+ }
197
+ @client.use_format_param = true
198
+ reply = @client.search(FHIR::ClaimResponse, options)
199
+ assert_response_ok(reply)
200
+ assert_bundle_response(reply)
201
+ assert (reply.resource.total > 0), 'The server did not report any results.'
202
+
203
+ @simple_response_id = reply.resource.entry[0].resource.xmlId unless @simple_response_id
204
+ end
205
+
206
+ #
207
+ # Search for a ClaimResponse by simple claim
208
+ #
209
+ test 'C9F_2A_text', 'Search ClaimResponse by simple claim ID in the text' do
210
+ metadata {
211
+ links "#{REST_SPEC_LINK}#search"
212
+ links "#{BASE_SPEC_LINK}/claimresponse.html"
213
+ links 'http://wiki.hl7.org/index.php?title=Connectathon9_Financial#Submit_a_Claim_via_REST.2C_Retrieve_a_ClaimResponse'
214
+ requires resource: 'ClaimResponse', methods: ['search']
215
+ validates resource: 'ClaimResponse', methods: ['search']
216
+ }
217
+ skip unless @simple_id
218
+
219
+ search_string = @simple_id
220
+ search_regex = Regexp.new(search_string)
221
+
222
+ options = {
223
+ :search => {
224
+ :flag => true,
225
+ :compartment => nil,
226
+ :parameters => {
227
+ '_text' => search_string
228
+ }
229
+ }
230
+ }
231
+ @client.use_format_param = true
232
+ reply = @client.search(FHIR::ClaimResponse, options)
233
+ assert_response_ok(reply)
234
+ assert_bundle_response(reply)
235
+ assert (reply.resource.total > 0), 'The server did not report any results.'
236
+
237
+ @simple_response_id = reply.resource.entry[0].resource.xmlId unless @simple_response_id
238
+ end
239
+
240
+ #
241
+ # Search for a ClaimResponse by simple claim
242
+ #
243
+ test 'C9F_2A_content', 'Search ClaimResponse by simple claim ID in the content' do
244
+ metadata {
245
+ links "#{REST_SPEC_LINK}#search"
246
+ links "#{BASE_SPEC_LINK}/claimresponse.html"
247
+ links 'http://wiki.hl7.org/index.php?title=Connectathon9_Financial#Submit_a_Claim_via_REST.2C_Retrieve_a_ClaimResponse'
248
+ requires resource: 'ClaimResponse', methods: ['search']
249
+ validates resource: 'ClaimResponse', methods: ['search']
250
+ }
251
+ skip unless @simple_id
252
+
253
+ search_string = @simple_id
254
+ search_regex = Regexp.new(search_string)
255
+
256
+ options = {
257
+ :search => {
258
+ :flag => true,
259
+ :compartment => nil,
260
+ :parameters => {
261
+ '_content' => search_string
262
+ }
263
+ }
264
+ }
265
+ @client.use_format_param = true
266
+ reply = @client.search(FHIR::ClaimResponse, options)
267
+ assert_response_ok(reply)
268
+ assert_bundle_response(reply)
269
+ assert (reply.resource.total > 0), 'The server did not report any results.'
270
+
271
+ @simple_response_id = reply.resource.entry[0].resource.xmlId unless @simple_response_id
272
+ end
273
+
274
+ # ------------------------------------------------------------------------------
275
+
276
+ #
277
+ # Search for a ClaimResponse by average claim
278
+ #
279
+ test 'C9F_2B_request', 'Search ClaimResponse by average claim ID' do
280
+ metadata {
281
+ links "#{REST_SPEC_LINK}#search"
282
+ links "#{BASE_SPEC_LINK}/claimresponse.html"
283
+ links 'http://wiki.hl7.org/index.php?title=Connectathon9_Financial#Submit_a_Claim_via_REST.2C_Retrieve_a_ClaimResponse'
284
+ requires resource: 'ClaimResponse', methods: ['search']
285
+ validates resource: 'ClaimResponse', methods: ['search']
286
+ }
287
+ skip unless @average_id
288
+
289
+ search_string = @average_id
290
+ search_regex = Regexp.new(search_string)
291
+
292
+ options = {
293
+ :search => {
294
+ :flag => true,
295
+ :compartment => nil,
296
+ :parameters => {
297
+ 'request' => search_string
298
+ }
299
+ }
300
+ }
301
+ @client.use_format_param = true
302
+ reply = @client.search(FHIR::ClaimResponse, options)
303
+ assert_response_ok(reply)
304
+ assert_bundle_response(reply)
305
+ assert (reply.resource.total > 0), 'The server did not report any results.'
306
+
307
+ @average_response_id = reply.resource.entry[0].resource.xmlId unless @average_response_id
308
+ end
309
+
310
+ #
311
+ # Search for a ClaimResponse by average claim
312
+ #
313
+ test 'C9F_2B_text', 'Search ClaimResponse by average claim ID in the text' do
314
+ metadata {
315
+ links "#{REST_SPEC_LINK}#search"
316
+ links "#{BASE_SPEC_LINK}/claimresponse.html"
317
+ links 'http://wiki.hl7.org/index.php?title=Connectathon9_Financial#Submit_a_Claim_via_REST.2C_Retrieve_a_ClaimResponse'
318
+ requires resource: 'ClaimResponse', methods: ['search']
319
+ validates resource: 'ClaimResponse', methods: ['search']
320
+ }
321
+ skip unless @average_id
322
+
323
+ search_string = @average_id
324
+ search_regex = Regexp.new(search_string)
325
+
326
+ options = {
327
+ :search => {
328
+ :flag => true,
329
+ :compartment => nil,
330
+ :parameters => {
331
+ '_text' => search_string
332
+ }
333
+ }
334
+ }
335
+ @client.use_format_param = true
336
+ reply = @client.search(FHIR::ClaimResponse, options)
337
+ assert_response_ok(reply)
338
+ assert_bundle_response(reply)
339
+ assert (reply.resource.total > 0), 'The server did not report any results.'
340
+
341
+ @average_response_id = reply.resource.entry[0].resource.xmlId unless @average_response_id
342
+ end
343
+
344
+ #
345
+ # Search for a ClaimResponse by average claim
346
+ #
347
+ test 'C9F_2B_content', 'Search ClaimResponse by average claim ID in the content' do
348
+ metadata {
349
+ links "#{REST_SPEC_LINK}#search"
350
+ links "#{BASE_SPEC_LINK}/claimresponse.html"
351
+ links 'http://wiki.hl7.org/index.php?title=Connectathon9_Financial#Submit_a_Claim_via_REST.2C_Retrieve_a_ClaimResponse'
352
+ requires resource: 'ClaimResponse', methods: ['search']
353
+ validates resource: 'ClaimResponse', methods: ['search']
354
+ }
355
+ skip unless @average_id
356
+
357
+ search_string = @average_id
358
+ search_regex = Regexp.new(search_string)
359
+
360
+ options = {
361
+ :search => {
362
+ :flag => true,
363
+ :compartment => nil,
364
+ :parameters => {
365
+ '_content' => search_string
366
+ }
367
+ }
368
+ }
369
+ @client.use_format_param = true
370
+ reply = @client.search(FHIR::ClaimResponse, options)
371
+ assert_response_ok(reply)
372
+ assert_bundle_response(reply)
373
+ assert (reply.resource.total > 0), 'The server did not report any results.'
374
+
375
+ @average_response_id = reply.resource.entry[0].resource.xmlId unless @average_response_id
376
+ end
377
+
378
+ end
379
+ end
380
+ end
@@ -0,0 +1,239 @@
1
+ module Crucible
2
+ module Tests
3
+ class ConnectathonLabOrderTrackTest < BaseSuite
4
+
5
+ def id
6
+ 'ConnectathonLabOrderTrackTest'
7
+ end
8
+
9
+ def description
10
+ 'Connectathon Lab Order Track focuses on DiagnosticOrder, Order, Observation and Specimen.'
11
+ end
12
+
13
+ def initialize(client1, client2=nil)
14
+ super(client1, client2)
15
+ @category = {id: 'connectathon', title: 'Connectathon'}
16
+ end
17
+
18
+ def setup
19
+ @resources = Crucible::Generator::Resources.new
20
+
21
+ @records = {}
22
+
23
+ patient = @resources.load_fixture('patient/patient-uslab-example1.xml')
24
+ provider = @resources.load_fixture('practitioner/pract-uslab-example1.xml')
25
+ performer = @resources.load_fixture('practitioner/pract-uslab-example3.xml')
26
+ organization = @resources.load_fixture('organization/org-uslab-example3.xml')
27
+
28
+ # Create our reference patient
29
+ create_object(patient, :patient)
30
+
31
+ # Create our reference provider (Order Orderer)
32
+ create_object(provider, :provider)
33
+
34
+ # Create our reference performer (Order performer)
35
+ create_object(performer, :performer)
36
+
37
+ # Create the Organization all of these belong to
38
+ create_object(organization, :organization)
39
+ end
40
+
41
+ def teardown
42
+ @records.each_value do |value|
43
+ @client.destroy(value.class, value.xmlId)
44
+ end
45
+ end
46
+
47
+ test 'C12T11_1', 'Create a DiagnosticOrder' do
48
+ metadata {
49
+ links "#{REST_SPEC_LINK}#create"
50
+ links "http://wiki.hl7.org/index.php?title=201605_LabOrder#Step_1_Order_a_new_lab_test"
51
+ requires resource: 'Patient', methods: ['create', 'delete']
52
+ requires resource: 'Practitioner', methods: ['create', 'delete']
53
+ requires resource: 'DiagnosticOrder', methods: ['create']
54
+ validates resource: 'DiagnosticOrder', methods: ['create']
55
+ }
56
+ create_diagnostic_order('diagnostic_order/do-100.xml', :diag_order_1)
57
+ create_diagnostic_order('diagnostic_order/do-200.xml', :diag_order_2)
58
+ create_diagnostic_order('diagnostic_order/do-300.xml', :diag_order_3)
59
+ create_diagnostic_order('diagnostic_order/do-400.xml', :diag_order_4)
60
+
61
+ end
62
+
63
+ test 'C12T11_2', 'Create an Order referencing the DiagnosticOrder' do
64
+ metadata {
65
+ links "#{REST_SPEC_LINK}#create"
66
+ links "http://wiki.hl7.org/index.php?title=201605_LabOrder#Step_1_Order_a_new_lab_test"
67
+ requires resource: 'Patient', methods: ['read']
68
+ requires resource: 'Practitioner', methods: ['read']
69
+ requires resource: 'DiagnosticOrder', methods: ['read']
70
+ requires resource: 'Order', methods: ['create']
71
+ validates resource: 'Order', methods: ['create']
72
+ }
73
+ create_order('order/order-100.xml', :order_1)
74
+ create_order('order/order-200.xml', :order_2)
75
+ create_order('order/order-300.xml', :order_3)
76
+ create_order('order/order-400.xml', :order_4)
77
+ end
78
+
79
+ test 'C12T11_3', 'Create an OrderResponse referencing the Order' do
80
+ metadata {
81
+ links "#{REST_SPEC_LINK}#create"
82
+ links 'http://wiki.hl7.org/index.php?title=201605_LabOrder#Step_2_Accept_new_lab_orders'
83
+ requires resource: 'Patient', methods: ['read']
84
+ requires resource: 'Practitioner', methods: ['read']
85
+ requires resource: 'DiagnosticOrder', methods: ['read']
86
+ requires resource: 'Order', methods: ['read']
87
+ requires resource: 'OrderResponse', methods: ['create']
88
+ validates resource: 'OrderResponse', methods: ['create']
89
+ }
90
+
91
+ create_order_response('order_response/ordresp-100.xml', :order_response_1, @records[:order_1])
92
+ create_order_response('order_response/ordresp-200.xml', :order_response_2, @records[:order_2])
93
+ create_order_response('order_response/ordresp-300.xml', :order_response_3, @records[:order_3])
94
+ create_order_response('order_response/ordresp-400.xml', :order_response_4, @records[:order_4])
95
+ end
96
+
97
+ test 'C12T11_4', 'Submit DiagnosticReport, Specimen and Observation resources' do
98
+ metadata {
99
+ links "#{REST_SPEC_LINK}#create"
100
+ links "#{REST_SPEC_LINK}#read"
101
+ links 'http://wiki.hl7.org/index.php?title=201605_LabOrder#Step_3_Fulfill_Lab_Order'
102
+ requires resource: 'DiagnosticOrder', methods: ['read']
103
+ requires resource: 'DiagnosticReport', methods: ['create']
104
+ requires resource: 'Observation', methods: ['create']
105
+ requires resource: 'Specimen', methods: ['create']
106
+ validates resource: 'OrderResponse', methods: ['create']
107
+ validates resource: 'Observation', methods: ['create']
108
+ validates resource: 'DiagnosticReport', methods: ['create']
109
+ }
110
+
111
+ create_diagnostic_report('specimen/spec-100.xml', ['observation/obs-100.xml', 'observation/obs-101.xml'], 'diagnostic_report/dr-100.xml', :diag_report_1, @records[:diag_order_1])
112
+ create_diagnostic_report('specimen/spec-uslab-example1.xml', ['observation/obs-200.xml'], 'diagnostic_report/dr-200.xml', :diag_report_2, @records[:diag_order_2])
113
+ create_diagnostic_report('specimen/spec-uslab-example1.xml', ['observation/obs-300.xml', 'observation/obs-301.xml', 'observation/obs-302.xml', 'observation/obs-303.xml', 'observation/obs-304.xml'], 'diagnostic_report/dr-300.xml', :diag_report_3, @records[:diag_order_3])
114
+ create_diagnostic_report('specimen/spec-400.xml', ['observation/obs-400.xml', 'observation/obs-401.xml', 'observation/obs-402.xml', 'observation/obs-403.xml', 'observation/obs-404.xml', 'observation/obs-405.xml', 'observation/obs-406.xml', 'observation/obs-407.xml', 'observation/obs-408.xml'], 'diagnostic_report/dr-400.xml', :diag_report_4, @records[:diag_order_4])
115
+
116
+ end
117
+
118
+ test 'C12T11_5', 'Retrieve DiagnosticReport' do
119
+ metadata {
120
+ links "#{REST_SPEC_LINK}#read"
121
+ links 'http://wiki.hl7.org/index.php?title=201605_LabOrder#Step_4_Receive_Lab_Results'
122
+ requires resource: 'DiagnosticReport', methods: ['read']
123
+ validates resource: 'DiagnosticReport', methods: ['read']
124
+ }
125
+
126
+ get_diagnostic_report(:diag_report_1)
127
+ get_diagnostic_report(:diag_report_2)
128
+ get_diagnostic_report(:diag_report_3)
129
+ get_diagnostic_report(:diag_report_4)
130
+ end
131
+
132
+ test 'C12T11_6', 'Update DiagnosticOrder' do
133
+ metadata {
134
+ links "#{REST_SPEC_LINK}#read"
135
+ links "#{REST_SPEC_LINK}#update"
136
+ links 'http://wiki.hl7.org/index.php?title=201605_LabOrder#Step_4_Receive_Lab_Results'
137
+ requires resource: 'DiagnosticOrder', methods: ['read', 'update']
138
+ validates resource: 'DiagnosticOrder', methods: ['read', 'update']
139
+ }
140
+ update_diagnostic_order(:diag_order_1)
141
+ update_diagnostic_order(:diag_order_2)
142
+ update_diagnostic_order(:diag_order_3)
143
+ update_diagnostic_order(:diag_order_4)
144
+ end
145
+
146
+ private
147
+
148
+ def create_order(fixture_path, order_name)
149
+ order = @resources.load_fixture(fixture_path)
150
+ order.date = DateTime.now.iso8601
151
+ order.subject.reference = @records[:patient]
152
+ order.source.reference = @records[:provider]
153
+
154
+ create_object(order, order_name)
155
+ end
156
+
157
+ def create_diagnostic_order(fixture_path, order_name)
158
+ diag_order = @resources.load_fixture(fixture_path)
159
+ diag_order.subject.reference = @records[:patient]
160
+ diag_order.orderer.reference = @records[:provider]
161
+
162
+ create_object(diag_order, order_name)
163
+ end
164
+
165
+ def create_order_response(fixture_path, response_name, reference_order)
166
+ order_response = @resources.load_fixture(fixture_path)
167
+ order_response.date = DateTime.now.iso8601
168
+ order_response.request.reference = reference_order
169
+ order_response.who.reference = @records[:organization]
170
+
171
+ create_object(order_response, response_name)
172
+ end
173
+
174
+ def create_diagnostic_report(specimen_fixture_path, observation_fixture_paths, diagnostic_report_fixture_path, dr_name, diag_order)
175
+ specimen = @resources.load_fixture(specimen_fixture_path)
176
+ specimen.subject.reference = @records[:patient]
177
+ create_object(specimen, "#{dr_name}_specimen".to_sym)
178
+
179
+ diag_report = @resources.load_fixture(diagnostic_report_fixture_path)
180
+ diag_report.subject.reference = @records[:patient]
181
+ diag_report.issued = DateTime.now.iso8601
182
+ diag_report.effectiveDateTime = DateTime.now.iso8601
183
+ diag_report.performer.reference = @records[:performer]
184
+ diag_report.request << FHIR::Reference.new(reference: diag_order)
185
+ diag_report.specimen << FHIR::Reference.new(reference: specimen)
186
+
187
+ observation_fixture_paths.each_with_index do |obs, index|
188
+ observation = @resources.load_fixture(obs)
189
+ observation.specimen.reference = specimen
190
+ observation.subject.reference = @records[:patient]
191
+ observation_name = "#{dr_name}_observation_{index}".to_sym
192
+ create_object(observation, observation_name)
193
+ diag_report.result << FHIR::Reference.new(reference: observation)
194
+ end
195
+
196
+ create_object(diag_report, dr_name)
197
+ end
198
+
199
+ def get_diagnostic_report(dr_name)
200
+ reply = @client.read FHIR::DiagnosticReport, @records[dr_name].xmlId
201
+ assert_response_ok(reply)
202
+
203
+ assert reply.resource.equals?(@records[dr_name], ['_id', 'text', 'meta', 'presentedForm']), "Diagnostic Report #{dr_name.to_s} doesn't match retrieved Diagnostic Report"
204
+ end
205
+
206
+ def update_diagnostic_order(order_name)
207
+ reply = @client.read FHIR::DiagnosticOrder, @records[order_name].xmlId
208
+ assert_response_ok(reply)
209
+
210
+ assert reply.resource.equals? @records[order_name], ['_id', 'text', 'meta']
211
+
212
+ assert reply.resource.status == 'requested'
213
+
214
+ @records[order_name].status = 'completed'
215
+
216
+ reply = @client.update @records[order_name], @records[order_name].xmlId
217
+ assert_response_ok(reply)
218
+
219
+ reply = @client.read FHIR::DiagnosticOrder, @records[order_name].xmlId
220
+ assert_response_ok(reply)
221
+
222
+ assert reply.resource.equals? @records[order_name], ['_id', 'text', 'meta']
223
+
224
+ assert reply.resource.status == 'completed'
225
+
226
+ end
227
+
228
+ def create_object(obj, obj_sym)
229
+ reply = @client.create obj
230
+ assert_response_ok(reply)
231
+ obj.xmlId = reply.id
232
+ @records[obj_sym] = obj
233
+
234
+ warning { assert_valid_resource_content_type_present(reply) }
235
+ warning { assert_valid_content_location_present(reply) }
236
+ end
237
+ end
238
+ end
239
+ end