plan_executor 1.0.2 → 1.8.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.gitignore +1 -0
- data/.travis.yml +3 -2
- data/Gemfile +3 -6
- data/Gemfile.lock +52 -48
- data/README.md +2 -2
- data/fixtures/attachment/ccda_pdf.pdf +0 -0
- data/fixtures/attachment/ccda_pdf_base64.txt +2489 -0
- data/fixtures/attachment/ccda_structured.xml +1976 -0
- data/fixtures/attachment/ccda_unstructured.xml +2563 -0
- data/fixtures/daf/conformance-daf-query-responder.xml +2024 -193
- data/fixtures/diagnostic_report/diagnosticreport-familyhistory-create.xml +67 -0
- data/fixtures/diagnostic_report/diagnosticreport-hlatyping-create.xml +64 -0
- data/fixtures/diagnostic_report/diagnosticreport-pathologyreport-create.xml +312 -0
- data/fixtures/diagnostic_report/dr-100.xml +3 -3
- data/fixtures/diagnostic_report/dr-200.xml +5 -5
- data/fixtures/diagnostic_report/dr-300.xml +3 -3
- data/fixtures/diagnostic_report/dr-400.xml +3 -3
- data/fixtures/{diagnostic_order → diagnostic_request}/do-100.xml +57 -64
- data/fixtures/diagnostic_request/do-200.xml +73 -0
- data/fixtures/{diagnostic_order → diagnostic_request}/do-300.xml +73 -91
- data/{lib/tests/testscripts/xml/Connectathon11/Track7-LabOrderLabReport/_reference/resources/DiagnosticOrder → fixtures/diagnostic_request}/do-400.xml +74 -88
- data/fixtures/family_member_history/familymemberhistory-familyhistory-create.xml +27 -0
- data/fixtures/financial/claim-example-oral-average.xml +199 -0
- data/fixtures/financial/claim-example-oral-orthoplan.xml +298 -0
- data/fixtures/financial/claim-example.xml +98 -0
- data/fixtures/financial/eligibilityrequest-example.xml +40 -0
- data/fixtures/observation/obs-401.xml +7 -17
- data/fixtures/observation/obs-402.xml +7 -17
- data/fixtures/observation/obs-403.xml +4 -29
- data/fixtures/observation/obs-407.xml +4 -11
- data/fixtures/observation/observation-datawarehouse-create.xml +72 -0
- data/fixtures/observation/observation-familyhistory-create.xml +61 -0
- data/fixtures/observation/observation-germline-create.xml +72 -0
- data/fixtures/observation/observation-register-create.xml +72 -0
- data/fixtures/patch/medicationrequest-simple.xml +16 -0
- data/fixtures/patient/patient-example-updated.xml +1 -7
- data/fixtures/patient/patient-example-us-extensions.xml +119 -0
- data/fixtures/patient/patient-example.xml +46 -27
- data/fixtures/patient/patient-familyhistory-create.xml +45 -0
- data/fixtures/patient/patient-register-create.xml +47 -0
- data/fixtures/practitioner/practitioner-register-create.xml +32 -0
- data/fixtures/record/condition-example-f201-fever.xml +54 -49
- data/fixtures/record/condition-example-f205-infection.xml +16 -15
- data/fixtures/record/diagnosticreport-example-f201-brainct.xml +45 -18
- data/fixtures/record/encounter-example-f201-20130404.xml +42 -15
- data/fixtures/record/encounter-example-f202-20130128.xml +57 -15
- data/fixtures/record/observation-example-f202-temperature.xml +85 -60
- data/fixtures/record/organization-example-f201-aumc.xml +87 -4
- data/fixtures/record/organization-example-f203-bumc.xml +53 -4
- data/fixtures/record/patient-example-f201-roel.xml +108 -8
- data/fixtures/record/practitioner-example-f201-ab.xml +73 -14
- data/fixtures/record/procedure-example-f201-tpf.xml +39 -9
- data/fixtures/scheduling/slot-simple.xml +1 -1
- data/fixtures/sequence/sequence-register-create.xml +31 -0
- data/fixtures/specimen/spec-100.xml +8 -8
- data/fixtures/specimen/spec-400.xml +11 -11
- data/fixtures/specimen/spec-uslab-example1.xml +11 -11
- data/fixtures/specimen/specimen-familyhistory-create.xml +54 -0
- data/fixtures/specimen/specimen-register-create.xml +49 -0
- data/fixtures/terminology/codesystem-data-types.json +230 -0
- data/fixtures/terminology/codesystem-resource-types.json +482 -0
- data/fixtures/terminology/codesystem-simple.xml +129 -0
- data/fixtures/terminology/conceptmap-example.xml +141 -0
- data/fixtures/terminology/v2-codesystem.json +1297 -0
- data/fixtures/terminology/v2-valueset.json +16 -0
- data/fixtures/terminology/valueset-defined-types.json +25 -0
- data/fixtures/terminology/valueset-example.xml +111 -0
- data/fixtures/validation/observation.profile.xml +1534 -253
- data/fixtures/validation/observations/observation-example.xml +66 -0
- data/lib/FHIR_structure.json +129 -82
- data/lib/daf_resource_generator.rb +7 -7
- data/lib/data/resources.rb +50 -30
- data/lib/ext/client.rb +2 -2
- data/lib/plan_executor.rb +6 -1
- data/lib/resource_generator.rb +413 -212
- data/lib/tasks/tasks.rake +151 -20
- data/lib/tests/assertions.rb +24 -18
- data/lib/tests/base_test.rb +17 -3
- data/lib/tests/suites/argonaut_provider_connectathon_test.rb +234 -0
- data/lib/tests/suites/base_suite.rb +7 -3
- data/lib/tests/suites/connectathon_attachment_track_test.rb +124 -0
- data/lib/tests/suites/connectathon_audit_track.rb +113 -69
- data/lib/tests/suites/connectathon_care_plan_track.rb +237 -0
- data/lib/tests/suites/connectathon_fetch_patient_record.rb +40 -39
- data/lib/tests/suites/connectathon_financial_track.rb +231 -23
- data/lib/tests/suites/connectathon_genomics_track_test.rb +255 -0
- data/lib/tests/suites/connectathon_lab_order_track.rb +131 -104
- data/lib/tests/suites/connectathon_patch_track.rb +125 -0
- data/lib/tests/suites/connectathon_patient_track.rb +75 -68
- data/lib/tests/suites/connectathon_profile_validation.rb +9 -8
- data/lib/tests/suites/connectathon_scheduling_track.rb +127 -70
- data/lib/tests/suites/connectathon_terminology_track.rb +211 -34
- data/lib/tests/suites/daf_profiles_test.rb +112 -72
- data/lib/tests/suites/format_test.rb +113 -255
- data/lib/tests/suites/history_test.rb +72 -68
- data/lib/tests/suites/read_test.rb +31 -27
- data/lib/tests/suites/resource_test.rb +283 -85
- data/lib/tests/suites/search_test.rb +5 -3
- data/lib/tests/suites/search_test_robust.rb +8 -76
- data/lib/tests/suites/sprinkler_search_test.rb +104 -84
- data/lib/tests/suites/suite_engine.rb +17 -23
- data/lib/tests/suites/transaction_test.rb +117 -174
- data/lib/tests/testscripts/base_testscript.rb +425 -189
- data/lib/tests/testscripts/scripts/connectathon/Patient-01-Intro/Client Assigned Id/connectathon-14-patient-base-client-id-json.xml +517 -0
- data/lib/tests/testscripts/scripts/connectathon/Patient-01-Intro/Client Assigned Id/connectathon-14-patient-base-client-id-xml.xml +517 -0
- data/lib/tests/testscripts/scripts/connectathon/Patient-01-Intro/Client Assigned Id/connectathon-14-patient-bonus-client-id-json.xml +648 -0
- data/lib/tests/testscripts/scripts/connectathon/Patient-01-Intro/Client Assigned Id/connectathon-14-patient-bonus-client-id-xml.xml +648 -0
- data/lib/tests/testscripts/scripts/connectathon/Patient-01-Intro/README.html +68 -0
- data/lib/tests/testscripts/scripts/connectathon/Patient-01-Intro/Server Assigned Id/connectathon-14-patient-base-server-id-json.xml +515 -0
- data/lib/tests/testscripts/scripts/connectathon/Patient-01-Intro/Server Assigned Id/connectathon-14-patient-base-server-id-xml.xml +515 -0
- data/lib/tests/testscripts/scripts/connectathon/Patient-01-Intro/Server Assigned Id/connectathon-14-patient-bonus-server-id-json.xml +645 -0
- data/lib/tests/testscripts/scripts/connectathon/Patient-01-Intro/Server Assigned Id/connectathon-14-patient-bonus-server-id-xml.xml +642 -0
- data/lib/tests/testscripts/scripts/connectathon/Patient-01-Intro/_reference/capabilities/PatientCapabilityStatement.xml +43 -0
- data/lib/tests/testscripts/{xml/Connectathon11/Track1-Patient → scripts/connectathon/Patient-01-Intro}/_reference/resources/patient-create-PeterChalmers-min.json +1 -3
- data/lib/tests/testscripts/{xml/Connectathon11/Track1-Patient → scripts/connectathon/Patient-01-Intro}/_reference/resources/patient-create-PeterChalmers-min.xml +0 -0
- data/lib/tests/testscripts/{xml/Connectathon11/Track1-Patient → scripts/connectathon/Patient-01-Intro}/_reference/resources/patient-create-PeterChalmers.json +5 -10
- data/lib/tests/testscripts/{xml/Connectathon11/Track1-Patient → scripts/connectathon/Patient-01-Intro}/_reference/resources/patient-create-PeterChalmers.xml +5 -5
- data/lib/tests/testscripts/{xml/Connectathon11/Track1-Patient → scripts/connectathon/Patient-01-Intro}/_reference/resources/patient-create-bonus-PeterChalmers-min.json +1 -3
- data/lib/tests/testscripts/{xml/Connectathon11/Track1-Patient → scripts/connectathon/Patient-01-Intro}/_reference/resources/patient-create-bonus-PeterChalmers-min.xml +0 -0
- data/lib/tests/testscripts/{xml/Connectathon11/Track1-Patient → scripts/connectathon/Patient-01-Intro}/_reference/resources/patient-create-bonus-PeterChalmers.json +5 -10
- data/lib/tests/testscripts/{xml/Connectathon11/Track1-Patient → scripts/connectathon/Patient-01-Intro}/_reference/resources/patient-create-bonus-PeterChalmers.xml +4 -5
- data/lib/tests/testscripts/scripts/connectathon/Patient-01-Intro/_reference/resources/patient-create-client-id-PeterChalmers.json +96 -0
- data/lib/tests/testscripts/scripts/connectathon/Patient-01-Intro/_reference/resources/patient-create-client-id-PeterChalmers.xml +103 -0
- data/lib/tests/testscripts/scripts/connectathon/Patient-01-Intro/_reference/resources/patient-create-client-id-bonus-PeterChalmers.json +104 -0
- data/lib/tests/testscripts/scripts/connectathon/Patient-01-Intro/_reference/resources/patient-create-client-id-bonus-PeterChalmers.xml +108 -0
- data/lib/tests/testscripts/{xml/Connectathon11/Track1-Patient → scripts/connectathon/Patient-01-Intro}/_reference/resources/patient-update-PeterChalmers-min.json +1 -3
- data/lib/tests/testscripts/{xml/Connectathon11/Track1-Patient → scripts/connectathon/Patient-01-Intro}/_reference/resources/patient-update-PeterChalmers-min.xml +0 -0
- data/lib/tests/testscripts/{xml/Connectathon11/Track1-Patient → scripts/connectathon/Patient-01-Intro}/_reference/resources/patient-update-PeterChalmers.json +6 -10
- data/lib/tests/testscripts/{xml/Connectathon11/Track1-Patient → scripts/connectathon/Patient-01-Intro}/_reference/resources/patient-update-PeterChalmers.xml +6 -5
- data/lib/tests/testscripts/{xml/Connectathon11/Track1-Patient → scripts/connectathon/Patient-01-Intro}/_reference/resources/patient-update-bonus1-PeterChalmers-min.json +1 -3
- data/lib/tests/testscripts/{xml/Connectathon11/Track1-Patient → scripts/connectathon/Patient-01-Intro}/_reference/resources/patient-update-bonus1-PeterChalmers-min.xml +0 -0
- data/lib/tests/testscripts/{xml/Connectathon11/Track1-Patient → scripts/connectathon/Patient-01-Intro}/_reference/resources/patient-update-bonus1-PeterChalmers.json +7 -11
- data/lib/tests/testscripts/{xml/Connectathon11/Track1-Patient → scripts/connectathon/Patient-01-Intro}/_reference/resources/patient-update-bonus1-PeterChalmers.xml +5 -5
- data/lib/tests/testscripts/{xml/Connectathon11/Track1-Patient → scripts/connectathon/Patient-01-Intro}/_reference/resources/patient-update-bonus2-PeterChalmers-min.json +2 -4
- data/lib/tests/testscripts/{xml/Connectathon11/Track1-Patient → scripts/connectathon/Patient-01-Intro}/_reference/resources/patient-update-bonus2-PeterChalmers-min.xml +1 -1
- data/lib/tests/testscripts/{xml/Connectathon11/Track1-Patient → scripts/connectathon/Patient-01-Intro}/_reference/resources/patient-update-bonus2-PeterChalmers.json +7 -11
- data/lib/tests/testscripts/{xml/Connectathon11/Track1-Patient → scripts/connectathon/Patient-01-Intro}/_reference/resources/patient-update-bonus2-PeterChalmers.xml +8 -7
- data/lib/tests/testscripts/scripts/connectathon/Patient-02-Formal/FHIRClient/01-RegisterPatient/connectathon-14-patient-fhirclient-01-register-client-id-xml.xml +306 -0
- data/lib/tests/testscripts/scripts/connectathon/Patient-02-Formal/FHIRClient/01-RegisterPatient/connectathon-14-patient-fhirclient-01-register-server-id-xml.xml +317 -0
- data/lib/tests/testscripts/scripts/connectathon/Patient-02-Formal/FHIRClient/02-PatientUpdate/connectathon-14-patient-fhirclient-02-update-client-id-xml.xml +346 -0
- data/lib/tests/testscripts/scripts/connectathon/Patient-02-Formal/FHIRClient/02-PatientUpdate/connectathon-14-patient-fhirclient-02-update-server-id-xml.xml +385 -0
- data/lib/tests/testscripts/scripts/connectathon/Patient-02-Formal/FHIRClient/_reference/capabilities/PatientCapabilityStatement.json +50 -0
- data/lib/tests/testscripts/{xml/Connectathon11/Track1-Patient/_reference/conformance/PatientConformance.xml → scripts/connectathon/Patient-02-Formal/FHIRClient/_reference/capabilities/PatientCapabilityStatement.xml} +10 -2
- data/lib/tests/testscripts/scripts/connectathon/Patient-02-Formal/FHIRClient/_reference/resources/patient-create-client-id.json +21 -0
- data/lib/tests/testscripts/scripts/connectathon/Patient-02-Formal/FHIRClient/_reference/resources/patient-create-client-id.xml +15 -0
- data/lib/tests/testscripts/scripts/connectathon/Patient-02-Formal/FHIRClient/_reference/resources/patient-create-server-id.json +20 -0
- data/lib/tests/testscripts/scripts/connectathon/Patient-02-Formal/FHIRClient/_reference/resources/patient-create-server-id.xml +14 -0
- data/lib/tests/testscripts/scripts/connectathon/Patient-02-Formal/FHIRClient/_reference/resources/patient-update-client-id.json +21 -0
- data/lib/tests/testscripts/scripts/connectathon/Patient-02-Formal/FHIRClient/_reference/resources/patient-update-client-id.xml +15 -0
- data/lib/tests/testscripts/scripts/connectathon/Patient-02-Formal/FHIRClient/_reference/resources/patient-update-server-id.json +20 -0
- data/lib/tests/testscripts/scripts/connectathon/Patient-02-Formal/FHIRClient/_reference/resources/patient-update-server-id.xml +14 -0
- data/lib/tests/testscripts/scripts/connectathon/Patient-02-Formal/FHIRServer/01-RegisterPatient/connectathon-14-patient-fhirserver-01-register-client-id-json.xml +262 -0
- data/lib/tests/testscripts/scripts/connectathon/Patient-02-Formal/FHIRServer/01-RegisterPatient/connectathon-14-patient-fhirserver-01-register-client-id-xml.xml +262 -0
- data/lib/tests/testscripts/scripts/connectathon/Patient-02-Formal/FHIRServer/01-RegisterPatient/connectathon-14-patient-fhirserver-01-register-server-id-json.xml +273 -0
- data/lib/tests/testscripts/scripts/connectathon/Patient-02-Formal/FHIRServer/01-RegisterPatient/connectathon-14-patient-fhirserver-01-register-server-id-xml.xml +273 -0
- data/lib/tests/testscripts/scripts/connectathon/Patient-02-Formal/FHIRServer/02-PatientUpdate/connectathon-14-patient-fhirserver-02-update-client-id-json.xml +290 -0
- data/lib/tests/testscripts/scripts/connectathon/Patient-02-Formal/FHIRServer/02-PatientUpdate/connectathon-14-patient-fhirserver-02-update-client-id-xml.xml +290 -0
- data/lib/tests/testscripts/scripts/connectathon/Patient-02-Formal/FHIRServer/02-PatientUpdate/connectathon-14-patient-fhirserver-02-update-server-id-json.xml +326 -0
- data/lib/tests/testscripts/scripts/connectathon/Patient-02-Formal/FHIRServer/02-PatientUpdate/connectathon-14-patient-fhirserver-02-update-server-id-xml.xml +326 -0
- data/lib/tests/testscripts/scripts/connectathon/Patient-02-Formal/FHIRServer/03-PatientRead/connectathon-14-patient-fhirserver-03-read-client-id-json.xml +247 -0
- data/lib/tests/testscripts/scripts/connectathon/Patient-02-Formal/FHIRServer/03-PatientRead/connectathon-14-patient-fhirserver-03-read-client-id-xml.xml +247 -0
- data/lib/tests/testscripts/scripts/connectathon/Patient-02-Formal/FHIRServer/03-PatientRead/connectathon-14-patient-fhirserver-03-read-server-id-json.xml +282 -0
- data/lib/tests/testscripts/scripts/connectathon/Patient-02-Formal/FHIRServer/03-PatientRead/connectathon-14-patient-fhirserver-03-read-server-id-xml.xml +281 -0
- data/lib/tests/testscripts/scripts/connectathon/Patient-02-Formal/FHIRServer/04-PatientHistory/connectathon-14-patient-fhirserver-04-history-client-id-json.xml +330 -0
- data/lib/tests/testscripts/scripts/connectathon/Patient-02-Formal/FHIRServer/04-PatientHistory/connectathon-14-patient-fhirserver-04-history-client-id-xml.xml +330 -0
- data/lib/tests/testscripts/scripts/connectathon/Patient-02-Formal/FHIRServer/04-PatientHistory/connectathon-14-patient-fhirserver-04-history-server-id-json.xml +366 -0
- data/lib/tests/testscripts/scripts/connectathon/Patient-02-Formal/FHIRServer/04-PatientHistory/connectathon-14-patient-fhirserver-04-history-server-id-xml.xml +366 -0
- data/lib/tests/testscripts/scripts/connectathon/Patient-02-Formal/FHIRServer/05-PatientVRead/connectathon-14-patient-fhirserver-05-vread-client-id-json.xml +527 -0
- data/lib/tests/testscripts/scripts/connectathon/Patient-02-Formal/FHIRServer/05-PatientVRead/connectathon-14-patient-fhirserver-05-vread-client-id-xml.xml +527 -0
- data/lib/tests/testscripts/scripts/connectathon/Patient-02-Formal/FHIRServer/05-PatientVRead/connectathon-14-patient-fhirserver-05-vread-server-id-json.xml +519 -0
- data/lib/tests/testscripts/scripts/connectathon/Patient-02-Formal/FHIRServer/05-PatientVRead/connectathon-14-patient-fhirserver-05-vread-server-id-xml.xml +519 -0
- data/lib/tests/testscripts/scripts/connectathon/Patient-02-Formal/FHIRServer/06-PatientSearching/connectathon-14-patient-fhirserver-06-search-client-id-json.xml +290 -0
- data/lib/tests/testscripts/scripts/connectathon/Patient-02-Formal/FHIRServer/06-PatientSearching/connectathon-14-patient-fhirserver-06-search-client-id-xml.xml +290 -0
- data/lib/tests/testscripts/scripts/connectathon/Patient-02-Formal/FHIRServer/06-PatientSearching/connectathon-14-patient-fhirserver-06-search-server-id-json.xml +288 -0
- data/lib/tests/testscripts/scripts/connectathon/Patient-02-Formal/FHIRServer/06-PatientSearching/connectathon-14-patient-fhirserver-06-search-server-id-xml.xml +288 -0
- data/lib/tests/testscripts/scripts/connectathon/Patient-02-Formal/FHIRServer/07-PatientDeletion/connectathon-14-patient-fhirserver-07-delete-client-id-json.xml +252 -0
- data/lib/tests/testscripts/scripts/connectathon/Patient-02-Formal/FHIRServer/07-PatientDeletion/connectathon-14-patient-fhirserver-07-delete-client-id-xml.xml +252 -0
- data/lib/tests/testscripts/scripts/connectathon/Patient-02-Formal/FHIRServer/07-PatientDeletion/connectathon-14-patient-fhirserver-07-delete-server-id-json.xml +284 -0
- data/lib/tests/testscripts/scripts/connectathon/Patient-02-Formal/FHIRServer/07-PatientDeletion/connectathon-14-patient-fhirserver-07-delete-server-id-xml.xml +284 -0
- data/lib/tests/testscripts/scripts/connectathon/Patient-02-Formal/FHIRServer/99-PatientAll/connectathon-14-patient-fhirserver-99-all-client-id-json.xml +897 -0
- data/lib/tests/testscripts/scripts/connectathon/Patient-02-Formal/FHIRServer/99-PatientAll/connectathon-14-patient-fhirserver-99-all-client-id-xml.xml +897 -0
- data/lib/tests/testscripts/scripts/connectathon/Patient-02-Formal/FHIRServer/99-PatientAll/connectathon-14-patient-fhirserver-99-all-server-id-json.xml +963 -0
- data/lib/tests/testscripts/scripts/connectathon/Patient-02-Formal/FHIRServer/99-PatientAll/connectathon-14-patient-fhirserver-99-all-server-id-xml.xml +963 -0
- data/lib/tests/testscripts/scripts/connectathon/Patient-02-Formal/FHIRServer/_reference/capabilities/PatientCapabilityStatement.json +50 -0
- data/lib/tests/testscripts/scripts/connectathon/Patient-02-Formal/FHIRServer/_reference/capabilities/PatientCapabilityStatement.xml +42 -0
- data/lib/tests/testscripts/scripts/connectathon/Patient-02-Formal/FHIRServer/_reference/resources/patient-create-client-id.json +86 -0
- data/lib/tests/testscripts/scripts/connectathon/Patient-02-Formal/FHIRServer/_reference/resources/patient-create-client-id.xml +62 -0
- data/lib/tests/testscripts/scripts/connectathon/Patient-02-Formal/FHIRServer/_reference/resources/patient-create-server-id.json +85 -0
- data/lib/tests/testscripts/scripts/connectathon/Patient-02-Formal/FHIRServer/_reference/resources/patient-create-server-id.xml +61 -0
- data/lib/tests/testscripts/scripts/connectathon/Patient-02-Formal/FHIRServer/_reference/resources/patient-update-client-id.json +86 -0
- data/lib/tests/testscripts/scripts/connectathon/Patient-02-Formal/FHIRServer/_reference/resources/patient-update-client-id.xml +62 -0
- data/lib/tests/testscripts/scripts/connectathon/Patient-02-Formal/FHIRServer/_reference/resources/patient-update-server-id.json +86 -0
- data/lib/tests/testscripts/scripts/connectathon/Patient-02-Formal/FHIRServer/_reference/resources/patient-update-server-id.xml +62 -0
- data/lib/tests/testscripts/scripts/spec/_reference/resources/patient-example-update.json +145 -0
- data/lib/tests/testscripts/scripts/spec/_reference/resources/patient-example.json +146 -0
- data/lib/tests/testscripts/scripts/spec/testscript-example-history.xml +191 -0
- data/lib/tests/testscripts/scripts/spec/testscript-example-multisystem.xml +190 -0
- data/lib/tests/testscripts/scripts/spec/testscript-example-readtest.xml +178 -0
- data/lib/tests/testscripts/scripts/spec/testscript-example-rule.xml +266 -0
- data/lib/tests/testscripts/scripts/spec/testscript-example-search.xml +177 -0
- data/lib/tests/testscripts/scripts/spec/testscript-example-update.xml +163 -0
- data/lib/tests/testscripts/scripts/spec/testscript-example.xml +228 -0
- data/lib/tests/testscripts/testscript_engine.rb +36 -22
- data/logs/.keep +0 -0
- data/plan_executor.gemspec +11 -3
- data/test/test_helper.rb +3 -3
- data/test/unit/fixtures_test.rb +24 -24
- data/test/unit/metadata_test.rb +19 -9
- data/test/unit/resource_generator_test.rb +20 -0
- metadata +244 -249
- data/fixtures/diagnostic_order/do-200.xml +0 -121
- data/fixtures/diagnostic_order/do-400.xml +0 -88
- data/fixtures/financial/claim-example-average.xml +0 -168
- data/fixtures/financial/claim-example-simple.xml +0 -67
- data/fixtures/order/order-100.xml +0 -61
- data/fixtures/order/order-200.xml +0 -61
- data/fixtures/order/order-300.xml +0 -61
- data/fixtures/order/order-400.xml +0 -61
- data/fixtures/order_response/ordresp-100.xml +0 -79
- data/fixtures/order_response/ordresp-110.xml +0 -79
- data/fixtures/order_response/ordresp-200.xml +0 -79
- data/fixtures/order_response/ordresp-210.xml +0 -79
- data/fixtures/order_response/ordresp-300.xml +0 -79
- data/fixtures/order_response/ordresp-310.xml +0 -79
- data/fixtures/order_response/ordresp-400.xml +0 -79
- data/fixtures/order_response/ordresp-410.xml +0 -79
- data/fixtures/patient/patient-example-us-extensions(us01).xml +0 -81
- data/fixtures/patient/patient-format-example.xml +0 -101
- data/fixtures/validation/observations/observation-example(example).xml +0 -50
- data/lib/tests/suites/argonaut_resprint_1_test.rb +0 -260
- data/lib/tests/suites/argonaut_resprint_2_test.rb +0 -369
- data/lib/tests/suites/argonaut_resprint_3_test.rb +0 -309
- data/lib/tests/suites/argonaut_sprint_1_test.rb +0 -187
- data/lib/tests/suites/argonaut_sprint_2_test.rb +0 -115
- data/lib/tests/suites/argonaut_sprint_3_test.rb +0 -208
- data/lib/tests/suites/argonaut_sprint_4_test.rb +0 -335
- data/lib/tests/suites/argonaut_sprint_5_test.rb +0 -196
- data/lib/tests/suites/argonaut_sprint_6_test.rb +0 -243
- data/lib/tests/suites/argonaut_sprint_7_test.rb +0 -161
- data/lib/tests/testscripts/xml/Connectathon11/Track1-Patient/Client Assigned Id/track1-patient-base-client-id-json.xml +0 -348
- data/lib/tests/testscripts/xml/Connectathon11/Track1-Patient/Client Assigned Id/track1-patient-base-client-id-xml.xml +0 -348
- data/lib/tests/testscripts/xml/Connectathon11/Track1-Patient/Client Assigned Id/track1-patient-bonus-client-id-json.xml +0 -420
- data/lib/tests/testscripts/xml/Connectathon11/Track1-Patient/Client Assigned Id/track1-patient-bonus-client-id-xml.xml +0 -420
- data/lib/tests/testscripts/xml/Connectathon11/Track1-Patient/README.html +0 -68
- data/lib/tests/testscripts/xml/Connectathon11/Track1-Patient/Server Assigned Id/track1-patient-base-server-id-json.xml +0 -352
- data/lib/tests/testscripts/xml/Connectathon11/Track1-Patient/Server Assigned Id/track1-patient-base-server-id-xml.xml +0 -352
- data/lib/tests/testscripts/xml/Connectathon11/Track1-Patient/Server Assigned Id/track1-patient-bonus-server-id-json.xml +0 -421
- data/lib/tests/testscripts/xml/Connectathon11/Track1-Patient/Server Assigned Id/track1-patient-bonus-server-id-xml.xml +0 -421
- data/lib/tests/testscripts/xml/Connectathon11/Track11-SDC/_reference/C-CDA_R2-1_CCD-ussg.xml +0 -3414
- data/lib/tests/testscripts/xml/Connectathon11/Track11-SDC/_reference/resources/parameters-A1-empty-on-instance.xml +0 -9
- data/lib/tests/testscripts/xml/Connectathon11/Track11-SDC/_reference/resources/parameters-A2-empty-by-ref.xml +0 -15
- data/lib/tests/testscripts/xml/Connectathon11/Track11-SDC/_reference/resources/parameters-A3-empty-by-identifier.xml +0 -13
- data/lib/tests/testscripts/xml/Connectathon11/Track11-SDC/_reference/resources/parameters-A4-empty-by-contained.xml +0 -15
- data/lib/tests/testscripts/xml/Connectathon11/Track11-SDC/_reference/resources/parameters-B1-CCDA-on-instance.xml +0 -15
- data/lib/tests/testscripts/xml/Connectathon11/Track11-SDC/_reference/resources/parameters-B2-CCDA-by-ref.xml +0 -21
- data/lib/tests/testscripts/xml/Connectathon11/Track11-SDC/_reference/resources/parameters-B3-CCDA-by-identifier.xml +0 -19
- data/lib/tests/testscripts/xml/Connectathon11/Track11-SDC/_reference/resources/parameters-B4-CCDA-by-contained.xml +0 -21
- data/lib/tests/testscripts/xml/Connectathon11/Track11-SDC/_reference/resources/questionnaire-sdc-profile-example-ussg-fht.xml +0 -3905
- data/lib/tests/testscripts/xml/Connectathon11/Track11-SDC/_reference/resources/questionnaireresponse-expected-ussg-fht-CCDA.xml +0 -190
- data/lib/tests/testscripts/xml/Connectathon11/Track11-SDC/_reference/resources/questionnaireresponse-expected-ussg-fht-empty.xml +0 -177
- data/lib/tests/testscripts/xml/Connectathon11/Track11-SDC/track11-sdc-prepop-xml.xml +0 -142
- data/lib/tests/testscripts/xml/Connectathon11/Track2-Terminology/Expand/Client Assigned Id/track2-ts-suite1-expand-client-id.xml +0 -925
- data/lib/tests/testscripts/xml/Connectathon11/Track2-Terminology/Expand/Client Assigned Id/track2-ts-suite2-expand-filter-client-id.xml +0 -930
- data/lib/tests/testscripts/xml/Connectathon11/Track2-Terminology/Expand/Server Assigned Id/track2-ts-suite1-expand-server-id.xml +0 -953
- data/lib/tests/testscripts/xml/Connectathon11/Track2-Terminology/Expand/Server Assigned Id/track2-ts-suite2-expand-filter-server-id.xml +0 -958
- data/lib/tests/testscripts/xml/Connectathon11/Track2-Terminology/Lookup/track2-ts-suite5-loinc-lookup-xml.xml +0 -224
- data/lib/tests/testscripts/xml/Connectathon11/Track2-Terminology/Lookup/track2-ts-suite5-snomed-lookup-xml.xml +0 -224
- data/lib/tests/testscripts/xml/Connectathon11/Track2-Terminology/README.html +0 -85
- data/lib/tests/testscripts/xml/Connectathon11/Track2-Terminology/Translate/track2-ts-suite6-translate-xml.xml +0 -224
- data/lib/tests/testscripts/xml/Connectathon11/Track2-Terminology/Validate-code/Client Assigned Id/track2-ts-suite3-validate-code-client-id.xml +0 -1807
- data/lib/tests/testscripts/xml/Connectathon11/Track2-Terminology/Validate-code/Client Assigned Id/track2-ts-suite4-validate-code-client-id.xml +0 -714
- data/lib/tests/testscripts/xml/Connectathon11/Track2-Terminology/Validate-code/Server Assigned Id/track2-ts-suite3-validate-code-server-id.xml +0 -1835
- data/lib/tests/testscripts/xml/Connectathon11/Track2-Terminology/Validate-code/Server Assigned Id/track2-ts-suite4-validate-code-server-id.xml +0 -742
- data/lib/tests/testscripts/xml/Connectathon11/Track2-Terminology/_reference/conformance/ConceptMapSuite6Conformance.xml +0 -11
- data/lib/tests/testscripts/xml/Connectathon11/Track2-Terminology/_reference/conformance/ValueSetSuite1Conformance.xml +0 -17
- data/lib/tests/testscripts/xml/Connectathon11/Track2-Terminology/_reference/conformance/ValueSetSuite2Conformance.xml +0 -17
- data/lib/tests/testscripts/xml/Connectathon11/Track2-Terminology/_reference/conformance/ValueSetSuite3Conformance.xml +0 -14
- data/lib/tests/testscripts/xml/Connectathon11/Track2-Terminology/_reference/conformance/ValueSetSuite4Conformance.xml +0 -14
- data/lib/tests/testscripts/xml/Connectathon11/Track2-Terminology/_reference/conformance/ValueSetSuite5Conformance.xml +0 -11
- data/lib/tests/testscripts/xml/Connectathon11/Track2-Terminology/_reference/input/extensional-case-1-input-4-2-a.xml +0 -11
- data/lib/tests/testscripts/xml/Connectathon11/Track2-Terminology/_reference/input/extensional-case-1-input-4-2-b.xml +0 -11
- data/lib/tests/testscripts/xml/Connectathon11/Track2-Terminology/_reference/input/extensional-case-1-input-4-3-a.xml +0 -13
- data/lib/tests/testscripts/xml/Connectathon11/Track2-Terminology/_reference/input/extensional-case-1-input-4-3-b.xml +0 -13
- data/lib/tests/testscripts/xml/Connectathon11/Track2-Terminology/_reference/input/extensional-case-1-input-4-4-a.xml +0 -15
- data/lib/tests/testscripts/xml/Connectathon11/Track2-Terminology/_reference/input/extensional-case-1-input-4-4-b.xml +0 -15
- data/lib/tests/testscripts/xml/Connectathon11/Track2-Terminology/_reference/input/lookup-loinc-input-5-2.xml +0 -10
- data/lib/tests/testscripts/xml/Connectathon11/Track2-Terminology/_reference/input/lookup-loinc-input-5-3.xml +0 -11
- data/lib/tests/testscripts/xml/Connectathon11/Track2-Terminology/_reference/input/lookup-snomed-input-5-2.xml +0 -10
- data/lib/tests/testscripts/xml/Connectathon11/Track2-Terminology/_reference/input/lookup-snomed-input-5-3.xml +0 -11
- data/lib/tests/testscripts/xml/Connectathon11/Track2-Terminology/_reference/input/translate-conceptmap-input-6-2.xml +0 -14
- data/lib/tests/testscripts/xml/Connectathon11/Track2-Terminology/_reference/input/translate-conceptmap-input-6-3.xml +0 -15
- data/lib/tests/testscripts/xml/Connectathon11/Track2-Terminology/_reference/output/extensional-case-1-expand-min.xml +0 -47
- data/lib/tests/testscripts/xml/Connectathon11/Track2-Terminology/_reference/output/extensional-case-1-filter-min.xml +0 -23
- data/lib/tests/testscripts/xml/Connectathon11/Track2-Terminology/_reference/output/extensional-case-2-expand-min.xml +0 -132
- data/lib/tests/testscripts/xml/Connectathon11/Track2-Terminology/_reference/output/extensional-case-2-filter-min.xml +0 -38
- data/lib/tests/testscripts/xml/Connectathon11/Track2-Terminology/_reference/output/extensional-case-3-expand-min.xml +0 -252
- data/lib/tests/testscripts/xml/Connectathon11/Track2-Terminology/_reference/output/extensional-case-3-filter-min.xml +0 -58
- data/lib/tests/testscripts/xml/Connectathon11/Track2-Terminology/_reference/output/extensional-case-4-expand-min.xml +0 -57
- data/lib/tests/testscripts/xml/Connectathon11/Track2-Terminology/_reference/output/extensional-case-4-filter-min.xml +0 -28
- data/lib/tests/testscripts/xml/Connectathon11/Track2-Terminology/_reference/output/intensional-case-1-expand-min.xml +0 -347
- data/lib/tests/testscripts/xml/Connectathon11/Track2-Terminology/_reference/output/intensional-case-1-filter-min.xml +0 -33
- data/lib/tests/testscripts/xml/Connectathon11/Track2-Terminology/_reference/output/intensional-case-2-expand-min.xml +0 -637
- data/lib/tests/testscripts/xml/Connectathon11/Track2-Terminology/_reference/output/intensional-case-2-filter-min.xml +0 -33
- data/lib/tests/testscripts/xml/Connectathon11/Track2-Terminology/_reference/output/intensional-case-3-filter-min.xml +0 -58
- data/lib/tests/testscripts/xml/Connectathon11/Track2-Terminology/_reference/output/lookup-loinc-min.xml +0 -11
- data/lib/tests/testscripts/xml/Connectathon11/Track2-Terminology/_reference/output/lookup-snomed-min.xml +0 -11
- data/lib/tests/testscripts/xml/Connectathon11/Track2-Terminology/_reference/output/suite3-invalid-min.xml +0 -10
- data/lib/tests/testscripts/xml/Connectathon11/Track2-Terminology/_reference/output/suite3-valid-min.xml +0 -7
- data/lib/tests/testscripts/xml/Connectathon11/Track2-Terminology/_reference/output/suite4-invalid-min.xml +0 -10
- data/lib/tests/testscripts/xml/Connectathon11/Track2-Terminology/_reference/output/suite4-valid-min.xml +0 -7
- data/lib/tests/testscripts/xml/Connectathon11/Track2-Terminology/_reference/output/translate-conceptmap-min.xml +0 -17
- data/lib/tests/testscripts/xml/Connectathon11/Track2-Terminology/_reference/resources/extensional-case-1.xml +0 -55
- data/lib/tests/testscripts/xml/Connectathon11/Track2-Terminology/_reference/resources/extensional-case-2.xml +0 -122
- data/lib/tests/testscripts/xml/Connectathon11/Track2-Terminology/_reference/resources/extensional-case-3.xml +0 -222
- data/lib/tests/testscripts/xml/Connectathon11/Track2-Terminology/_reference/resources/extensional-case-4.xml +0 -65
- data/lib/tests/testscripts/xml/Connectathon11/Track2-Terminology/_reference/resources/intensional-case-1.xml +0 -31
- data/lib/tests/testscripts/xml/Connectathon11/Track2-Terminology/_reference/resources/intensional-case-2.xml +0 -31
- data/lib/tests/testscripts/xml/Connectathon11/Track2-Terminology/_reference/resources/intensional-case-3.xml +0 -31
- data/lib/tests/testscripts/xml/Connectathon11/Track2-Terminology/_reference/resources/translate-conceptmap-case-1.xml +0 -145
- data/lib/tests/testscripts/xml/Connectathon11/Track3-CDS-on-FHIR/_reference/conformance/DecisionSupportServiceModule-Evaluate.xml +0 -17
- data/lib/tests/testscripts/xml/Connectathon11/Track3-CDS-on-FHIR/_reference/resources/ecrs-fhir-cdc-immunizations-incomplete-request-payload.xml +0 -26
- data/lib/tests/testscripts/xml/Connectathon11/Track3-CDS-on-FHIR/_reference/resources/ecrs-fhir-cdc-immunizations-incomplete-response-min-payload.xml +0 -7
- data/lib/tests/testscripts/xml/Connectathon11/Track3-CDS-on-FHIR/_reference/resources/ecrs-fhir-cdc-immunizations-incomplete-response-payload.xml +0 -332
- data/lib/tests/testscripts/xml/Connectathon11/Track3-CDS-on-FHIR/_reference/resources/ecrs-fhir-cdc-immunizations-malformed-request-payload.xml +0 -28
- data/lib/tests/testscripts/xml/Connectathon11/Track3-CDS-on-FHIR/_reference/resources/ecrs-fhir-cdc-immunizations-malformed-response-min-payload.xml +0 -7
- data/lib/tests/testscripts/xml/Connectathon11/Track3-CDS-on-FHIR/_reference/resources/ecrs-fhir-cdc-immunizations-malformed-response-payload.xml +0 -20
- data/lib/tests/testscripts/xml/Connectathon11/Track3-CDS-on-FHIR/_reference/resources/ecrs-fhir-cdc-immunizations-request-payload.xml +0 -28
- data/lib/tests/testscripts/xml/Connectathon11/Track3-CDS-on-FHIR/_reference/resources/ecrs-fhir-cdc-immunizations-response-min-payload.xml +0 -7
- data/lib/tests/testscripts/xml/Connectathon11/Track3-CDS-on-FHIR/_reference/resources/ecrs-fhir-cdc-immunizations-response-payload.xml +0 -332
- data/lib/tests/testscripts/xml/Connectathon11/Track3-CDS-on-FHIR/_reference/resources/ecrs-fhir-cdc-immunizations-unauthorized-request-payload.xml +0 -28
- data/lib/tests/testscripts/xml/Connectathon11/Track3-CDS-on-FHIR/_reference/resources/ecrs-fhir-cdc-immunizations-unauthorized-response-min-payload.xml +0 -7
- data/lib/tests/testscripts/xml/Connectathon11/Track3-CDS-on-FHIR/_reference/resources/ecrs-fhir-cdc-immunizations-unauthorized-response-payload.xml +0 -8
- data/lib/tests/testscripts/xml/Connectathon11/Track3-CDS-on-FHIR/_reference/resources/gao-assessment-request-payload.xml +0 -176
- data/lib/tests/testscripts/xml/Connectathon11/Track3-CDS-on-FHIR/_reference/resources/gao-assessment-response-payload-min.xml +0 -32
- data/lib/tests/testscripts/xml/Connectathon11/Track3-CDS-on-FHIR/_reference/resources/gao-assessment-response-payload.xml +0 -80
- data/lib/tests/testscripts/xml/Connectathon11/Track3-CDS-on-FHIR/track3-cds-evaluate-cdc-immunization.xml +0 -290
- data/lib/tests/testscripts/xml/Connectathon11/Track3-CDS-on-FHIR/track3-cds-evaluate-gao-profile.xml +0 -110
- data/lib/tests/testscripts/xml/Connectathon11/Track6-FHIR-Genomics/Client_Assigned_Id/TestScript_FHIR-Genomics.xml +0 -170
- data/lib/tests/testscripts/xml/Connectathon11/Track6-FHIR-Genomics/_reference/resources/sequence-example-1.xml +0 -31
- data/lib/tests/testscripts/xml/Connectathon11/Track6-FHIR-Genomics/_reference/resources/sequence-example-2.xml +0 -31
- data/lib/tests/testscripts/xml/Connectathon11/Track7-LabOrderLabReport/Actors.png +0 -0
- data/lib/tests/testscripts/xml/Connectathon11/Track7-LabOrderLabReport/Client_Assigned_Id/track7-laborder100-xml.xml +0 -590
- data/lib/tests/testscripts/xml/Connectathon11/Track7-LabOrderLabReport/Client_Assigned_Id/track7-laborder200-xml.xml +0 -587
- data/lib/tests/testscripts/xml/Connectathon11/Track7-LabOrderLabReport/Client_Assigned_Id/track7-laborder300-xml.xml +0 -612
- data/lib/tests/testscripts/xml/Connectathon11/Track7-LabOrderLabReport/Client_Assigned_Id/track7-laborder400-xml.xml +0 -635
- data/lib/tests/testscripts/xml/Connectathon11/Track7-LabOrderLabReport/Peer-to-Peer/track7-laborder100-peer2peer-xml.xml +0 -752
- data/lib/tests/testscripts/xml/Connectathon11/Track7-LabOrderLabReport/Thumbs.db +0 -0
- data/lib/tests/testscripts/xml/Connectathon11/Track7-LabOrderLabReport/_reference/conformance/LabOrderLabReport-CreateDeleteReadUpdate.xml +0 -187
- data/lib/tests/testscripts/xml/Connectathon11/Track7-LabOrderLabReport/_reference/conformance/html.xslt +0 -45
- data/lib/tests/testscripts/xml/Connectathon11/Track7-LabOrderLabReport/_reference/resources/DiagnosticOrder/do-100-update.xml +0 -64
- data/lib/tests/testscripts/xml/Connectathon11/Track7-LabOrderLabReport/_reference/resources/DiagnosticOrder/do-100.xml +0 -64
- data/lib/tests/testscripts/xml/Connectathon11/Track7-LabOrderLabReport/_reference/resources/DiagnosticOrder/do-200-update.xml +0 -121
- data/lib/tests/testscripts/xml/Connectathon11/Track7-LabOrderLabReport/_reference/resources/DiagnosticOrder/do-200.xml +0 -121
- data/lib/tests/testscripts/xml/Connectathon11/Track7-LabOrderLabReport/_reference/resources/DiagnosticOrder/do-300-update.xml +0 -91
- data/lib/tests/testscripts/xml/Connectathon11/Track7-LabOrderLabReport/_reference/resources/DiagnosticOrder/do-300.xml +0 -91
- data/lib/tests/testscripts/xml/Connectathon11/Track7-LabOrderLabReport/_reference/resources/DiagnosticOrder/do-400-update.xml +0 -88
- data/lib/tests/testscripts/xml/Connectathon11/Track7-LabOrderLabReport/_reference/resources/DiagnosticReport/dr-100.xml +0 -96
- data/lib/tests/testscripts/xml/Connectathon11/Track7-LabOrderLabReport/_reference/resources/DiagnosticReport/dr-200.xml +0 -125
- data/lib/tests/testscripts/xml/Connectathon11/Track7-LabOrderLabReport/_reference/resources/DiagnosticReport/dr-300.xml +0 -132
- data/lib/tests/testscripts/xml/Connectathon11/Track7-LabOrderLabReport/_reference/resources/DiagnosticReport/dr-400.xml +0 -121
- data/lib/tests/testscripts/xml/Connectathon11/Track7-LabOrderLabReport/_reference/resources/Observation/obs-100.xml +0 -58
- data/lib/tests/testscripts/xml/Connectathon11/Track7-LabOrderLabReport/_reference/resources/Observation/obs-101.xml +0 -58
- data/lib/tests/testscripts/xml/Connectathon11/Track7-LabOrderLabReport/_reference/resources/Observation/obs-200.xml +0 -125
- data/lib/tests/testscripts/xml/Connectathon11/Track7-LabOrderLabReport/_reference/resources/Observation/obs-300.xml +0 -106
- data/lib/tests/testscripts/xml/Connectathon11/Track7-LabOrderLabReport/_reference/resources/Observation/obs-301.xml +0 -106
- data/lib/tests/testscripts/xml/Connectathon11/Track7-LabOrderLabReport/_reference/resources/Observation/obs-302.xml +0 -106
- data/lib/tests/testscripts/xml/Connectathon11/Track7-LabOrderLabReport/_reference/resources/Observation/obs-303.xml +0 -106
- data/lib/tests/testscripts/xml/Connectathon11/Track7-LabOrderLabReport/_reference/resources/Observation/obs-304.xml +0 -106
- data/lib/tests/testscripts/xml/Connectathon11/Track7-LabOrderLabReport/_reference/resources/Observation/obs-400.xml +0 -87
- data/lib/tests/testscripts/xml/Connectathon11/Track7-LabOrderLabReport/_reference/resources/Observation/obs-401.xml +0 -95
- data/lib/tests/testscripts/xml/Connectathon11/Track7-LabOrderLabReport/_reference/resources/Observation/obs-402.xml +0 -95
- data/lib/tests/testscripts/xml/Connectathon11/Track7-LabOrderLabReport/_reference/resources/Observation/obs-403.xml +0 -84
- data/lib/tests/testscripts/xml/Connectathon11/Track7-LabOrderLabReport/_reference/resources/Observation/obs-404.xml +0 -84
- data/lib/tests/testscripts/xml/Connectathon11/Track7-LabOrderLabReport/_reference/resources/Observation/obs-405.xml +0 -83
- data/lib/tests/testscripts/xml/Connectathon11/Track7-LabOrderLabReport/_reference/resources/Observation/obs-406.xml +0 -83
- data/lib/tests/testscripts/xml/Connectathon11/Track7-LabOrderLabReport/_reference/resources/Observation/obs-407.xml +0 -70
- data/lib/tests/testscripts/xml/Connectathon11/Track7-LabOrderLabReport/_reference/resources/Observation/obs-408.xml +0 -84
- data/lib/tests/testscripts/xml/Connectathon11/Track7-LabOrderLabReport/_reference/resources/Observation/obs-uslab-example5.xml +0 -102
- data/lib/tests/testscripts/xml/Connectathon11/Track7-LabOrderLabReport/_reference/resources/Order/order-100.xml +0 -61
- data/lib/tests/testscripts/xml/Connectathon11/Track7-LabOrderLabReport/_reference/resources/Order/order-200.xml +0 -61
- data/lib/tests/testscripts/xml/Connectathon11/Track7-LabOrderLabReport/_reference/resources/Order/order-300.xml +0 -61
- data/lib/tests/testscripts/xml/Connectathon11/Track7-LabOrderLabReport/_reference/resources/Order/order-400.xml +0 -61
- data/lib/tests/testscripts/xml/Connectathon11/Track7-LabOrderLabReport/_reference/resources/OrderResponse/ordresp-100.xml +0 -79
- data/lib/tests/testscripts/xml/Connectathon11/Track7-LabOrderLabReport/_reference/resources/OrderResponse/ordresp-110.xml +0 -79
- data/lib/tests/testscripts/xml/Connectathon11/Track7-LabOrderLabReport/_reference/resources/OrderResponse/ordresp-200.xml +0 -79
- data/lib/tests/testscripts/xml/Connectathon11/Track7-LabOrderLabReport/_reference/resources/OrderResponse/ordresp-210.xml +0 -79
- data/lib/tests/testscripts/xml/Connectathon11/Track7-LabOrderLabReport/_reference/resources/OrderResponse/ordresp-300.xml +0 -79
- data/lib/tests/testscripts/xml/Connectathon11/Track7-LabOrderLabReport/_reference/resources/OrderResponse/ordresp-310.xml +0 -79
- data/lib/tests/testscripts/xml/Connectathon11/Track7-LabOrderLabReport/_reference/resources/OrderResponse/ordresp-400.xml +0 -79
- data/lib/tests/testscripts/xml/Connectathon11/Track7-LabOrderLabReport/_reference/resources/OrderResponse/ordresp-410.xml +0 -79
- data/lib/tests/testscripts/xml/Connectathon11/Track7-LabOrderLabReport/_reference/resources/Organization/org-uslab-example3.xml +0 -49
- data/lib/tests/testscripts/xml/Connectathon11/Track7-LabOrderLabReport/_reference/resources/Patient/patient-uslab-example1.xml +0 -44
- data/lib/tests/testscripts/xml/Connectathon11/Track7-LabOrderLabReport/_reference/resources/Practitioner/pract-uslab-example1.xml +0 -18
- data/lib/tests/testscripts/xml/Connectathon11/Track7-LabOrderLabReport/_reference/resources/Practitioner/pract-uslab-example3.xml +0 -36
- data/lib/tests/testscripts/xml/Connectathon11/Track7-LabOrderLabReport/_reference/resources/Specimen/Thumbs.db +0 -0
- data/lib/tests/testscripts/xml/Connectathon11/Track7-LabOrderLabReport/_reference/resources/Specimen/spec-100.xml +0 -65
- data/lib/tests/testscripts/xml/Connectathon11/Track7-LabOrderLabReport/_reference/resources/Specimen/spec-400.xml +0 -70
- data/lib/tests/testscripts/xml/Connectathon11/Track7-LabOrderLabReport/_reference/resources/Specimen/spec-uslab-example1.xml +0 -82
- data/lib/tests/testscripts/xml/Connectathon11/Track7-LabOrderLabReport/_reference/resources/Testscript 1 Document.txt +0 -122
- data/lib/tests/testscripts/xml/Connectathon11/Track7-LabOrderLabReport/_reference/resources/Testscript 2 Document.txt +0 -103
- data/lib/tests/testscripts/xml/Connectathon11/Track7-LabOrderLabReport/_reference/resources/Testscript 3 Document.txt +0 -201
- data/lib/tests/testscripts/xml/Connectathon11/Track7-LabOrderLabReport/_reference/resources/Testscript 4 Document.txt +0 -310
- data/lib/tests/testscripts/xml/Connectathon11/Track9-Patch/_reference/conformance/MedicationStatementCreate.xml +0 -11
- data/lib/tests/testscripts/xml/Connectathon11/Track9-Patch/_reference/conformance/PatientSearchType.xml +0 -15
- data/lib/tests/testscripts/xml/Connectathon11/Track9-Patch/_reference/resources/medicationstatement-create.json +0 -39
- data/lib/tests/testscripts/xml/Connectathon11/Track9-Patch/_reference/resources/medicationstatement-patch.json +0 -3
- data/lib/tests/testscripts/xml/Connectathon11/Track9-Patch/track9-patch-medicationstatement-json-if-match.xml +0 -321
- data/lib/tests/testscripts/xml/Connectathon11/Track9-Patch/track9-patch-medicationstatement-json.xml +0 -303
- data/lib/tests/testscripts/xml/Connectathon11/Track9-Patch/track9-patch-peer2peer-patient-json.xml +0 -235
- data/test/fixtures/testscript-example.xml +0 -202
- data/test/fixtures/testscript-history.xml +0 -143
- data/test/fixtures/testscript-readtest.xml +0 -272
- data/test/fixtures/testscript-search.xml +0 -282
- data/test/fixtures/testscript-update.xml +0 -147
- data/test/unit/argonaut_sprint6_test.rb +0 -31
- data/test/unit/argonaut_sprint7_test.rb +0 -21
- data/test/unit/basic_test.rb +0 -27
- data/test/unit/fetch_patient_record_test.rb +0 -357
- data/test/unit/financial_test.rb +0 -41
@@ -1,115 +0,0 @@
|
|
1
|
-
module Crucible
|
2
|
-
module Tests
|
3
|
-
class ArgonautSprint2Test < BaseSuite
|
4
|
-
attr_accessor :rc
|
5
|
-
attr_accessor :conformance
|
6
|
-
attr_accessor :searchParams
|
7
|
-
attr_reader :canSearchById
|
8
|
-
|
9
|
-
def id
|
10
|
-
'ArgonautSprint2Test'
|
11
|
-
end
|
12
|
-
|
13
|
-
def description
|
14
|
-
'Argonaut Sprint 2 tests for testing Argonauts Sprint 2 goals: builds on sprint 1 and provides authorization.'
|
15
|
-
end
|
16
|
-
|
17
|
-
def details
|
18
|
-
{
|
19
|
-
'Overview' => 'Argonaut Implementation Sprint 2 focuses on a scenario where an end-user launches an app from outside of the EHR, and the app gets access to search demographics for a population of patients. That is, the app obtains "user-level" authorization to search whatever patients the end-user is allowed to see.',
|
20
|
-
'Instructions' => 'This sprint builds directly on Sprint 1, adding a FHIR conformance statement and a basic OAuth 2 implementation for authorization.',
|
21
|
-
'FHIR API Calls' => 'Sprint 2 builds on the demographics call from Sprint 1: GET /Patient?[parameters] See Sprint 1 for details. We also add support for a server-specific FHIR Conformance statement, which is a necessary component for endpoint discovery in the authorization protocol. The API call looks like: GET /metadata or (equivalently) OPTIONS / Obtain the FHIR conformance statement for this RESTful server. Each server\'s metadata must include SMART\'s endpoint discovery extensions to enable the OAuth 2.0 process described below.',
|
22
|
-
'Authorization' => 'This sprint introduces the SMART on FHIR OAuth 2.0 authorization process. SMART\'s authorization specs define a number of advanced features, including the ability to pass context from the EHR to a contained app, and to authorize access to a single patient record at a time — but for this sprint, we support only the most basic functionality: delegating a user\'s rights to an app.',
|
23
|
-
}
|
24
|
-
end
|
25
|
-
|
26
|
-
def requires_authorization
|
27
|
-
false
|
28
|
-
end
|
29
|
-
|
30
|
-
def initialize(client1, client2=nil)
|
31
|
-
super(client1, client2)
|
32
|
-
@tags.append('argonaut')
|
33
|
-
@category = {id: 'argonaut', title: 'Argonaut'}
|
34
|
-
end
|
35
|
-
|
36
|
-
def setup
|
37
|
-
end
|
38
|
-
|
39
|
-
test 'AS2001', 'Test conformance statement contains an authorize url' do
|
40
|
-
metadata {
|
41
|
-
links "#{BASE_SPEC_LINK}/resource.html#metadata"
|
42
|
-
requires resource: "Conformance", methods: ["read"]
|
43
|
-
validates resource: "Conformance", methods: ["read"]
|
44
|
-
validates resource: nil, methods: ['OAuth2', 'Authorization/Access Control']
|
45
|
-
requires resource: nil, methods: ['OAuth2', 'Authorization/Access Control']
|
46
|
-
}
|
47
|
-
|
48
|
-
conformance = @client.conformanceStatement
|
49
|
-
options = get_security_options(conformance)
|
50
|
-
|
51
|
-
assert options[:authorize_url], "Authorize Url was not found in the conformance"
|
52
|
-
|
53
|
-
end
|
54
|
-
|
55
|
-
|
56
|
-
test 'AS2002', 'Test conformance statement contains a token url' do
|
57
|
-
metadata {
|
58
|
-
links "#{BASE_SPEC_LINK}/resource.html#metadata"
|
59
|
-
requires resource: "Conformance", methods: ["read"]
|
60
|
-
validates resource: "Conformance", methods: ["read"]
|
61
|
-
validates resource: nil, methods: ['OAuth2', 'Authorization/Access Control']
|
62
|
-
requires resource: nil, methods: ['OAuth2', 'Authorization/Access Control']
|
63
|
-
}
|
64
|
-
|
65
|
-
conformance = @client.conformanceStatement
|
66
|
-
options = get_security_options(conformance)
|
67
|
-
|
68
|
-
assert options[:token_url], "Token Url was not found in the conformance"
|
69
|
-
|
70
|
-
end
|
71
|
-
|
72
|
-
def get_security_options(conformance)
|
73
|
-
oauth_extension = 'http://fhir-registry.smarthealthit.org/StructureDefinition/oauth-uris'
|
74
|
-
authorize_extension = 'authorize'
|
75
|
-
token_extension = 'token'
|
76
|
-
|
77
|
-
options = nil
|
78
|
-
conformance.rest.each do |rest|
|
79
|
-
assert !rest.security.nil?, "could not get authorization extensions, no security section"
|
80
|
-
assert !rest.security.service.nil?, "could not get authorization extensions, no security/service section"
|
81
|
-
rest.security.service.each do |service|
|
82
|
-
assert !service.coding.nil?, "could not get authorization extensions, no codings on sercurity/service"
|
83
|
-
found_oauth2_code = false
|
84
|
-
service.coding.each do |coding|
|
85
|
-
if coding.code == 'SMART-on-FHIR'
|
86
|
-
found_oauth2_code = true
|
87
|
-
assert !rest.security.extension.nil?, "could not get authorization extensions, no security extensions"
|
88
|
-
found_oauth_extension = false
|
89
|
-
options = {}
|
90
|
-
rest.security.extension.where({url: oauth_extension}).first.extension.each do |ext|
|
91
|
-
found_oauth_extension = true
|
92
|
-
case ext.url
|
93
|
-
when authorize_extension
|
94
|
-
options[:authorize_url] = ext.value.value
|
95
|
-
when "#{oauth_extension}\##{authorize_extension}"
|
96
|
-
options[:authorize_url] = ext.value.value
|
97
|
-
when token_extension
|
98
|
-
options[:token_url] = ext.value.value
|
99
|
-
when "#{oauth_extension}\##{token_extension}"
|
100
|
-
options[:token_url] = ext.value.value
|
101
|
-
end
|
102
|
-
end
|
103
|
-
assert found_oauth_extension, "an OAuth extension could not be found"
|
104
|
-
end
|
105
|
-
assert found_oauth2_code, "a security coding set to SMART-on-FHIR could not be found"
|
106
|
-
end
|
107
|
-
end
|
108
|
-
end
|
109
|
-
assert !options.nil?, "could not get authorization extensions"
|
110
|
-
options
|
111
|
-
end
|
112
|
-
|
113
|
-
end
|
114
|
-
end
|
115
|
-
end
|
@@ -1,208 +0,0 @@
|
|
1
|
-
module Crucible
|
2
|
-
module Tests
|
3
|
-
class ArgonautSprint3Test < BaseSuite
|
4
|
-
def id
|
5
|
-
'ArgonautSprint3Test'
|
6
|
-
end
|
7
|
-
|
8
|
-
def description
|
9
|
-
'Argonaut Project Sprint 3 Test, to test success of servers at implementing goals of Argonaut Sprint 3'
|
10
|
-
end
|
11
|
-
|
12
|
-
def details
|
13
|
-
{
|
14
|
-
'Overview' => 'Argonaut Implementation Sprint 3 focuses on the scenario where a user approves an app with limited permissions, scoped down to a a single patient record. The app will have access to patient demographics and any "documents" available about that patient.',
|
15
|
-
'Instructions' => 'Please sign up! If you\'re working on a server, please complete the "servers" tab of the Sprint 3 Spreadsheet. This time around you\'ll need to update the status flag to indicate whether you\'ve begun work (or completed work), so clients will know when to start testing. You\'ll also share details about how a developer can obtain OAuth client credentials (client_id for public apps, or a client_id and client_secret for confidential apps) as well as user login credentials. You might consider simply sharing a set of fixed credentials in this spreadsheet, or else directing users to a web page where they can complete self-service registration. If absolutely necessary, you can ask developers to e-mail you directly. If you\'re working on a client, please complete the "clients" tab of the Sprint 3 Spreadsheet. You\'ll also need to update the status flag to indicate whether you\'ve begun work (or completed work).',
|
16
|
-
'FHIR API Calls' => 'GET /Patient/{id} Retrieve a patient\'s basic demographics and identifiers, given a unique patient id. GET /Patient/{id}/DocumentReference?type={}&created={} Search for available documents about a patient, given a unique patient id. Optional search parameters can filter results on: - type a code describing this document (see below for details) - created creation date - Notes Argonaut Document Access provides background on how the DocumentReference endpoint works — but note this guide is a work in progress, and our first sprint starts with just a subset of functionality. The Argonaut Implementation Program now uses FHIR DSTU2.',
|
17
|
-
'Authorization' => 'This sprint builds on our introduction to the SMART on FHIR OAuth 2.0 authorization process. Recall that in Sprint 2, we authorized access at a very coarse level, delegating all of a user\'s read privileges to an app. This time, we add support for apps that don\'t need access to an entire population of patient records, but instead require just one record. We accomplish this through a set of "launch scopes". In terms of SMART\'s authorization guide, we\'ll make the following assumptions: Standalone launch sequence only Public clients and confidential clients are both supported Access scopes include: launch/patient (indicates to the EHR that a single patient must be selected to complete the launch process) patient/*.read (to ensure a patient-specific access token) Onecontext parameter is returned to the app upon successful authorization: - patient (indicates the patient currently open in the EHR) - No single-sign-on (OpenID Connect) is required'
|
18
|
-
}
|
19
|
-
end
|
20
|
-
|
21
|
-
def initialize(client1, client2 = nil)
|
22
|
-
super
|
23
|
-
@tags.append('argonaut')
|
24
|
-
@category = {id: 'argonaut', title: 'Argonaut'}
|
25
|
-
end
|
26
|
-
|
27
|
-
# [SprinklerTest("AS3001", "GET patient by ID")]
|
28
|
-
test 'AS3001', 'GET patient by ID' do
|
29
|
-
metadata {
|
30
|
-
links "#{REST_SPEC_LINK}#read"
|
31
|
-
requires resource: "Patient", methods: ["read"]
|
32
|
-
validates resource: "Patient", methods: ["read"]
|
33
|
-
}
|
34
|
-
|
35
|
-
assert !@client.client.try(:params).nil?, "The client was not authorized for the test"
|
36
|
-
assert @client.client.params["patient"], "No patient parameter was passed to the client"
|
37
|
-
|
38
|
-
patient_id = @client.client.params["patient"]
|
39
|
-
|
40
|
-
reply = @client.read(FHIR::Patient, patient_id, FHIR::Formats::ResourceFormat::RESOURCE_JSON)
|
41
|
-
|
42
|
-
assert_response_ok(reply)
|
43
|
-
assert_equal patient_id.to_s, reply.id.to_s, 'Server returned wrong patient.'
|
44
|
-
warning { assert_valid_resource_content_type_present(reply) }
|
45
|
-
warning { assert_etag_present(reply) }
|
46
|
-
warning { assert_last_modified_present(reply) }
|
47
|
-
end
|
48
|
-
|
49
|
-
test 'AS3002', 'GET DocumentReference Patient Compartment for a specific patient' do
|
50
|
-
metadata {
|
51
|
-
links "#{REST_SPEC_LINK}#search"
|
52
|
-
requires resource: "Patient", methods: ['read', "search"]
|
53
|
-
validates resource: "Patient", methods: ['read', "search"]
|
54
|
-
requires resource: 'DocumentReference', methods: ['read']
|
55
|
-
validates resource: 'DocumentReference', methods: ['read']
|
56
|
-
requires resource: nil, methods: ['DOCUMENTS']
|
57
|
-
validates resource: nil, methods: ['DOCUMENTS']
|
58
|
-
}
|
59
|
-
|
60
|
-
assert !@client.client.try(:params).nil?, "The client was not authorized for the test"
|
61
|
-
assert @client.client.params["patient"], "No patient parameter was passed to the client"
|
62
|
-
|
63
|
-
patient_id = @client.client.params["patient"]
|
64
|
-
|
65
|
-
options = {
|
66
|
-
:id => patient_id,
|
67
|
-
:search => {
|
68
|
-
:flag => false,
|
69
|
-
:compartment => "DocumentReference",
|
70
|
-
:parameters => nil
|
71
|
-
}
|
72
|
-
}
|
73
|
-
|
74
|
-
reply = @client.search(FHIR::Patient, options)
|
75
|
-
|
76
|
-
assert_response_ok(reply)
|
77
|
-
|
78
|
-
reply.resource.entry.each do |entry|
|
79
|
-
assert !entry.resource.content.empty?, "DocumentReference must have at least one 'content' BackboneElement"
|
80
|
-
entry.resource.content.each do |content|
|
81
|
-
attachment = @client.get(URI::encode(@client.strip_base(content.attachment.url)), @client.fhir_headers())
|
82
|
-
assert_response_ok(attachment)
|
83
|
-
end
|
84
|
-
end
|
85
|
-
end
|
86
|
-
|
87
|
-
test 'AS3003', 'GET DocumentReferences with Patient IDs' do
|
88
|
-
metadata {
|
89
|
-
links "#{REST_SPEC_LINK}#search"
|
90
|
-
requires resource: "Patient", methods: ["read", "search"]
|
91
|
-
validates resource: "Patient", methods: ["read", "search"]
|
92
|
-
requires resource: 'DocumentReference', methods: ['read']
|
93
|
-
validates resource: 'DocumentReference', methods: ['read']
|
94
|
-
requires resource: nil, methods: ['DOCUMENTS']
|
95
|
-
validates resource: nil, methods: ['DOCUMENTS']
|
96
|
-
}
|
97
|
-
|
98
|
-
assert !@client.client.try(:params).nil?, "The client was not authorized for the test"
|
99
|
-
assert @client.client.params["patient"], "No patient parameter was passed to the client"
|
100
|
-
|
101
|
-
patient_id = @client.client.params["patient"]
|
102
|
-
|
103
|
-
options = {
|
104
|
-
search: {
|
105
|
-
flag: false,
|
106
|
-
compartment: nil,
|
107
|
-
parameters: {
|
108
|
-
patient: patient_id
|
109
|
-
}
|
110
|
-
}
|
111
|
-
}
|
112
|
-
|
113
|
-
reply = @client.search(FHIR::DocumentReference, options)
|
114
|
-
|
115
|
-
assert_response_ok(reply)
|
116
|
-
|
117
|
-
reply.resource.entry.each do |entry|
|
118
|
-
assert !entry.resource.content.empty?, "DocumentReference must have at least one 'content' BackboneElement"
|
119
|
-
entry.resource.content.each do |content|
|
120
|
-
attachment = @client.get(URI::encode(@client.strip_base(content.attachment.url)), @client.fhir_headers())
|
121
|
-
assert_response_ok(attachment)
|
122
|
-
end
|
123
|
-
end
|
124
|
-
end
|
125
|
-
|
126
|
-
test 'AS3004', 'GET DocumentReference by Created Date' do
|
127
|
-
metadata {
|
128
|
-
links "#{REST_SPEC_LINK}#search"
|
129
|
-
requires resource: "Patient", methods: ["read"]
|
130
|
-
validates resource: "Patient", methods: ["read"]
|
131
|
-
requires resource: 'DocumentReference', methods: ['read', 'search']
|
132
|
-
validates resource: 'DocumentReference', methods: ['read', 'search']
|
133
|
-
requires resource: nil, methods: ['DOCUMENTS']
|
134
|
-
validates resource: nil, methods: ['DOCUMENTS']
|
135
|
-
}
|
136
|
-
|
137
|
-
assert !@client.client.try(:params).nil?, "The client was not authorized for the test"
|
138
|
-
assert @client.client.params["patient"], "No patient parameter was passed to the client"
|
139
|
-
|
140
|
-
patient_id = @client.client.params["patient"]
|
141
|
-
|
142
|
-
options = {
|
143
|
-
search: {
|
144
|
-
flag: false,
|
145
|
-
compartment: nil,
|
146
|
-
parameters: {
|
147
|
-
patient: patient_id,
|
148
|
-
created: '2015'
|
149
|
-
}
|
150
|
-
}
|
151
|
-
}
|
152
|
-
|
153
|
-
reply = @client.search(FHIR::DocumentReference, options)
|
154
|
-
|
155
|
-
assert_response_ok(reply)
|
156
|
-
|
157
|
-
reply.resource.entry.each do |entry|
|
158
|
-
assert !entry.resource.content.empty?, "DocumentReference must have at least one 'content' BackboneElement"
|
159
|
-
entry.resource.content.each do |content|
|
160
|
-
attachment = @client.get(URI::encode(@client.strip_base(content.attachment.url)), @client.fhir_headers())
|
161
|
-
assert_response_ok(attachment)
|
162
|
-
end
|
163
|
-
end
|
164
|
-
end
|
165
|
-
|
166
|
-
test 'AS3005', 'GET DocumentReference by Type' do
|
167
|
-
metadata {
|
168
|
-
links "#{REST_SPEC_LINK}#search"
|
169
|
-
requires resource: "Patient", methods: ["read", "search"]
|
170
|
-
validates resource: "Patient", methods: ["read", "search"]
|
171
|
-
requires resource: 'DocumentReference', methods: ['read', 'search']
|
172
|
-
validates resource: 'DocumentReference', methods: ['read', 'search']
|
173
|
-
requires resource: nil, methods: ['DOCUMENTS']
|
174
|
-
validates resource: nil, methods: ['DOCUMENTS']
|
175
|
-
}
|
176
|
-
|
177
|
-
assert !@client.client.try(:params).nil?, "The client was not authorized for the test"
|
178
|
-
assert @client.client.params["patient"], "No patient parameter was passed to the client"
|
179
|
-
|
180
|
-
patient_id = @client.client.params["patient"]
|
181
|
-
|
182
|
-
options = {
|
183
|
-
search: {
|
184
|
-
flag: false,
|
185
|
-
compartment: nil,
|
186
|
-
parameters: {
|
187
|
-
patient: patient_id,
|
188
|
-
type: 'http://loinc.org|34133-9'
|
189
|
-
}
|
190
|
-
}
|
191
|
-
}
|
192
|
-
|
193
|
-
reply = @client.search(FHIR::DocumentReference, options)
|
194
|
-
|
195
|
-
assert_response_ok(reply)
|
196
|
-
|
197
|
-
reply.resource.entry.each do |entry|
|
198
|
-
assert !entry.resource.content.empty?, "DocumentReference must have at least one 'content' BackboneElement"
|
199
|
-
entry.resource.content.each do |content|
|
200
|
-
attachment = @client.get(URI::encode(@client.strip_base(content.attachment.url)), @client.fhir_headers())
|
201
|
-
assert_response_ok(attachment)
|
202
|
-
end
|
203
|
-
end
|
204
|
-
end
|
205
|
-
|
206
|
-
end
|
207
|
-
end
|
208
|
-
end
|
@@ -1,335 +0,0 @@
|
|
1
|
-
module Crucible
|
2
|
-
module Tests
|
3
|
-
class ArgonautSprint4Test < BaseSuite
|
4
|
-
def id
|
5
|
-
'ArgonautSprint4Test'
|
6
|
-
end
|
7
|
-
|
8
|
-
def description
|
9
|
-
'Argonaut Project Sprint 4 Test, to test success of servers at implementing goals of Argonaut Sprint 4'
|
10
|
-
end
|
11
|
-
|
12
|
-
def details
|
13
|
-
{
|
14
|
-
'Overview' => 'Argonaut Implementation Sprint 4 focuses on the scenario where a clinician launches a medication list app from within the EHR. The app is given EHR context using SMART\'s "EHR Launch Flow", meaning that it knows the currently-open patient record (as well as the current user -- but we\'ll tackle that in Sprint 5). On successful launch, the app is authorized to view a set of patient-specific medication-related data.',
|
15
|
-
'Instructions' => 'If you\'re working on a server, please complete the "servers" tab of the Sprint 4 Spreadsheet. This time around you\'ll need to update the status flag to indicate whether you\'ve begun work (or completed work), so clients will know when to start testing. You\'ll also share details about how a developer can obtain OAuth client credentials (client_id for public apps, or a client_id and client_secret for confidential apps) as well as user login credentials. You might consider simply sharing a set of fixed credentials in this spreadsheet, or else directing users to a web page where they can complete self-service registration. If absolutely necessary, you can ask developers to e-mail you directly.',
|
16
|
-
'FHIR API Calls' => 'FHIR provides a rich set of resource definitions for medication data. These include MedicationStatement, which expresses a high-level claim that a patient is (or is not) taking a specific drug, without further details about who prescribed it or how it was dispensed. MedicationOrder, MedicationDispense, MedicationAdministration, which are more detailed, workflow-oriented resources describing exactly what was prescribed, how it was dispensed, and how it was administered to the patient. The following search parameters must be supported at a minimum (code, identifier, medication, patient, status, effectivedate (for for MedicationStatement), datewritten (for MedicationOrder), prescriber (for MedicationOrder)). For this sprint, we ask EHRs to focus on two resources: GET /Patient/{id}/MedicationOrder or GET /MedicationOrder?patient={id} Retrieve any medications where the EHR directly manages a prescription. GET /Patient/{id}/MedicationStatement or GET /MedicationStatement?patient={id} Retrieve any other medications, including patient-reported over-the-counter drugs, or drugs manage by an outside provider or system.',
|
17
|
-
'Authorization' => 'This sprint builds on our introduction to the SMART on FHIR OAuth 2.0 authorization process. Recall that in Sprint 2, we authorized access at a very coarse level, delegating all of a user\'s read privileges to an app. This time, we add support for apps that don\'t need access to an entire population of patient records, but instead require just one record. We accomplish this through a set of "launch scopes". In terms of SMART\'s authorization guide, we\'ll make the following assumptions: Standalone launch sequence only Public clients and confidential clients are both supported Access scopes include: launch/patient (indicates to the EHR that a single patient must be selected to complete the launch process) patient/*.read (to ensure a patient-specific access token) Onecontext parameter is returned to the app upon successful authorization: - patient (indicates the patient currently open in the EHR) - No single-sign-on (OpenID Connect) is required'
|
18
|
-
}
|
19
|
-
end
|
20
|
-
|
21
|
-
def initialize(client1, client2 = nil)
|
22
|
-
super
|
23
|
-
@tags.append('argonautp1')
|
24
|
-
@category = {id: 'argonautp1', title: 'Argonaut Phase 1'}
|
25
|
-
end
|
26
|
-
|
27
|
-
# [SprinklerTest("AS3001", "GET patient by ID")]
|
28
|
-
test 'AS4001', 'GET patient by ID' do
|
29
|
-
metadata {
|
30
|
-
links "#{REST_SPEC_LINK}#read"
|
31
|
-
requires resource: "Patient", methods: ["read"]
|
32
|
-
validates resource: "Patient", methods: ["read"]
|
33
|
-
}
|
34
|
-
|
35
|
-
assert !@client.client.try(:params).nil?, "The client was not authorized for the test"
|
36
|
-
assert @client.client.params["patient"], "No patient parameter was passed to the client"
|
37
|
-
|
38
|
-
patient_id = @client.client.params["patient"]
|
39
|
-
|
40
|
-
reply = @client.read(FHIR::Patient, patient_id, FHIR::Formats::ResourceFormat::RESOURCE_JSON)
|
41
|
-
|
42
|
-
assert_response_ok(reply)
|
43
|
-
assert_equal patient_id, reply.id, 'Server returned wrong patient.'
|
44
|
-
warning { assert_valid_resource_content_type_present(reply) }
|
45
|
-
warning { assert_etag_present(reply) }
|
46
|
-
warning { assert_last_modified_present(reply) }
|
47
|
-
end
|
48
|
-
|
49
|
-
test 'AS4002', 'GET MedicationOrder Patient Compartment for a specific patient' do
|
50
|
-
metadata {
|
51
|
-
links "#{REST_SPEC_LINK}#search"
|
52
|
-
requires resource: "Patient", methods: ["search"]
|
53
|
-
validates resource: "Patient", methods: ["search"]
|
54
|
-
requires resource: 'MedicationOrder', methods: ['read']
|
55
|
-
validates resource: 'MedicationOrder', methods: ['read']
|
56
|
-
}
|
57
|
-
|
58
|
-
assert !@client.client.try(:params).nil?, "The client was not authorized for the test"
|
59
|
-
assert @client.client.params["patient"], "No patient parameter was passed to the client"
|
60
|
-
|
61
|
-
patient_id = @client.client.params["patient"]
|
62
|
-
|
63
|
-
options = {
|
64
|
-
:id => patient_id,
|
65
|
-
:search => {
|
66
|
-
:flag => false,
|
67
|
-
:compartment => "MedicationOrder",
|
68
|
-
:parameters => nil
|
69
|
-
}
|
70
|
-
}
|
71
|
-
|
72
|
-
reply = @client.search(FHIR::Patient, options)
|
73
|
-
|
74
|
-
assert_response_ok(reply)
|
75
|
-
|
76
|
-
reply.resource.entry.each do |entry|
|
77
|
-
assert (!entry.resource.medicationReference.nil? || !entry.resource.medicationCodeableConcept.nil?), "MedicationOrder was missing a medication reference or codeable concept"
|
78
|
-
end
|
79
|
-
end
|
80
|
-
|
81
|
-
test 'AS4003', 'GET MedicationOrder with Patient IDs' do
|
82
|
-
metadata {
|
83
|
-
links "#{REST_SPEC_LINK}#search"
|
84
|
-
requires resource: "Patient", methods: ["read", "search"]
|
85
|
-
validates resource: "Patient", methods: ["read", "search"]
|
86
|
-
requires resource: 'MedicationOrder', methods: ['read', 'search']
|
87
|
-
validates resource: 'MedicationOrder', methods: ['read', 'search']
|
88
|
-
}
|
89
|
-
|
90
|
-
assert !@client.client.try(:params).nil?, "The client was not authorized for the test"
|
91
|
-
assert @client.client.params["patient"], "No patient parameter was passed to the client"
|
92
|
-
|
93
|
-
patient_id = @client.client.params["patient"]
|
94
|
-
|
95
|
-
options = {
|
96
|
-
search: {
|
97
|
-
flag: false,
|
98
|
-
compartment: nil,
|
99
|
-
parameters: {
|
100
|
-
patient: patient_id
|
101
|
-
}
|
102
|
-
}
|
103
|
-
}
|
104
|
-
|
105
|
-
reply = @client.search(FHIR::MedicationOrder, options)
|
106
|
-
|
107
|
-
assert_response_ok(reply)
|
108
|
-
|
109
|
-
reply.resource.entry.each do |entry|
|
110
|
-
assert (!entry.resource.medicationReference.nil? || !entry.resource.medicationCodeableConcept.nil?), "MedicationOrder was missing a medication reference or codeable concept"
|
111
|
-
end
|
112
|
-
end
|
113
|
-
|
114
|
-
test 'AS4004', 'GET MedicationStatement Patient Compartment for a specific patient' do
|
115
|
-
metadata {
|
116
|
-
links "#{REST_SPEC_LINK}#search"
|
117
|
-
requires resource: "Patient", methods: ["search"]
|
118
|
-
validates resource: "Patient", methods: ["search"]
|
119
|
-
requires resource: 'MedicationOrder', methods: ['read']
|
120
|
-
validates resource: 'MedicationOrder', methods: ['read']
|
121
|
-
}
|
122
|
-
|
123
|
-
assert !@client.client.try(:params).nil?, "The client was not authorized for the test"
|
124
|
-
assert @client.client.params["patient"], "No patient parameter was passed to the client"
|
125
|
-
|
126
|
-
patient_id = @client.client.params["patient"]
|
127
|
-
|
128
|
-
options = {
|
129
|
-
:id => patient_id,
|
130
|
-
:search => {
|
131
|
-
:flag => false,
|
132
|
-
:compartment => "MedicationStatement",
|
133
|
-
:parameters => nil
|
134
|
-
}
|
135
|
-
}
|
136
|
-
|
137
|
-
reply = @client.search(FHIR::Patient, options)
|
138
|
-
|
139
|
-
assert_response_ok(reply)
|
140
|
-
|
141
|
-
reply.resource.entry.each do |entry|
|
142
|
-
assert (!entry.resource.medicationReference.nil? || !entry.resource.medicationCodeableConcept.nil?), "MedicationStatement was missing a medication reference or codeable concept"
|
143
|
-
end
|
144
|
-
end
|
145
|
-
|
146
|
-
test 'AS4005', 'GET MedicationStatement with Patient IDs' do
|
147
|
-
metadata {
|
148
|
-
links "#{REST_SPEC_LINK}#search"
|
149
|
-
requires resource: "Patient", methods: ["read", "search"]
|
150
|
-
validates resource: "Patient", methods: ["read", "search"]
|
151
|
-
requires resource: 'MedicationOrder', methods: ['read', 'search']
|
152
|
-
validates resource: 'MedicationOrder', methods: ['read', 'search']
|
153
|
-
}
|
154
|
-
|
155
|
-
assert !@client.client.try(:params).nil?, "The client was not authorized for the test"
|
156
|
-
assert @client.client.params["patient"], "No patient parameter was passed to the client"
|
157
|
-
|
158
|
-
patient_id = @client.client.params["patient"]
|
159
|
-
|
160
|
-
options = {
|
161
|
-
search: {
|
162
|
-
flag: false,
|
163
|
-
compartment: nil,
|
164
|
-
parameters: {
|
165
|
-
patient: patient_id
|
166
|
-
}
|
167
|
-
}
|
168
|
-
}
|
169
|
-
|
170
|
-
reply = @client.search(FHIR::MedicationStatement, options)
|
171
|
-
|
172
|
-
assert_response_ok(reply)
|
173
|
-
|
174
|
-
reply.resource.entry.each do |entry|
|
175
|
-
assert (!entry.resource.medicationReference.nil? || !entry.resource.medicationCodeableConcept.nil?), "MedicationStatement was missing a medication reference or codeable concept"
|
176
|
-
end
|
177
|
-
end
|
178
|
-
|
179
|
-
# TODO: Medication and Prescriber - need to handle references
|
180
|
-
['code', 'identifier', 'status', 'dateWritten'].each do |field|
|
181
|
-
|
182
|
-
test "AS4006_#{field}", "Search for MedicationOrder by #{field}" do
|
183
|
-
metadata {
|
184
|
-
links "#{REST_SPEC_LINK}#search"
|
185
|
-
links "#{BASE_SPEC_LINK}/MedicationOrder.html"
|
186
|
-
requires resource: 'MedicationOrder', methods: ['read', 'search']
|
187
|
-
validates resource: "MedicationOrder", methods: ['read', "search"]
|
188
|
-
}
|
189
|
-
|
190
|
-
resources = getResources(FHIR::MedicationOrder)
|
191
|
-
|
192
|
-
match_target = resources.select {|r| r.resource.respond_to?(field.to_sym) && !r.resource.send(field).nil?}.first
|
193
|
-
search_string = match_target.resource.send(field) unless match_target.nil?
|
194
|
-
case field
|
195
|
-
when 'code'
|
196
|
-
begin
|
197
|
-
match_target = resources.select {|r| !r.resource.medicationCodeableConcept.nil?}.first
|
198
|
-
coding = match_target.resource.medicationCodeableConcept.coding.first
|
199
|
-
search_string = "#{coding.system}|#{coding.code}"
|
200
|
-
rescue
|
201
|
-
assert false, "could not get a code to search on"
|
202
|
-
end
|
203
|
-
when 'identifier'
|
204
|
-
search_string = search_string.first.value unless search_string.blank?
|
205
|
-
end
|
206
|
-
|
207
|
-
warning {assert !search_string.blank? && !match_target.nil?, "could not get a MedicationOrder with a #{field} value to search on"}
|
208
|
-
if search_string.blank? || match_target.nil?
|
209
|
-
skip
|
210
|
-
end
|
211
|
-
|
212
|
-
options = {
|
213
|
-
:search => {
|
214
|
-
:flag => false,
|
215
|
-
:compartment => nil,
|
216
|
-
:parameters => {
|
217
|
-
field.downcase => search_string
|
218
|
-
}
|
219
|
-
}
|
220
|
-
}
|
221
|
-
reply = @client.search(FHIR::MedicationOrder, options)
|
222
|
-
assert_response_ok(reply)
|
223
|
-
assert_bundle_response(reply)
|
224
|
-
assert reply.resource, "Search did not return any MedicationOrders for #{field.downcase} => #{search_string}, should have matched Medication Order id: #{match_target.resource.xmlId}"
|
225
|
-
assert (reply.resource.entry && reply.resource.entry.length > 0), "Search did not return any MedicationOrders for #{field.downcase} => #{search_string}, should have matched Medication Order id: #{match_target.resource.xmlId}"
|
226
|
-
assert getIdList(reply.resource).select {|id| id == match_target.resource.xmlId}.length > 0, "Search did not find the expected MedicationOrder with ID: #{match_target.resource.xmlId}"
|
227
|
-
end
|
228
|
-
|
229
|
-
end
|
230
|
-
|
231
|
-
['code', 'identifier', 'status', 'effectiveDateTime'].each do |field|
|
232
|
-
|
233
|
-
test "AS4007_#{field}", "Search for MedicationStatement by #{field}" do
|
234
|
-
metadata {
|
235
|
-
links "#{REST_SPEC_LINK}#search"
|
236
|
-
links "#{BASE_SPEC_LINK}/MedicationStatement.html"
|
237
|
-
requires resource: 'MedicationStatement', methods: ['read', 'search']
|
238
|
-
validates resource: "MedicationStatement", methods: ['read', "search"]
|
239
|
-
}
|
240
|
-
|
241
|
-
resources = getResources(FHIR::MedicationStatement)
|
242
|
-
|
243
|
-
match_target = resources.select {|r| r.resource.respond_to?(field.to_sym) && !r.resource.send(field).nil?}.first
|
244
|
-
search_string = match_target.resource.send(field) unless match_target.nil?
|
245
|
-
case field
|
246
|
-
when 'code'
|
247
|
-
begin
|
248
|
-
match_target = resources.select {|r| !r.resource.medicationCodeableConcept.nil?}.first
|
249
|
-
coding = match_target.resource.medicationCodeableConcept.coding.first
|
250
|
-
search_string = "#{coding.system}|#{coding.code}"
|
251
|
-
rescue
|
252
|
-
assert false, "could not get a code to search on"
|
253
|
-
end
|
254
|
-
when 'identifier'
|
255
|
-
search_string = search_string.first.value unless search_string.blank?
|
256
|
-
end
|
257
|
-
|
258
|
-
warning {assert !search_string.blank? && !match_target.nil?, "could not get a MedicationStatement with a #{field} value to search on"}
|
259
|
-
if search_string.blank? || match_target.nil?
|
260
|
-
skip
|
261
|
-
end
|
262
|
-
|
263
|
-
options = {
|
264
|
-
:search => {
|
265
|
-
:flag => false,
|
266
|
-
:compartment => nil,
|
267
|
-
:parameters => {
|
268
|
-
field.downcase => search_string
|
269
|
-
}
|
270
|
-
}
|
271
|
-
}
|
272
|
-
reply = @client.search(FHIR::MedicationStatement, options)
|
273
|
-
assert_response_ok(reply)
|
274
|
-
assert_bundle_response(reply)
|
275
|
-
assert reply.resource, "Search did not return any MedicationStatements for #{field.downcase} => #{search_string}, should have matched Medication Order id: #{match_target.resource.xmlId}"
|
276
|
-
assert (reply.resource.entry && reply.resource.entry.length > 0), "Search did not return any MedicationStatements for #{field.downcase} => #{search_string}, should have matched Medication Order id: #{match_target.resource.xmlId}"
|
277
|
-
assert getIdList(reply.resource).select {|id| id == match_target.resource.xmlId}.length > 0, "Search did not find the expected MedicationStatements with ID: #{match_target.resource.xmlId}"
|
278
|
-
end
|
279
|
-
|
280
|
-
end
|
281
|
-
|
282
|
-
|
283
|
-
def getResources(type)
|
284
|
-
|
285
|
-
assert !@client.client.try(:params).nil?, "The client was not authorized for the test"
|
286
|
-
assert @client.client.params["patient"], "No patient parameter was passed to the client"
|
287
|
-
|
288
|
-
patient_id = @client.client.params["patient"]
|
289
|
-
|
290
|
-
options = {
|
291
|
-
search: {
|
292
|
-
flag: false,
|
293
|
-
compartment: nil,
|
294
|
-
parameters: {
|
295
|
-
patient: patient_id
|
296
|
-
}
|
297
|
-
}
|
298
|
-
}
|
299
|
-
|
300
|
-
reply = @client.search(type, options)
|
301
|
-
|
302
|
-
return reply.resource.entry if (reply.resource && reply.resource.entry && reply.resource.entry.length > 0)
|
303
|
-
|
304
|
-
options = {
|
305
|
-
:id => patient_id,
|
306
|
-
:search => {
|
307
|
-
:flag => false,
|
308
|
-
:compartment => type.to_s.demodulize,
|
309
|
-
:parameters => nil
|
310
|
-
}
|
311
|
-
}
|
312
|
-
|
313
|
-
reply = @client.search(FHIR::Patient, options)
|
314
|
-
|
315
|
-
return reply.resource.entry if (reply.resource && reply.resource.entry && reply.resource.entry.length > 0)
|
316
|
-
|
317
|
-
return []
|
318
|
-
|
319
|
-
end
|
320
|
-
|
321
|
-
def getIdList(bundle)
|
322
|
-
return [] unless bundle.entry
|
323
|
-
bundle.entry.map do |entry|
|
324
|
-
if (entry.fullUrl)
|
325
|
-
FHIR::ResourceAddress.pull_out_id(entry.resourceType, entry.fullUrl)
|
326
|
-
elsif entry.resource
|
327
|
-
entry.resource.xmlId
|
328
|
-
else
|
329
|
-
nil
|
330
|
-
end
|
331
|
-
end
|
332
|
-
end
|
333
|
-
end
|
334
|
-
end
|
335
|
-
end
|