plan_executor 1.0.2 → 1.8.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (420) hide show
  1. checksums.yaml +4 -4
  2. data/.gitignore +1 -0
  3. data/.travis.yml +3 -2
  4. data/Gemfile +3 -6
  5. data/Gemfile.lock +52 -48
  6. data/README.md +2 -2
  7. data/fixtures/attachment/ccda_pdf.pdf +0 -0
  8. data/fixtures/attachment/ccda_pdf_base64.txt +2489 -0
  9. data/fixtures/attachment/ccda_structured.xml +1976 -0
  10. data/fixtures/attachment/ccda_unstructured.xml +2563 -0
  11. data/fixtures/daf/conformance-daf-query-responder.xml +2024 -193
  12. data/fixtures/diagnostic_report/diagnosticreport-familyhistory-create.xml +67 -0
  13. data/fixtures/diagnostic_report/diagnosticreport-hlatyping-create.xml +64 -0
  14. data/fixtures/diagnostic_report/diagnosticreport-pathologyreport-create.xml +312 -0
  15. data/fixtures/diagnostic_report/dr-100.xml +3 -3
  16. data/fixtures/diagnostic_report/dr-200.xml +5 -5
  17. data/fixtures/diagnostic_report/dr-300.xml +3 -3
  18. data/fixtures/diagnostic_report/dr-400.xml +3 -3
  19. data/fixtures/{diagnostic_order → diagnostic_request}/do-100.xml +57 -64
  20. data/fixtures/diagnostic_request/do-200.xml +73 -0
  21. data/fixtures/{diagnostic_order → diagnostic_request}/do-300.xml +73 -91
  22. data/{lib/tests/testscripts/xml/Connectathon11/Track7-LabOrderLabReport/_reference/resources/DiagnosticOrder → fixtures/diagnostic_request}/do-400.xml +74 -88
  23. data/fixtures/family_member_history/familymemberhistory-familyhistory-create.xml +27 -0
  24. data/fixtures/financial/claim-example-oral-average.xml +199 -0
  25. data/fixtures/financial/claim-example-oral-orthoplan.xml +298 -0
  26. data/fixtures/financial/claim-example.xml +98 -0
  27. data/fixtures/financial/eligibilityrequest-example.xml +40 -0
  28. data/fixtures/observation/obs-401.xml +7 -17
  29. data/fixtures/observation/obs-402.xml +7 -17
  30. data/fixtures/observation/obs-403.xml +4 -29
  31. data/fixtures/observation/obs-407.xml +4 -11
  32. data/fixtures/observation/observation-datawarehouse-create.xml +72 -0
  33. data/fixtures/observation/observation-familyhistory-create.xml +61 -0
  34. data/fixtures/observation/observation-germline-create.xml +72 -0
  35. data/fixtures/observation/observation-register-create.xml +72 -0
  36. data/fixtures/patch/medicationrequest-simple.xml +16 -0
  37. data/fixtures/patient/patient-example-updated.xml +1 -7
  38. data/fixtures/patient/patient-example-us-extensions.xml +119 -0
  39. data/fixtures/patient/patient-example.xml +46 -27
  40. data/fixtures/patient/patient-familyhistory-create.xml +45 -0
  41. data/fixtures/patient/patient-register-create.xml +47 -0
  42. data/fixtures/practitioner/practitioner-register-create.xml +32 -0
  43. data/fixtures/record/condition-example-f201-fever.xml +54 -49
  44. data/fixtures/record/condition-example-f205-infection.xml +16 -15
  45. data/fixtures/record/diagnosticreport-example-f201-brainct.xml +45 -18
  46. data/fixtures/record/encounter-example-f201-20130404.xml +42 -15
  47. data/fixtures/record/encounter-example-f202-20130128.xml +57 -15
  48. data/fixtures/record/observation-example-f202-temperature.xml +85 -60
  49. data/fixtures/record/organization-example-f201-aumc.xml +87 -4
  50. data/fixtures/record/organization-example-f203-bumc.xml +53 -4
  51. data/fixtures/record/patient-example-f201-roel.xml +108 -8
  52. data/fixtures/record/practitioner-example-f201-ab.xml +73 -14
  53. data/fixtures/record/procedure-example-f201-tpf.xml +39 -9
  54. data/fixtures/scheduling/slot-simple.xml +1 -1
  55. data/fixtures/sequence/sequence-register-create.xml +31 -0
  56. data/fixtures/specimen/spec-100.xml +8 -8
  57. data/fixtures/specimen/spec-400.xml +11 -11
  58. data/fixtures/specimen/spec-uslab-example1.xml +11 -11
  59. data/fixtures/specimen/specimen-familyhistory-create.xml +54 -0
  60. data/fixtures/specimen/specimen-register-create.xml +49 -0
  61. data/fixtures/terminology/codesystem-data-types.json +230 -0
  62. data/fixtures/terminology/codesystem-resource-types.json +482 -0
  63. data/fixtures/terminology/codesystem-simple.xml +129 -0
  64. data/fixtures/terminology/conceptmap-example.xml +141 -0
  65. data/fixtures/terminology/v2-codesystem.json +1297 -0
  66. data/fixtures/terminology/v2-valueset.json +16 -0
  67. data/fixtures/terminology/valueset-defined-types.json +25 -0
  68. data/fixtures/terminology/valueset-example.xml +111 -0
  69. data/fixtures/validation/observation.profile.xml +1534 -253
  70. data/fixtures/validation/observations/observation-example.xml +66 -0
  71. data/lib/FHIR_structure.json +129 -82
  72. data/lib/daf_resource_generator.rb +7 -7
  73. data/lib/data/resources.rb +50 -30
  74. data/lib/ext/client.rb +2 -2
  75. data/lib/plan_executor.rb +6 -1
  76. data/lib/resource_generator.rb +413 -212
  77. data/lib/tasks/tasks.rake +151 -20
  78. data/lib/tests/assertions.rb +24 -18
  79. data/lib/tests/base_test.rb +17 -3
  80. data/lib/tests/suites/argonaut_provider_connectathon_test.rb +234 -0
  81. data/lib/tests/suites/base_suite.rb +7 -3
  82. data/lib/tests/suites/connectathon_attachment_track_test.rb +124 -0
  83. data/lib/tests/suites/connectathon_audit_track.rb +113 -69
  84. data/lib/tests/suites/connectathon_care_plan_track.rb +237 -0
  85. data/lib/tests/suites/connectathon_fetch_patient_record.rb +40 -39
  86. data/lib/tests/suites/connectathon_financial_track.rb +231 -23
  87. data/lib/tests/suites/connectathon_genomics_track_test.rb +255 -0
  88. data/lib/tests/suites/connectathon_lab_order_track.rb +131 -104
  89. data/lib/tests/suites/connectathon_patch_track.rb +125 -0
  90. data/lib/tests/suites/connectathon_patient_track.rb +75 -68
  91. data/lib/tests/suites/connectathon_profile_validation.rb +9 -8
  92. data/lib/tests/suites/connectathon_scheduling_track.rb +127 -70
  93. data/lib/tests/suites/connectathon_terminology_track.rb +211 -34
  94. data/lib/tests/suites/daf_profiles_test.rb +112 -72
  95. data/lib/tests/suites/format_test.rb +113 -255
  96. data/lib/tests/suites/history_test.rb +72 -68
  97. data/lib/tests/suites/read_test.rb +31 -27
  98. data/lib/tests/suites/resource_test.rb +283 -85
  99. data/lib/tests/suites/search_test.rb +5 -3
  100. data/lib/tests/suites/search_test_robust.rb +8 -76
  101. data/lib/tests/suites/sprinkler_search_test.rb +104 -84
  102. data/lib/tests/suites/suite_engine.rb +17 -23
  103. data/lib/tests/suites/transaction_test.rb +117 -174
  104. data/lib/tests/testscripts/base_testscript.rb +425 -189
  105. data/lib/tests/testscripts/scripts/connectathon/Patient-01-Intro/Client Assigned Id/connectathon-14-patient-base-client-id-json.xml +517 -0
  106. data/lib/tests/testscripts/scripts/connectathon/Patient-01-Intro/Client Assigned Id/connectathon-14-patient-base-client-id-xml.xml +517 -0
  107. data/lib/tests/testscripts/scripts/connectathon/Patient-01-Intro/Client Assigned Id/connectathon-14-patient-bonus-client-id-json.xml +648 -0
  108. data/lib/tests/testscripts/scripts/connectathon/Patient-01-Intro/Client Assigned Id/connectathon-14-patient-bonus-client-id-xml.xml +648 -0
  109. data/lib/tests/testscripts/scripts/connectathon/Patient-01-Intro/README.html +68 -0
  110. data/lib/tests/testscripts/scripts/connectathon/Patient-01-Intro/Server Assigned Id/connectathon-14-patient-base-server-id-json.xml +515 -0
  111. data/lib/tests/testscripts/scripts/connectathon/Patient-01-Intro/Server Assigned Id/connectathon-14-patient-base-server-id-xml.xml +515 -0
  112. data/lib/tests/testscripts/scripts/connectathon/Patient-01-Intro/Server Assigned Id/connectathon-14-patient-bonus-server-id-json.xml +645 -0
  113. data/lib/tests/testscripts/scripts/connectathon/Patient-01-Intro/Server Assigned Id/connectathon-14-patient-bonus-server-id-xml.xml +642 -0
  114. data/lib/tests/testscripts/scripts/connectathon/Patient-01-Intro/_reference/capabilities/PatientCapabilityStatement.xml +43 -0
  115. data/lib/tests/testscripts/{xml/Connectathon11/Track1-Patient → scripts/connectathon/Patient-01-Intro}/_reference/resources/patient-create-PeterChalmers-min.json +1 -3
  116. data/lib/tests/testscripts/{xml/Connectathon11/Track1-Patient → scripts/connectathon/Patient-01-Intro}/_reference/resources/patient-create-PeterChalmers-min.xml +0 -0
  117. data/lib/tests/testscripts/{xml/Connectathon11/Track1-Patient → scripts/connectathon/Patient-01-Intro}/_reference/resources/patient-create-PeterChalmers.json +5 -10
  118. data/lib/tests/testscripts/{xml/Connectathon11/Track1-Patient → scripts/connectathon/Patient-01-Intro}/_reference/resources/patient-create-PeterChalmers.xml +5 -5
  119. data/lib/tests/testscripts/{xml/Connectathon11/Track1-Patient → scripts/connectathon/Patient-01-Intro}/_reference/resources/patient-create-bonus-PeterChalmers-min.json +1 -3
  120. data/lib/tests/testscripts/{xml/Connectathon11/Track1-Patient → scripts/connectathon/Patient-01-Intro}/_reference/resources/patient-create-bonus-PeterChalmers-min.xml +0 -0
  121. data/lib/tests/testscripts/{xml/Connectathon11/Track1-Patient → scripts/connectathon/Patient-01-Intro}/_reference/resources/patient-create-bonus-PeterChalmers.json +5 -10
  122. data/lib/tests/testscripts/{xml/Connectathon11/Track1-Patient → scripts/connectathon/Patient-01-Intro}/_reference/resources/patient-create-bonus-PeterChalmers.xml +4 -5
  123. data/lib/tests/testscripts/scripts/connectathon/Patient-01-Intro/_reference/resources/patient-create-client-id-PeterChalmers.json +96 -0
  124. data/lib/tests/testscripts/scripts/connectathon/Patient-01-Intro/_reference/resources/patient-create-client-id-PeterChalmers.xml +103 -0
  125. data/lib/tests/testscripts/scripts/connectathon/Patient-01-Intro/_reference/resources/patient-create-client-id-bonus-PeterChalmers.json +104 -0
  126. data/lib/tests/testscripts/scripts/connectathon/Patient-01-Intro/_reference/resources/patient-create-client-id-bonus-PeterChalmers.xml +108 -0
  127. data/lib/tests/testscripts/{xml/Connectathon11/Track1-Patient → scripts/connectathon/Patient-01-Intro}/_reference/resources/patient-update-PeterChalmers-min.json +1 -3
  128. data/lib/tests/testscripts/{xml/Connectathon11/Track1-Patient → scripts/connectathon/Patient-01-Intro}/_reference/resources/patient-update-PeterChalmers-min.xml +0 -0
  129. data/lib/tests/testscripts/{xml/Connectathon11/Track1-Patient → scripts/connectathon/Patient-01-Intro}/_reference/resources/patient-update-PeterChalmers.json +6 -10
  130. data/lib/tests/testscripts/{xml/Connectathon11/Track1-Patient → scripts/connectathon/Patient-01-Intro}/_reference/resources/patient-update-PeterChalmers.xml +6 -5
  131. data/lib/tests/testscripts/{xml/Connectathon11/Track1-Patient → scripts/connectathon/Patient-01-Intro}/_reference/resources/patient-update-bonus1-PeterChalmers-min.json +1 -3
  132. data/lib/tests/testscripts/{xml/Connectathon11/Track1-Patient → scripts/connectathon/Patient-01-Intro}/_reference/resources/patient-update-bonus1-PeterChalmers-min.xml +0 -0
  133. data/lib/tests/testscripts/{xml/Connectathon11/Track1-Patient → scripts/connectathon/Patient-01-Intro}/_reference/resources/patient-update-bonus1-PeterChalmers.json +7 -11
  134. data/lib/tests/testscripts/{xml/Connectathon11/Track1-Patient → scripts/connectathon/Patient-01-Intro}/_reference/resources/patient-update-bonus1-PeterChalmers.xml +5 -5
  135. data/lib/tests/testscripts/{xml/Connectathon11/Track1-Patient → scripts/connectathon/Patient-01-Intro}/_reference/resources/patient-update-bonus2-PeterChalmers-min.json +2 -4
  136. data/lib/tests/testscripts/{xml/Connectathon11/Track1-Patient → scripts/connectathon/Patient-01-Intro}/_reference/resources/patient-update-bonus2-PeterChalmers-min.xml +1 -1
  137. data/lib/tests/testscripts/{xml/Connectathon11/Track1-Patient → scripts/connectathon/Patient-01-Intro}/_reference/resources/patient-update-bonus2-PeterChalmers.json +7 -11
  138. data/lib/tests/testscripts/{xml/Connectathon11/Track1-Patient → scripts/connectathon/Patient-01-Intro}/_reference/resources/patient-update-bonus2-PeterChalmers.xml +8 -7
  139. data/lib/tests/testscripts/scripts/connectathon/Patient-02-Formal/FHIRClient/01-RegisterPatient/connectathon-14-patient-fhirclient-01-register-client-id-xml.xml +306 -0
  140. data/lib/tests/testscripts/scripts/connectathon/Patient-02-Formal/FHIRClient/01-RegisterPatient/connectathon-14-patient-fhirclient-01-register-server-id-xml.xml +317 -0
  141. data/lib/tests/testscripts/scripts/connectathon/Patient-02-Formal/FHIRClient/02-PatientUpdate/connectathon-14-patient-fhirclient-02-update-client-id-xml.xml +346 -0
  142. data/lib/tests/testscripts/scripts/connectathon/Patient-02-Formal/FHIRClient/02-PatientUpdate/connectathon-14-patient-fhirclient-02-update-server-id-xml.xml +385 -0
  143. data/lib/tests/testscripts/scripts/connectathon/Patient-02-Formal/FHIRClient/_reference/capabilities/PatientCapabilityStatement.json +50 -0
  144. data/lib/tests/testscripts/{xml/Connectathon11/Track1-Patient/_reference/conformance/PatientConformance.xml → scripts/connectathon/Patient-02-Formal/FHIRClient/_reference/capabilities/PatientCapabilityStatement.xml} +10 -2
  145. data/lib/tests/testscripts/scripts/connectathon/Patient-02-Formal/FHIRClient/_reference/resources/patient-create-client-id.json +21 -0
  146. data/lib/tests/testscripts/scripts/connectathon/Patient-02-Formal/FHIRClient/_reference/resources/patient-create-client-id.xml +15 -0
  147. data/lib/tests/testscripts/scripts/connectathon/Patient-02-Formal/FHIRClient/_reference/resources/patient-create-server-id.json +20 -0
  148. data/lib/tests/testscripts/scripts/connectathon/Patient-02-Formal/FHIRClient/_reference/resources/patient-create-server-id.xml +14 -0
  149. data/lib/tests/testscripts/scripts/connectathon/Patient-02-Formal/FHIRClient/_reference/resources/patient-update-client-id.json +21 -0
  150. data/lib/tests/testscripts/scripts/connectathon/Patient-02-Formal/FHIRClient/_reference/resources/patient-update-client-id.xml +15 -0
  151. data/lib/tests/testscripts/scripts/connectathon/Patient-02-Formal/FHIRClient/_reference/resources/patient-update-server-id.json +20 -0
  152. data/lib/tests/testscripts/scripts/connectathon/Patient-02-Formal/FHIRClient/_reference/resources/patient-update-server-id.xml +14 -0
  153. data/lib/tests/testscripts/scripts/connectathon/Patient-02-Formal/FHIRServer/01-RegisterPatient/connectathon-14-patient-fhirserver-01-register-client-id-json.xml +262 -0
  154. data/lib/tests/testscripts/scripts/connectathon/Patient-02-Formal/FHIRServer/01-RegisterPatient/connectathon-14-patient-fhirserver-01-register-client-id-xml.xml +262 -0
  155. data/lib/tests/testscripts/scripts/connectathon/Patient-02-Formal/FHIRServer/01-RegisterPatient/connectathon-14-patient-fhirserver-01-register-server-id-json.xml +273 -0
  156. data/lib/tests/testscripts/scripts/connectathon/Patient-02-Formal/FHIRServer/01-RegisterPatient/connectathon-14-patient-fhirserver-01-register-server-id-xml.xml +273 -0
  157. data/lib/tests/testscripts/scripts/connectathon/Patient-02-Formal/FHIRServer/02-PatientUpdate/connectathon-14-patient-fhirserver-02-update-client-id-json.xml +290 -0
  158. data/lib/tests/testscripts/scripts/connectathon/Patient-02-Formal/FHIRServer/02-PatientUpdate/connectathon-14-patient-fhirserver-02-update-client-id-xml.xml +290 -0
  159. data/lib/tests/testscripts/scripts/connectathon/Patient-02-Formal/FHIRServer/02-PatientUpdate/connectathon-14-patient-fhirserver-02-update-server-id-json.xml +326 -0
  160. data/lib/tests/testscripts/scripts/connectathon/Patient-02-Formal/FHIRServer/02-PatientUpdate/connectathon-14-patient-fhirserver-02-update-server-id-xml.xml +326 -0
  161. data/lib/tests/testscripts/scripts/connectathon/Patient-02-Formal/FHIRServer/03-PatientRead/connectathon-14-patient-fhirserver-03-read-client-id-json.xml +247 -0
  162. data/lib/tests/testscripts/scripts/connectathon/Patient-02-Formal/FHIRServer/03-PatientRead/connectathon-14-patient-fhirserver-03-read-client-id-xml.xml +247 -0
  163. data/lib/tests/testscripts/scripts/connectathon/Patient-02-Formal/FHIRServer/03-PatientRead/connectathon-14-patient-fhirserver-03-read-server-id-json.xml +282 -0
  164. data/lib/tests/testscripts/scripts/connectathon/Patient-02-Formal/FHIRServer/03-PatientRead/connectathon-14-patient-fhirserver-03-read-server-id-xml.xml +281 -0
  165. data/lib/tests/testscripts/scripts/connectathon/Patient-02-Formal/FHIRServer/04-PatientHistory/connectathon-14-patient-fhirserver-04-history-client-id-json.xml +330 -0
  166. data/lib/tests/testscripts/scripts/connectathon/Patient-02-Formal/FHIRServer/04-PatientHistory/connectathon-14-patient-fhirserver-04-history-client-id-xml.xml +330 -0
  167. data/lib/tests/testscripts/scripts/connectathon/Patient-02-Formal/FHIRServer/04-PatientHistory/connectathon-14-patient-fhirserver-04-history-server-id-json.xml +366 -0
  168. data/lib/tests/testscripts/scripts/connectathon/Patient-02-Formal/FHIRServer/04-PatientHistory/connectathon-14-patient-fhirserver-04-history-server-id-xml.xml +366 -0
  169. data/lib/tests/testscripts/scripts/connectathon/Patient-02-Formal/FHIRServer/05-PatientVRead/connectathon-14-patient-fhirserver-05-vread-client-id-json.xml +527 -0
  170. data/lib/tests/testscripts/scripts/connectathon/Patient-02-Formal/FHIRServer/05-PatientVRead/connectathon-14-patient-fhirserver-05-vread-client-id-xml.xml +527 -0
  171. data/lib/tests/testscripts/scripts/connectathon/Patient-02-Formal/FHIRServer/05-PatientVRead/connectathon-14-patient-fhirserver-05-vread-server-id-json.xml +519 -0
  172. data/lib/tests/testscripts/scripts/connectathon/Patient-02-Formal/FHIRServer/05-PatientVRead/connectathon-14-patient-fhirserver-05-vread-server-id-xml.xml +519 -0
  173. data/lib/tests/testscripts/scripts/connectathon/Patient-02-Formal/FHIRServer/06-PatientSearching/connectathon-14-patient-fhirserver-06-search-client-id-json.xml +290 -0
  174. data/lib/tests/testscripts/scripts/connectathon/Patient-02-Formal/FHIRServer/06-PatientSearching/connectathon-14-patient-fhirserver-06-search-client-id-xml.xml +290 -0
  175. data/lib/tests/testscripts/scripts/connectathon/Patient-02-Formal/FHIRServer/06-PatientSearching/connectathon-14-patient-fhirserver-06-search-server-id-json.xml +288 -0
  176. data/lib/tests/testscripts/scripts/connectathon/Patient-02-Formal/FHIRServer/06-PatientSearching/connectathon-14-patient-fhirserver-06-search-server-id-xml.xml +288 -0
  177. data/lib/tests/testscripts/scripts/connectathon/Patient-02-Formal/FHIRServer/07-PatientDeletion/connectathon-14-patient-fhirserver-07-delete-client-id-json.xml +252 -0
  178. data/lib/tests/testscripts/scripts/connectathon/Patient-02-Formal/FHIRServer/07-PatientDeletion/connectathon-14-patient-fhirserver-07-delete-client-id-xml.xml +252 -0
  179. data/lib/tests/testscripts/scripts/connectathon/Patient-02-Formal/FHIRServer/07-PatientDeletion/connectathon-14-patient-fhirserver-07-delete-server-id-json.xml +284 -0
  180. data/lib/tests/testscripts/scripts/connectathon/Patient-02-Formal/FHIRServer/07-PatientDeletion/connectathon-14-patient-fhirserver-07-delete-server-id-xml.xml +284 -0
  181. data/lib/tests/testscripts/scripts/connectathon/Patient-02-Formal/FHIRServer/99-PatientAll/connectathon-14-patient-fhirserver-99-all-client-id-json.xml +897 -0
  182. data/lib/tests/testscripts/scripts/connectathon/Patient-02-Formal/FHIRServer/99-PatientAll/connectathon-14-patient-fhirserver-99-all-client-id-xml.xml +897 -0
  183. data/lib/tests/testscripts/scripts/connectathon/Patient-02-Formal/FHIRServer/99-PatientAll/connectathon-14-patient-fhirserver-99-all-server-id-json.xml +963 -0
  184. data/lib/tests/testscripts/scripts/connectathon/Patient-02-Formal/FHIRServer/99-PatientAll/connectathon-14-patient-fhirserver-99-all-server-id-xml.xml +963 -0
  185. data/lib/tests/testscripts/scripts/connectathon/Patient-02-Formal/FHIRServer/_reference/capabilities/PatientCapabilityStatement.json +50 -0
  186. data/lib/tests/testscripts/scripts/connectathon/Patient-02-Formal/FHIRServer/_reference/capabilities/PatientCapabilityStatement.xml +42 -0
  187. data/lib/tests/testscripts/scripts/connectathon/Patient-02-Formal/FHIRServer/_reference/resources/patient-create-client-id.json +86 -0
  188. data/lib/tests/testscripts/scripts/connectathon/Patient-02-Formal/FHIRServer/_reference/resources/patient-create-client-id.xml +62 -0
  189. data/lib/tests/testscripts/scripts/connectathon/Patient-02-Formal/FHIRServer/_reference/resources/patient-create-server-id.json +85 -0
  190. data/lib/tests/testscripts/scripts/connectathon/Patient-02-Formal/FHIRServer/_reference/resources/patient-create-server-id.xml +61 -0
  191. data/lib/tests/testscripts/scripts/connectathon/Patient-02-Formal/FHIRServer/_reference/resources/patient-update-client-id.json +86 -0
  192. data/lib/tests/testscripts/scripts/connectathon/Patient-02-Formal/FHIRServer/_reference/resources/patient-update-client-id.xml +62 -0
  193. data/lib/tests/testscripts/scripts/connectathon/Patient-02-Formal/FHIRServer/_reference/resources/patient-update-server-id.json +86 -0
  194. data/lib/tests/testscripts/scripts/connectathon/Patient-02-Formal/FHIRServer/_reference/resources/patient-update-server-id.xml +62 -0
  195. data/lib/tests/testscripts/scripts/spec/_reference/resources/patient-example-update.json +145 -0
  196. data/lib/tests/testscripts/scripts/spec/_reference/resources/patient-example.json +146 -0
  197. data/lib/tests/testscripts/scripts/spec/testscript-example-history.xml +191 -0
  198. data/lib/tests/testscripts/scripts/spec/testscript-example-multisystem.xml +190 -0
  199. data/lib/tests/testscripts/scripts/spec/testscript-example-readtest.xml +178 -0
  200. data/lib/tests/testscripts/scripts/spec/testscript-example-rule.xml +266 -0
  201. data/lib/tests/testscripts/scripts/spec/testscript-example-search.xml +177 -0
  202. data/lib/tests/testscripts/scripts/spec/testscript-example-update.xml +163 -0
  203. data/lib/tests/testscripts/scripts/spec/testscript-example.xml +228 -0
  204. data/lib/tests/testscripts/testscript_engine.rb +36 -22
  205. data/logs/.keep +0 -0
  206. data/plan_executor.gemspec +11 -3
  207. data/test/test_helper.rb +3 -3
  208. data/test/unit/fixtures_test.rb +24 -24
  209. data/test/unit/metadata_test.rb +19 -9
  210. data/test/unit/resource_generator_test.rb +20 -0
  211. metadata +244 -249
  212. data/fixtures/diagnostic_order/do-200.xml +0 -121
  213. data/fixtures/diagnostic_order/do-400.xml +0 -88
  214. data/fixtures/financial/claim-example-average.xml +0 -168
  215. data/fixtures/financial/claim-example-simple.xml +0 -67
  216. data/fixtures/order/order-100.xml +0 -61
  217. data/fixtures/order/order-200.xml +0 -61
  218. data/fixtures/order/order-300.xml +0 -61
  219. data/fixtures/order/order-400.xml +0 -61
  220. data/fixtures/order_response/ordresp-100.xml +0 -79
  221. data/fixtures/order_response/ordresp-110.xml +0 -79
  222. data/fixtures/order_response/ordresp-200.xml +0 -79
  223. data/fixtures/order_response/ordresp-210.xml +0 -79
  224. data/fixtures/order_response/ordresp-300.xml +0 -79
  225. data/fixtures/order_response/ordresp-310.xml +0 -79
  226. data/fixtures/order_response/ordresp-400.xml +0 -79
  227. data/fixtures/order_response/ordresp-410.xml +0 -79
  228. data/fixtures/patient/patient-example-us-extensions(us01).xml +0 -81
  229. data/fixtures/patient/patient-format-example.xml +0 -101
  230. data/fixtures/validation/observations/observation-example(example).xml +0 -50
  231. data/lib/tests/suites/argonaut_resprint_1_test.rb +0 -260
  232. data/lib/tests/suites/argonaut_resprint_2_test.rb +0 -369
  233. data/lib/tests/suites/argonaut_resprint_3_test.rb +0 -309
  234. data/lib/tests/suites/argonaut_sprint_1_test.rb +0 -187
  235. data/lib/tests/suites/argonaut_sprint_2_test.rb +0 -115
  236. data/lib/tests/suites/argonaut_sprint_3_test.rb +0 -208
  237. data/lib/tests/suites/argonaut_sprint_4_test.rb +0 -335
  238. data/lib/tests/suites/argonaut_sprint_5_test.rb +0 -196
  239. data/lib/tests/suites/argonaut_sprint_6_test.rb +0 -243
  240. data/lib/tests/suites/argonaut_sprint_7_test.rb +0 -161
  241. data/lib/tests/testscripts/xml/Connectathon11/Track1-Patient/Client Assigned Id/track1-patient-base-client-id-json.xml +0 -348
  242. data/lib/tests/testscripts/xml/Connectathon11/Track1-Patient/Client Assigned Id/track1-patient-base-client-id-xml.xml +0 -348
  243. data/lib/tests/testscripts/xml/Connectathon11/Track1-Patient/Client Assigned Id/track1-patient-bonus-client-id-json.xml +0 -420
  244. data/lib/tests/testscripts/xml/Connectathon11/Track1-Patient/Client Assigned Id/track1-patient-bonus-client-id-xml.xml +0 -420
  245. data/lib/tests/testscripts/xml/Connectathon11/Track1-Patient/README.html +0 -68
  246. data/lib/tests/testscripts/xml/Connectathon11/Track1-Patient/Server Assigned Id/track1-patient-base-server-id-json.xml +0 -352
  247. data/lib/tests/testscripts/xml/Connectathon11/Track1-Patient/Server Assigned Id/track1-patient-base-server-id-xml.xml +0 -352
  248. data/lib/tests/testscripts/xml/Connectathon11/Track1-Patient/Server Assigned Id/track1-patient-bonus-server-id-json.xml +0 -421
  249. data/lib/tests/testscripts/xml/Connectathon11/Track1-Patient/Server Assigned Id/track1-patient-bonus-server-id-xml.xml +0 -421
  250. data/lib/tests/testscripts/xml/Connectathon11/Track11-SDC/_reference/C-CDA_R2-1_CCD-ussg.xml +0 -3414
  251. data/lib/tests/testscripts/xml/Connectathon11/Track11-SDC/_reference/resources/parameters-A1-empty-on-instance.xml +0 -9
  252. data/lib/tests/testscripts/xml/Connectathon11/Track11-SDC/_reference/resources/parameters-A2-empty-by-ref.xml +0 -15
  253. data/lib/tests/testscripts/xml/Connectathon11/Track11-SDC/_reference/resources/parameters-A3-empty-by-identifier.xml +0 -13
  254. data/lib/tests/testscripts/xml/Connectathon11/Track11-SDC/_reference/resources/parameters-A4-empty-by-contained.xml +0 -15
  255. data/lib/tests/testscripts/xml/Connectathon11/Track11-SDC/_reference/resources/parameters-B1-CCDA-on-instance.xml +0 -15
  256. data/lib/tests/testscripts/xml/Connectathon11/Track11-SDC/_reference/resources/parameters-B2-CCDA-by-ref.xml +0 -21
  257. data/lib/tests/testscripts/xml/Connectathon11/Track11-SDC/_reference/resources/parameters-B3-CCDA-by-identifier.xml +0 -19
  258. data/lib/tests/testscripts/xml/Connectathon11/Track11-SDC/_reference/resources/parameters-B4-CCDA-by-contained.xml +0 -21
  259. data/lib/tests/testscripts/xml/Connectathon11/Track11-SDC/_reference/resources/questionnaire-sdc-profile-example-ussg-fht.xml +0 -3905
  260. data/lib/tests/testscripts/xml/Connectathon11/Track11-SDC/_reference/resources/questionnaireresponse-expected-ussg-fht-CCDA.xml +0 -190
  261. data/lib/tests/testscripts/xml/Connectathon11/Track11-SDC/_reference/resources/questionnaireresponse-expected-ussg-fht-empty.xml +0 -177
  262. data/lib/tests/testscripts/xml/Connectathon11/Track11-SDC/track11-sdc-prepop-xml.xml +0 -142
  263. data/lib/tests/testscripts/xml/Connectathon11/Track2-Terminology/Expand/Client Assigned Id/track2-ts-suite1-expand-client-id.xml +0 -925
  264. data/lib/tests/testscripts/xml/Connectathon11/Track2-Terminology/Expand/Client Assigned Id/track2-ts-suite2-expand-filter-client-id.xml +0 -930
  265. data/lib/tests/testscripts/xml/Connectathon11/Track2-Terminology/Expand/Server Assigned Id/track2-ts-suite1-expand-server-id.xml +0 -953
  266. data/lib/tests/testscripts/xml/Connectathon11/Track2-Terminology/Expand/Server Assigned Id/track2-ts-suite2-expand-filter-server-id.xml +0 -958
  267. data/lib/tests/testscripts/xml/Connectathon11/Track2-Terminology/Lookup/track2-ts-suite5-loinc-lookup-xml.xml +0 -224
  268. data/lib/tests/testscripts/xml/Connectathon11/Track2-Terminology/Lookup/track2-ts-suite5-snomed-lookup-xml.xml +0 -224
  269. data/lib/tests/testscripts/xml/Connectathon11/Track2-Terminology/README.html +0 -85
  270. data/lib/tests/testscripts/xml/Connectathon11/Track2-Terminology/Translate/track2-ts-suite6-translate-xml.xml +0 -224
  271. data/lib/tests/testscripts/xml/Connectathon11/Track2-Terminology/Validate-code/Client Assigned Id/track2-ts-suite3-validate-code-client-id.xml +0 -1807
  272. data/lib/tests/testscripts/xml/Connectathon11/Track2-Terminology/Validate-code/Client Assigned Id/track2-ts-suite4-validate-code-client-id.xml +0 -714
  273. data/lib/tests/testscripts/xml/Connectathon11/Track2-Terminology/Validate-code/Server Assigned Id/track2-ts-suite3-validate-code-server-id.xml +0 -1835
  274. data/lib/tests/testscripts/xml/Connectathon11/Track2-Terminology/Validate-code/Server Assigned Id/track2-ts-suite4-validate-code-server-id.xml +0 -742
  275. data/lib/tests/testscripts/xml/Connectathon11/Track2-Terminology/_reference/conformance/ConceptMapSuite6Conformance.xml +0 -11
  276. data/lib/tests/testscripts/xml/Connectathon11/Track2-Terminology/_reference/conformance/ValueSetSuite1Conformance.xml +0 -17
  277. data/lib/tests/testscripts/xml/Connectathon11/Track2-Terminology/_reference/conformance/ValueSetSuite2Conformance.xml +0 -17
  278. data/lib/tests/testscripts/xml/Connectathon11/Track2-Terminology/_reference/conformance/ValueSetSuite3Conformance.xml +0 -14
  279. data/lib/tests/testscripts/xml/Connectathon11/Track2-Terminology/_reference/conformance/ValueSetSuite4Conformance.xml +0 -14
  280. data/lib/tests/testscripts/xml/Connectathon11/Track2-Terminology/_reference/conformance/ValueSetSuite5Conformance.xml +0 -11
  281. data/lib/tests/testscripts/xml/Connectathon11/Track2-Terminology/_reference/input/extensional-case-1-input-4-2-a.xml +0 -11
  282. data/lib/tests/testscripts/xml/Connectathon11/Track2-Terminology/_reference/input/extensional-case-1-input-4-2-b.xml +0 -11
  283. data/lib/tests/testscripts/xml/Connectathon11/Track2-Terminology/_reference/input/extensional-case-1-input-4-3-a.xml +0 -13
  284. data/lib/tests/testscripts/xml/Connectathon11/Track2-Terminology/_reference/input/extensional-case-1-input-4-3-b.xml +0 -13
  285. data/lib/tests/testscripts/xml/Connectathon11/Track2-Terminology/_reference/input/extensional-case-1-input-4-4-a.xml +0 -15
  286. data/lib/tests/testscripts/xml/Connectathon11/Track2-Terminology/_reference/input/extensional-case-1-input-4-4-b.xml +0 -15
  287. data/lib/tests/testscripts/xml/Connectathon11/Track2-Terminology/_reference/input/lookup-loinc-input-5-2.xml +0 -10
  288. data/lib/tests/testscripts/xml/Connectathon11/Track2-Terminology/_reference/input/lookup-loinc-input-5-3.xml +0 -11
  289. data/lib/tests/testscripts/xml/Connectathon11/Track2-Terminology/_reference/input/lookup-snomed-input-5-2.xml +0 -10
  290. data/lib/tests/testscripts/xml/Connectathon11/Track2-Terminology/_reference/input/lookup-snomed-input-5-3.xml +0 -11
  291. data/lib/tests/testscripts/xml/Connectathon11/Track2-Terminology/_reference/input/translate-conceptmap-input-6-2.xml +0 -14
  292. data/lib/tests/testscripts/xml/Connectathon11/Track2-Terminology/_reference/input/translate-conceptmap-input-6-3.xml +0 -15
  293. data/lib/tests/testscripts/xml/Connectathon11/Track2-Terminology/_reference/output/extensional-case-1-expand-min.xml +0 -47
  294. data/lib/tests/testscripts/xml/Connectathon11/Track2-Terminology/_reference/output/extensional-case-1-filter-min.xml +0 -23
  295. data/lib/tests/testscripts/xml/Connectathon11/Track2-Terminology/_reference/output/extensional-case-2-expand-min.xml +0 -132
  296. data/lib/tests/testscripts/xml/Connectathon11/Track2-Terminology/_reference/output/extensional-case-2-filter-min.xml +0 -38
  297. data/lib/tests/testscripts/xml/Connectathon11/Track2-Terminology/_reference/output/extensional-case-3-expand-min.xml +0 -252
  298. data/lib/tests/testscripts/xml/Connectathon11/Track2-Terminology/_reference/output/extensional-case-3-filter-min.xml +0 -58
  299. data/lib/tests/testscripts/xml/Connectathon11/Track2-Terminology/_reference/output/extensional-case-4-expand-min.xml +0 -57
  300. data/lib/tests/testscripts/xml/Connectathon11/Track2-Terminology/_reference/output/extensional-case-4-filter-min.xml +0 -28
  301. data/lib/tests/testscripts/xml/Connectathon11/Track2-Terminology/_reference/output/intensional-case-1-expand-min.xml +0 -347
  302. data/lib/tests/testscripts/xml/Connectathon11/Track2-Terminology/_reference/output/intensional-case-1-filter-min.xml +0 -33
  303. data/lib/tests/testscripts/xml/Connectathon11/Track2-Terminology/_reference/output/intensional-case-2-expand-min.xml +0 -637
  304. data/lib/tests/testscripts/xml/Connectathon11/Track2-Terminology/_reference/output/intensional-case-2-filter-min.xml +0 -33
  305. data/lib/tests/testscripts/xml/Connectathon11/Track2-Terminology/_reference/output/intensional-case-3-filter-min.xml +0 -58
  306. data/lib/tests/testscripts/xml/Connectathon11/Track2-Terminology/_reference/output/lookup-loinc-min.xml +0 -11
  307. data/lib/tests/testscripts/xml/Connectathon11/Track2-Terminology/_reference/output/lookup-snomed-min.xml +0 -11
  308. data/lib/tests/testscripts/xml/Connectathon11/Track2-Terminology/_reference/output/suite3-invalid-min.xml +0 -10
  309. data/lib/tests/testscripts/xml/Connectathon11/Track2-Terminology/_reference/output/suite3-valid-min.xml +0 -7
  310. data/lib/tests/testscripts/xml/Connectathon11/Track2-Terminology/_reference/output/suite4-invalid-min.xml +0 -10
  311. data/lib/tests/testscripts/xml/Connectathon11/Track2-Terminology/_reference/output/suite4-valid-min.xml +0 -7
  312. data/lib/tests/testscripts/xml/Connectathon11/Track2-Terminology/_reference/output/translate-conceptmap-min.xml +0 -17
  313. data/lib/tests/testscripts/xml/Connectathon11/Track2-Terminology/_reference/resources/extensional-case-1.xml +0 -55
  314. data/lib/tests/testscripts/xml/Connectathon11/Track2-Terminology/_reference/resources/extensional-case-2.xml +0 -122
  315. data/lib/tests/testscripts/xml/Connectathon11/Track2-Terminology/_reference/resources/extensional-case-3.xml +0 -222
  316. data/lib/tests/testscripts/xml/Connectathon11/Track2-Terminology/_reference/resources/extensional-case-4.xml +0 -65
  317. data/lib/tests/testscripts/xml/Connectathon11/Track2-Terminology/_reference/resources/intensional-case-1.xml +0 -31
  318. data/lib/tests/testscripts/xml/Connectathon11/Track2-Terminology/_reference/resources/intensional-case-2.xml +0 -31
  319. data/lib/tests/testscripts/xml/Connectathon11/Track2-Terminology/_reference/resources/intensional-case-3.xml +0 -31
  320. data/lib/tests/testscripts/xml/Connectathon11/Track2-Terminology/_reference/resources/translate-conceptmap-case-1.xml +0 -145
  321. data/lib/tests/testscripts/xml/Connectathon11/Track3-CDS-on-FHIR/_reference/conformance/DecisionSupportServiceModule-Evaluate.xml +0 -17
  322. data/lib/tests/testscripts/xml/Connectathon11/Track3-CDS-on-FHIR/_reference/resources/ecrs-fhir-cdc-immunizations-incomplete-request-payload.xml +0 -26
  323. data/lib/tests/testscripts/xml/Connectathon11/Track3-CDS-on-FHIR/_reference/resources/ecrs-fhir-cdc-immunizations-incomplete-response-min-payload.xml +0 -7
  324. data/lib/tests/testscripts/xml/Connectathon11/Track3-CDS-on-FHIR/_reference/resources/ecrs-fhir-cdc-immunizations-incomplete-response-payload.xml +0 -332
  325. data/lib/tests/testscripts/xml/Connectathon11/Track3-CDS-on-FHIR/_reference/resources/ecrs-fhir-cdc-immunizations-malformed-request-payload.xml +0 -28
  326. data/lib/tests/testscripts/xml/Connectathon11/Track3-CDS-on-FHIR/_reference/resources/ecrs-fhir-cdc-immunizations-malformed-response-min-payload.xml +0 -7
  327. data/lib/tests/testscripts/xml/Connectathon11/Track3-CDS-on-FHIR/_reference/resources/ecrs-fhir-cdc-immunizations-malformed-response-payload.xml +0 -20
  328. data/lib/tests/testscripts/xml/Connectathon11/Track3-CDS-on-FHIR/_reference/resources/ecrs-fhir-cdc-immunizations-request-payload.xml +0 -28
  329. data/lib/tests/testscripts/xml/Connectathon11/Track3-CDS-on-FHIR/_reference/resources/ecrs-fhir-cdc-immunizations-response-min-payload.xml +0 -7
  330. data/lib/tests/testscripts/xml/Connectathon11/Track3-CDS-on-FHIR/_reference/resources/ecrs-fhir-cdc-immunizations-response-payload.xml +0 -332
  331. data/lib/tests/testscripts/xml/Connectathon11/Track3-CDS-on-FHIR/_reference/resources/ecrs-fhir-cdc-immunizations-unauthorized-request-payload.xml +0 -28
  332. data/lib/tests/testscripts/xml/Connectathon11/Track3-CDS-on-FHIR/_reference/resources/ecrs-fhir-cdc-immunizations-unauthorized-response-min-payload.xml +0 -7
  333. data/lib/tests/testscripts/xml/Connectathon11/Track3-CDS-on-FHIR/_reference/resources/ecrs-fhir-cdc-immunizations-unauthorized-response-payload.xml +0 -8
  334. data/lib/tests/testscripts/xml/Connectathon11/Track3-CDS-on-FHIR/_reference/resources/gao-assessment-request-payload.xml +0 -176
  335. data/lib/tests/testscripts/xml/Connectathon11/Track3-CDS-on-FHIR/_reference/resources/gao-assessment-response-payload-min.xml +0 -32
  336. data/lib/tests/testscripts/xml/Connectathon11/Track3-CDS-on-FHIR/_reference/resources/gao-assessment-response-payload.xml +0 -80
  337. data/lib/tests/testscripts/xml/Connectathon11/Track3-CDS-on-FHIR/track3-cds-evaluate-cdc-immunization.xml +0 -290
  338. data/lib/tests/testscripts/xml/Connectathon11/Track3-CDS-on-FHIR/track3-cds-evaluate-gao-profile.xml +0 -110
  339. data/lib/tests/testscripts/xml/Connectathon11/Track6-FHIR-Genomics/Client_Assigned_Id/TestScript_FHIR-Genomics.xml +0 -170
  340. data/lib/tests/testscripts/xml/Connectathon11/Track6-FHIR-Genomics/_reference/resources/sequence-example-1.xml +0 -31
  341. data/lib/tests/testscripts/xml/Connectathon11/Track6-FHIR-Genomics/_reference/resources/sequence-example-2.xml +0 -31
  342. data/lib/tests/testscripts/xml/Connectathon11/Track7-LabOrderLabReport/Actors.png +0 -0
  343. data/lib/tests/testscripts/xml/Connectathon11/Track7-LabOrderLabReport/Client_Assigned_Id/track7-laborder100-xml.xml +0 -590
  344. data/lib/tests/testscripts/xml/Connectathon11/Track7-LabOrderLabReport/Client_Assigned_Id/track7-laborder200-xml.xml +0 -587
  345. data/lib/tests/testscripts/xml/Connectathon11/Track7-LabOrderLabReport/Client_Assigned_Id/track7-laborder300-xml.xml +0 -612
  346. data/lib/tests/testscripts/xml/Connectathon11/Track7-LabOrderLabReport/Client_Assigned_Id/track7-laborder400-xml.xml +0 -635
  347. data/lib/tests/testscripts/xml/Connectathon11/Track7-LabOrderLabReport/Peer-to-Peer/track7-laborder100-peer2peer-xml.xml +0 -752
  348. data/lib/tests/testscripts/xml/Connectathon11/Track7-LabOrderLabReport/Thumbs.db +0 -0
  349. data/lib/tests/testscripts/xml/Connectathon11/Track7-LabOrderLabReport/_reference/conformance/LabOrderLabReport-CreateDeleteReadUpdate.xml +0 -187
  350. data/lib/tests/testscripts/xml/Connectathon11/Track7-LabOrderLabReport/_reference/conformance/html.xslt +0 -45
  351. data/lib/tests/testscripts/xml/Connectathon11/Track7-LabOrderLabReport/_reference/resources/DiagnosticOrder/do-100-update.xml +0 -64
  352. data/lib/tests/testscripts/xml/Connectathon11/Track7-LabOrderLabReport/_reference/resources/DiagnosticOrder/do-100.xml +0 -64
  353. data/lib/tests/testscripts/xml/Connectathon11/Track7-LabOrderLabReport/_reference/resources/DiagnosticOrder/do-200-update.xml +0 -121
  354. data/lib/tests/testscripts/xml/Connectathon11/Track7-LabOrderLabReport/_reference/resources/DiagnosticOrder/do-200.xml +0 -121
  355. data/lib/tests/testscripts/xml/Connectathon11/Track7-LabOrderLabReport/_reference/resources/DiagnosticOrder/do-300-update.xml +0 -91
  356. data/lib/tests/testscripts/xml/Connectathon11/Track7-LabOrderLabReport/_reference/resources/DiagnosticOrder/do-300.xml +0 -91
  357. data/lib/tests/testscripts/xml/Connectathon11/Track7-LabOrderLabReport/_reference/resources/DiagnosticOrder/do-400-update.xml +0 -88
  358. data/lib/tests/testscripts/xml/Connectathon11/Track7-LabOrderLabReport/_reference/resources/DiagnosticReport/dr-100.xml +0 -96
  359. data/lib/tests/testscripts/xml/Connectathon11/Track7-LabOrderLabReport/_reference/resources/DiagnosticReport/dr-200.xml +0 -125
  360. data/lib/tests/testscripts/xml/Connectathon11/Track7-LabOrderLabReport/_reference/resources/DiagnosticReport/dr-300.xml +0 -132
  361. data/lib/tests/testscripts/xml/Connectathon11/Track7-LabOrderLabReport/_reference/resources/DiagnosticReport/dr-400.xml +0 -121
  362. data/lib/tests/testscripts/xml/Connectathon11/Track7-LabOrderLabReport/_reference/resources/Observation/obs-100.xml +0 -58
  363. data/lib/tests/testscripts/xml/Connectathon11/Track7-LabOrderLabReport/_reference/resources/Observation/obs-101.xml +0 -58
  364. data/lib/tests/testscripts/xml/Connectathon11/Track7-LabOrderLabReport/_reference/resources/Observation/obs-200.xml +0 -125
  365. data/lib/tests/testscripts/xml/Connectathon11/Track7-LabOrderLabReport/_reference/resources/Observation/obs-300.xml +0 -106
  366. data/lib/tests/testscripts/xml/Connectathon11/Track7-LabOrderLabReport/_reference/resources/Observation/obs-301.xml +0 -106
  367. data/lib/tests/testscripts/xml/Connectathon11/Track7-LabOrderLabReport/_reference/resources/Observation/obs-302.xml +0 -106
  368. data/lib/tests/testscripts/xml/Connectathon11/Track7-LabOrderLabReport/_reference/resources/Observation/obs-303.xml +0 -106
  369. data/lib/tests/testscripts/xml/Connectathon11/Track7-LabOrderLabReport/_reference/resources/Observation/obs-304.xml +0 -106
  370. data/lib/tests/testscripts/xml/Connectathon11/Track7-LabOrderLabReport/_reference/resources/Observation/obs-400.xml +0 -87
  371. data/lib/tests/testscripts/xml/Connectathon11/Track7-LabOrderLabReport/_reference/resources/Observation/obs-401.xml +0 -95
  372. data/lib/tests/testscripts/xml/Connectathon11/Track7-LabOrderLabReport/_reference/resources/Observation/obs-402.xml +0 -95
  373. data/lib/tests/testscripts/xml/Connectathon11/Track7-LabOrderLabReport/_reference/resources/Observation/obs-403.xml +0 -84
  374. data/lib/tests/testscripts/xml/Connectathon11/Track7-LabOrderLabReport/_reference/resources/Observation/obs-404.xml +0 -84
  375. data/lib/tests/testscripts/xml/Connectathon11/Track7-LabOrderLabReport/_reference/resources/Observation/obs-405.xml +0 -83
  376. data/lib/tests/testscripts/xml/Connectathon11/Track7-LabOrderLabReport/_reference/resources/Observation/obs-406.xml +0 -83
  377. data/lib/tests/testscripts/xml/Connectathon11/Track7-LabOrderLabReport/_reference/resources/Observation/obs-407.xml +0 -70
  378. data/lib/tests/testscripts/xml/Connectathon11/Track7-LabOrderLabReport/_reference/resources/Observation/obs-408.xml +0 -84
  379. data/lib/tests/testscripts/xml/Connectathon11/Track7-LabOrderLabReport/_reference/resources/Observation/obs-uslab-example5.xml +0 -102
  380. data/lib/tests/testscripts/xml/Connectathon11/Track7-LabOrderLabReport/_reference/resources/Order/order-100.xml +0 -61
  381. data/lib/tests/testscripts/xml/Connectathon11/Track7-LabOrderLabReport/_reference/resources/Order/order-200.xml +0 -61
  382. data/lib/tests/testscripts/xml/Connectathon11/Track7-LabOrderLabReport/_reference/resources/Order/order-300.xml +0 -61
  383. data/lib/tests/testscripts/xml/Connectathon11/Track7-LabOrderLabReport/_reference/resources/Order/order-400.xml +0 -61
  384. data/lib/tests/testscripts/xml/Connectathon11/Track7-LabOrderLabReport/_reference/resources/OrderResponse/ordresp-100.xml +0 -79
  385. data/lib/tests/testscripts/xml/Connectathon11/Track7-LabOrderLabReport/_reference/resources/OrderResponse/ordresp-110.xml +0 -79
  386. data/lib/tests/testscripts/xml/Connectathon11/Track7-LabOrderLabReport/_reference/resources/OrderResponse/ordresp-200.xml +0 -79
  387. data/lib/tests/testscripts/xml/Connectathon11/Track7-LabOrderLabReport/_reference/resources/OrderResponse/ordresp-210.xml +0 -79
  388. data/lib/tests/testscripts/xml/Connectathon11/Track7-LabOrderLabReport/_reference/resources/OrderResponse/ordresp-300.xml +0 -79
  389. data/lib/tests/testscripts/xml/Connectathon11/Track7-LabOrderLabReport/_reference/resources/OrderResponse/ordresp-310.xml +0 -79
  390. data/lib/tests/testscripts/xml/Connectathon11/Track7-LabOrderLabReport/_reference/resources/OrderResponse/ordresp-400.xml +0 -79
  391. data/lib/tests/testscripts/xml/Connectathon11/Track7-LabOrderLabReport/_reference/resources/OrderResponse/ordresp-410.xml +0 -79
  392. data/lib/tests/testscripts/xml/Connectathon11/Track7-LabOrderLabReport/_reference/resources/Organization/org-uslab-example3.xml +0 -49
  393. data/lib/tests/testscripts/xml/Connectathon11/Track7-LabOrderLabReport/_reference/resources/Patient/patient-uslab-example1.xml +0 -44
  394. data/lib/tests/testscripts/xml/Connectathon11/Track7-LabOrderLabReport/_reference/resources/Practitioner/pract-uslab-example1.xml +0 -18
  395. data/lib/tests/testscripts/xml/Connectathon11/Track7-LabOrderLabReport/_reference/resources/Practitioner/pract-uslab-example3.xml +0 -36
  396. data/lib/tests/testscripts/xml/Connectathon11/Track7-LabOrderLabReport/_reference/resources/Specimen/Thumbs.db +0 -0
  397. data/lib/tests/testscripts/xml/Connectathon11/Track7-LabOrderLabReport/_reference/resources/Specimen/spec-100.xml +0 -65
  398. data/lib/tests/testscripts/xml/Connectathon11/Track7-LabOrderLabReport/_reference/resources/Specimen/spec-400.xml +0 -70
  399. data/lib/tests/testscripts/xml/Connectathon11/Track7-LabOrderLabReport/_reference/resources/Specimen/spec-uslab-example1.xml +0 -82
  400. data/lib/tests/testscripts/xml/Connectathon11/Track7-LabOrderLabReport/_reference/resources/Testscript 1 Document.txt +0 -122
  401. data/lib/tests/testscripts/xml/Connectathon11/Track7-LabOrderLabReport/_reference/resources/Testscript 2 Document.txt +0 -103
  402. data/lib/tests/testscripts/xml/Connectathon11/Track7-LabOrderLabReport/_reference/resources/Testscript 3 Document.txt +0 -201
  403. data/lib/tests/testscripts/xml/Connectathon11/Track7-LabOrderLabReport/_reference/resources/Testscript 4 Document.txt +0 -310
  404. data/lib/tests/testscripts/xml/Connectathon11/Track9-Patch/_reference/conformance/MedicationStatementCreate.xml +0 -11
  405. data/lib/tests/testscripts/xml/Connectathon11/Track9-Patch/_reference/conformance/PatientSearchType.xml +0 -15
  406. data/lib/tests/testscripts/xml/Connectathon11/Track9-Patch/_reference/resources/medicationstatement-create.json +0 -39
  407. data/lib/tests/testscripts/xml/Connectathon11/Track9-Patch/_reference/resources/medicationstatement-patch.json +0 -3
  408. data/lib/tests/testscripts/xml/Connectathon11/Track9-Patch/track9-patch-medicationstatement-json-if-match.xml +0 -321
  409. data/lib/tests/testscripts/xml/Connectathon11/Track9-Patch/track9-patch-medicationstatement-json.xml +0 -303
  410. data/lib/tests/testscripts/xml/Connectathon11/Track9-Patch/track9-patch-peer2peer-patient-json.xml +0 -235
  411. data/test/fixtures/testscript-example.xml +0 -202
  412. data/test/fixtures/testscript-history.xml +0 -143
  413. data/test/fixtures/testscript-readtest.xml +0 -272
  414. data/test/fixtures/testscript-search.xml +0 -282
  415. data/test/fixtures/testscript-update.xml +0 -147
  416. data/test/unit/argonaut_sprint6_test.rb +0 -31
  417. data/test/unit/argonaut_sprint7_test.rb +0 -21
  418. data/test/unit/basic_test.rb +0 -27
  419. data/test/unit/fetch_patient_record_test.rb +0 -357
  420. data/test/unit/financial_test.rb +0 -41
@@ -12,6 +12,7 @@ module Crucible
12
12
 
13
13
  def initialize(client1, client2=nil)
14
14
  super(client1, client2)
15
+ @tags.append('connectathon')
15
16
  @category = {id: 'connectathon', title: 'Connectathon'}
16
17
  end
17
18
 
@@ -19,19 +20,224 @@ module Crucible
19
20
  @resources = Crucible::Generator::Resources.new
20
21
 
21
22
  @simple = @resources.simple_claim
22
- @simple.xmlId = nil # clear the identifier, in case the server checks for duplicates
23
+ @simple.id = nil # clear the identifier, in case the server checks for duplicates
23
24
  @simple.identifier = nil # clear the identifier, in case the server checks for duplicates
24
25
 
25
26
  @average = @resources.average_claim
26
- @average.xmlId = nil # clear the identifier, in case the server checks for duplicates
27
+ @average.id = nil # clear the identifier, in case the server checks for duplicates
27
28
  @average.identifier = nil # clear the identifier, in case the server checks for duplicates
29
+
30
+
31
+ @preauth = @resources.complex_claim
32
+ @preauth.id = nil # clear the identifier, in case the server checks for duplicates
33
+ @preauth.identifier = nil # clear the identifier, in case the server checks for duplicates
34
+
35
+ @er = @resources.load_fixture('financial/eligibilityrequest-example.xml')
36
+ @er.id = nil
37
+ @er.identifier = nil
38
+
39
+ @patient = @resources.minimal_patient
40
+ @patient.id = nil
41
+ @patient.identifier = [FHIR::Identifier.new]
42
+ @patient.identifier[0].value = SecureRandom.urlsafe_base64
43
+ result = @client.create(@patient)
44
+ assert_response_ok(result)
45
+ @patient_id = result.id
46
+
47
+ @simple.patient.reference = "Patient/#{@patient_id}"
48
+ @average.patient.reference = "Patient/#{@patient_id}"
49
+ @preauth.patient.reference = "Patient/#{@patient_id}"
50
+ @er.patient.reference = "Patient/#{@patient_id}"
51
+
52
+ @organization_1 = @resources.example_patient_record_organization_201
53
+ @organization_1.id = nil
54
+ reply = @client.create @organization_1
55
+ @organization_1_id = reply.id
56
+ @organization_1.id = @organization_1_id
57
+ assert_response_ok(reply)
58
+
59
+ @simple.organization.reference = "Organization/#{@organization_1_id}"
60
+ @average.organization.reference = "Organization/#{@organization_1_id}"
61
+ @preauth.organization.reference = "Organization/#{@organization_1_id}"
62
+ @er.organization.reference = "Organization/#{@organization_1_id}"
63
+
64
+ @organization_2 = @resources.example_patient_record_organization_203
65
+ @organization_2.id = nil
66
+ reply = @client.create @organization_2
67
+ @organization_2_id = reply.id
68
+ @organization_2.id = @organization_2_id
69
+ assert_response_ok(reply)
70
+
71
+ @simple.insurer.reference = "Organization/#{@organization_2_id}"
72
+ @average.insurer.reference = "Organization/#{@organization_2_id}"
73
+ @preauth.insurer.reference = "Organization/#{@organization_2_id}"
74
+ @er.insurer.reference = "Organization/#{@organization_2_id}"
28
75
  end
29
76
 
30
77
  def teardown
31
78
  @client.destroy(FHIR::Claim, @simple_id) if !@simple_id.nil?
32
- @client.destroy(FHIR::ClaimResponse, @simple_response_id) if !@simple_response_id.nil?
79
+ @client.destroy(FHIR::Claim, @preauth_id) if !@preauth_id.nil?
33
80
  @client.destroy(FHIR::Claim, @average_id) if !@average_id.nil?
81
+ @client.destroy(FHIR::ClaimResponse, @simple_response_id) if !@simple_response_id.nil?
34
82
  @client.destroy(FHIR::ClaimResponse, @average_response_id) if !@average_response_id.nil?
83
+ @client.destroy(FHIR::ClaimResponse, @preauth_response_id) if !@preauth_response_id.nil?
84
+ @client.destroy(FHIR::Patient, @patient_id) if !@patient_id.nil?
85
+ @client.destroy(FHIR::Patient, @organization_1_id) if !@organization_1_id.nil?
86
+ @client.destroy(FHIR::Patient, @organization_2_id) if !@organization_2_id.nil?
87
+ @client.destroy(FHIR::EligibilityRequest, @er_id) if !@er_id.nil?
88
+ @client.destroy(FHIR::Communication, @preauth_communication_id) if !@preauth_communication_id.nil?
89
+ end
90
+
91
+ test 'C13F_1', 'Register an EligibilityRequest' do
92
+ metadata {
93
+ links "#{REST_SPEC_LINK}#create"
94
+ links "#{BASE_SPEC_LINK}/eligibilityrequest.html"
95
+ links 'http://wiki.hl7.org/index.php?title=201609_Financial_Management#Submit_an_Eligibility.2C_Retrieve.2FReceive_an_EligibilityResponse'
96
+ requires resource: 'EligibilityRequest', methods: ['create']
97
+ validates resource: 'EligibilityRequest', methods: ['create']
98
+ }
99
+
100
+ reply = @client.create(@er)
101
+
102
+ assert_response_ok(reply)
103
+ @er_id = reply.id
104
+
105
+ warning { assert @er.equals?(reply.resource), 'The server did not correctly preserve the EligibilityRequest data.' }
106
+
107
+ end
108
+
109
+ test 'C13F_2', 'Search for EligibilityResponse' do
110
+ metadata {
111
+ links "#{REST_SPEC_LINK}#search"
112
+ links "#{BASE_SPEC_LINK}/eligibilityresponse.html"
113
+ links 'http://wiki.hl7.org/index.php?title=201609_Financial_Management#Submit_an_Eligibility.2C_Retrieve.2FReceive_an_EligibilityResponse'
114
+ }
115
+
116
+ options = {
117
+ :search => {
118
+ :flag => true,
119
+ :compartment => nil,
120
+ :parameters => {
121
+ 'request-identifier' => @er_id
122
+ }
123
+ }
124
+ }
125
+
126
+ sleep(5)
127
+
128
+ # @client.use_format_param = true
129
+ reply = @client.search(FHIR::EligibilityResponse, options)
130
+
131
+ assert_response_ok(reply)
132
+ assert (reply.resource.total > 0), 'The server did not report any EligibilityResponses for the submitted EligibilityResource.'
133
+ end
134
+
135
+ test 'C13F_3', 'Submit a PreAuthorization and an Attachment' do
136
+
137
+ # Action: The FHIR Client will construct a Claim resource indicating Pre-Authorization. The service will respond with a
138
+ # ClaimResponse indicating only receipt not adjudication of the Claim (Pre-Authorization).
139
+ # To obtain the adjudicated ClaimResponse the client must then submit an Attachment (Communication resource) containing any
140
+ # supporting material to which the Server will respond with a ProcessResponse indicating success or failure with errors.
141
+ # Then the client may obtain the adjudicated ClaimResponse via the appropriate protocol. The ClaimResponse will contain
142
+ # an identifier which may be used during claim submission to indicate that the Pre-Authorization has been performed.
143
+ # Precondition: None
144
+ # Success Criteria: Pre-Authorization and Attachment processed correctly by the Server (inspect via browser or available UI)
145
+ # Bonus point: For sending a business-appropriate form of attachment.
146
+
147
+ metadata {
148
+ links "#{REST_SPEC_LINK}#create"
149
+ links "#{BASE_SPEC_LINK}/claim.html"
150
+ links 'http://wiki.hl7.org/index.php?title=201609_Financial_Management'
151
+ }
152
+
153
+
154
+ reply = @client.create(@preauth)
155
+ assert_response_ok(reply)
156
+ @preauth_id = reply.id
157
+ sleep(10) # sleep to allow server to process claim, no wait time was causing incorrect failures in subsequent tests
158
+
159
+ if !reply.resource.nil?
160
+ # Response is Claim
161
+ temp = reply.resource.id
162
+ reply.resource.id = nil
163
+ warning { assert @simple.equals?(reply.resource), 'The server did not correctly preserve the Claim data.' }
164
+ reply.resource.id = temp
165
+ elsif !reply.body.nil?
166
+ begin
167
+ @preauth_response = FHIR.from_contents(reply.body)
168
+ if cr.class==FHIR::ClaimResponse
169
+ # Response is ClaimResponse
170
+ @preauth_response_id = @preauth_response.id
171
+ else
172
+ warning { assert(false,"The Claim request responded with an unexpected resource: #{cr.class}",reply.body) }
173
+ @preauth_response = nil
174
+ end
175
+ rescue Exception => ex
176
+ @preauth_response = nil
177
+ warning { assert(false,'The Claim request responded with an unexpected body.',reply.body) }
178
+ end
179
+ end
180
+
181
+ # get the claim response if we weren't given one back directly
182
+
183
+ search_string = @preauth_id
184
+ search_regex = Regexp.new(search_string)
185
+
186
+ if @preauth_response.nil?
187
+ options = {
188
+ :search => {
189
+ :flag => true,
190
+ :compartment => nil,
191
+ :parameters => {
192
+ 'request' => search_string
193
+ }
194
+ }
195
+ }
196
+ @client.use_format_param = true
197
+ reply = @client.search(FHIR::ClaimResponse, options)
198
+ assert_response_ok(reply)
199
+ assert_bundle_response(reply)
200
+ assert (reply.resource.total > 0), 'The server does not have a record of the submitted preauthorization.'
201
+ assert(reply.resource.entry[0].resource.request.reference.include?(@preauth_id), 'The server did not return a request with the proper preauthorization.')
202
+
203
+ @preauth_response = reply.resource.entry[0].resource
204
+ @preauth_response_id = @preauth_response.id
205
+ end
206
+
207
+ # check receipt and not adjudication of the claim
208
+ # To do this, we will just make sure that it isn't marked as "complete"
209
+ # This may not be the proper method
210
+
211
+ assert_operator(:notEquals, @preauth_response.outcome, 'complete', 'The current status of the preauth should not be complete')
212
+
213
+ # create an communication that references additional information for the claim
214
+
215
+ @preauth_communication = FHIR::Communication.new()
216
+ # Associate with the claim using the topic
217
+ # This might not be the appopriate place to do this
218
+ @preauth_communication.topic = [ FHIR::Reference.new ]
219
+ @preauth_communication.topic[0].reference = "Claim/#{@preauth_id}"
220
+
221
+ attachment = FHIR::Attachment.new
222
+ attachment.data = File.read(File.join(Crucible::Generator::Resources::FIXTURE_DIR, 'attachment', 'ccda_pdf_base64.txt'))
223
+ # attachment.data = 'SGVsbG8='
224
+ attachment.contentType = 'application/pdf'
225
+
226
+ payload = FHIR::Communication::Payload.new
227
+ payload.contentAttachment = attachment
228
+
229
+ @preauth_communication.payload = [payload]
230
+
231
+ reply = @client.create(@preauth_communication)
232
+ assert_response_ok(reply)
233
+ @preauth_communication_id = reply.id
234
+
235
+
236
+ #TODO: The Server will respond with a ProcessResponse indicating success or failure with errors.
237
+ #Then the client may obtain the adjudicated ClaimResponse via the appropriate protocol.
238
+ #The ClaimResponse will contain an identifier which may be used during claim submission to indicate
239
+ #that the Pre-Authorization has been performed.
240
+
35
241
  end
36
242
 
37
243
  #
@@ -53,16 +259,16 @@ module Crucible
53
259
 
54
260
  if !reply.resource.nil?
55
261
  # Response is Claim
56
- temp = reply.resource.xmlId
57
- reply.resource.xmlId = nil
262
+ temp = reply.resource.id
263
+ reply.resource.id = nil
58
264
  warning { assert @simple.equals?(reply.resource), 'The server did not correctly preserve the Claim data.' }
59
- reply.resource.xmlId = temp
265
+ reply.resource.id = temp
60
266
  elsif !reply.body.nil?
61
267
  begin
62
- cr = FHIR::Resource.from_contents(reply.body)
268
+ cr = FHIR.from_contents(reply.body)
63
269
  if cr.class==FHIR::ClaimResponse
64
270
  # Response is ClaimResponse
65
- @simple_response_id = cr.xmlId
271
+ @simple_response_id = cr.id
66
272
  @simple_id = cr.request.reference if cr.request
67
273
  else
68
274
  warning { assert(false,"The Claim request responded with an unexpected resource: #{cr.class}",reply.body) }
@@ -96,16 +302,16 @@ module Crucible
96
302
 
97
303
  if !reply.resource.nil?
98
304
  # Response is Claim
99
- temp = reply.resource.xmlId
100
- reply.resource.xmlId = nil
305
+ temp = reply.resource.id
306
+ reply.resource.id = nil
101
307
  warning { assert @average.equals?(reply.resource), 'The server did not correctly preserve the Claim data.' }
102
- reply.resource.xmlId = temp
308
+ reply.resource.id = temp
103
309
  elsif !reply.body.nil?
104
310
  begin
105
- cr = FHIR::Resource.from_contents(reply.body)
311
+ cr = FHIR.from_contents(reply.body)
106
312
  if cr.class==FHIR::ClaimResponse
107
313
  # Response is ClaimResponse
108
- @average_response_id = cr.xmlId
314
+ @average_response_id = cr.id
109
315
  @average_id = cr.request.reference if cr.request
110
316
  else
111
317
  warning { assert(false,"The Claim request responded with an unexpected resource: #{cr.class}",reply.body) }
@@ -136,8 +342,8 @@ module Crucible
136
342
  reply = @client.read(FHIR::Claim,@simple_id)
137
343
  assert_response_ok(reply)
138
344
  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)
345
+ reply.resource.insurance.each do |insurance|
346
+ assert(!insurance.try(:claimResponse).try(:reference).nil?,'Claim does not reference a ClaimResponse.',reply.body)
141
347
  end
142
348
  warning { assert_valid_resource_content_type_present(reply) }
143
349
  warning { assert_last_modified_present(reply) }
@@ -159,8 +365,8 @@ module Crucible
159
365
  reply = @client.read(FHIR::Claim,@average_id)
160
366
  assert_response_ok(reply)
161
367
  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)
368
+ reply.resource.insurance.each do |insurance|
369
+ assert(!insurance.try(:claimResponse).try(:reference).nil?,'Claim does not reference a ClaimResponse.',reply.body)
164
370
  end
165
371
  warning { assert_valid_resource_content_type_present(reply) }
166
372
  warning { assert_last_modified_present(reply) }
@@ -199,8 +405,9 @@ module Crucible
199
405
  assert_response_ok(reply)
200
406
  assert_bundle_response(reply)
201
407
  assert (reply.resource.total > 0), 'The server did not report any results.'
408
+ assert(reply.resource.entry[0].resource.request.reference.include?(@simple_id), 'The server did not return a request with the proper claim')
202
409
 
203
- @simple_response_id = reply.resource.entry[0].resource.xmlId unless @simple_response_id
410
+ @simple_response_id = reply.resource.entry[0].resource.id unless @simple_response_id
204
411
  end
205
412
 
206
413
  #
@@ -234,7 +441,7 @@ module Crucible
234
441
  assert_bundle_response(reply)
235
442
  assert (reply.resource.total > 0), 'The server did not report any results.'
236
443
 
237
- @simple_response_id = reply.resource.entry[0].resource.xmlId unless @simple_response_id
444
+ @simple_response_id = reply.resource.entry[0].resource.id unless @simple_response_id
238
445
  end
239
446
 
240
447
  #
@@ -268,7 +475,7 @@ module Crucible
268
475
  assert_bundle_response(reply)
269
476
  assert (reply.resource.total > 0), 'The server did not report any results.'
270
477
 
271
- @simple_response_id = reply.resource.entry[0].resource.xmlId unless @simple_response_id
478
+ @simple_response_id = reply.resource.entry[0].resource.id unless @simple_response_id
272
479
  end
273
480
 
274
481
  # ------------------------------------------------------------------------------
@@ -304,7 +511,8 @@ module Crucible
304
511
  assert_bundle_response(reply)
305
512
  assert (reply.resource.total > 0), 'The server did not report any results.'
306
513
 
307
- @average_response_id = reply.resource.entry[0].resource.xmlId unless @average_response_id
514
+ assert(reply.resource.entry[0].resource.request.reference.include?(@average_id), 'The server did not return a request with the proper claim')
515
+ @average_response_id = reply.resource.entry[0].resource.id unless @average_response_id
308
516
  end
309
517
 
310
518
  #
@@ -338,7 +546,7 @@ module Crucible
338
546
  assert_bundle_response(reply)
339
547
  assert (reply.resource.total > 0), 'The server did not report any results.'
340
548
 
341
- @average_response_id = reply.resource.entry[0].resource.xmlId unless @average_response_id
549
+ @average_response_id = reply.resource.entry[0].resource.id unless @average_response_id
342
550
  end
343
551
 
344
552
  #
@@ -372,7 +580,7 @@ module Crucible
372
580
  assert_bundle_response(reply)
373
581
  assert (reply.resource.total > 0), 'The server did not report any results.'
374
582
 
375
- @average_response_id = reply.resource.entry[0].resource.xmlId unless @average_response_id
583
+ @average_response_id = reply.resource.entry[0].resource.id unless @average_response_id
376
584
  end
377
585
 
378
586
  end
@@ -0,0 +1,255 @@
1
+ module Crucible
2
+ module Tests
3
+ class ConnectathonGenomicsTrackTest < BaseSuite
4
+
5
+ def id
6
+ 'ConnectathonGenomicsTrackTest'
7
+ end
8
+
9
+ def description
10
+ 'Genomic data are of increasing importance to clinical care and secondary analysis. FHIR Genomics consists of the Sequence resource and several profiles built on top of existing FHIR resources.'
11
+ end
12
+
13
+ def initialize(client1, client2=nil)
14
+ super(client1, client2)
15
+ @tags.append('connectathon')
16
+ @category = {id: 'connectathon', title: 'Connectathon'}
17
+ end
18
+
19
+ def setup
20
+ @resources = Crucible::Generator::Resources.new
21
+ @records = {}
22
+
23
+ patient = @resources.load_fixture("patient/patient-register-create.xml")
24
+ practitioner = @resources.load_fixture("practitioner/practitioner-register-create.xml")
25
+
26
+ create_object(patient, :patient)
27
+ create_object(practitioner, :practitioner)
28
+ end
29
+
30
+ def teardown
31
+ @records.each_value do |value|
32
+ @client.destroy(value.class, value.id)
33
+ end
34
+ end
35
+
36
+ # register sequence and observation
37
+ test 'CGT01','Register a New Sequence and Observation' do
38
+ metadata {
39
+ links "#{REST_SPEC_LINK}#create"
40
+ links "#{BASE_SPEC_LINK}/sequence.html"
41
+ links 'http://wiki.hl7.org/index.php?title=201605_FHIR_Genomics_on_FHIR_Connectathon_Track_Proposal'
42
+ requires resource: 'Sequence', methods: ['create']
43
+ requires resource: 'Specimen', methods: ['create']
44
+ requires resource: 'Observation', methods: ['create']
45
+ validates resource: 'Sequence', methods: ['create']
46
+ validates resource: 'Specimen', methods: ['create']
47
+ validates resource: 'Observation', methods: ['create']
48
+ }
49
+
50
+ sequence = @resources.load_fixture('sequence/sequence-register-create.xml')
51
+ specimen = @resources.load_fixture('specimen/specimen-register-create.xml')
52
+ observation = @resources.load_fixture('observation/observation-register-create.xml')
53
+
54
+ specimen.subject = @records[:patient].to_reference
55
+ create_object(specimen, :specimen_register_create)
56
+
57
+ sequence.patient = @records[:patient].to_reference
58
+ sequence.specimen = @records[:specimen_register_create].to_reference
59
+ create_object(sequence, :sequence_register_create)
60
+
61
+ observation.subject = @records[:patient].to_reference
62
+ observation.specimen = @records[:specimen_register_create].to_reference
63
+ observation.performer = @records[:practitioner].to_reference
64
+ create_object(observation, :observation_register_create)
65
+ end
66
+
67
+ test 'CGT02', 'Retrieve Genomic Source data for given patient' do
68
+ metadata {
69
+ links "#{REST_SPEC_LINK}#search"
70
+ links 'http://wiki.hl7.org/index.php?title=201605_FHIR_Genomics_on_FHIR_Connectathon_Track_Proposal'
71
+ requires resource: 'Sequence', methods: ['read']
72
+ requires resource: 'Observation', methods: ['read']
73
+ requires resource: 'Patient', methods: ['read']
74
+ }
75
+
76
+ options = {
77
+ :search => {
78
+ :flag => false,
79
+ :compartment => nil,
80
+ :parameters => {
81
+ 'subject' => "Patient/#{@records[:patient].id}"
82
+ }
83
+ }
84
+ }
85
+
86
+ reply = @client.search(FHIR::Observation, options)
87
+ assert_response_ok(reply)
88
+
89
+ ext = reply.resource.entry.find {|entry| entry.resource.extension.find { |exten| exten.url == "http://hl7.org/fhir/StructureDefinition/observation-geneticsGenomicSourceClass" } }
90
+
91
+ assert ext, "No Genomic Source Class extension found on returned Observations"
92
+
93
+ assert_equal 'LA6683-2', ext.resource.extension.find { |exten| exten.url == 'http://hl7.org/fhir/StructureDefinition/observation-geneticsGenomicSourceClass'}.valueCodeableConcept.coding[0].code
94
+ end
95
+
96
+ test 'CGT03', 'Retrieve Family History data for the given patient' do
97
+ metadata {
98
+ links "#{REST_SPEC_LINK}#search"
99
+ links 'http://wiki.hl7.org/index.php?title=201605_FHIR_Genomics_on_FHIR_Connectathon_Track_Proposal'
100
+ requires resource: 'Sequence', methods: ['read']
101
+ requires resource: 'Observation', methods: ['create', 'read']
102
+ requires resource: 'Patient', methods: ['create', 'read']
103
+ requires resource: 'Specimen', methods: ['create', 'read']
104
+ requires resource: 'FamilyMemberHistory', methods: ['create', 'read']
105
+ requires resource: 'DiagnosticReport', methods: ['create', 'read']
106
+ }
107
+
108
+ patient = @resources.load_fixture('patient/patient-familyhistory-create.xml')
109
+ create_object(patient, :family_patient)
110
+
111
+ observation = @resources.load_fixture('observation/observation-familyhistory-create.xml')
112
+ observation.subject = @records[:family_patient].to_reference
113
+ create_object(observation, :family_observation)
114
+
115
+ familymemberhistory = @resources.load_fixture('family_member_history/familymemberhistory-familyhistory-create.xml')
116
+ familymemberhistory.patient = @records[:family_patient].to_reference
117
+ familymemberhistory.extension.find { |exten| exten.url == 'http://hl7.org/fhir/StructureDefinition/family-member-history-genetics-observation'}.valueReference = @records[:family_observation].to_reference
118
+ create_object(familymemberhistory, :family_member_history)
119
+
120
+ specimen = @resources.load_fixture('specimen/specimen-familyhistory-create.xml')
121
+ specimen.subject = @records[:family_patient].to_reference
122
+ create_object(specimen, :family_specimen)
123
+
124
+ diag_report = @resources.load_fixture('diagnostic_report/diagnosticreport-familyhistory-create.xml')
125
+ diag_report.subject = @records[:family_patient].to_reference
126
+ diag_report.performer = @records[:practitioner].to_reference
127
+ diag_report.specimen = @records[:family_specimen].to_reference
128
+ diag_report.result = @records[:family_observation].to_reference
129
+ create_object(diag_report, :family_report)
130
+
131
+ reply = @client.read FHIR::FamilyMemberHistory, @records[:family_member_history].id
132
+ assert_response_ok(reply)
133
+
134
+ ext = reply.resource.extension.find { |exten| exten.url == 'http://hl7.org/fhir/StructureDefinition/family-member-history-genetics-observation'}
135
+
136
+ assert ext, "No Family History extension found"
137
+
138
+ reply = @client.read FHIR::Observation, ext.valueReference.reference.split("/")[1]
139
+ assert_response_ok(reply)
140
+
141
+ assert @records[:family_observation].equals?(reply.resource, ['meta']), "Observation doesn't match the stored Observation; difference is: #{@records[:family_observation].mismatch(reply.resource, ['meta'])}"
142
+ end
143
+
144
+ test 'CGT04', 'Clinical data warehouse search' do
145
+ metadata {
146
+ links "#{REST_SPEC_LINK}#search"
147
+ links 'http://wiki.hl7.org/index.php?title=201605_FHIR_Genomics_on_FHIR_Connectathon_Track_Proposal'
148
+ requires resource: 'Observation', methods: ['create', 'read']
149
+ }
150
+
151
+ dw_obs = @resources.load_fixture('observation/observation-datawarehouse-create.xml')
152
+ dw_obs.performer = @records[:practitioner].to_reference
153
+ dw_obs.subject = @records[:family_patient].to_reference
154
+ dw_obs.specimen = @records[:family_specimen].to_reference
155
+ create_object(dw_obs, :dw_obs)
156
+
157
+ options = {
158
+ :search => {
159
+ :flag => false,
160
+ :compartment => nil,
161
+ :parameters => {
162
+ 'subject' => "Patient/#{@records[:family_patient].id}"
163
+ }
164
+ }
165
+ }
166
+
167
+ reply = @client.search(FHIR::Observation, options)
168
+ assert_response_ok(reply)
169
+
170
+ assert reply.resource.get_by_id(@records[:dw_obs].id), "No Observation found for that patient"
171
+
172
+ end
173
+
174
+ test 'CGT05', 'HLA Typing' do
175
+ metadata {
176
+ links "#{REST_SPEC_LINK}#search"
177
+ links 'http://wiki.hl7.org/index.php?title=201605_FHIR_Genomics_on_FHIR_Connectathon_Track_Proposal'
178
+ requires resource: 'DiagnosticReport', methods: ['create', 'read']
179
+ validates resource: 'DiagnosticReport', methods: ['create', 'read']
180
+ }
181
+
182
+ dr_hla = @resources.load_fixture('diagnostic_report/diagnosticreport-hlatyping-create.xml')
183
+ dr_hla.subject = @records[:family_patient].to_reference
184
+ dr_hla.performer = [@records[:practitioner].to_reference]
185
+ dr_hla.specimen = [@records[:family_specimen].to_reference]
186
+
187
+ create_object(dr_hla, :dr_hla)
188
+
189
+ reply = @client.read(FHIR::DiagnosticReport, @records[:dr_hla].id)
190
+ assert_response_ok(reply)
191
+
192
+ assert @records[:dr_hla].equals?(reply.resource, ['meta', 'text', 'narrative']), "DiagnosticReport doesn't match the stored DiagnosticReport; difference is: #{@records[:dr_hla].mismatch(reply.resource, ['meta', 'text', 'narrative'])}"
193
+ end
194
+
195
+ test 'CGT07', 'Comprehensive Pathology Report' do
196
+ metadata {
197
+ links "#{REST_SPEC_LINK}#search"
198
+ links 'http://wiki.hl7.org/index.php?title=201605_FHIR_Genomics_on_FHIR_Connectathon_Track_Proposal'
199
+ requires resource: 'DiagnosticReport', methods: ['create', 'read', 'search', 'delete']
200
+ validates resource: 'DiagnosticReport', methods: ['create', 'read', 'search', 'delete']
201
+ }
202
+
203
+ dr = @resources.load_fixture('diagnostic_report/diagnosticreport-pathologyreport-create.xml')
204
+ dr.subject = @records[:family_patient].to_reference
205
+ dr.performer = [@records[:practitioner].to_reference]
206
+ dr.specimen = [@records[:family_specimen].to_reference]
207
+ create_object(dr, :dr_pathreport)
208
+
209
+ reply = @client.read(FHIR::DiagnosticReport, @records[:dr_pathreport].id)
210
+ assert_response_ok(reply)
211
+
212
+ assert reply.resource.equals?(@records[:dr_pathreport], ['text', 'meta', 'lastUpdated']), "DiagnosticReport returned does not match DiagnosticReport sent, mismatch in #{reply.resource.mismatch(@records[:dr_pathreport], ['text', 'meta', 'lastUpdated'])}"
213
+ end
214
+
215
+ test 'GCT08', 'Sequence Quality' do
216
+ metadata {
217
+ links "#{REST_SPEC_LINK}#search"
218
+ links 'http://wiki.hl7.org/index.php?title=201605_FHIR_Genomics_on_FHIR_Connectathon_Track_Proposal'
219
+ requires resource: 'Sequence', methods: ['read', 'search', 'delete']
220
+ validates resource: 'Sequence', methods: ['read', 'search', 'delete']
221
+ }
222
+
223
+ options = {
224
+ :search => {
225
+ :flag => false,
226
+ :compartment => nil,
227
+ :parameters => {
228
+ 'patient' => "Patient/#{@records[:patient].id}"
229
+ }
230
+ }
231
+ }
232
+
233
+ reply = @client.search(FHIR::Sequence, options)
234
+ assert_response_ok(reply)
235
+
236
+ entries = reply.resource.entry.collect { |e| e.resource if e.resource.quality }
237
+
238
+ assert entries.count >= 1, 'No entries with Sequence quality found for Patient'
239
+ end
240
+
241
+ private
242
+
243
+ def create_object(obj, obj_sym)
244
+ reply = @client.create obj
245
+ assert_response_ok(reply)
246
+ obj.id = reply.id
247
+ @records[obj_sym] = obj
248
+
249
+ warning { assert_valid_resource_content_type_present(reply) }
250
+ warning { assert_valid_content_location_present(reply) }
251
+ end
252
+
253
+ end
254
+ end
255
+ end